Suger Offer API

Access to Offer resources

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 email required.

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

OpenAPI Specification

suger-offer-api-openapi.yml Raw ↑
openapi: 3.0.1
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 API 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:
    GcpMarketplaceResellerPrivateOfferPlanInstallmentTemplate:
      example:
        priceModelTemplate:
          baseOffer: baseOffer
          commitment:
            commitmentAmountPerPeriodTemplate:
              decimalAmountConstraint:
                minAmount:
                  nanos: 9
                  units: units
                defaultAmount:
                  nanos: 9
                  units: units
                maxAmount:
                  nanos: 9
                  units: units
              currencyCode: currencyCode
            period:
              unit: MONTHLY_PERIOD
              count: 9
            discountTemplate:
              discountPercentage:
                minAmount:
                  nanos: 9
                  units: units
                defaultAmount:
                  nanos: 9
                  units: units
                maxAmount:
                  nanos: 9
                  units: units
              discountEconomics: discountEconomics
              hideDiscountPercentage: true
              discountedPrice:
                nanos: 1
                units: units
                currencyCode: currencyCode
          consumption: overage
          payg:
            period:
              unit: MONTHLY_PERIOD
              count: 9
            discountTemplate:
              discountPercentage:
                minAmount:
                  nanos: 9
                  units: units
                defaultAmount:
                  nanos: 9
                  units: units
                maxAmount:
                  nanos: 9
                  units: units
              discountEconomics: discountEconomics
              hideDiscountPercentage: true
              discountedPrice:
                nanos: 1
                units: units
                currencyCode: currencyCode
            skuDiscountTemplates:
            - '{}'
            - '{}'
            skuRepresentation:
              skuList:
                skus:
                - skus
                - skus
              skus: skus
              skuGroupList: '{}'
          subscription: fixedPrice
          fixedPrice:
            period:
              unit: MONTHLY_PERIOD
              count: 9
            discountTemplate:
              discountPercentage:
                minAmount:
                  nanos: 9
                  units: units
                defaultAmount:
                  nanos: 9
                  units: units
                maxAmount:
                  nanos: 9
                  units: units
              discountEconomics: discountEconomics
              hideDiscountPercentage: true
              discountedPrice:
                nanos: 1
                units: units
                currencyCode: currencyCode
          overage:
            discountTemplate:
              discountPercentage:
                minAmount:
                  nanos: 9
                  units: units
                defaultAmount:
                  nanos: 9
                  units: units
                maxAmount:
                  nanos: 9
                  units: units
              discountEconomics: discountEconomics
              hideDiscountPercentage: true
              discountedPrice:
                nanos: 1
                units: units
                currencyCode: currencyCode
            skuDiscountTemplates:
            - '{}'
            - '{}'
            skuRepresentation:
              skuList:
                skus:
                - skus
                - skus
              skus: skus
              skuGroupList: '{}'
        startTime: 2000-01-23 04:56:07+00:00
      properties:
        priceModelTemplate:
          $ref: '#/components/schemas/GcpMarketplaceResellerPrivateOfferPlanPriceModelTemplate'
        startTime:
          format: date-time
          type: string
      type: object
    SnowflakeMarketplaceOffer:
      properties:
        access_end_time:
          type: string
        access_start_date_preference:
          type: string
        access_start_time:
          type: string
        additional_information:
          type: string
        comment:
          type: string
        contract_duration_months:
          type: integer
        contract_type:
          type: string
        contract_value:
          type: string
        discount:
          type: number
        display_name:
          type: string
        expiration_time:
          type: string
        invoice_start_date_preference:
          description: 'invoice start date preference: FIRST_DAY_NEXT_MONTH, OFFER_ACCEPTED_DATE'
          type: string
        invoice_start_time:
          type: string
        is_default:
          type: boolean
        name:
          type: string
        payment_terms:
          $ref: '#/components/schemas/SnowflakeMarketplaceOfferPaymentTerms'
        pricing_plan_name:
          type: string
        state:
          type: string
        state_updated_on:
          type: string
        target_consumer:
          type: string
        terms_of_service:
          allOf:
          - $ref: '#/components/schemas/SnowflakeMarketplaceOfferTermsOfService'
          description: 'terms of service: {"type":"DEFAULT"}'
          type: object
        updated_on:
          type: string
      type: object
    AzureIncludedBaseQuantity:
      example:
        quantity: 1.2315135367772556
        isInfinite: true
        recurringUnit: Monthly
      properties:
        isInfinite:
          type: boolean
        quantity:
          type: number
        recurringUnit:
          enum:
          - Monthly
          - Annual
          type: string
      type: object
    GcpMarketplacePurchaseChannel:
      properties:
        marketplace:
          type: boolean
        reseller:
          type: boolean
      type: object
    GcpMarketplaceResellerInfo:
      example:
        billingAccountOrgDisplayName: billingAccountOrgDisplayName
        resellerPrivateOfferPlanScope: resellerPrivateOfferPlanScope
        partnerAccountName: partnerAccountName
        notesToReseller: notesToReseller
        resellerContactName: resellerContactName
        resellOfferTemplateId: resellOfferTemplateId
        billingAccountId: billingAccountId
        billingAccountType: billingAccountType
        billingAccountNickname: billingAccountNickname
        resellerContactEmail: resellerContactEmail
        resellerPrivateOfferPlanId: resellerPrivateOfferPlanId
        subBillingAccount: subBillingAccount
      properties:
        billingAccountId:
          type: string
        billingAccountNickname:
          type: string
        billingAccountOrgDisplayName:
          type: string
        billingAccountType:
          type: string
        notesToReseller:
          type: string
        partnerAccountName:
          description: In the format of ""organizations/{GcpOrganizationID}/partnerAccounts/{partnerAccountID}"
          type: string
        resellOfferTemplateId:
          type: string
        resellerContactEmail:
          type: string
        resellerContactName:
          type: string
        resellerPrivateOfferPlanId:
          type: string
        resellerPrivateOfferPlanScope:
          type: string
        subBillingAccount:
          description: In the format of "billingAccounts/..."
          type: string
      type: object
    SnowflakeMarketplacePlanInstallment:
      example:
        installment_amount: 4.652396432933246
        installment_number: 8.969578798196912
      properties:
        installment_amount:
          type: number
        installment_number:
          type: number
      type: object
    AzureProductVariantTrial:
      example:
        duration: 9
        dateTimeRange:
          endAt:
            dateTimeInUtc: dateTimeInUtc
            localizePerMarket: true
          startAt:
            dateTimeInUtc: dateTimeInUtc
            localizePerMarket: true
        type: NoTrial
        durationType: Minute
      properties:
        dateTimeRange:
          $ref: '#/components/schemas/AzureLocalizedTimeRange'
        duration:
          type: integer
        durationType:
          enum:
          - Minute
          - Days
          - Months
          type: string
        type:
          enum:
          - NoTrial
          - TimedAccess
          - TimedUsage
          - Unlimited
          type: string
      type: object
    PriceModelBulk:
      properties:
        bulkAmount:
          description: A currency amount to rate usage by
          type: number
        bulkSize:
          description: 'An integer amount to represent package size. For example, 1000 here would divide

            usage by 1000 before multiplying by package_amount in rating'
          type: integer
      type: object
    AwsMarketplaceCppoOpportunityTerm:
      properties:
        CurrencyCode:
          type: string
        Documents:
          items:
            $ref: '#/components/schemas/AwsMarketplaceCatalogLegalTermDocument'
          type: array
        Duration:
          description: ISO 8601 duration format. For example, "P12M" represents 12 months.
          type: string
        Grants:
          items:
            $ref: '#/components/schemas/AwsMarketplaceCppoOpportunityUpfrontPriceGrant'
          type: array
        Id:
          type: string
        MaximumAgreementStartDate:
          type: string
        PositiveTargeting:
          $ref: '#/components/schemas/AwsMarketplaceCppoOpportunityPositiveTargeting'
        Price:
          description: For ResaleFixedUpfrontPricingTerm
          type: string
        RateCards:
          items:
            $ref: '#/components/schemas/AwsMarketplaceCatalogPricingTermRateCard'
          type: array
        Schedule:
          description: For ResalePaymentScheduleTerm
          items:
            $ref: '#/components/schemas/AwsMarketplaceCppoOpportunityPaymentSchedule'
          type: array
        Type:
          $ref: '#/components/schemas/AwsMarketplaceCppoOpportunityTermType'
      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
    NotificationEventAction:
      enum:
      - ''
      - ABNORMAL_ALERT
      - ACCEPT
      - ADD
      - APPROVE
      - CANCEL
      - CLOSE
      - CREATE
      - DELETE
      - ARCHIVE
      - DISBURSE
      - END_SOON
      - EXPIRE
      - EXPIRE_SOON
      - MERGE
      - METER
      - NEW_CLIENT_SIGNUP
      - NOTIFY
      - NOTIFY_CONTACTS
      - OPEN_EMAIL
      - PENDING_CANCEL
      - PENDING_ACCEPTANCE
      - REINSTATE
      - REJECT
      - REOPEN
      - CHARGE
      - REFUND
      - ISSUE
      - SIGN
      - ROTATE_SECRET
      - SUSPEND
      - TEST
      - UPDATE
      - ACE_ENGAGEMENT_SCORE_UPDATE
      - ACE_SALES_REP_UPDATE
      - ACE_CUSTOMER_EMAIL_UPDATE
      - AZURE_STATUS_UPDATE
      - SUBMIT_APPROVAL_REQUEST
      - REVIEW_APPROVAL_REQUEST
      - COMPLETE
      - FAIL
      - WEBHOOK
      - MARKETPLACE_CONTACT_EMAIL_UPDATE
      type: string
      x-enum-comments:
        NotificationEventAction_ADD: Add user to organization
      x-enum-varnames:
      - NotificationEventAction_UNKNOWN
      - NotificationEventAction_ABNORMAL_ALERT
      - NotificationEventAction_ACCEPT
      - NotificationEventAction_ADD
      - NotificationEventAction_APPROVE
      - NotificationEventAction_CANCEL
      - NotificationEventAction_CLOSE
      - NotificationEventAction_CREATE
      - NotificationEventAction_DELETE
      - NotificationEventAction_ARCHIVE
      - NotificationEventAction_DISBURSE
      - NotificationEventAction_END_SOON
      - NotificationEventAction_EXPIRE
      - NotificationEventAction_EXPIRE_SOON
      - NotificationEventAction_MERGE
      - NotificationEventAction_METER
      - NotificationEventAction_NEW_CLIENT_SIGNUP
      - NotificationEventAction_NOTIFY
      - NotificationEventAction_NOTIFY_CONTACTS
      - NotificationEventAction_OPEN_EMAIL
      - NotificationEventAction_PENDING_CANCEL
      - NotificationEventAction_PENDING_ACCEPTANCE
      - NotificationEventAction_REINSTATE
      - NotificationEventAction_REJECT
      - NotificationEventAction_REOPEN
      - NotificationEventAction_CHARGE
      - NotificationEventAction_REFUND
      - NotificationEventAction_ISSUE
      - NotificationEventAction_SIGN
      - NotificationEventAction_ROTATE_SECRET
      - NotificationEventAction_SUSPEND
      - NotificationEventAction_TEST
      - NotificationEventAction_UPDATE
      - NotificationEventAction_ACE_ENGAGEMENT_SCORE_UPDATE
      - NotificationEventAction_ACE_SALES_REP_UPDATE
      - NotificationEventAction_ACE_CUSTOMER_EMAIL_UPDATE
      - NotificationEventAction_AZURE_STATUS_UPDATE
      - NotificationEventAction_SUBMIT_APPROVAL_REQUEST
      - NotificationEventAction_REVIEW_APPROVAL_REQUEST
      - NotificationEventAction_COMPLETE
      - NotificationEventAction_FAIL
      - NotificationEventAction_WEBHOOK
      - NotificationEventAction_MARKETPLACE_CONTACT_EMAIL_UPDATE
    GcpMarketplacePrivateOfferInstallmentTimeline:
      properties:
        installments:
          items:
            $ref: '#/components/schemas/GcpMarketplacePrivateOfferInstallment'
          type: array
      type: obje

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