Schematic checkout API

The checkout API from Schematic — 7 operation(s) for checkout.

Operations 7

POST /checkout-internal Checkout internal #
POST /checkout-internal/data Get checkout data #
POST /checkout-internal/preview Preview checkout internal #
POST /manage-plan Manage plan #
POST /manage-plan/preview Preview manage plan #
POST /manage-plan/subscription/cancel Cancel subscription #
PUT /subscription/{subscription_id}/edit-trial-end Update customer subscription trial end #

Documentation

Specifications

SDKs

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/schematic-checkout-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

schematic-checkout-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Schematic accesstokens Checkout API
  version: '0.1'
  description: Schematic API
  x-rules-engine-schema-version: v97288f60
servers:
- url: https://api.schematichq.com
security:
- ApiKeyAuth: []
tags:
- name: checkout
paths:
  /checkout-internal:
    post:
      operationId: checkoutInternal
      summary: Checkout internal
      tags:
      - checkout
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeSubscriptionInternalRequestBody'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/CheckoutSubscription'
                  params:
                    type: object
                    description: Input parameters
                    title: CheckoutInternalParams
                required:
                - data
                - params
                title: CheckoutInternalResponse
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /checkout-internal/data:
    post:
      operationId: getCheckoutData
      summary: Get checkout data
      tags:
      - checkout
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckoutDataRequestBody'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/CheckoutDataResponseData'
                  params:
                    type: object
                    description: Input parameters
                    title: GetCheckoutDataParams
                required:
                - data
                - params
                title: GetCheckoutDataResponse
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /checkout-internal/preview:
    post:
      operationId: previewCheckoutInternal
      summary: Preview checkout internal
      tags:
      - checkout
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeSubscriptionInternalRequestBody'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/PreviewSubscriptionChangeResponseData'
                  params:
                    type: object
                    description: Input parameters
                    title: PreviewCheckoutInternalParams
                required:
                - data
                - params
                title: PreviewCheckoutInternalResponse
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /manage-plan:
    post:
      operationId: managePlan
      summary: Manage plan
      tags:
      - checkout
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManagePlanRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ManagePlanResponseResponseData'
                  params:
                    type: object
                    description: Input parameters
                    title: ManagePlanParams
                required:
                - data
                - params
                title: ManagePlanResponse
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /manage-plan/preview:
    post:
      operationId: previewManagePlan
      summary: Preview manage plan
      tags:
      - checkout
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManagePlanRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ManagePlanPreviewResponseResponseData'
                  params:
                    type: object
                    description: Input parameters
                    title: PreviewManagePlanParams
                required:
                - data
                - params
                title: PreviewManagePlanResponse
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /manage-plan/subscription/cancel:
    post:
      operationId: cancelSubscription
      summary: Cancel subscription
      tags:
      - checkout
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelSubscriptionRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/ManagePlanResponseResponseData'
                  params:
                    type: object
                    description: Input parameters
                    title: CancelSubscriptionParams
                required:
                - data
                - params
                title: CancelSubscriptionResponse
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /subscription/{subscription_id}/edit-trial-end:
    put:
      operationId: updateCustomerSubscriptionTrialEnd
      summary: Update customer subscription trial end
      tags:
      - checkout
      parameters:
      - name: subscription_id
        in: path
        description: subscription_id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTrialEndRequestBody'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/BillingSubscriptionView'
                  params:
                    type: object
                    description: Input parameters
                    title: UpdateCustomerSubscriptionTrialEndParams
                required:
                - data
                - params
                title: UpdateCustomerSubscriptionTrialEndResponse
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  schemas:
    CancelSubscriptionRequest:
      type: object
      properties:
        cancel_immediately:
          type:
          - boolean
          - 'null'
          description: If false, subscription cancels at period end. Defaults to true.
        company_id:
          type: string
        prorate:
          type:
          - boolean
          - 'null'
          description: If true and cancel_immediately is true, issue prorated credit. Defaults to true.
      required:
      - company_id
      title: CancelSubscriptionRequest
    BillingPriceView:
      type: object
      properties:
        billing_scheme:
          $ref: '#/components/schemas/BillingPriceScheme'
        created_at:
          type: string
          format: date-time
        currency:
          type: string
        id:
          type: string
        interval:
          $ref: '#/components/schemas/BillingProductPriceInterval'
        is_active:
          type: boolean
        meter_event_name:
          type:
          - string
          - 'null'
        meter_event_payload_key:
          type:
          - string
          - 'null'
        meter_id:
          type:
          - string
          - 'null'
        nickname:
          type:
          - string
          - 'null'
        package_size:
          type: integer
          format: int64
        price:
          type: integer
          format: int64
        price_decimal:
          type:
          - string
          - 'null'
        price_external_id:
          type: string
        price_id:
          type: string
        price_tier:
          type: array
          items:
            $ref: '#/components/schemas/BillingProductPriceTierResponseData'
          maxItems: 100
        product_external_id:
          type: string
        product_id:
          type: string
        product_name:
          type: string
        provider_type:
          $ref: '#/components/schemas/BillingProviderType'
        tiers_mode:
          allOf:
          - $ref: '#/components/schemas/BillingTiersMode'
        updated_at:
          type: string
          format: date-time
        usage_type:
          $ref: '#/components/schemas/BillingPriceUsageType'
      required:
      - id
      - billing_scheme
      - created_at
      - currency
      - interval
      - is_active
      - package_size
      - price
      - price_external_id
      - product_external_id
      - provider_type
      - updated_at
      - usage_type
      - price_id
      - product_id
      - product_name
      - price_tier
      title: BillingPriceView
    ConditionType:
      type: string
      enum:
      - base_plan
      - billing_product
      - company
      - credit
      - metric
      - plan
      - plan_version
      - trait
      - user
    FeatureEntitlement:
      type: object
      properties:
        allocation:
          type:
          - integer
          - 'null'
          description: If the company has a numeric entitlement for this feature, the allocated amount
          format: int64
        credit_id:
          type:
          - string
          - 'null'
          description: If the company has a credit-based entitlement for this feature, the ID of the credit
        credit_remaining:
          type:
          - number
          - 'null'
          description: If the company has a credit-based entitlement for this feature, the remaining credit amount
        credit_total:
          type:
          - number
          - 'null'
          description: If the company has a credit-based entitlement for this feature, the total credit amount
        credit_used:
          type:
          - number
          - 'null'
          description: If the company has a credit-based entitlement for this feature, the amount of credit used
        event_name:
          type:
          - string
          - 'null'
          description: If the feature is event-based, the name of the event tracked for usage
        feature_id:
          type: string
          description: The ID of the feature
        feature_key:
          type: string
          description: The key of the flag associated with the feature
        metric_period:
          allOf:
          - $ref: '#/components/schemas/MetricPeriod'
          description: For event-based feature entitlements, the period over which usage is tracked
        metric_reset_at:
          type:
          - string
          - 'null'
          description: For event-based feature entitlements, when the usage period will reset
          format: date-time
        month_reset:
          allOf:
          - $ref: '#/components/schemas/MetricPeriodMonthReset'
          description: For event-based feature entitlements that have a monthly period, whether that monthly reset is based on the calendar month or a billing cycle
        soft_limit:
          type:
          - integer
          - 'null'
          description: For usage-based pricing, the soft limit for overage charges or the next tier boundary
          format: int64
        usage:
          type:
          - integer
          - 'null'
          description: If the company has a numeric entitlement for this feature, the current usage amount
          format: int64
        value_type:
          allOf:
          - $ref: '#/components/schemas/EntitlementValueType'
          description: The type of the entitlement value
      required:
      - feature_id
      - feature_key
      - value_type
      title: FeatureEntitlement
    PlanResponseData:
      type: object
      properties:
        audience_type:
          type:
          - string
          - 'null'
          deprecated: true
        company_id:
          type:
          - string
          - 'null'
        copied_from_plan_id:
          type:
          - string
          - 'null'
        created_at:
          type: string
          format: date-time
        description:
          type: string
        icon:
          $ref: '#/components/schemas/PlanIcon'
        id:
          type: string
        name:
          type: string
        plan_type:
          $ref: '#/components/schemas/PlanType'
        updated_at:
          type: string
          format: date-time
      required:
      - created_at
      - description
      - icon
      - id
      - name
      - plan_type
      - updated_at
      title: PlanResponseData
    Rule:
      type: object
      properties:
        account_id:
          type: string
        condition_groups:
          type: array
          items:
            $ref: '#/components/schemas/ConditionGroup'
          maxItems: 1000
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/Condition'
          maxItems: 1000
        environment_id:
          type: string
        flag_id:
          type:
          - string
          - 'null'
        id:
          type: string
        name:
          type: string
        priority:
          type: integer
          format: int64
        rule_type:
          $ref: '#/components/schemas/RuleType'
        value:
          type: boolean
      required:
      - id
      - account_id
      - environment_id
      - rule_type
      - name
      - priority
      - conditions
      - condition_groups
      - value
      title: Rule
    MetricPeriodMonthReset:
      type: string
      enum:
      - billing_cycle
      - first_of_month
    ManagePlanRequest:
      type: object
      properties:
        add_on_selections:
          type: array
          items:
            $ref: '#/components/schemas/PlanSelection'
          maxItems: 100
        base_plan_id:
          type:
          - string
          - 'null'
        base_plan_price_id:
          type:
          - string
          - 'null'
        base_plan_version_id:
          type:
          - string
          - 'null'
        cancel_immediately:
          type:
          - boolean
          - 'null'
          description: If false, subscription cancels at period end. Only applies when removing all plans. Defaults to true.
        company_id:
          type: string
        coupon_external_id:
          type:
          - string
          - 'null'
        credit_bundles:
          type: array
          items:
            $ref: '#/components/schemas/UpdateCreditBundleRequestBody'
          maxItems: 100
        pay_in_advance_entitlements:
          type: array
          items:
            $ref: '#/components/schemas/UpdatePayInAdvanceRequestBody'
          maxItems: 100
        payment_method_external_id:
          type:
          - string
          - 'null'
          maxLength: 255
        promo_code:
          type:
          - string
          - 'null'
        prorate:
          type:
          - boolean
          - 'null'
          description: If true and cancel_immediately is true, issue prorated credit. Only applies when removing all plans. Defaults to true.
        trial_end:
          type:
          - string
          - 'null'
          format: date-time
      required:
      - add_on_selections
      - company_id
      - credit_bundles
      - pay_in_advance_entitlements
      title: ManagePlanRequest
    BillingProductForSubscriptionResponseData:
      type: object
      properties:
        billing_scheme:
          $ref: '#/components/schemas/BillingPriceScheme'
        billing_threshold:
          type:
          - integer
          - 'null'
          format: int64
        created_at:
          type: string
          format: date-time
        currency:
          type: string
        environment_id:
          type: string
        external_id:
          type: string
        id:
          type: string
        interval:
          type: string
        meter_id:
          type:
          - string
          - 'null'
        name:
          type: string
        package_size:
          type: integer
          format: int64
        price:
          type: integer
          format: int64
        price_decimal:
          type:
          - string
          - 'null'
        price_external_id:
          type: string
        price_id:
          type: string
        price_tier:
          type: array
          items:
            $ref: '#/components/schemas/BillingProductPriceTierResponseData'
          maxItems: 100
        provider_type:
          $ref: '#/components/schemas/BillingProviderType'
        quantity:
          type: number
        subscription_id:
          type: string
        subscription_item_external_id:
          type:
          - string
          - 'null'
        updated_at:
          type: string
          format: date-time
        usage_type:
          $ref: '#/components/schemas/BillingPriceUsageType'
      required:
      - id
      - created_at
      - currency
      - environment_id
      - external_id
      - interval
      - name
      - package_size
      - price
      - price_external_id
      - price_id
      - price_tier
      - provider_type
      - quantity
      - billing_scheme
      - subscription_id
      - updated_at
      - usage_type
      title: BillingProductForSubscriptionResponseData
    BillingCreditView:
      type: object
      properties:
        account_id:
          type: string
        burn_strategy:
          $ref: '#/components/schemas/BillingCreditBurnStrategy'
        cost_editable:
          type: boolean
        created_at:
          type: string
          format: date-time
        currency_prices:
          type: array
          items:
            $ref: '#/components/schemas/CreditCurrencyPrice'
          maxItems: 1000
        default_expiry_unit:
          $ref: '#/components/schemas/BillingCreditExpiryUnit'
        default_expiry_unit_count:
          type:
          - integer
          - 'null'
          format: int64
        default_rollover_policy:
          $ref: '#/components/schemas/BillingCreditRolloverPolicy'
        description:
          type: string
        environment_id:
          type: string
        icon:
          type:
          - string
          - 'null'
        id:
          type: string
        name:
          type: string
        plural_name:
          type:
          - string
          - 'null'
        price:
          $ref: '#/components/schemas/BillingPriceView'
        price_per_unit:
          type:
          - integer
          - 'null'
          format: int64
        price_per_unit_decimal:
          type:
          - string
          - 'null'
        product:
          $ref: '#/components/schemas/BillingProductResponseData'
        singular_name:
          type:
          - string
          - 'null'
        updated_at:
          type: string
          format: date-time
      required:
      - id
      - account_id
      - environment_id
      - name
      - description
      - default_expiry_unit
      - default_rollover_policy
      - burn_strategy
      - cost_editable
      - currency_prices
      - created_at
      - updated_at
      title: BillingCreditView
    EntityType:
      type: string
      enum:
      - company
      - user
    BillingPriceUsageType:
      type: string
      enum:
      - licensed
      - metered
    BillingCreditExpiryType:
      type: string
      enum:
      - duration
      - end_of_billing_period
      - end_of_next_billing_period
      - end_of_trial
      - no_expiry
    EntityKeyDefinitionResponseData:
      type: object
      properties:
        created_at:
          type: string
          format: date-time
        entity_type:
          $ref: '#/components/schemas/EntityType'
        id:
          type: string
        key:
          type: string
        updated_at:
          type: string
          format: date-time
      required:
      - id
      - entity_type
      - key
      - created_at
      - updated_at
      title: EntityKeyDefinitionResponseData
    UpdateCreditBundleRequestBody:
      type: object
      properties:
        bundle_id:
          type: string
        quantity:
          type: integer
          format: int64
          minimum: 1
      required:
      - bundle_id
      - quantity
      title: UpdateCreditBundleRequestBody
    CustomPlanBillingStatus:
      type: string
      enum:
      - active
      - expired
      - paid
      - pending
    RuleConditionGroupDetailResponseData:
      type: object
      properties:
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/RuleConditionDetailResponseData'
          maxItems: 1000
        created_at:
          type: string
          format: date-time
        environment_id:
          type: string
        flag_id:
          type:
          - string
          - 'null'
        id:
          type: string
        rule_id:
          type: string
        updated_at:
          type: string
          format: date-time
      required:
      - id
      - environment_id
      - rule_id
      - created_at
      - updated_at
      - conditions
      title: RuleConditionGroupDetailResponseData
    PlanSelection:
      type: object
      properties:
        plan_id:
          type: string
        price_id:
          type:
          - string
          - 'null'
        version_id:
          type:
          - string
          - 'null'
      required:
      - plan_id
      title: PlanSelection
    BillingCreditResponseData:
      type: object
      properties:
        burn_strategy:
          $ref: '#/components/schemas/BillingCreditBurnStrategy'
        cost_editable:
          type: boolean
        created_at:
          type: string
          format: date-time
        currency_prices:
          type: array
          items:
            $ref: '#/components/schemas/CreditCurrencyPriceResponseData'
          maxItems: 256
        default_expiry_unit:
          $ref: '#/components/schemas/BillingCreditExpiryUnit'
        default_expiry_unit_count:
          type:
          - integer
          - 'null'
          format: int64
        default_rollover_policy:
          $ref: '#/components/schemas/BillingCreditRolloverPolicy'
        description:
          type: string
        icon:
          type:
          - string
          - 'null'
        id:
          type: string
        name:
          type: string
        plural_name:
          type:
          - string
          - 'null'
        price:
          $ref: '#/components/schemas/BillingPriceResponseData'
        product:
          $ref: '#/components/schemas/BillingProductResponseData'
        singular_name:
          type:
          - string
          - 'null'
        updated_at:
          type: string
          format: date-time
      required:
      - id
      - name
      - description
      - default_expiry_unit
      - default_rollover_policy
      - burn_strategy
      - cost_editable
      - currency_prices
      - created_at
      - updated_at
      title: BillingCreditResponseData
    PreviewObject:
      type: object
      properties:
        description:
          type:
          - string
          - 'null'
        id:
          type: string
        image_url:
          type:
          - string
          - 'null'
        name:
          type: string
      required:
      - id
      - name
      title: PreviewObject
    FlagInPlanResponseData:
      type: object
      properties:
        created_at:
          type: string
          format: date-time
        default_value:
          type: boolean
        description:
          type: string
        feature:
          $ref: '#/components/schemas/FeatureResponseData'
        feature_id:
          type:
          - string
          - 'null'
        flag_type:
          $ref: '#/components/schemas/FlagType'
        id:
          type: string
        key:
          type: string
        last_checked_at:
          type:
          - string
          - 'null'
          format: date-time
        maintainer_account_member_id:
          type:
          - string
          - 'null'
        name:
          type: string
        rules:
          type: array
          items:
            $ref: '#/components/schemas/RuleDetailResponseData'
          maxItems: 1000
        updated_at:
          type: string
          format: date-time
      required:
      - created_at
      - default_value
      - description
      - flag_type
      - id
      - key
      - name
      - updated_at
      - rules
      title: FlagInPlanResponseData
    FeatureResponseData:
      type: object
      properties:
        created_at:
          type: string
          format: date-time
        description:
          type: string
        event_subtype:
          type:
          - string
          - 'null'
        feature_type:
          $ref: '#/components/schemas/FeatureType'
        icon:
          type: string
        id:
          type: string
        lifecycle_phase:
          allOf:
          - $ref: '#/components/schemas/FeatureLifecyclePhase'
        maintainer_account_member_id:
          type:
          - string
          - 'null'
        name:
          type: string
        plural_name:
          type:
          - string
          - 'null'
        singular_name:
          type:
          - string
          - 'null'
        trait_id:
          type:
          - string
          - 'null'
        updated_at:
          type: string
          format: date-time
      required:
      - id
      - name
      - description
      - feature_type
      - icon
      - created_at
      - updated_at
      title: FeatureResponseData
    GenericPreviewObject:
      type: object
      properties:
        description:
          type:
          - string
          - 'null'
        id:
          type: string
        image_url:
          type:
          - string
          - 'null'
        name:
          type: string
      required:
      - id
      - name
      title: GenericPreviewObject
    PreviewSubscriptionChangeResponseData:
      type: object
      properties:
        amount_off:
          type: integer
          format: int64
          deprecated: true
        due_now:
          type: integer
          format: int64
          deprecated: true
        finance:
          $ref: '#/components/schemas/PreviewSubscriptionFinanceResponseData'
        is_scheduled_downgrade:
          type: boolean
        new_charges:
          type: integer
          format: int64
          deprecated: true
        payment_method_required:
          type: boolean
        percent_off:
          type: number
          deprecated: true
        period_start:
          type: string
          format: date-time
          deprecated: true
        promo_code_applied:
          type: boolean
          deprecated: true
        proration:
          type: integer
          format: int64
          deprecated: true
        scheduled_change_time:
          type:
          - string
          - 'null'
          format: date-time
        trial_end:
          type:
          - string
          - 'null'
          format: date-time
          deprecated: true
        usage_violations:
          type: array
          items:
            $ref: '#/components/schemas/FeatureUsageResponseData'
          maxItems: 1000
      required:
      - due_now
      - new_charges
      - proration
      - period_start
      - promo_code_applied
      - percent_off
      - amount_off
      - is_scheduled_downgrade
      - payment_method_required
      - usage_violations
      title: PreviewSubscriptionChangeResponseData
    BillingPlanCreditGrantResetStart:
      type: string
      enum:
      - billing_period
      - first_of_month
    BillingCreditBurnStrategy:
      type: string
      enum:
      - expiration_priority
      - first_in_first_out
      - last_in_first_out
      - plan_first_then_credit_bundles_first_in_first_out
    BillingCreditRolloverPolicy:
      type: string
      enum:
      - expire
      - none
      - rollover
    UpdateTrialEndRequestBody:
      type: object
      properties:
        trial_end:
          type:
          - string
          - 'null'
          format: date-time
      title: UpdateTrialEndRequestBody
    FeatureLifecyclePhase:
      type: string
      enum:
      - add_on
      - alpha
      - beta
      - deprecated
      - ga
      - inactive
      - in_plan
      - internal_testing
      - legacy
    EntitlementType:
      type: string
      enum:
      - company_override
      - plan_entitlement
      - unknown
    CreditBundleCurrencyPriceResponseData:
      type: object
      properties:
        currency:
          type: string
        price:
          $ref: '#/components/schemas/BillingPriceResponseData'
      required:
      - currency
      title: CreditBundleCurrencyPriceResponseData
    BillingCreditGrantReason:
      type: string
      enum:
      - adjustment
      - billing_credit_auto_topup
      - free
      - plan
      - purchased
    PlanEntitlementResponseData:
      type: object
      properties:
        billing_linked_resource:
          $ref: '#/components/schemas/BillingLinkedResourceResponseData'
        billing_threshold:
          type:
          - integer
          - 'null'
          format: int64
        consumption_rate:
          type:
          - number
          - 'null'
        created_at:
          type: string
          format: date-time
        currency_prices:
          type: array
          items:
            $ref: '#/components/schemas/EntitlementCurrencyPricesResponseData'
          maxItems: 1000
        environment_id:
          type: string
        feature:
          $ref: '#/components/schemas/FeatureResponseData'
        feature_id:
          type: string
        id:
          type: string
        metered_monthly_price:
          $ref: '#/components/schemas/BillingPriceView'
        metere

# --- truncated at 32 KB (98 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/schematic/refs/heads/main/openapi/schematic-checkout-api-openapi.yml