openapi: 3.0.1
info:
title: Exclaimer Cloud API — Subscriptions
version: '1'
description: The Subscriptions operations of the Exclaimer Cloud API, the partner/distributor provisioning
API for Exclaimer Cloud tenants. Split by tag from the provider-published OpenAPI at https://cloudapi.exclaimer.com/openapi.json
(documentation version 5.2, published 2025-07-23). Operation content is carried verbatim from the
source specification.
servers:
- url: https://cloudapi.exclaimer.com/exclaimerapi
description: Local
tags:
- name: Subscriptions
paths:
/1.0/subscriptions/{SubscriptionID}/activate-full:
put:
tags:
- Subscriptions
summary: Activate Full Subscription
description: This request will convert a trial subscription into a full subscription.
parameters:
- name: SubscriptionID
in: path
description: Your reference for the subscription. This is the same ID you specified, or was automatically
generated, when the subscription was created, i.e., when calling <b>Add Subscription</b>.
required: true
schema:
type: string
responses:
'204':
description: No Content
'400':
description: Bad Request / Missing Field
'401':
description: Unauthorized
'404':
description: Not Found
'500':
description: Internal Server Error
x-documentation:
routeExamples:
Basic usage:
value: /subscriptions/TriangleInc/activate-full
curlExamples:
Basic usage - cURL:
description: /subscriptions/EX-Subscription-001/activate-full
value: '{}'
/1.0/subscriptions:
post:
tags:
- Subscriptions
summary: Add Subscription
deprecated: true
description: <deprecated-note><em>2025-02-17</em><br /> This endpoint is deprecated. Please use
the V2 endpoint at /v2.0/subscriptions instead, which provides enhanced support for marketplace
scenarios and SKU-based product specification. </deprecated-note><p> This request will create
a new subscription and adds it to the Exclaimer Cloud service. </p><p> A new user will be created
for the email address provided if one doesn't already exist. </p><p> If you pass a <b>SubscriptionID</b>
and <b>UserID</b>, these values will be used when creating the subscription, otherwise they'll
be randomly generated and returned to you. You will need the subscription ID for other operations,
such as updating the mailbox count, or ending the subscription. </p>
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddSubscription'
examples:
Minimum:
value: '{"EmailAddress":"joe.bloggs@example.com","MailboxCount":100,"CountryCode":"GB"}'
Activate immediately:
value: '{"EmailAddress":"john.smith@example.com","MailboxCount":100,"CountryCode":"GB","SubscriptionProductCode":"GSuite","SkipTrial":true}'
Don't send a welcome email:
value: '{"SubscriptionID":"Subscription-UQN-935","UserID":"U1196-BDT-63","EmailAddress":"sarah.hall@example.com","MailboxCount":200,"CountryCode":"US","SendWelcomeEmailToCustomer":false}'
Include End User and Reseller:
value: '{"SubscriptionID":"Subscription-FHZ-592","UserID":"AugustHayes","EmailAddress":"august.hayes@example.com","MailboxCount":300,"CountryCode":"FR","EndUser":{"EndUserID":"U-ABC-123","CompanyName":"Users
Ltd","CountryCode":"GBR"},"Reseller":{"ResellerID":"R-12345","CompanyName":"Resellers
& Co.","CountryCode":"GBR"}}'
Using a SKU:
value: '{"SubscriptionID":"Subscription-UQN-935","EmailAddress":"user.seven@example.com","MailboxCount":100,"CountryCode":"DN","SKU":"EXCL-M-STAND"}'
Complete:
value: '{"SubscriptionID":"Subscription-JJE-619","UserID":"John-A-Smith","EmailAddress":"john.smith@example.com","MailboxCount":100,"CountryCode":"GB","CurrencyCode":"GBP","TrialDays":28,"SendWelcomeEmailToCustomer":false,"SubscriptionName":"The
Company Ltd","SubscriptionProductCode":"GSuite","Tier":"ExclaimerPro","EndUser":{"EndUserID":"W-JJJ-555","CompanyName":"A365
Ltd","CountryCode":"GBR"},"Reseller":{"ResellerID":"DJJ-3372","CompanyName":"Miller
& Co.","CountryCode":"GBR"},"NFR":true,"NumberOfNFRUsers":50}'
Complete (DEPRECATED):
value: '{"SubscriptionID":"Subscription-JJE-619","UserID":"John-A-Smith","EmailAddress":"john.smith@example.com","MailboxCount":100,"CountryCode":"GB","CurrencyCode":"GBP","TrialDays":28,"SendWelcomeEmailToCustomer":false,"SubscriptionName":"The
Company Ltd","SubscriptionProductCode":"GSuite","Tier":"ExclaimerCloud","EndUser":{"EndUserID":"W-JJJ-555","CompanyName":"A365
Ltd","CountryCode":"GBR"},"Reseller":{"ResellerID":"DJJ-3372","CompanyName":"Miller
& Co.","CountryCode":"GBR"},"NFR":true,"NumberOfNFRUsers":50,"Features":["Feedback"]}'
x-documentation:
deprecated: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/AddSubscriptionResponse'
examples:
Auto-generated:
value: '{"SubscriptionID":"98xjD6BGyE5yq3g8A9MCXNHudobRxX","UserID":"NEomSQPVTe4ETKS92LcuEBT5dxZEnm"}'
Specified:
value: '{"SubscriptionID":"Subscription-JSY-612","UserID":"Mike-Jones"}'
'400':
description: Bad Request / Missing Field
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'415':
description: Unsupported Media Type
'500':
description: Internal Server Error
x-documentation:
curlExamples:
Providing a subscription ID and user ID - cURL:
description: /1.0/subscriptions
value: '{"SubscriptionID":"EX-Subscription-001","UserID":"EX-User-001","EmailAddress":"ex.user.001@example.com","MailboxCount":100,"CountryCode":"826","CurrencyCode":"GBP","TrialDays":30,"SubscriptionProductCode":"Office365"}'
Allowing Exclaimer Cloud API to auto-generate a subscription ID and user ID - cURL:
description: /1.0/subscriptions
value: '{"EmailAddress":"ex.user.002@example.com","MailboxCount":25,"CountryCode":"DE","CurrencyCode":"GBP","SendWelcomeEmailToCustomer":false,"SubscriptionProductCode":"GSuite"}'
Including reseller and end user - cURL:
description: /1.0/subscriptions
value: '{"SubscriptionID":"EX-Subscription-005","UserID":"EX-User-005","EmailAddress":"ex.user.005@example.com","MailboxCount":10,"CountryCode":"GB","CurrencyCode":"GBP","TrialDays":30,"SubscriptionProductCode":"Office365","EndUser":{"EndUserID":"EX-EndUser-005","CompanyName":"EX-EndUserCompany-005","CountryCode":"GB"},"Reseller":{"ResellerID":"EX-Reseller-005","CompanyName":"EX-ResellerCompany-005","CountryCode":"GB"}}'
Skipping a trial and creating an active subscription immediately - cURL:
description: /1.0/subscriptions
value: '{"EmailAddress":"ex.user.010@example.com","MailboxCount":10,"CountryCode":"GB","CurrencyCode":"GBP","SubscriptionName":"EX-Subscription-010","SubscriptionProductCode":"Office365","SkipTrial":true}'
Specifying a data center - cURL:
description: /1.0/subscriptions
value: '{"EmailAddress":"ex.user.010@example.com","MailboxCount":10,"CountryCode":"GB","DataCenter":"US","CurrencyCode":"GBP","SubscriptionName":"EX-Subscription-010","SubscriptionProductCode":"Office365"}'
Specifying a tier - cURL:
description: /1.0/subscriptions
value: '{"EmailAddress":"ex.user.012@example.com","MailboxCount":25,"CountryCode":"DE","CurrencyCode":"GBP","SendWelcomeEmailToCustomer":false,"SubscriptionProductCode":"GSuite","Tier":"ExclaimerPro"}'
Using a SKU - cURL:
description: /1.0/subscriptions
value: '{"EmailAddress":"ex.user.014@example.com","MailboxCount":50,"CountryCode":"GB","NumberOfNFRUsers":10,"SKU":"EXCL-M-STAND-NFR"}'
Specifying a tier - cURL (DEPRECATED):
description: /1.0/subscriptions
value: '{"EmailAddress":"ex.user.012@example.com","MailboxCount":25,"CountryCode":"DE","CurrencyCode":"GBP","SendWelcomeEmailToCustomer":false,"SubscriptionProductCode":"GSuite","Tier":"SignatureMarketingSuite"}'
x-documentation:
deprecated: true
Add visibility of paid features - cURL (DEPRECATED):
description: /1.0/subscriptions
value: '{"EmailAddress":"ex.user.015@example.com","MailboxCount":10,"CountryCode":"GB","NumberOfNFRUsers":10,"SKU":"EXCL-M-MRKT-CLOUD-NFR","Features":["Feedback"]}'
x-documentation:
deprecated: true
get:
tags:
- Subscriptions
summary: Get Subscriptions
description: 'This request will return details of each of your subscriptions held in the Exclaimer
Cloud service.<br /> You can apply filters: <ul><li>to only return active subscriptions, otherwise
all subscriptions, including inactive ones, will be returned.</li><li>to only return subscriptions
associated with a specific reseller.</li></ul> If no subscriptions match the filter, an empty
array will be returned.'
parameters:
- name: Page
in: query
description: Page numbers start at 1. <p> See the section <b>"Paging of results"</b> at the beginning
of the document.<br /> Results are ordered by the date the subscription was added. </p>
schema:
type: number
format: int32
- name: PageSize
in: query
description: Defaults to 50. Maximum 200. <p> See the section <b>"Paging of results"</b> at the
beginning of the document.<br /></p>
schema:
type: number
format: int32
- name: ContinuationToken
in: query
description: A token that can be used to get the next page of results without supplying paging
values.
schema:
type: number
format: int32
- name: ActiveOnly
in: query
description: When true, returns only subscriptions with an Active status. When false, returns
all subscriptions irrespective of status*. <p> *When used in conjunction with <b>OverageOnly</b>
this will return only active subscriptions that have an overage. </p>
schema:
type: boolean
- name: OverageOnly
in: query
description: When true, returns only subscriptions with an overage. When false, returns all subscriptions
irrespective of whether there is overage or not*. <p> *When used in conjunction with <b>ActiveOnly</b>
this will return only active subscriptions that have an overage. </p>
schema:
type: boolean
- name: ResellerID
in: query
description: When provided, returns only subscriptions for this reseller. When not provided, returns
all subscriptions irrespective of reseller.
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionsResponse'
examples:
Basic response:
value: '{"Subscriptions":[{"SubscriptionID":"Sub-IJZ-471","Name":"VIP Services","UserID":"kkJKcWgGU54Ro43vKV58jkCKnZg8uL","EndUserID":"U-DDX-332","ResellerID":"R-UWM-842","StartDate":"2025-09-02T07:54:59.836885Z","NumberOfUsers":100,"AggregatedUsers":72,"ProcessedUsers":29,"Currency":"GBP","Status":"Active","BillableUsers":42,"Tier":"ExclaimerStandard","SKU":"EXCL-M-STAND"},{"SubscriptionID":"Abc-2-6522","Name":"S-DT-BN-096","UserID":"O-7676-PC","ResellerID":"R-3344","StartDate":"2025-09-02T07:54:59.836885Z","NumberOfUsers":50,"AggregatedUsers":48,"ProcessedUsers":42,"Currency":"GBP","Status":"Active","InTrial":true,"TrialEndDate":"2025-09-12T07:54:59.836885Z","BillableUsers":50,"Tier":"ExclaimerPro","NFR":true,"NFRDetails":{"NumberOfUsers":15,"DateApplied":"2025-09-02T07:54:59.836885Z"},"SKU":"EXCL-M-PRO-NFR"}],"SubscriptionCount":21,"ContinuationToken":26145,"Page":6,"PageSize":2}'
Basic response (DEPRECATED):
value: '{"Subscriptions":[{"SubscriptionID":"Sub-IJZ-471","Name":"VIP Services","UserID":"kkJKcWgGU54Ro43vKV58jkCKnZg8uL","EndUserID":"U-DDX-332","ResellerID":"R-UWM-842","StartDate":"2025-09-02T07:54:59.836885Z","NumberOfUsers":100,"AggregatedUsers":72,"ProcessedUsers":29,"Currency":"GBP","Status":"Active","BillableUsers":42,"Tier":"ExclaimerCloud","SKU":"EXCL-M-MNGT-CLOUD"},{"SubscriptionID":"Abc-2-6522","Name":"S-DT-BN-096","UserID":"O-7676-PC","ResellerID":"R-3344","StartDate":"2025-09-02T07:54:59.836885Z","NumberOfUsers":50,"AggregatedUsers":48,"ProcessedUsers":42,"Currency":"GBP","Status":"Active","InTrial":true,"TrialEndDate":"2025-09-12T07:54:59.836885Z","BillableUsers":50,"Tier":"SignatureMarketingSuite","NFR":true,"NFRDetails":{"NumberOfUsers":15,"DateApplied":"2025-09-02T07:54:59.836885Z"},"SKU":"EXCL-M-MRKT-CLOUD-NFR"}],"SubscriptionCount":21,"ContinuationToken":26145,"Page":6,"PageSize":2}'
x-documentation:
deprecated: true
'400':
description: Bad Request / Missing Field
'401':
description: Unauthorized
'415':
description: Unsupported Media Type
'500':
description: Internal Server Error
x-documentation:
routeExamples:
Basic usage:
value: /subscriptions
Paging:
value: /subscriptions?Page=6&PageSize=2
Using a continuation token:
value: /subscriptions?ContinuationToken=262145
Filter by active:
value: /subscriptions?ActiveOnly=true
Filter by overage:
value: /subscriptions?OverageOnly=true
Filter by reseller:
value: /subscriptions?ResellerID=RYW-6391
curlExamples:
All subscriptions with default paging - cURL:
description: /subscriptions
value: '{}'
Subset of subscriptions defined by page and size - cURL:
description: /subscriptions?Page=2&PageSize=2
value: '{}'
Filter to return active subscriptions only - cURL:
description: /subscriptions?ActiveOnly=true
value: '{}'
/v2.0/subscriptions:
post:
tags:
- Subscriptions
summary: Add Subscription V2
description: 'This request will create a new subscription using Version 2 of the API, which introduces
SKU-based product specification and enhanced support for marketplace scenarios. <p> V2 changes
include: <ul><li>SKU is now required and determines the product, tier, and NFR status</li><li>EndUser
is required and includes a Domain field</li><li>Reseller includes a Domain field (required for
non-Marketplace subscriptions)</li><li>BillingGroup is a new optional field for grouping subscriptions</li><li>SubscriptionProductCode,
Tier, NFR, and NumberOfNFRUsers fields are deprecated and should not be used</li></ul></p><p>
A new user will be created for the email address provided if one doesn''t already exist. </p><p>
If you pass a <b>SubscriptionID</b> and <b>UserID</b>, these values will be used when creating
the subscription, otherwise they''ll be randomly generated and returned to you. You will need
the subscription ID for other operations, such as updating the mailbox count, or ending the subscription.
</p><p> <b>Currency Immutability:</b> Once a subscription is created, the currency cannot be changed.
</p><p> <b>Marketplace Behavior:</b> For Marketplace subscriptions, the system will auto-populate
EndUser fields from the email address if not explicitly provided. The Reseller field is optional
for Marketplace subscriptions. </p>'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddSubscriptionV2'
examples:
Minimum:
value: '{"EmailAddress":"joe.bloggs@example.com","MailboxCount":100,"CountryCode":"GB","SKU":"EXCL-M-STAND","EndUser":{"Domain":"example.com"}}'
With BillingGroup:
value: '{"EmailAddress":"john.smith@example.com","MailboxCount":100,"CountryCode":"GB","SKU":"EXCL-M-PRO","BillingGroup":"Enterprise-001","EndUser":{"Domain":"smithcorp.com"}}'
Non-Marketplace with Reseller:
value: '{"EmailAddress":"sarah.hall@example.com","MailboxCount":200,"CountryCode":"US","SKU":"EXCL-G-STAND","EndUser":{"Domain":"hallenterprises.com"},"Reseller":{"Domain":"reseller.com"}}'
Marketplace with full EndUser:
value: '{"EmailAddress":"august.hayes@example.com","MailboxCount":300,"CountryCode":"FR","SKU":"EXCL-M-START","EndUser":{"Domain":"hayes-industries.com","FirstName":"August","LastName":"Hayes","EmailAddress":"august@hayes-industries.com","AddressLine1":"123
Main St","AddressLine2":"Suite 100","State":"CA","PhoneNumber":"+1-555-0100"}}'
NFR Subscription:
value: '{"EmailAddress":"user.seven@example.com","MailboxCount":100,"CountryCode":"DN","SKU":"EXCL-M-STAND-NFR","EndUser":{"Domain":"nfrcompany.com"}}'
Complete:
value: '{"SubscriptionID":"Subscription-JJE-619","UserID":"John-A-Smith","EmailAddress":"john.smith@example.com","MailboxCount":100,"CountryCode":"GB","CurrencyCode":"GBP","TrialDays":28,"SendWelcomeEmailToCustomer":false,"SubscriptionName":"The
Company Ltd","SKU":"EXCL-M-PRO","BillingGroup":"UK-Division","EndUser":{"Domain":"thecompany.com","FirstName":"John","LastName":"Smith","EmailAddress":"john@thecompany.com","AddressLine1":"10
Corporate Blvd","State":"London","PhoneNumber":"+44-20-1234-5678"},"Reseller":{"Domain":"miller-resellers.com"}}'
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/AddSubscriptionResponse'
examples:
Auto-generated:
value: '{"SubscriptionID":"98xjD6BGyE5yq3g8A9MCXNHudobRxX","UserID":"NEomSQPVTe4ETKS92LcuEBT5dxZEnm"}'
Specified:
value: '{"SubscriptionID":"Subscription-JSY-612","UserID":"Mike-Jones"}'
'400':
description: Bad Request / Missing Field
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'415':
description: Unsupported Media Type
'500':
description: Internal Server Error
x-documentation:
curlExamples:
Minimum - cURL:
description: /v2.0/subscriptions
value: '{"EmailAddress":"user.001@example.com","MailboxCount":100,"CountryCode":"GB","SKU":"EXCL-M-STAND","EndUser":{"Domain":"example.com"}}'
With BillingGroup - cURL:
description: /v2.0/subscriptions
value: '{"EmailAddress":"user.002@example.com","MailboxCount":100,"CountryCode":"GB","SKU":"EXCL-M-PRO","BillingGroup":"Enterprise-001","EndUser":{"Domain":"example.com"}}'
Non-Marketplace with Reseller - cURL:
description: /v2.0/subscriptions
value: '{"EmailAddress":"user.003@example.com","MailboxCount":200,"CountryCode":"US","SKU":"EXCL-G-STAND","EndUser":{"Domain":"example.com"},"Reseller":{"Domain":"reseller.com"}}'
Marketplace with full EndUser - cURL:
description: /v2.0/subscriptions
value: '{"EmailAddress":"user.004@example.com","MailboxCount":300,"CountryCode":"FR","SKU":"EXCL-M-START","EndUser":{"Domain":"example.com","FirstName":"August","LastName":"Hayes","EmailAddress":"august@example.com","AddressLine1":"123
Main St","AddressLine2":"Suite 100","State":"CA","PhoneNumber":"+1-555-0100"}}'
NFR Subscription - cURL:
description: /v2.0/subscriptions
value: '{"EmailAddress":"user.005@example.com","MailboxCount":100,"CountryCode":"DN","SKU":"EXCL-M-STAND-NFR","EndUser":{"Domain":"example.com"}}'
Complete - cURL:
description: /v2.0/subscriptions
value: '{"SubscriptionID":"Subscription-JJE-619","UserID":"John-A-Smith","EmailAddress":"john.smith@example.com","MailboxCount":100,"CountryCode":"GB","CurrencyCode":"GBP","TrialDays":28,"SendWelcomeEmailToCustomer":false,"SubscriptionName":"The
Company Ltd","SKU":"EXCL-M-PRO","BillingGroup":"UK-Division","EndUser":{"Domain":"thecompany.com","FirstName":"John","LastName":"Smith","EmailAddress":"john@thecompany.com","AddressLine1":"10
Corporate Blvd","State":"London","PhoneNumber":"+44-20-1234-5678"},"Reseller":{"Domain":"miller-resellers.com"}}'
Skip Trial - cURL:
description: /v2.0/subscriptions
value: '{"EmailAddress":"user.006@example.com","MailboxCount":10,"CountryCode":"GB","CurrencyCode":"GBP","SubscriptionName":"EX-Subscription-010","SKU":"EXCL-M-STAND","SkipTrial":true,"EndUser":{"Domain":"example.com"}}'
/1.0/subscriptions/{SubscriptionID}/deactivate:
put:
tags:
- Subscriptions
summary: Deactivate Subscription
description: This request will deactivate a subscription. <p> The service will no longer stamp emails
for this subscription and the end user will no longer be able to load the template editor, however
we will not block the users email. This endpoint should be used if you intend to reactivate the
subscription in the near future. </p>
parameters:
- name: SubscriptionID
in: path
description: Your reference for the subscription. This is the same ID you specified, or was automatically
generated, when the subscription was created, i.e., when calling <b>Add Subscription</b>.
required: true
schema:
type: string
responses:
'204':
description: No Content
'400':
description: Bad Request / Missing Field
'401':
description: Unauthorized
'404':
description: Not Found
'415':
description: Unsupported Media Type
'500':
description: Internal Server Error
x-documentation:
routeExamples:
Basic usage:
value: /subscriptions/miller-ltd-487d/deactivate
curlExamples:
Basic usage - cURL:
description: /subscriptions/EX-Subscription-001/deactivate
value: '{}'
/1.0/subscriptions/{SubscriptionID}/end:
put:
tags:
- Subscriptions
summary: End Subscription
description: This request will end a subscription. <p> When a subscription is ended it becomes dormant
and emails will no longer be processed via the Exclaimer Cloud service. <b> The user's email needs
to be redirected so it no longer gets sent through our system before calling this endpoint. </b></p><p>
When actioned, the subscription is ended immediately, and the subscription will no longer appear
in the Exclaimer Customer Portal. </p>
parameters:
- name: SubscriptionID
in: path
description: Your reference for the subscription. This is the same ID you specified, or was automatically
generated, when the subscription was created, i.e., when calling <b>Add Subscription</b>.
required: true
schema:
type: string
responses:
'204':
description: No Content
'400':
description: Bad Request / Missing Field
'401':
description: Unauthorized
'404':
description: Not Found
'415':
description: Unsupported Media Type
'500':
description: Internal Server Error
x-documentation:
routeExamples:
Basic usage:
value: /subscriptions/SUB-LNE-386/end
curlExamples:
Basic usage - cURL:
description: /subscriptions/EX-Subscription-001/end
value: '{}'
/1.0/subscriptions/{SubscriptionID}/migrate:
post:
tags:
- Subscriptions
summary: Migrate Subscription
description: This request allows you to assign, transfer, or remove, a reseller and/or end user,
from an existing subscription.
parameters:
- name: SubscriptionID
in: path
description: Your reference for the subscription. This is the same ID you specified, or was automatically
generated, when the subscription was created, i.e., when calling <b>Add Subscription</b>.
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MigrateSubscription'
examples:
Assign, or migrate, the reseller only:
value: '{"ResellerID":"Jacobi Holdings"}'
Assign, or migrate, both the reseller and the end user:
value: '{"ResellerID":"Jacobi Holdings","EndUserID":"Jean Jones"}'
Remove an existing reseller only:
value: '{"ResellerID":""}'
responses:
'204':
description: No Content
'400':
description: Bad Request / Missing Field
'401':
description: Unauthorized
'404':
description: Not Found
'415':
description: Unsupported Media Type
'500':
description: Internal Server Error
x-documentation:
curlExamples:
Assign, or migrate, the reseller only - cURL:
description: /subscriptions/EX-Subscription-001/migrate
value: '{"ResellerID":"EX-Reseller-002"}'
Assign, or migrate, both the reseller and the end user - cURL:
description: /subscriptions/EX-Subscription-001/migrate
value: '{"ResellerID":"EX-Reseller-001","EndUserID":"EX-EndUSer-001"}'
Remove an existing reseller only - cURL:
description: /subscriptions/EX-Subscription-001/migrate
value: '{"ResellerID":""}'
/1.0/subscriptions/{SubscriptionID}/reactivate:
put:
tags:
- Subscriptions
summary: Reactivate Subscription
description: This request will reactivate a previously ended, or deactivated, subscription. <p>
The subscription will no longer reside in a dormant state and emails will be imprinted/processed
via the Exclaimer Cloud service again. </p>
parameters:
- name: SubscriptionID
in: path
description: Your reference for the subscription. This is the same ID you specified, or was automatically
generated, when the subscription was created, i.e., when calling <b>Add Subscription</b>.
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ReactivateSubscription'
examples:
Basic usage:
value: '{"InTrial":true}'
responses:
'204':
description: No Content
'400':
description: Bad Request / Missing Field
'401':
description: Unauthorized
'404':
description: Not Found
'415':
description: Unsupported Media Type
'500':
description: Internal Server Error
x-documentation:
curlExamples:
Basic usage - cURL:
description: /subscriptions/EX-Subscription-001/reactivate
value: '{"InTrial":true}'
/1.0/subscriptions/{SubscriptionID}:
get:
tags:
- Subscriptions
summary: Get Subscription
description: This request will return details of the specified subscription held in the Exclaimer
Cloud service.
parameters:
- name: SubscriptionID
in: path
description: Your reference for the subscription. This is the same ID you specified, or was automatically
generated, when the subscription was created, i.e., when calling <b>Add Subscription</b>.
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/SingleSubscriptionResponse'
examples:
Basic response:
value: '{"Subscription":{"SubscriptionID":"SUB-UUWE-610","Name":"VIP Services","UserID":"ohXkcvZSZCFspKt9DYfuTmqYYjeruk","EndUserID":"U-DDX-332","ResellerID":"R-UWM-842","StartDate":"2025-09-02T07:54:59.8172514Z","NumberOfUsers":220,"AggregatedUsers":174,"ProcessedUsers":205,"Currency":"GBP","Status":"Active","InTrial":true,"TrialEndDate":"2025-09-12T07:54:59.8172514Z","BillableUsers":205,"Tier":"ExclaimerStandard","SKU":"EXCL-M-STAND"}}'
'400':
description: Bad Request / Missing Field
'401':
description: Unauthorized
'404':
description: Not Found
'415':
description: Unsupported Media Type
'500':
description: Internal Server Error
x-documentation:
routeExamples:
Basic usage:
value: /subscriptions/SUB-UUWE-610
curlExamples:
Basic usage - cURL:
description: /subscriptions/EX-Subscription-001
value: '{}'
put:
tags:
- Subscriptions
summary: Update Subscription
description: This request can be used to update the name and currency assigned to the subscription.
parameters:
- name: SubscriptionID
in: path
description: Your reference for the subscription. This is the same ID you specified, or was automatically
generated, when the subscription was created, i.e. when calling Add Subscription.
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSubscriptionDetails'
examples:
Update both the name and currency:
value: '{"SubscriptionName":"Test Subscription","CurrencyCode":"USD"}'
Update only the subscription name:
value: '{"SubscriptionName":"Test Subscription"}'
responses:
'204':
description: No Content
'400':
description: Bad Request / Missing Field
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: Not Found
'415':
description: Unsupported Media Type
'500':
description: Internal Server Error
x-documentation:
curlExamples:
Change both the name and currency - cURL:
description: /subscriptions/EX-Subscription-001
value: '{"SubscriptionName":"Test Company","CurrencyCode":"USD"}'
Change only the name - cURL:
description: /subscriptions/EX-Subscription-001
value: '{"SubscriptionName":"Test Company"}'
/1.0/subscriptions/{SubscriptionID}/history:
get:
tags:
- Subscriptions
summary: Get Subscription History
description: Provides information relating to the history of the subscription.
parameters:
- name: SubscriptionID
in: path
description: Your reference for the subscription. This is the same ID you specified, or was automatically
generated, when the subscription was created, i.e., when calling <b>Add Subscription</b>.
required: true
schema:
type: string
responses:
'200':
# --- truncated at 32 KB (73 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/exclaimer/refs/heads/main/openapi/exclaimer-subscriptions-openapi.yml