DOCS

OPS25 Documentation

Put an organisation’s booking flow on your own site, and read what they offer. Guides, conventions, and a reference generated from the schemas the API validates with.

Put booking on your site

Read organisation data

Before you build

Try it now

The catalogue is public: no credentials, no allowlisting, and it works from a server as well as a browser. Sign in to the office and this fills in with your own organisation.

Read the catalogue reference
REQUEST
curl https://api.ops25.com/api/public/harbour/catalog
RESPONSE
{
  "operator": {
    "name": "Harbour Waste",
    "slug": "harbour",
    "publicId": "org_a1b2c3d4e5f6a7b8",
    "maxHireDays": 14,
    "today": "2026-09-20",
    "booking": {
      "logoUrl": "https://cdn.example.com/assets/logo.png",
      "primaryColor": "#203a30",
      "title": "",
      "termsUrl": "https://harbourwaste.example/terms"
    },
    "timePeriods": [
      {
        "id": "morning",
        "name": "Morning",
        "sortOrder": 1
      }
    ]
  },
  "rules": [],
  "notices": [
    {
      "id": "7c1e5a90-3b2d-4f6e-8a41-2d9b0c5e7f13",
      "text": "We cannot take asbestos, liquids or gas bottles.",
      "mustAccept": true,
      "productGroupIds": []
    }
  ],
  "productGroups": [
    {
      "id": "5d2c8a41-7b3e-4f10-9c6d-1e8a2b4f6c30",
      "name": "Mixed Waste Skip Bin",
      "sortOrder": 0
    }
  ],
  "products": [
    {
      "id": "8f14e45f-ce0a-4c1f-9b3d-2a6f7c5d1e20",
      "groupId": "5d2c8a41-7b3e-4f10-9c6d-1e8a2b4f6c30",
      "variantName": "4m³",
      "name": "Mixed Waste Skip Bin · 4m³",
      "bookingMode": "instant_booking",
      "priceCents": 38500
    },
    {
      "id": "0b6f3e2a-1d4c-4a8e-b5f7-9c2d6e1a3b48",
      "groupId": "7a9e1c3b-5f2d-4b6a-8e0c-4d1f3a5b7c92",
      "variantName": "",
      "name": "Mattress",
      "bookingMode": "add_on",
      "priceCents": 6500
    }
  ],
  "addOns": [
    {
      "groupId": "5d2c8a41-7b3e-4f10-9c6d-1e8a2b4f6c30",
      "productId": "0b6f3e2a-1d4c-4a8e-b5f7-9c2d6e1a3b48"
    }
  ],
  "areas": [
    {
      "id": "3c6e0b8a-9c15-4f2b-8a1d-7e4b2c9f0a11",
      "name": "Inner West"
    }
  ]
}

Everything else