Kong OpenMeter Customers API

Customers are used to track usage of your product or service. Customers can be individuals or organizations that can subscribe to plans and have access to features.

Operations 10

POST /v3/openmeter/customers Create customer #
GET /v3/openmeter/customers List customers #
GET /v3/openmeter/customers/{customerId} Get customer #
PUT /v3/openmeter/customers/{customerId} Upsert customer #
DELETE /v3/openmeter/customers/{customerId} Delete customer #
GET /v3/openmeter/customers/{customerId}/billing Get customer billing data #
PUT /v3/openmeter/customers/{customerId}/billing Update customer billing data #
PUT /v3/openmeter/customers/{customerId}/billing/app-data Update customer billing app data #
POST /v3/openmeter/customers/{customerId}/billing/stripe/checkout-sessions Create Stripe Checkout Session #
POST /v3/openmeter/customers/{customerId}/billing/stripe/portal-sessions Create Stripe customer portal session #

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/kong-openmeter-customers-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

kong-openmeter-customers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Konnect API - Go SDK OpenMeter Customers API
  version: 3.14.0
  description: The Konnect platform API
  contact:
    name: Kong Inc
    url: https://konghq.com
    email: support@konghq.com
  x-extensions-note: "This API uses the `x-expression` vendor extension to indicate that a string property is a DSL expression.\nSupported types:\n\n\n  - `boolean`: An expression evaluates to boolean. For example, `context.topic.name == 'my-topic'`\n  - `string`: A template string expression that evaluates to a string or a literal string value. For example,\n    `${context.topic.name.substring(0, context.topic.name.length-4)}` or `my-literal-value`\n\nAdditionally, `x-sensitive` flag indicates that a field contains sensitive information. When the value\nof the field is provided in plain text, it's encrypted at rest and it's never returned in API responses.\nWhen the value is an expression, the expression itself is stored and returned in API responses.\n\n`x-min-runtime-version` indicates the minimum Event Gateway runtime version required to use a certain policy or\npolicy feature. The runtime version can be configured at the Event Gateway entity level. It must be a string\ncontaining a semantic version in the `MAJOR.MINOR` format, e.g., `\"1.1\"`.\n"
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  x-oas-source: kong/platform-api@
  x-oas-source-link: https://github.com/Kong/platform-api/commit/
servers:
- url: https://global.api.konghq.com
- url: https://us.api.konghq.com
- url: https://eu.api.konghq.com
- url: https://au.api.konghq.com
security:
- personalAccessToken: []
- systemAccountAccessToken: []
- konnectAccessToken: []
- serviceAccessToken: []
tags:
- name: OpenMeter Customers
  description: Customers are used to track usage of your product or service. Customers can be individuals or organizations that can subscribe to plans and have access to features.
paths:
  /v3/openmeter/customers:
    post:
      operationId: create-customer
      summary: Create customer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomerRequest'
      responses:
        '201':
          description: Customer created response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingCustomer'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      tags:
      - OpenMeter Customers
    get:
      operationId: list-customers
      summary: List customers
      parameters:
      - $ref: '#/components/parameters/PagePaginationQuery'
      - name: sort
        in: query
        description: 'Sort customers returned in the response.

          Supported sort attributes are:

          - `id`

          - `name` (default)

          - `created_at`


          The `asc` suffix is optional as the default sort order is ascending.

          The `desc` suffix is used to specify a descending order.'
        required: false
        schema:
          $ref: '#/components/schemas/SortQuery'
        explode: false
        style: form
      - name: filter
        in: query
        description: 'Filter customers returned in the response.


          To filter customers by key add the following query param: filter[key]=my-db-id'
        required: false
        schema:
          $ref: '#/components/schemas/ListCustomersParamsFilter'
        style: deepObject
      responses:
        '200':
          description: Page paginated response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerPagePaginatedResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
      tags:
      - OpenMeter Customers
  /v3/openmeter/customers/{customerId}:
    get:
      operationId: get-customer
      summary: Get customer
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/ULID'
      responses:
        '200':
          description: Customer response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingCustomer'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      tags:
      - OpenMeter Customers
    put:
      operationId: upsert-customer
      summary: Upsert customer
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/ULID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertCustomerRequest'
      responses:
        '200':
          description: Customer upsert response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingCustomer'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '410':
          $ref: '#/components/responses/Gone'
      tags:
      - OpenMeter Customers
    delete:
      operationId: delete-customer
      summary: Delete customer
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/ULID'
      responses:
        '204':
          description: Deleted response.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      tags:
      - OpenMeter Customers
  /v3/openmeter/customers/{customerId}/billing:
    get:
      operationId: get-customer-billing
      summary: Get customer billing data
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/ULID'
      responses:
        '200':
          description: CustomerBillingData response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingCustomerData'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
      tags:
      - OpenMeter Customers
    put:
      operationId: update-customer-billing
      summary: Update customer billing data
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/ULID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertCustomerBillingDataRequest'
      responses:
        '200':
          description: CustomerBillingData upsert response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingCustomerData'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '410':
          $ref: '#/components/responses/Gone'
      tags:
      - OpenMeter Customers
  /v3/openmeter/customers/{customerId}/billing/app-data:
    put:
      operationId: update-customer-billing-app-data
      summary: Update customer billing app data
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/ULID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertAppCustomerDataRequest'
      responses:
        '200':
          description: AppCustomerData upsert response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingAppCustomerData'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '410':
          $ref: '#/components/responses/Gone'
      tags:
      - OpenMeter Customers
  /v3/openmeter/customers/{customerId}/billing/stripe/checkout-sessions:
    post:
      operationId: create-customer-stripe-checkout-session
      summary: Create Stripe Checkout Session
      description: 'Create a [Stripe Checkout Session](https://docs.stripe.com/payments/checkout) for the customer.


        Creates a Checkout Session for collecting payment method information from customers.

        The session operates in "setup" mode, which collects payment details without charging

        the customer immediately. The collected payment method can be used for future

        subscription billing.


        For hosted checkout sessions, redirect customers to the returned URL. For embedded

        sessions, use the client_secret to initialize Stripe.js in your application.'
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/ULID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillingCustomerStripeCreateCheckoutSessionRequest'
      responses:
        '201':
          description: CreateStripeCheckoutSessionResult created response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '410':
          $ref: '#/components/responses/Gone'
      tags:
      - OpenMeter Customers
  /v3/openmeter/customers/{customerId}/billing/stripe/portal-sessions:
    post:
      operationId: create-customer-stripe-portal-session
      summary: Create Stripe customer portal session
      description: 'Create Stripe Customer Portal Session.


        Useful to redirect the customer to the Stripe Customer Portal to manage their payment methods,

        change their billing address and access their invoice history.

        Only returns URL if the customer billing profile is linked to a stripe app and customer.'
      parameters:
      - name: customerId
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/ULID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillingCustomerStripeCreateCustomerPortalSessionRequest'
      responses:
        '201':
          description: CreateStripeCustomerPortalSessionResult created response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingAppStripeCreateCustomerPortalSessionResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '410':
          $ref: '#/components/responses/Gone'
      tags:
      - OpenMeter Customers
components:
  schemas:
    BillingCustomer:
      description: Customers can be individuals or organizations that can subscribe to plans and have access to features.
      type: object
      properties:
        id:
          description: ULID (Universally Unique Lexicographically Sortable Identifier).
          type: string
          example: 01G65Z755AFWAKHE12NY0CQ9FH
          pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
          readOnly: true
          title: ULID
        name:
          description: 'Display name of the resource.


            Between 1 and 256 characters.'
          type: string
          maxLength: 256
          minLength: 1
        description:
          description: 'Optional description of the resource.


            Maximum 1024 characters.'
          type: string
          maxLength: 1024
        labels:
          $ref: '#/components/schemas/Labels'
        created_at:
          description: An ISO-8601 timestamp representation of entity creation date.
          type: string
          format: date-time
          example: '2023-01-01T01:01:01.001Z'
          readOnly: true
          title: RFC3339 Date-Time
        updated_at:
          description: An ISO-8601 timestamp representation of entity last update date.
          type: string
          format: date-time
          example: '2023-01-01T01:01:01.001Z'
          readOnly: true
          title: RFC3339 Date-Time
        deleted_at:
          description: An ISO-8601 timestamp representation of entity deletion date.
          type: string
          format: date-time
          example: '2023-01-01T01:01:01.001Z'
          readOnly: true
          title: RFC3339 Date-Time
        key:
          $ref: '#/components/schemas/ExternalResourceKey'
        usage_attribution:
          description: Mapping to attribute metered usage to the customer by the event subject.
          type: object
          properties:
            subject_keys:
              description: 'The subjects that are attributed to the customer.

                Can be empty when no usage event subjects are associated with the customer.'
              type: array
              items:
                $ref: '#/components/schemas/UsageAttributionSubjectKey'
              minItems: 0
              title: Subject Keys
          required:
          - subject_keys
          title: Usage Attribution
        primary_email:
          description: The primary email address of the customer.
          type: string
          title: Primary Email
        currency:
          description: 'Currency of the customer.

            Used for billing, tax and invoicing.'
          type: string
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: Currency
        billing_address:
          description: 'The billing address of the customer.

            Used for tax and invoicing.'
          type: object
          properties:
            country:
              description: Country code in [ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) alpha-2 format.
              type: string
              example: US
              maxLength: 2
              minLength: 2
              pattern: ^[A-Z]{2}$
              title: Country
            postal_code:
              description: Postal code.
              type: string
              title: Postal Code
            state:
              description: State or province.
              type: string
              title: State
            city:
              description: City.
              type: string
              title: City
            line1:
              description: First line of the address.
              type: string
              title: Line 1
            line2:
              description: Second line of the address.
              type: string
              title: Line 2
            phone_number:
              description: Phone number.
              type: string
              title: Phone Number
          title: Billing Address
      required:
      - id
      - name
      - created_at
      - updated_at
      - key
    BaseError:
      description: standard error
      type: object
      properties:
        status:
          description: 'The HTTP status code of the error. Useful when passing the response

            body to child properties in a frontend UI. Must be returned as an integer.

            '
          type: integer
          readOnly: true
        title:
          description: 'A short, human-readable summary of the problem. It should not

            change between occurences of a problem, except for localization.

            Should be provided as "Sentence case" for direct use in the UI.

            '
          type: string
          readOnly: true
        type:
          description: The error type.
          type: string
          readOnly: true
        instance:
          description: 'Used to return the correlation ID back to the user, in the format

            kong:trace:<correlation_id>. This helps us find the relevant logs

            when a customer reports an issue.

            '
          type: string
          readOnly: true
        detail:
          description: 'A human readable explanation specific to this occurence of the problem.

            This field may contain request/entity data to help the user understand

            what went wrong. Enclose variable values in square brackets. Should be

            provided as "Sentence case" for direct use in the UI.

            '
          type: string
          readOnly: true
      required:
      - status
      - title
      - instance
      - detail
      title: Error
    BadRequestError:
      allOf:
      - $ref: '#/components/schemas/BaseError'
      - type: object
        required:
        - invalid_parameters
        properties:
          invalid_parameters:
            $ref: '#/components/schemas/InvalidParameters'
    InvalidParameterMinimumLength:
      type: object
      properties:
        field:
          type: string
          example: name
          readOnly: true
        rule:
          description: invalid parameters rules
          type: string
          enum:
          - min_length
          - min_digits
          - min_lowercase
          - min_uppercase
          - min_symbols
          - min_items
          - min
          nullable: false
          readOnly: true
          x-speakeasy-unknown-values: allow
        minimum:
          type: integer
          example: 8
        source:
          type: string
          example: body
        reason:
          type: string
          example: must have at least 8 characters
          readOnly: true
      additionalProperties: false
      required:
      - field
      - reason
      - rule
      - minimum
    PaginatedMeta:
      description: returns the pagination information
      type: object
      properties:
        page:
          $ref: '#/components/schemas/PageMeta'
      required:
      - page
      title: PaginatedMeta
      x-speakeasy-terraform-ignore: true
    UpsertAppCustomerDataRequest:
      description: AppCustomerData upsert request.
      type: object
      properties:
        stripe:
          description: Used if the customer has a linked Stripe app.
          type: object
          properties:
            customer_id:
              description: The Stripe customer ID used.
              type: string
              example: cus_1234567890
              title: Stripe customer ID
            default_payment_method_id:
              description: The Stripe default payment method ID.
              type: string
              example: pm_1234567890
              title: Stripe default payment method ID
            labels:
              description: Labels for this Stripe integration on the customer.
              type: object
              example:
                env: test
              additionalProperties:
                type: string
                pattern: ^[a-z0-9A-Z]{1}([a-z0-9A-Z-._]*[a-z0-9A-Z]+)?$
                minLength: 1
                maxLength: 63
              maxProperties: 50
              title: Labels
          title: Stripe
        external_invoicing:
          description: Used if the customer has a linked external invoicing app.
          type: object
          properties:
            labels:
              description: Labels for this external invoicing integration on the customer.
              type: object
              example:
                env: test
              additionalProperties:
                type: string
                pattern: ^[a-z0-9A-Z]{1}([a-z0-9A-Z-._]*[a-z0-9A-Z]+)?$
                minLength: 1
                maxLength: 63
              maxProperties: 50
              title: Labels
          title: External invoicing
    UnauthorizedError:
      allOf:
      - $ref: '#/components/schemas/BaseError'
      - type: object
        properties:
          status:
            example: 401
          title:
            example: Unauthorized
          type:
            example: https://httpstatuses.com/401
          instance:
            example: kong:trace:1234567890
          detail:
            example: Invalid credentials
    NotFoundError:
      allOf:
      - $ref: '#/components/schemas/BaseError'
      - type: object
        properties:
          status:
            example: 404
          title:
            example: Not Found
          type:
            example: https://httpstatuses.com/404
          instance:
            example: kong:trace:1234567890
          detail:
            example: Not found
    BillingCustomerData:
      description: Billing customer data.
      type: object
      properties:
        billing_profile:
          description: 'The billing profile for the customer.


            If not provided, the default billing profile will be used.'
          type: object
          properties:
            id:
              description: The ID of the billing profile.
              type: string
              example: 01G65Z755AFWAKHE12NY0CQ9FH
              pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
              title: ULID
          required:
          - id
          title: Billing profile
        app_data:
          description: App customer data.
          type: object
          properties:
            stripe:
              description: Used if the customer has a linked Stripe app.
              type: object
              properties:
                customer_id:
                  description: The Stripe customer ID used.
                  type: string
                  example: cus_1234567890
                  title: Stripe customer ID
                default_payment_method_id:
                  description: The Stripe default payment method ID.
                  type: string
                  example: pm_1234567890
                  title: Stripe default payment method ID
                labels:
                  description: Labels for this Stripe integration on the customer.
                  type: object
                  example:
                    env: test
                  additionalProperties:
                    type: string
                    pattern: ^[a-z0-9A-Z]{1}([a-z0-9A-Z-._]*[a-z0-9A-Z]+)?$
                    minLength: 1
                    maxLength: 63
                  maxProperties: 50
                  title: Labels
              title: Stripe
            external_invoicing:
              description: Used if the customer has a linked external invoicing app.
              type: object
              properties:
                labels:
                  description: Labels for this external invoicing integration on the customer.
                  type: object
                  example:
                    env: test
                  additionalProperties:
                    type: string
                    pattern: ^[a-z0-9A-Z]{1}([a-z0-9A-Z-._]*[a-z0-9A-Z]+)?$
                    minLength: 1
                    maxLength: 63
                  maxProperties: 50
                  title: Labels
              title: External invoicing
          title: App customer data
    InvalidParameterMaximumLength:
      type: object
      properties:
        field:
          type: string
          example: name
          readOnly: true
        rule:
          description: invalid parameters rules
          type: string
          enum:
          - max_length
          - max_items
          - max
          nullable: false
          readOnly: true
          x-speakeasy-unknown-values: allow
        maximum:
          type: integer
          example: 8
        source:
          type: string
          example: body
        reason:
          type: string
          example: must not have more than 8 characters
          readOnly: true
      additionalProperties: false
      required:
      - field
      - reason
      - rule
      - maximum
    PageMeta:
      description: Contains pagination query parameters and the total number of objects returned.
      type: object
      properties:
        number:
          type: number
          example: 1
          x-speakeasy-terraform-ignore: true
        size:
          type: number
          example: 10
          x-speakeasy-terraform-ignore: true
        total:
          type: number
          example: 100
          x-speakeasy-terraform-ignore: true
      required:
      - number
      - size
      - total
    InvalidParameterStandard:
      type: object
      properties:
        field:
          type: string
          example: name
          readOnly: true
        rule:
          $ref: '#/components/schemas/InvalidRules'
        source:
          type: string
          example: body
        reason:
          type: string
          example: is a required field
          readOnly: true
      additionalProperties: false
      required:
      - field
      - reason
    BillingAppStripeCreateCheckoutSessionResult:
      description: 'Result of creating a Stripe Checkout Session.


        Contains all the information needed to redirect customers to the checkout

        or initialize an embedded checkout flow.'
      type: object
      properties:
        customer_id:
          description: The customer ID in the billing system.
          type: string
          example: 01G65Z755AFWAKHE12NY0CQ9FH
          pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
          title: ULID
        stripe_customer_id:
          description: The Stripe customer ID.
          type: string
        session_id:
          description: The Stripe checkout session ID.
          type: string
        setup_intent_id:
          description: The setup intent ID created for collecting the payment method.
          type: string
        client_secret:
          description: 'Client secret for initializing Stripe.js on the client side.


            Required for embedded checkout sessions.

            See: https://docs.stripe.com/payments/checkout/custom-success-page'
          type: string
        client_reference_id:
          description: 'The client reference ID provided in the request.


            Useful for reconciling the session with your internal systems.'
          type: string
        customer_email:
          description: Customer's email address if provided to Stripe.
          type: string
        currency:
          description: Currency code for the checkout session.
          type: string
          example: USD
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
        created_at:
          description: Timestamp when the checkout session was created.
          type: string
          format: date-time
          example: '2023-01-01T01:01:01.001Z'
          title: RFC3339 Date-Time
        expires_at:
          description: Timestamp when the checkout session will expire.
          type: string
          format: date-time
          example: '2023-01-01T01:01:01.001Z'
          title: RFC3339 Date-Time
        metadata:
          description: Metadata attached to the checkout session.
          type: object
          additionalProperties:
            type: string
        status:
          description: 'The status of the checkout session.


            See: https://docs.stripe.com/api/checkout/sessions/object#checkout_session_object-status'
          type: string
        url:
          description: URL to redirect customers to the checkout page (for hosted mode).
          type: string
        mode:
          description: 'Mode of the checkout session.


            Currently only "setup" mode is supported for collecting payment methods.'
          type: string
          enum:
          - setup
        cancel_url:
          description: The cancel URL where customers are redirected if they cancel.
          type: string
        success_url:
          description: The success URL where customers are redirected after completion.
          type: string
        return_url:
          description: The return URL for embedded sessions after authentication.
          type: string
      required:
      - customer_id
      - stripe_customer_id
      - session_id
      - setup_intent_id
      - created_at
      - mode
    UsageAttributionSubjectKey:
      description: Subject key.
      type: string
      minLength: 1
    UpsertCustomerBillingDataRequest:
      description: CustomerBillingData upsert request.
      type: object
      properties:
        billing_profile:
          description: 'The billing profile for the customer.


            If not provided, the default billing profile will be used.'
          type: object
          properties:
            id:
              description: The ID of the billing profile.
              type: string
              example: 01G65Z755AFWAKHE12NY0CQ9FH
              pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
              title: ULID
          required:
          - id
          title: Billing profile
        app_data:
          description: App customer data.
          type: object
          properties:
            stripe:
              description: Used if the customer has a linked Stripe app.
              type: object
              properties:
                customer_id:
                  description: The Stripe customer ID used.
                  type: string
                  example: cus_1234567890
                  title: Stripe customer ID
                default_payment_method_id:
                  description: The Stripe default payment method ID.
                  type: string
                  example: pm_1234567890
                  title: Stripe default payment method ID
                labels:
                  description: Labels for this Stripe integration on the customer.
                  type: object
                  example:
                    env: test
                  additionalProperties:
                    type: string
                    pattern: ^[a-z0-9A-Z]{1}([a-z0-9A-Z-._]*[a-z0-9A-Z]+)?$
                    minLength: 1
                    maxLength: 63
                  maxProperties: 50
                  title: Labels
              title: Stripe
            external_invoicing:
              description: Used if the customer has a linked external invoicing app.
              type: object
              properties:
                labels:
                  description: Labels for this external invoicing integration on the customer.
                  type: object
                  example:
                    env: test
                  additionalProperties:
                    type: string
                    pattern: ^[a-z0-9A-Z]{1}([a-z0-9A-Z-._]*[a-z0-9A-Z]+)?$
                    minLength: 1
                    maxLength: 63
                  maxProperties: 50
                  title: Labels
              title: External invoicing
          title: App customer data
    ULID:
      description: ULID (Universally Unique Lexicographically Sortable Identifier).
      type: string
      example: 01G65Z755AFWAKHE12NY0CQ9FH
      pattern: ^[0-7

# --- truncated at 32 KB (62 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kong/refs/heads/main/openapi/kong-openmeter-customers-api-openapi.yml