Paid products API

The products API from Paid — 5 operation(s) for products.

OpenAPI Specification

paid-products-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: API Reference agents products API
  version: 1.0.0
servers:
- url: https://api.agentpaid.io/api/v1
  description: Production
tags:
- name: products
paths:
  /products:
    get:
      operationId: list
      summary: List products
      tags:
      - products
      parameters:
      - name: Authorization
        in: header
        description: Bearer authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Product'
    post:
      operationId: create
      summary: Create product
      tags:
      - products
      parameters:
      - name: Authorization
        in: header
        description: Bearer authentication
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductCreate'
  /products/{productId}:
    get:
      operationId: get
      summary: Get product by ID
      tags:
      - products
      parameters:
      - name: productId
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: Bearer authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
    put:
      operationId: update
      summary: Update product
      tags:
      - products
      parameters:
      - name: productId
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: Bearer authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductUpdate'
    delete:
      operationId: delete
      summary: Delete product
      tags:
      - products
      parameters:
      - name: productId
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: Bearer authentication
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Success response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/products_delete_Response_204'
  /products/external/{externalId}:
    get:
      operationId: get-by-external-id
      summary: Get product by external ID
      tags:
      - products
      parameters:
      - name: externalId
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: Bearer authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
    put:
      operationId: update-by-external-id
      summary: Update product by external ID
      tags:
      - products
      parameters:
      - name: externalId
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: Bearer authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductUpdate'
    delete:
      operationId: delete-by-external-id
      summary: Delete product by external ID
      tags:
      - products
      parameters:
      - name: externalId
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: Bearer authentication
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Success response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/products_deleteByExternalId_Response_204'
  /products/:
    get:
      operationId: list-products
      summary: List products
      description: Get a list of products for the organization
      tags:
      - products
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 10
      - name: offset
        in: query
        required: false
        schema:
          type: integer
      - name: name
        in: query
        description: Search by product name (case-insensitive, matches anywhere in the name).
        required: false
        schema:
          type: string
      - name: active
        in: query
        description: 'Filter by the product''s active flag: true or false.'
        required: false
        schema:
          type: boolean
      - name: archived
        in: query
        description: 'Filter by archived state: true returns only archived products, false only non-archived. Omit to include both.'
        required: false
        schema:
          type: boolean
      - name: Authorization
        in: header
        description: API Key authentication using Bearer token
        required: true
        schema:
          type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductListResponse'
        '400':
          description: '400'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: '403'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: '500'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    post:
      operationId: create-product
      summary: Create a new product
      description: Creates a new product for the organization
      tags:
      - products
      parameters:
      - name: Authorization
        in: header
        description: API Key authentication using Bearer token
        required: true
        schema:
          type: string
      responses:
        '201':
          description: '201'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product_2'
        '400':
          description: '400'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: '403'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: '500'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProductRequest'
  /products/{id}:
    get:
      operationId: get-product-by-id
      summary: Get product
      description: Get a product by ID, including its product attributes with pricing details
      tags:
      - products
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: API Key authentication using Bearer token
        required: true
        schema:
          type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductDetail'
        '403':
          description: '403'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: '404'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: '500'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    put:
      operationId: update-product-by-id
      summary: Update product
      description: Update a product by ID. Optionally upsert product attributes with pricing.
      tags:
      - products
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: API Key authentication using Bearer token
        required: true
        schema:
          type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductDetail'
        '400':
          description: '400'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: '403'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: '404'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: '500'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProductRequest'
components:
  schemas:
    ProductPricingInputDiscriminatorMappingSeatBasedGraduatedBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Advance
      title: ProductPricingInputDiscriminatorMappingSeatBasedGraduatedBillingType
    ProductPricingInputDiscriminatorMappingUsageVolumeSignalType:
      type: string
      enum:
      - activity
      - outcome
      title: ProductPricingInputDiscriminatorMappingUsageVolumeSignalType
    ProductPricingInputDiscriminatorMappingSeatBasedVolumeBillingFrequency:
      type: string
      enum:
      - Monthly
      - Quarterly
      - Semi-Annually
      - Annual
      - Custom
      title: ProductPricingInputDiscriminatorMappingSeatBasedVolumeBillingFrequency
    PricingModelType:
      type: string
      enum:
      - PerUnit
      - VolumePricing
      - GraduatedPricing
      - PrepaidCredits
      title: PricingModelType
    ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsBillingFrequency:
      type: string
      enum:
      - Monthly
      - Quarterly
      - Semi-Annually
      - Annual
      - Custom
      title: ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsBillingFrequency
    ProductPricingInputDiscriminatorMappingUsageVolumeBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Arrears
      title: ProductPricingInputDiscriminatorMappingUsageVolumeBillingType
    ProductPricingInputDiscriminatorMappingUsageCostPlusBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Arrears
      title: ProductPricingInputDiscriminatorMappingUsageCostPlusBillingType
    ProductPricingInputDiscriminatorMappingUsagePerUnitSignalType:
      type: string
      enum:
      - activity
      - outcome
      title: ProductPricingInputDiscriminatorMappingUsagePerUnitSignalType
    ProductType:
      type: string
      enum:
      - agent
      - product
      - prepaidCreditBundle
      description: The type of product
      title: ProductType
    ProductPricingInput:
      oneOf:
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - RecurringPerUnit
            description: 'Discriminator value: RecurringPerUnit'
          billingFrequency:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingRecurringPerUnitBillingFrequency'
          billingFrequencyCustomMonths:
            type: integer
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingRecurringPerUnitBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductSimplePricePoint'
        required:
        - pricingType
        - billingFrequency
        - pricePoints
        description: RecurringPerUnit variant
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - RecurringGraduated
            description: 'Discriminator value: RecurringGraduated'
          billingFrequency:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingRecurringGraduatedBillingFrequency'
          billingFrequencyCustomMonths:
            type: integer
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingRecurringGraduatedBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductTieredPricePoint'
        required:
        - pricingType
        - billingFrequency
        - pricePoints
        description: RecurringGraduated variant
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - RecurringVolume
            description: 'Discriminator value: RecurringVolume'
          billingFrequency:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingRecurringVolumeBillingFrequency'
          billingFrequencyCustomMonths:
            type: integer
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingRecurringVolumeBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductTieredPricePoint'
        required:
        - pricingType
        - billingFrequency
        - pricePoints
        description: RecurringVolume variant
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - RecurringPercentOfTotal
            description: 'Discriminator value: RecurringPercentOfTotal'
          percentageValue:
            type: number
            format: double
          billingFrequency:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingRecurringPercentOfTotalBillingFrequency'
          billingFrequencyCustomMonths:
            type: integer
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingRecurringPercentOfTotalBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductSimplePricePoint'
        required:
        - pricingType
        - percentageValue
        - billingFrequency
        description: RecurringPercentOfTotal variant
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - UsagePerUnit
            description: 'Discriminator value: UsagePerUnit'
          eventName:
            type: string
          signalType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsagePerUnitSignalType'
          billingFrequency:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsagePerUnitBillingFrequency'
          billingFrequencyCustomMonths:
            type: integer
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsagePerUnitBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductSimplePricePoint'
        required:
        - pricingType
        - eventName
        - pricePoints
        description: UsagePerUnit variant
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - UsageGraduated
            description: 'Discriminator value: UsageGraduated'
          eventName:
            type: string
          signalType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageGraduatedSignalType'
          billingFrequency:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageGraduatedBillingFrequency'
          billingFrequencyCustomMonths:
            type: integer
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageGraduatedBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductTieredPricePoint'
        required:
        - pricingType
        - eventName
        - pricePoints
        description: UsageGraduated variant
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - UsageVolume
            description: 'Discriminator value: UsageVolume'
          eventName:
            type: string
          signalType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageVolumeSignalType'
          billingFrequency:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageVolumeBillingFrequency'
          billingFrequencyCustomMonths:
            type: integer
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageVolumeBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductTieredPricePoint'
        required:
        - pricingType
        - eventName
        - pricePoints
        description: UsageVolume variant
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - UsagePrepaidCredits
            description: 'Discriminator value: UsagePrepaidCredits'
          eventName:
            type: string
          signalType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsSignalType'
          creditsCurrencyId:
            type: string
          creditCost:
            type: number
            format: double
          unitValue:
            type: number
            format: double
          billingFrequency:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsBillingFrequency'
          billingFrequencyCustomMonths:
            type: integer
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductSimplePricePoint'
        required:
        - pricingType
        - eventName
        - creditsCurrencyId
        - creditCost
        description: UsagePrepaidCredits variant
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - UsageBracketedPrepaidCredits
            description: 'Discriminator value: UsageBracketedPrepaidCredits'
          eventName:
            type: string
          signalType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsSignalType'
          creditsCurrencyId:
            type: string
          unitValue:
            type: number
            format: double
          overageUnitPrice:
            type: number
            format: double
          creditRolloverAmount:
            type: number
            format: double
          pricingInput:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsPricingInput'
          creditUnitBrackets:
            type: array
            items:
              $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsCreditUnitBracketsItems'
          billingFrequency:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsBillingFrequency'
          billingFrequencyCustomMonths:
            type: integer
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductSimplePricePoint'
        required:
        - pricingType
        - eventName
        - pricingInput
        - creditUnitBrackets
        description: UsageBracketedPrepaidCredits variant
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - UsageCostPlus
            description: 'Discriminator value: UsageCostPlus'
          costPlusMultiplier:
            type: number
            format: double
          signalType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageCostPlusSignalType'
          billingFrequency:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageCostPlusBillingFrequency'
          billingFrequencyCustomMonths:
            type: integer
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageCostPlusBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductSimplePricePoint'
        required:
        - pricingType
        - costPlusMultiplier
        description: UsageCostPlus variant
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - OneTimePerUnit
            description: 'Discriminator value: OneTimePerUnit'
          feeType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingOneTimePerUnitFeeType'
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingOneTimePerUnitBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductSimplePricePoint'
        required:
        - pricingType
        - pricePoints
        description: OneTimePerUnit variant
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - SeatBasedPerUnit
            description: 'Discriminator value: SeatBasedPerUnit'
          billingFrequency:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingSeatBasedPerUnitBillingFrequency'
          billingFrequencyCustomMonths:
            type: integer
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingSeatBasedPerUnitBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductSimplePricePoint'
        required:
        - pricingType
        - billingFrequency
        - pricePoints
        description: SeatBasedPerUnit variant
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - SeatBasedGraduated
            description: 'Discriminator value: SeatBasedGraduated'
          billingFrequency:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingSeatBasedGraduatedBillingFrequency'
          billingFrequencyCustomMonths:
            type: integer
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingSeatBasedGraduatedBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductTieredPricePoint'
        required:
        - pricingType
        - billingFrequency
        - pricePoints
        description: SeatBasedGraduated variant
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - SeatBasedVolume
            description: 'Discriminator value: SeatBasedVolume'
          billingFrequency:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingSeatBasedVolumeBillingFrequency'
          billingFrequencyCustomMonths:
            type: integer
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingSeatBasedVolumeBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductTieredPricePoint'
        required:
        - pricingType
        - billingFrequency
        - pricePoints
        description: SeatBasedVolume variant
      - type: object
        properties:
          pricingType:
            type: string
            enum:
            - SeatBasedPrepaidCredits
            description: 'Discriminator value: SeatBasedPrepaidCredits'
          creditsCurrencyId:
            type: string
          creditCost:
            type: number
            format: double
          unitValue:
            type: number
            format: double
          billingFrequency:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingSeatBasedPrepaidCreditsBillingFrequency'
          billingFrequencyCustomMonths:
            type: integer
          billingType:
            $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingSeatBasedPrepaidCreditsBillingType'
          pricePoints:
            type: array
            items:
              $ref: '#/components/schemas/ProductSimplePricePoint'
        required:
        - pricingType
        - creditsCurrencyId
        - creditCost
        - billingFrequency
        description: SeatBasedPrepaidCredits variant
      discriminator:
        propertyName: pricingType
      title: ProductPricingInput
    Product_2:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type:
          - string
          - 'null'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        active:
          type: boolean
        productCode:
          type:
          - string
          - 'null'
        externalId:
          type:
          - string
          - 'null'
        archivedAt:
          type:
          - string
          - 'null'
          format: date-time
        metadata:
          type:
          - object
          - 'null'
          additionalProperties:
            description: Any type
      required:
      - id
      - name
      - description
      - createdAt
      - updatedAt
      - active
      - productCode
      - externalId
      - archivedAt
      - metadata
      title: Product
    ProductCreditBenefitOutput:
      type: object
      properties:
        id:
          type: string
        creditsCurrencyId:
          type:
          - string
          - 'null'
        amount:
          type: number
          format: double
        recipient:
          type: string
        isInfiniteTotal:
          type: boolean
        allocationCadence:
          type: string
        creditGrantTiming:
          type:
          - string
          - 'null'
        overageUnitPrice:
          type:
          - number
          - 'null'
          format: double
        rolloverAmount:
          type:
          - number
          - 'null'
          format: double
        rolloverDuration:
          type:
          - number
          - 'null'
          format: double
        rolloverDurationUnit:
          type:
          - string
          - 'null'
      required:
      - id
      - creditsCurrencyId
      - amount
      - recipient
      - isInfiniteTotal
      - allocationCadence
      title: ProductCreditBenefitOutput
    Pagination:
      type: object
      properties:
        limit:
          type: integer
        offset:
          type: integer
        total:
          type: integer
        hasMore:
          type: boolean
      required:
      - limit
      - offset
      - total
      - hasMore
      title: Pagination
    ProductPricingInputDiscriminatorMappingRecurringVolumeBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Advance
      title: ProductPricingInputDiscriminatorMappingRecurringVolumeBillingType
    CreateProductRequest:
      type: object
      properties:
        name:
          type: string
        description:
          type:
          - string
          - 'null'
        active:
          type: boolean
          default: false
        productCode:
          type:
          - string
          - 'null'
        externalId:
          type:
          - string
          - 'null'
        metadata:
          type:
          - object
          - 'null'
          additionalProperties:
            description: Any type
      required:
      - name
      title: CreateProductRequest
    ProductPricePointOutputTiersItems:
      type: object
      properties:
        flatAmount:
          type: number
          format: double
        index:
          type: number
          format: double
        lowerBound:
          type: number
          format: double
        number:
          type: number
          format: double
        tierBillingType:
          $ref: '#/components/schemas/ProductPricePointOutputTiersItemsTierBillingType'
        unitAmount:
          type: number
          format: double
        upperBound:
          type: number
          format: double
      required:
      - lowerBound
      title: ProductPricePointOutputTiersItems
    ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsSignalType:
      type: string
      enum:
      - activity
      - outcome
      title: ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsSignalType
    ProductCreditBenefitInput:
      type: object
      properties:
        creditsCurrencyId:
          type: string
        amount:
          type: number
          format: double
        recipient:
          $ref: '#/components/schemas/ProductCreditBenefitInputRecipient'
        isInfiniteTotal:
          type: boolean
          default: false
        allocationCadence:
          $ref: '#/components/schemas/ProductCreditBenefitInputAllocationCadence'
        creditGrantTiming:
          $ref: '#/components/schemas/ProductCreditBenefitInputCreditGrantTiming'
        overageUnitPrice:
          type:
          - number
          - 'null'
          format: double
        rolloverAmount:
          type:
          - number
          - 'null'
          format: double
        rolloverDuration:
          type:
          - number
          - 'null'
          format: double
        rolloverDurationUnit:
          type:
          - string
          - 'null'
      required:
      - creditsCurrencyId
      - amount
      title: ProductCreditBenefitInput
    ErrorResponse:
      type: o

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