Suger · Capability

Suger API — Offer

Suger API — Offer. 12 operations. Lead operation: Create Or Update Draft Offer. Self-contained Naftiko capability covering one Suger business surface.

Run with Naftiko SugerOffer

What You Can Do

POST
Createorupdatedraftoffer — Create Or Update Draft Offer
/v1/org/{orgid}/draftoffer
GET
Listoffers — List Offers
/v1/org/{orgid}/offer
POST
Createoffer — Create Offer
/v1/org/{orgid}/offer
DELETE
Deleteoffer — Delete Offer
/v1/org/{orgid}/offer/{offerid}
GET
Getoffer — Get Offer
/v1/org/{orgid}/offer/{offerid}
POST
Canceloffer — Cancel Offer
/v1/org/{orgid}/offer/{offerid}/cancel
GET
Getoffereula — Get Offer EULA
/v1/org/{orgid}/offer/{offerid}/eula
POST
Extendprivateofferexpirydate — Extend Offer Expiry Date
/v1/org/{orgid}/offer/{offerid}/extendexpirydate
PATCH
Updateoffermetainfo — Update Offer Meta Info
/v1/org/{orgid}/offer/{offerid}/metainfo
POST
Sendoffernotifications — Notify Offer Contacts
/v1/org/{orgid}/offer/{offerid}/notifycontacts
GET
Getofferresellereula — Get Offer Reseller EULA
/v1/org/{orgid}/offer/{offerid}/resellereula
GET
Getofferbyexternalid — Get Offer By External ID
/v1/org/{orgid}/offerexternalid/{offerexternalid}

MCP Tools

create-update-draft-offer

Create Or Update Draft Offer

list-offers

List Offers

read-only idempotent
create-offer

Create Offer

delete-offer

Delete Offer

idempotent
get-offer

Get Offer

read-only idempotent
cancel-offer

Cancel Offer

get-offer-eula

Get Offer EULA

read-only idempotent
extend-offer-expiry-date

Extend Offer Expiry Date

update-offer-meta-info

Update Offer Meta Info

idempotent
notify-offer-contacts

Notify Offer Contacts

get-offer-reseller-eula

Get Offer Reseller EULA

read-only idempotent
get-offer-external-id

Get Offer By External ID

read-only idempotent

Capability Spec

suger-offer.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Suger API — Offer
  description: 'Suger API — Offer. 12 operations. Lead operation: Create Or Update Draft Offer. Self-contained Naftiko capability
    covering one Suger business surface.'
  tags:
  - Suger
  - Offer
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    SUGER_API_KEY: SUGER_API_KEY
capability:
  consumes:
  - type: http
    namespace: suger-offer
    baseUri: https://api.suger.cloud
    description: Suger API — Offer business capability. Self-contained, no shared references.
    resources:
    - name: org-orgId-draftOffer
      path: /org/{orgId}/draftOffer
      operations:
      - name: createorupdatedraftoffer
        method: POST
        description: Create Or Update Draft Offer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: org-orgId-offer
      path: /org/{orgId}/offer
      operations:
      - name: listoffers
        method: GET
        description: List Offers
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: status
          in: query
          type: string
          description: filter by offer status
        - name: partner
          in: query
          type: string
          description: filter by partner
        - name: offerType
          in: query
          type: string
          description: filter by offerType
        - name: productId
          in: query
          type: string
          description: filter by productId
        - name: buyerId
          in: query
          type: string
          description: filter by buyerId
        - name: hubspotDealId
          in: query
          type: string
          description: filter by hubspotDealId
        - name: contactId
          in: query
          type: string
          description: filter by contactId
        - name: limit
          in: query
          type: integer
          description: List pagination size, default 1000, max value is 1000
        - name: offset
          in: query
          type: integer
          description: List pagination offset, default 0
      - name: createoffer
        method: POST
        description: Create Offer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: org-orgId-offer-offerId
      path: /org/{orgId}/offer/{offerId}
      operations:
      - name: deleteoffer
        method: DELETE
        description: Delete Offer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: offerId
          in: path
          type: string
          description: Offer ID
          required: true
      - name: getoffer
        method: GET
        description: Get Offer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: offerId
          in: path
          type: string
          description: Offer ID
          required: true
    - name: org-orgId-offer-offerId-cancel
      path: /org/{orgId}/offer/{offerId}/cancel
      operations:
      - name: canceloffer
        method: POST
        description: Cancel Offer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: offerId
          in: path
          type: string
          description: Offer ID
          required: true
    - name: org-orgId-offer-offerId-eula
      path: /org/{orgId}/offer/{offerId}/eula
      operations:
      - name: getoffereula
        method: GET
        description: Get Offer EULA
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: offerId
          in: path
          type: string
          description: Offer ID
          required: true
        - name: format
          in: query
          type: string
          description: response format in JSON or string
    - name: org-orgId-offer-offerId-extendExpiryDate
      path: /org/{orgId}/offer/{offerId}/extendExpiryDate
      operations:
      - name: extendprivateofferexpirydate
        method: POST
        description: Extend Offer Expiry Date
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: offerId
          in: path
          type: string
          description: Offer ID
          required: true
        - name: newExpiryDate
          in: query
          type: string
          description: new expiry date in YYYY-MM-DD format
          required: true
    - name: org-orgId-offer-offerId-metaInfo
      path: /org/{orgId}/offer/{offerId}/metaInfo
      operations:
      - name: updateoffermetainfo
        method: PATCH
        description: Update Offer Meta Info
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: offerId
          in: path
          type: string
          description: Offer ID
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: org-orgId-offer-offerId-notifyContacts
      path: /org/{orgId}/offer/{offerId}/notifyContacts
      operations:
      - name: sendoffernotifications
        method: POST
        description: Notify Offer Contacts
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: offerId
          in: path
          type: string
          description: Offer ID
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: org-orgId-offer-offerId-resellerEula
      path: /org/{orgId}/offer/{offerId}/resellerEula
      operations:
      - name: getofferresellereula
        method: GET
        description: Get Offer Reseller EULA
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: offerId
          in: path
          type: string
          description: Offer ID
          required: true
    - name: org-orgId-offerExternalId-offerExternalId
      path: /org/{orgId}/offerExternalId/{offerExternalId}
      operations:
      - name: getofferbyexternalid
        method: GET
        description: Get Offer By External ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: offerExternalId
          in: path
          type: string
          description: Offer External ID
          required: true
    authentication:
      type: apikey
      key: Authorization
      value: '{{env.SUGER_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: suger-offer-rest
    port: 8080
    description: REST adapter for Suger API — Offer. One Spectral-compliant resource per consumed operation, prefixed with
      /v1.
    resources:
    - path: /v1/org/{orgid}/draftoffer
      name: org-orgid-draftoffer
      description: REST surface for org-orgId-draftOffer.
      operations:
      - method: POST
        name: createorupdatedraftoffer
        description: Create Or Update Draft Offer
        call: suger-offer.createorupdatedraftoffer
        with:
          orgId: rest.orgId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/offer
      name: org-orgid-offer
      description: REST surface for org-orgId-offer.
      operations:
      - method: GET
        name: listoffers
        description: List Offers
        call: suger-offer.listoffers
        with:
          orgId: rest.orgId
          status: rest.status
          partner: rest.partner
          offerType: rest.offerType
          productId: rest.productId
          buyerId: rest.buyerId
          hubspotDealId: rest.hubspotDealId
          contactId: rest.contactId
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createoffer
        description: Create Offer
        call: suger-offer.createoffer
        with:
          orgId: rest.orgId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/offer/{offerid}
      name: org-orgid-offer-offerid
      description: REST surface for org-orgId-offer-offerId.
      operations:
      - method: DELETE
        name: deleteoffer
        description: Delete Offer
        call: suger-offer.deleteoffer
        with:
          orgId: rest.orgId
          offerId: rest.offerId
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: getoffer
        description: Get Offer
        call: suger-offer.getoffer
        with:
          orgId: rest.orgId
          offerId: rest.offerId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/offer/{offerid}/cancel
      name: org-orgid-offer-offerid-cancel
      description: REST surface for org-orgId-offer-offerId-cancel.
      operations:
      - method: POST
        name: canceloffer
        description: Cancel Offer
        call: suger-offer.canceloffer
        with:
          orgId: rest.orgId
          offerId: rest.offerId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/offer/{offerid}/eula
      name: org-orgid-offer-offerid-eula
      description: REST surface for org-orgId-offer-offerId-eula.
      operations:
      - method: GET
        name: getoffereula
        description: Get Offer EULA
        call: suger-offer.getoffereula
        with:
          orgId: rest.orgId
          offerId: rest.offerId
          format: rest.format
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/offer/{offerid}/extendexpirydate
      name: org-orgid-offer-offerid-extendexpirydate
      description: REST surface for org-orgId-offer-offerId-extendExpiryDate.
      operations:
      - method: POST
        name: extendprivateofferexpirydate
        description: Extend Offer Expiry Date
        call: suger-offer.extendprivateofferexpirydate
        with:
          orgId: rest.orgId
          offerId: rest.offerId
          newExpiryDate: rest.newExpiryDate
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/offer/{offerid}/metainfo
      name: org-orgid-offer-offerid-metainfo
      description: REST surface for org-orgId-offer-offerId-metaInfo.
      operations:
      - method: PATCH
        name: updateoffermetainfo
        description: Update Offer Meta Info
        call: suger-offer.updateoffermetainfo
        with:
          orgId: rest.orgId
          offerId: rest.offerId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/offer/{offerid}/notifycontacts
      name: org-orgid-offer-offerid-notifycontacts
      description: REST surface for org-orgId-offer-offerId-notifyContacts.
      operations:
      - method: POST
        name: sendoffernotifications
        description: Notify Offer Contacts
        call: suger-offer.sendoffernotifications
        with:
          orgId: rest.orgId
          offerId: rest.offerId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/offer/{offerid}/resellereula
      name: org-orgid-offer-offerid-resellereula
      description: REST surface for org-orgId-offer-offerId-resellerEula.
      operations:
      - method: GET
        name: getofferresellereula
        description: Get Offer Reseller EULA
        call: suger-offer.getofferresellereula
        with:
          orgId: rest.orgId
          offerId: rest.offerId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/offerexternalid/{offerexternalid}
      name: org-orgid-offerexternalid-offerexternalid
      description: REST surface for org-orgId-offerExternalId-offerExternalId.
      operations:
      - method: GET
        name: getofferbyexternalid
        description: Get Offer By External ID
        call: suger-offer.getofferbyexternalid
        with:
          orgId: rest.orgId
          offerExternalId: rest.offerExternalId
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: suger-offer-mcp
    port: 9090
    transport: http
    description: MCP adapter for Suger API — Offer. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: create-update-draft-offer
      description: Create Or Update Draft Offer
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: suger-offer.createorupdatedraftoffer
      with:
        orgId: tools.orgId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: list-offers
      description: List Offers
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: suger-offer.listoffers
      with:
        orgId: tools.orgId
        status: tools.status
        partner: tools.partner
        offerType: tools.offerType
        productId: tools.productId
        buyerId: tools.buyerId
        hubspotDealId: tools.hubspotDealId
        contactId: tools.contactId
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.
    - name: create-offer
      description: Create Offer
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: suger-offer.createoffer
      with:
        orgId: tools.orgId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-offer
      description: Delete Offer
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: suger-offer.deleteoffer
      with:
        orgId: tools.orgId
        offerId: tools.offerId
      outputParameters:
      - type: object
        mapping: $.
    - name: get-offer
      description: Get Offer
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: suger-offer.getoffer
      with:
        orgId: tools.orgId
        offerId: tools.offerId
      outputParameters:
      - type: object
        mapping: $.
    - name: cancel-offer
      description: Cancel Offer
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: suger-offer.canceloffer
      with:
        orgId: tools.orgId
        offerId: tools.offerId
      outputParameters:
      - type: object
        mapping: $.
    - name: get-offer-eula
      description: Get Offer EULA
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: suger-offer.getoffereula
      with:
        orgId: tools.orgId
        offerId: tools.offerId
        format: tools.format
      outputParameters:
      - type: object
        mapping: $.
    - name: extend-offer-expiry-date
      description: Extend Offer Expiry Date
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: suger-offer.extendprivateofferexpirydate
      with:
        orgId: tools.orgId
        offerId: tools.offerId
        newExpiryDate: tools.newExpiryDate
      outputParameters:
      - type: object
        mapping: $.
    - name: update-offer-meta-info
      description: Update Offer Meta Info
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: suger-offer.updateoffermetainfo
      with:
        orgId: tools.orgId
        offerId: tools.offerId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: notify-offer-contacts
      description: Notify Offer Contacts
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: suger-offer.sendoffernotifications
      with:
        orgId: tools.orgId
        offerId: tools.offerId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: get-offer-reseller-eula
      description: Get Offer Reseller EULA
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: suger-offer.getofferresellereula
      with:
        orgId: tools.orgId
        offerId: tools.offerId
      outputParameters:
      - type: object
        mapping: $.
    - name: get-offer-external-id
      description: Get Offer By External ID
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: suger-offer.getofferbyexternalid
      with:
        orgId: tools.orgId
        offerExternalId: tools.offerExternalId
      outputParameters:
      - type: object
        mapping: $.