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