Suger Offer API

Access to Offer resources

Operations 12

POST /org/{orgId}/draftOffer Create Or Update Draft Offer #
GET /org/{orgId}/offer List Offers #
POST /org/{orgId}/offer Create Offer #
DELETE /org/{orgId}/offer/{offerId} Delete Offer #
GET /org/{orgId}/offer/{offerId} Get Offer #
POST /org/{orgId}/offer/{offerId}/cancel Cancel Offer #
GET /org/{orgId}/offer/{offerId}/eula Get Offer EULA #
POST /org/{orgId}/offer/{offerId}/extendExpiryDate Extend Offer Expiry Date #
PATCH /org/{orgId}/offer/{offerId}/metaInfo Update Offer Meta Info #
POST /org/{orgId}/offer/{offerId}/notifyContacts Notify Offer Contacts #
GET /org/{orgId}/offer/{offerId}/resellerEula Get Offer Reseller EULA #
GET /org/{orgId}/offerExternalId/{offerExternalId} Get Offer By External ID #

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/suger-offer-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

suger-offer-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: support@suger.io
    name: Suger Support
    url: https://www.suger.io/support
  description: CRUD operations on a set of resources, including organizations, products, offers, entitlements, usage record groups for meterting, etc.
  title: Suger Offer API
  version: '1.0'
servers:
- url: https://api.suger.cloud
tags:
- description: Access to Offer resources
  name: Offer
paths:
  /org/{orgId}/draftOffer:
    post:
      description: Create a new draft offer or update the existing draft offer. When updating draft offer, the offer.ID is required.
      operationId: CreateOrUpdateDraftOffer
      parameters:
      - description: Organization ID
        explode: false
        in: path
        name: orgId
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkloadOffer'
        description: the draft offer to create
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadOffer'
          description: OK
        '400':
          content:
            application/json:
              schema:
                type: string
          description: Bad request error
        '405':
          content:
            application/json:
              schema:
                type: string
          description: Method not allowed
        '500':
          content:
            application/json:
              schema:
                type: string
          description: Internal error
      security:
      - APIKeyAuth: []
      summary: Create Or Update Draft Offer
      tags:
      - Offer
      x-codegen-request-body-name: data
  /org/{orgId}/offer:
    get:
      description: List offers under the given organization with pagination and optional filter.
      operationId: ListOffers
      parameters:
      - description: Organization ID
        explode: false
        in: path
        name: orgId
        required: true
        schema:
          type: string
        style: simple
      - description: filter by offer status
        explode: true
        in: query
        name: status
        required: false
        schema:
          type: string
        style: form
      - description: filter by partner
        explode: true
        in: query
        name: partner
        required: false
        schema:
          type: string
        style: form
      - description: filter by offerType
        explode: true
        in: query
        name: offerType
        required: false
        schema:
          type: string
        style: form
      - description: filter by productId
        explode: true
        in: query
        name: productId
        required: false
        schema:
          type: string
        style: form
      - description: filter by buyerId
        explode: true
        in: query
        name: buyerId
        required: false
        schema:
          type: string
        style: form
      - description: filter by hubspotDealId
        explode: true
        in: query
        name: hubspotDealId
        required: false
        schema:
          type: string
        style: form
      - description: filter by contactId
        explode: true
        in: query
        name: contactId
        required: false
        schema:
          type: string
        style: form
      - description: List pagination size, default 1000, max value is 1000
        explode: true
        in: query
        name: limit
        required: false
        schema:
          type: integer
        style: form
      - description: List pagination offset, default 0
        explode: true
        in: query
        name: offset
        required: false
        schema:
          type: integer
        style: form
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/WorkloadOffer'
                type: array
          description: OK
        '400':
          content:
            application/json:
              schema:
                type: string
          description: Bad request error
        '405':
          content:
            application/json:
              schema:
                type: string
          description: Method not allowed
        '500':
          content:
            application/json:
              schema:
                type: string
          description: Internal server error
      security:
      - APIKeyAuth: []
      summary: List Offers
      tags:
      - Offer
    post:
      description: Create a private offer under the given organization.
      operationId: CreateOffer
      parameters:
      - description: Organization ID
        explode: false
        in: path
        name: orgId
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkloadOffer'
        description: Offer to create
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadOffer'
          description: OK
        '400':
          content:
            application/json:
              schema:
                type: string
          description: Bad request error
        '405':
          content:
            application/json:
              schema:
                type: string
          description: Method not allowed
        '500':
          content:
            application/json:
              schema:
                type: string
          description: Internal server error
      security:
      - APIKeyAuth: []
      summary: Create Offer
      tags:
      - Offer
      x-codegen-request-body-name: data
  /org/{orgId}/offer/{offerId}:
    delete:
      description: The offer is soft deleted (marked as DELETED status) in Suger service. Only the offer with status = "DRAFT", "CREATE_FAILED", "EXPIRED" or "CANCELLED" is allowed to be deleted.
      operationId: DeleteOffer
      parameters:
      - description: Organization ID
        explode: false
        in: path
        name: orgId
        required: true
        schema:
          type: string
        style: simple
      - description: Offer ID
        explode: false
        in: path
        name: offerId
        required: true
        schema:
          type: string
        style: simple
      responses:
        '200':
          content:
            application/json:
              schema:
                type: string
          description: Empty string if deletion is successful
        '400':
          content:
            application/json:
              schema:
                type: string
          description: Bad request error
        '404':
          content:
            application/json:
              schema:
                type: string
          description: Not found error
        '500':
          content:
            application/json:
              schema:
                type: string
          description: Internal error
      security:
      - APIKeyAuth: []
      summary: Delete Offer
      tags:
      - Offer
    get:
      description: Get the offer by the given offer ID.
      operationId: GetOffer
      parameters:
      - description: Organization ID
        explode: false
        in: path
        name: orgId
        required: true
        schema:
          type: string
        style: simple
      - description: Offer ID
        explode: false
        in: path
        name: offerId
        required: true
        schema:
          type: string
        style: simple
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadOffer'
          description: the Offer Object
        '400':
          content:
            application/json:
              schema:
                type: string
          description: Bad request error
        '404':
          content:
            application/json:
              schema:
                type: string
          description: Not found
        '405':
          content:
            application/json:
              schema:
                type: string
          description: Method not allowed
        '500':
          content:
            application/json:
              schema:
                type: string
          description: Internal error
      security:
      - APIKeyAuth: []
      summary: Get Offer
      tags:
      - Offer
  /org/{orgId}/offer/{offerId}/cancel:
    post:
      description: Only the offer with status = "PENDING_ACCEPTANCE", "PENDING_CANCEL", "ACTIVE" or "USED" is allowed to cancel.
      operationId: CancelOffer
      parameters:
      - description: Organization ID
        explode: false
        in: path
        name: orgId
        required: true
        schema:
          type: string
        style: simple
      - description: Offer ID
        explode: false
        in: path
        name: offerId
        required: true
        schema:
          type: string
        style: simple
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadOffer'
          description: OK
        '400':
          content:
            application/json:
              schema:
                type: string
          description: Bad request error
        '405':
          content:
            application/json:
              schema:
                type: string
          description: Method not allowed
        '500':
          content:
            application/json:
              schema:
                type: string
          description: Internal error
      security:
      - APIKeyAuth: []
      summary: Cancel Offer
      tags:
      - Offer
  /org/{orgId}/offer/{offerId}/eula:
    get:
      description: Get the EULA file of the given offer ID.
      operationId: GetOfferEula
      parameters:
      - description: Organization ID
        explode: false
        in: path
        name: orgId
        required: true
        schema:
          type: string
        style: simple
      - description: Offer ID
        explode: false
        in: path
        name: offerId
        required: true
        schema:
          type: string
        style: simple
      - description: response format in JSON or string
        explode: true
        in: query
        name: format
        required: false
        schema:
          type: string
        style: form
      responses:
        '200':
          content:
            application/json:
              schema:
                type: string
          description: AWS S3 signed URL with 30 minutes expiry time
        '400':
          content:
            application/json:
              schema:
                type: string
          description: Bad request error
        '405':
          content:
            application/json:
              schema:
                type: string
          description: Method not allowed
        '500':
          content:
            application/json:
              schema:
                type: string
          description: Internal error
      security:
      - APIKeyAuth: []
      summary: Get Offer EULA
      tags:
      - Offer
  /org/{orgId}/offer/{offerId}/extendExpiryDate:
    post:
      description: Only the offer with status = "PENDING_ACCEPTANCE", "EXPIRED" or "ACCEPTED" is allowed to extend expiry date.
      operationId: ExtendPrivateOfferExpiryDate
      parameters:
      - description: Organization ID
        explode: false
        in: path
        name: orgId
        required: true
        schema:
          type: string
        style: simple
      - description: Offer ID
        explode: false
        in: path
        name: offerId
        required: true
        schema:
          type: string
        style: simple
      - description: new expiry date in YYYY-MM-DD format
        explode: true
        in: query
        name: newExpiryDate
        required: true
        schema:
          type: string
        style: form
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadOffer'
          description: OK
        '400':
          content:
            application/json:
              schema:
                type: string
          description: Bad request error
        '404':
          content:
            application/json:
              schema:
                type: string
          description: Not found
        '500':
          content:
            application/json:
              schema:
                type: string
          description: Internal error
      security:
      - APIKeyAuth: []
      summary: Extend Offer Expiry Date
      tags:
      - Offer
  /org/{orgId}/offer/{offerId}/metaInfo:
    patch:
      description: Update the meta info of the given offer.
      operationId: UpdateOfferMetaInfo
      parameters:
      - description: Organization ID
        explode: false
        in: path
        name: orgId
        required: true
        schema:
          type: string
        style: simple
      - description: Offer ID
        explode: false
        in: path
        name: offerId
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WorkloadMetaInfo'
        description: Offer meta info to update
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadMetaInfo'
          description: OK
        '400':
          content:
            application/json:
              schema:
                type: string
          description: Bad request error
        '405':
          content:
            application/json:
              schema:
                type: string
          description: Method not allowed
        '500':
          content:
            application/json:
              schema:
                type: string
          description: Internal error
      security:
      - APIKeyAuth: []
      summary: Update Offer Meta Info
      tags:
      - Offer
      x-codegen-request-body-name: data
  /org/{orgId}/offer/{offerId}/notifyContacts:
    post:
      description: Send offer notifications to the given contact ids. If contactIDs is empty, send notifications to all contacts of the offer.
      operationId: SendOfferNotifications
      parameters:
      - description: Organization ID
        explode: false
        in: path
        name: orgId
        required: true
        schema:
          type: string
        style: simple
      - description: Offer ID
        explode: false
        in: path
        name: offerId
        required: true
        schema:
          type: string
        style: simple
      requestBody:
        content:
          application/json:
            schema:
              items:
                type: string
              type: array
        description: List of Contact IDs, if emoty or nil, send notifications to all contacts of the offer
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationEvent'
          description: NotificationEvent object
        '400':
          content:
            application/json:
              schema:
                type: string
          description: Bad request error
        '405':
          content:
            application/json:
              schema:
                type: string
          description: Method not allowed
        '500':
          content:
            application/json:
              schema:
                type: string
          description: Internal error
      security:
      - APIKeyAuth: []
      summary: Notify Offer Contacts
      tags:
      - Offer
      x-codegen-request-body-name: contactIDs
  /org/{orgId}/offer/{offerId}/resellerEula:
    get:
      description: Get the Reseller EULA file of the given offer ID.
      operationId: GetOfferResellerEula
      parameters:
      - description: Organization ID
        explode: false
        in: path
        name: orgId
        required: true
        schema:
          type: string
        style: simple
      - description: Offer ID
        explode: false
        in: path
        name: offerId
        required: true
        schema:
          type: string
        style: simple
      responses:
        '200':
          content:
            application/json:
              schema:
                type: string
          description: AWS S3 signed URL with 30 minutes expiry time
        '400':
          content:
            application/json:
              schema:
                type: string
          description: Bad request error
        '405':
          content:
            application/json:
              schema:
                type: string
          description: Method not allowed
        '500':
          content:
            application/json:
              schema:
                type: string
          description: Internal error
      security:
      - APIKeyAuth: []
      summary: Get Offer Reseller EULA
      tags:
      - Offer
  /org/{orgId}/offerExternalId/{offerExternalId}:
    get:
      description: Get the offer by the given offer external ID.
      operationId: GetOfferByExternalId
      parameters:
      - description: Organization ID
        explode: false
        in: path
        name: orgId
        required: true
        schema:
          type: string
        style: simple
      - description: Offer External ID
        explode: false
        in: path
        name: offerExternalId
        required: true
        schema:
          type: string
        style: simple
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkloadOffer'
          description: the Offer Object
        '400':
          content:
            application/json:
              schema:
                type: string
          description: Bad request error
        '404':
          content:
            application/json:
              schema:
                type: string
          description: Not found
        '405':
          content:
            application/json:
              schema:
                type: string
          description: Method not allowed
        '500':
          content:
            application/json:
              schema:
                type: string
          description: Internal error
      security:
      - APIKeyAuth: []
      summary: Get Offer By External ID
      tags:
      - Offer
components:
  schemas:
    GcpMarketplacePrivateOfferTermDurationConstraint:
      example:
        defaultDuration:
          unit: MONTHLY_PERIOD
          count: 9
      properties:
        defaultDuration:
          $ref: '#/components/schemas/GcpPeriodDuration'
      type: object
    AwsMarketplaceCppoOpportunityRuleType:
      enum:
      - AvailabilityRule
      - PartnerTargetingRule
      - TargetingRule
      - TaxConfigurationRule
      type: string
      x-enum-varnames:
      - AwsMarketplaceCppoOpportunityRuleType_AvailabilityRule
      - AwsMarketplaceCppoOpportunityRuleType_PartnerTargetingRule
      - AwsMarketplaceCppoOpportunityRuleType_TargetingRule
      - AwsMarketplaceCppoOpportunityRuleType_TaxConfigurationRule
    GcpMarketplacePrivateOfferMigrationMetadata:
      properties:
        inventoryFlavorExternalName:
          description: Plan name maybe with term suffix, such as "plan-name-P1Y"
          type: string
        productExternalName:
          description: in format of "product-service-id.endpoints.gcp-project-id.cloud.goog"
          type: string
        projectId:
          description: The GCP project ID of the GCP marketplace integration.
          type: string
        projectNumber:
          description: The GCP project number of the provider.
          type: string
        providerId:
          description: 'The GCP provider ID / partner ID of the GCP marketplace integration.

            In most cases, it is the same as the project ID. But it could be different.'
          type: string
      type: object
    AwsRenewalOfferType:
      enum:
      - ''
      - External
      - AwsMarketplace
      type: string
      x-enum-varnames:
      - AwsRenewalOfferType_Unknown
      - AwsRenewalOfferType_External
      - AwsRenewalOfferType_AwsMarketplace
    BillableDimension:
      example:
        priceModelTiered: '{}'
        priceModelTieredPercentage: '{}'
        priceModelMatrix: '{}'
        minimumCommit: 5.962133916683182
        length: 1
        priceModelBulk: '{}'
        description: description
        discount: '{}'
        minimumCommitScope: '{}'
        minimumCommitProrata: true
        billableMetricId: billableMetricId
        priceModelPercentage: '{}'
        name: name
        priceModelBasic: '{}'
        category: '{}'
        priceModelVolume: '{}'
        timeUnit: '{}'
      properties:
        billableMetricId:
          description: The ID for the billable metric.
          type: string
        category:
          allOf:
          - $ref: '#/components/schemas/PriceModelCategory'
          description: The category of the pricing model. This is used to determine which pricing model to use.
          type: object
        description:
          description: Description of the dimension. This is used in the UI to display the dimension.
          type: string
        discount:
          allOf:
          - $ref: '#/components/schemas/BillingDiscount'
          description: Discount for the dimension.
          type: object
        length:
          description: The term length for the commit amount. Applicable to Direct only.
          type: integer
        minimumCommit:
          description: The minimum commit amount. Applicable to Direct only. Ignored if the value is 0 or less.
          type: number
        minimumCommitProrata:
          description: 'If the minimum commit is appled with pro-rata. Applicable to Direct only.

            If true, the minimum commit amount will be prorated based on the usage period (starting time and ending time).'
          type: boolean
        minimumCommitScope:
          allOf:
          - $ref: '#/components/schemas/BillingMinimumCommitScope'
          description: The minimum commit scope. The default value is "DIMENSION" if not set.
          type: object
        name:
          description: Display name of the dimension. This is used in the UI to display the dimension.
          type: string
        priceModelBasic:
          allOf:
          - $ref: '#/components/schemas/PriceModelBasic'
          description: The configuration for the Basic pricing model. Applicable to Direct only.
          type: object
        priceModelBulk:
          allOf:
          - $ref: '#/components/schemas/PriceModelBulk'
          description: The configuration for the Package pricing model. Applicable to Direct only.
          type: object
        priceModelMatrix:
          allOf:
          - $ref: '#/components/schemas/PriceModelMatrix'
          description: The configuration for the Matrix pricing model. Applicable to Direct only.
          type: object
        priceModelPercentage:
          allOf:
          - $ref: '#/components/schemas/PriceModelPercentage'
          description: The configuration for the Percentage pricing model. Applicable to Direct only.
          type: object
        priceModelTiered:
          allOf:
          - $ref: '#/components/schemas/PriceModelTiered'
          description: The configuration for the Tiered pricing model. Applicable to Direct only.
          type: object
        priceModelTieredPercentage:
          allOf:
          - $ref: '#/components/schemas/PriceModelTieredPercentage'
          description: The configuration for the Tiered Percentage pricing model. Applicable to Direct only.
          type: object
        priceModelVolume:
          allOf:
          - $ref: '#/components/schemas/PriceModelVolume'
          description: The configuration for the Bulk pricing model. Applicable to Direct only.
          type: object
        timeUnit:
          allOf:
          - $ref: '#/components/schemas/TimeUnit'
          description: The term unit for the commit amount. Applicable to Direct only.
          type: object
      type: object
    AzureMarketplacePriceFlexibleSchedule:
      properties:
        billingSchedule:
          items:
            $ref: '#/components/schemas/AzureMarketplacePriceBillingSchedule'
          type: array
        initialCharge:
          $ref: '#/components/schemas/AzureMarketplacePriceInitialCharge'
        price:
          type: number
      type: object
    AzureLocalizedDateTime:
      example:
        dateTimeInUtc: dateTimeInUtc
        localizePerMarket: true
      properties:
        dateTimeInUtc:
          type: string
        localizePerMarket:
          type: boolean
      type: object
    AzureMarketState:
      example:
        marketCode: marketCode
        state: Disabled
      properties:
        marketCode:
          description: ISO Country Code
          type: string
        state:
          enum:
          - Disabled
          - Enabled
          - StopSelling
          - Terminated
          type: string
      type: object
    AwsMarketplaceCppoDurationType:
      enum:
      - SPECIFIC_DATES
      - ONE_TIME
      - NO_SET_TIME
      type: string
      x-enum-varnames:
      - AwsMarketplaceCppoDurationType_SPECIFIC_DATES
      - AwsMarketplaceCppoDurationType_ONE_TIME
      - AwsMarketplaceCppoDurationType_NO_SET_TIME
    AzureMarketplacePriceBillingSchedule:
      properties:
        chargeDate:
          description: In format of YYYY-MM-DD.
          type: string
        note:
          type: string
        pricePerPaymentInUsd:
          type: number
      type: object
    GcpMarketplaceProductMeteringMetric:
      example:
        priceTiers:
        - startingUsageAmount: startingUsageAmount
          price:
            nanos: 1
            units: units
            currencyCode: currencyCode
          fromAmount: 1.0246457001441578
        - startingUsageAmount: startingUsageAmount
          price:
            nanos: 1
            units: units
            currencyCode: currencyCode
          fromAmount: 1.0246457001441578
        displayUnitDescription: displayUnitDescription
        unit: unit
        metricKind: metricKind
        displayName: displayName
        valueType: '{}'
        name: name
        description: description
        displayUnit: displayUnit
        id: id
        reportingUnit: reportingUnit
        skuId: skuId
      properties:
        description:
          description: 'Description: A detailed description of the metric, which can be used in documentation.'
          type: string
        displayName:
          type: string
        displayUnit:
          description: such as "min"
          type: string
        displayUnitDescription:
          description: such as "minute"
          type: string
        id:
          description: 'The usage metering metric/dimension key

            It is in format of "{plan_id}_{usage_dimension_key}". For example, "basic_plan_storage".'
          type: string
        metricKind:
          description: such as "DELTA"
          type: string
        name:
          description: 'Name: The resource name of the metric descriptor,

            in format of "{productServiceName}/{plan_id}_{usage_dimension_key}"'
          type: string
        priceTiers:
          description: 'Price info of this usage metering metric.

            Only applicable for the default offer (plan) and private offer.'
          items:
            $ref: '#/components/schemas/GcpPriceTier'
          type: array
        reportingUnit:
          description: such as "min"
          type: string
        skuId:
          description: The SKU ID of this usage metering metric. Applicable only in Private Offer.
          type: string
        unit:
          description: such as "min"
          type: string
        valueType:
          allOf:
          - $ref: '#/components/schemas/ValueType'
          description: such as "INT64"
          type: object
      type: object
    AzureProductFeatureAvailability:
      example:
        markets:
        - marketCode: marketCode
          friendlyName: friendlyName
        - marketCode: marketCode
          friendlyName: friendlyName
        visibility: Public
        priceSchedules:
        - isBaseSchedule: true
          schedules:
          - pricingModel: Flat
            pricingUnits:
            - unitType: unitType
              name: sharedcore
              lowerUnit: 9
              upperUnit: 6
              isUnlimitedUnit: true
            - unitType: unitType
              name: sharedcore
              lowerUnit: 9
              upperUnit: 6
              isUnlimitedUnit: true
            priceCadence:
              type: Month
              value: 9
            retailPrice:
              openPrice: 8.762042012749001
              priceTierID: priceTierID
              currencyCode: currencyCode
          - pricingModel: Flat
            pricingUnits:
            - unitType: unitType
              name: sharedcore
              lowerUnit: 9
              upperUnit: 6
              isUnlimitedUnit: true
            - unitType: unitType
              name: sharedcore
              lowerUnit: 9
              upperUnit: 6
              isUnlimitedUnit: true
            priceCadence:
              type: Month
              value: 9
            retailPrice:
              openPrice: 8.762042012749001
              priceTierID: priceTierID
              currencyCode: currencyCode
          dateTimeRange:
            endAt:
              dateTimeInUtc: dateTimeInUtc
              localizePerMarket: true
            startAt:
              dateTimeInUtc: dateTimeInUtc
              localizePerMarket: true
          marketCodes:
          - marketCodes
          - marketCodes
          friendlyName: friendlyName
        - isBaseSchedule: true
          schedules:
          - pricingModel: Flat
            pricingUnits:
            - unitType: unitType
              name: sharedcore
              lowerUnit: 9
              upperUnit: 6
              isUnlimitedUnit: true
            - unitType: unitType
              name: sharedcore
              lowerUnit: 9
              upperUnit: 6
              isUnlimitedUnit: true
            priceCadence:
              type: Month
              value: 9
            retailPrice:
              openPrice: 8.762042012749001
              priceTierID: priceTierID
              currencyCode: currencyCode
          - pricingModel: Flat
            pricingUnits:
            - unitType: unitType
              name: sharedcore
              lowerUnit: 9
              upperUnit: 6
              isUnlimitedUnit: true
            - unitType: unitType
              name: sharedcore
              lowerUnit: 9
              upperUnit: 6
              isUnlimitedUnit: true
            priceCadence:
              type: Month
              value: 9
            retailPrice:
              openPrice: 8.762042012749001
              priceTierID: priceTierID
              currencyCode: currencyCode
          dateTimeRange:
            endAt:
              dateTimeInUtc: dateTimeInUtc
              localizePerMarket: true
            startAt:
              dateTimeInUtc: dateTimeInUtc
              localizePerMarket: true
          marketCodes:
          - marketCodes
          - marketCodes
          friendlyName: friendlyName
        customMeters:
        - unitOfMeasure: unitOfMeasure
          displayName: displayName
          includedBaseQuantities:
          - quantity: 1.2315135367772556
            isInfinite: true
            recurringUnit: Monthly
          - quantity: 1.2315135367772556
            isInfinite: true
            recurringUnit: Monthly
          isEnabled: true
          priceInUsd: 5.025004791520295
          id: id
          uniqueID: uniqueID
 

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