Elastic Path Offerings API

An offering is a combination of plans and pricing options; plans are combined with one or more pricing options to form an offering. For example, your company provides online streaming of movies, web-series, and music. Your customers can purchase these services through either a weekly or monthly pricing option. Offering plans can be either: - a subscription plan, created within an offering. - a Product Experience Manager product, see [**Create a product**](/docs/api/pxm/products/create-product) ### Offering Examples Offerings can have any combination of plans and pricing options. The pricing of an offering is determined by the pricing you have configured for your plans and pricing options. | Example | Plan | Pricing options | Offering | | --- | --- | --- | --- | | Single plan and pricing option | One plan with a plan price of $50 | A monthly pricing option with a 5% discount | An offering with a monthly pricing option for $47.50 a month | | Single plan with multiple pricing options | One plan with a plan price of $50 | A monthly pricing option with a 5% discountA yearly pricing option with a 10% discount | An offering with two pricing options: A monthly pricing option for $47.50 a monthA yearly pricing option for $45 a month | | Multiple plans and pricing option | Two plans: One plan with a plan price of $50.One plan with a plan price of $75. | A monthly pricing option with a 5% discount. | An offering with a monthly pricing option for $118.75 a month. | | Multiple plans with multiple pricing options | Two plans: One plan with a plan price of $50.One plan with a plan price of $75. | A monthly pricing option with a 5% discountA yearly pricing option with a 10% discount | An offering with two pricing options: A monthly pricing option for $118.75 a monthA yearly pricing option for $112.50 a month | ### Building an Offering When you are building an offering: - you can create new pricing options and plans. - you can modify existing plans and pricing options. For example, you can modify the plan price or any attributes of a pricing option included in the offering. Here's how you build an offering: When [**building your offerings**](/docs/api/subscriptions/build-offering) you must supply the plans and pricing options that a customer can choose. An offering can consist of many combinations of a plan or pricing options, depending on the plans and services you offer. Plans can either be subscription plans or Product Experience Manager products. To create a Product Experience Manager product, see [**Create a product**](/docs/api/pxm/products/create-product) Pricing options are the rules that govern your subscription, for example, any discount. - You can combine and reuse pricing options for as many plans as you want, making it quick and easy to create your subscription offerings. - An offering must have at least one pricing option. - Each plan must have the appropriate pricing option associated with it When a [**customer**](/docs/api/subscriptions/subscribers) chooses a plan and pricing option, a subscription is created. See [**Subscriptions**](/docs/api/subscriptions/subscriptions). Elastic Path Subscriptions manages the billing and recurring payments associated with the subscription. See [**Invoicing and Billing**](/docs/api/subscriptions/jobs). ### Editing Offerings After saving an offering, you can, at any time: - update an offering's details, for example, name or description. See [**Update an Offering**](/docs/api/subscriptions/update-offering). - update an existing plan in an offering. See [**Update a plan in an offering**](/docs/api/subscriptions/update-offering-plan) - add a new plan in an offering. See [**Create a plan inside an offering**](/docs/api/subscriptions/create-offering-plan) - remove plans. See [**Remove a plan from an offering**](/docs/api/subscriptions/delete-offering-plan). - update an existing pricing option in an offering. See [**Update a pricing option in an offering**](/docs/api/subscriptions/update-offering-pricing-option) - add a new pricing option to an offering. See [**Create a pricing option inside an offering**](/docs/api/subscriptions/create-offering-pricing-option). - remove pricing options. See [**Removing a pricing option from an offering**](/docs/api/subscriptions/delete-offering-plan). Any modifications that you make to offerings, and plans or pricing options in an offering, does not affect any active subscriptions. The changes take effect on all new subscriptions that are created.

OpenAPI Specification

elastic-path-offerings-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 25.1126.6886238
  x-version-timestamp: 2025-11-26 19:10:23+00:00
  title: Addresses Introduction Account Addresses Offerings API
  description: 'The Addresses API allows you to organize account addresses. Addresses are a sub-resource of `account` resources, an account can have multiple addresses, such as home, work, and neighbour.


    You can use an account address with either [client_credentials access token](/docs/api/authentication/create-an-access-token) or a combination of [implicit access token](/docs/api/authentication/create-an-access-token) and [Account Management authentication](/docs/api/accounts/post-v-2-account-members-tokens) token.

    '
  contact:
    name: Elastic Path
    url: https://www.elasticpath.com
    email: support@elasticpath.com
  license:
    url: https://elasticpath.dev
    name: MIT
servers:
- url: https://useast.api.elasticpath.com
  description: US East
- url: https://euwest.api.elasticpath.com
  description: EU West
security:
- BearerToken: []
tags:
- name: Offerings
  description: "An offering is a combination of plans and pricing options; plans are combined with one or more pricing options to form an offering. \n\nFor example, your company provides online\n streaming of movies, web-series, and music. Your customers can purchase these services through either a weekly or monthly pricing option.\n\nOffering plans can be either:\n\n- a subscription plan, created within an offering.\n- a Product Experience Manager product, see [**Create a product**](/docs/api/pxm/products/create-product)\n\n### Offering Examples\n\nOfferings can have any combination of plans and pricing options. The pricing of an offering is determined by the pricing you have configured for your plans and pricing options.\n\n| Example | Plan | Pricing options | Offering |\n| --- | --- | --- | --- |\n| Single plan and pricing option | One plan with a plan price of $50 | A monthly pricing option with a 5% discount | An offering with a monthly pricing option for $47.50 a month |\n| Single plan with multiple pricing options | One plan with a plan price of $50 | <ul><li>A monthly pricing option with a 5% discount</li><li>A yearly pricing option with a 10% discount</li></ul> | An offering with two pricing options: <ul><li>A monthly pricing option for $47.50 a month</li><li>A yearly pricing option for $45 a month</li></ul> |\n| Multiple plans and pricing option | Two plans: <ul><li>One plan with a plan price of $50.</li><li>One plan with a plan price of $75.</li></ul> | A monthly pricing option with a 5% discount. | An offering with a monthly pricing option for $118.75 a month. | \n| Multiple plans with multiple pricing options | Two plans: <ul><li>One plan with a plan price of $50.</li><li>One plan with a plan price of $75.</li></ul> | <ul><li>A monthly pricing option with a 5% discount</li><li>A yearly pricing option with a 10% discount</li></ul> | An offering with two pricing options: <ul><li>A monthly pricing option for $118.75 a month</li><li>A yearly pricing option for $112.50 a month</li></ul> | \n\n### Building an Offering\n\nWhen you are building an offering:\n\n- you can create new pricing options and plans.\n- you can modify existing plans and pricing options. For example, you can modify the plan price or any attributes of a pricing option included in the offering.\n\nHere's how you build an offering:\n\nWhen [**building your offerings**](/docs/api/subscriptions/build-offering) you must supply the plans and pricing options that a customer can choose. An offering can consist of many combinations of a plan or pricing options, depending on the plans and services you offer.\n\nPlans can either be subscription plans or Product Experience Manager products. To create a Product Experience Manager product, see [**Create a product**](/docs/api/pxm/products/create-product)\n\nPricing options are the rules that govern your subscription, for example, any discount. \n - You can combine and reuse pricing options for as many plans as you want, making it quick and easy to create your subscription offerings. \n - An offering must have at least one pricing option.\n - Each plan must have the appropriate pricing option associated with it\n\nWhen a [**customer**](/docs/api/subscriptions/subscribers) chooses a plan and pricing option, a subscription is created. See [**Subscriptions**](/docs/api/subscriptions/subscriptions). Elastic Path Subscriptions manages the billing and recurring payments associated with the subscription. See [**Invoicing and Billing**](/docs/api/subscriptions/jobs).\n\n### Editing Offerings\n\nAfter saving an offering, you can, at any time:\n\n- update an offering's details, for example, name or description. See [**Update an Offering**](/docs/api/subscriptions/update-offering).\n- update an existing plan in an offering. See [**Update a plan in an offering**](/docs/api/subscriptions/update-offering-plan)\n- add a new plan in an offering. See [**Create a plan inside an offering**](/docs/api/subscriptions/create-offering-plan)\n- remove plans. See [**Remove a plan from an offering**](/docs/api/subscriptions/delete-offering-plan).\n- update an existing pricing option in an offering. See [**Update a pricing option in an offering**](/docs/api/subscriptions/update-offering-pricing-option)\n- add a new pricing option to an offering. See [**Create a pricing option inside an offering**](/docs/api/subscriptions/create-offering-pricing-option).\n- remove pricing options. See [**Removing a pricing option from an offering**](/docs/api/subscriptions/delete-offering-plan).\n\nAny modifications that you make to offerings, and plans or pricing options in an offering, does not affect any active subscriptions. The changes take effect on all new subscriptions that are created.\n"
paths:
  /v2/subscriptions/offerings:
    parameters:
    - $ref: '#/components/parameters/Filter'
    post:
      tags:
      - Offerings
      summary: Create an offering
      operationId: CreateOffering
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - data
              properties:
                data:
                  $ref: '#/components/schemas/OfferingCreate'
      responses:
        '201':
          description: Success. The offering is created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Offering'
        '400':
          $ref: '#/components/responses/ValidationError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      tags:
      - Offerings
      summary: List offerings
      description: "Retrieves a list of all subscription offerings.\n\n### Filtering\n\nThis endpoint supports filtering. For the general syntax, see [**Filtering**](/guides/Getting-Started/filtering).\n\nThe following attributes and operators are supported.\n\n| Operator | Attribute | Description |\n| --- | --- | --- | \n| `eq` | `external_ref`, `plans.external_ref`, `proration_policy_id` | Equals. Checks if the values of two operands are equal. If they are, the condition is true. |\n| `in` | `external_ref`, `plans.external_ref`, `proration_policy_id` | In. Checks if the value is in the specified list. If it is, the condition is true. |\n"
      parameters:
      - $ref: '#/components/parameters/PageOffset'
      - $ref: '#/components/parameters/PageLimit'
      - $ref: '#/components/parameters/OfferingInclude'
      operationId: ListOfferings
      responses:
        '200':
          description: Success. A list of offerings is returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Offering'
                  included:
                    $ref: '#/components/schemas/OfferingIncludes'
                  links:
                    $ref: '#/components/schemas/Links'
        '400':
          $ref: '#/components/responses/ValidationError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v2/subscriptions/offerings/build:
    post:
      tags:
      - Offerings
      summary: Build an offering
      description: "An offering includes plans and pricing options; plans are combined with one or more pricing options to form an offering. An offering can include either:\n\n- subscription plans (created within an offering).\n- Product Experience Manager products. See [**create a product**](/docs/api/pxm/products/create-product).\n\nWhen you are building an offering:\n\n- you can create new pricing options and plans.\n- you can modify an existing plan and pricing options. For example, you can modify the plan price or any attributes of a pricing option included in the offering.\n\nHere's how you build an offering:\n\n1. Specify the plan to build with the offering. A plan can be:\n\n     - subscription plans. Specify the subscription plan attributes. \n     - Product Experience Manager products. Specify the Product Experience Manager product ID in `external_ref` in `PlanAttributes`. For the remaining plan attributes, you can specify their values to match the values of the existing Product Experience Manager product attributes. However, you can also specify different values, depending on your requirements.\n\n2. Specify the pricing options to build with the offering. Pricing options are the rules that govern your subscription, for example, any discount. You can combine and reuse pricing options for as many plans as you want, making it quick and easy to create your subscription offerings.\n  An offering must have at least one pricing option. \n"
      operationId: BuildOffering
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - data
              properties:
                data:
                  $ref: '#/components/schemas/BuildOffering'
      responses:
        '201':
          description: Success. The new subscription offering is created with the specified subscription plans and pricing options attached to the offering.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Offering'
        '400':
          $ref: '#/components/responses/ValidationError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v2/subscriptions/offerings/{offering_uuid}:
    parameters:
    - name: offering_uuid
      in: path
      description: The unique identifier of the offering.
      required: true
      schema:
        $ref: '#/components/schemas/UUID'
    get:
      parameters:
      - $ref: '#/components/parameters/OfferingInclude'
      tags:
      - Offerings
      summary: Get offering
      operationId: GetOffering
      responses:
        '200':
          description: Success. The details of the subscription offering are returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Offering'
                  included:
                    $ref: '#/components/schemas/OfferingIncludes'
        '400':
          $ref: '#/components/responses/ValidationError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      tags:
      - Offerings
      summary: Delete offering
      description: When a subscription is created, it creates a snapshot of the offering. This means you can delete an offering without affecting any active subscriptions.
      operationId: DeleteOffering
      responses:
        '204':
          description: Success. The subscription offering is removed.
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      tags:
      - Offerings
      summary: Update an offering
      description: 'After saving an offering, you can update an offering at any time. Updating an offering does not affect any active subscriptions. The changes take effect on all new subscriptions that are created. For fields that are optional, an existing value can be removed by specifying a value of null.

        '
      operationId: UpdateOffering
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - data
              properties:
                data:
                  $ref: '#/components/schemas/OfferingUpdate'
      responses:
        '200':
          description: Success. The details of the subscription offering are updated.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Offering'
        '400':
          $ref: '#/components/responses/ValidationError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '409':
          $ref: '#/components/responses/WriteConflictError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v2/subscriptions/offerings/{offering_uuid}/features/{feature_uuid}:
    parameters:
    - name: offering_uuid
      in: path
      description: The unique identifier of the offering.
      required: true
      schema:
        $ref: '#/components/schemas/UUID'
    - name: feature_uuid
      in: path
      description: The unique identifier of the feature.
      required: true
      schema:
        $ref: '#/components/schemas/UUID'
    get:
      summary: Get a feature in an offering
      operationId: GetOfferingFeature
      tags:
      - Offerings
      responses:
        '200':
          description: Success. The details of the feature are returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/OfferingFeature'
        '400':
          $ref: '#/components/responses/ValidationError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      summary: Updates a feature in an offering
      description: Use the unique identifier of the feature in the offering that you want to update. Any modifications that you make to the features in an offering, does not affect any active subscriptions. The changes take effect on all new subscriptions that are created.
      operationId: UpdateOfferingFeature
      tags:
      - Offerings
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - data
              properties:
                data:
                  $ref: '#/components/schemas/OfferingFeatureUpdate'
      responses:
        '200':
          description: Success. The feature details are updated on the offering.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Feature'
        '400':
          $ref: '#/components/responses/ValidationError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '409':
          $ref: '#/components/responses/WriteConflictError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      summary: Remove a feature from an offering
      description: "After saving an offering, you can remove features from it at any time.\n\n Removing a feature from an offering does not affect any existing active subscriptions. The changes take effect on all new subscriptions that are created.\n"
      operationId: DeleteOfferingFeature
      tags:
      - Offerings
      responses:
        '204':
          description: Success. The subscription feature is removed from the offering.
        '400':
          $ref: '#/components/responses/ValidationError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
  /v2/subscriptions/offerings/{offering_uuid}/features/attach:
    parameters:
    - name: offering_uuid
      in: path
      description: The unique identifier of the offering.
      required: true
      schema:
        $ref: '#/components/schemas/UUID'
    post:
      tags:
      - Offerings
      summary: Attach a feature
      description: 'After saving an offering, you can attach new features to it at any time.


        Adding new features does not affect any existing active subscriptions. The changes take effect on all new subscriptions that are created.

        '
      operationId: AttachOfferingFeature
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - data
              properties:
                data:
                  $ref: '#/components/schemas/OfferingFeatureAttach'
      responses:
        '200':
          description: Success. The subscription feature is attached with the offering.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/OfferingFeature'
        '400':
          $ref: '#/components/responses/ValidationError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v2/subscriptions/offerings/{offering_uuid}/pricing-options:
    parameters:
    - name: offering_uuid
      in: path
      description: The unique identifier of the offering.
      required: true
      schema:
        $ref: '#/components/schemas/UUID'
    get:
      tags:
      - Offerings
      summary: List an offering's pricing options
      parameters:
      - $ref: '#/components/parameters/PageOffset'
      - $ref: '#/components/parameters/PageLimit'
      operationId: ListOfferingPricingOptions
      responses:
        '200':
          description: Success. A list of pricing options attached with the offering is returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/OfferingPricingOption'
                  links:
                    $ref: '#/components/schemas/Links'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    post:
      tags:
      - Offerings
      summary: Create a pricing option inside an offering
      description: 'After saving an offering, you can add new pricing option to it at any time.

        '
      operationId: CreateOfferingPricingOption
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - data
              properties:
                data:
                  $ref: '#/components/schemas/OfferingPricingOptionCreate'
      responses:
        '201':
          description: Success. The pricing option is created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/OfferingPricingOption'
        '400':
          $ref: '#/components/responses/ValidationError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '409':
          $ref: '#/components/responses/WriteConflictError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v2/subscriptions/offerings/{offering_uuid}/pricing-options/{pricing_option_uuid}:
    parameters:
    - name: offering_uuid
      in: path
      description: The unique identifier of the offering.
      required: true
      schema:
        $ref: '#/components/schemas/UUID'
    - name: pricing_option_uuid
      in: path
      description: The unique identifier of the pricing option.
      required: true
      schema:
        $ref: '#/components/schemas/UUID'
    get:
      summary: Get a pricing option in an offering
      operationId: GetOfferingPricingOption
      tags:
      - Offerings
      responses:
        '200':
          description: Success. The details of the pricing option are returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/OfferingPricingOption'
        '400':
          $ref: '#/components/responses/ValidationError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      summary: Update a pricing option in an offering
      operationId: UpdateOfferingPricingOption
      tags:
      - Offerings
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - data
              properties:
                data:
                  $ref: '#/components/schemas/OfferingPricingOptionUpdate'
      responses:
        '200':
          description: Success. The pricing option details are updated on the offering.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/OfferingPricingOption'
        '400':
          $ref: '#/components/responses/ValidationError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '409':
          $ref: '#/components/responses/WriteConflictError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      tags:
      - Offerings
      summary: Remove a pricing option from an offering
      description: 'After saving an offering, you can remove pricing options from it at any time.


        Removing a pricing option from an offering does not affect any existing active subscriptions. The changes take effect on all new subscriptions that are created.

        '
      operationId: DeleteOfferingPricingOption
      responses:
        '204':
          description: Success. The subscription pricing option is no longer associated with the offering.
        '400':
          $ref: '#/components/responses/ValidationError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
  /v2/subscriptions/offerings/{offering_uuid}/features:
    parameters:
    - name: offering_uuid
      in: path
      description: The unique identifier of the offering.
      required: true
      schema:
        $ref: '#/components/schemas/UUID'
    get:
      tags:
      - Offerings
      summary: List an offering's features
      parameters:
      - $ref: '#/components/parameters/PageOffset'
      - $ref: '#/components/parameters/PageLimit'
      operationId: ListOfferingFeatures
      responses:
        '200':
          description: Success. A list of subscription features attached to the offering is returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/OfferingFeature'
                  links:
                    $ref: '#/components/schemas/Links'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    post:
      tags:
      - Offerings
      summary: Create a feature directly inside an offering
      description: 'After saving an offering, you can add new features to it at any time.

        '
      operationId: CreateOfferingFeature
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - data
              properties:
                data:
                  $ref: '#/components/schemas/OfferingFeatureCreate'
      responses:
        '201':
          description: Success. The feature is created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/OfferingFeature'
        '400':
          $ref: '#/components/responses/ValidationError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '409':
          $ref: '#/components/responses/WriteConflictError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v2/subscriptions/offerings/{offering_uuid}/plans:
    parameters:
    - name: offering_uuid
      in: path
      description: The unique identifier of the offering.
      required: true
      schema:
        $ref: '#/components/schemas/UUID'
    get:
      tags:
      - Offerings
      summary: List an offering's plans
      parameters:
      - $ref: '#/components/parameters/PageOffset'
      - $ref: '#/components/parameters/PageLimit'
      operationId: ListOfferingPlans
      responses:
        '200':
          description: Success. A list of subscription plans attached to the offering is returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/OfferingPlan'
                  links:
                    $ref: '#/components/schemas/Links'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    post:
      tags:
      - Offerings
      summary: Create a plan inside an offering
      description: 'After saving an offering, you can add new plans to it at any time.

        '
      operationId: CreateOfferingPlan
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - data
              properties:
                data:
                  $ref: '#/components/schemas/OfferingPlanCreate'
      responses:
        '201':
          description: Success. The plan is created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/OfferingPlan'
        '400':
          $ref: '#/components/responses/ValidationError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '409':
          $ref: '#/components/responses/WriteConflictError'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v2/subscriptions/offerings/{offering_uuid}/plans/{plan_uuid}:
    parameters:
    - name: offering_uuid
      in: path
      description: The unique identifier of the offering.
      required: true
      schema:
        $ref: '#/components/schemas/UUID'
    - name: plan_uuid
      in: path
      description: The unique identifier of the plan.
      required: true
      schema:
        $ref: '#/components/schemas/UUID'
    get:
      summary: Get a plan in an offering
      operationId: GetOfferingPlan
      tags:
      - Offerings
      responses:
        '200':
          description: Success. The details of the plan are returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/OfferingPlan'
        '400':
          $ref: '#/components/responses/ValidationError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      summary: Update a plan in an offering
      description: Use the unique identifier of the plan in the offering that you want to update. Any modifications that you make to the plans in an offering, does not affect any active subscriptions. The changes take effect on all new subscriptions that are created.
      operationId: UpdateOfferingPlan
      tags:
      - Offerings
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - data
              properties:
                data:
                  $ref: '#/components/schemas/OfferingPlanUpdate'
      responses:
        '200':
          description: Success. The plan details are updated on the offering.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/OfferingPlan'
        '400':
          $ref: '#/components/responses/ValidationError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '409':
          $ref: '#/components/responses/WriteConflictError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      summary: Remove a plan from an offering
      description: "After saving an offering, you can remove plans from it at any time.\n\n Removing a plan from an offering does not affect any existing active subscriptions. The changes take effect on all new subscriptions that are created.\n"
      operationId: DeleteOfferingPlan
      tags:
      - Offerings
      responses:
        '204':
          description: Success. The subscription plan is removed from the offering.
        '400':
          $ref: '#/components/responses/ValidationError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
  /v2/subscriptions/offerings/{offering_uuid}/plans/{plan_uuid}/relationships/pricing_options:
    parameters:
    - name: offering_uuid
      in: path
      description: The unique identifier of the offering.
      required: true
      schema:
        $ref: '#/components/schemas/UUID'
    - name: plan_uuid
      in: path
      description: The unique identifier of the plan.
      required: true
      schema:
        $ref: '#/components/schemas/UUID'
    get:
      summary: List the pricing options available to a plan in an offering
      operationId: ListOfferingPlanPricingOptions
      tags:
      - Offerings
      responses:
        '200':
          description: Success. The pricing option relationships are returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/RelationshipData'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    post:
      summary: Adds an offering's pricing options to the plan
      description: Use the unique identifier of the pricing in the offering that you want to update. Any modifications that you make to the plans in an offering, does not affect any active subscriptions. The changes take

# --- truncated at 32 KB (83 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/elastic-path/refs/heads/main/openapi/elastic-path-offerings-api-openapi.yml