Download OpenAPI specification:
This is the documentation for Zenmeter.
Zenmeter is a product in the Nalpeiron Growth Platform (NGP), which contains the Zentitle2, Zengain, and Zenmeter products. This API reference documents the Management API for Zenmeter within that broader NGP landscape.
Please provide feedback to your account manager on things you like and things you'd like to see.
The Nalpeiron Growth Platform (NGP) Management API uses OAuth2 over https to manage authentication and authorization.
OAuth2 is an open standard for authorization that enables applications to securely access resources from other apps or services. We use client_credentials flow in the API.
In the client credentials flow, the app sends a request to the authorization server's token endpoint with its client ID and secret, which are used to authenticate the app. If the request is successful, the authorization server returns an access token, which the app can use to access protected resources on the resource server.
The client credentials flow is typically used by server-side apps or apps that run in a trusted environment, such as a secure server or device. It allows these apps to access protected resources on behalf of themselves, rather than on behalf of a user. This grant type is not suitable for browser-based apps or mobile apps, as it does not involve user interaction and does not provide a way for users to grant access to their protected resources.
Here is an example of how to generate client credentials for OAuth2:
Register your application in the NGP administration site in the "API Credentials" section.
During the registration process, the authorization server will provide you with a client secret for your provided client ID. These are unique, secret values that identify your app and are used to authenticate your requests to the authorization server.
In order to use the client credentials grant type, your app must be able to securely store the client ID and secret. These values should never be shared or exposed to anyone outside of your app, as they provide access to the authorization server on your app's behalf.
Once you have securely stored the client ID and secret, you can begin making requests to the authorization server's token endpoint using the client credentials grant type. This typically involves sending a POST request to the token endpoint, with the client ID and secret provided in the request body.
You will find the token endpoint URL in the NGP administration site in the "API Credentials" section.
If the request is successful, the authorization server will return an access token, which can be used to access protected resources on the resource server. The access token may also include a refresh token, which can be used to obtain a new access token when the original one expires.
Here is an example code in JavaScript that gets the access token:
var body = 'grant_type=client_credentials'
+ '&client_id=' + clientId
+ '&client_secret=' + clientSecret;
pm.sendRequest({
url: oauth_url + '/protocol/openid-connect/token',
method: 'POST',
header: {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json'
},
body: {
mode: 'raw',
raw: body
}
}, function (err, res) {
var response = res.json();
environment.set("access_token", response.access_token);
environment.set("token_time", Date.now() + response.expires_in * 1000);
});
Access token should be sent with every API request in the Authorization header as:
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI...
Whenever the Authorization section for an endpoint contains more than one role in the list, it means that any of those roles is sufficient to access this endpoint.
API requires one more header to be set with the tenant ID for your NGP account, for example:
N-TenantId: t_KRwhRp1yl0_9gsZjE5Yjaw
All NGP APIs adhere to the ISO 8601 standard for date and time formatting. For instance, "2021-12-31T23:59:59Z" signifies the final second of the year 2021 in the UTC time zone. The backend systems of NGP function in UTC, and as such, all DateTime fields returned by the API are also in UTC. To enhance the usability of our API, we accept datetime values in several formats:
2021-12-31T23:59:59Z - UTC time2021-12-31T23:59:59 - dates without timezone information are assumed to be UTC time2021-12-31T23:59:59+01:00 - time with timezone informationTo set up Postman to use the NGP Management API and to test your setup, see Configure Postman.
| Status | Meaning | Description |
|---|---|---|
| 200 | OK | Returned after successful GET requests, body contains requested data |
| 201 | Created | Returned after successful POST request, body contains created object |
| 204 | No Content | Returned after successful PUT and DELETE requests. Body is empty |
In case of an error, API returns error status code along with ApiError object if applicable.
| Status | Meaning | Description |
|---|---|---|
| 400 | Bad Request | cannot parse request body or parameters |
| 401 | Unauthorized | missing or invalid access token |
| 402 | Request Failed | parameters were valid but the request failed |
| 403 | Forbidden | insufficient permissions to perform request |
| 404 | Not Found | requested resource has not been found |
| 409 | Conflict | request conflicts with the current state |
| 422 | Unprocessable entity | request parses correctly, but fails validation |
| 429 | Too many requests | too many requests hit the API too quickly |
| 500, 502, 503, 504 | Server errors | something went wrong on the NGP's end |
Please see API Versioning documentation for more information about our versioning strategy and how to select an API version.
Initial release
Creates new customer
Properties required to create a customer
| name required | string [ 1 .. 255 ] characters Customer name | ||||||||||||
| legalName | string or null <= 500 characters Customer legal name | ||||||||||||
| description | string or null <= 500 characters Customer description | ||||||||||||
| type | string (CustomerType) Enum: "customer" "prospect" "lostCustomer" "lostProspect" "remove" | ||||||||||||
| accountRefId | string or null <= 50 characters Account reference id | ||||||||||||
| status | string (CustomerStatus) Enum: "active" "disabled" "inactive" | ||||||||||||
object or null Custom fields | |||||||||||||
| |||||||||||||
object (CustomerAddressApiRequest) | |||||||||||||
| |||||||||||||
| website | string or null <uri> Customer website URL | ||||||||||||
| linkedInUrl | string or null <uri> Customer LinkedIn URL | ||||||||||||
| contractValue | number or null <decimal> [ 0 .. 1000000000000 ] Contract value in USD | ||||||||||||
| contractStartDate | string or null <date-time> Contract start date | ||||||||||||
| contractRenewalDate | string or null <date-time> Contract renewal date | ||||||||||||
{- "name": "Boeing",
- "legalName": "Boeing LLC",
- "description": "string",
- "type": "customer",
- "accountRefId": "account12395-32",
- "status": "active",
- "customFields": {
- "field1": "value1",
- "field2": null
}, - "address": {
- "addressLine1": "123 Main Street",
- "addressLine2": "Suite 456",
- "city": "New York",
- "stateRegion": "NY",
- "postalCode": 10001,
- "country": "USA"
}, - "contractValue": 0,
- "contractStartDate": "2019-08-24T14:15:22Z",
- "contractRenewalDate": "2019-08-24T14:15:22Z"
}{- "id": "cust_n1bmaIvXnEW7DOl0w5EiHQ",
- "name": "Boeing",
- "legalName": "Boeing LLC",
- "description": "Enterprise customer using premium analytics suite.",
- "type": "customer",
- "accountRefId": "account12395-32",
- "disabledDate": "2019-08-24T14:15:22Z",
- "status": "active",
- "customFields": {
- "field1": "value1",
- "field2": null
}, - "address": {
- "addressLine1": "123 Main Street",
- "addressLine2": "Suite 456",
- "city": "New York",
- "stateRegion": "NY",
- "postalCode": 10001,
- "country": "USA"
}, - "contractValue": 0,
- "contractStartDate": "2019-08-24T14:15:22Z",
- "contractRenewalDate": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}This method returns list of customers
| pageNumber | integer <int32> Example: pageNumber=1 Requested page number |
| pageSize | integer <int32> Example: pageSize=10 Maximum number of items per page |
Array of objects (CustomerListModel) Array of items matching specified query filters | |||||||||||||||
Array
| |||||||||||||||
| pageSize | integer <int32> Requested page size or default page size if not specified | ||||||||||||||
| pageNumber | integer <int32> Requested page number or first page if not specified | ||||||||||||||
| elementsTotal | integer <int32> Total number of elements matching filter criteria | ||||||||||||||
{- "items": [
- {
- "id": "cust_n1bmaIvXnEW7DOl0w5EiHQ",
- "name": "Boeing Corporation",
- "type": "customer",
- "accountRefId": "account12395-32",
- "disabledDate": "2019-08-24T14:15:22Z",
- "status": "active",
- "description": "string"
}
], - "pageSize": 10,
- "pageNumber": 1,
- "elementsTotal": 1
}This method returns the selected customer
| customerId required | string <CustomerId> Example: cust_Bx_XkJrFzE2HStEdPdRing Customer identifier |
| id | string <CustomerId> Customer identifier | ||||||||||||
| name | string Customer name | ||||||||||||
| legalName | string or null Customer legal name | ||||||||||||
| description | string or null Customer description | ||||||||||||
| type | string (CustomerType) Enum: "customer" "prospect" "lostCustomer" "lostProspect" "remove" | ||||||||||||
| accountRefId | string or null Customer account reference id | ||||||||||||
| disabledDate | string or null <date-time> Customer disabled date | ||||||||||||
| status | string (CustomerStatus) Enum: "active" "disabled" "inactive" | ||||||||||||
object or null Customer custom fields | |||||||||||||
| |||||||||||||
object (CustomerAddressModel) | |||||||||||||
| |||||||||||||
| website | string or null <uri> Customer website URL | ||||||||||||
| linkedInUrl | string or null <uri> Customer LinkedIn URL | ||||||||||||
| contractValue | number or null <decimal> Contract value in USD | ||||||||||||
| contractStartDate | string or null <date-time> Contract start date (UTC) | ||||||||||||
| contractRenewalDate | string or null <date-time> Contract renewal date (UTC) | ||||||||||||
| createdAt | string <date-time> Creation date | ||||||||||||
| updatedAt | string or null <date-time> Last update date | ||||||||||||
{- "id": "cust_n1bmaIvXnEW7DOl0w5EiHQ",
- "name": "Boeing",
- "legalName": "Boeing LLC",
- "description": "Enterprise customer using premium analytics suite.",
- "type": "customer",
- "accountRefId": "account12395-32",
- "disabledDate": "2019-08-24T14:15:22Z",
- "status": "active",
- "customFields": {
- "field1": "value1",
- "field2": null
}, - "address": {
- "addressLine1": "123 Main Street",
- "addressLine2": "Suite 456",
- "city": "New York",
- "stateRegion": "NY",
- "postalCode": 10001,
- "country": "USA"
}, - "contractValue": 0,
- "contractStartDate": "2019-08-24T14:15:22Z",
- "contractRenewalDate": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}This method allows to change settings of selected customer
| customerId required | string <CustomerId> Example: cust_Bx_XkJrFzE2HStEdPdRing Customer identifier |
Properties required to update a customer
| name required | string [ 1 .. 255 ] characters Customer name | ||||||||||||
| legalName | string or null <= 500 characters Customer legal name | ||||||||||||
| description | string or null <= 500 characters Customer description | ||||||||||||
| type | string (CustomerType) Enum: "customer" "prospect" "lostCustomer" "lostProspect" "remove" | ||||||||||||
| accountRefId | string or null <= 50 characters Account reference id | ||||||||||||
| status | string (CustomerStatus) Enum: "active" "disabled" "inactive" | ||||||||||||
object or null Custom fields | |||||||||||||
| |||||||||||||
object (CustomerAddressApiRequest) | |||||||||||||
| |||||||||||||
| website | string or null <uri> Customer website URL | ||||||||||||
| linkedInUrl | string or null <uri> Customer LinkedIn URL | ||||||||||||
| contractValue | number or null <decimal> [ 0 .. 1000000000000 ] Contract value in USD | ||||||||||||
| contractStartDate | string or null <date-time> Contract start date | ||||||||||||
| contractRenewalDate | string or null <date-time> Contract renewal date | ||||||||||||
{- "name": "Boeing",
- "legalName": "Boeing LLC",
- "description": "string",
- "type": "customer",
- "accountRefId": "account12395-32",
- "status": "active",
- "customFields": {
- "field1": "value1",
- "field2": null
}, - "address": {
- "addressLine1": "123 Main Street",
- "addressLine2": "Suite 456",
- "city": "New York",
- "stateRegion": "NY",
- "postalCode": 10001,
- "country": "USA"
}, - "contractValue": 0,
- "contractStartDate": "2019-08-24T14:15:22Z",
- "contractRenewalDate": "2019-08-24T14:15:22Z"
}{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}This method disables customer and it's entitlements.
| customerId required | string <CustomerId> Example: cust_Bx_XkJrFzE2HStEdPdRing Customer identifier |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}This method re-enables customer and it's entitlements.
| customerId required | string <CustomerId> Example: cust_Bx_XkJrFzE2HStEdPdRing Customer identifier |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Creates tenant webhook
| uri required | string [ 1 .. 2048 ] characters Webhook uri |
| subscriptions required | Array of strings non-empty Array of webhook event subscription codes |
{- "subscriptions": [
- "entitlement.group.created",
- "entitlement.created"
]
}{- "id": "wh_oH_hPJ3BgEO8T9Yd9-k9tg",
- "subscriptions": [
- "entitlement.group.created",
- "entitlement.created"
]
}Returns list of account webhooks
| pageNumber | integer <int32> Example: pageNumber=1 Requested page number |
| pageSize | integer <int32> Example: pageSize=10 Maximum number of items per page |
Array of objects (WebhookModel) Array of items matching specified query filters | |||||||
Array
| |||||||
| pageSize | integer <int32> Requested page size or default page size if not specified | ||||||
| pageNumber | integer <int32> Requested page number or first page if not specified | ||||||
| elementsTotal | integer <int32> Total number of elements matching filter criteria | ||||||
{- "items": [
- {
- "id": "wh_oH_hPJ3BgEO8T9Yd9-k9tg",
- "subscriptions": [
- "entitlement.group.created",
- "entitlement.created"
]
}
], - "pageSize": 10,
- "pageNumber": 1,
- "elementsTotal": 1
}Get account webhook by webhookId
| webhookListenerId required | string <WebhookListenerId> Example: whl_CNrc8PbApEapAfJQN15aIA Webhook Listener identifier |
| id | string <WebhookListenerId> Id of an webhook in the system |
| uri | string <uri> <= 2048 characters Webhook uri |
| subscriptions required | Array of strings Array of webhook events |
{- "id": "wh_oH_hPJ3BgEO8T9Yd9-k9tg",
- "subscriptions": [
- "entitlement.group.created",
- "entitlement.created"
]
}Updates account webhook
| webhookListenerId required | string <WebhookListenerId> Example: whl_CNrc8PbApEapAfJQN15aIA Webhook Listener identifier |
| uri required | string [ 1 .. 2048 ] characters Webhook uri |
| subscriptions required | Array of strings non-empty Array of webhook events subscription codes |
{- "subscriptions": [
- "entitlement.group.created",
- "entitlement.created"
]
}{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Deletes account webhook
| webhookListenerId required | string <WebhookListenerId> Example: whl_CNrc8PbApEapAfJQN15aIA Webhook Listener identifier |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Sends a test event to webhook URL
| webhookListenerId required | string <WebhookListenerId> Example: whl_CNrc8PbApEapAfJQN15aIA Webhook Listener identifier |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Returns list of all available events
Array of objects (WebhookEventTypeModel) Array of items matching specified query filters | |||||||
Array
| |||||||
| elementsTotal | integer <int32> Total number of elements matching filter criteria | ||||||
{- "items": [
- {
- "type": "entitlementGroup",
- "code": "entitlement.created",
- "description": "Event generated when entitlement was successfully created"
}
], - "elementsTotal": 1
}Event generated when customer was successfully created
| eventId | string <EventId> Event identifier | ||||
| eventDate | string <date-time> Date when the event occurred | ||||
| eventCode | string Code specifying the Webhook event type | ||||
| resourceId | string Identifier of the related resource | ||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||
object (CustomerCreatedWebhookModel) Webhook model for notifying that a customer has been created | |||||
| |||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "customerId": "cust_n1bmaIvXnEW7DOl0w5EiHQ",
- "name": "Boeing Corporation"
}
}Event generated when customer was successfully updated
| eventId | string <EventId> Event identifier | ||||||
| eventDate | string <date-time> Date when the event occurred | ||||||
| eventCode | string Code specifying the Webhook event type | ||||||
| resourceId | string Identifier of the related resource | ||||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||||
object (CustomerUpdatedWebhookModel) Webhook model for notifying that a customer has been updated | |||||||
| |||||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "customerId": "cust_n1bmaIvXnEW7DOl0w5EiHQ",
- "name": "Boeing Corporation",
- "disabled": true
}
}Event generated when a Zenmeter subscription was successfully created
| eventId | string <EventId> Event identifier | ||||||||||||||
| eventDate | string <date-time> Date when the event occurred | ||||||||||||||
| eventCode | string Code specifying the Webhook event type | ||||||||||||||
| resourceId | string Identifier of the related resource | ||||||||||||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||||||||||||
object (SubscriptionCreatedWebhookModel) Webhook model for notifying that a Zenmeter subscription has been created | |||||||||||||||
| |||||||||||||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "subscriptionId": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "customerId": "cust_n1bmaIvXnEW7DOl0w5EiHQ",
- "orderRefId": "ORDER-12345",
- "sku": "professional-monthly",
- "planType": "trial",
- "expiryDate": "2027-01-01T00:00:00Z",
- "createdAt": "2026-09-03T10:00:00Z"
}
}Event generated when a pending Zenmeter subscription cancellation was successfully reverted
| eventId | string <EventId> Event identifier | ||||||
| eventDate | string <date-time> Date when the event occurred | ||||||
| eventCode | string Code specifying the Webhook event type | ||||||
| resourceId | string Identifier of the related resource | ||||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||||
object (SubscriptionCancellationRevertedWebhookModel) Webhook model for notifying that a pending Zenmeter subscription cancellation has been reverted | |||||||
| |||||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "subscriptionId": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "revertedAt": "2026-09-03T10:00:00Z",
- "expiryDate": "2027-01-01T00:00:00Z"
}
}Event generated when a Zenmeter usage period closes and creates a usage snapshot
| eventId | string <EventId> Event identifier | ||||||
| eventDate | string <date-time> Date when the event occurred | ||||||
| eventCode | string Code specifying the Webhook event type | ||||||
| resourceId | string Identifier of the related resource | ||||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||||
object (SubscriptionUsagePeriodClosedWebhookModel) Webhook model for notifying about a closed usage period. The end state of every closed usage period is captured by an immutable snapshot. | |||||||
| |||||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "subscriptionId": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "snapshotId": "zm-sub-snap_oH_hPJ3BgEO172Yd9-KuTg",
- "closureReason": "scheduledReset"
}
}Event generated when a Zenmeter subscription was successfully renewed
| eventId | string <EventId> Event identifier | ||||||
| eventDate | string <date-time> Date when the event occurred | ||||||
| eventCode | string Code specifying the Webhook event type | ||||||
| resourceId | string Identifier of the related resource | ||||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||||
object (SubscriptionRenewedWebhookModel) Webhook model for notifying that a Zenmeter subscription has been renewed | |||||||
| |||||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "subscriptionId": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "renewedAt": "2026-09-03T10:00:00Z",
- "expiryDate": "2026-11-01T00:00:00Z"
}
}Event generated when cancellation of a Zenmeter subscription was successfully requested
| eventId | string <EventId> Event identifier | ||||||
| eventDate | string <date-time> Date when the event occurred | ||||||
| eventCode | string Code specifying the Webhook event type | ||||||
| resourceId | string Identifier of the related resource | ||||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||||
object (SubscriptionCanceledWebhookModel) Webhook model for notifying that cancellation of a Zenmeter subscription has been requested | |||||||
| |||||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "subscriptionId": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "canceledAt": "2026-09-03T10:00:00Z",
- "expiryDate": "2027-01-01T00:00:00Z"
}
}Event generated when a Zenmeter subscription successfully entered its grace period
| eventId | string <EventId> Event identifier | ||||||
| eventDate | string <date-time> Date when the event occurred | ||||||
| eventCode | string Code specifying the Webhook event type | ||||||
| resourceId | string Identifier of the related resource | ||||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||||
object (SubscriptionGracePeriodStartedWebhookModel) Webhook model for notifying that a Zenmeter subscription has entered its grace period | |||||||
| |||||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "subscriptionId": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "startedAt": "2026-09-03T10:00:00Z",
- "gracePeriodExpiry": "2026-09-10T10:00:00Z"
}
}Event generated when a Zenmeter subscription trial was successfully extended
| eventId | string <EventId> Event identifier | ||||||
| eventDate | string <date-time> Date when the event occurred | ||||||
| eventCode | string Code specifying the Webhook event type | ||||||
| resourceId | string Identifier of the related resource | ||||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||||
object (SubscriptionTrialExtendedWebhookModel) Webhook model for notifying that a Zenmeter subscription trial has been extended | |||||||
| |||||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "subscriptionId": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "extendedAt": "2026-09-03T10:00:00Z",
- "expiryDate": "2026-09-17T10:00:00Z"
}
}Event generated when a Zenmeter subscription has expired
| eventId | string <EventId> Event identifier | ||||
| eventDate | string <date-time> Date when the event occurred | ||||
| eventCode | string Code specifying the Webhook event type | ||||
| resourceId | string Identifier of the related resource | ||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||
object (SubscriptionExpiredWebhookModel) Webhook model for notifying that a Zenmeter subscription has expired | |||||
| |||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "subscriptionId": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "expiredAt": "2027-01-08T00:00:00Z"
}
}Event generated when a Zenmeter trial subscription was successfully converted to paid
| eventId | string <EventId> Event identifier | ||||||||
| eventDate | string <date-time> Date when the event occurred | ||||||||
| eventCode | string Code specifying the Webhook event type | ||||||||
| resourceId | string Identifier of the related resource | ||||||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||||||
object (SubscriptionTrialConvertedWebhookModel) Webhook model for notifying that a Zenmeter trial subscription has been converted to paid | |||||||||
| |||||||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "subscriptionId": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "convertedAt": "2026-09-03T10:00:00Z",
- "sku": "professional-monthly",
- "expiryDate": "2026-10-03T10:00:00Z"
}
}Event generated when a user was successfully added to a Zenmeter subscription
| eventId | string <EventId> Event identifier | ||||||
| eventDate | string <date-time> Date when the event occurred | ||||||
| eventCode | string Code specifying the Webhook event type | ||||||
| resourceId | string Identifier of the related resource | ||||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||||
object (SubscriptionUserAddedWebhookModel) Webhook model for notifying that a user has been added to a Zenmeter subscription | |||||||
| |||||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "subscriptionId": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "subscriptionUserId": "zm-sub-user_oH_hPJ3BgEO172Yd9-KuTg",
- "externalUserId": "user-12345"
}
}Event generated when an add-on was successfully attached to a Zenmeter subscription
| eventId | string <EventId> Event identifier | ||||||||
| eventDate | string <date-time> Date when the event occurred | ||||||||
| eventCode | string Code specifying the Webhook event type | ||||||||
| resourceId | string Identifier of the related resource | ||||||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||||||
object (SubscriptionAddonCreatedWebhookModel) Webhook model for notifying that an add-on has been attached to a Zenmeter subscription | |||||||||
| |||||||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "subscriptionId": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "subscriptionAddonId": "zm-sub-addon_oH_hPJ3BgEO172Yd9-KuTg",
- "addonSku": "extra-credits",
- "createdAt": "2026-09-07T12:00:00Z"
}
}Event generated when cancellation was requested for an add-on attached to a Zenmeter subscription
| eventId | string <EventId> Event identifier | ||||||||
| eventDate | string <date-time> Date when the event occurred | ||||||||
| eventCode | string Code specifying the Webhook event type | ||||||||
| resourceId | string Identifier of the related resource | ||||||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||||||
object (SubscriptionAddonCanceledWebhookModel) Webhook model for notifying that cancellation has been requested for an add-on attached to a Zenmeter subscription | |||||||||
| |||||||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "subscriptionId": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "subscriptionAddonId": "zm-sub-addon_oH_hPJ3BgEO172Yd9-KuTg",
- "addonSku": "extra-credits",
- "canceledAt": "2026-09-07T12:00:00Z"
}
}Event generated when pending cancellation was reverted for an add-on attached to a Zenmeter subscription
| eventId | string <EventId> Event identifier | ||||||||
| eventDate | string <date-time> Date when the event occurred | ||||||||
| eventCode | string Code specifying the Webhook event type | ||||||||
| resourceId | string Identifier of the related resource | ||||||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||||||
object (SubscriptionAddonCancellationRevertedWebhookModel) Webhook model for notifying that pending cancellation has been reverted for an add-on attached to a Zenmeter subscription | |||||||||
| |||||||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "subscriptionId": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "subscriptionAddonId": "zm-sub-addon_oH_hPJ3BgEO172Yd9-KuTg",
- "addonSku": "extra-credits",
- "revertedAt": "2026-09-07T12:00:00Z"
}
}Event generated when an add-on attached to a Zenmeter subscription expired
| eventId | string <EventId> Event identifier | ||||||||
| eventDate | string <date-time> Date when the event occurred | ||||||||
| eventCode | string Code specifying the Webhook event type | ||||||||
| resourceId | string Identifier of the related resource | ||||||||
| callAttempt | integer <int32> Number of times the webhook has been attempted | ||||||||
object (SubscriptionAddonExpiredWebhookModel) Webhook model for notifying that an expiry has occurred for an add-on attached to a Zenmeter subscription | |||||||||
| |||||||||
{- "eventId": "event_NsqUHwSXC0S4f4vuNkegSg",
- "eventDate": "2019-08-24T14:15:22Z",
- "eventCode": "entitlement.created",
- "resourceId": "ent_qWVHS0LKfUiuqRCzKfJqlA\"",
- "callAttempt": 3,
- "payload": {
- "subscriptionId": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "subscriptionAddonId": "zm-sub-addon_oH_hPJ3BgEO172Yd9-KuTg",
- "addonSku": "extra-credits",
- "expiredAt": "2026-09-07T12:00:00Z"
}
}Read Zenmeter catalog configuration for products, business models, and compatible add-ons.
Returns add-ons and related offerings that can be attached to a specific base offering.
| baseOfferingSku required | string <= 50 characters Example: baseOfferingSku=ACME-AI-PRO-MONTHLY Base offering SKU. |
object (CatalogCompatibleBaseOfferingModel) | |||||||||
| |||||||||
Array of objects (CatalogCompatibleAddonListItemModel) Add-ons compatible with the base offering. | |||||||||
Array
| |||||||||
{- "baseOffering": {
- "sku": "ACME-AI-PRO-MONTHLY",
- "productId": "zm-prod_oH_hPJ3BgEO187Yd9-kuTg",
- "businessModelId": "zm-bm_oH_hPJ3BgEO187Yd9-kuTg",
- "tierId": "zm-tier_oH_hPJ3BgEO187Yd9-kuTg"
}, - "items": [
- {
- "addon": {
- "productId": "zm-prod_oH_hPJ3BgEO187Yd9-kuTg",
- "name": "Credits Add-on",
- "description": "Additional credits for AI request consumption.",
- "resetPolicy": {
- "mode": "never",
- "interval": {
- "type": "none",
- "count": 1
}
}, - "featureGrants": [
- {
- "featureReference": {
- "key": "priority_support",
- "displayName": "Priority support"
}, - "featureKind": "access",
- "usageGrants": {
- "includedAmount": 100000,
- "overage": {
- "mode": "blocked",
- "cap": {
- "mode": "absolute",
- "value": 25000
}
}
}
}
], - "meterGrants": [
- {
- "meterReference": {
- "key": "credits",
- "displayName": "Credits"
}, - "unit": {
- "name": "credit",
- "pluralName": "credits"
}, - "usageGrants": {
- "includedAmount": 100000,
- "overage": {
- "mode": "blocked",
- "cap": {
- "mode": "absolute",
- "value": 25000
}
}
}, - "rolloverPolicy": "never"
}
]
}, - "offerings": [
- {
- "name": "Credits Add-on 100K",
- "description": "Adds 100000 credits to the subscription.",
- "sku": "ACME-CREDITS-ADDON-100K",
- "term": {
- "renewalBehavior": "oneTime",
- "duration": {
- "type": "none",
- "count": 1
}, - "billingPeriod": "monthly"
}
}
]
}
]
}Returns the configured Zenmeter business model including rates, tiers, and offerings.
| businessModelId required | string <BusinessModelId> Example: zm-bm_oH_hPJ3BgEO187Yd9-kuTg Business model identifier |
| id | string <BusinessModelId> Business model identifier. | ||||||||||||||
| productId | string <ZenmeterProductId> Owning product identifier. | ||||||||||||||
| name | string Business model name. | ||||||||||||||
| description | string or null Optional business model description. | ||||||||||||||
object (CatalogBusinessModelTemplateModel) API model for the reusable business model template descriptor. | |||||||||||||||
| |||||||||||||||
Array of objects (RateEntryModel) Configured rate plan entries. | |||||||||||||||
Array
| |||||||||||||||
Array of objects (TierModel) Configured tiers. | |||||||||||||||
Array
| |||||||||||||||
{- "id": "zm-bm_oH_hPJ3BgEO187Yd9-kuTg",
- "productId": "zm-prod_oH_hPJ3BgEO187Yd9-kuTg",
- "name": "Credit-based",
- "description": "Commercial model billed by credit usage.",
- "template": {
- "pricingStructure": "usageLimit",
- "consumptionScope": "shared",
- "overageMode": "blocked"
}, - "rates": [
- {
- "rate": 2.5,
- "consumingFeature": {
- "featureReference": {
- "key": "priority_support",
- "displayName": "Priority support"
}, - "unit": {
- "name": "credit",
- "pluralName": "credits"
}
}, - "meter": {
- "meterReference": {
- "key": "credits",
- "displayName": "Credits"
}, - "unit": {
- "name": "credit",
- "pluralName": "credits"
}
}
}
], - "tiers": [
- {
- "id": "zm-tier_oH_hPJ3BgEO187Yd9-kuTg",
- "name": "Pro",
- "description": "Production tier for growing AI workloads.",
- "resetPolicy": {
- "mode": "never",
- "interval": {
- "type": "none",
- "count": 1
}
}, - "featureLimits": [
- {
- "featureReference": {
- "key": "priority_support",
- "displayName": "Priority support"
}, - "featureKind": "access",
- "consumptionStrategy": "fixedLimit",
- "access": "enabled",
- "usageGrants": {
- "shared": {
- "includedAmount": 100000,
- "overage": {
- "mode": "blocked",
- "cap": {
- "mode": "absolute",
- "value": 25000
}
}
}, - "user": {
- "includedAmount": 100000,
- "overage": {
- "mode": "blocked",
- "cap": {
- "mode": "absolute",
- "value": 25000
}
}
}, - "consumptionModel": "notConfigured"
}, - "unit": {
- "name": "credit",
- "pluralName": "credits"
}
}
], - "meters": [
- {
- "meterReference": {
- "key": "credits",
- "displayName": "Credits"
}, - "unit": {
- "name": "credit",
- "pluralName": "credits"
}, - "usageGrants": {
- "shared": {
- "includedAmount": 100000,
- "overage": {
- "mode": "blocked",
- "cap": {
- "mode": "absolute",
- "value": 25000
}
}
}, - "user": {
- "includedAmount": 100000,
- "overage": {
- "mode": "blocked",
- "cap": {
- "mode": "absolute",
- "value": 25000
}
}
}, - "consumptionModel": "notConfigured"
}, - "rolloverPolicy": "never"
}
], - "offerings": [
- {
- "name": "AI Pro Monthly",
- "description": "Monthly subscription for the Pro tier.",
- "sku": "ACME-AI-PRO-MONTHLY",
- "billingPeriod": "monthly",
- "gracePeriod": {
- "type": "none",
- "count": 1
}, - "trialConfiguration": {
- "enabled": true,
- "duration": "7d"
}
}
]
}
]
}Returns paginated Zenmeter products.
| pageNumber | integer <int32> Example: pageNumber=1 Requested page number |
| pageSize | integer <int32> Example: pageSize=10 Maximum number of items per page |
Array of objects (CatalogProductListItemModel) Array of items matching specified query filters | |||||||
Array
| |||||||
| pageSize | integer <int32> Requested page size or default page size if not specified | ||||||
| pageNumber | integer <int32> Requested page number or first page if not specified | ||||||
| elementsTotal | integer <int32> Total number of elements matching filter criteria | ||||||
{- "items": [
- {
- "id": "zm-prod_oH_hPJ3BgEO187Yd9-kuTg",
- "name": "Acme AI Platform",
- "description": "Cloud analytics platform for enterprise reporting."
}
], - "pageSize": 10,
- "pageNumber": 1,
- "elementsTotal": 1
}Returns all configured Zenmeter business models for the specified product.
| productId required | string <ZenmeterProductId> Example: zm-prod_oH_hPJ3BgEO187Yd9-kuTg Zenmeter product identifier |
Array of objects (CatalogBusinessModelListItemModel) | |||||||||||
Array
| |||||||||||
{- "items": [
- {
- "id": "zm-bm_oH_hPJ3BgEO187Yd9-kuTg",
- "productId": "zm-prod_oH_hPJ3BgEO187Yd9-kuTg",
- "name": "Credit-based",
- "description": "Commercial model billed by credit usage.",
- "template": {
- "pricingStructure": "usageLimit",
- "consumptionScope": "shared",
- "overageMode": "blocked"
}
}
]
}Creates a Zenmeter subscription for the supplied customer and line items.
Request body with customer and line items to subscribe.
| startMode required | string (SubscriptionStartMode) Enum: "paid" "trial" | ||||
required | Array of objects (SubscriptionLineItemApiRequest) non-empty Ordered offering SKUs and quantities to subscribe the customer to. | ||||
Array (non-empty)
| |||||
| customerId required | string <CustomerId> Identifier of the customer that owns the subscription. | ||||
object (BillingReferenceApiRequest) Request payload identifying an external billing order and its optional billing system. | |||||
| |||||
| subscriptionRefId | string or null <= 50 characters Optional external billing provider subscription reference identifier. Must be unique. | ||||
{- "startMode": "paid",
- "lineItems": [
- {
- "sku": "ACME-CREDITS-ADDON-100K",
- "quantity": 2
}
], - "customerId": "cust_n1bmaIvXnEW7DOl0w5EiHQ",
- "billingReference": {
- "orderRefId": "PO-2026-0042",
- "billingSystem": "FastSpring"
}, - "subscriptionRefId": "sub_1QxYz..."
}{- "id": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "subscriptionRevision": 17,
- "customer": {
- "id": "cust_n1bmaIvXnEW7DOl0w5EiHQ",
- "name": "Acme AI Ltd.",
- "accountRefId": "acct-acme-001"
}, - "offering": {
- "productName": "Acme AI Platform",
- "productId": "zm-prod_oH_hPJ3BgEO187Yd9-kuTg",
- "offeringName": "AI Pro Monthly",
- "sku": "ACME-AI-PRO-MONTHLY"
}, - "gracePeriod": {
- "type": "none",
- "count": 1
}, - "billingReference": {
- "orderRefId": "PO-2026-0042",
- "billingSystem": "FastSpring"
}, - "subscriptionRefId": "sub_1QxYz...",
- "statusInfo": {
- "status": "active",
- "expiryDate": "2019-08-24T14:15:22Z",
- "gracePeriodExpiry": "2019-08-24T14:15:22Z",
- "disabledAt": "2019-08-24T14:15:22Z",
- "customerDisabledAt": "2019-08-24T14:15:22Z",
- "cancelledAt": "2019-08-24T14:15:22Z",
- "trial": false
}, - "createdAt": "2019-08-24T14:15:22Z",
- "businessModel": "usage-based",
- "businessModelId": "zm-bm_oH_hPJ3BgEO187Yd9-kuTg",
- "userCount": 12,
- "addons": [
- {
- "id": "zm-sub-addon_gH1hGJ3BgE1LTRYd9-k1tg",
- "sku": "ACME-CREDITS-ADDON-100K",
- "offeringName": "Credits Add-on 100K",
- "createdAt": "2019-08-24T14:15:22Z",
- "expiryDate": "2019-08-24T14:15:22Z",
- "term": {
- "renewalBehavior": "oneTime",
- "duration": {
- "type": "none",
- "count": 1
}, - "billingPeriod": "monthly"
}, - "statusInfo": {
- "status": "active",
- "cancelledAt": "2019-08-24T14:15:22Z"
}, - "billingReference": {
- "orderRefId": "PO-2026-0042",
- "billingSystem": "FastSpring"
}
}
], - "billingPeriod": "monthly",
- "usageResetPolicy": {
- "mode": "never",
- "interval": {
- "type": "none",
- "count": 1
}
}, - "currentUsagePeriodStart": "2019-08-24T14:15:22Z",
- "nextUsageResetAt": "2019-08-24T14:15:22Z"
}Returns paginated Zenmeter subscriptions, optionally filtered by subscription user identity.
| pageNumber | integer <int32> Example: pageNumber=1 Requested page number |
| pageSize | integer <int32> Example: pageSize=10 Maximum number of items per page |
| userId | string or null <ZenmeterSubscriptionUserId> Zenmeter subscription user identifier. Mutually exclusive with ExternalUserId. |
| externalUserId | string or null <= 50 characters External user identifier shared by one or more subscription users. Mutually exclusive with UserId. |
Array of objects (SubscriptionListItemModel) Array of items matching specified query filters | |||||||||||||||||||||||
Array
| |||||||||||||||||||||||
| pageSize | integer <int32> Requested page size or default page size if not specified | ||||||||||||||||||||||
| pageNumber | integer <int32> Requested page number or first page if not specified | ||||||||||||||||||||||
| elementsTotal | integer <int32> Total number of elements matching filter criteria | ||||||||||||||||||||||
{- "items": [
- {
- "id": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "subscriptionRevision": 17,
- "customer": {
- "id": "cust_n1bmaIvXnEW7DOl0w5EiHQ",
- "name": "Acme AI Ltd.",
- "accountRefId": "acct-acme-001"
}, - "offering": {
- "productName": "Acme AI Platform",
- "productId": "zm-prod_oH_hPJ3BgEO187Yd9-kuTg",
- "offeringName": "AI Pro Monthly",
- "sku": "ACME-AI-PRO-MONTHLY"
}, - "billingReference": {
- "orderRefId": "PO-2026-0042",
- "billingSystem": "FastSpring"
}, - "subscriptionRefId": "sub_1QxYz...",
- "statusInfo": {
- "status": "active",
- "expiryDate": "2019-08-24T14:15:22Z",
- "gracePeriodExpiry": "2019-08-24T14:15:22Z",
- "disabledAt": "2019-08-24T14:15:22Z",
- "customerDisabledAt": "2019-08-24T14:15:22Z",
- "cancelledAt": "2019-08-24T14:15:22Z",
- "trial": false
}, - "createdAt": "2019-08-24T14:15:22Z",
- "businessModel": "usage-based",
- "currentUsagePeriodStart": "2019-08-24T14:15:22Z",
- "nextUsageResetAt": "2019-08-24T14:15:22Z"
}
], - "pageSize": 10,
- "pageNumber": 1,
- "elementsTotal": 1
}Returns a detailed Zenmeter subscription view for a specific subscription identifier.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| id | string <ZenmeterSubscriptionId> Subscription identifier. | ||||||||||||||||
| subscriptionRevision | integer <int32> Revision of the subscription consumption configuration. | ||||||||||||||||
object (SubscriptionCustomerModel) | |||||||||||||||||
| |||||||||||||||||
object (SubscriptionOfferingModel) | |||||||||||||||||
| |||||||||||||||||
object (Interval) | |||||||||||||||||
| |||||||||||||||||
object (BillingReferenceModel) Identifies an external billing order and, optionally, the billing system that issued it. | |||||||||||||||||
| |||||||||||||||||
| subscriptionRefId | string or null Optional billing provider subscription reference identifier. | ||||||||||||||||
object (SubscriptionStatusModel) | |||||||||||||||||
| |||||||||||||||||
| createdAt | string <date-time> Timestamp when the subscription was created. | ||||||||||||||||
| businessModel | string Billing business model. | ||||||||||||||||
| businessModelId | string <BusinessModelId> Billing business model identifier. | ||||||||||||||||
| userCount | integer <int32> Number of active users assigned to the subscription. | ||||||||||||||||
Array of objects (SubscriptionAddonModel) Enabled add-ons. | |||||||||||||||||
Array
| |||||||||||||||||
| billingPeriod | string (BillingPeriod) Enum: "monthly" "yearly" Billing cadence used by subscriptions and recurring add-ons. | ||||||||||||||||
object (UsageResetPolicyModel) | |||||||||||||||||
| |||||||||||||||||
| currentUsagePeriodStart | string <date-time> Start of current usage period in UTC. | ||||||||||||||||
| nextUsageResetAt | string or null <date-time> Planned timestamp for next usage reset in UTC. | ||||||||||||||||
{- "id": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "subscriptionRevision": 17,
- "customer": {
- "id": "cust_n1bmaIvXnEW7DOl0w5EiHQ",
- "name": "Acme AI Ltd.",
- "accountRefId": "acct-acme-001"
}, - "offering": {
- "productName": "Acme AI Platform",
- "productId": "zm-prod_oH_hPJ3BgEO187Yd9-kuTg",
- "offeringName": "AI Pro Monthly",
- "sku": "ACME-AI-PRO-MONTHLY"
}, - "gracePeriod": {
- "type": "none",
- "count": 1
}, - "billingReference": {
- "orderRefId": "PO-2026-0042",
- "billingSystem": "FastSpring"
}, - "subscriptionRefId": "sub_1QxYz...",
- "statusInfo": {
- "status": "active",
- "expiryDate": "2019-08-24T14:15:22Z",
- "gracePeriodExpiry": "2019-08-24T14:15:22Z",
- "disabledAt": "2019-08-24T14:15:22Z",
- "customerDisabledAt": "2019-08-24T14:15:22Z",
- "cancelledAt": "2019-08-24T14:15:22Z",
- "trial": false
}, - "createdAt": "2019-08-24T14:15:22Z",
- "businessModel": "usage-based",
- "businessModelId": "zm-bm_oH_hPJ3BgEO187Yd9-kuTg",
- "userCount": 12,
- "addons": [
- {
- "id": "zm-sub-addon_gH1hGJ3BgE1LTRYd9-k1tg",
- "sku": "ACME-CREDITS-ADDON-100K",
- "offeringName": "Credits Add-on 100K",
- "createdAt": "2019-08-24T14:15:22Z",
- "expiryDate": "2019-08-24T14:15:22Z",
- "term": {
- "renewalBehavior": "oneTime",
- "duration": {
- "type": "none",
- "count": 1
}, - "billingPeriod": "monthly"
}, - "statusInfo": {
- "status": "active",
- "cancelledAt": "2019-08-24T14:15:22Z"
}, - "billingReference": {
- "orderRefId": "PO-2026-0042",
- "billingSystem": "FastSpring"
}
}
], - "billingPeriod": "monthly",
- "usageResetPolicy": {
- "mode": "never",
- "interval": {
- "type": "none",
- "count": 1
}
}, - "currentUsagePeriodStart": "2019-08-24T14:15:22Z",
- "nextUsageResetAt": "2019-08-24T14:15:22Z"
}Requests cancellation for a Zenmeter subscription.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Changes the base offering of an existing Zenmeter subscription and reconciles add-ons and usage state.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
Request body with target base offering and add-on quantities.
required | Array of objects (SubscriptionLineItemApiRequest) non-empty Ordered target base offering and add-on quantities. Omitted recurring add-ons expire; one-time add-ons represent new purchases. | ||||
Array (non-empty)
| |||||
{- "lineItems": [
- {
- "sku": "ACME-CREDITS-ADDON-100K",
- "quantity": 2
}
]
}{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Evaluates a proposed subscription composition without changing the subscription.
Include exactly one base offering SKU and every recurring add-on that should remain active. An omitted recurring add-on is projected to expire. Each one-time add-on line specifies the quantity for a new purchase; existing one-time add-ons are included in the preview automatically.
The complete composition is evaluated. If an add-on is incompatible, the preview still returns all projections, sets canExecute to false, and marks the affected add-on as rejected with a projectedStatusReason.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
Complete target base offering and add-on quantities.
required | Array of objects (SubscriptionLineItemApiRequest) non-empty Ordered target base offering and add-on quantities. Omitted recurring add-ons expire; one-time add-ons represent new purchases. | ||||
Array (non-empty)
| |||||
| canExecute | boolean Whether every add-on projection can be applied. false when any projection is rejected. | ||||||||||||||||||
object (OfferingChangeBaseOfferingModel) Base offering details included in an offering-change preview. | |||||||||||||||||||
| |||||||||||||||||||
object (OfferingChangeBaseOfferingModel) Base offering details included in an offering-change preview. | |||||||||||||||||||
| |||||||||||||||||||
Array of objects (OfferingChangeAddonModel) Projected actions and resulting statuses for existing add-on instances and requested additions. | |||||||||||||||||||
Array
| |||||||||||||||||||
{- "lineItems": [
- {
- "sku": "ACME-CREDITS-ADDON-100K",
- "quantity": 2
}
]
}{- "canExecute": true,
- "currentBaseOffering": {
- "sku": "ACME-AI-PRO-MONTHLY",
- "name": "AI Pro Monthly",
- "productName": "Acme AI Platform",
- "tierName": "Pro",
- "billingPeriod": "monthly"
}, - "targetBaseOffering": {
- "sku": "ACME-AI-PRO-MONTHLY",
- "name": "AI Pro Monthly",
- "productName": "Acme AI Platform",
- "tierName": "Pro",
- "billingPeriod": "monthly"
}, - "addons": [
- {
- "subscriptionAddonId": "zm-sub-addon_gH1hGJ3BgE1LTRYd9-k1tg",
- "sku": "ACME-CREDITS-ADDON-100K",
- "name": "Credits Add-on 100K",
- "term": "oneTime",
- "currentStatus": "active",
- "action": "retain",
- "projectedStatus": "active",
- "projectedStatusReason": "includedInTargetComposition",
- "expiresAt": "2019-08-24T14:15:22Z"
}
]
}Immediately converts a trial Zenmeter subscription to paid using its existing offering configuration. A cancellation request is cleared as part of the conversion.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Disables a Zenmeter subscription. Disabled subscriptions cannot consume features. Effective immediately.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Re-enables a Zenmeter subscription. Does not override disabled customer. The enabled subscription can consume features. Effective immediately.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Extends a trial Zenmeter subscription using the trial duration configured at creation time. When cancellation is recorded, set the optional cancellation override to true to extend and clear the cancellation.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| overrideCancellation | boolean Example: overrideCancellation=false Whether to clear a recorded cancellation while extending the trial. Defaults to false. |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Returns the visible feature grants for a specific Zenmeter subscription.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| subscriptionRevision | integer <int32> Revision of the subscription consumption configuration. | ||||||||||
Array of objects (SubscriptionFeatureListItemModel) Resolved feature grants for the subscription. | |||||||||||
Array
| |||||||||||
{- "subscriptionRevision": 17,
- "items": [
- {
- "reference": {
- "key": "priority_support",
- "displayName": "Priority support"
}, - "unit": {
- "name": "credit",
- "pluralName": "credits"
}, - "featureKind": "access",
- "meterKey": "credits",
- "sources": [
- {
- "sourceKind": "baseOffering",
- "subscriptionAddonId": "zm-sub-addon_gH1hGJ3BgE1LTRYd9-k1tg",
- "access": "enabled",
- "usageGrants": {
- "shared": {
- "includedAmount": 100000,
- "overage": {
- "mode": "blocked",
- "cap": {
- "mode": "absolute",
- "value": 25000
}
}
}, - "user": {
- "includedAmount": 100000,
- "overage": {
- "mode": "blocked",
- "cap": {
- "mode": "absolute",
- "value": 25000
}
}
}, - "consumptionModel": "notConfigured"
}
}
]
}
]
}Returns the access features a specific Zenmeter subscription grants right now.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
Array of objects (FeatureReferenceModel) Access features the subscription currently grants. | |||||
Array
| |||||
{- "items": [
- {
- "key": "priority_support",
- "displayName": "Priority support"
}
]
}Returns the consumable features available to a specific Zenmeter subscription. Discovering a consumable feature does not guarantee that a subsequent Consume operation succeeds.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
object (UsageResetPolicyModel) | |||||||||||
| |||||||||||
| nextResetAt | string or null <date-time> Next scheduled usage reset, or null when the usage period is stopped. | ||||||||||
Array of objects (ConsumableFeatureListItemModel) Consumable features available to the subscription. | |||||||||||
Array
| |||||||||||
{- "resetPolicy": {
- "mode": "never",
- "interval": {
- "type": "none",
- "count": 1
}
}, - "nextResetAt": "2019-08-24T14:15:22Z",
- "items": [
- {
- "reference": {
- "key": "priority_support",
- "displayName": "Priority support"
}, - "unit": {
- "name": "credit",
- "pluralName": "credits"
}, - "balanceOwner": {
- "balanceOwnerKey": "api_calls",
- "balanceOwnerKind": "feature"
}
}
]
}Returns the visible meter grants for a specific Zenmeter subscription identifier.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| subscriptionRevision | integer <int32> Revision of the subscription consumption configuration. | ||||||
Array of objects (SubscriptionMeterListItemModel) Resolved meter grants for the subscription. | |||||||
Array
| |||||||
{- "subscriptionRevision": 17,
- "items": [
- {
- "reference": {
- "key": "credits",
- "displayName": "Credits"
}, - "unit": {
- "name": "credit",
- "pluralName": "credits"
}, - "sources": [
- {
- "sourceKind": "baseOffering",
- "subscriptionAddonId": "zm-sub-addon_gH1hGJ3BgE1LTRYd9-k1tg",
- "usageGrants": {
- "shared": {
- "includedAmount": 100000,
- "overage": {
- "mode": "blocked",
- "cap": {
- "mode": "absolute",
- "value": 25000
}
}
}, - "user": {
- "includedAmount": 100000,
- "overage": {
- "mode": "blocked",
- "cap": {
- "mode": "absolute",
- "value": 25000
}
}
}, - "consumptionModel": "notConfigured"
}
}
]
}
]
}Renews a paid Zenmeter subscription using the subscription duration configured at creation time. When cancellation is recorded, set the optional cancellation override to true to renew and clear the cancellation.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| overrideCancellation | boolean Example: overrideCancellation=false Whether to clear a recorded cancellation while renewing. Defaults to false. |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Reverts a pending Zenmeter subscription cancellation before expiry only. The current subscription period and usage period dates are preserved.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Returns a detailed Zenmeter subscription view for one external billing reference. Supply exactly one of orderRefId or subscriptionRefId.
| OrderRefId | string or null <= 50 characters Example: OrderRefId=PO-2026-0042 Optional external order reference identifier. |
| SubscriptionRefId | string or null <= 50 characters Example: SubscriptionRefId=sub_1QxYz... Optional external billing provider subscription reference identifier. |
| id | string <ZenmeterSubscriptionId> Subscription identifier. | ||||||||||||||||
| subscriptionRevision | integer <int32> Revision of the subscription consumption configuration. | ||||||||||||||||
object (SubscriptionCustomerModel) | |||||||||||||||||
| |||||||||||||||||
object (SubscriptionOfferingModel) | |||||||||||||||||
| |||||||||||||||||
object (Interval) | |||||||||||||||||
| |||||||||||||||||
object (BillingReferenceModel) Identifies an external billing order and, optionally, the billing system that issued it. | |||||||||||||||||
| |||||||||||||||||
| subscriptionRefId | string or null Optional billing provider subscription reference identifier. | ||||||||||||||||
object (SubscriptionStatusModel) | |||||||||||||||||
| |||||||||||||||||
| createdAt | string <date-time> Timestamp when the subscription was created. | ||||||||||||||||
| businessModel | string Billing business model. | ||||||||||||||||
| businessModelId | string <BusinessModelId> Billing business model identifier. | ||||||||||||||||
| userCount | integer <int32> Number of active users assigned to the subscription. | ||||||||||||||||
Array of objects (SubscriptionAddonModel) Enabled add-ons. | |||||||||||||||||
Array
| |||||||||||||||||
| billingPeriod | string (BillingPeriod) Enum: "monthly" "yearly" Billing cadence used by subscriptions and recurring add-ons. | ||||||||||||||||
object (UsageResetPolicyModel) | |||||||||||||||||
| |||||||||||||||||
| currentUsagePeriodStart | string <date-time> Start of current usage period in UTC. | ||||||||||||||||
| nextUsageResetAt | string or null <date-time> Planned timestamp for next usage reset in UTC. | ||||||||||||||||
{- "id": "zm-sub_oH_hPJ3BgEO172Yd9-KuTg",
- "subscriptionRevision": 17,
- "customer": {
- "id": "cust_n1bmaIvXnEW7DOl0w5EiHQ",
- "name": "Acme AI Ltd.",
- "accountRefId": "acct-acme-001"
}, - "offering": {
- "productName": "Acme AI Platform",
- "productId": "zm-prod_oH_hPJ3BgEO187Yd9-kuTg",
- "offeringName": "AI Pro Monthly",
- "sku": "ACME-AI-PRO-MONTHLY"
}, - "gracePeriod": {
- "type": "none",
- "count": 1
}, - "billingReference": {
- "orderRefId": "PO-2026-0042",
- "billingSystem": "FastSpring"
}, - "subscriptionRefId": "sub_1QxYz...",
- "statusInfo": {
- "status": "active",
- "expiryDate": "2019-08-24T14:15:22Z",
- "gracePeriodExpiry": "2019-08-24T14:15:22Z",
- "disabledAt": "2019-08-24T14:15:22Z",
- "customerDisabledAt": "2019-08-24T14:15:22Z",
- "cancelledAt": "2019-08-24T14:15:22Z",
- "trial": false
}, - "createdAt": "2019-08-24T14:15:22Z",
- "businessModel": "usage-based",
- "businessModelId": "zm-bm_oH_hPJ3BgEO187Yd9-kuTg",
- "userCount": 12,
- "addons": [
- {
- "id": "zm-sub-addon_gH1hGJ3BgE1LTRYd9-k1tg",
- "sku": "ACME-CREDITS-ADDON-100K",
- "offeringName": "Credits Add-on 100K",
- "createdAt": "2019-08-24T14:15:22Z",
- "expiryDate": "2019-08-24T14:15:22Z",
- "term": {
- "renewalBehavior": "oneTime",
- "duration": {
- "type": "none",
- "count": 1
}, - "billingPeriod": "monthly"
}, - "statusInfo": {
- "status": "active",
- "cancelledAt": "2019-08-24T14:15:22Z"
}, - "billingReference": {
- "orderRefId": "PO-2026-0042",
- "billingSystem": "FastSpring"
}
}
], - "billingPeriod": "monthly",
- "usageResetPolicy": {
- "mode": "never",
- "interval": {
- "type": "none",
- "count": 1
}
}, - "currentUsagePeriodStart": "2019-08-24T14:15:22Z",
- "nextUsageResetAt": "2019-08-24T14:15:22Z"
}Consume usage-based Zenmeter subscription features, inspect the resulting usage state, and browse recorded usage-event history.
Consumes the requested amount for a usage feature and returns resolved feature and bucket state. For insufficient balance, this endpoint returns HTTP 402 with ConsumeFeatureErrorResponse instead of the standard success payload. The error response includes a Data snapshot with current usage buckets.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
Feature-consumption request payload
| featureKey required | string [ 1 .. 50 ] characters Requested usage feature key to consume. Rate-based features can be charged to a backing meter such as credits. | ||||
required | object (SubscriptionUserReferenceModel) | ||||
| |||||
| amount required | integer <int64> [ 1 .. 1000000000000000 ] Requested feature amount to consume. | ||||
| operationId | string or null <= 50 characters Optional idempotency key that prevents duplicate consumption for the same subscription for 24 hours. UUID values are recommended. | ||||
| subscriptionRevision | integer <int32> Revision of the subscription consumption configuration used by this result. | ||||||||||||||||||||||
| requestedFeatureKey | string Feature key requested by the caller. | ||||||||||||||||||||||
| requestedAmount | integer <int64> Amount requested for this consume operation. | ||||||||||||||||||||||
| conversionRate | number <decimal> Conversion rate between requested feature and charged balance-owner feature. Equals 1 If the balance owner it the consumed feature. | ||||||||||||||||||||||
object (BalanceSnapshotModel) | |||||||||||||||||||||||
| |||||||||||||||||||||||
{- "featureKey": "ai_requests",
- "userIdentity": {
- "type": "subscriptionUserId"
}, - "amount": 40,
- "operationId": "consume-ai-requests-20260606-0001"
}{- "subscriptionRevision": 17,
- "requestedFeatureKey": "ai_requests",
- "requestedAmount": 40,
- "conversionRate": 2.5,
- "balanceSnapshot": {
- "balanceOwner": {
- "balanceOwnerKey": "api_calls",
- "balanceOwnerKind": "feature"
}, - "usageBuckets": [
- {
- "subscriptionAddonId": "zm-sub-addon_JKx7bM4Qv0e2rN9wP1LdYa",
- "bucketType": "shared",
- "used": 100,
- "available": 99900,
- "limit": 100000
}
]
}
}Returns successful usage events recorded for a Zenmeter subscription, ordered by creation time, newest first. Events no older than 90 days are returned. Both UTC period bounds are required, and the requested interval cannot exceed seven days.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| pageNumber | integer <int32> Example: pageNumber=1 Requested page number |
| pageSize | integer <int32> Example: pageSize=10 Maximum number of items per page |
| periodStart required | string <date-time> Inclusive start of the UTC event-time range. |
| periodEnd required | string <date-time> Exclusive end of the UTC event-time range. |
| subscriptionUserId | string or null <ZenmeterSubscriptionUserId> Example: subscriptionUserId=zm-sub-user_pJ2kJrFzE2HStEdPdRi9g Optional subscription user identifier filter. Mutually exclusive with ExternalUserId. |
| externalUserId | string or null <= 50 characters Example: externalUserId=user-42 Optional exact external user identifier filter. Mutually exclusive with SubscriptionUserId. |
| consumingFeatureKey | string or null <= 50 characters Example: consumingFeatureKey=ai_requests Optional exact consuming feature key filter. |
| meterKey | string or null <= 50 characters Example: meterKey=credits Optional exact meter key filter; includes usage from all consuming features sharing the meter. |
| operationId | string or null <= 50 characters Example: operationId=consume-ai-requests-20260606-0001 Optional exact operation ID filter. More than one event may match across users, features, or time. |
Array of objects (UsageEventListItemModel) Array of items matching specified query filters | |||||||||||||||||
Array
| |||||||||||||||||
| pageSize | integer <int32> Requested page size or default page size if not specified | ||||||||||||||||
| pageNumber | integer <int32> Requested page number or first page if not specified | ||||||||||||||||
| elementsTotal | integer <int32> Total number of elements matching filter criteria | ||||||||||||||||
{- "items": [
- {
- "createdAt": "2019-08-24T14:15:22Z",
- "subscriptionUserId": "zm-sub-user_pJ2kJrFzE2HStEdPdRi9g",
- "externalUserId": "user-42",
- "featureKey": "ai_requests",
- "requestedAmount": 40,
- "chargedAmount": 100,
- "operationId": "consume-ai-requests-20260606-0001",
- "usages": [
- {
- "bucketType": "shared",
- "subscriptionAddonId": "zm-sub-addon_gH1hGJ3BgE1LTRYd9-k1tg",
- "consumptionBreakdown": {
- "rollover": 10,
- "included": 80,
- "overage": 10,
- "total": 100
}
}
]
}
], - "pageSize": 10,
- "pageNumber": 1,
- "elementsTotal": 1
}Adds one or more add-on SKUs to an existing subscription.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
Request payload containing add-on SKUs and quantities.
required | Array of objects (SubscriptionLineItemApiRequest) non-empty Ordered add-on offering SKUs and quantities to attach to the subscription. | ||||
Array (non-empty)
| |||||
object (BillingReferenceApiRequest) Request payload identifying an external billing order and its optional billing system. | |||||
| |||||
{- "lineItems": [
- {
- "sku": "ACME-CREDITS-ADDON-100K",
- "quantity": 2
}
], - "billingReference": {
- "orderRefId": "PO-2026-0042",
- "billingSystem": "FastSpring"
}
}{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Requests cancellation of a single subscription add-on. Recurring add-ons remain active until subscription renewal.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| subscriptionAddonId required | string <ZenmeterSubscriptionAddonId> Example: zm-sub-addon_ff7QkJrFzE2HStEdPdRing Add-on identifier |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Reverts a pending cancellation for a recurring add-on before the add-on expires.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| subscriptionAddonId required | string <ZenmeterSubscriptionAddonId> Example: zm-sub-addon_ff7QkJrFzE2HStEdPdRing Add-on identifier |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Creates a user under a Zenmeter subscription.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
Properties required to create a subscription user
| externalUserId required | string [ 1 .. 50 ] characters External user identifier. Must be unique. |
| firstName | string or null <= 50 characters User first name. |
| lastName | string or null <= 50 characters User last name. |
string or null <email> <= 100 characters User email address. |
{- "externalUserId": "user-42",
- "firstName": "Casey",
- "lastName": "Jones",
- "email": "casey.jones@example.com"
}{- "subscriptionUserId": "zm-sub-user_pJ2kJrFzE2HStEdPdRi9g",
- "externalUserId": "user-42",
- "firstName": "Casey",
- "lastName": "Jones",
- "email": "casey.jones@example.com",
- "status": "enabled",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "lastEnabledAt": "2019-08-24T14:15:22Z",
- "lastDisabledAt": "2019-08-24T14:15:22Z"
}Returns a paginated list of users for a Zenmeter subscription.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| pageNumber | integer <int32> Example: pageNumber=1 Requested page number |
| pageSize | integer <int32> Example: pageSize=10 Maximum number of items per page |
Array of objects (SubscriptionUserListItemModel) Array of items matching specified query filters | |||||||||||||||||||||
Array
| |||||||||||||||||||||
| pageSize | integer <int32> Requested page size or default page size if not specified | ||||||||||||||||||||
| pageNumber | integer <int32> Requested page number or first page if not specified | ||||||||||||||||||||
| elementsTotal | integer <int32> Total number of elements matching filter criteria | ||||||||||||||||||||
{- "items": [
- {
- "subscriptionUserId": "zm-sub-user_pJ2kJrFzE2HStEdPdRi9g",
- "externalUserId": "user-42",
- "firstName": "Casey",
- "lastName": "Jones",
- "email": "casey.jones@example.com",
- "status": "enabled",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "lastEnabledAt": "2019-08-24T14:15:22Z",
- "lastDisabledAt": "2019-08-24T14:15:22Z"
}
], - "pageSize": 10,
- "pageNumber": 1,
- "elementsTotal": 1
}Returns a single Zenmeter subscription user by identifier from a Zenmeter subscription.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| subscriptionUserId required | string <ZenmeterSubscriptionUserId> Example: zm-sub-user_pJ2kJrFzE2HStEdPdRi9g Zenmeter subscription user identifier. |
| subscriptionUserId | string <ZenmeterSubscriptionUserId> Subscription user identifier. |
| externalUserId | string External user identifier. |
| firstName | string or null User first name. |
| lastName | string or null User last name. |
string or null User email address. | |
| status | string (SubscriptionUserStatus) Enum: "enabled" "disabled" Lifecycle state of a Zenmeter subscription user. |
| createdAt | string <date-time> User creation timestamp in UTC. |
| updatedAt | string or null <date-time> Last user update timestamp in UTC. |
| lastEnabledAt | string <date-time> Timestamp when the user was last enabled in UTC. |
| lastDisabledAt | string or null <date-time> Timestamp when the user was last disabled in UTC. |
{- "subscriptionUserId": "zm-sub-user_pJ2kJrFzE2HStEdPdRi9g",
- "externalUserId": "user-42",
- "firstName": "Casey",
- "lastName": "Jones",
- "email": "casey.jones@example.com",
- "status": "enabled",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "lastEnabledAt": "2019-08-24T14:15:22Z",
- "lastDisabledAt": "2019-08-24T14:15:22Z"
}Replaces mutable subscription user properties.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| subscriptionUserId required | string <ZenmeterSubscriptionUserId> Example: zm-sub-user_pJ2kJrFzE2HStEdPdRi9g Zenmeter subscription user identifier. |
Properties to update for a subscription user
| firstName | string or null <= 50 characters User first name. |
| lastName | string or null <= 50 characters User last name. |
string or null <email> <= 100 characters User email address. |
{- "firstName": "Casey",
- "lastName": "Jones",
- "email": "casey.jones@example.com"
}{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Returns the current stored balance view for one subscription user across all balance owners.
A balance owner is either a directly consumable feature, for example advanced_reports, or a backing meter such as credits.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| subscriptionUserId required | string <ZenmeterSubscriptionUserId> Example: zm-sub-user_pJ2kJrFzE2HStEdPdRi9g Zenmeter subscription user identifier. |
| subscriptionRevision | integer <int32> Revision of the subscription consumption configuration used by this result. | ||||
Array of objects (BalanceSnapshotModel) Balance snapshots for the requested subscription user. | |||||
Array
| |||||
{- "subscriptionRevision": 17,
- "balanceSnapshots": [
- {
- "balanceOwner": {
- "balanceOwnerKey": "api_calls",
- "balanceOwnerKind": "feature"
}, - "usageBuckets": [
- {
- "subscriptionAddonId": "zm-sub-addon_JKx7bM4Qv0e2rN9wP1LdYa",
- "bucketType": "shared",
- "used": 100,
- "available": 99900,
- "limit": 100000
}
]
}
]
}Disables a Zenmeter subscription user. Disabled user can not consume features. Effective immediately.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| subscriptionUserId required | string <ZenmeterSubscriptionUserId> Example: zm-sub-user_pJ2kJrFzE2HStEdPdRi9g Zenmeter subscription user identifier. |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Re-enables a Zenmeter subscription user. The user can consume features. Effective immediately.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| subscriptionUserId required | string <ZenmeterSubscriptionUserId> Example: zm-sub-user_pJ2kJrFzE2HStEdPdRi9g Zenmeter subscription user identifier. |
{- "details": "string",
- "error": "string",
- "errorCode": "string",
- "validationErrors": [
- {
- "message": "string",
- "propertyName": "string",
- "code": "string"
}
]
}Returns a single Zenmeter subscription user by external user identifier from a Zenmeter subscription.
| subscriptionId required | string <ZenmeterSubscriptionId> Example: zm-sub_oH_hPJ3BgEO172Yd9-KuTg Subscription identifier |
| externalUserId | string <= 50 characters Example: externalUserId=user-42 External user identifier. |
| subscriptionUserId | string <ZenmeterSubscriptionUserId> Subscription user identifier. |
| externalUserId | string External user identifier. |
| firstName | string or null User first name. |
| lastName | string or null User last name. |
string or null User email address. | |
| status | string (SubscriptionUserStatus) Enum: "enabled" "disabled" Lifecycle state of a Zenmeter subscription user. |
| createdAt | string <date-time> User creation timestamp in UTC. |
| updatedAt | string or null <date-time> Last user update timestamp in UTC. |
| lastEnabledAt | string <date-time> Timestamp when the user was last enabled in UTC. |
| lastDisabledAt | string or null <date-time> Timestamp when the user was last disabled in UTC. |
{- "subscriptionUserId": "zm-sub-user_pJ2kJrFzE2HStEdPdRi9g",
- "externalUserId": "user-42",
- "firstName": "Casey",
- "lastName": "Jones",
- "email": "casey.jones@example.com",
- "status": "enabled",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "lastEnabledAt": "2019-08-24T14:15:22Z",
- "lastDisabledAt": "2019-08-24T14:15:22Z"
}