Skip to main content

Response formats

The API supports JSON, CSV, and PDF response formats. Specify your preferred format using the Accept header.
curl -X GET "https://public-api.stora.co/2025-09/contacts" \
 -H 'accept: application/json' \
 -H 'authorization: Bearer ACCESS_TOKEN'

Expanding responses

Some endpoints support expanding nested objects in the response using the expand query parameter. You can expand multiple objects with a comma-separated list, and use dot notation for nested objects. For example, when retrieving an order, you can expand the contact, line_items, and line_items.item:
curl -X GET "https://public-api.stora.co/2025-09/orders?expand=contact,line_items,line_items.item" \
 -H 'accept: application/json' \
 -H 'authorization: Bearer ACCESS_TOKEN'
You can find examples of fully expanded responses in the “Show a <RESOURCE_NAME>” endpoints.
For each expanded resource, ensure the access token has read scope for that resource. For example, when expanding the site on subscription, the public.site:read scope is required.

Pagination

List endpoints are paginated. The defaults are:
  • 50 items per page by default
  • 100 items per page maximum (set via the limit query parameter)
  • Use the page query parameter to navigate through pages
Pagination data (count, last, limit, next, page, pages, and prev) is returned in the response’s meta/pagination field. Some resources include a _links field containing HATEOAS-style links. These provide URLs to related actions or pages, such as signing a contract on the storefront or starting a new booking for a unit type.

Structure

Each link is keyed by a namespaced relation name and contains an href (relative path) and a human-readable title:
{
  "unit_type": {
    "id": "utype_f18fc91387cdf710",
    "name": "5x5 Storage Unit",
    "_links": {
      "sf:new_order": {
        "href": "/sites/belfast-self-storage/5x5-unit/order/contact-details?unit_type_slug=5x5-unit",
        "title": "New order"
      }
    }
  }
}

CURIEs

Link relation names use a CURIE (Compact URI) prefix to indicate which application the link points to:
PrefixApplicationExample
sfStorefront (customer-facing booking site)sf:new_order
boBackoffice (operator dashboard)bo:view_contact
The meta object includes a curies array that maps each prefix to a URL template. To resolve a full URL, replace {rel} in the CURIE href with the link’s href:
{
  "meta": {
    "curies": [
      {
        "name": "bo",
        "href": "https://app.stora.co{rel}",
        "templated": true,
        "title": "Backoffice"
      },
      {
        "name": "sf",
        "href": "https://acme.stora.co{rel}",
        "templated": true,
        "title": "Storefront"
      }
    ]
  }
}
For example, a link sf:new_order with href /sites/belfast/5x5-unit/order/contact-details?unit_type_slug=5x5-unit resolves to:
https://acme.stora.co/sites/belfast/5x5-unit/order/contact-details?unit_type_slug=5x5-unit
Links can be conditional — they only appear when the action is available. For example:
  • A contract only has sf:show_contract when it is not voided or deleted
  • A unit type only has sf:new_order when its status is bookable
When no links are available, the _links field is an empty object {}.