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"
}