Portal API (0.2.0)
Download OpenAPI specification:Download
The portal API organizes Products
, Plans
, and Subscriptions
which consume plan item resources.
AdminAuth
Security Scheme Type | OpenID Connect |
---|---|
Connect URL | https://login.emddigital.com/.well-known/openid-configuration |
Response samples
- 200
- default
{- "items": [
- {
- "createdDate": "2019-08-24T14:15:22Z",
- "environment": "TEST",
- "externalId": "string",
- "name": "string",
- "paymentProcessorId": "stringstringstringstri",
- "type": "STRIPE",
- "updatedDate": "2019-08-24T14:15:22Z"
}
]
}
List Plans
List all plans.
Authorizations:
query Parameters
productId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
status | string Enum: "ACTIVE" "INACTIVE" "DELETED" |
Responses
Response samples
- 200
- default
{- "items": [
- {
- "items": [
- {
- "dimension": "string",
- "limit": 1,
- "meteringResourceId": "stringstringstringstri",
- "name": "string",
- "planItemId": "stringstringstringstri",
- "price": {
- "currency": "usd",
- "recurring": {
- "interval": "day",
- "intervalCount": 1
}, - "billingScheme": "TIERED",
- "tiers": [
- {
- "flatAmount": 0,
- "unitAmount": 0,
- "upTo": 0
}
], - "tiersMode": "VOLUME",
- "usageType": "METERED"
}, - "usage": {
- "confirmed": 5,
- "pending": 3
}
}
], - "name": "string",
- "planId": "stringstringstringstri",
- "tierId": "stringstringstringstri",
- "enabledApplications": [
- "string"
], - "enabledTenants": [
- "string"
], - "paymentProcessorId": "stringstringstringstri",
- "productId": "stringstringstringstri",
- "renewalLimit": 0,
- "status": "ACTIVE",
- "subscriptionCount": 0
}
]
}
Create Plan
Create a plan. PlanItem prices must all have the same interval and intervalCount.
Authorizations:
Request Body schema: application/json
required | Array of objects (PlanItem) non-empty <= 50 items [ items ] |
name required | string (Name) <= 200 characters [^\n\r]+ |
planId | string (Id) 22 characters [a-zA-Z0-9_-]+ |
tierId required | string 22 characters [a-zA-Z0-9_-]+ |
enabledApplications required | Array of strings (IdList) <= 20 items |
enabledTenants | Array of strings (IdList) <= 20 items |
paymentProcessorId | string (Id) 22 characters [a-zA-Z0-9_-]+ |
productId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
renewalLimit | integer <int32> >= 0 Maximum number of renewals. Useful for free tiers or discounted plans. No value means unlimited renewals. |
status required | string Enum: "ACTIVE" "INACTIVE" "DELETED" |
subscriptionCount | number >= 0 Number of currently active subscriptions on this plan. |
property name* | any |
Responses
Request samples
- Payload
{- "items": [
- {
- "dimension": "string",
- "limit": 1,
- "meteringResourceId": "stringstringstringstri",
- "name": "string",
- "planItemId": "stringstringstringstri",
- "price": {
- "currency": "usd",
- "recurring": {
- "interval": "day",
- "intervalCount": 1
}, - "billingScheme": "TIERED",
- "tiers": [
- {
- "flatAmount": 0,
- "unitAmount": 0,
- "upTo": 0
}
], - "tiersMode": "VOLUME",
- "usageType": "METERED"
}, - "usage": {
- "confirmed": 5,
- "pending": 3
}
}
], - "name": "string",
- "planId": "stringstringstringstri",
- "tierId": "stringstringstringstri",
- "enabledApplications": [
- "string"
], - "enabledTenants": [
- "string"
], - "paymentProcessorId": "stringstringstringstri",
- "productId": "stringstringstringstri",
- "renewalLimit": 0,
- "status": "ACTIVE",
- "subscriptionCount": 0
}
Response samples
- 201
- default
{- "planId": "string"
}
Describe Plan
Describe a plan.
Authorizations:
path Parameters
id required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Responses
Response samples
- 200
- default
{- "items": [
- {
- "dimension": "string",
- "limit": 1,
- "meteringResourceId": "stringstringstringstri",
- "name": "string",
- "planItemId": "stringstringstringstri",
- "price": {
- "currency": "usd",
- "recurring": {
- "interval": "day",
- "intervalCount": 1
}, - "billingScheme": "TIERED",
- "tiers": [
- {
- "flatAmount": 0,
- "unitAmount": 0,
- "upTo": 0
}
], - "tiersMode": "VOLUME",
- "usageType": "METERED"
}, - "usage": {
- "confirmed": 5,
- "pending": 3
}
}
], - "name": "string",
- "planId": "stringstringstringstri",
- "tierId": "stringstringstringstri",
- "enabledApplications": [
- "string"
], - "enabledTenants": [
- "string"
], - "paymentProcessorId": "stringstringstringstri",
- "productId": "stringstringstringstri",
- "renewalLimit": 0,
- "status": "ACTIVE",
- "subscriptionCount": 0
}
Update Plan
Update a plan.
Authorizations:
path Parameters
id required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Request Body schema: application/json
enabledApplications | Array of strings (IdList) <= 20 items |
enabledTenants | Array of strings (IdList) <= 20 items |
name | string (Name) <= 200 characters [^\n\r]+ |
status | string Enum: "ACTIVE" "INACTIVE" |
Responses
Request samples
- Payload
{- "enabledApplications": [
- "string"
], - "enabledTenants": [
- "string"
], - "name": "string",
- "status": "ACTIVE"
}
Response samples
- default
{- "code": "string",
- "details": { },
- "message": "string"
}
Create Product
Create a product.
Authorizations:
Request Body schema: application/json
name required | string (Name) <= 200 characters [^\n\r]+ |
productId | string (Id) 22 characters [a-zA-Z0-9_-]+ |
teamId | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Responses
Request samples
- Payload
{- "name": "string",
- "productId": "stringstringstringstri",
- "teamId": "stringstringstringstri"
}
Response samples
- 201
- default
{- "productId": "stringstringstringstri"
}
Update Product
Update an product.
Authorizations:
path Parameters
id required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Request Body schema: application/json
name | string (Name) <= 200 characters [^\n\r]+ |
Responses
Request samples
- Payload
{- "name": "string"
}
Response samples
- default
{- "code": "string",
- "details": { },
- "message": "string"
}
List Subscriptions
Authorizations:
query Parameters
productId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
planId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
nextToken | string (NextToken) <= 4096 characters ^[a-zA-Z0-9_-]+$ |
limit | string <= 3 characters ^[0-9]+$ |
status | string (SubscriptionStatus) Enum: "ACTIVE" "EXPIRING" "CANCELED" |
customerId | string (Id) 22 characters [a-zA-Z0-9_-]+ |
string <email> |
Responses
Response samples
- 200
{- "items": [
- {
- "createdDate": "2019-08-24T14:15:22Z",
- "customerEmail": "string",
- "customerId": "stringstringstringstri",
- "owners": [
- {
- "email": "string",
- "userId": "stringstringstringstri"
}
], - "periodEndDate": "2019-08-24T14:15:22Z",
- "periodStartDate": "2019-08-24T14:15:22Z",
- "planId": "stringstringstringstri",
- "productId": "stringstringstringstri",
- "renewalCount": 0,
- "status": "ACTIVE",
- "subscriptionId": "stringstringstringstri"
}
], - "nextToken": "string"
}
Describe Subscription
Authorizations:
path Parameters
subscriptionId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
query Parameters
customerId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Responses
Response samples
- 200
{- "createdDate": "2019-08-24T14:15:22Z",
- "customerEmail": "string",
- "customerId": "stringstringstringstri",
- "owners": [
- {
- "email": "string",
- "userId": "stringstringstringstri"
}
], - "periodEndDate": "2019-08-24T14:15:22Z",
- "periodStartDate": "2019-08-24T14:15:22Z",
- "planId": "stringstringstringstri",
- "productId": "stringstringstringstri",
- "renewalCount": 0,
- "status": "ACTIVE",
- "subscriptionId": "stringstringstringstri"
}
Update Subscription
An administrator can update the status of a subscription. The status of a CANCELED
subscription cannot be changed.
Authorizations:
path Parameters
subscriptionId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
query Parameters
customerId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Request Body schema: application/json
owners | Array of strings (Id) [ 1 .. 5 ] items [ items 22 characters [a-zA-Z0-9_-]+ ] |
status | string (SubscriptionStatus) Enum: "ACTIVE" "EXPIRING" "CANCELED" |
Responses
Request samples
- Payload
{- "owners": [
- "stringstringstringstri"
], - "status": "ACTIVE"
}
Response samples
- default
{- "code": "string",
- "details": { },
- "message": "string"
}
List Usage Records
Authorizations:
path Parameters
subscriptionId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
query Parameters
customerId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Responses
Response samples
- 200
{- "items": [
- {
- "confirmed": 0,
- "dimension": "string",
- "limit": 0,
- "pending": 0,
- "periodEndDate": "2019-08-24T14:15:22Z",
- "periodStartDate": "2019-08-24T14:15:22Z",
- "resourceId": "stringstringstringstri"
}
], - "nextToken": "string"
}
List Tiers
List all tiers.
Authorizations:
query Parameters
productId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Responses
Response samples
- 200
- default
{- "items": [
- {
- "cancellationBehaviors": [
- "CANCEL_AT_END"
], - "description": "string",
- "name": "string",
- "oneTimeSubscription": true,
- "paymentMethod": "REQUIRED",
- "planCount": 0,
- "productId": "stringstringstringstri",
- "prorate": true,
- "tierId": "stringstringstringstri"
}
]
}
Create Tier
Create a tier.
Authorizations:
Request Body schema: application/json
cancellationBehaviors required | Array of strings (CancellationBehavior) non-empty Items Enum: "CANCEL_AT_END" "CANCEL_NOW" List of supported cancellation behaviors for this tier |
description | string (Description) <= 1024 characters [^\n\r]+ |
name required | string (Name) <= 200 characters [^\n\r]+ |
oneTimeSubscription required | boolean Allow a customer to subscribe only once to plans of this tier. Useful for discounted or trial tiers. |
paymentMethod required | string Enum: "REQUIRED" "OPTIONAL" Defines if a payment method is required at checkout |
productId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
prorate | boolean If true and a subscription is canceled or a plan is changed, pro-rate any licensed usage. Metered usage is unaffected by this setting. |
tierId | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Responses
Request samples
- Payload
{- "cancellationBehaviors": [
- "CANCEL_AT_END"
], - "description": "string",
- "name": "string",
- "oneTimeSubscription": true,
- "paymentMethod": "REQUIRED",
- "productId": "stringstringstringstri",
- "prorate": true,
- "tierId": "stringstringstringstri"
}
Response samples
- 201
- default
{- "tierId": "string"
}
Delete Tier
Delete a tier.
Authorizations:
path Parameters
id required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
query Parameters
productId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Responses
Response samples
- default
{- "code": "string",
- "details": { },
- "message": "string"
}
Describe Tier
Describe a tier.
Authorizations:
path Parameters
id required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
query Parameters
productId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Responses
Response samples
- 200
- default
{- "cancellationBehaviors": [
- "CANCEL_AT_END"
], - "description": "string",
- "name": "string",
- "oneTimeSubscription": true,
- "paymentMethod": "REQUIRED",
- "planCount": 0,
- "productId": "stringstringstringstri",
- "prorate": true,
- "tierId": "stringstringstringstri"
}
Update Tier
Update a tier.
Authorizations:
path Parameters
id required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
query Parameters
productId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Request Body schema: application/json
description | string (Description) <= 1024 characters [^\n\r]+ |
name | string (Name) <= 200 characters [^\n\r]+ |
Responses
Request samples
- Payload
{- "description": "string",
- "name": "string"
}
Response samples
- default
{- "code": "string",
- "details": { },
- "message": "string"
}
Response samples
- 200
- default
{- "items": [
- {
- "items": [
- {
- "dimension": "string",
- "limit": 1,
- "meteringResourceId": "stringstringstringstri",
- "name": "string",
- "planItemId": "stringstringstringstri",
- "price": {
- "currency": "usd",
- "recurring": {
- "interval": "day",
- "intervalCount": 1
}, - "billingScheme": "TIERED",
- "tiers": [
- {
- "flatAmount": 0,
- "unitAmount": 0,
- "upTo": 0
}
], - "tiersMode": "VOLUME",
- "usageType": "METERED"
}, - "usage": {
- "confirmed": 5,
- "pending": 3
}
}
], - "name": "string",
- "planId": "stringstringstringstri",
- "tierId": "stringstringstringstri"
}
]
}
Describe Plan
Describe a plan.
Authorizations:
path Parameters
id required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Responses
Response samples
- 200
- default
{- "items": [
- {
- "dimension": "string",
- "limit": 1,
- "meteringResourceId": "stringstringstringstri",
- "name": "string",
- "planItemId": "stringstringstringstri",
- "price": {
- "currency": "usd",
- "recurring": {
- "interval": "day",
- "intervalCount": 1
}, - "billingScheme": "TIERED",
- "tiers": [
- {
- "flatAmount": 0,
- "unitAmount": 0,
- "upTo": 0
}
], - "tiersMode": "VOLUME",
- "usageType": "METERED"
}, - "usage": {
- "confirmed": 5,
- "pending": 3
}
}
], - "name": "string",
- "planId": "stringstringstringstri",
- "tierId": "stringstringstringstri"
}
List Subscriptions
List all subscriptions for the user making the request.
Authorizations:
query Parameters
status | string[ACTIVE|EXPIRING|CANCELED]([,ACTIVE|,EXPIRING... Default: "ACTIVE,EXPIRING" Whether to show canceled subscriptions in the returned results. |
nextToken | string (NextToken) <= 4096 characters ^[a-zA-Z0-9_-]+$ |
Responses
Response samples
- 200
- default
{- "items": [
- {
- "meteringKeyId": "stringstringstringstri",
- "periodEndDate": "2019-08-24T14:15:22Z",
- "periodStartDate": "2019-08-24T14:15:22Z",
- "plan": {
- "items": [
- {
- "dimension": "string",
- "limit": 1,
- "meteringResourceId": "stringstringstringstri",
- "name": "string",
- "planItemId": "stringstringstringstri",
- "price": {
- "currency": "usd",
- "recurring": {
- "interval": "day",
- "intervalCount": 1
}, - "billingScheme": "TIERED",
- "tiers": [
- {
- "flatAmount": 0,
- "unitAmount": 0,
- "upTo": 0
}
], - "tiersMode": "VOLUME",
- "usageType": "METERED"
}, - "usage": {
- "confirmed": 5,
- "pending": 3
}
}
], - "name": "string",
- "planId": "stringstringstringstri",
- "tierId": "stringstringstringstri"
}, - "status": "ACTIVE",
- "subscriptionId": "stringstringstringstri"
}
], - "nextToken": "string"
}
Create Subscription
If the user is currently not subscribed to a plan, this will create a new subscription. If the plan requires a credit card, the response will include a checkout URL to Stripe. Otherwise, the user is immediately subscribed to the plan (i.e. a free tier plan).
The parameters successUrl
and cancelUrl
are required.
If the user is already subscribed and the planId does not match the current subscription, the backend will attempt to place the user on the new plan if permitted by the constraints provided by the plan and tier.
If the user has an EXPIRING subscription, passing the same
planId to which they are subscribed with reactivate their
subscription. The parameters successUrl
and cancelUrl
are not required.
Authorizations:
Request Body schema: application/json
behavior | string Value: "FORCE_NEW" If set to |
cancelUrl | string <uri> (Url) [ 4 .. 300 ] characters |
planId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
successUrl | string <uri> (Url) [ 4 .. 300 ] characters |
Responses
Request samples
- Payload
{- "behavior": "FORCE_NEW",
- "planId": "stringstringstringstri",
}
Response samples
- 201
- default
{- "checkoutUrl": "string",
- "sessionId": "string",
- "subscriptionId": "string"
}
Describe Subscription
Describe a subscription
Authorizations:
path Parameters
id required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Responses
Response samples
- 200
- default
{- "meteringKeyId": "stringstringstringstri",
- "periodEndDate": "2019-08-24T14:15:22Z",
- "periodStartDate": "2019-08-24T14:15:22Z",
- "plan": {
- "items": [
- {
- "dimension": "string",
- "limit": 1,
- "meteringResourceId": "stringstringstringstri",
- "name": "string",
- "planItemId": "stringstringstringstri",
- "price": {
- "currency": "usd",
- "recurring": {
- "interval": "day",
- "intervalCount": 1
}, - "billingScheme": "TIERED",
- "tiers": [
- {
- "flatAmount": 0,
- "unitAmount": 0,
- "upTo": 0
}
], - "tiersMode": "VOLUME",
- "usageType": "METERED"
}, - "usage": {
- "confirmed": 5,
- "pending": 3
}
}
], - "name": "string",
- "planId": "stringstringstringstri",
- "tierId": "stringstringstringstri"
}, - "status": "ACTIVE",
- "subscriptionId": "stringstringstringstri"
}
Cancel Subscription
Cancel subscription to a plan for the current user. User must have no pending transactions.
Authorizations:
path Parameters
id required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Request Body schema: application/json
behavior | string Default: "CANCEL_AT_END" Enum: "CANCEL_AT_END" "CANCEL_NOW" |
Responses
Request samples
- Payload
{- "behavior": "CANCEL_AT_END"
}
Response samples
- default
{- "code": "string",
- "details": { },
- "message": "string"
}
listSubscriptionInvitations
Authorizations:
path Parameters
id required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
query Parameters
nextToken | string (NextToken) <= 4096 characters ^[a-zA-Z0-9_-]+$ |
Responses
Response samples
- 200
{- "items": [
- {
- "email": "user@example.com",
- "expirationDate": "2019-08-24T14:15:22Z",
- "invitationId": "stringstringstringstri",
- "meteringResourceId": "stringstringstringstri",
- "state": "CREATED"
}
], - "nextToken": "string"
}
createSubscriptionInvitation
Authorizations:
path Parameters
id required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Request Body schema: application/json
email required | string <email> |
expirationDate required | string <date-time> |
invitationId | string (Id) 22 characters [a-zA-Z0-9_-]+ |
meteringResourceId | string (Id) 22 characters [a-zA-Z0-9_-]+ |
state | string (SubscriptionInvitationState) Enum: "CREATED" "ACCEPTED" "EXPIRED" |
Responses
Request samples
- Payload
{- "email": "user@example.com",
- "expirationDate": "2019-08-24T14:15:22Z",
- "invitationId": "stringstringstringstri",
- "meteringResourceId": "stringstringstringstri",
- "state": "CREATED"
}
Response samples
- 201
{- "invitationId": "string"
}
describeSubscriptionInvitation
Authorizations:
path Parameters
id required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
invitationId required | string (Id) 22 characters [a-zA-Z0-9_-]+ |
Responses
Response samples
- 200
{- "email": "user@example.com",
- "expirationDate": "2019-08-24T14:15:22Z",
- "invitationId": "stringstringstringstri",
- "meteringResourceId": "stringstringstringstri",
- "state": "CREATED"
}