Paid products API

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

Operations 12

GET /products List products #
POST /products Create product #
GET /products/{productId} Get product by ID #
PUT /products/{productId} Update product #
DELETE /products/{productId} Delete product #
GET /products/external/{externalId} Get product by external ID #
PUT /products/external/{externalId} Update product by external ID #
DELETE /products/external/{externalId} Delete product by external ID #
GET /products/ List products #
POST /products/ Create a new product #
GET /products/{id} Get product #
PUT /products/{id} Update product #

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/paid-products-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 email required.

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

OpenAPI Specification

paid-products-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: 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:
    Pagination:
      type: object
      properties:
        limit:
          type: integer
        offset:
          type: integer
        total:
          type: integer
        hasMore:
          type: boolean
      required:
      - limit
      - offset
      - total
      - hasMore
      title: Pagination
    ProductSimplePricePointTiersItemsTierBillingType:
      type: string
      enum:
      - flat
      - perUnit
      title: ProductSimplePricePointTiersItemsTierBillingType
    ChargeType:
      type: string
      enum:
      - oneTime
      - recurring
      - usage
      - seatBased
      title: ChargeType
    Pricing:
      type: object
      properties:
        eventName:
          type: string
        taxable:
          type: boolean
        creditCost:
          type: number
          format: double
        chargeType:
          $ref: '#/components/schemas/ChargeType'
        pricingModel:
          $ref: '#/components/schemas/PricingModelType'
        billingFrequency:
          $ref: '#/components/schemas/BillingFrequency'
        pricePoints:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/AgentPricePoint'
      required:
      - taxable
      - chargeType
      - pricingModel
      - billingFrequency
      - pricePoints
      title: Pricing
    Product:
      type: object
      properties:
        id:
          type: string
          format: uuid
        externalId:
          type:
          - string
          - 'null'
        displayId:
          type: string
          description: Human-readable display ID
        organizationId:
          type: string
          format: uuid
        name:
          type: string
        description:
          type:
          - string
          - 'null'
        type:
          $ref: '#/components/schemas/ProductType'
          description: The type of product
        active:
          type: boolean
        productCode:
          type:
          - string
          - 'null'
        ProductAttribute:
          type: array
          items:
            $ref: '#/components/schemas/AgentAttribute'
          description: Pricing attributes for this product
        metadata:
          type:
          - object
          - 'null'
          additionalProperties:
            description: Any type
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
      - id
      - organizationId
      - name
      - type
      - active
      description: A product in the Paid system (previously called Agent)
      title: Product
    ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Arrears
      title: ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsBillingType
    ProductPricingInputDiscriminatorMappingUsagePerUnitSignalType:
      type: string
      enum:
      - activity
      - outcome
      title: ProductPricingInputDiscriminatorMappingUsagePerUnitSignalType
    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
    ProductPricingInputDiscriminatorMappingUsageVolumeBillingFrequency:
      type: string
      enum:
      - Monthly
      - Quarterly
      - Semi-Annually
      - Annual
      - Custom
      title: ProductPricingInputDiscriminatorMappingUsageVolumeBillingFrequency
    AgentPricePoint:
      type: object
      properties:
        unitPrice:
          type: number
          format: double
        minQuantity:
          type: number
          format: double
        includedQuantity:
          type: number
          format: double
        tiers:
          type: array
          items:
            $ref: '#/components/schemas/AgentPricePointTiers'
      title: AgentPricePoint
    ProductPricingInputDiscriminatorMappingRecurringVolumeBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Advance
      title: ProductPricingInputDiscriminatorMappingRecurringVolumeBillingType
    ProductPricingInputDiscriminatorMappingSeatBasedVolumeBillingFrequency:
      type: string
      enum:
      - Monthly
      - Quarterly
      - Semi-Annually
      - Annual
      - Custom
      title: ProductPricingInputDiscriminatorMappingSeatBasedVolumeBillingFrequency
    ProductType:
      type: string
      enum:
      - agent
      - product
      - prepaidCreditBundle
      description: The type of product
      title: ProductType
    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
    ProductCreate:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        externalId:
          type: string
        type:
          $ref: '#/components/schemas/ProductCreateType'
        active:
          type: boolean
          default: false
        productCode:
          type: string
        metadata:
          type: object
          additionalProperties:
            description: Any type
      required:
      - name
      title: ProductCreate
    ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsSignalType:
      type: string
      enum:
      - activity
      - outcome
      title: ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsSignalType
    ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Arrears
      title: ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsBillingType
    ProductPricingInputDiscriminatorMappingSeatBasedPrepaidCreditsBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Advance
      title: ProductPricingInputDiscriminatorMappingSeatBasedPrepaidCreditsBillingType
    ProductPricingOutputPricingType:
      type: string
      enum:
      - RecurringPerUnit
      - RecurringGraduated
      - RecurringVolume
      - RecurringPercentOfTotal
      - UsagePerUnit
      - UsageGraduated
      - UsageVolume
      - UsagePrepaidCredits
      - UsageBracketedPrepaidCredits
      - UsageCostPlus
      - OneTimePerUnit
      - SeatBasedPerUnit
      - SeatBasedGraduated
      - SeatBasedVolume
      - SeatBasedPrepaidCredits
      title: ProductPricingOutputPricingType
    ProductPricingInputDiscriminatorMappingSeatBasedPrepaidCreditsBillingFrequency:
      type: string
      enum:
      - Monthly
      - Quarterly
      - Semi-Annually
      - Annual
      - Custom
      title: ProductPricingInputDiscriminatorMappingSeatBasedPrepaidCreditsBillingFrequency
    ProductAttributeUpsert:
      type: object
      properties:
        productAttributeId:
          type: string
          format: uuid
        name:
          type: string
        active:
          type: boolean
        pricing:
          $ref: '#/components/schemas/ProductPricingInput'
        creditBenefits:
          type: array
          items:
            $ref: '#/components/schemas/ProductCreditBenefitInput'
      required:
      - name
      - pricing
      title: ProductAttributeUpsert
    ProductPricingInputDiscriminatorMappingUsagePerUnitBillingFrequency:
      type: string
      enum:
      - Monthly
      - Quarterly
      - Semi-Annually
      - Annual
      - Custom
      title: ProductPricingInputDiscriminatorMappingUsagePerUnitBillingFrequency
    ProductPricingInputDiscriminatorMappingSeatBasedPerUnitBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Advance
      title: ProductPricingInputDiscriminatorMappingSeatBasedPerUnitBillingType
    ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsSignalType:
      type: string
      enum:
      - activity
      - outcome
      title: ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsSignalType
    ProductPricingInputDiscriminatorMappingUsageGraduatedBillingFrequency:
      type: string
      enum:
      - Monthly
      - Quarterly
      - Semi-Annually
      - Annual
      - Custom
      title: ProductPricingInputDiscriminatorMappingUsageGraduatedBillingFrequency
    ProductPricingOutputSignalType:
      type: string
      enum:
      - activity
      - outcome
      title: ProductPricingOutputSignalType
    ProductUpdateType:
      type: string
      enum:
      - agent
      - product
      - prepaidCreditBundle
      title: ProductUpdateType
    ProductPricingInputDiscriminatorMappingSeatBasedPerUnitBillingFrequency:
      type: string
      enum:
      - Monthly
      - Quarterly
      - Semi-Annually
      - Annual
      - Custom
      title: ProductPricingInputDiscriminatorMappingSeatBasedPerUnitBillingFrequency
    ProductPricingInputDiscriminatorMappingSeatBasedGraduatedBillingFrequency:
      type: string
      enum:
      - Monthly
      - Quarterly
      - Semi-Annually
      - Annual
      - Custom
      title: ProductPricingInputDiscriminatorMappingSeatBasedGraduatedBillingFrequency
    ProductCreditBenefitInputRecipient:
      type: string
      enum:
      - organization
      - seat
      default: organization
      title: ProductCreditBenefitInputRecipient
    ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsPricingInputKind:
      type: string
      enum:
      - signalQuantity
      title: ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsPricingInputKind
    ProductTieredPricePointTiersItemsTierBillingType:
      type: string
      enum:
      - flat
      - perUnit
      title: ProductTieredPricePointTiersItemsTierBillingType
    ProductPricingInputDiscriminatorMappingRecurringPerUnitBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Advance
      title: ProductPricingInputDiscriminatorMappingRecurringPerUnitBillingType
    ProductPricingInputDiscriminatorMappingRecurringPerUnitBillingFrequency:
      type: string
      enum:
      - Monthly
      - Quarterly
      - Semi-Annually
      - Annual
      - Custom
      title: ProductPricingInputDiscriminatorMappingRecurringPerUnitBillingFrequency
    ProductPricingInputDiscriminatorMappingUsageCostPlusBillingFrequency:
      type: string
      enum:
      - Monthly
      - Quarterly
      - Semi-Annually
      - Annual
      - Custom
      title: ProductPricingInputDiscriminatorMappingUsageCostPlusBillingFrequency
    ProductPricingInputDiscriminatorMappingUsagePerUnitBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Arrears
      title: ProductPricingInputDiscriminatorMappingUsagePerUnitBillingType
    AgentAttribute:
      type: object
      properties:
        name:
          type: string
        active:
          type: boolean
        pricing:
          $ref: '#/components/schemas/Pricing'
      required:
      - name
      - active
      - pricing
      title: AgentAttribute
    ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsPricingInput:
      type: object
      properties:
        kind:
          $ref: '#/components/schemas/ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsPricingInputKind'
      required:
      - kind
      title: ProductPricingInputDiscriminatorMappingUsageBracketedPrepaidCreditsPricingInput
    products_deleteByExternalId_Response_204:
      type: object
      properties: {}
      description: Empty response body
      title: products_deleteByExternalId_Response_204
    ProductPricingInputDiscriminatorMappingUsageVolumeBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Arrears
      title: ProductPricingInputDiscriminatorMappingUsageVolumeBillingType
    ProductPricingInputDiscriminatorMappingUsageGraduatedBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Arrears
      title: ProductPricingInputDiscriminatorMappingUsageGraduatedBillingType
    ProductTieredPricePointTiersItems:
      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/ProductTieredPricePointTiersItemsTierBillingType'
        unitAmount:
          type: number
          format: double
        upperBound:
          type: number
          format: double
      required:
      - lowerBound
      title: ProductTieredPricePointTiersItems
    ProductPricePointOutput:
      type: object
      properties:
        currency:
          type: string
        unitPrice:
          type: number
          format: double
        tiers:
          type: array
          items:
            $ref: '#/components/schemas/ProductPricePointOutputTiersItems'
        minQuantity:
          type: number
          format: double
        maxQuantity:
          type: number
          format: double
        includedQuantity:
          type: number
          format: double
      required:
      - currency
      - unitPrice
      title: ProductPricePointOutput
    UpdateProductRequest:
      type: object
      properties:
        name:
          type: string
        description:
          type:
          - string
          - 'null'
        active:
          type: boolean
        productCode:
          type:
          - string
          - 'null'
        externalId:
          type:
          - string
          - 'null'
        metadata:
          type:
          - object
          - 'null'
          additionalProperties:
            description: Any type
        productAttributes:
          type: array
          items:
            $ref: '#/components/schemas/ProductAttributeUpsert'
      title: UpdateProductRequest
    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
    ProductPricingInputDiscriminatorMappingRecurringPercentOfTotalBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Advance
      title: ProductPricingInputDiscriminatorMappingRecurringPercentOfTotalBillingType
    AgentPricePointTiers:
      type: object
      properties:
        minQuantity:
          type: number
          format: double
        maxQuantity:
          type: number
          format: double
        unitPrice:
          type: number
          format: double
      required:
      - unitPrice
      title: AgentPricePointTiers
    ProductListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Product_2'
        pagination:
          $ref: '#/components/schemas/Pagination'
      required:
      - data
      - pagination
      title: ProductListResponse
    ProductPricingInputDiscriminatorMappingSeatBasedVolumeBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Advance
      title: ProductPricingInputDiscriminatorMappingSeatBasedVolumeBillingType
    ProductPricingInputDiscriminatorMappingOneTimePerUnitFeeType:
      type: string
      enum:
      - setup
      - onboarding
      - implementation
      - migration
      - custom
      title: ProductPricingInputDiscriminatorMappingOneTimePerUnitFeeType
    ProductUpdate:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        externalId:
          type: string
        type:
          $ref: '#/components/schemas/ProductUpdateType'
        active:
          type: boolean
        productCode:
          type: string
        ProductAttribute:
          type: array
          items:
            $ref: '#/components/schemas/AgentAttribute'
          description: Pricing attributes for this product
        metadata:
          type: object
          additionalProperties:
            description: Any type
      title: ProductUpdate
    ProductPricingInputDiscriminatorMappingUsageCostPlusSignalType:
      type: string
      enum:
      - activity
      - outcome
      title: ProductPricingInputDiscriminatorMappingUsageCostPlusSignalType
    BillingFrequency:
      type: string
      enum:
      - monthly
      - quarterly
      - annual
      title: BillingFrequency
    ProductPricingOutput:
      type: object
      properties:
        pricingType:
          $ref: '#/components/schemas/ProductPricingOutputPricingType'
        chargeType:
          type: string
        pricingModel:
          type: string
        eventName:
          type: string
        signalType:
          $ref: '#/components/schemas/ProductPricingOutputSignalType'
        billingFrequency:
          type: string
        billingType:
          type: string
        creditsCurrencyId:
          type: string
        creditCost:
          type: number
          format: double
        unitValue:
          type: number
          format: double
        percentageValue:
          type: number
          format: double
        costPlusMultiplier:
          type: number
          format: double
        pricePoints:
          type: array
          items:
            $ref: '#/components/schemas/ProductPricePointOutput'
      required:
      - pricingType
      - chargeType
      - pricePoints
      title: ProductPricingOutput
    ProductPricingInputDiscriminatorMappingRecurringVolumeBillingFrequency:
      type: string
      enum:
      - Monthly
      - Quarterly
      - Semi-Annually
      - Annual
      - Custom
      title: ProductPricingInputDiscriminatorMappingRecurringVolumeBillingFrequency
    ProductPricingInputDiscriminatorMappingRecurringGraduatedBillingType:
      type: string
      enum:
      - Advance
      - Arrears
      default: Advance
      title: ProductPricingInputDiscriminatorMappingRecurringGraduatedBillingType
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
        code:
          type: string
        details:
          type: string
      required:
      - error
      title: ErrorResponse
    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
    ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsBillingFrequency:
      type: string
      enum:
      - Monthly
      - Quarterly
      - Semi-Annually
      - Annual
      - Custom
      title: ProductPricingInputDiscriminatorMappingUsagePrepaidCreditsBillingFrequency
    ProductPricingInputDiscriminatorMappingRecurringGraduatedBillingFrequency:
      type: string
      enum:
      - Monthly
      - Quarterly
      -

# --- 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