> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stora.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a Price Adjustment

> Create a new price adjustment for a subscription.

The adjustment date is resolved from `effective_from` to the subscription's first renewal date on or
after it, and returned as `adjust_on`. The price adjustment lands as a `draft` unless `schedule` is
`true`, in which case it is scheduled (`pending`) immediately.

When the `notification` object is omitted, the operator's default notice period applies. If that
default does not fit before the resolved `adjust_on`, `notification.notice_period` reads back as
`send_immediately`. An operator whose default is no notice at all resolves to no notification, which
requires the `public.price_adjustment:skip_notifications` scope just as an explicit `null` does.
Notifications are only sent for scheduled (`pending`) adjustments: a
`send_immediately` notice is delivered as soon as the adjustment is scheduled, so a `draft` reads
back `notification.sent_at` as `null` until it is scheduled. A `notice_period` of `null` skips
customer notification through Stora and requires the `public.price_adjustment:skip_notifications` scope.

A subscription can hold only one scheduled price adjustment at a time. Scheduling a second one is a
`409`; delete the existing adjustment
before scheduling a replacement. The restriction lifts once the existing adjustment has been applied,
so the next one can be scheduled while the previous is still awaiting its invoice.

A `409` is also returned when the request conflicts with the subscription's current state: the
subscription has not been billed through Stripe (`stripe_subscription_id` is null), is not active, is
archived, or is scheduled to end; the subscription has no future renewal dates to adjust on; or a
scheduled adjustment already exists for that subscription on the resolved `adjust_on`. Neither check
applies to drafts, so a `draft` can always be created alongside a scheduled adjustment.

Required authorization scope: `public.price_adjustment:write`




## OpenAPI

````yaml /2025-09/openapi.json post /2025-09/price_adjustments
openapi: 3.1.1
info:
  title: Stora Public API
  version: 2025-09
  x-build-date: '2026-09-02'
  description: >-
    The Stora Public API gives you programmatic access to your self-storage
    business. Use it to build custom integrations, automate operational
    workflows, and sync data with the tools you already use.
  termsOfService: https://www.stora.co/terms-of-service
  contact:
    name: Stora Support
    url: https://www.stora.co/contact
servers:
  - url: https://public-api.stora.co
    description: Production
security: []
tags:
  - name: Contacts
    description: >-
      Contact is the end user of an operator’s storage business — an individual
      or company that inquires, books, signs agreements, and pays for storage.
  - name: Contract Templates
    description: >-
      Contract Template is a reusable contract blueprint. It contains the
      contract content with fillable fields and variables that Stora can
      pre‑fill at document generation time for a specific contact and tenancy.
  - name: Contracts
    description: >-
      Contract is a document generated from a contract template for a specific
      contact. It tracks the signing lifecycle, moving through statuses such as
      pending, signed, voided, declined, and deleted.
  - name: Coupons
    description: >-
      Coupon is a reusable promotion that reduces the price a contact pays by
      either a percentage or a fixed amount. It can be applied to eligible
      charges such as unit rent or product and may be limited by duration,
      number of uses, or scope.
  - name: Credit Notes
    description: >-
      Credit Note reduces or reverses part or all of a previously issued
      invoice. It references the original invoice and contact, along with the
      specified corrected amounts and taxes.
  - name: Deals
    description: >-
      Deal refers to the collection of information pertaining to a potential
      order including contact, site, unit types, protection.
  - name: Deals / Stages
    description: Deal Stage refers to the stages a deal transitions through.
  - name: Identity Verifications
    description: Identity Verification tracks the process of verifying a contacts identity.
  - name: Images
    description: >-
      Serves images associated with resources such as sites and unit types. The
      endpoint redirects to a temporary pre-signed storage URL where the image
      can be downloaded.
  - name: Invoices
    description: >-
      Invoice is a finalized billing document issued to a contact for their
      storage subscriptions and related charges. It itemizes line items like
      unit rent and protection, applies taxes and discounts, and tracks totals,
      balance due, and status over time.
  - name: Notes
    description: >-
      A note is a text annotation attached to a resource such as a contact,
      unit, subscription, or task. Notes capture observations, reminders, or
      context added by staff or integrations.
  - name: OAuth 2
    description: >-
      The Stora Public API supports two OAuth 2.0 flows. Use **Client
      Credentials** if you are an operator building your own integration. Use
      **Authorization Code** if you are a partner integrating on behalf of an
      operator.
  - name: Opportunities
    description: >-
      Opportunity is an expression of interest in storage — an incomplete
      booking, a price reveal, a quote request, or a lead captured before a site
      opens. It records the contact, the site and storage they were interested
      in, and can go on to be associated with a deal.
  - name: Orders
    description: >-
      Order captures a contact’s intent to rent storage, including the selected
      site and unit type, move‑in date, pricing, and optional add‑ons like
      protection, products, and services. It tracks status over its lifecycle,
      and may lead to a subscription that bills on a recurring basis.
  - name: Orders / Line Items
    description: >-
      Order Line Items are the individual charges that make up an order. Each
      line item represents a product or service such as unit rent, protection,
      or a one‑off fee, and includes its quantity, unit price, and currency.
  - name: Price Adjustments
    description: >-
      Price Adjustment is a scheduled percentage change (increase or decrease)
      to a subscription's recurring prices, applied on a future renewal date. It
      tracks its lifecycle from scheduling through application and invoicing,
      along with customer notification details.
  - name: Product Categories
    description: >-
      Product Category groups related products and services into a logical
      classification used for pricing and display.
  - name: Products
    description: >-
      Product represents a sellable item or service offered by the operator. It
      defines attributes such as name, description, pricing model, currency, and
      category, which determine how it’s presented and billed.
  - name: Protection Levels
    description: >-
      **These endpoints are changing in a breaking way** as we restructure how
      Protection Levels work. Contact us at api_support@stora.co and read [this
      guide](https://docs.stora.co/2025-09/guides/site-scoped-protection-levels)
      before starting any integration.


      Protection Level is an optional add‑on that protects a contact’s stored
      goods up to a chosen coverage amount. It’s priced and billed alongside
      storage, appears as its own product or line item, and follows the same tax
      and discount rules as other charges.
  - name: Sites
    description: >-
      Site is a single physical self‑storage location operated by the operator.
      It’s the container for everything specific to that location: units and
      unit types, pricing and taxes, access control, and reporting.
  - name: Staff
    description: >-
      Staff refers to a member of an organization who works on behalf of the
      operator.
  - name: Subscriptions
    description: >-
      Subscription is an ongoing billing agreement that charges a contact on a
      recurring schedule for storage and related services. It defines the
      billing period and active prices, accrues charges into invoices, and
      reflects proration, discounts, and taxes.
  - name: Tasks
    description: Tasks represent individual pieces of work or actions.
  - name: Tenancies
    description: >-
      Tenancy represents an ongoing storage agreement between a contact and an
      operator, tied to a site and one or more allocated units.
  - name: Timeline / Events
    description: >-
      An event represents a custom timeline entry created by an external
      integration, such as a CRM or messaging app.
  - name: Timeline / Sources
    description: >-
      A source represents the origin of a custom timeline event, such as an
      external CRM, or a custom integration.
  - name: Timeline / Templates
    description: >-
      A template defines the message format for a custom timeline event,
      including the Liquid template and available variables.
  - name: Unit Allocations
    description: >-
      Unit Allocation represents the assignment of a specific unit to a tenancy,
      tracking reservation and access details.
  - name: Unit Types
    description: >-
      Unit Type represents a standardized storage offering at a site, such as
      “50 sq ft indoor” or “20 ft container.” It defines core attributes used
      for pricing and availability, including size, features or access type, and
      display name.
  - name: Units
    description: >-
      Unit is a specific, bookable storage space at a site, for example “Unit
      A‑012” of a given unit type. It carries concrete attributes like
      identifier and status.
  - name: Webhook Endpoints
    description: >-
      Webhook endpoints are used to receive notifications when specific events
      occur in Stora. We will send a `POST` request to the endpoint with the
      event payload.
  - name: Webhooks
    description: >-
      Webhooks are HTTP callbacks that send real-time `POST` requests to your
      configured endpoints when specific events occur in Stora. When an event
      happens (such as an invoice being paid or a credit note being created),
      Stora will immediately send a webhook notification to all endpoints
      subscribed to that event type.
externalDocs:
  description: Stora Public API documentation website
  url: https://docs.stora.co/2025-09/
paths:
  /2025-09/price_adjustments:
    post:
      tags:
        - Price Adjustments
      summary: Create a Price Adjustment
      description: >
        Create a new price adjustment for a subscription.


        The adjustment date is resolved from `effective_from` to the
        subscription's first renewal date on or

        after it, and returned as `adjust_on`. The price adjustment lands as a
        `draft` unless `schedule` is

        `true`, in which case it is scheduled (`pending`) immediately.


        When the `notification` object is omitted, the operator's default notice
        period applies. If that

        default does not fit before the resolved `adjust_on`,
        `notification.notice_period` reads back as

        `send_immediately`. An operator whose default is no notice at all
        resolves to no notification, which

        requires the `public.price_adjustment:skip_notifications` scope just as
        an explicit `null` does.

        Notifications are only sent for scheduled (`pending`) adjustments: a

        `send_immediately` notice is delivered as soon as the adjustment is
        scheduled, so a `draft` reads

        back `notification.sent_at` as `null` until it is scheduled. A
        `notice_period` of `null` skips

        customer notification through Stora and requires the
        `public.price_adjustment:skip_notifications` scope.


        A subscription can hold only one scheduled price adjustment at a time.
        Scheduling a second one is a

        `409`; delete the existing adjustment

        before scheduling a replacement. The restriction lifts once the existing
        adjustment has been applied,

        so the next one can be scheduled while the previous is still awaiting
        its invoice.


        A `409` is also returned when the request conflicts with the
        subscription's current state: the

        subscription has not been billed through Stripe
        (`stripe_subscription_id` is null), is not active, is

        archived, or is scheduled to end; the subscription has no future renewal
        dates to adjust on; or a

        scheduled adjustment already exists for that subscription on the
        resolved `adjust_on`. Neither check

        applies to drafts, so a `draft` can always be created alongside a
        scheduled adjustment.


        Required authorization scope: `public.price_adjustment:write`
      operationId: price_adjustment_create
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PriceAdjustmentsCreate'
            examples:
              price_adjustment_successfully_created:
                summary: price adjustment successfully created
                value:
                  subscription:
                    id: sub_0c957d38b021758e
                  percentage: 10
                  effective_from: '2025-02-22'
                  applies_to:
                    unit_types: true
      responses:
        '201':
          description: price adjustment successfully created
          content:
            application/json:
              examples:
                default:
                  value:
                    price_adjustment:
                      id: pradj_295h6kfm9ro15lo
                      adjust_on: '2025-03-14'
                      adjustment: null
                      applies_to:
                        products: false
                        protection_levels: false
                        unit_types: true
                      created_at: '2025-02-22T14:41:00Z'
                      estimation:
                        post_amount:
                          amount: 47666
                          currency: GBP
                          formatted: £476.66
                        pre_amount:
                          amount: 43333
                          currency: GBP
                          formatted: £433.33
                      invoice: null
                      notification:
                        notice_period: send_immediately
                        scheduled_at: '2025-02-22'
                        sent_at: null
                      percentage: 10
                      status: draft
                      subscription:
                        id: sub_0c957d38b021758e
                      updated_at: '2025-02-22T14:41:00Z'
                    meta:
                      request_id: 01563646-58c1-4607-8fe0-cae3e92c4477
                      curies:
                        - name: bo
                          href: https://app.stora.test{rel}
                          templated: true
                          title: Backoffice
                        - name: sf
                          href: https://acme.stora.test{rel}
                          templated: true
                          title: Storefront
                  summary: price adjustment successfully created
              schema:
                $ref: '#/components/schemas/price_adjustment_single'
        '403':
          description: token is missing the skip_notifications scope
          content:
            application/json:
              examples:
                default:
                  value:
                    error:
                      code: forbidden
                      details: []
                      links:
                        - kind: open_api
                          name: OpenAPI specification
                          url: https://docs.stora.test/2025-09/openapi.json
                        - kind: documentation
                          name: Errors
                          url: https://docs.stora.test/2025-09/guides/errors
                      message: >-
                        Used API token does not have the required scope. Access
                        to this resource requires scope
                        "public.price_adjustment:skip_notifications".
                      request_id: 01563646-58c1-4607-8fe0-cae3e92c4477
                      type: invalid_request_error
                  summary: token is missing the skip_notifications scope
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: price adjustment conflicts with the subscription's current state
          content:
            application/json:
              examples:
                default:
                  value:
                    error:
                      code: duplicate_price_adjustment
                      details: []
                      links:
                        - kind: open_api
                          name: OpenAPI specification
                          url: https://docs.stora.test/2025-09/openapi.json
                        - kind: documentation
                          name: Errors
                          url: https://docs.stora.test/2025-09/guides/errors
                      message: >-
                        A price adjustment is already scheduled for this
                        subscription on 2025-03-14.
                      request_id: 01563646-58c1-4607-8fe0-cae3e92c4477
                      type: invalid_request_error
                  summary: >-
                    price adjustment conflicts with the subscription's current
                    state
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: invalid price adjustment
          content:
            application/json:
              examples:
                default:
                  value:
                    error:
                      code: invalid_content
                      details:
                        - message: >-
                            object at root is missing required properties:
                            subscription, percentage, effective_from
                          pointer: null
                      links:
                        - kind: open_api
                          name: OpenAPI specification
                          url: https://docs.stora.test/2025-09/openapi.json
                        - kind: documentation
                          name: Errors
                          url: https://docs.stora.test/2025-09/guides/errors
                      message: The request body content is not valid.
                      request_id: 01563646-58c1-4607-8fe0-cae3e92c4477
                      type: invalid_request_error
                  summary: invalid price adjustment
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - Bearer:
            - public.price_adjustment:write
        - OAuth2:
            - public.price_adjustment:write
components:
  schemas:
    PriceAdjustmentsCreate:
      type: object
      required:
        - subscription
        - percentage
        - effective_from
      properties:
        subscription:
          type: object
          required:
            - id
          properties:
            id:
              type: string
              pattern: ^sub_
              description: >-
                The ID of the subscription the price adjustment applies to. Must
                be an active subscription that has been billed through Stripe
                (`stripe_subscription_id` is set) and is not archived or
                scheduled to end.
          additionalProperties: false
        percentage:
          type: number
          description: >-
            Percentage change applied to the subscription's prices. Negative
            values are a decrease. Must be non-zero and greater than -100.
          exclusiveMinimum: -100
          not:
            const: 0
          x-error:
            not: number at `/percentage` must be non-zero
        effective_from:
          type: string
          description: >-
            Date to resolve the adjustment date from. The adjustment fires on
            the first renewal date on or after this date. A calendar date in the
            operator's timezone. Use `next_billing_period` for the next renewal
            date.
          oneOf:
            - type: string
              format: date
            - const: next_billing_period
        schedule:
          type: boolean
          default: false
          description: >-
            When true, the price adjustment is scheduled (`pending`)
            immediately. When false, it lands as a `draft`.
        applies_to:
          type: object
          required: []
          properties:
            unit_types:
              type: boolean
              description: Whether unit rent prices are adjusted
            protection_levels:
              type: boolean
              description: Whether protection level prices are adjusted
            products:
              type: boolean
              description: Whether product prices are adjusted
          additionalProperties: false
          description: >-
            Which of the subscription's line item kinds the adjustment applies
            to. Each option defaults to false. At least one must be true to
            schedule the adjustment.
        notification:
          oneOf:
            - type: object
              required:
                - notice_period
              properties:
                notice_period:
                  type: integer
                  minimum: 1
                  description: Notice period in days before the adjustment date
              additionalProperties: false
              description: >-
                How the customer is notified of the price adjustment before it
                is applied. When omitted, the operator's default notice period
                applies.
            - type: object
              required:
                - notice_period
              properties:
                notice_period:
                  const: send_immediately
                  type: string
                  description: Notify the customer immediately
              additionalProperties: false
              description: >-
                How the customer is notified of the price adjustment before it
                is applied. When omitted, the operator's default notice period
                applies.
            - type: object
              required:
                - notice_period
              properties:
                notice_period:
                  const: null
                  type: 'null'
                  description: >-
                    Do not notify the customer through Stora. Requires the
                    `public.price_adjustment:skip_notifications` scope.
              additionalProperties: false
              description: >-
                How the customer is notified of the price adjustment before it
                is applied. When omitted, the operator's default notice period
                applies.
      additionalProperties: false
      description: Create Price Adjustment Request
    price_adjustment_single:
      type: object
      description: Single Price Adjustment
      additionalProperties: false
      properties:
        price_adjustment:
          $ref: '#/components/schemas/PriceAdjustment'
        meta:
          $ref: '#/components/schemas/Meta'
    Error:
      type: object
      description: Error
      additionalProperties: false
      properties:
        error:
          type: object
          additionalProperties: false
          properties:
            code:
              type: string
              description: Short code that represents the error.
            type:
              enum:
                - invalid_request_error
                - api_error
              description: Type of error returned.
              type: string
            message:
              type: string
              description: >-
                Human-readable message providing brief information about the
                error.
            links:
              type: array
              description: Link(s) to Stora developer resources
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: Name of Stora documentation
                  url:
                    type: string
                    format: uri
                    description: URL to Stora documentation
                  kind:
                    type: string
                    description: Kind of Stora documentation
            details:
              type: array
              description: Array of error details.
              items:
                $ref: '#/components/schemas/ErrorDetail'
            request_id:
              type: string
              description: Unique request identifier.
    PriceAdjustment:
      type: object
      description: Price Adjustment
      additionalProperties: false
      properties:
        id:
          type: string
          description: Unique identifier for the price adjustment.
        subscription:
          $ref: '#/components/schemas/Subscription'
          description: >-
            Subscription the price adjustment applies to. **Expandable** (shows
            only ID when not expanded).
        status:
          type: string
          enum:
            - draft
            - pending
            - processing
            - adjusted
            - invoiced
            - cancelled
            - failed
          description: Status of the price adjustment.
        adjust_on:
          type: string
          format: date
          description: >-
            The renewal date the adjustment will fire on. A calendar date in the
            operator's timezone.
        percentage:
          type: number
          description: >-
            Percentage change applied to the subscription's prices. Negative
            values are a decrease.
        applies_to:
          type: object
          additionalProperties: false
          description: >-
            Which of the subscription's line item kinds the adjustment applies
            to.
          properties:
            unit_types:
              type: boolean
              description: Whether unit rent prices are adjusted.
            protection_levels:
              type: boolean
              description: Whether protection level prices are adjusted.
            products:
              type: boolean
              description: Whether product prices are adjusted.
        notification:
          type: object
          additionalProperties: false
          description: Customer notification details for the price adjustment.
          properties:
            notice_period:
              description: >-
                Notice period in days before the adjustment date,
                `send_immediately`, or `null` when the customer is not notified
                through Stora.
              oneOf:
                - type: integer
                - type: string
                  enum:
                    - send_immediately
                - type: 'null'
            scheduled_at:
              type:
                - string
                - 'null'
              format: date
              description: >-
                Date the customer notification is scheduled to be sent. A
                calendar date in the operator's timezone.
            sent_at:
              type:
                - string
                - 'null'
              format: date-time
              description: Timestamp of when the customer notification was sent.
        estimation:
          type: object
          additionalProperties: false
          description: >-
            Estimated subscription amounts, recomputed from current billing data
            on every write to the adjustment.
          properties:
            pre_amount:
              description: Estimated subscription amount before the adjustment.
              oneOf:
                - $ref: '#/components/schemas/Money'
                - type: 'null'
            post_amount:
              description: Estimated subscription amount after the adjustment.
              oneOf:
                - $ref: '#/components/schemas/Money'
                - type: 'null'
        adjustment:
          description: Actual billed amounts. `null` until the adjustment has been applied.
          type:
            - object
            - 'null'
          additionalProperties: false
          properties:
            pre_amount:
              $ref: '#/components/schemas/Money'
              description: Subscription amount before the adjustment was applied.
            post_amount:
              $ref: '#/components/schemas/Money'
              description: Subscription amount after the adjustment was applied.
            applied_at:
              type: string
              format: date-time
              description: Timestamp of when the adjustment was applied.
        invoice:
          description: >-
            Invoice the adjusted amount first landed on. `null` until invoiced.
            **Expandable** (shows only ID when not expanded).
          oneOf:
            - $ref: '#/components/schemas/Invoice'
            - type: 'null'
        created_at:
          type: string
          format: date-time
          description: Creation date and time of the price adjustment.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time of the price adjustment.
    Meta:
      type: object
      properties:
        request_id:
          type: string
          description: Unique request identifier.
        curies:
          type: array
          description: CURIE definitions for resolving namespaced link relations.
          items:
            $ref: '#/components/schemas/Curie'
    ErrorDetail:
      type: object
      description: ErrorDetail
      additionalProperties: false
      properties:
        message:
          type: string
          description: >-
            Human-readable message providing detailed information about the
            error.
        pointer:
          type:
            - string
            - 'null'
          description: >
            Points to the request field that caused the error:

            - String starting with '/': Exact path of the problematic field.

            - String starting without '/': General hint, cannot pinpoint exact
            field.

            - null: Error cannot be mapped to any specific field.
    Subscription:
      type: object
      description: Subscription
      additionalProperties: false
      properties:
        id:
          type: string
          description: Unique identifier for the subscription.
          pattern: ^sub_
        starts_at:
          type:
            - string
            - 'null'
          format: date-time
          description: Date and time for start of the subscription period.
        ends_at:
          type:
            - string
            - 'null'
          format: date-time
          description: Date and time for end of the subscription period.
        created_at:
          type: string
          format: date-time
          description: Creation date and time of the subscription.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time of the subscription.
        current_period:
          type: object
          description: Current subscription period.
          additionalProperties: false
          properties:
            starts_at:
              type:
                - string
                - 'null'
              format: date-time
              description: Date and time for start of the subscription period.
            ends_at:
              type:
                - string
                - 'null'
              format: date-time
              description: Date and time for end of the subscription period.
        stripe_subscription_id:
          type:
            - string
            - 'null'
          description: Id for the Stripe Subscription Id linked to the subscription.
        cancelled:
          type: boolean
          description: Indicates whether subscription is cancelled.
        cancellation_reason:
          type:
            - string
            - 'null'
          enum:
            - move_out_not_needed
            - move_out_seasonal
            - move_out_business
            - issue_cost
            - issue_location
            - issue_security
            - issue_quality
            - issue_accessibility
            - issue_cleanliness
            - issue_unsuitable
            - new_sub_date_change
            - new_sub_unit_type_change
            - new_sub_payment_method_change
            - new_sub_incorrect_cancellation
            - new_sub_billing_period_change
            - eviction
            - no_show
            - alternative_found
            - other
            - null
          description: Reason for subscription cancellation.
        stripe_subscription_schedule_id:
          type:
            - string
            - 'null'
          description: >-
            Id for Stripe Subscription Schedule associated with the
            subscription.
        contact:
          $ref: '#/components/schemas/Contact'
          description: >-
            Contact associated with the subscription. **Expandable** (shows only
            ID when not expanded).
        site:
          $ref: '#/components/schemas/Site'
          description: >-
            Site associated with the subscription. **Expandable** (shows only ID
            when not expanded).
        order:
          $ref: '#/components/schemas/Order'
          description: >-
            Order associated with the subscription. **Expandable** (shows only
            ID when not expanded).
        tenancy:
          $ref: '#/components/schemas/Tenancy'
          description: >-
            Tenancy associated with the subscription. **Expandable** (shows only
            ID when not expanded).
        billing_period:
          type: string
          enum:
            - monthly
            - weekly
            - every_four_weeks
            - every_three_months
            - every_six_months
            - yearly
            - one_time
        line_items:
          type: array
          description: List of line items in the subscription.
          items:
            $ref: '#/components/schemas/SubscriptionLineItem'
    Money:
      type: object
      description: Money
      additionalProperties: false
      properties:
        amount:
          type: integer
          description: Amount of money in the smallest currency unit (e.g., cents for USD).
        currency:
          enum:
            - AED
            - AUD
            - BGN
            - BRL
            - CAD
            - CHF
            - CZK
            - DKK
            - EUR
            - GBP
            - HKD
            - HUF
            - MXN
            - MYR
            - NOK
            - NZD
            - PLN
            - RON
            - SEK
            - SGD
            - THB
            - USD
          description: ISO 4217 currency code.
          type: string
        formatted:
          type: string
          description: >-
            Formatted string representation of the money amount, including the
            currency symbol.
    Invoice:
      type: object
      description: Invoice
      additionalProperties: false
      properties:
        id:
          type: string
          description: Unique identifier for the invoice.
        number:
          type: string
          description: Identification number for the invoice.
        type:
          type: string
          enum:
            - subscription
            - ad_hoc
            - deposit
          description: Invoice's type.
        status:
          type: string
          enum:
            - draft
            - deleted
            - open
            - paid
            - uncollectible
            - void
          description: Status of the invoice.
        period_start:
          type:
            - string
            - 'null'
          format: date-time
          description: Date and time for start of invoice period.
        period_end:
          type:
            - string
            - 'null'
          format: date-time
          description: Date and time for end of invoice period.
        created_at:
          type:
            - string
            - 'null'
          format: date-time
          description: Creation date and time of the invoice.
        due_date:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Date and time the invoice is due for payment. Automatically charged
            invoices are due when finalized; manually collected invoices carry
            the due date set on the invoice.
        finalized_at:
          format: date-time
          type:
            - string
            - 'null'
          description: Date and time for when invoice was finalized.
        paid_at:
          format: date-time
          type:
            - string
            - 'null'
          description: Date and time for when invoice was paid.
        voided_at:
          format: date-time
          type:
            - string
            - 'null'
          description: Date and time for when invoice was cancelled without deletion.
        purchase_order_number:
          type:
            - string
            - 'null'
          description: Identification number for the purchase order.
        total:
          $ref: '#/components/schemas/Money'
          description: Gross cost of order after applying taxes and discounts.
        subtotal:
          $ref: '#/components/schemas/Money'
          description: Gross cost of order before applying taxes and discounts.
        tax:
          $ref: '#/components/schemas/Money'
          description: Total cost of taxes.
        amount_paid:
          $ref: '#/components/schemas/Money'
          description: Total amount towards invoice paid.
        amount_due:
          $ref: '#/components/schemas/Money'
        collection_status:
          type: string
          enum:
            - pending
            - overdue
            - collected
            - not_collected
          description: >-
            How far along collection of the invoice is. `pending`: collection
            remains active and the invoice is not overdue — this does not mean a
            payment attempt is processing. `overdue`: the open invoice matches
            the same overdue rule used by the `invoice.overdue` webhook
            (automatically charged invoices become overdue 15 minutes after
            finalization; an invoice whose first payment attempt is still
            processing, with no prior failure, is not overdue while that attempt
            is in flight). `collected`: the invoice is paid. `not_collected`:
            the invoice closed without collection because it was voided, marked
            uncollectible, or deleted.
        pre_payment_credit_notes_amount:
          $ref: '#/components/schemas/Money'
          description: Amount credited prior payment.
        post_payment_credit_notes_amount:
          $ref: '#/components/schemas/Money'
          description: Amount credited after payment.
        contact:
          $ref: '#/components/schemas/Contact'
          description: >-
            Contact associated with the invoice. **Expandable** (shows only ID
            when not expanded).
        site:
          $ref: '#/components/schemas/Site'
          description: >-
            Site associated with the invoice. **Expandable** (shows only ID when
            not expanded).
        tenancy:
          description: >-
            Tenancy associated with the invoice. **Expandable** (shows only ID
            when not expanded).
          oneOf:
            - $ref: '#/components/schemas/Tenancy'
            - type: 'null'
        subscription:
          description: >-
            Subscription associated with the invoice. **Expandable** (shows only
            ID when not expanded).
          oneOf:
            - $ref: '#/components/schemas/Subscription'
            - type: 'null'
        line_items:
          type: array
          items:
            $ref: '#/components/schemas/InvoiceLineItem'
    Curie:
      type: object
      description: CURIE definition for resolving namespaced link relations.
      additionalProperties: false
      properties:
        name:
          type: string
          description: CURIE prefix name
          enum:
            - bo
            - sf
        href:
          type: string
          description: URI template for resolving the CURIE.
        templated:
          type: boolean
          description: Whether the href is a URI template.
        title:
          type: string
          description: Human-readable title.
    Contact:
      type: object
      description: Contact
      additionalProperties: false
      properties:
        id:
          type: string
          description: Unique identifier for the contact.
          pattern: ^con_
        address: 6b199008-b9f2-4de3-9e27-0c43142ec414
        email:
          type: string
          description: Email address of the contact.
          format: email
        full_name:
          type: string
          description: Full name of the contact.
        marketing_source:
          type:
            - string
            - 'null'
          description: Source of marketing for the contact.
          enum:
            - used_before
            - recommendation
            - received_leaflet
            - seen_building_signs
            - seen_advert
            - facebook_marketplace
            - google_search
            - other_online_search
            - social_media
            - email
            - radio
            - other
            - null
        phone_number:
          type:
            - string
            - 'null'
          description: Phone number of the contact.
        source:
          type:
            - string
            - 'null'
          description: Source of the contact information.
          enum:
            - pre_open
            - incomplete_booking
            - registered_interest
            - price_interest
            - quotation_request
            - booking
            - popup
            - external_enquiry
            - phone
            - walkin
            - import
            - other
            - null
        tax_id:
          type:
            - string
            - 'null'
          description: Tax identification number of the contact.
        company_registration_number:
          type:
            - string
            - 'null'
          description: Company registration number of the contact.
        type:
          type:
            - string
            - 'null'
          description: Type of the contact (e.g., domestic, company).
          enum:
            - domestic
            - company
            - student
            - charity
            - local_authority
            - null
        use_case:
          type:
            - string
            - 'null'
          description: Use case for the contact.
          enum:
            - business_needs
            - moving_home
            - more_space
            - refurb
            - travelling
            - other
            - null
        status:
          type: string
          description: >-
            Status of the contact. Derived from the contact's tenancy — `lead`
            (no tenancies, default state), `customer` (at least one active
            tenancy), `churned` (all tenancies have ended).
          enum:
            - lead
            - customer
            - churned
        metadata:
          $ref: '#/components/schemas/Metadata'
        stripe_customer_id:
          type:
            - string
            - 'null'
          description: Stripe Customer identifier associated with the contact.
        tenancies_count:
          description: Number of tenancies associated with the contact.
          type: integer
        created_at:
          type: string
          format: date-time
          description: Creation date and time of the contact.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time of the contact.
        identity_check:
          type: object
          additionalProperties: false
          properties:
            required:
              type: boolean
              description: >-
                Whether the contact is required to complete identity
                verification based on the operator's checkin settings.
            status:
              type: string
              description: >-
                Status of the contact's latest identity verification.
                `not_attempted` is unique to this field (infers no identity
                verification resource yet exists for this contact).
              enum:
                - failed
                - processing
                - succeeded
                - cancelled
                - not_attempted
    Site:
      type: object
      description: Site
      additionalProperties: false
      properties:
        id:
          type: string
          description: Unique identifier for the site.
        name:
          type: string
          description: Name of the site.
        description:
          type:
            - string
            - 'null'
          description: Description of the site.
        created_at:
          type: string
          format: date-time
          description: Creation date and time of the site.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time of the site.
        phone:
          type:
            - string
            - 'null'
          description: Phone number of the site.
        opened_at:
          type:
            - string
            - 'null'
          format: date-time
          description: Date and time when the site was/will be opened.
        directions:
          type:
            - object
            - 'null'
          description: Directions to the site.
          additionalProperties: false
          properties:
            google_maps_url:
              type:
                - string
                - 'null'
              description: URL to Google Maps for the site.
        images:
          type: object
          additionalProperties: false
          properties:
            default:
              type:
                - object
                - 'null'
              additionalProperties: false
              properties:
                original:
                  type: string
                  format: uri
                  description: Original unresized image.
                small:
                  type: string
                  format: uri
                  description: Resized to max 250x250px.
                medium:
                  type: string
                  format: uri
                  description: Resized to max 500x500px.
                large:
                  type: string
                  format: uri
                  description: Resized to max 1000x1000px.
        access_hours:
          type:
            - object
            - 'null'
          description: Access hours for the site.
          additionalProperties: false
          properties:
            monday:
              $ref: '#/components/schemas/SiteAccessHoursDay'
            tuesday:
              $ref: '#/components/schemas/SiteAccessHoursDay'
            wednesday:
              $ref: '#/components/schemas/SiteAccessHoursDay'
            thursday:
              $ref: '#/components/schemas/SiteAccessHoursDay'
            friday:
              $ref: '#/components/schemas/SiteAccessHoursDay'
            saturday:
              $ref: '#/components/schemas/SiteAccessHoursDay'
            sunday:
              $ref: '#/components/schemas/SiteAccessHoursDay'
        address:
          type:
            - object
            - 'null'
          description: Address of the site.
          additionalProperties: false
          properties:
            line_1:
              type:
                - string
                - 'null'
              description: First line of the address.
            line_2:
              type:
                - string
                - 'null'
              description: Second line of the address (optional).
            city:
              type:
                - string
                - 'null'
              description: City of the site.
            postal_code:
              type:
                - string
                - 'null'
              description: Postal code of the site.
    Order:
      type: object
      description: Order
      additionalProperties: false
      properties:
        id:
          type: string
          description: Unique identifier for the order.
        billing_period:
          type:
            - string
            - 'null'
          enum:
            - monthly
            - weekly
            - every_four_weeks
            - every_three_months
            - every_six_months
            - yearly
            - one_time
            - null
        contact:
          description: >-
            Contact associated with the order. **Expandable** (shows only ID
            when not expanded).
          oneOf:
            - $ref: '#/components/schemas/Contact'
            - type: 'null'
        source:
          description: Source of the order.
          type:
            - string
            - 'null'
          enum:
            - backoffice
            - storefront
            - storefront_multi_step
            - import
            - public_api
            - unspecified
        site:
          $ref: '#/components/schemas/Site'
          description: >-
            Site associated with the order. **Expandable** (shows only ID when
            not expanded).
        tenancy:
          description: >-
            Tenancy associated with the order. **Expandable** (shows only ID
            when not expanded).
          oneOf:
            - $ref: '#/components/schemas/Tenancy'
            - type: 'null'
        subscription:
          description: >-
            Subscription associated with the order. **Expandable** (shows only
            ID when not expanded).
          oneOf:
            - $ref: '#/components/schemas/Subscription'
            - type: 'null'
        contract_template:
          description: >-
            Contract template associated with the order. **Expandable** (shows
            only ID when not expanded).
          oneOf:
            - $ref: '#/components/schemas/ContractTemplate'
            - type: 'null'
        coupon:
          description: >-
            Coupon associated with the order. **Expandable** (shows only ID when
            not expanded).
          oneOf:
            - $ref: '#/components/schemas/Coupon'
            - type: 'null'
        email_notifications:
          type: object
          description: Email notifications settings for the order.
          additionalProperties: false
          properties:
            booking_confirmation:
              type: boolean
              description: Whether to send the booking confirmation email.
            move_in_day:
              type: boolean
              description: Whether to send the move-in day email.
            payment_details:
              type: boolean
              description: >-
                Whether to send the email with a link to complete payment when
                the order is finalized.
        metadata:
          $ref: '#/components/schemas/Metadata'
        line_items:
          type: array
          description: List of line items in the order.
          items:
            $ref: '#/components/schemas/OrderLineItem'
            description: >-
              Line item associated with the order. **Expandable** (shows only ID
              when not expanded).
        payment_method:
          type:
            - string
            - 'null'
          description: Payment method used for the order.
        payment_url:
          type:
            - string
            - 'null'
          format: uri
          description: >-
            URL for payment processing. Available only when the order is
            finalized.
        purchase_order_number:
          type:
            - string
            - 'null'
          description: Purchase order number associated with the order.
        starts_at:
          type:
            - string
            - 'null'
          description: >-
            Start date and time of the order, should be today or a future date.
            `now` indicates the order will start immediately after finalization.
        status:
          type: string
          description: Status of the order.
          enum:
            - draft
            - finalized
            - completed
            - abandoned
        created_at:
          type: string
          format: date-time
          description: Creation date and time of the order.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time of the order.
        tax:
          $ref: '#/components/schemas/Money'
          description: Total cost of tax.
        subtotal:
          $ref: '#/components/schemas/Money'
          description: Gross cost of order before applying taxes and discounts.
        total:
          $ref: '#/components/schemas/Money'
          description: Gross cost of order after applying taxes and discounts.
        total_excluding_tax:
          $ref: '#/components/schemas/Money'
          description: >-
            Gross cost of order before applying taxes and after applying
            discounts.
        total_discount:
          $ref: '#/components/schemas/Money'
          description: Discount total towards order.
        one_time_total:
          $ref: '#/components/schemas/Money'
          description: Gross cost of one off products after applying taxes and discounts.
        one_time_total_excluding_tax:
          $ref: '#/components/schemas/Money'
          description: >-
            Gross cost of one off products before applying taxes and after
            applying discounts.
    Tenancy:
      type: object
      description: Tenancy
      additionalProperties: false
      properties:
        id:
          type: string
          description: Unique identifier for the tenancy.
        starts_at:
          type: string
          format: date-time
          description: Date and time for start of the tenancy period.
        ends_at:
          type:
            - string
            - 'null'
          format: date-time
          description: Date and time for end of the tenancy period.
        created_at:
          type: string
          format: date-time
          description: Creation date and time for the tenancy.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time for the tenancy.
        subscription:
          $ref: '#/components/schemas/Subscription'
          description: >-
            Subscription associated with the tenancy. **Expandable** (shows only
            ID when not expanded).
        contact:
          $ref: '#/components/schemas/Contact'
          description: >-
            Contact associated with the tenancy. **Expandable** (shows only ID
            when not expanded).
        site:
          $ref: '#/components/schemas/Site'
          description: >-
            Site associated with the tenancy. **Expandable** (shows only ID when
            not expanded).
        order:
          description: >-
            Order associated with the tenancy. **Expandable** (shows only ID
            when not expanded).
          oneOf:
            - $ref: '#/components/schemas/Order'
            - type: 'null'
        unit_allocations:
          type:
            - array
            - 'null'
          description: >-
            Allocated units associated with the tenancy. **Expandable** (shows
            only ID when not expanded).
          items:
            $ref: '#/components/schemas/UnitAllocation'
    SubscriptionLineItem:
      type: object
      description: Subscription Line Item
      additionalProperties: false
      properties:
        item:
          description: >-
            Item associated with the subscription line item. **Expandable**
            (shows only ID when not expanded).
          additionalProperties: true
          type: object
          properties:
            id:
              type: string
        price:
          $ref: '#/components/schemas/Money'
          description: Price of the subscription line item per unit.
        quantity:
          type: integer
          description: Quantity of the item in the subscription line item.
        type:
          type: string
          enum:
            - protection
            - unit_type
            - custom_product
        created_at:
          type: string
          format: date-time
          description: Creation date and time of the subscription line item.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time of the subscription line item.
    InvoiceLineItem:
      type: object
      description: Invoice Line Item
      additionalProperties: false
      properties:
        description:
          type: string
          description: Name of the line item product.
        type:
          type:
            - string
            - 'null'
          enum:
            - unit
            - protection
            - recurring_product
            - one_time_product
            - null
          description: Type of the line item product.
        accounting_code:
          type: string
          description: Unique account identifier.
        quantity:
          type: integer
          description: Quantity of product.
        proration:
          type: boolean
          description: Time based distribution.
        total:
          $ref: '#/components/schemas/Money'
          description: Gross cost of line item.
        price:
          $ref: '#/components/schemas/Money'
          description: Per-item cost of line item.
        tax:
          $ref: '#/components/schemas/Money'
          description: Total cost of taxes.
        total_excluding_tax:
          $ref: '#/components/schemas/Money'
          description: Total cost of line item before applying taxes.
        discount_total:
          $ref: '#/components/schemas/Money'
          description: Discount towards line item.
    Metadata:
      type: object
      description: >-
        Set of key-value pairs for storing additional information. [Learn more
        about metadata.](https://docs.stora.co/2025-09/guides/metadata)
      additionalProperties:
        type: string
    SiteAccessHoursDay:
      type: object
      description: Access Hours Day
      additionalProperties: false
      properties:
        status:
          enum:
            - set_hours
            - appointment
            - closed
          type: string
        open:
          type:
            - string
            - 'null'
          description: >-
            Opening time in HH:MM format. Has `null` for `appointment` or
            `closed` status.
        close:
          type:
            - string
            - 'null'
          description: >-
            Closing time in HH:MM format. Has `null` for `appointment` or
            `closed` status.
    ContractTemplate:
      type: object
      description: Contract Template
      additionalProperties: false
      properties:
        id:
          type: string
          description: Unique identifier for the contract template.
        name:
          type: string
          description: Name of the contract template.
        created_at:
          type: string
          format: date-time
          description: Creation date and time of the contract template.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time of the contract template.
    Coupon:
      oneOf:
        - $ref: '#/components/schemas/CouponPercentage'
        - $ref: '#/components/schemas/CouponAmount'
        - description: ID-only reference (unexpanded)
          type: object
          additionalProperties: false
          properties:
            id:
              type: string
              pattern: ^cpn_
    OrderLineItem:
      type: object
      description: Order Line Item
      additionalProperties: false
      properties:
        id:
          type: string
          description: Unique identifier for the order line item.
        item:
          description: >-
            Item associated with the line item. Can be a Unit type, Protection
            level, or Product. **Expandable** (shows only ID when not expanded).
          oneOf:
            - $ref: '#/components/schemas/UnitType'
            - $ref: '#/components/schemas/ProtectionLevel'
            - $ref: '#/components/schemas/Product'
            - type: 'null'
        price:
          $ref: '#/components/schemas/Money'
          description: Per-item cost of line item.
        quantity:
          type: integer
          description: Quantity of the item in the order line item.
        type:
          type: string
          enum:
            - unit_type
            - protection
            - product
            - security_deposit
        created_at:
          type: string
          format: date-time
          description: Creation date and time of the order line item.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time of the order line item.
        total:
          $ref: '#/components/schemas/Money'
          description: Gross cost of line item.
        tax:
          $ref: '#/components/schemas/Money'
          description: Total cost of taxes.
        total_excluding_tax:
          $ref: '#/components/schemas/Money'
          description: Total cost of line item before applying taxes.
        discount_total:
          $ref: '#/components/schemas/Money'
          description: Discount towards line item.
    UnitAllocation:
      type: object
      description: Unit Allocation
      additionalProperties: false
      properties:
        id:
          type: string
          description: Unique identifier for the unit allocation.
          pattern: ^alloc_
        created_at:
          type: string
          format: date-time
          description: Creation date and time.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time.
        reserved_at:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Date and time when the unit was reserved for the customer. A
            reserved unit is held for the customer but they do not yet have
            access. This field is null if the unit was allocated directly
            without a reservation phase.
        granted_access_at:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Date and time when the customer was granted access to the unit
            (move-in date). This marks when the customer can physically access
            their unit. This field is null if access has not yet been granted.
        unit:
          $ref: '#/components/schemas/Unit'
          description: >-
            Unit associated with this allocation. **Expandable** (shows only ID
            when not expanded).
        tenancy:
          $ref: '#/components/schemas/Tenancy'
          description: >-
            Tenancy associated with this allocation. **Expandable** (shows only
            ID when not expanded).
    CouponPercentage:
      type: object
      description: Coupon with percentage discount
      additionalProperties: false
      required:
        - type
      properties:
        id:
          type: string
          pattern: ^cpn_
          description: Unique identifier for the coupon.
        type:
          const: percentage
          description: Type of the coupon, which is `percentage` in this case.
        percent:
          type: number
          description: >-
            Percentage discount provided by the coupon. E.g. 20 for a 20%
            discount.
        name:
          type: string
          description: Name of the coupon.
        code:
          type:
            - string
            - 'null'
          description: Unique code for the coupon for non-public coupons.
        title:
          type:
            - string
            - 'null'
          description: Title of the coupon.
        public:
          type: boolean
          description: >-
            Indicates if the coupon is publicly available for any contact to
            use. When set to `true`, the `code` field is not used.
        max_redemptions:
          type:
            - integer
            - 'null'
          description: Maximum number of times the coupon can be redeemed.
        duration:
          enum:
            - once
            - forever
            - repeating
          description: Duration of the coupon.
          type: string
        billing_period:
          type:
            - string
            - 'null'
          enum:
            - monthly
            - weekly
            - every_four_weeks
            - every_three_months
            - every_six_months
            - yearly
            - one_time
            - null
          description: Used for `repeating` duration.
        months:
          type:
            - integer
            - 'null'
          description: >-
            Number of months the coupon is valid for, applicable for `repeating`
            duration.
        auto_apply_to:
          $ref: '#/components/schemas/CouponAutoApplyTo'
        created_at:
          type: string
          format: date-time
          description: Creation date and time of the coupon.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time of the coupon.
    CouponAmount:
      type: object
      description: Coupon with fixed amount discount
      additionalProperties: false
      required:
        - type
      properties:
        id:
          type: string
          pattern: ^cpn_
          description: Unique identifier for the coupon.
        type:
          const: amount
          description: Type of the coupon, which is `amount` in this case.
        amount:
          $ref: '#/components/schemas/Money'
          description: Amount deducted from the price when the coupon is applied.
        name:
          type: string
          description: Name of the coupon.
        code:
          type:
            - string
            - 'null'
          description: Unique code for the coupon for non-public coupons.
        title:
          type:
            - string
            - 'null'
          description: Title of the coupon.
        public:
          type: boolean
          description: >-
            Indicates if the coupon is publicly available for any contact to
            use. When set to `true`, the `code` field is not used.
        max_redemptions:
          type:
            - integer
            - 'null'
          description: Maximum number of times the coupon can be redeemed.
        duration:
          enum:
            - once
            - forever
            - repeating
          description: Duration of the coupon.
          type: string
        billing_period:
          type:
            - string
            - 'null'
          enum:
            - monthly
            - weekly
            - every_four_weeks
            - every_three_months
            - every_six_months
            - yearly
            - one_time
            - null
          description: Used for `repeating` duration.
        months:
          type:
            - integer
            - 'null'
          description: >-
            Number of months the coupon is valid for, applicable for `repeating`
            duration.
        auto_apply_to:
          $ref: '#/components/schemas/CouponAutoApplyTo'
        created_at:
          type: string
          format: date-time
          description: Creation date and time of the coupon.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time of the coupon.
    UnitType:
      type: object
      description: Unit Type
      additionalProperties: false
      properties:
        id:
          type: string
          pattern: ^utype_
          description: Unique identifier for the unit type.
        name:
          type: string
          description: Name of the unit type.
        status:
          enum:
            - bookable
            - hidden
            - lead_capture
          type: string
        slug:
          type: string
          description: >-
            URL-friendly identifier for the unit type, typically used in web
            addresses.
        size_description:
          type: string
          description: Description of the size of the unit type.
        selling_points:
          type: array
          items:
            type: string
          description: List of selling points for the unit type.
        stripe_product_id:
          type: string
          description: >-
            Stripe Product ID associated with the unit type, used for payment
            processing.
        require_insurance_coverage:
          type: boolean
          description: Indicates whether insurance coverage is required for this unit type.
        require_security_deposit:
          type: boolean
          description: Indicates whether a security deposit is required for this unit type.
        promotion:
          description: >-
            Promotional coupon associated with the unit type. **Expandable**
            (shows only ID when not expanded).
          oneOf:
            - $ref: '#/components/schemas/Coupon'
            - type: 'null'
        site:
          $ref: '#/components/schemas/Site'
          description: >-
            Site associated with the unit type. **Expandable** (shows only ID
            when not expanded).
        dynamic_pricing:
          type: boolean
          description: Indicates whether dynamic pricing is enabled for this unit type.
        live_prices:
          type: array
          description: >-
            Current source price used by storefront pricing. Returns the active
            dynamic price when one applies; otherwise returns the base
            storefront price. Promotions, discounts, and tax-exclusive variants
            are not applied.
          items:
            $ref: '#/components/schemas/Price'
        dimensions:
          type: object
          description: Dimensions of the unit type.
          properties:
            length:
              type: number
              description: Length of the unit in feet.
            width:
              type: number
              description: Width of the unit in feet.
            height:
              type: number
              description: Height of the unit in feet.
            measurement_unit:
              enum:
                - ft
                - m
              type: string
        security_deposit:
          description: Security deposit amount for the unit type.
          oneOf:
            - $ref: '#/components/schemas/Money'
            - type: 'null'
        images:
          type: object
          additionalProperties: false
          properties:
            default:
              type:
                - object
                - 'null'
              additionalProperties: false
              properties:
                original:
                  type: string
                  format: uri
                  description: Original unresized image.
                small:
                  type: string
                  format: uri
                  description: Resized to max 250x250px.
                medium:
                  type: string
                  format: uri
                  description: Resized to max 500x500px.
                large:
                  type: string
                  format: uri
                  description: Resized to max 1000x1000px.
        created_at:
          type: string
          format: date-time
          description: Creation date and time for the unit type.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time for the unit type.
        prices:
          type: array
          description: >-
            List of prices associated with the unit type, including different
            pricing options.
          items:
            $ref: '#/components/schemas/Price'
        _links:
          $ref: '#/components/schemas/Links'
    ProtectionLevel:
      type: object
      description: Protection Level
      additionalProperties: false
      properties:
        id:
          type: string
          pattern: ^plvl_
          description: Unique identifier for the protection level.
        stripe_product_id:
          type: string
          description: >-
            Stripe Product ID associated with the protection level, used for
            payment processing.
        cover_level:
          $ref: '#/components/schemas/Money'
          description: Monetary value representing the cover level of the protection.
        account_code:
          type:
            - string
            - 'null'
          description: Account code associated with the protection level.
        public:
          type: boolean
          description: Indicates whether the protection level is available for selection.
        prices:
          type: array
          items:
            $ref: '#/components/schemas/Price'
        site:
          description: >-
            Site associated with the protection level. Returns `null` for global
            protection levels. **Expandable** (shows only ID when not expanded).
          oneOf:
            - $ref: '#/components/schemas/Site'
            - type: 'null'
        created_at:
          type: string
          format: date-time
          description: Creation date and time of the protection level.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time of the protection level.
    Product:
      type: object
      description: Product
      additionalProperties: false
      properties:
        id:
          type: string
          pattern: ^prod_
          description: Unique identifier for the product.
        site:
          $ref: '#/components/schemas/Site'
          description: >-
            Site associated with the product. **Expandable** (shows only ID when
            not expanded).
        name:
          type: string
          description: Name of the product.
        sku:
          type:
            - string
            - 'null'
          description: Stock keeping unit (SKU) of the product.
        description:
          type: string
          description: Detailed description of the product.
        category:
          $ref: '#/components/schemas/ProductCategory'
          description: >-
            Category associated with the product. **Expandable** (shows only ID
            when not expanded).
        charge_type:
          enum:
            - one_time
            - recurring
          description: Type of charge for the product.
          type: string
        accounting_code:
          type:
            - string
            - 'null'
          description: Accounting code associated with the product, if any.
        prices:
          type: array
          items:
            $ref: '#/components/schemas/Price'
        images:
          type: object
          additionalProperties: false
          properties:
            default:
              type:
                - object
                - 'null'
              additionalProperties: false
              properties:
                original:
                  type: string
                  format: uri
                  description: Original unresized image.
                small:
                  type: string
                  format: uri
                  description: Resized to max 250x250px.
                medium:
                  type: string
                  format: uri
                  description: Resized to max 500x500px.
                large:
                  type: string
                  format: uri
                  description: Resized to max 1000x1000px.
        created_at:
          type: string
          format: date-time
          description: Creation date and time of the product.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time of the product.
    Unit:
      type: object
      description: Unit
      additionalProperties: false
      properties:
        id:
          type: string
          description: Unique identifier for the unit.
          pattern: ^unit_
        site:
          $ref: '#/components/schemas/Site'
          description: >-
            Site associated with the unit. **Expandable** (shows only ID when
            not expanded).
        unit_type:
          $ref: '#/components/schemas/UnitType'
          description: >-
            Unit type associated with the unit. **Expandable** (shows only ID
            when not expanded).
        reference_id:
          type: string
          description: Reference identifier for the unit.
        status:
          enum:
            - available
            - occupied
            - overlock
            - repossessed
            - reserved
            - unavailable
          description: Status of the unit.
          type: string
        unit_allocation:
          description: >-
            Current allocation for the unit. **Expandable** (shows only ID when
            not expanded).
          oneOf:
            - $ref: '#/components/schemas/UnitAllocation'
            - type: 'null'
        created_at:
          type: string
          format: date-time
          description: Creation date and time for the unit.
        updated_at:
          type: string
          format: date-time
          description: Last update date and time for the unit.
    CouponAutoApplyTo:
      type: object
      description: Defines how the coupon should be auto-applied when used on an order.
      additionalProperties: false
      properties:
        unit_types:
          type: boolean
          description: Whether the coupon applies to unit type line items.
        protections:
          type: boolean
          description: Whether the coupon applies to protection line items.
        products:
          type: boolean
          description: Whether the coupon applies to product line items.
        subscriptions:
          type: boolean
          description: Whether the coupon applies to the subscription.
    Price:
      type: object
      description: Price
      additionalProperties: false
      properties:
        price:
          $ref: '#/components/schemas/Money'
          description: Price for the specified billing period.
        billing_period:
          enum:
            - monthly
            - weekly
            - every_four_weeks
            - every_three_months
            - every_six_months
            - yearly
            - one_time
          description: Billing period for the price.
          type: string
        stripe_price_id:
          type: string
          description: >-
            Stripe Price ID associated with this price, used for payment
            processing.
    Links:
      type: object
      description: Links related to the resource.
      additionalProperties:
        type: object
        additionalProperties: false
        properties:
          href:
            type: string
            description: Relative path for API links, relative path for CURIE links.
          method:
            type: string
            description: Available only for API links. Other links use always `get`.
            enum:
              - get
              - post
              - patch
              - delete
          title:
            type: string
            description: Human-readable label for the link.
          reference:
            type:
              - string
              - 'null'
            description: >-
              OpenAPI reference for API links. Component schema for self links,
              path operation for action links.
    ProductCategory:
      type: object
      description: Product Category
      additionalProperties: false
      properties:
        id:
          type: string
          description: Unique identifier for the product category.
        name:
          type: string
          description: Name of the product category.
  securitySchemes:
    Bearer:
      description: Bearer Token necessary to use API
      type: http
      scheme: bearer
      bearerFormat: token
    OAuth2:
      type: oauth2
      description: OAuth 2 authentication
      flows:
        clientCredentials:
          tokenUrl: /oauth2/token
          scopes:
            public.access_token:read: Access Token (Read)
            public.application:read: Application (Read)
            public.contact:read: Contact (Read)
            public.contact:write: Contact (Write)
            public.contract:read: Contract (Read)
            public.contract_template:read: Contract Template (Read)
            public.coupon:read: Coupon (Read)
            public.credit_note:read: Credit Note (Read)
            public.deal:read: Deal (Read)
            public.deal:write: Deal (Write)
            public.deal_stage:read: Deal Stage (Read)
            public.identity_verification:read: Identity Verification (Read)
            public.invoice:read: Invoice (Read)
            public.note:read: Note (Read)
            public.note:write: Note (Write)
            public.opportunity:read: Opportunity (Read)
            public.order:read: Order (Read)
            public.order:write: Order (Write)
            public.price_adjustment:read: Price Adjustment (Read)
            public.price_adjustment:skip_notifications: Price Adjustment (Skip notifications)
            public.price_adjustment:write: Price Adjustment (Write)
            public.product:read: Product (Read)
            public.product:write: Product (Write)
            public.product_category:read: Product Category (Read)
            public.protection_level:read: Protection Level (Read)
            public.protection_level:write: Protection Level (Write)
            public.site:read: Site (Read)
            public.staff:read: Staff (Read)
            public.subscription:read: Subscription (Read)
            public.task:read: Task (Read)
            public.task:write: Task (Write)
            public.tenancy:read: Tenancy (Read)
            public.timeline_event:read: Timeline Event (Read)
            public.timeline_event:write: Timeline Event (Write)
            public.timeline_source:read: Timeline Source (Read)
            public.timeline_template:read: Timeline Template (Read)
            public.unit:read: Unit (Read)
            public.unit:write: Unit (Write)
            public.unit_allocation:read: Unit Allocation (Read)
            public.unit_type:read: Unit Type (Read)
            public.unit_type:write: Unit Type (Write)
            public.webhook_endpoint:read: Webhook Endpoint (Read)
            public.webhook_endpoint:write: Webhook Endpoint (Write)
        authorizationCode:
          authorizationUrl: https://app.stora.co/oauth2/authorize
          tokenUrl: /oauth2/token
          scopes:
            public.access_token:read: Access Token (Read)
            public.application:read: Application (Read)
            public.contact:read: Contact (Read)
            public.contact:write: Contact (Write)
            public.contract:read: Contract (Read)
            public.contract_template:read: Contract Template (Read)
            public.coupon:read: Coupon (Read)
            public.credit_note:read: Credit Note (Read)
            public.deal:read: Deal (Read)
            public.deal:write: Deal (Write)
            public.deal_stage:read: Deal Stage (Read)
            public.identity_verification:read: Identity Verification (Read)
            public.invoice:read: Invoice (Read)
            public.note:read: Note (Read)
            public.note:write: Note (Write)
            public.opportunity:read: Opportunity (Read)
            public.order:read: Order (Read)
            public.order:write: Order (Write)
            public.price_adjustment:read: Price Adjustment (Read)
            public.price_adjustment:skip_notifications: Price Adjustment (Skip notifications)
            public.price_adjustment:write: Price Adjustment (Write)
            public.product:read: Product (Read)
            public.product:write: Product (Write)
            public.product_category:read: Product Category (Read)
            public.protection_level:read: Protection Level (Read)
            public.protection_level:write: Protection Level (Write)
            public.site:read: Site (Read)
            public.staff:read: Staff (Read)
            public.subscription:read: Subscription (Read)
            public.task:read: Task (Read)
            public.task:write: Task (Write)
            public.tenancy:read: Tenancy (Read)
            public.timeline_event:read: Timeline Event (Read)
            public.timeline_event:write: Timeline Event (Write)
            public.timeline_source:read: Timeline Source (Read)
            public.timeline_template:read: Timeline Template (Read)
            public.unit:read: Unit (Read)
            public.unit:write: Unit (Write)
            public.unit_allocation:read: Unit Allocation (Read)
            public.unit_type:read: Unit Type (Read)
            public.unit_type:write: Unit Type (Write)
            public.webhook_endpoint:read: Webhook Endpoint (Read)
            public.webhook_endpoint:write: Webhook Endpoint (Write)

````