Account Portal API (1.45.0)

Download OpenAPI specification:Download

Getting Started

In order to get started with the Account Portal API you need to register or to be invited to one of the existing organization.

Please contact support@get.chat if you want to be approved as an official get.chat partner. You can ask your account manager, if you have one, to get a working set of credentials for you.

Basic concepts

User

The entity that logs in with a username and password to use Account Portal API with the received access token. It can be considered as a single person that has access to multiple organizations.

A user can be promoted to be a partner of the organization. This means that it's authorized to create customer organizations that will be linked to their partner organization and do actions on their behalf.

Organization

The entity that represents a company/organization with multiple users.

Package

The entity that represents a set of features that can be deployed for a given organization. At the moment the only package available to deploy on the Account Portal API is the get.chat inbox. In the near future, we expect to add several integrations like Hubspot.

Stack

The entity that groups different applications for a given organization that interact with each other. For example, if you want an organization to connect their get.chat inbox with Hubspot you will deploy first the inbox on a stack, and then you will deploy the Hubspot application on the same stack.

INBOX API: https://get.chat/docs

Application

The entity basically represents the deployed instance of the package with the provided configuration.

Application settings

When you want to deploy an application you must pass all required variables for the package type. This guideline will help you to understand what are those variables about and who can use them.

Parameter necessity

◆ - Required
◈ - Recommended
◇ - Optional

👤 Role

Role of the user who requests to create / update the application.

🔓️ Access

The section that shows if a parameter is allowed to be passed.

🚫 Restrictions

ℹ️ Each limitation could be personalized for the organization so If you would need to raise any, please reach out to support.

There might be a case when the parameter is allowed to be passed but with some limitations.

Inbox

◆ d360_api_key (str)

⚠️There is a temporary limitation that d360_api_key (360dialog API Key) for the Inbox package could be passed only by Partner+ roles. Soon it will be available again to both Owner and Maintainer.

👤 Role 🔓 Access 🚫 Restrictions
Maintainer
Owner
Partner

360dialog (WABA Proxy) API Key used instead of direct connection to WABA Stack

◇ admin_email (str)

👤 Role 🔓 Access 🚫 Restrictions
Maintainer
Owner
Partner

E-mail to which an activation URL will be sent so that new users can log in and set their password. If no email was provided we take one from the authenticated user.

◇ max_seats (int)

👤 Role 🔓 Access 🚫 Restrictions
Maintainer
Owner
Partner Range: [1, 50]

Maximum number of seats inbox quota. Limitation that does not allow you to create more users than this number.

◇ max_messages (int)

👤 Role 🔓 Access 🚫 Restrictions
Maintainer
Owner
Partner Range: [1.000.000, 10.000.000]

Quota of messages stored in the inbox. If number of messages exceeds this number, the oldest messages exceeding the limit are deleted.

◇ admin_user (str)

👤 Role 🔓 Access 🚫 Restrictions
Maintainer
Owner
Partner

When provided, an admin user will be created for the owner of this inbox. This is the first user that is needed in order to access and manage the inbox.

◇ configurator_user (str)

👤 Role 🔓 Access 🚫 Restrictions
Maintainer
Owner
Partner

Configurator username of the partner user for configuration purpose.

◇ configurator_webhook_url (str)

👤 Role 🔓 Access 🚫 Restrictions
Maintainer
Owner
Partner

Webhook that should be called with configurator credentials. This parameter is required when configurator username is provided.

◇ configurator_webhook_headers (JSONStr)

👤 Role 🔓 Access 🚫 Restrictions
Maintainer
Owner
Partner

Additional parameter that allows setting optional webhook headers. e.g. "{\"Authorization\": \"Basic 123\"}"

Deploy your first inbox

This document is targeted at partners that want to see a step-by-step tutorial for setting up an Inbox for a new organization. In this tutorial, you will use the Account Portal API from the shell (if you prefer another tool that allows you to send HTTP requests, you can of course use that).

Step 1: Logging in

In order to use all later commands, you will need an access token. You can use your account credentials to obtain one.

$ curl --request POST \
    --url https://account-api.get.chat/account/login \
    --header 'Content-Type: application/json' \
    --data '{
    "email": "user@example.com",
    "password": "string"
  }'

This is an example response:

{
  "id_token": "id_token",
  "access_token": "access_token",
  "token_type": "Bearer",
  "expires_in": 604800
}

Note that this token expires after the number of seconds found in the response. In this example, it is seven days, after which a new token would have to be obtained.

Step 2: Create a new organization for your customer

Remember to use the access token you gained in step 1 in the Authorization header.

By providing organization_id in the path you are connecting a newly created organization to the organization you are a partner in. IDs could be received by calling the list of organizations you have access to and finding the new one you've just created.

$ curl --request POST \
  --url https://account-api.get.chat/account/organizations/{organization_id}/customers \
  --header 'Authorization: Bearer {access_token}' \
  --header 'Content-Type: application/json'

Step 3: Create a stack

An inbox can have multiple packages attached to it, over which you have control; an inbox instance and its set of selected packages is what we call a stack. For a new organization, you need to create their stack like this (substitute access_token and organization_id with the appropriate values from step 1 and step 2):

In case, you are unable to save our ID anywhere to get information later we are supporting the optional partner_meta key-value pairs field where you can put any info you know how to deal with.

$ curl --request POST \
  --url https://account-api.get.chat/integration/organizations/{organization_id}/stacks \
  --header 'Authorization: Bearer {access_token}' \
  --header 'Content-Type: application/json' \
  --data '{
    "partner_meta": {}
  }'

You will get a response like this immediately, but it might take a while until it is actually ready:

{
  "id": 0,
  "user_status": "REQUESTED",
  "is_locked": true,
  "name": "string",
  "partner_meta": {},
  "organization_id": 0,
  "created_at": "2019-08-24T14:15:22Z",
  "modified_at": "2019-08-24T14:15:22Z"
}

You will need the id from this response in step 5, we will refer to it as stack_id. Also, it may take a while until the stack is set up internally. Regularly request this to check on the stack's current status; you can continue once the user_status is READY:

$ curl --request GET \
  --url https://account-api.get.chat/integration/stacks/{stack_id} \
  --header 'Authorization: Bearer {access_token}' \
  --header 'Content-Type: application/json'

Step 4: Explore packages

The services you can install on a stack are called packages; this name was already used in step 3. In order to choose what you can install on your organization's stack, you can obtain the package list like this:

$ curl --request GET \
  --url 'https://account-api.get.chat/integration/packages?paginated=true' \
  --header 'Content-Type: application/json'

[Attention] Deprecated paginated query parameter by default is false. Soon this endpoint will support only paginated results.

The response will look similar to this:

{
  "data": [
    {
      "id": 1,
      "created_at": "2021-12-21T11:32:21Z",
      "modified_at": "2021-12-21T11:32:21Z",
      "name": "Inbox",
      "type": "inbox"
    },
    {
      "id": 2,
      "created_at": "2022-02-02T09:31:12Z",
      "modified_at": "2022-02-02T09:31:12Z",
      "name": "HubSpot",
      "type": "_hubspot"
    }
  ],
  "pagination": {
    "total": 2,
    "limit": 20,
    "page": 1,
    "pages": 1,
    "count": 2
  },
  "filters": {
    "deleted_at[eq]": null,
    "paginated": true
  },
  "sort": [
    "+id"
  ]
}

Installing the Inbox package is mandatory, while the others will depend on your organization's needs. So let us go to the final step.

Step 5: Adding the Inbox package to the organization's stack

Installing a package on a stack is called an application. It is done like this and requires the access token from step 1, the stack_id from step 3, and the package_id from step 4.

In addition, you need d360_api_key (360dialog API key). All available Inbox parameters might be found here.

As in the situation with the stack (step 3) application also supports the optional partner_meta key-value pairs field.

$ curl --request POST \
  --url https://account-api.get.chat/integration/stacks/{stack_id}/applications \
  --header 'Authorization: Bearer {access_token}' \
  --header 'Content-Type: application/json' \
  --data '{
  "package_id": 0,
  "settings": {
    "d360_api_key": "example_api_key"
  },
  "partner_meta": {}
}'

Once again, creating an application will immediately return a response with a user_status key-value pair whose value will initially be REQUESTED. The response will also contain an id key-value pair whose value can be used to regularly check for when the Inbox is ready to be used (referred to in the next snippet as application_id). Use this to get an update on the setup status:

$ curl --request GET \
  --url https://account-api.get.chat/integration/applications/{application_id} \
  --header 'Authorization: Bearer {access_token}' \
  --header 'Content-Type: application/json'

After successfully deploying the inbox package, the owner email address (value passed to the admin_email) will receive an email with an activation link to start using the inbox. You are all set!

Where do I get the 360dialog API key from?

360dialog Integrated Onboarding allows you to offer a completely integrated signup experience to customers. After it is implemented, the Connect Button should trigger a pop-up which the customer will use to create their WhatsApp Business API account.

After the signup is completed, the customer will give you permission to manage their account, which will send their API key to you via API connection. This means that the customer won't need to copy and share their API key with you. Read more here

If you are still not a 360dialog partner you can join their partnership program here.

[DEPRECATED] Instantly deploy inbox application

Basically, to skip all those steps from Deploy your first inbox guide you may use a shortcut that allows you to do everything in a single endpoint call.

Firstly, you would need to log in into your partner account via Login endpoint.

Once you have done this, use access token to make an authenticated call to the Instant Create Application. Settings that must be passed on inbox creation you may find in the Deploy Application step.

Automatically configure your Inbox after creating

One of the parameters of the Instant Create Application endpoint is the settings param. This is a key-value configuration that will be passed to the app, at the time of install.

See Application settings / Inbox section for more information about all available settings.

In order to configure your Inbox automatically (create new users yourself, set up groups, set up tags, etc.), you'll need to create your own integration that is running on your servers.

With configurator_* settings you are able to create for yourself a configurator user access. A configurator user has admin permissions to related inbox, with a restriction to reading out messages. When acting as a configurator of one inbox, you are able to perform all administrator-level settings, before handing over the inbox to the end user. Your configurator user should be doing all that, by using Inbox Integration API.

As an example, configurator_* settings options allow you to implement the following automation flow:

  1. Create a new Inbox using Instant Create Application with configurator_* parameters inside settings.

    • Provide configurator_user to pick your unique username (Configurator user is invisible to your end users and does not consume seat limitation).
    • Provide configurator_webhook_url to be able to initialize your configurator user with credentials coming from particular inbox.
    • Provide configurator_webhook_headers to restrict your webhook receiver with security headers.
  2. After your inbox is created, configurator user is created inside it. You will receive configurator user credentials to your configurator_webhook_url with JSON payload: {"token": "<token>"}. This is the authorization token bound to the configurator user account, that should be used with Inbox Integration API header Authorization: Token <token>. See Accessing the API section in Inbox Integration API documentation.

  3. After your automation received the token, it is possible to access entire Inbox Integration API with this token, and configure your inbox freely.

  4. As an example, you can create an end user account with createNewUser endpoint.

  5. Successful response of createNewUser, returns activation_url as a parameter. You should use this URL to activate your end user's account.

    There are two options:

    • Pass this URL to your user somehow (e.g. via e-mail), so that the user can set their password themselves.
    • In case you don't want the end user to set the password, call the HTTP GET method on the activation_url link yourself automatically, and done - your user is activated! Further changes to the user's password can be done using changeUserPassword endpoint.

Embed the inbox in your application

The inbox can be embedded inside any web application using an iframe element.

<iframe src="https://your_stack_name.inbox.platform.get.chat/main/" title="My cool WhatsApp Inbox"></iframe>

inbox.png

When the inbox is embedded in a small area it's sometimes very useful to just render a specific element. When loading a conversation a URL, a URL parameter (chatonly=1) can be added to remove the chat list on the left.

<iframe src="https://your_stack_name.inbox.platform.get.chat/main/chat/34XXXXXXXXX?chatonly=1" title="My cool WhatsApp Inbox - Conversation #1"></iframe>

conversation.png

Customize and extend the Inbox UI

Open source

The inbox UI is open source. https://github.com/get-chat/web-app

Connect your customized UI with the Inbox API

Direct connection

Each inbox has its own domain so a direct connection can be established. Is it necessary to have the same domain for it to work?

Inbox routing

The request is sent to the inbox router and using a URL parameter it is forwarded to the relevant inbox.

Receive webhook events

This article will help you to set up the webhook URL where all events will be sent.

Partner is able to receive both his own events and events of the customers' organizations if webhook_url is set.

Events structure

The structure of the event request looks like the following:

POST {webhook_url}

{
  "event": "event.name",
  "data": {} 
}

List of events

There are a few events that we support and send to the partners and customers.

Stack events

{
  "event": "stack.{action}.{status}",
  "data": {
    "application_quota": 1,
    "organization_id": 1,
    "created_at": "2000-01-01T00:00:00Z",
    "id": 1,
    "is_deployed": true,
    "is_locked": false,
    "locked": null,
    "modified_at": "2000-01-01T00:00:00Z",
    "name": "64a54c6d72df",
    "platform_meta": {
      "cluster_id": 1,
      "id": 1,
      "name": "000000000000",
      "namespace": "stack-1-00000"
    },
    "status": "READY",
    "user_status": "READY"
  }
}

Deployment

  • stack.deployment.succeeded
  • stack.deployemnt.failed

Modification

  • stack.modification.succeeded
  • stack.modification.failed

Destruction

  • stack.destruction.succeeded
  • stack.destruction.failed

Application events

{
  "event": "application.{action}.{status}",
  "data": {
    "created_at": "2000-01-01T00:00:00Z",
    "domain": "000000000000.inbox.platform.get.chat",
    "id": 1,
    "is_deployed": true,
    "is_locked": false,
    "locked": null,
    "modified_at": "2000-01-01T00:00:00Z",
    "package_id": 1,
    "platform_meta": {
      "domain": "000000000000.inbox.platform.get.chat",
      "id": 1,
      "version": "2000.01.01"
    },
    "stack_id": 1,
    "status": "READY",
    "user_status": "READY",
    "uuid": "00000000-0000-4000-8000-000000000000"
  }
}

Deployment

  • application.deployment.succeeded
  • application.deployemnt.failed

Modification

  • application.modification.succeeded
  • application.modification.failed

Destruction

  • application.destruction.succeeded
  • application.destruction.failed

How to configure

Step 1: Logging in

In order to use all later commands, you will need an access token. You can use your account credentials to obtain one.

$ curl --request POST \
  --url https://account-api.get.chat/account/login \
  --header 'Content-Type: application/json' \
  --data '{
    "email": "user@example.com",
    "password": "string"
  }'

This is an example response:

{
  "id_token": "id_token",
  "access_token": "access_token",
  "token_type": "Bearer",
  "expires_in": 604800
}

Note that this token expires after the number of seconds found in the response. In this example, it is seven days, after which a new token would have to be obtained.

Step 2: Get your organization ID to update

To get your available Organization IDs you would need to call the organizations endpoint and extract id from the response.

$ curl --request GET \
  --url https://account-api.get.chat/account/organizations \
  --header 'Authorization: Bearer {access_token}'

This is an example response:

{
  "data": [
    {
      "id": 1,
      "created_at": "2000-01-01T00:00:00Z",
      "modified_at": "2000-01-01T00:00:00Z",
      "name": "string",
      "stack_quota": 10,
      "webhook_url": "http://example.com"
    }
  ],
  "pagination": {
    "total": 1,
    "limit": 20,
    "page": 1,
    "pages": 1,
    "count": 1
  },
  "filters": {},
  "sort": [
    "+id"
  ]
}

Step 3: Update your organization's webhook_url

Each partner may update his webhook_url to receive events. webhook_url MUST be a valid URL including the schema (path is optional), for example https://example.com/webhook.

$ curl --request PATCH \
  --url https://account-api.get.chat/account/organizations/{organization_id} \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer {access_token}' \
  --data '{
    "webhook_url": "https://example.com/webhook"
  }'

Deploy your custom Inbox WebApp

This article explains how to configure and deploy your own customized version of the Inbox WebApp.

Get the code

WebApp code is publicly available to clone from GitHub:

git clone https://gitlab.com/get.chat/web-app.git

Configuration options

Before you run it, you must create the config.json file in public folder if it doesn't exist. Please see the public/config.json.tmpl template file.

{
    "API_BASE_URL": "${APP_API_BASE_URL}",
    "APP_SENTRY_DSN": "${APP_SENTRY_DSN}",
    "APP_ENV_NAME": "${APP_ENV_NAME}",
    "APP_NOTIFICATIONS_LIMIT_PER_MINUTE": "${APP_NOTIFICATIONS_LIMIT_PER_MINUTE}",
    "APP_GOOGLE_MAPS_API_KEY": "${APP_GOOGLE_MAPS_API_KEY}"
}

API Base URL

Specify the Rest API URL as the value of API_BASE_URL inside the config.

API_BASE_URL should be set to https://your_inbox_domain/api/v1/ to use same address as get.chat Web App runs on.

Sentry

Sentry is a developer-first error tracking and performance monitoring platform that helps developers see what actually matters, solve quicker, and learn continuously about their applications.

Change Sentry DSN Key

If you forked this project and want to keep Sentry integration enabled, please make sure to use your own Sentry DSN key (https://docs.sentry.io/product/sentry-basics/dsn-explainer/). In order to do this, please go to public/config.json file and replace the value of APP_SENTRY_DSN variable.

Disable Sentry

In order to disable Sentry integration, you can either remove or comment out Sentry.init method inside src/index.js.

// ***IMPORTS***
// Init storage type
initStorageType();

// Load external config and render App
axios
    .get(`/config.json`)
    .then((response) => {
        const config = response.data;

        // It is needed for ChatMessageClass
        window.config = config;

         // Init Sentry
+		// if (!isLocalHost()) {
+		// 	Sentry.init({
+		// 		debug: true,
+		// 		dsn: config.APP_SENTRY_DSN,
+		// 		release: packageJson.version,
+		// 		integrations: [new Integrations.BrowserTracing()],
+		// 		tracesSampleRate: 0.01,
+		// 		beforeSend(event, hint) {
+               // 			// Check if it is an exception, and if so, show the report dialog
+		// 			if (event.exception) {
+		// 				Sentry.showReportDialog({ eventId: event.event_id });
+		// 			}
+		// 			return event;
+		// 		},
+		// 	});
+		// }
-		if (!isLocalHost()) {
-			Sentry.init({
-				debug: true,
-				dsn: config.APP_SENTRY_DSN,
-				release: packageJson.version,
-				integrations: [new Integrations.BrowserTracing()],
-				tracesSampleRate: 0.01,
-				beforeSend(event, hint) {
-					// Check if it is an exception, and if so, show the report dialog
-					if (event.exception) {
-						Sentry.showReportDialog({ eventId: event.event_id });
-					}
-					return event;
-				},
-			});
-		}

Google Maps

In order to display Google Maps Embed API in location messages, you need to provide a Google Maps API key in public/config.json for APP_GOOGLE_MAPS_API_KEY.

Environment variables

REACT_APP_TITLE: Application (page) title.

REACT_APP_MANIFEST_URL: manifest.json URL. This file provides information about the application.

REACT_APP_FAVICON_URL: Page favicon URL.

REACT_APP_LOGO_512_URL: 512x512 PNG icon used for mobile devices.

REACT_APP_LOGO_192_URL: 192x192 PNG icon used for mobile devices.

REACT_APP_LOGO_URL: Application logo URL.

REACT_APP_LOGO_BLACK_URL: Black and white version of application logo (used inside the loading screen).

Try it out

To run it locally, just execute the following:

npm install
npm start

Deploy your WebApp with Docker

Dockerfile

First you need to create a Dockerfile on the root directory of the repository.

FROM nginx:stable-alpine
COPY build /usr/local/nginx/html

RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d

EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Nginx Configuration

You will need the following configuration for nginx.

server {
         listen 80  default_server;
         listen [::]:80;
         root /usr/local/nginx/html/;
         index index.html index.htm;
}

Build

You have to build the web-app with:

npm install
npm run build

It will create a build folder containing the webpage. And then build the Docker image with:

docker build -t web-app .

Run

To run, execute:

docker run -it -p 8080:80 web-app

The webpage will be available on http://localhost:8080

Example

After changing the logo, this is the new look of the loading page:

loading-page.png

Setup HubSpot integration

A partner that wants to use its HubSpot app with the HubSpot plugin has to set up the following:

  1. Inside the HubSpot application settings, go to Basic info >> Auth:
    basic-info-auth.png

    1. Set the following Scopes from CRM: crm-scopes.png

    2. Enable the oauth option from Standard: oauth-option.png

  2. Go to CRM cards >> Create CRM card: create-crm-card.png

  3. Set the Data fetch URL option to account-api.get.chat/proxy/packages/e62ba7adbd294ef18502d71c6bf456d2?path=/api/v1/plugins/public/webhook/&format=json&type=hubspot&webhook_type=readonly and set Target record types as follows: target-record-types

  4. Go to Card properties and add the following property: card-properties.png

  5. Out of CRM cards, you go to Timeline events create-timeline-events.png

    You need 2 of them:

    • Incoming Message Event
    • Outgoing Message Event
    1. Incoming Message Event incoming-message-event.png

    2. Outgoing Message Event outgoing-message-event.png

    3. Both of them need the following custom tokens: message-events-custom-token.png

  6. Finally, out of Timeline events go to Webhooks and create the following subscription: webhook-subscriptions.png

Deploy HubSpot plugin

A partner that is looking to deploy a HubSpot plugin for a customer should:

  • Use this endpoint to start the integration with HubSpot: https://{inbox_domain}/activate_plugin/HubSpotIntegration
  • Create a Stack

Use this endpoint to create a Stack for the organization you just created.

Use this endpoint to search for the unique ID for the get.chat inbox package.

Use this endpoint to deploy the inbox package in the stack that you just created. Remember that you will be billed for every inbox that is deployed on the customer accounts that are linked to your partner account.

After successfully deploying the inbox package, the owner email address will receive an email with an activation link to start using the inbox. You are all set!

Where do I get the 360dialog API key from?

You can either ask the end user as they can retrieve it manually from their 360dialog HUB account, or you can use the 360dialog's Partner Connect button. The second option is much preferred for customers as they don't need to do anything and the conversion is way higher, but it's only available for React applications for now.

If you are still not a 360dialog partner you can join their partnership program here.

account.access

Get

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

ID of the Organization

user_id
required
integer
Default: null

ID of the User

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "type": "DIRECT",
  • "user_id": 0,
  • "organization_id": 0,
  • "role_id": 0,
  • "user": {
    },
  • "role": {
    }
}

Grant

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

ID of the Organization

user_id
required
integer
Default: null

ID of the User

Request Body schema: application/json
role_id
required
integer (Role Id)

ID of the role to grant an access with

Responses

Request samples

Content type
application/json
{
  • "role_id": 0
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "type": "DIRECT",
  • "user_id": 0,
  • "organization_id": 0,
  • "role_id": 0,
  • "user": {
    },
  • "role": {
    }
}

Revoke

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

ID of the Organization

user_id
required
integer
Default: null

ID of the User

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "type": "DIRECT",
  • "user_id": 0,
  • "organization_id": 0,
  • "role_id": 0,
  • "user": {
    },
  • "role": {
    }
}

Invite

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

ID of the Organization

Request Body schema: application/json
email
required
string <email> (Email)

Email of the user whom to invite

role_id
integer (Role Id)

ID of the role to invite a user with, least privileged by default

send_invitation_email
boolean (Send Invitation Email)
Default: true

Sends invitation email if case flag is set as true

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "role_id": 0,
  • "send_invitation_email": true
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "type": "DIRECT",
  • "user_id": 0,
  • "organization_id": 0,
  • "role_id": 0,
  • "user": {
    },
  • "role": {
    }
}

List

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

ID of the Organization

query Parameters
limit
Default: 20

How many items to show per page, unlimited search limit=null

page
integer
Default: 1

Number of the page to request data from

sort
Default: ["+id"]

Sorting order by available fields

deleted_at[eq]
Default: null

This field works in reverse mode which means passing null value will clear default null and show all records.To show only deleted records you would need to pass deleted_at[eq]=null&deleted_at[ne]=null

deleted_at[ne]
Default: null

To show only deleted records you would need to pass deleted_at[eq]=null&deleted_at[ne]=null

user_id[eq]
integer
Default: null
user_email[eq]
string
Default: null
organization_id[eq]
integer
Default: null
organization_id[ne]
integer
Default: null
organization_partner_id[eq]
integer
Default: null
role_id[eq]
integer
Default: null
role_name[eq]
Default: null
type[eq]
Default: null
Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
Example
{
  • "data": [
    ],
  • "pagination": {
    },
  • "filters": { },
  • "sort": [
    ]
}

account.auth

Change Password

Changes the password of the user that requested the password reset with the one-time token

Request Body schema: application/json
token
required
string (Token)

One-time token that was sent to the email

password
required
string <password> (Password) <= 4096 characters

A new password that will be changed for the user

Responses

Request samples

Content type
application/json
{
  • "token": "string",
  • "password": "pa$$word"
}

Response samples

Content type
application/json
{
  • "id_token": "string",
  • "access_token": "string",
  • "token_type": "Bearer",
  • "expires_in": 0,
  • "token": "string",
  • "type": "string"
}

Get Activate

A way of verifying user email that redirects him to the frontend page

query Parameters
token
required
string
Default: null

One-time token that was sent to the email

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

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

Post Activate

Default way of verifying user email address

Request Body schema: application/json
token
required
string (Token)

One-time token that was sent to the email

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "id_token": "string",
  • "access_token": "string",
  • "token_type": "Bearer",
  • "expires_in": 0,
  • "token": "string",
  • "type": "string"
}

Login

Login a user by the given email and password and returns an access token (for the header Authorization: Bearer {access_token})

Request Body schema: application/json
email
required
string <email> (Email)

Email of the user to authenticate

password
required
string <password> (Password) <= 4096 characters

Password of the user to authenticate

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "password": "pa$$word"
}

Response samples

Content type
application/json
{
  • "id_token": "string",
  • "access_token": "string",
  • "token_type": "Bearer",
  • "expires_in": 0,
  • "token": "string",
  • "type": "string"
}

Register

Register a new user on the platform only if email does not exist yet

Request Body schema: application/json
email
required
string <email> (Email)

Email of the user to authenticate

password
required
string <password> (Password) <= 4096 characters

Password of the user to authenticate

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "password": "pa$$word"
}

Response samples

Content type
application/json
{
  • "id_token": "string",
  • "access_token": "string",
  • "token_type": "Bearer",
  • "expires_in": 0,
  • "token": "string",
  • "type": "string"
}

Reset Password

Sends a message to the requested email with one-time token to reset the password

Request Body schema: application/json
email
required
string <email> (Email)

Email of the user to send an email to reset the password

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "email": "user@example.com",
  • "next_reset_password_at": "2019-08-24T14:15:22Z"
}

Reset Password Cooldown

Shows what is the cooldown for resetting password for given email

Request Body schema: application/json
email
required
string <email> (Email)

Email of the user to send an email to reset the password

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "email": "user@example.com",
  • "next_reset_password_at": "2019-08-24T14:15:22Z"
}

account.oauth2.clients

Create

Creates a new OAuth2 Client for the client of logged-in user. [NOTE] If there are already an OAuth2 Client for logged-in user's client it returns existing OAuth2 Client.

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

Organization ID

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "id": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "secret": "string",
  • "redirect_uris": [],
  • "organization_id": 0
}

List

Gets all paginated client's OAuth2 Clients. [NOTE] For the initial implementation there will be a list with only one element inside.

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

Organization ID

query Parameters
limit
Default: 20

How many items to show per page, unlimited search limit=null

page
integer
Default: 1

Number of the page to request data from

sort
Default: ["+id"]

Sorting order by available fields

deleted_at[eq]
Default: null

This field works in reverse mode which means passing null value will clear default null and show all records.To show only deleted records you would need to pass deleted_at[eq]=null&deleted_at[ne]=null

deleted_at[ne]
Default: null

To show only deleted records you would need to pass deleted_at[eq]=null&deleted_at[ne]=null

organization_id[eq]
integer
Default: null
organization_id[ne]
integer
Default: null
organization_id[in]
Default: null
organization_id[nin]
Default: null
Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    },
  • "filters": { },
  • "sort": [
    ]
}

Get

Gets OAuth2 Client by ID (OAuth2 Client ID).

Authorizations:
bearer_auth
path Parameters
oauth2_client_id
required
string
Default: null

OAuth2 Client ID

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "id": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "secret": "string",
  • "redirect_uris": [],
  • "organization_id": 0
}

Update

Updates given OAuth2 Client's fields.

Authorizations:
bearer_auth
path Parameters
oauth2_client_id
required
string
Default: null

OAuth2 Client ID

Request Body schema: application/json
redirect_uris
Array of strings <uri> (Redirect Uris) [ items <uri > [ 1 .. 65536 ] characters ]

A list of valid redirect URIs to replace

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "id": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "secret": "string",
  • "redirect_uris": [],
  • "organization_id": 0
}

Regenerate Secret

Re-Generates OAuth2 Client's secret in case it was compromised.

Authorizations:
bearer_auth
path Parameters
oauth2_client_id
required
string
Default: null

OAuth2 Client ID

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "id": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "secret": "string",
  • "redirect_uris": [],
  • "organization_id": 0
}

account.oauth2.flows

Authorization

Requirements by RFC 6749 (OAuth 2.0) and those by OpenID Connect are different. Therefore, the code flow branches according to whether the request is an OpenID Connect request or not. This is judged by whether the scope request parameter contains openid as a value.

[NOTE] Initial implementation will require redirect_uri and scope as parameters, openid is required scope in scope parameter

query Parameters
scope
required
Array of arrays
Default: null

A space separated string of scopes

state
string
Default: null

State parameter that will return as is

redirect_uri
required
string <uri>
Default: null

Redirect URI to redirect the response to

response_type
required
string
Default: null

Describes what operation should be performed

client_id
required
string
Default: null

OAuth2 Client ID

cookie Parameters
Authorization
string
Default: null

Cookie that has a structure like: Bearer {access_token}

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
Example
{
  • "code": "string",
  • "state": "string"
}

Token

Creates an OAuth2 access token from the authorization code

Request Body schema: application/json
grant_type
required
string (Grant Type)
Value: "authorization_code"
code
required
string (Code)
client_id
required
string (Client Id)
client_secret
required
string (Client Secret)
redirect_uri
required
string <uri> (Redirect Uri) [ 1 .. 65536 ] characters
state
string (State)

Responses

Request samples

Content type
application/json
{
  • "grant_type": "authorization_code",
  • "code": "string",
  • "client_id": "string",
  • "client_secret": "string",
  • "redirect_uri": "http://example.com",
  • "state": "string"
}

Response samples

Content type
application/json
{
  • "id_token": "string",
  • "access_token": "string",
  • "token_type": "Bearer",
  • "expires_in": 0
}

account.organizations

Create

Authorizations:
bearer_auth
Request Body schema: application/json
name
string (Name)

A name of the organization

webhook_url
string <uri> (Webhook Url) [ 1 .. 65536 ] characters

A webhook URL where all callbacks will be sent

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "name": "string",
  • "stack_quota": 0,
  • "webhook_url": "http://example.com"
}

List

A feature to list organization you have access to

Authorizations:
bearer_auth
query Parameters
limit
Default: 20

How many items to show per page, unlimited search limit=null

page
integer
Default: 1

Number of the page to request data from

sort
Default: ["+id"]

Sorting order by available fields

deleted_at[eq]
Default: null

This field works in reverse mode which means passing null value will clear default null and show all records.To show only deleted records you would need to pass deleted_at[eq]=null&deleted_at[ne]=null

deleted_at[ne]
Default: null

To show only deleted records you would need to pass deleted_at[eq]=null&deleted_at[ne]=null

id[eq]
integer
Default: null
id[ne]
integer
Default: null
id[in]
Default: null
id[nin]
Default: null
users_ids[eq]
integer
Default: null
accesses_types[eq]
Default: null
partner_id[eq]
Default: null
partner_id[ne]
Default: null
partner_id[in]
Default: null
partner_id[nin]
Default: null
owner_id[eq]
integer
Default: null
created_at[lt]
string <date-time>
Default: null
created_at[lte]
string <date-time>
Default: null
created_at[gt]
string <date-time>
Default: null
created_at[gte]
string <date-time>
Default: null
Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    },
  • "filters": { },
  • "sort": [
    ]
}

Create Customer

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

Organization ID

Request Body schema: application/json
name
string (Name)

A name of the organization

webhook_url
string <uri> (Webhook Url) [ 1 .. 65536 ] characters

A webhook URL where all callbacks will be sent

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "name": "string",
  • "stack_quota": 0,
  • "webhook_url": "http://example.com"
}

List Customers

A feature to list all organization's customers

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

Organization ID

query Parameters
limit
Default: 20

How many items to show per page, unlimited search limit=null

page
integer
Default: 1

Number of the page to request data from

sort
Default: ["+id"]

Sorting order by available fields

deleted_at[eq]
Default: null

This field works in reverse mode which means passing null value will clear default null and show all records.To show only deleted records you would need to pass deleted_at[eq]=null&deleted_at[ne]=null

deleted_at[ne]
Default: null

To show only deleted records you would need to pass deleted_at[eq]=null&deleted_at[ne]=null

id[eq]
integer
Default: null
id[ne]
integer
Default: null
id[in]
Default: null
id[nin]
Default: null
users_ids[eq]
integer
Default: null
accesses_types[eq]
Default: null
partner_id[eq]
Default: null
partner_id[ne]
Default: null
partner_id[in]
Default: null
partner_id[nin]
Default: null
owner_id[eq]
integer
Default: null
created_at[lt]
string <date-time>
Default: null
created_at[lte]
string <date-time>
Default: null
created_at[gt]
string <date-time>
Default: null
created_at[gte]
string <date-time>
Default: null
Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    },
  • "filters": { },
  • "sort": [
    ]
}

Get

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

Organization ID

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "name": "string",
  • "stack_quota": 0,
  • "webhook_url": "http://example.com"
}

Update

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

Organization ID

Request Body schema: application/json
name
string (Name)

A name of the organization

webhook_url
string <uri> (Webhook Url) [ 1 .. 65536 ] characters

A webhook URL where all callbacks will be sent

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "name": "string",
  • "stack_quota": 0,
  • "webhook_url": "http://example.com"
}

account.permission

List Names

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

ID of the Organization

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
[
  • "string"
]

account.role

List

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

ID of the Organization

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "pagination": {
    },
  • "filters": { },
  • "sort": [
    ]
}

account.user

Authenticate

Used generate authentication token for the user to authenticate in the application. You must be partner, have access to the requested user and application and be sure that user has access to the application too.

As the result, ID Token (valid for 10 minutes) is generated as a fact of user's authentication.

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

The ID of the organization where user is located

user_id
required
integer
Default: null

The ID of the user to authenticate

Request Body schema: application/json
application_id
required
integer (Application Id) > 0

The ID of the application to authenticate the user into

Responses

Request samples

Content type
application/json
{
  • "application_id": 0
}

Response samples

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

Profile

Gets the user profile information

Authorizations:
bearer_auth
Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "profile": {
    }
}

routing.management

Create

Creates a package routing for the application based on provided params

Authorizations:
bearer_auth
path Parameters
application_id
required
integer
Default: null

ID of the Application

Request Body schema: application/json
required
object (Params)

Responses

Request samples

Content type
application/json
{
  • "params": {
    }
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "package_uuid": "ea5e7582-dffd-4b47-8123-716229513c2e",
  • "package_type": "string",
  • "url": "string",
  • "source_params": {
    },
  • "params": "string"
}

Delete

Deletes a package routing to the application based on provided params

Authorizations:
bearer_auth
path Parameters
application_id
required
integer
Default: null

ID of the Application

Request Body schema: application/json
required
object (Params)

Responses

Request samples

Content type
application/json
{
  • "params": {
    }
}

Response samples

Content type
application/json
null

Update

Updates a package routing for the application based on provided params

Authorizations:
bearer_auth
path Parameters
application_id
required
integer
Default: null

ID of the Application

Request Body schema: application/json
required
object (Params)

Responses

Request samples

Content type
application/json
{
  • "params": {
    }
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "package_uuid": "ea5e7582-dffd-4b47-8123-716229513c2e",
  • "package_type": "string",
  • "url": "string",
  • "source_params": {
    },
  • "params": "string"
}

integration.application

Create

Creates an application of the package on the stack.

⚠️There is a temporary limitation that d360_api_key (360dialog API Key) for the Inbox package could be passed only by Partner+ roles. Soon it will be available again to both Owner and Maintainer.

Authorizations:
bearer_auth
path Parameters
stack_id
required
integer
Default: null

ID of the Stack

Request Body schema: application/json
package_id
required
integer (Package Id) > 0

ID of the Package

settings
object (Settings)

Key-value pairs that will be passed to install the application

partner_meta
object (Partner Meta)

Custom partner meta information that partners know how to deal with.

Responses

Request samples

Content type
application/json
{
  • "package_id": 0,
  • "settings": { },
  • "partner_meta": { }
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "user_status": "REQUESTED",
  • "domain": "string",
  • "is_deployed": true,
  • "is_locked": true,
  • "partner_meta": { },
  • "error": { },
  • "package_id": 0,
  • "stack_id": 0
}

List

Show a list of selected applications in the stack :param request: :return:

Authorizations:
bearer_auth
path Parameters
stack_id
required
integer
Default: null

ID of the Stack

query Parameters
limit
Default: 20

How many items to show per page, unlimited search limit=null

page
integer
Default: 1

Number of the page to request data from

sort
Default: ["+id"]

Sorting order by available fields

deleted_at[eq]
Default: null

This field works in reverse mode which means passing null value will clear default null and show all records.To show only deleted records you would need to pass deleted_at[eq]=null&deleted_at[ne]=null

deleted_at[ne]
Default: null

To show only deleted records you would need to pass deleted_at[eq]=null&deleted_at[ne]=null

id[eq]
integer
Default: null
id[ne]
integer
Default: null
id[in]
Default: null
id[nin]
Default: null
user_status[eq]
string
Default: null
user_status[ne]
string
Default: null
user_status[in]
Default: null
user_status[nin]
Default: null
is_locked[eq]
boolean
Default: null
is_locked[ne]
boolean
Default: null
is_deployed[eq]
boolean
Default: null
is_deployed[ne]
boolean
Default: null
domain[eq]
string
Default: null
domain[ss]
string
Default: null
stack_id[eq]
integer
Default: null
stack_id[ne]
integer
Default: null
stack_id[in]
Default: null
stack_id[nin]
Default: null
created_at[lte]
string <date-time>
Default: null
created_at[lt]
string <date-time>
Default: null
created_at[gte]
string <date-time>
Default: null
created_at[gt]
string <date-time>
Default: null
package_id[eq]
integer
Default: null
package_type[eq]
string
Default: null
package_type[ne]
string
Default: null
package_type[in]
Default: null
package_type[nin]
Default: null
organization_id[eq]
integer
Default: null
organization_id[ne]
integer
Default: null
organization_id[in]
Default: null
organization_id[nin]
Default: null
partner_id[eq]
Default: null
partner_id[ne]
Default: null
partner_id[in]
Default: null
partner_id[nin]
Default: null
paginated
boolean
Deprecated
Default: false

Deprecated field which will turn to be always true in the near future. [Important] Filtering and Sorting work only with paginated=true

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
Example
[ ]

Delete

Deletes applications by the ID

Authorizations:
bearer_auth
path Parameters
application_id
required
integer
Default: null

ID of the Application

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "user_status": "REQUESTED",
  • "domain": "string",
  • "is_deployed": true,
  • "is_locked": true,
  • "partner_meta": { },
  • "error": { },
  • "package_id": 0,
  • "stack_id": 0,
  • "package": {
    }
}

Get

Gets application by the ID

Authorizations:
bearer_auth
path Parameters
application_id
required
integer
Default: null

ID of the Application

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "user_status": "REQUESTED",
  • "domain": "string",
  • "is_deployed": true,
  • "is_locked": true,
  • "partner_meta": { },
  • "error": { },
  • "package_id": 0,
  • "stack_id": 0,
  • "package": {
    }
}

Update

Updates the existing application.

⚠️There is a temporary limitation that d360_api_key (360dialog API Key) could be passed only by Partner+ roles. Soon it will be available again to both Owner and Maintainer.

Authorizations:
bearer_auth
path Parameters
application_id
required
integer
Default: null

ID of the Application

Request Body schema: application/json
settings
object (Settings)

Key-value pairs that will be passed to update the application

partner_meta
object (Partner Meta)

Custom partner meta information that partners know how to deal with.

Responses

Request samples

Content type
application/json
{
  • "settings": { },
  • "partner_meta": { }
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "user_status": "REQUESTED",
  • "domain": "string",
  • "is_deployed": true,
  • "is_locked": true,
  • "partner_meta": { },
  • "error": { },
  • "package_id": 0,
  • "stack_id": 0,
  • "package": {
    }
}

Instant Create Deprecated

This is a deprecated endpoint made in a fast manner and will be removed in the future. Please, use the following endpoints instead to:

  1. Create a customer
  2. Create a stack
  3. Create an application

Allows you to deploy any application skipping organization creation, user invitation and stack creation.

  1. Finds for existing customer organization with the user 1.1 [Optional] Creates a new customer organization that is connected to the partner 1.2 [Optional] Invites a user by the given email with the OWNER role (invitation email is not sent) to organization from step 1.
  2. Creates a new stack for the organization from step 1.
  3. Creates an application in the stack from step 2.
Authorizations:
bearer_auth
Request Body schema: application/json
email
required
string <email> (Email)

Email of the user whom to invite

package_type
required
string (Package Type)

Package type of the application to install

settings
object (Settings)

Key-value pairs that will be passed to install the application

partner_meta
object (Partner Meta)

Custom partner meta information that partners know how to deal with.

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "package_type": "string",
  • "settings": { },
  • "partner_meta": { }
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "user_status": "REQUESTED",
  • "domain": "string",
  • "is_deployed": true,
  • "is_locked": true,
  • "partner_meta": { },
  • "error": { },
  • "package_id": 0,
  • "stack_id": 0
}

integration.package

Get Package

Gets a package by the ID

path Parameters
package_id
required
integer
Default: null

ID of the Package

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "name": "string",
  • "type": "string",
  • "settings_schema": { }
}

Get Package By Type

Gets a package by the package type

path Parameters
package_type
required
string
Default: null

Type of the Package

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "name": "string",
  • "type": "string",
  • "settings_schema": { }
}

Get Packages

Shows a list of selected packages

query Parameters
limit
Default: 20

How many items to show per page, unlimited search limit=null

page
integer
Default: 1

Number of the page to request data from

sort
Default: ["+id"]

Sorting order by available fields

deleted_at[eq]
Default: null

This field works in reverse mode which means passing null value will clear default null and show all records.To show only deleted records you would need to pass deleted_at[eq]=null&deleted_at[ne]=null

deleted_at[ne]
Default: null

To show only deleted records you would need to pass deleted_at[eq]=null&deleted_at[ne]=null

id[eq]
integer
Default: null
name[eq]
string
Default: null
name[ne]
string
Default: null
name[in]
Default: null
name[nin]
Default: null
type[eq]
string
Default: null
type[ne]
string
Default: null
type[in]
Default: null
type[nin]
Default: null
paginated
boolean
Deprecated
Default: false

Deprecated field which will turn to be always true in the near future. [Important] Filtering and Sorting work only with paginated=true

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
Example
[ ]

integration.stack

Create

Creates a stack for the given organization. Important to note that path without organization_id is deprecated. It uses the organization_id of authenticated user.

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

Organization ID

Request Body schema: application/json
name
string (Name)

Custom stack name

subdomain
string (Subdomain) ^[a-z0-9-]+$

Subdomain of the stack to change. [Attention] changing it will re-deploy all applications installed on the stack and change their domains.

partner_meta
object (Partner Meta)

Custom partner meta information that partners know how to deal with.

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "name": "string",
  • "subdomain": "string",
  • "application_quota": 0,
  • "user_status": "REQUESTED",
  • "is_deployed": true,
  • "is_locked": true,
  • "partner_meta": { },
  • "error": { },
  • "organization_id": 0
}

List

Shows a list of selected stacks

Authorizations:
bearer_auth
path Parameters
organization_id
required
integer
Default: null

Organization ID

query Parameters
limit
Default: 20

How many items to show per page, unlimited search limit=null

page
integer
Default: 1

Number of the page to request data from

sort
Default: ["+id"]

Sorting order by available fields

deleted_at[eq]
Default: null

This field works in reverse mode which means passing null value will clear default null and show all records.To show only deleted records you would need to pass deleted_at[eq]=null&deleted_at[ne]=null

deleted_at[ne]
Default: null

To show only deleted records you would need to pass deleted_at[eq]=null&deleted_at[ne]=null

name[eq]
Default: null
name[ss]
string
Default: null
subdomain[eq]
Default: null
subdomain[ss]
string
Default: null
is_deployed[eq]
boolean
Default: null
is_deployed[ne]
boolean
Default: null
organization_id[eq]
integer
Default: null
organization_id[ne]
integer
Default: null
organization_id[in]
Default: null
organization_id[nin]
Default: null
paginated
boolean
Deprecated
Default: false

Deprecated field which will turn to be always true in the near future. [Important] Filtering and Sorting work only with paginated=true

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
Example
[ ]

Delete

Deletes a stack by the ID

Authorizations:
bearer_auth
path Parameters
stack_id
required
integer
Default: null

ID of the Stack

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "name": "string",
  • "subdomain": "string",
  • "application_quota": 0,
  • "user_status": "REQUESTED",
  • "is_deployed": true,
  • "is_locked": true,
  • "partner_meta": { },
  • "error": { },
  • "organization_id": 0
}

Get

Gets a stack by the ID

Authorizations:
bearer_auth
path Parameters
stack_id
required
integer
Default: null

ID of the Stack

Request Body schema: application/json
object (Body)

Body data model is used to load and validate variables passed throughout the body.

By default, forbid to load If any unexpected body variables received.

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "name": "string",
  • "subdomain": "string",
  • "application_quota": 0,
  • "user_status": "REQUESTED",
  • "is_deployed": true,
  • "is_locked": true,
  • "partner_meta": { },
  • "error": { },
  • "organization_id": 0
}

Update

Updates a stack by the ID

Authorizations:
bearer_auth
path Parameters
stack_id
required
integer
Default: null

ID of the Stack

Request Body schema: application/json
name
string (Name)

Custom stack name

subdomain
string (Subdomain) ^[a-z0-9-]+$

Subdomain of the stack to change. [Attention] changing it will re-deploy all applications installed on the stack and change their domains.

partner_meta
object (Partner Meta)

Custom partner meta information that partners know how to deal with.

Responses

Request samples

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

Response samples

Content type
application/json
{
  • "id": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "modified_at": "2019-08-24T14:15:22Z",
  • "name": "string",
  • "subdomain": "string",
  • "application_quota": 0,
  • "user_status": "REQUESTED",
  • "is_deployed": true,
  • "is_locked": true,
  • "partner_meta": { },
  • "error": { },
  • "organization_id": 0
}