Skip to main content

Portal API (0.2.0)

Download OpenAPI specification:Download

The portal API organizes Products, Plans, and Subscriptions which consume plan item resources.

Authentication

AdminAuth

Security Scheme Type OpenID Connect
Connect URL https://login.emddigital.com/.well-known/openid-configuration

UserAuth

Security Scheme Type API Key
Header parameter name: Authorization

Admin

List Payment Processors

Authorizations:

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

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

Content type
application/json
{
  • "items": [
    ]
}

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

Content type
application/json
{
  • "items": [
    ],
  • "name": "string",
  • "planId": "stringstringstringstri",
  • "tierId": "stringstringstringstri",
  • "enabledApplications": [
    ],
  • "enabledTenants": [
    ],
  • "paymentProcessorId": "stringstringstringstri",
  • "productId": "stringstringstringstri",
  • "renewalLimit": 0,
  • "status": "ACTIVE",
  • "subscriptionCount": 0
}

Response samples

Content type
application/json
{
  • "planId": "string"
}

Delete Plan

Delete a plan.

Authorizations:
path Parameters
id
required
string (Id) 22 characters [a-zA-Z0-9_-]+

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "details": { },
  • "message": "string"
}

Describe Plan

Describe a plan.

Authorizations:
path Parameters
id
required
string (Id) 22 characters [a-zA-Z0-9_-]+

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "name": "string",
  • "planId": "stringstringstringstri",
  • "tierId": "stringstringstringstri",
  • "enabledApplications": [
    ],
  • "enabledTenants": [
    ],
  • "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

Content type
application/json
{
  • "enabledApplications": [
    ],
  • "enabledTenants": [
    ],
  • "name": "string",
  • "status": "ACTIVE"
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "details": { },
  • "message": "string"
}

List Products

Lists products.

Authorizations:
query Parameters
teamId
string (Id) 22 characters [a-zA-Z0-9_-]+

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

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

Content type
application/json
{
  • "name": "string",
  • "productId": "stringstringstringstri",
  • "teamId": "stringstringstringstri"
}

Response samples

Content type
application/json
{
  • "productId": "stringstringstringstri"
}

Delete Product

Delete a product. Must not contain any active applications or plans.

Authorizations:
path Parameters
id
required
string (Id) 22 characters [a-zA-Z0-9_-]+

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "details": { },
  • "message": "string"
}

Describe Product

Describe an product.

Authorizations:
path Parameters
id
required
string (Id) 22 characters [a-zA-Z0-9_-]+

Responses

Response samples

Content type
application/json
{
  • "name": "string",
  • "productId": "stringstringstringstri",
  • "status": "ACTIVE",
  • "teamId": "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

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "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_-]+
email
string <email>

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "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

Content type
application/json
{
  • "createdDate": "2019-08-24T14:15:22Z",
  • "customerEmail": "string",
  • "customerId": "stringstringstringstri",
  • "owners": [
    ],
  • "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

Content type
application/json
{
  • "owners": [
    ],
  • "status": "ACTIVE"
}

Response samples

Content type
application/json
{
  • "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

Content type
application/json
{
  • "items": [
    ],
  • "nextToken": "string"
}

List Tiers

List all tiers.

Authorizations:
query Parameters
productId
required
string (Id) 22 characters [a-zA-Z0-9_-]+

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

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

Content type
application/json
{
  • "cancellationBehaviors": [
    ],
  • "description": "string",
  • "name": "string",
  • "oneTimeSubscription": true,
  • "paymentMethod": "REQUIRED",
  • "productId": "stringstringstringstri",
  • "prorate": true,
  • "tierId": "stringstringstringstri"
}

Response samples

Content type
application/json
{
  • "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

Content type
application/json
{
  • "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

Content type
application/json
{
  • "cancellationBehaviors": [
    ],
  • "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

Content type
application/json
{
  • "description": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "details": { },
  • "message": "string"
}

User

List Plans

List all plans for the current application.

Authorizations:

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Describe Plan

Describe a plan.

Authorizations:
path Parameters
id
required
string (Id) 22 characters [a-zA-Z0-9_-]+

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "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

Content type
application/json
{
  • "items": [
    ],
  • "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 FORCE_NEW, a new subscription will be created even if the current subscription is on the same plan and could be reactivated instead.

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

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "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

Content type
application/json
{
  • "meteringKeyId": "stringstringstringstri",
  • "periodEndDate": "2019-08-24T14:15:22Z",
  • "periodStartDate": "2019-08-24T14:15:22Z",
  • "plan": {
    },
  • "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

Content type
application/json
{
  • "behavior": "CANCEL_AT_END"
}

Response samples

Content type
application/json
{
  • "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

Content type
application/json
{
  • "items": [
    ],
  • "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

Content type
application/json
{
  • "email": "user@example.com",
  • "expirationDate": "2019-08-24T14:15:22Z",
  • "invitationId": "stringstringstringstri",
  • "meteringResourceId": "stringstringstringstri",
  • "state": "CREATED"
}

Response samples

Content type
application/json
{
  • "invitationId": "string"
}

removeSubscriptionInvitation

Authorizations:
path Parameters
id
required
string (Id) 22 characters [a-zA-Z0-9_-]+
invitationId
required
string (Id) 22 characters [a-zA-Z0-9_-]+

Responses

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

Content type
application/json
{
  • "email": "user@example.com",
  • "expirationDate": "2019-08-24T14:15:22Z",
  • "invitationId": "stringstringstringstri",
  • "meteringResourceId": "stringstringstringstri",
  • "state": "CREATED"
}

acceptSubscriptionInvitation

Authorizations:
path Parameters
id
required
string (Id) 22 characters [a-zA-Z0-9_-]+
invitationId
required
string (Id) 22 characters [a-zA-Z0-9_-]+

Responses