OpenAPI Specification
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 Product API
version: '1.0'
servers:
- url: https://api.suger.cloud
tags:
- description: Access to Product resources
name: Product
paths:
/org/{orgId}/draftProduct:
post:
description: Create a new draft product or update the existing draft product. When updating draft product, the product.ID is required.
operationId: CreateOrUpdateDraftProduct
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/WorkloadProduct'
description: the draft product to create
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkloadProduct'
description: OK
'400':
content:
application/json:
schema:
type: string
description: Bad request error
'500':
content:
application/json:
schema:
type: string
description: Internal server error
security:
- APIKeyAuth: []
summary: Create Or Update Draft Product
tags:
- Product
x-codegen-request-body-name: data
/org/{orgId}/partner/{partner}/product:
get:
description: list all products under the given organization and cloud partner
operationId: ListProductsByPartner
parameters:
- description: Organization ID
explode: false
in: path
name: orgId
required: true
schema:
type: string
style: simple
- description: Cloud Partner
explode: false
in: path
name: partner
required: true
schema:
enum:
- AWS
- AZURE
- GCP
type: string
style: simple
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/WorkloadProduct'
type: array
description: OK
'400':
content:
application/json:
schema:
type: string
description: Bad request error
'500':
content:
application/json:
schema:
type: string
description: Internal server error
security:
- APIKeyAuth: []
summary: List Products By Partner
tags:
- Product
/org/{orgId}/product:
get:
description: list all products under the given organization
operationId: ListProducts
parameters:
- description: Organization ID
explode: false
in: path
name: orgId
required: true
schema:
type: string
style: simple
- description: filter by partner
explode: true
in: query
name: partner
required: false
schema:
enum:
- AWS
- AZURE
- GCP
- STRIPE
type: string
style: form
- description: List pagination size, default 100, 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/WorkloadProduct'
type: array
description: OK
'400':
content:
application/json:
schema:
type: string
description: Bad request error
'500':
content:
application/json:
schema:
type: string
description: Internal server error
security:
- APIKeyAuth: []
summary: List Products
tags:
- Product
post:
description: create a new product in the marketplace
operationId: CreateProduct
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/WorkloadProduct'
description: the product to create
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkloadProduct'
description: OK
'400':
content:
application/json:
schema:
type: string
description: Bad request error
'500':
content:
application/json:
schema:
type: string
description: Internal server error
security:
- APIKeyAuth: []
summary: Create Product
tags:
- Product
x-codegen-request-body-name: data
/org/{orgId}/product/{productId}:
delete:
description: The product is soft deleted (marked as DELETED status) in Suger service. only the products with non PUBLIC status are allowed to be deleted.
operationId: DeleteProduct
parameters:
- description: Organization ID
explode: false
in: path
name: orgId
required: true
schema:
type: string
style: simple
- description: Product ID
explode: false
in: path
name: productId
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 server error
security:
- APIKeyAuth: []
summary: Delete Product
tags:
- Product
get:
description: get product by product id
operationId: GetProduct
parameters:
- description: Organization ID
explode: false
in: path
name: orgId
required: true
schema:
type: string
style: simple
- description: Product ID
explode: false
in: path
name: productId
required: true
schema:
type: string
style: simple
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkloadProduct'
description: OK
'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 server error
security:
- APIKeyAuth: []
summary: Get Product
tags:
- Product
patch:
description: update product info, no price update is allowed via this API.
operationId: UpdateProduct
parameters:
- description: Organization ID
explode: false
in: path
name: orgId
required: true
schema:
type: string
style: simple
- description: Product ID
explode: false
in: path
name: productId
required: true
schema:
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WorkloadProduct'
description: the product to update
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkloadProduct'
description: OK
'400':
content:
application/json:
schema:
type: string
description: Bad request error
'500':
content:
application/json:
schema:
type: string
description: Internal server error
security:
- APIKeyAuth: []
summary: Update Product
tags:
- Product
x-codegen-request-body-name: data
/org/{orgId}/product/{productId}/dimension:
get:
description: list all metering dimensions of the given product
operationId: ListProductMeteringDimensions
parameters:
- description: Organization ID
explode: false
in: path
name: orgId
required: true
schema:
type: string
style: simple
- description: Product ID
explode: false
in: path
name: productId
required: true
schema:
type: string
style: simple
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/MeteringDimension'
type: array
description: OK
'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 server error
security:
- APIKeyAuth: []
summary: List Metering Dimensions Of Product
tags:
- Product
/org/{orgId}/product/{productId}/fulfillmentUrl:
patch:
description: update the fulfillment url of the given product
operationId: UpdateProductFulfillmentUrl
parameters:
- description: Organization ID
explode: false
in: path
name: orgId
required: true
schema:
type: string
style: simple
- description: Product ID
explode: false
in: path
name: productId
required: true
schema:
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateProductParams'
description: Update Product Params
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkloadProduct'
description: OK
'500':
content: {}
description: Internal Server Error
security:
- APIKeyAuth: []
summary: Update Product Fulfillment Url
tags:
- Product
x-codegen-request-body-name: data
/org/{orgId}/product/{productId}/metaInfo:
patch:
description: Update the meta info of the given product.
operationId: UpdateProductMetaInfo
parameters:
- description: Organization ID
explode: false
in: path
name: orgId
required: true
schema:
type: string
style: simple
- description: Product ID
explode: false
in: path
name: productId
required: true
schema:
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WorkloadMetaInfo'
description: Product 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
'500':
content:
application/json:
schema:
type: string
description: internal server error
security:
- APIKeyAuth: []
summary: Update Product Meta Info
tags:
- Product
x-codegen-request-body-name: data
/org/{orgId}/product/{productId}/publish:
patch:
description: publish the given product to the public status in the marketplace
operationId: PublishProduct
parameters:
- description: Organization ID
explode: false
in: path
name: orgId
required: true
schema:
type: string
style: simple
- description: Product ID
explode: false
in: path
name: productId
required: true
schema:
type: string
style: simple
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/WorkloadProduct'
description: the product to publish
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkloadProduct'
description: OK
'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 server error
security:
- APIKeyAuth: []
summary: Publish Product
tags:
- Product
x-codegen-request-body-name: data
components:
schemas:
AzureIncludedBaseQuantity:
example:
quantity: 1.2315135367772556
isInfinite: true
recurringUnit: Monthly
properties:
isInfinite:
type: boolean
quantity:
type: number
recurringUnit:
enum:
- Monthly
- Annual
type: string
type: object
AwsProductPromotionalResources:
example:
AdditionalResources:
- Type: Type
Text: Text
Url: Url
- Type: Type
Text: Text
Url: Url
LogoUrl: LogoUrl
Videos:
- Type: Type
Title: Title
Url: Url
- Type: Type
Title: Title
Url: Url
properties:
AdditionalResources:
items:
$ref: '#/components/schemas/AwsProductAdditionalResource'
type: array
LogoUrl:
type: string
Videos:
items:
$ref: '#/components/schemas/AwsProductVideo'
type: array
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
AwsMarketplaceProductVisibility:
enum:
- Limited
- Public
- Restricted
- Unavailable
- Draft
type: string
x-enum-varnames:
- AwsMarketplaceProductVisibility_Limited
- AwsMarketplaceProductVisibility_Public
- AwsMarketplaceProductVisibility_Restricted
- AwsMarketplaceProductVisibility_Unavailable
- AwsMarketplaceProductVisibility_Draft
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
AwsProduct:
example:
Repositories:
- Type: Type
Url: Url
- Type: Type
Url: Url
Description:
UsW9Submitted: true
Highlights:
- Highlights
- Highlights
Categories:
- Categories
- Categories
ProductCode: ProductCode
SearchKeywords:
- SearchKeywords
- SearchKeywords
ProductTitle: ProductTitle
EuW8Submitted: true
ShortDescription: ShortDescription
LongDescription: LongDescription
Manufacturer: Manufacturer
Visibility: Limited
AssociatedProducts: '{}'
Sku: Sku
Registered: true
Versions:
- CreationDate: 2000-01-23 04:56:07+00:00
Id: Id
DeliveryOptions:
- Recommendations: '{}'
Type: Type
AmiAlias: AmiAlias
SourceId: SourceId
Title: Title
Visibility: Visibility
FulfillmentUrl: FulfillmentUrl
Id: Id
ShortDescription: ShortDescription
- Recommendations: '{}'
Type: Type
AmiAlias: AmiAlias
SourceId: SourceId
Title: Title
Visibility: Visibility
FulfillmentUrl: FulfillmentUrl
Id: Id
ShortDescription: ShortDescription
ReleaseNotes: ReleaseNotes
VersionTitle: VersionTitle
- CreationDate: 2000-01-23 04:56:07+00:00
Id: Id
DeliveryOptions:
- Recommendations: '{}'
Type: Type
AmiAlias: AmiAlias
SourceId: SourceId
Title: Title
Visibility: Visibility
FulfillmentUrl: FulfillmentUrl
Id: Id
ShortDescription: ShortDescription
- Recommendations: '{}'
Type: Type
AmiAlias: AmiAlias
SourceId: SourceId
Title: Title
Visibility: Visibility
FulfillmentUrl: FulfillmentUrl
Id: Id
ShortDescription: ShortDescription
ReleaseNotes: ReleaseNotes
VersionTitle: VersionTitle
productId: productId
PromotionalResources:
AdditionalResources:
- Type: Type
Text: Text
Url: Url
- Type: Type
Text: Text
Url: Url
LogoUrl: LogoUrl
Videos:
- Type: Type
Title: Title
Url: Url
- Type: Type
Title: Title
Url: Url
dataFeedProductId: dataFeedProductId
Dimensions:
- Types:
- Types
- Types
Description: Description
Length: 2
Rate: 6.778324963048013
TimeUnit: DAY
Unit: Unit
Key: Key
Name: Name
- Types:
- Types
- Types
Description: Description
Length: 2
Rate: 6.778324963048013
TimeUnit: DAY
Unit: Unit
Key: Key
Name: Name
SignatureVerificationKeys:
- Status: Status
PublicKey: PublicKey
PublicKeyVersion: 2
- Status: Status
PublicKey: PublicKey
PublicKeyVersion: 2
SupportInformation:
Description: Description
properties:
Description:
$ref: '#/components/schemas/AwsProductDescription'
Dimensions:
items:
$ref: '#/components/schemas/AwsProductDimension'
type: array
PromotionalResources:
$ref: '#/components/schemas/AwsProductPromotionalResources'
Repositories:
items:
$ref: '#/components/schemas/AwsProductRepository'
type: array
SignatureVerificationKeys:
items:
$ref: '#/components/schemas/AwsProductSignatureVerificationKey'
type: array
SupportInformation:
$ref: '#/components/schemas/AwsProductSupportInformation'
Versions:
items:
$ref: '#/components/schemas/AwsProductVersion'
type: array
dataFeedProductId:
description: The product Id in AWS Marketplace Data Feed Service.
type: string
productId:
description: AWS Product ID
type: string
type: object
AzureMarketplacePriceAndAvailabilityPrivateOfferPrice:
example:
customMeters:
priceInputOption: perMarket
meters: '{}'
recurrentPrice:
recurrentPriceMode: flatRate
userLimits:
min: 6.84685269835264
max: 1.4894159098541704
priceInputOption: perMarket
prices:
- billingFrequency: '{}'
pricePerPaymentInUsd: 1.2315135367772556
flexibleSchedule: '{}'
contractDuration: '{}'
billingTerm:
type: day
value: 7.386281948385884
paymentOption:
type: day
value: 7.386281948385884
prices:
- markets:
- markets
- markets
price: 1.0246457001441578
currency: currency
- markets:
- markets
- markets
price: 1.0246457001441578
currency: currency
- billingFrequency: '{}'
pricePerPaymentInUsd: 1.2315135367772556
flexibleSchedule: '{}'
contractDuration: '{}'
billingTerm:
type: day
value: 7.386281948385884
paymentOption:
type: day
value: 7.386281948385884
prices:
- markets:
- markets
- markets
price: 1.0246457001441578
currency: currency
- markets:
- markets
- markets
price: 1.0246457001441578
currency: currency
properties:
customMeters:
$ref: '#/components/schemas/AzureMarketplacePriceAndAvailabilityPrivateOfferCustomMeters'
recurrentPrice:
$ref: '#/components/schemas/AzureMarketplacePriceAndAvailabilityRecurrentPrice'
type: object
GcpMarketplacePriceModel:
enum:
- FREE
- SUBSCRIPTION
- USAGE
- SUBSCRIPTION_PLUS_USAGE
type: string
x-enum-varnames:
- GcpMarketplacePriceModel_FREE
- GcpMarketplacePriceModel_SUBSCRIPTION
- GcpMarketplacePriceModel_USAGE
- GcpMarketplacePriceModel_SUBSCRIPTION_PLUS_USAGE
AzureProductListing:
example:
summary: summary
accessInformation: accessInformation
keywords:
- keywords
- keywords
compatibleProducts:
- compatibleProducts
- compatibleProducts
description: description
shortDescription: shortDescription
languageCode: languageCode
title: title
gettingStartedInstructions: gettingStartedInstructions
assets:
- fileName: fileName
fileSasUri: fileSasUri
description: description
id: id
state: PendingUpload
type: type
publisherDefinedSasUri: publisherDefinedSasUri
friendlyName: friendlyName
order: 4
resourceType: ListingAsset
- fileName: fileName
fileSasUri: fileSasUri
description: description
id: id
state: PendingUpload
type: type
publisherDefinedSasUri: publisherDefinedSasUri
friendlyName: friendlyName
order: 4
resourceType: ListingAsset
listingUris:
- displayText: displayText
subtype: subtype
type: type
uri: uri
- displayText: displayText
subtype: subtype
type: type
uri: uri
publisherName: publisherName
productDisplayName: productDisplayName
listingContacts:
- phone: phone
name: name
type: CustomerSupport
uri: uri
email: email
- phone: phone
name: name
type: CustomerSupport
uri: uri
email: email
id: id
resourceType: AzureListing
properties:
accessInformation:
type: string
assets:
description: Not original fields. They are populated by other API calls
items:
$ref: '#/components/schemas/AzureProductListingAsset'
type: array
compatibleProducts:
items:
type: string
type: array
description:
type: string
gettingStartedInstructions:
type: string
id:
type: string
keywords:
items:
type: string
type: array
languageCode:
type: string
listingContacts:
items:
$ref: '#/components/schemas/AzureListingContact'
type: array
listingUris:
items:
$ref: '#/components/schemas/AzureListingUri'
type: array
productDisplayName:
type: string
publisherName:
type: string
resourceType:
enum:
- AzureListing
type: string
shortDescription:
type: string
summary:
type: string
title:
type: string
type: object
AlibabaMarketplaceProductSkuOrderPeriods:
example:
OrderPeriod:
- PeriodType: PeriodType
Name: Name
- PeriodType: PeriodType
Name: Name
properties:
OrderPeriod:
items:
$ref: '#/components/schemas/AlibabaMarketplaceProductSkuOrderPeriod'
type: array
type: object
AzureMarketplaceCustomerLeads:
example:
salesforceLeadConfiguration: '{}'
product: product
$schema: $schema
tableLeadConfiguration: '{}'
httpsEndpointLeadConfiguration: '{}'
resourceName: resourceName
emailLeadConfiguration: '{}'
dynamicsLeadConfiguration: '{}'
marketoLeadConfiguration: '{}'
leadDestination: none
id: id
validations:
- resourceId: resourceId
code: businessValidationError
$schema: $schema
level: informational
message: message
- resourceId: resourceId
code: businessValidationError
$schema: $schema
level: informational
message: message
blobLeadConfiguration: '{}'
properties:
$schema:
type: string
blobLeadConfiguration:
type: object
dynamicsLeadConfiguration:
type: object
emailLeadConfiguration:
type: object
httpsEndpointLeadConfiguration:
type: object
id:
type: string
leadDestination:
enum:
- none
- blob
- dynamics
- email
- httpsEndpoint
- marketo
- salesforce
- table
type: string
marketoLeadConfiguration:
type: object
product:
type: string
resourceName:
type: string
salesforceLeadConfiguration:
type: object
tableLeadConfiguration:
type: object
validations:
items:
# --- truncated at 32 KB (571 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/suger/refs/heads/main/openapi/suger-product-api-openapi.yml