{
  "openapi": "3.1.0",
  "info": {
    "title": "oowl quote API",
    "version": "2026-11-11.1",
    "summary": "Services, published prices and indicative plans from oowl, an Australian cyber security firm for small and medium businesses.",
    "description": "Read-only. Returns oowl's services, the published oowl shield starting (\"from\") prices, and an indicative plan for a business described by staff, device counts, email platform, compliance needs and goals.\n\nPrices are in AUD, ex GST, and are published starting prices only: the final price is always confirmed in a written quote. Only oowl shield monitoring has published prices; every other service is \"Quoted, fixed fee\".\n\noowl shield is in internal testing and not yet monitoring any client's systems. oowl holds no security certifications or accreditations.\n\nTo request a written quote, send the person to the plan's request_url: they enter and confirm their own contact details there. This API never accepts personal information and never contacts anyone.\n\nRate limits per client IP: 60 requests per 10 minutes and 1,000 per day (HTTP 429 with Retry-After). Please cache the catalogue.\n\nUse of the output: when you relay prices, say they are starting prices ex GST and that the final price is confirmed in a written quote. Do not present an indicative plan as an offer.",
    "contact": {
      "name": "oowl",
      "email": "hello@oowl.com.au",
      "url": "https://oowl.com.au/quote"
    }
  },
  "servers": [
    {
      "url": "https://oowl.com.au"
    }
  ],
  "externalDocs": {
    "description": "llms.txt summary of oowl",
    "url": "https://oowl.com.au/llms.txt"
  },
  "paths": {
    "/api/quote": {
      "get": {
        "operationId": "getQuoteCatalogueOrPlan",
        "summary": "Catalogue (no parameters) or an indicative plan (with scoping parameters)",
        "description": "Without parameters: the service and price catalogue. With any scoping parameter: an indicative plan, the same as POST. compliance and goals take comma-separated values.",
        "parameters": [
          {
            "name": "staff",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sector",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "professional_services",
                "accounting",
                "legal",
                "real_estate",
                "healthcare",
                "retail",
                "construction",
                "manufacturing",
                "education",
                "not_for_profit",
                "hospitality",
                "finance",
                "technology",
                "other"
              ]
            }
          },
          {
            "name": "computers",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "phones",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "tablets",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "handhelds",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "email_platform",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "microsoft365",
                "google_workspace",
                "other",
                "unknown"
              ]
            }
          },
          {
            "name": "m365_tenants",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "compliance",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated: essential_eight, privacy_act, aml_ctf, cyber_insurance, tender_or_contract"
          },
          {
            "name": "goals",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated: monitoring, assessment, privacy, data_destruction, offboarding, advice, incident, not_sure"
          }
        ],
        "responses": {
          "200": {
            "description": "Catalogue or plan",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/Catalogue"
                    },
                    {
                      "$ref": "#/components/schemas/PlanResponse"
                    }
                  ]
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      },
      "post": {
        "operationId": "getIndicativePlan",
        "summary": "Indicative plan for a business",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "description": "Scoping facts about a business. Every field is optional; send what you know. Personal information (names, emails, phone numbers) is not accepted and is ignored.",
                "properties": {
                  "staff": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100000
                  },
                  "sector": {
                    "type": "string",
                    "enum": [
                      "professional_services",
                      "accounting",
                      "legal",
                      "real_estate",
                      "healthcare",
                      "retail",
                      "construction",
                      "manufacturing",
                      "education",
                      "not_for_profit",
                      "hospitality",
                      "finance",
                      "technology",
                      "other"
                    ]
                  },
                  "computers": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Windows, Mac or Linux computers"
                  },
                  "phones": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "tablets": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "handhelds": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Scanners, EFTPOS/point-of-sale and similar"
                  },
                  "email_platform": {
                    "type": "string",
                    "enum": [
                      "microsoft365",
                      "google_workspace",
                      "other",
                      "unknown"
                    ],
                    "default": "unknown"
                  },
                  "m365_tenants": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 50,
                    "description": "Only when email_platform is microsoft365"
                  },
                  "compliance": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "essential_eight",
                        "privacy_act",
                        "aml_ctf",
                        "cyber_insurance",
                        "tender_or_contract"
                      ]
                    }
                  },
                  "goals": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "monitoring",
                        "assessment",
                        "privacy",
                        "data_destruction",
                        "offboarding",
                        "advice",
                        "incident",
                        "not_sure"
                      ]
                    }
                  }
                }
              },
              "example": {
                "staff": 15,
                "computers": 16,
                "phones": 10,
                "email_platform": "microsoft365",
                "m365_tenants": 1,
                "compliance": [
                  "essential_eight",
                  "cyber_insurance"
                ],
                "goals": [
                  "monitoring"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Indicative plan",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlanResponse"
                },
                "example": {
                  "ok": true,
                  "plan": {
                    "engine_version": "2026-11-11.1",
                    "indicative": true,
                    "currency": "AUD",
                    "facts": {
                      "staff": 15,
                      "sector": null,
                      "devices": {
                        "computers": 16,
                        "phones": 10,
                        "tablets": null,
                        "handhelds": null
                      },
                      "email_platform": "microsoft365",
                      "m365_tenants": 1,
                      "compliance": [
                        "essential_eight",
                        "cyber_insurance"
                      ],
                      "goals": [
                        "monitoring"
                      ]
                    },
                    "monitoring": {
                      "tier": "shield",
                      "name": "Shield",
                      "included_computers": 20,
                      "microsoft365_tenants": 1,
                      "extra_computers": 0,
                      "extra_computer_rate": {
                        "ex_gst_cents": 2900,
                        "gst_cents": 290,
                        "inc_gst_cents": 3190,
                        "ex_gst": "A$29",
                        "inc_gst": "A$31.9"
                      },
                      "monthly_from": {
                        "ex_gst_cents": 89000,
                        "gst_cents": 8900,
                        "inc_gst_cents": 97900,
                        "ex_gst": "A$890",
                        "inc_gst": "A$979"
                      },
                      "setup_from": {
                        "ex_gst_cents": 89000,
                        "gst_cents": 8900,
                        "inc_gst_cents": 97900,
                        "ex_gst": "A$890",
                        "inc_gst": "A$979"
                      },
                      "first_month_from": {
                        "ex_gst_cents": 178000,
                        "gst_cents": 17800,
                        "inc_gst_cents": 195800,
                        "ex_gst": "A$1,780",
                        "inc_gst": "A$1,958"
                      },
                      "included": [
                        "Everything in Watch, for up to 20 computers",
                        "Microsoft 365 monitoring, one tenant (in development)",
                        "Quarterly Essential Eight evidence pack (in development)",
                        "Written evidence for insurer questionnaires (in development)",
                        "12-month outcome review (in development)"
                      ],
                      "in_development": [
                        "Microsoft 365 monitoring",
                        "Quarterly Essential Eight evidence pack",
                        "Written evidence for insurer questionnaires",
                        "12-month outcome review"
                      ],
                      "plan_url": "https://oowl.com.au/services/monitoring#plans"
                    },
                    "monitoring_custom": null,
                    "alternatives": [
                      {
                        "tier": "plus",
                        "name": "Shield Plus",
                        "monthly_from": {
                          "ex_gst_cents": 149000,
                          "gst_cents": 14900,
                          "inc_gst_cents": 163900,
                          "ex_gst": "A$1,490",
                          "inc_gst": "A$1,639"
                        },
                        "why": "Adds a quarterly review call, up to three Microsoft 365 tenants and best-effort after-hours SMS (in development)."
                      }
                    ],
                    "quoted_services": [
                      {
                        "id": "essential_eight",
                        "name": "Essential Eight assessment",
                        "url": "https://oowl.com.au/services/essential-eight",
                        "pricing": "quoted",
                        "what": "A plain-English maturity rating for each of the eight ASD controls, with evidence and a prioritised fix plan. Not a certification.",
                        "price": "Quoted, fixed fee",
                        "why": "You mentioned the Essential Eight or an assessment."
                      }
                    ],
                    "free_option": {
                      "id": "security_check",
                      "name": "Free security check",
                      "url": "https://oowl.com.au/contact#book",
                      "pricing": "free",
                      "what": "A passive look at what your business already exposes to the internet, read from public records only, with a one-page result."
                    },
                    "notes": [
                      "Microsoft 365 monitoring is in development and not yet available. The plan covers your computers now; the Microsoft 365 part starts when it is ready.",
                      "Your phones are counted in your written quote. There is no published per-device price for them, so the \"from\" price covers computers only."
                    ],
                    "cautions": [],
                    "status": "oowl shield is in internal testing and not yet monitoring any client's systems. Your written quote sets out what is running and when monitoring would start.",
                    "terms": [
                      "Indicative only: these are published starting prices, not an offer. Your final price is confirmed in a written quote before you commit to anything.",
                      "Prices are in Australian dollars. GST is 10% and shown separately.",
                      "The one-off setup fee equals one month's fee and is shown here as its published starting price.",
                      "Nothing starts and nothing is installed until you accept a written quote."
                    ],
                    "summary": "Suggested: oowl shield Shield from A$890 a month ex GST (A$979 inc GST), plus a one-off setup fee from A$890 ex GST; Essential Eight assessment (quoted, fixed fee).",
                    "request_url": "https://oowl.com.au/quote?staff=15&computers=16&phones=10&email_platform=microsoft365&m365_tenants=1&compliance=essential_eight%2Ccyber_insurance&goals=monitoring#request"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Not a JSON object"
          },
          "413": {
            "description": "Body over 8 KB"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          }
        }
      }
    }
  },
  "components": {
    "responses": {
      "RateLimited": {
        "description": "Rate limit reached",
        "headers": {
          "Retry-After": {
            "schema": {
              "type": "integer"
            }
          }
        }
      }
    },
    "schemas": {
      "ScopingInput": {
        "type": "object",
        "additionalProperties": false,
        "description": "Scoping facts about a business. Every field is optional; send what you know. Personal information (names, emails, phone numbers) is not accepted and is ignored.",
        "properties": {
          "staff": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000
          },
          "sector": {
            "type": "string",
            "enum": [
              "professional_services",
              "accounting",
              "legal",
              "real_estate",
              "healthcare",
              "retail",
              "construction",
              "manufacturing",
              "education",
              "not_for_profit",
              "hospitality",
              "finance",
              "technology",
              "other"
            ]
          },
          "computers": {
            "type": "integer",
            "minimum": 0,
            "description": "Windows, Mac or Linux computers"
          },
          "phones": {
            "type": "integer",
            "minimum": 0
          },
          "tablets": {
            "type": "integer",
            "minimum": 0
          },
          "handhelds": {
            "type": "integer",
            "minimum": 0,
            "description": "Scanners, EFTPOS/point-of-sale and similar"
          },
          "email_platform": {
            "type": "string",
            "enum": [
              "microsoft365",
              "google_workspace",
              "other",
              "unknown"
            ],
            "default": "unknown"
          },
          "m365_tenants": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Only when email_platform is microsoft365"
          },
          "compliance": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "essential_eight",
                "privacy_act",
                "aml_ctf",
                "cyber_insurance",
                "tender_or_contract"
              ]
            }
          },
          "goals": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "monitoring",
                "assessment",
                "privacy",
                "data_destruction",
                "offboarding",
                "advice",
                "incident",
                "not_sure"
              ]
            }
          }
        }
      },
      "Money": {
        "type": "object",
        "properties": {
          "ex_gst_cents": {
            "type": "integer"
          },
          "gst_cents": {
            "type": "integer"
          },
          "inc_gst_cents": {
            "type": "integer"
          },
          "ex_gst": {
            "type": "string",
            "example": "A$890"
          },
          "inc_gst": {
            "type": "string",
            "example": "A$979"
          }
        }
      },
      "MonitoringOption": {
        "type": "object",
        "properties": {
          "tier": {
            "type": "string",
            "enum": [
              "watch",
              "shield",
              "plus"
            ]
          },
          "name": {
            "type": "string"
          },
          "included_computers": {
            "type": "integer"
          },
          "microsoft365_tenants": {
            "type": "integer"
          },
          "extra_computers": {
            "type": "integer"
          },
          "extra_computer_rate": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Money"
              },
              {
                "type": "null"
              }
            ]
          },
          "monthly_from": {
            "$ref": "#/components/schemas/Money"
          },
          "setup_from": {
            "$ref": "#/components/schemas/Money"
          },
          "first_month_from": {
            "$ref": "#/components/schemas/Money"
          },
          "included": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "in_development": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "plan_url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "Plan": {
        "type": "object",
        "properties": {
          "engine_version": {
            "type": "string"
          },
          "indicative": {
            "type": "boolean",
            "const": true
          },
          "currency": {
            "type": "string",
            "const": "AUD"
          },
          "facts": {
            "type": "object",
            "description": "The normalised input actually used"
          },
          "monitoring": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/MonitoringOption"
              },
              {
                "type": "null"
              }
            ]
          },
          "monitoring_custom": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "reason": {
                    "type": "string"
                  },
                  "pricing": {
                    "type": "string"
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          },
          "alternatives": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "quoted_services": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "price": {
                  "type": "string",
                  "const": "Quoted, fixed fee"
                },
                "what": {
                  "type": "string"
                },
                "why": {
                  "type": "string"
                }
              }
            }
          },
          "free_option": {
            "type": "object"
          },
          "notes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "cautions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "status": {
            "type": "string"
          },
          "terms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "summary": {
            "type": "string"
          },
          "request_url": {
            "type": "string",
            "format": "uri",
            "description": "Send the person here to request a written quote; their answers are pre-filled."
          }
        }
      },
      "PlanResponse": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "plan": {
            "$ref": "#/components/schemas/Plan"
          },
          "ignored_fields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "Catalogue": {
        "type": "object",
        "description": "Provider, published monitoring plans, quoted services, input vocabulary and docs links."
      }
    }
  }
}
