openapi: 3.0.0 info: title: Paigo Customers Offerings 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: ,\n 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: ,\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 \"\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: Offerings description: Manage offerings in Paigo. paths: /offerings: get: operationId: Get all Offerings summary: '' description: List all offerings created in this account parameters: [] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ReadOfferingResponseDTO' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/BasicResponseDTO' tags: - Offerings security: - bearer: [] post: operationId: Create an offering summary: '' description: Create an offering parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateOfferingDTO' responses: '201': description: Offering Created content: application/json: schema: $ref: '#/components/schemas/CreateOfferingResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/BasicResponseDTO' tags: - Offerings security: - bearer: [] /offerings/{offeringId}: get: operationId: Get an offering by ID summary: '' description: Find an offering parameters: - name: offeringId required: true in: path description: 'The unique identifier assigned by Paigo.

Example: `22372d1d-1c0c-40e0-8167-af0b4f5c82f6`' schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ReadOfferingResponseDTO' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/BasicResponseDTO' '404': description: Offering Not Found content: application/json: schema: type: object properties: message: type: string description: The error message example: 'Offering with ID: 807867e0-26ca-4831-846b-a670224db055 not found' error: type: string description: The error name example: Not Found statusCode: type: number description: The HTTP status code example: 404 externalDocs: description: MDN Documentation Reference url: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 example: message: 'Offering with ID: 807867e0-26ca-4831-846b-a670224db055 not found' error: Not Found statusCode: 404 required: - message - error - statusCode tags: - Offerings security: - bearer: [] put: operationId: Update an offering summary: '' description: Update an offering parameters: - name: offeringId required: true in: path description: 'The unique identifier assigned by Paigo.

Example: `22372d1d-1c0c-40e0-8167-af0b4f5c82f6`' schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateOfferingDto' responses: '200': description: Offering Updated content: application/json: schema: $ref: '#/components/schemas/UpdateOfferingResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/BasicResponseDTO' '404': description: Offering Not Found content: application/json: schema: type: object properties: message: type: string description: The error message example: 'Offering with ID: 807867e0-26ca-4831-846b-a670224db055 not found' error: type: string description: The error name example: Not Found statusCode: type: number description: The HTTP status code example: 404 externalDocs: description: MDN Documentation Reference url: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 example: message: 'Offering with ID: 807867e0-26ca-4831-846b-a670224db055 not found' error: Not Found statusCode: 404 required: - message - error - statusCode tags: - Offerings security: - bearer: [] delete: operationId: Delete an offering summary: '' description: Delete an offering parameters: - name: offeringId required: true in: path description: 'The unique identifier assigned by Paigo.

Example: `22372d1d-1c0c-40e0-8167-af0b4f5c82f6`' schema: type: string responses: '200': description: Offering Deleted content: application/json: schema: $ref: '#/components/schemas/DeleteOfferingResponse' '404': description: Offering Not Found content: application/json: schema: type: object properties: message: type: string description: The error message example: 'Offering with ID: 807867e0-26ca-4831-846b-a670224db055 not found' error: type: string description: The error name example: Not Found statusCode: type: number description: The HTTP status code example: 404 externalDocs: description: MDN Documentation Reference url: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 example: message: 'Offering with ID: 807867e0-26ca-4831-846b-a670224db055 not found' error: Not Found statusCode: 404 required: - message - error - statusCode '409': description: Conflict - Can't delete Offering content: application/json: schema: type: object properties: message: type: string description: An error message containing the reason why the offering cannot be deleted.

Offerings cannot be deleted if they are in use by active customers. example: 'Cannot delete offering when they are attached to customers, remove customers from offerings before deleting. Current customerIds using the offering:: 80ddb121-e3d2-4d28-891d-704532c6649d' tags: - Offerings security: - bearer: [] components: schemas: CreateOfferingResponse: type: object properties: message: type: string description: A human readable message describing the outcome of the operation example: This is a sample API message. The exact message may vary based on the API behavior offeringId: type: string description: 'The identified of the offering. Example `"fcb1fa34-8f11-4832-80f2-464cbc7a8546"`' example: fcb1fa34-8f11-4832-80f2-464cbc7a8546 required: - message - offeringId 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 CreateOfferingDTO: 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.

Example: `"private"`' example: private enum: - private - public type: string default: public offeringType: type: string description: 'The type of offering.
• `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.
• `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

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.

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' prepaidCredit: type: string description: 'Prepaid credit amount to be deducted as part of the bill payments. Only numerical string is allowed.

Example: `"20.00"` for $20.00.' example: '20.00' minimumCharge: type: string nullable: true 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.

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`.

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.

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`.

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.

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.

Example `"Entperise Plan"`' example: Entperise Plan dimensionIds: description: 'Array of the identifier of the dimensions that this offering contains. Dimensions specify the type of usage that is being billed for.

Example `["092f9444-851a-43fb-9503-2228dc01b1b", "4fcafdec-eeb9-4a7f-9caf-61387102b6fa"]`' example: - 092f9444-851a-43fb-9503-2228dc01b1b - 4fcafdec-eeb9-4a7f-9caf-61387102b6fa type: array items: type: string 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.

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

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

Example `"metadata": null`' required: - offeringName 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 DatastoreAccessInformationResponse: type: object properties: platform: description: Underlying resource type which paigo connects to.

Example `"s3"` enum: - s3 - kafka type: string examples: - s3 consumerDeploymentParameters: description: The access information and configuration for deploying a datastore consumer by Paigo. Use this field in a case where Paigo is deploying a consumer and you want to provide the access information for the datastore. oneOf: - $ref: '#/components/schemas/KafkaDeploymentParametersDto' ingestion: type: string description: The Ingestion endpioint for data to be dropped off at. dlq: type: string description: The DLQ endpoint for data which has failed to be processed. iamRoleArn: type: string description: The IAM role associated with the endpoints for access management externalId: type: string description: The externalId associated with the endpoints region: type: string description: The region associated with the endpoints, defaults to `us-east-1` accountId: type: string description: 'The Unqiue ID for your cloud account.

Example `"623673123435"`' example: '623673123435' required: - platform - ingestion - dlq 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.

Example: `"private"`' example: private enum: - private - public type: string default: public offeringType: type: string description: 'The type of offering.
• `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.
• `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

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.

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.

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.

Example: `"20.00"` for $20.00.' example: '20.00' minimumCharge: type: string nullable: true 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.

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`.

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.

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`.

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.

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.

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.

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

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

Example `"metadata": null`' required: - offeringId - dimensions - offeringName DeleteOfferingResponse: type: object properties: message: type: string description: A human readable message describing the outcome of the operation example: This is a sample API message. The exact message may vary based on the API behavior offeringId: type: string description: The Unique ID defining the offering document example: 539b7f74-3832-474e-a955-6d69c5df12d0 required: - message - offeringId ReadOfferingResponseDTO: type: object properties: message: type: string description: A human readable message describing the outcome of the operation example: This is a sample API message. The exact message may vary based on the API behavior data: description: A list of offerings minItems: 0 type: array items: $ref: '#/components/schemas/ReadOfferingResponseData' required: - message - data 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

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.

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

Example: `"10"`' example: '10' tierPosition: type: string description: 'The position of the tier. The first tier must have a `tierPosition` of 1, the second tier must have a `tierPosition` of 2, etc. Order of the tiers is determined by the `tierPosition`.

Example: `"1"`' example: '1' required: - upperBound - tierPosition BasicResponseDTO: type: object properties: message: type: string description: A human readable message describing the outcome of the operation example: This is a sample API message. The exact message may vary based on the API behavior required: - message DatabasedConsumptionUnit: type: object properties: unit: enum: - byte - kilobyte - megabyte - gigabyte - kibibyte - mebibyte - gibibyte type: string description: A unit of data for a dimension of type data-based examples: - byte - kilobyte - megabyte - gigabyte type: type: string enum: - data description: A string that indicates the type of consumption unit required: - unit - type 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.

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.

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 UpdateOfferingDto: 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.

Example: `"private"`' example: private enum: - private - public type: string default: public offeringType: type: string description: 'The type of offering.
• `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.
• `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

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.

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' prepaidCredit: type: string description: 'Prepaid credit amount to be deducted as part of the bill payments. Only numerical string is allowed.

Example: `"20.00"` for $20.00.' example: '20.00' minimumCharge: type: string nullable: true 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.

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`.

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.

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`.

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.

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.

Example `"Entperise Plan"`' example: Entperise Plan dimensionIds: description: 'Array of the identifier of the dimensions that this offering contains. Dimensions specify the type of usage that is being billed for.

Example `["092f9444-851a-43fb-9503-2228dc01b1b", "4fcafdec-eeb9-4a7f-9caf-61387102b6fa"]`' example: - 092f9444-851a-43fb-9503-2228dc01b1b - 4fcafdec-eeb9-4a7f-9caf-61387102b6fa type: array items: type: string 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.

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

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

Example `"metadata": null`' UpdateOfferingResponse: type: object properties: message: type: string description: A human readable message describing the outcome of the operation example: This is a sample API message. The exact message may vary based on the API behavior offeringId: type: string description: 'The identified of the offering. Example `"fcb1fa34-8f11-4832-80f2-464cbc7a8546"`' example: fcb1fa34-8f11-4832-80f2-464cbc7a8546 required: - message - offeringId DimensionOverridesDto: type: object properties: dimensionId: type: string description: 'The Id of the dimension that is being overridden.

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.

Example: `"10.00"`' example: '10.00' tiers: type: array items: $ref: '#/components/schemas/DimensionTierDto' tiersGroupByMetadata: type: array items: $ref: '#/components/schemas/DimensionTiersGroupByMetadataDto' required: - dimensionId 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.

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.

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

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.

Example `"ec2"` required: - iamRoleArn - cloudPlatform - region - resourceType ReadDimensionResponseData: type: object properties: dimensionName: type: string description: 'A friendly, human-readable name for the dimension.

Example `"API Call"`' examples: - API Call - CPU Hours - Provisioned Capacity consumptionUnit: description: 'Consumption unit of the dimension. Paigo supports three types of consumption units: count-based, time-based, and data-based. Supported values for each consumption unit type are listed below.
- count: `"count-based"`
- time-based: `"second"`, `"minute"`, `"hour"`, `"day"`
- data-based: `"byte"`, `"kilobyte"`, `"megabyte"`, `"gigabyte"`
This field accepts a JSON object with the following schema:
``` { "type": "typeName", "unit": "unitName" } ```

Example:
`{ "type": "count", "unit": "count-based" }`
`{ "type": "time", "unit": "hour" }`
`{ "type": "data", "unit": "byte" }`
' oneOf: - $ref: '#/components/schemas/CountBasedConsumptionUnit' - $ref: '#/components/schemas/TimeBasedConsumptionUnit' - $ref: '#/components/schemas/DatabasedConsumptionUnit' usageIncrement: type: string description: 'The minimum increment for usage amount. As an example, if usage increment is 1 Hour job execution time, then 1 Hour and 5 Minutes execution time may be calculated as 1 Hour or 2 Hours, depending on the rounding algorithm field of the dimension.

Example `1`' example: '24' externalDocs: description: See how usage increment is used in the billing process url: https://docs.paigo.tech/model-pricing-and-package/define-product-metrics#understand-how-billing-aggregation-works usageEntitlement: description: 'Used with Subscription Tier Offering type.
SaaS customers subscribed to a subscription tier are entitled to use the amount of product with regard to the dimension up to the value specified in this field. For example, a subscription tier may entitle subscribers to make up to 1,000,000 API requests.' oneOf: - type: number description: The number of units that the customer is entitled to use, must be greater than or equal to 0 example: 1000000 - type: string format: inf description: The customer is entitled to use the product's dimension without any limit example: inf examples: - inf - 1000000 aggregationInterval: description: Time interval to aggregate dimension usage data for billing.

enum: - none - hour - day - month type: string example: hour default: hour externalDocs: description: See how aggregation interval is used in the billing process url: https://docs.paigo.tech/model-pricing-and-package/define-product-metrics#understand-how-billing-aggregation-works aggregationMethod: description: 'The algorithm to aggregate raw usage data for billing.

' enum: - sum - max - min - count - average - last type: string example: sum default: max externalDocs: description: See how aggregation method is used in the billing process url: https://docs.paigo.tech/model-pricing-and-package/define-product-metrics#understand-how-billing-aggregation-works dimensionId: type: string description: The unique ID for a dimension example: 8a7b5f91-3b85-4cf4-8585-dcdf17f49004 measurement: description: The measurement attached to the dimension allOf: - $ref: '#/components/schemas/ReadMeasurementResponseData' rounding: type: string description: 'The rounding algorithm that is used to calculate the amount of usage increment. Ceiling algorithm rounds up, floor algorithm rounds down, the round algrogrithm rounds to the nearest whole integer rounding half away from zero. As an example, if usage increment is 1 Hour job execution time, then 1 Hour and 5 Minutes execution time may be calculated as 2 Hours for ceiling algorithm, 1 Hour for floor algorithm, and 1 Hour for round algorithm. depending on the rounding algorithm field of the dimension.

' enum: - round - floor - ceiling overageAllowed: type: string description: 'Used with Subscription Tier Offering type.
When the usage entitlement is specified, this field decides if allowing SaaS customers to use more than entitled amount of the product dimension.' enum: - 'true' - 'false' consumptionPrice: type: string description: 'The unit price of dimension. Numerical values are represented as strings to avoid precision loss.

' example: '20.00' sampleType: type: string description: 'The sample type used for the data. Gauge is a value that can go up or down.
Currently set to gauge by default on all dimensions.' example: gauge enum: - gauge - continious paymentSchedule: type: string description: 'The payment schedule for the dimension. Determines when billing should occur for a dimension. `upfront` will occur the moment a customer is enrolled in an offering containing the dimension. `arrear` will occur at the end of the billing cycle. `upfront` is used for dimensions like purchasing a subscription, or seats for a plan. Where as `arrear` is used for dimensions like usage based billing. Dimensions can be comingled in an offering, so you can have a dimension that is billed `upfront` and another that is billed `arrear`. Optional, if not included will be `arrear` by default.' example: upfront enum: - upfront - arrear metadata: type: object description: 'An optional key-value map of additional metadata to associate with the dimensions. 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.

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

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

Example `"metadata": null`' tiers: description: Used to more granularly define the price of a dimension. For example if you want to charge a customer $1 for the first 1000 API calls and $0.50 for every API call after that you would define two tiers, the first tier with an `upperLimit` of `"1000"` and `tierPosition` of `"1"` with a `unitPrice` of `"1"` and a second tier with an `upperLimit` of `"inf"`, `tierPosition` of `"2"` and `unitPrice` of `"0.50"`. Exclusive with standard `consumptionPrice`, `entitlement` and `overageAllowed` fields. type: array items: $ref: '#/components/schemas/DimensionTierDto' tiersGroupByMetadata: description: Used to group tiers by metadata, meaning instead of grouping by the dimensionId for usage Paigo will group requests with the metadata passed in on the usage request. Exclusive with standard `consumptionPrice`, `entitlement`, `overageAllowed` and `tiers` fields. type: array items: $ref: '#/components/schemas/DimensionTiersGroupByMetadataDto' required: - dimensionName - consumptionUnit - usageIncrement - dimensionId - rounding 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.

Example: `"PLAIN"`' username: type: string description: 'The username to use when connecting to the Kafka cluster.

Example: `"admin"`' example: admin password: type: string description: 'The password to use when connecting to the Kafka cluster.

Example: `"hunter2"`' example: hunter2 bootstrapServerEndpoint: type: string description: 'The endpoint of the Kafka cluster to connect to.

Example: `"kafka.paigo.tech"`' example: kafka.paigo.tech topic: type: string description: 'The topic to subscribe to.

Example: `"test-topic"`' example: '"test-topic"' dlqTopic: type: string description: 'The DLQ topic to write to when a message fails to be processed.

Example: `"dlq-topic"`' example: '"dlq-topic"' required: - securityMechanism - username - password - bootstrapServerEndpoint - topic - dlqTopic ReadMeasurementResponseData: type: object properties: measurementMode: type: string enum: - infrastructureBased - agentBased - datastoreBased example: infrastructureBased description: The measurement method. See Measure and Collect Usage Data at Production Scale for more information.

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

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

Example `"de388932-a7e1-11ed-afa1-0242ac120002"`' example: de388932-a7e1-11ed-afa1-0242ac120002 required: - measurementMode - measurementConfiguration - measurementId 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.

Example: `{ "instanceType": "t3.medium", "region": "us-east-1", "deployment": "production"}`' tiers: type: array items: $ref: '#/components/schemas/DimensionTierDto' required: - metadataGroups - tiers securitySchemes: bearer: scheme: bearer bearerFormat: JWT type: oauth2 in: Header description: Use bearer token to authenticate `Bearer ` flows: clientCredentials: tokenUrl: https://auth.paigo.tech/oauth/token scopes: {}