Paigo Webhooks API

The Webhooks API from Paigo — 7 operation(s) for webhooks.

Operations 8

GET /webhooks/test #
GET /webhooks/invoice #
GET /webhooks/customer #
GET /webhooks/entitlement #
GET /webhooks #
GET /webhooks/{webhookId} #
DELETE /webhooks/{webhookId} #
POST /webhooks/subscribe #

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/paigo-webhooks-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

paigo-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Paigo Customers Webhooks API
  description: "\nFor developer documentation of the platform, please visit https://docs.paigo.tech.\n\n## Authentication\nPaigo API supports **bearer token** as the authentication method.\nSteps to set up authentication:\n1. Sign up with Paigo platform and get **client id** and **client secret**.\n2. Make a POST request to the auth endpoint `https://auth.paigo.tech/oauth/token` with the following body:\n```json\n{\n        audience: 'https://qnonyh1pc7.execute-api.us-east-1.amazonaws.com',\n        grant_type: 'client_credentials',\n        client_id: <your client id>,\n        client_secret: <your client secret>\n}\n```\nAdditionally verify that the following headers are set by the client you are using: \n```json\n{\n    \"Content-Type\": \"application/json\"\n}\n```\n\n3. Use the access token in the response to make requests to the Paigo API. Here is an example of the response:  \n```json   \n{\n            access_token: <your access token>,\n            expires_in: 86400,\n            token_type: 'Bearer'  \n}\n```\n4. To use Paigo API, add in the header of your request:\n```json\n{\n        Authorization: \"Bearer <your access token>\"\n}\n```\n\n## API Endpoints\nPaigo API has the following endpoint:\n- Production Environment API: `https://api.prod.paigo.tech`\n        "
  version: v1.10
  contact: {}
servers:
- url: https://api.prod.paigo.tech
  description: Product Environment API
tags:
- name: Webhooks
paths:
  /webhooks/test:
    get:
      operationId: Test Webhook Connection
      summary: ''
      parameters: []
      responses:
        '200':
          description: ''
      tags:
      - Webhooks
      security:
      - bearer: []
  /webhooks/invoice:
    get:
      operationId: Test Webhook Invoices
      summary: ''
      parameters:
      - name: status
        required: true
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                - type: CreateInvoiceResponseDto
                  items:
                    $ref: '#/components/schemas/CreateInvoiceResponseDto'
                - type: ReadInvoicesDto
                  items:
                    $ref: '#/components/schemas/ReadInvoicesDto'
      tags:
      - Webhooks
      security:
      - bearer: []
  /webhooks/customer:
    get:
      operationId: Test Webhook Invoices
      summary: ''
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ReadCustomerResponseData'
      tags:
      - Webhooks
      security:
      - bearer: []
  /webhooks/entitlement:
    get:
      operationId: Test Webhook Entitlement Breached
      summary: ''
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EntitlementWebookParameters'
      tags:
      - Webhooks
      security:
      - bearer: []
  /webhooks:
    get:
      operationId: Find All Webhooks
      summary: ''
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ReadWebhookDto'
      tags:
      - Webhooks
      security:
      - bearer: []
  /webhooks/{webhookId}:
    get:
      operationId: Find One Webhook
      summary: ''
      parameters:
      - name: webhookId
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReadWebhookDto'
      tags:
      - Webhooks
      security:
      - bearer: []
    delete:
      operationId: Unsubscribe a Webhook
      summary: ''
      parameters:
      - name: webhookId
        required: true
        in: path
        schema:
          type: string
      - name: environment
        required: true
        in: query
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
      tags:
      - Webhooks
      security:
      - bearer: []
  /webhooks/subscribe:
    post:
      operationId: Subscribe a Webhook
      summary: ''
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWebhookDto'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
      tags:
      - Webhooks
      security:
      - bearer: []
components:
  schemas:
    KafkaDeploymentParametersDto:
      type: object
      properties:
        securityMechanism:
          type: string
          externalDocs:
            url: https://docs.confluent.io/platform/current/kafka/authentication_sasl/authentication_sasl_plain.html#sasl-plain-overview
          example: PLAIN
          description: 'The security protocol to use when connecting to the Kafka cluster. Defaults to `PLAIN`. Note this is not PLAINTEXT. PLAIN is the SASL_PLAIN protocol. <br><br> Example: `"PLAIN"`'
        username:
          type: string
          description: 'The username to use when connecting to the Kafka cluster. <br><br> Example: `"admin"`'
          example: admin
        password:
          type: string
          description: 'The password to use when connecting to the Kafka cluster. <br><br> Example: `"hunter2"`'
          example: hunter2
        bootstrapServerEndpoint:
          type: string
          description: 'The endpoint of the Kafka cluster to connect to. <br><br> Example: `"kafka.paigo.tech"`'
          example: kafka.paigo.tech
        topic:
          type: string
          description: 'The topic to subscribe to. <br><br> Example: `"test-topic"`'
          example: '"test-topic"'
        dlqTopic:
          type: string
          description: 'The DLQ topic to write to when a message fails to be processed. <br><br> Example: `"dlq-topic"`'
          example: '"dlq-topic"'
      required:
      - securityMechanism
      - username
      - password
      - bootstrapServerEndpoint
      - topic
      - dlqTopic
    InvoiceCommunicationHistory:
      type: object
      properties:
        time:
          type: string
          description: 'The RFC 3339 time of communication that was sent to the customer.

            <br><br>

            Example: `"2022-01-01T00:00:00.000Z"`'
          example: '2022-01-01T00:00:00.000Z'
        type:
          type: string
          description: 'The type of communication that was sent to the customer.

            <br><br>

            Example: `INVOICE_EMAIL`'
          example: INVOICE_EMAIL
          enum:
          - REMINDER_EMAIL
          - INVOICE_EMAIL
        metadata:
          type: object
          description: 'The metadata of the communication that was sent to the customer.

            <br><br>

            Example: `{"subject": "Invoice for January 2022"}`'
    CustomerContractDiscount:
      type: object
      properties:
        name:
          type: string
          example: Super Cool Discount
          description: The name of the discount. This will appear as is on the Invoice. <br><br> Example:`"Super Cool Discount"`
        percentage:
          type: string
          example: '10'
          description: 'The percentage of the discount. This will be used to calculate the discount amount. Must be between 0 and 100 (inclusive). <br><br> Example: `"10"`'
        endDate:
          type: string
          example: '2030-01-01T00:00:00Z'
          description: 'The end date of the discount. If not provided, the discount will be applied indefinitely. The date format should be an RFC3339 string. The discount will be applied to any generated invoice that has an invoice creation date before the discount end date. <br><br> Example: `"2030-01-01T00:00:00Z"`'
      required:
      - name
      - percentage
    TimeBasedConsumptionUnit:
      type: object
      properties:
        unit:
          enum:
          - second
          - minute
          - hour
          - day
          type: string
          description: A unit of time for a dimension of type time-based
          examples:
          - second
          - minute
          - hour
          - day
        type:
          type: string
          enum:
          - time
          description: A string that indicates the type of consumption unit
      required:
      - unit
      - type
    ReadWebhookDto:
      type: object
      properties:
        hookUrl:
          type: string
          description: 'The URL Paigo will callback to when the webhook type event occurs.

            <br/><br/>

            Example: `"https://example.com/webhook"`'
          example: https://example.com/webhook
        id:
          type: string
          description: 'The unique identifier of the webhook.

            <br/><br/>

            Example: `"fcb1fa34-8f11-4832-80f2-464cbc7a8546"`'
          example: fcb1fa34-8f11-4832-80f2-464cbc7a8546
        webhookType:
          description: 'The type of webhook event to listen for. This will determine when the webhook is triggered.

            <br/><br/>

            Example: `"INVOICE_CREATED"`'
          example: INVOICE_CREATED
          enum:
          - INVOICE_CREATED
          - INVOICE_PAID
          - STRIPE_PAYMENT_FAILED
          - CUSTOMER_CREATED
          - CUSTOMER_UPDATED
          - ENTITLEMENT
          - INVOICE_SENT
          type: string
        securityKey:
          type: string
          description: 'The security key used to authenticate the webhook. This is used to ensure the webhook is coming from Paigo. The key will be sent in the `X-Paigo-Security` header.

            <br/><br/>

            Example: `"1234567890"`'
          example: '1234567890'
      required:
      - hookUrl
      - id
      - webhookType
    DimensionOverridesDto:
      type: object
      properties:
        dimensionId:
          type: string
          description: 'The Id of the dimension that is being overridden.

            <br><br>

            Example: `"6a8fb855-206c-4226-8695-daf67352e7ee"`'
          example: 6a8fb855-206c-4226-8695-daf67352e7ee
        consumptionPrice:
          type: string
          description: 'The price of the dimension. Must be a valid number.

            <br><br>

            Example: `"10.00"`'
          example: '10.00'
        tiers:
          type: array
          items:
            $ref: '#/components/schemas/DimensionTierDto'
        tiersGroupByMetadata:
          type: array
          items:
            $ref: '#/components/schemas/DimensionTiersGroupByMetadataDto'
      required:
      - dimensionId
    CustomerEnrollmentResponseData:
      type: object
      properties:
        offering:
          description: The offering that the customer is enrolled in. The offering is a template for the customer's contract. Any customer specific changes to the offering are stored in the overrides object.
          allOf:
          - $ref: '#/components/schemas/ReadOfferingResponseData'
        offeringEnrollmentDate:
          type: string
          description: 'The date time when a customer enrolled for an offering.

            <br><br>

            Example `"2020-12-30T23:59:59.999Z"`'
          example: '2020-12-30T23:59:59.999Z'
        overrides:
          description: Overrides for the offering. Applies Customer specific overrides to the offering. Such as a discount or free trial.
          allOf:
          - $ref: '#/components/schemas/CustomOverrides'
      required:
      - offering
      - offeringEnrollmentDate
    InvoiceLineItem:
      type: object
      properties:
        name:
          type: string
          description: 'The name of the line item as it appears on the invoice.

            <br><br>

            Example: `"Paigo Pro"`'
          example: Paigo Pro
        quantity:
          type: number
          description: 'The quantity of the line item.

            <br><br>

            Example: `1`'
          example: 1
          minimum: 0
        unitCost:
          type: number
          description: 'The unit cost of the line item.

            <br><br>

            Example: `100.00`'
          example: 100
        description:
          type: string
          description: 'The description of the line item.

            <br><br>

            Example: `"Paigo Pro subscription"`'
          example: Paigo Pro subscription
      required:
      - name
      - quantity
      - unitCost
    DimensionTiersGroupByMetadataDto:
      type: object
      properties:
        metadataGroups:
          type: object
          description: 'The metadata groups to group the tiers by. A collection of key value pairs. metadata groups are used alongside the usage passed in to define more accurately how to break up price and usage for a dimension.

            <br><br>

            Example: `{ "instanceType": "t3.medium", "region": "us-east-1", "deployment": "production"}`'
        tiers:
          type: array
          items:
            $ref: '#/components/schemas/DimensionTierDto'
      required:
      - metadataGroups
      - tiers
    ReadOfferingResponseData:
      type: object
      properties:
        offeringVisibility:
          description: 'The visibility of the offering, specifically if its private or public.

            Public offerings are designed to be shared among customers.

            Private offerings are typically used for enterprise deals which contain discounts or prepaid credits.

            <br><br>

            Example: `"private"`'
          example: private
          enum:
          - private
          - public
          type: string
          default: public
        offeringType:
          type: string
          description: 'The type of offering.

            <br>  • `usage-based` - The offering is a pure usage-based offering, or pay-as-you-go. Customers on this plan will be billed precisely based on consumption.

            <br>  • `subscription` - The offering is a fixed subscription. Customer will be billed on a fixed price.


            Example `"subscription"`'
          enum:
          - usage-based
          - subscription
          default: usage-based
          example: subscription
          externalDocs:
            description: Read more about the different offering types
            url: https://docs.paigo.tech/model-pricing-and-package/pricing-modeling-guide
        billingCycle:
          description: 'The time frame when an automatic bill should be sent leave empty for no automated billing

            <br><br>


            Example `"monthly"`'
          example: monthly
          enum:
          - monthly
          - annualToDate
          - topUp
          type: string
          default: monthly
        currency:
          description: 'The supported currency for the offering. USD is currently supported. Customers can override the currency for their account.

            However all offerings are denoted in USD.

            <br><br>

            Example `"USD"`'
          example: USD
          enum:
          - USD
          - EUR
          - CNY
          type: string
        dimensionOverrides:
          description: Overrides for the offering. Applies specific overrides to the dimensions associated with the offering. These effect the price of each dimension on the offering.
          type: array
          items:
            $ref: '#/components/schemas/DimensionOverridesDto'
        offeringId:
          type: string
          description: 'Unique identifier assigned by Paigo.

            <br><br>

            Example: `539b7f74-3832-474e-a955-6d69c5df12d0`'
          example: 539b7f74-3832-474e-a955-6d69c5df12d0
        dimensions:
          description: The list of dimensions attached to the offering.
          type: array
          items:
            $ref: '#/components/schemas/ReadDimensionResponseData'
        prepaidCredit:
          type: string
          description: 'Prepaid credit amount to be deducted as part of the bill payments. Only numerical string is allowed.

            <br><br>Example: `"20.00"` for $20.00.'
          example: '20.00'
        minimumCharge:
          type:
          - string
          - 'null'
          description: 'A minimum charge to be billed to the customer in the event that the customer''s bill is less than the minimum charge. Only on usage based offerings. Only numerical strings are allowed, must be greater than zero.

            <br><br>Example: `"32.00"` for $32.00.'
          example: '32.00'
        topUpAmount:
          type: string
          description: 'The amount to top up the account by. Only positive number string is allowed. Required if `billingCycle` is `topUp`.

            <br><br>

            Example: `"20.00"` for $20.00.'
          example: '20.00'
        topUpThreshold:
          type: string
          description: 'The threshold at which the account should be topped up. Only positive number string is allowed. Between 0 and 1.

            If not provided the default value will be 0.2 or 20%. Meaning that when the account balance reaches 20% of the the top up amount, the account will be

            topped up, and the end customer charged.

            <br><br>

            Example: `"0.2"` for 20%.'
          example: '0.2'
        subscriptionPrice:
          type: number
          description: 'The price of the subscription.

            Only positive number string is allowed.

            Only required if `offeringType` is `subscription`.

            <br><br>


            Example: `20.00` for $20.00.'
          example: 20
        freeTrialLength:
          type: string
          description: 'The length of time for a free trial. This is a number of days.

            Only positive number string is allowed.

            <br><br>


            Example: `"1"` for 1 day or 1 billing cycle depending on the offeringType.'
          example: '1'
        offeringName:
          type: string
          description: 'A friendly, human-readable name for the offering.

            <br><br>

            Example `"Entperise Plan"`'
          example: Entperise Plan
        metadata:
          type: object
          description: 'An optional key-value map of additional metadata to associate with the offerings.

            such as environment, purpose, owner, developer, contract number,

            or any arbitrary data to be associated with this usage record. Additionally, if `null` is passed for any value in the metadata object it will be removed.

            To entirely remove the metadata object, pass null to the metadata field.

            <br><br>

            Example `{"environment": "staging", "purpose": "proof-of-concept", "owner": "John Doe", "workspaceId": null}`

            <br><br>

            In the above example, the `workspaceId` metadata key will be removed from the dimension. To remove all fields pass the following.

            <br><br>

            Example `"metadata": null`'
      required:
      - offeringId
      - dimensions
      - offeringName
    ReadMeasurementResponseData:
      type: object
      properties:
        measurementMode:
          type: string
          enum:
          - infrastructureBased
          - agentBased
          - datastoreBased
          example: infrastructureBased
          description: The measurement method. See <a href="https://docs.paigo.tech/measure-usage-and-collect-data/measure-and-collect-usage-data-at-production-scale">Measure and Collect Usage Data at Production Scale</a> for more information. <br><br> Example `"agentBased"`
        measurementConfiguration:
          description: Configuration for the measurement method.
          oneOf:
          - $ref: '#/components/schemas/InfrastructureAccessInformation'
          - $ref: '#/components/schemas/AgentAccessInformation'
          - $ref: '#/components/schemas/DatastoreAccessInformationResponse'
        measurementName:
          type: string
          description: 'The human readable name of the measurement

            <br><br>

            Example `"EBS Usage"`'
          example: EBS Usage
        measurementId:
          type: string
          description: 'Unique identifier assigned by Paigo.

            <br><br>

            Example `"de388932-a7e1-11ed-afa1-0242ac120002"`'
          example: de388932-a7e1-11ed-afa1-0242ac120002
      required:
      - measurementMode
      - measurementConfiguration
      - measurementId
    StripePaymentChannelOptions:
      type: object
      properties:
        stripeCustomerId:
          type: string
          description: 'The unique identifier for the customer in Stripe

            <br><br>

            Example: `"cus_xxxxxxxxxxxxxx"`'
    InfrastructureAccessInformation:
      type: object
      properties:
        iamRoleArn:
          type: string
          description: 'The IAM role created by SaaS business and can be by Paigo AWS account to measure usage.

            <br><br>

            Example `"arn:aws:iam::214826386939:role/paigo-scraper"`'
          example: arn:aws:iam::214826386939:role/paigo-scraper
        externalId:
          type: string
          description: 'The Optional ExternalId associated with the IAM role.

            <br><br>

            Example `"123456789"`'
          example: '123456789'
          externalDocs:
            description: Read more about why externalIds are important
            url: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html
        cloudPlatform:
          type: string
          enum:
          - aws
          example: aws
          description: Cloud infrastructure platform <br><br> Example `"aws"`
        region:
          type: string
          description: 'Supported region of the infrastructure


            Example `"us-east-1"`'
          example: us-east-1
        resourceType:
          type: string
          enum:
          - ebssnapshot
          - ebs
          - k8spod
          - ec2
          - ec2egress
          - usageData
          example: ebs
          description: Underlying resource type which Paigo measures usage for. <br><br> Example `"ec2"`
      required:
      - iamRoleArn
      - cloudPlatform
      - region
      - resourceType
    ReadChildRowResponseData:
      type: object
      properties:
        childId:
          type: string
          description: 'The childId is the unique identifier for the child row <br><br> Example: `"9ffc73f3-eece-4a48-bfcd-c2c91153e97f"`'
          example: 9ffc73f3-eece-4a48-bfcd-c2c91153e97f
        parentId:
          type: string
          description: 'The parentId is the unique identifier for the parent row <br><br> Example: `"e962aefe-6134-4f28-8967-a11cfe7f0bf2"`'
          example: e962aefe-6134-4f28-8967-a11cfe7f0bf2
        billParent:
          type: string
          enum:
          - aggregated
          - separate
          description: 'This determines if the parent should be billed for invoices of the child. Defaults to `separate`. <br><br> Example: `"aggregated"`'
          example: aggregated
          default: separate
      required:
      - childId
      - parentId
      - billParent
    ReadInvoicesDto:
      type: object
      properties:
        invoiceStatus:
          description: 'The invoice status

            <br><br>


            Example: `"Draft"`'
          example: Draft
          enum:
          - Draft
          - Open
          - Paid
          - Voided
          type: string
          externalDocs:
            url: https://docs.paigo.tech/invoice-and-process-payment/issue-invoice
            description: See Invoice Life Cycle section for more details
        invoicePaymentTerm:
          description: 'The payment term for the invoice

            <br><br>

            Example: `"30"`'
          example: 30
          enum:
          - '30'
          - '60'
          - ''
          type: string
        invoiceDate:
          type: string
          description: 'The date the invoice was issued

            <br><br>

            Example: `"2021-01-01T00:00:00.000Z"`'
          example: '2021-01-01T00:00:00.000Z'
        customerId:
          type: string
          description: 'The unique identifier assigned by Paigo for the customer

            <br><br>

            Example: `"e962aefe-6134-4f28-8967-a11cfe7f0bf2"`'
          example: e962aefe-6134-4f28-8967-a11cfe7f0bf2
        totalAmountWithoutTax:
          type: number
          description: 'The total amount of the invoice without tax

            <br><br>

            Example: `100.00`'
          example: 100
        taxAmount:
          type: number
          description: 'The total amount of tax on the invoice

            <br><br>

            Example: `10.00`'
          example: 10
        amountPaid:
          type: number
          description: 'The total amount paid by the customer so far for the invoice

            <br><br>

            Example: `110.00`'
          example: 110
        invoiceUrl:
          type: string
          description: 'The URL to download the invoice. URLs are self signed and valid for 7 days after the link is generated.

            <br><br>

            Example: `"https://my-cool-bucket.s3.amazonaws.com/invoices/123MyCoolCorp980/2021-01-01/123MyCoolCorp980-2021-01-01-1234567890.pdf"`'
          example: https://my-cool-bucket.s3.amazonaws.com/invoices/123MyCoolCorp980/2021-01-01/123MyCoolCorp980-2021-01-01-1234567890.pdf
        currency:
          description: 'The currency of the invoice. Defaults to USD

            <br><br>

            Example: `"USD"`'
          example: USD
          enum:
          - USD
          - EUR
          - CNY
          type: string
        paymentLink:
          type: string
          description: 'The payment link for the invoice. Only used for invoices in the `Draft` or `Open` status. Otherwise this field will not be present.

            <br><br>

            Example: `"https://example.com/redirect"`'
          example: https://example.com/redirect
        invoiceType:
          description: 'The type of invoice. This is used to indicate how the invoice was created, whether it was created manually, via a topup event, roccuring event, etc.

            <br><br>

            Example: `"TOPUP"`'
          example: TOPUP
          enum:
          - TOPUP
          - MANUAL
          - RECURRING
          type: string
        invoiceCommunicationHistory:
          type: array
          items:
            required: false
            description: 'The communication history of the invoice. This is used to track the communication between Paigo and the customer.

              <br><br>

              Example: `[]`'
            example: []
            type: array
            items:
              $ref: '#/components/schemas/InvoiceCommunicationHistory'
        lineItems:
          description: The line items on the invoice
          type: array
          items:
            $ref: '#/components/schemas/InvoiceLineItem'
        refunds:
          description: The refunds associated with the invoice
          type: array
          items:
            $ref: '#/components/schemas/StripeRefundResponseDto'
        payments:
          description: The payments associated with the invoice
          type: array
          items:
            $ref: '#/components/schemas/ReadPaymentDto'
      required:
      - invoiceStatus
      - invoicePaymentTerm
      - invoiceDate
      - totalAmountWithoutTax
      - currency
      - invoiceCommunicationHistory
      - lineItems
      - refunds
      - payments
    AgentAccessInformation:
      type: object
      properties:
        iamRoleArn:
          type: string
          description: 'The IAM role created by SaaS business and can be by Paigo AWS account to measure usage.

            <br><br>

            Example `"arn:aws:iam::214826386939:role/paigo-scraper"`'
          example: arn:aws:iam::214826386939:role/paigo-scraper
        externalId:
          type: string
          description: 'The Optional ExternalId associated with the IAM role.

            <br><br>

            Example `"123456789"`'
          example: '123456789'
          externalDocs:
            description: Read more about why externalIds are important
            url: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html
        hostingPlatform:
          type: string
          enum:
          - k8spod
          example: k8spod
          description: Hosting platform of SaaS application
      required:
      - iamRoleArn
      - hostingPlatform
    CreateInvoiceResponseDto:
      type: object
      properties:
        invoiceId:
          type: string
        message:
          type: string
      required:
      - invoiceId
      - message
    CustomOverrides:
      type: object
      properties:
        discount:
          description: 'A discount to be applied to the billing invoices associated with the customer/offering. Optional. Applies to the total invoice.

            If `null` is passed in to the discount object, the discount will be removed from the customer. This does not generate an enrollment / unenrollment event'
          allOf:
          - $ref: '#/components/schemas/CustomerContractDiscount'
        dimensionOverrides:
          description: 'Applies custom overrides to dimensions associated with the offering. These effect the price of each dimension on the offering. Each dimension override must

            have a unique dimensionId. Dimensions not included in the overrides will be defaulted based on their defined price. Dimensions overrides cannot change the "structure" of the price.

            Meaning a tiered dimension cannot be changed to just have a consumption price and vice versa.'
          type: array
          items:
            $ref: '#/components/schemas/DimensionOverridesDto'
        freeTrialEndDate:
          type: string
          description: 'The end date of the free trial. Must be in the future and must be an RFC3339 date string.

            <br><br>

            Example: `"2021-01-01T00:00:00Z"`'
          example: '2021-01-01T00:00:00Z'
    CountBasedConsumptionUnit:
      type: object
      properties:
        unit:
          type: string
          enum:
          - count-based
          description: A dimensionless unit for a dimension of type count-based
          examples:
          - count-based
        type:
          type: string
          enum:
          - count
          description: A string that indicates the type of consumption unit
      required:
      - unit
      - type
    DimensionTierDto:
      type: object
      properties:
        tierName:
          type: string
          description: 'The name of the tier as it would appear on the invoice. If Tier name is not included, no `tierName` will be displayed on the invoice, and it will follow the default line item naming standard. See: https://docs.paigo.tech/invoicing-and-payment/issue-invoice/automatic-line-item-formatting

            <br><br>

            Example: `"Tier 1"`'
          example: Tier 1
        upperBound:
          type: string
          description: 'The upper limit of the tier, inclusive. If the upperBound is set to "inf", it must have the highest `tierPosition`. Additionally, the `upperBound` must be a multiple of the `usageIncrement`

            on the dimension. For example, if the `usageIncrement` is 100, the `upperBound` must be 100, 200, 300, etc. The `upperBound` cannot overlap with previous tiers, so tier 1''s `upperBound` must be smaller than tier 2''s.

            <br><br>

            Example: `"100"`'
          example: '100'
        unitPrice:
          type: string
          description: 'The unit price of the tier.

            <br><br>

            Example: `"10"`'
          example: '10'
        tierPosition:
          type: string
          description: 'The position of

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