AppDirect ProductContext API
The ProductContext API from AppDirect — 2 operation(s) for productcontext.
The ProductContext API from AppDirect — 2 operation(s) for productcontext.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/appdirect-productcontext-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
description: The Companies API allows developers to manage marketplace companies and their user memberships.
title: Companies AI Embed Product Context API
license:
name: Apache License, Version 2.0
url: http://www.apache.org/licenses/LICENSE-2.0
version: v296.0-SNAPSHOT
servers:
- url: https://marketplace.appdirect.com/api
- url: https://virtserver.swaggerhub.com
tags:
- name: ProductContext
x-displayName: Product Context
paths:
/billing/v1/userProductContext/{applicationId}:
get:
description: Retrieve a product context for the current user
tags:
- ProductContext
summary: Retrieve a product context for the current user
operationId: resource_Other_readUserProductContext_GET
parameters:
- description: id of the application
name: applicationId
in: path
required: true
schema:
type: number
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UserProductContextWS'
examples:
response:
value:
status: null
assigned: false
numAssignedUsers: null
maxUsers: null
partOfExistingBundle: false
freeTrialDaysLeft: null
freeTrialAllowed: true
pendingEventType: ''
editionId: null
subscription: null
owner: null
paymentPlan: null
purchaseRestrictions: []
application/xml:
schema:
$ref: '#/components/schemas/UserProductContextWS'
'404':
description: Application Not Found
x-codeSamples:
- lang: Shell + Curl
source: "curl --request GET \\\n --url https://marketplace.appdirect.com/api/billing/v1/userProductContext/%7BapplicationId%7D"
- lang: Node + Request
source: "const request = require('request');\n\nconst options = {\n method: 'GET',\n url: 'https://marketplace.appdirect.com/api/billing/v1/userProductContext/%7BapplicationId%7D'\n};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n"
- lang: Java + Okhttp
source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://marketplace.appdirect.com/api/billing/v1/userProductContext/%7BapplicationId%7D\")\n .get()\n .build();\n\nResponse response = client.newCall(request).execute();"
/billing/v1/userProductContext/{applicationId}/companies/{companyId}/users/{userId}:
get:
description: Retrieve a product context for a supplied user and a company they belong to
tags:
- ProductContext
summary: Retrieve a product context for a supplied user and a company they belong to
operationId: resource_Other_readUserCompanyProductContext_GET
parameters:
- description: id of the application
name: applicationId
in: path
required: true
schema:
type: number
- description: uuid of the desired users' company
name: companyId
in: path
required: true
schema:
type: string
- description: uuid of the desired user
name: userId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UserProductContextWS'
examples:
response:
value:
status: ACTIVE
assigned: true
numAssignedUsers: 1
maxUsers: 2
partOfExistingBundle: false
freeTrialDaysLeft: null
freeTrialAllowed: false
pendingEventType: ''
editionId: 22
subscription:
id: da43fcb9-988e-48d8-a132-fbc465e10aab
href: http://appdirect/api/billing/v1/subscriptions/da43fcb9-988e-48d8-a132-fbc465e10aab
owner:
id: 7e5ff840-1e1b-4b8f-b243-26ac12ebd427
href: http://appdirect/api/account/v1/users/7e5ff840-1e1b-4b8f-b243-26ac12ebd427
paymentPlan:
id: '41'
href: http://appdirect/api/marketplace/v1/products/22/editions/22/paymentPlans/41
purchaseRestrictions: []
application/xml:
schema:
$ref: '#/components/schemas/UserProductContextWS'
'404':
description: User, Company or Application Not Found
x-codeSamples:
- lang: Shell + Curl
source: "curl --request GET \\\n --url https://marketplace.appdirect.com/api/billing/v1/userProductContext/%7BapplicationId%7D/companies/%7BcompanyId%7D/users/%7BuserId%7D"
- lang: Node + Request
source: "const request = require('request');\n\nconst options = {\n method: 'GET',\n url: 'https://marketplace.appdirect.com/api/billing/v1/userProductContext/%7BapplicationId%7D/companies/%7BcompanyId%7D/users/%7BuserId%7D'\n};\n\nrequest(options, function (error, response, body) {\n if (error) throw new Error(error);\n\n console.log(body);\n});\n"
- lang: Java + Okhttp
source: "OkHttpClient client = new OkHttpClient();\n\nRequest request = new Request.Builder()\n .url(\"https://marketplace.appdirect.com/api/billing/v1/userProductContext/%7BapplicationId%7D/companies/%7BcompanyId%7D/users/%7BuserId%7D\")\n .get()\n .build();\n\nResponse response = client.newCall(request).execute();"
components:
schemas:
AppEditionWS:
description: Edition associated with a product
type: object
title: AppEdition
properties:
appId:
description: Application ID
type: number
appName:
description: Application name
type: string
editionId:
description: Edition ID
type: number
editionName:
description: Edition name
type: string
example:
appId: 12345
appName: '...'
editionId: 12345
editionName: '...'
PurchaseRestrictionWS:
description: Product that a user cannot buy due to restrictions of a currently/previously owned product or because other products are required
type: object
title: PurchaseRestriction
properties:
appId:
description: Non-purchasable application ID
type: number
appName:
description: Non-purchasable application name
type: string
browsedEditionId:
description: 'Browsed edition ID
If browsedEdition is null, then restrict the entire app.'
type: number
ownedEditionId:
description: Owned edition ID
type: number
ownedEditionName:
description: Owned edition name
type: string
requiredAppEdition:
description: Editions required to purchase the browsed edition
type: array
items:
$ref: '#/components/schemas/AppEditionWS'
restrictionType:
description: The type of restriction applied. Null if the type is unknown. For example, if the account is in transition.
type: string
upcomingSubscription:
description: Is upcoming subscription
type: boolean
example:
appId: 12345
appName: '...'
browsedEditionId: 12345
ownedEditionId: 12345
ownedEditionName: '...'
requiredAppEdition:
- appId: 12345
appName: '...'
editionId: 12345
editionName: '...'
- appId: 12345
appName: '...'
editionId: 12345
editionName: '...'
restrictionType: '...'
upcomingSubscription: true
LinkWS:
type:
- object
- 'null'
title: LinkWS
properties:
href:
type: string
id:
type: string
example:
href: '...'
id: '...'
UserProductContextWS:
type:
- object
- 'null'
title: UserProductContext
properties:
assigned:
description: True when the subscription has users assigned to it.
type: boolean
editionId:
description: The pricing plan ID of the subscription.
type:
- number
- 'null'
freeTrialAllowed:
description: True if a free trial is allowed for this edition or if the current subscription is in a free trial.
type: boolean
freeTrialDaysLeft:
description: 'The number of days remaining in the free trial for the application.
Not present if there is no free trial for the edition, if the free trial is over, or if the free trial has been
activated to a paid subscription.'
type:
- number
- 'null'
maxUsers:
description: Maximum number of users that can be assigned to the application. Not present when unlimited.
type:
- number
- 'null'
numAssignedUsers:
description: Number of users assigned to the subscription.
type:
- number
- 'null'
owner:
$ref: '#/components/schemas/LinkWS'
partOfExistingBundle:
description: True if this application was bought as part of a bundle.
type: boolean
paymentPlan:
$ref: '#/components/schemas/LinkWS'
pendingEventType:
description: 'If the subscription is blocked due to communication with a third party, this field represents the latest event type that
was blocked. Can be one of:
SUBSCRIPTION_ORDER,
SUBSCRIPTION_CHANGE,
SUBSCRIPTION_CANCEL,
SUBSCRIPTION_NOTICE,
USER_ASSIGNMENT,
USER_UNASSIGNMENT,
USER_UPDATED,
ADDON_ORDER,
ADDON_CHANGE,
ADDON_CANCEL,
ADDON_BIND,
ADDON_UNBIND'
type:
- string
- 'null'
purchaseRestriction:
description: Products that the user cannot buy due to restrictions of a currently/previously owned product or because other products are required.
type: array
items:
$ref: '#/components/schemas/PurchaseRestrictionWS'
status:
description: 'The subscription status for the product owned by the requested user. Can be one of:
INITIALIZED,
FAILED,
FREE_TRIAL,
FREE_TRIAL_EXPIRED,
ACTIVE,
SUSPENDED,
CANCELLED;'
type:
- string
- 'null'
subscription:
$ref: '#/components/schemas/LinkWS'
example:
assigned: true
editionId: 12345
freeTrialAllowed: true
freeTrialDaysLeft: 12345
maxUsers: 12345
numAssignedUsers: 12345
owner:
href: '...'
id: '...'
partOfExistingBundle: true
paymentPlan:
href: '...'
id: '...'
pendingEventType: '...'
purchaseRestriction:
- appId: 12345
appName: '...'
browsedEditionId: 12345
ownedEditionId: 12345
ownedEditionName: '...'
requiredAppEdition:
- appId: 12345
appName: '...'
editionId: 12345
editionName: '...'
- appId: 12345
appName: '...'
editionId: 12345
editionName: '...'
restrictionType: '...'
upcomingSubscription: true
- appId: 12345
appName: '...'
browsedEditionId: 12345
ownedEditionId: 12345
ownedEditionName: '...'
requiredAppEdition:
- appId: 12345
appName: '...'
editionId: 12345
editionName: '...'
- appId: 12345
appName: '...'
editionId: 12345
editionName: '...'
restrictionType: '...'
upcomingSubscription: true
status: '...'
subscription:
href: '...'
id: '...'