Connector Staged

ConnectorStaged represents the draft version of a Connector.

ConnectorStaged references a Repository, which links the connector to the codebase representing the integration.

Once you have finished developing/updating a ConnectorStaged, use the Publish update action to create a Connector ready for production. Upon being published, the read-only production version of the Connector will be created/updated.

Representations

ConnectorStaged

id
String

Unique identifier of the Connector.

version
Int

Current version of the Connector.

key
String

User-defined unique identifier of the Connector.

MinLength: 2MaxLength: 256Pattern: ^[A-Za-z0-9_-]+$
name
String

Name of the Connector.

description
String

Description of the Connector.

integrationTypes
Array of IntegrationType

Type of integration provided by the Connector. Can be used to filter search and query results.

creator

Owner of the Connector.

repository

GitHub repository details of the Connector.

configurations

Configurations needed by Connectors for hosting. Loaded as environment variables in the workload.

private
Boolean

If true, only Composable Commerce Projects specified in privateProjects can access the Connector.

privateProjects
Array of ProjectIdentifier

If private is true, only these Composable Commerce Projects can access the Connector.

supportedRegions
Array of Region

If not empty, Connectors can only be deployed in these Regions. If empty, Connectors can be deployed in any supported Region.

certificationInfo

Comments made during the certification process.

status

Current status of the Connector.

Default: Draft
publishingReport

The publishing request report of the Connector.

alreadyListed
Boolean

If true, the Connector is published and ready for use.

hasChanges
Boolean

If true, the ConnectorStaged data is different from the production Connector data.

isPreviewable

The previewable status of the ConnectorStaged.

Default: none
previewableReport

The previewable request report.

documentationUrl
String

URL to the documentation of the Connector.

ConnectorStagedDraft

key
String

User-defined unique identifier of the Connector.

MinLength: 2MaxLength: 256Pattern: ^[A-Za-z0-9_-]+$
name
String

Name of the Connector.

description
String

Description of the Connector.

integrationTypes
Array of IntegrationType

Type of integration provided by the Connector. Can be used to filter search and query results.

creator

Owner of the Connector.

repository

GitHub repository details of the Connector.

supportedRegions
Array of Region

If provided, Connectors can only be deployed in these Regions. If not provided, Connectors can be deployed in any supported Region.

privateProjects
Array of ProjectIdentifier

Composable Commerce Projects that can access the Connector. If empty, only the creator can access this Connector.

documentationUrl
String

URL to the documentation of the Connector.

ConnectorStagedPagedQueryResponse

PagedQueryResult with results containing an array of ConnectorStaged.

limit
Int

The maximum number of the ConnectorStaged returned.

offset
Int

The offset of the ConnectorStaged returned.

count
Int

The number of ConnectorStaged returned.

total
Int

The total number of ConnectorStaged matching the query.

results
Array of ConnectorStaged

ConnectorStaged matching the query.

Creator

Details of the individual or organization who developed the Connector.

name
String

Name of the person who owns the Connector.

title
String

Title of the person who owns the Connector.

email
String

Contact email address of the creator.

company
String

Name of the company that owns the Connector.

logoUrl
String

URL to a logo image used to represent the creator.

noOfContributors
Int

Number of contributors currently working for the company.

supportUrl
String

URL to the support website of the Connector.

Example: json
{
"title": "Mr",
"name": "John Doe",
"email": "john.doe@example.com",
"company": "commercetools",
"noOfContributors": 200,
"logoUrl": "https://www.example.com/logo.png",
"supportUrl": "https://www.example.com/support"
}

Repository

Details of the GitHub repository that contains the Connect applications.

url
String

HTTPS or SSH GitHub URL of the GitHub repository. Private repositories must use an SSH URL.

tag
String

Git tag of the release to use.

Example: json
{
"url": "git@github.com:commercetools/connect-application-kit.git",
"tag": "0.0.0"
}

ConnectorConfigurationApplication

The configuration of a Connect application. These values are automatically obtained from the connect.yaml file in the GitHub repository.

applicationName
String

Name of the Connect application.

applicationType
String

The Connect application type.

Can be "service", "event", "job", or "mc-app"
standardConfiguration

Contains the name, description, and default values of standard environment variables.

securedConfiguration

Contains the name and description of secret environment variables.

Example: json
{
"applicationName": "app-1",
"applicationType": "service",
"standardConfiguration": [
{
"key": "CONFIG_KEY",
"description": "config key description"
}
],
"securedConfiguration": [
{
"key": "CONFIG_SECRET_KEY",
"description": "config secret description"
}
]
}

ConfigurationKeyStandard

The name, description, and default value of a standard environment variable.

key
String

Name of the environment variable.

description
String

Description of the environment variable.

default
String

Default value of the environment variable.

required
Boolean

Indicates if the environment variable is required.

Default: false
Example: json
{
"key": "CONFIG_KEY",
"description": "config key description",
"default": "this is the default value"
}

ConfigurationKeySecured

The name and description of a secret environment variable.

key
String

Name of the environment variable.

description
String

Description of the environment variable.

required
Boolean

Indicates if the environment variable is required.

Default: false
Example: json
{
"key": "SECURED_CONFIG_KEY",
"description": "secure config key description",
"required": true
}

Region

The host Region of a commercetools Composable Commerce Project. For more information, see Hosts.

europe-west1.gcp
us-central1.gcp
australia-southeast1.gcp

IsPreviewable

The previewable status of the ConnectorStaged.

true

ConnectorStaged can be used in a Deployment.

false

ConnectorStaged cannot be used in a Deployment.

pending

The request for previewable status is currently being processed.

none

No request for previewable status has been made.

ConnectorReport

Contains report entries for publish/preview requests.

entries

Contains information, error, and warning notices.

ConnectorReportEntry

Describes an information, error, or warning notice.

The report entry type.

title
String

The title of the report entry.

message
String

The message related to the report entry.

createdAt

When the report entry was created.

Example: json
{
"type": "Error",
"title": "Connector specification file not found",
"createdAt": "2023-08-08T12:20:31.143Z"
}

ConnectorReportEntryType

The type of message being reported.

Information

Indicates information returned during the publish/preview task.

Warning

Indicates an issue that arose during the publish/preview task.

Error

Indicates a crash or failure to complete the publish/preview task.

CertificationInfo

comments

Comments made during the certification process.

CertificationInfoComment

Contains metadata and body text of a comment made during the certification process.

userId
String

The commercetools Composable Commerce Project key associated with the person making the comment.

datetime

Date and time (UTC) the comment was added.

comment
String

The body text of the comment.

Example: json
{
"userId": "project-key",
"datetime": "2023-03-17T14:00:00.000Z",
"comment": "An example comment."
}

ConnectorStatus

Indicates the current status of the ConnectorStaged.

Draft

The ConnectorStaged is currently a draft.

Processing

The ConnectorStaged publish request is being processed.

ReadyForCertification

The ConnectorStaged is ready to be certified.

InCertification

The ConnectorStaged is in the certification process.

Published

The ConnectorStaged was published.

Failed

The ConnectorStaged was not published.

Get ConnectorStaged

Get ConnectorStaged by ID

GET
https://connect.{region}.commercetools.com/connectors/drafts/{id}
OAuth 2.0 Scopes:
manage_project:{projectKey} , manage_connectors:{projectKey} , view_connectors:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

id
String

id of the ConnectorDraft

Response:
200ConnectorStagedasapplication/json
Request Example:cURL
curl --get https://connect.{region}.commercetools.com/connectors/drafts/{id} -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}'
200 Response Example: ConnectorStagedjson
{
"id": "5ab3edcd-9d23-4934-8f48-256805253119",
"key": "connector-key",
"version": 1,
"name": "Connector's name",
"description": "Connector's description",
"integrationTypes": ["other"],
"creator": {
"title": "Mr",
"name": "John Doe",
"email": "john.doe@example.com",
"company": "commercetools",
"noOfContributors": 200
},
"repository": {
"url": "git@github.com:commercetools/connect-application-kit.git",
"tag": "0.0.0"
},
"configurations": [
{
"applicationName": "app-1",
"applicationType": "service",
"standardConfiguration": [
{
"key": "CONFIG_KEY",
"description": "config key description"
}
],
"securedConfiguration": [
{
"key": "CONFIG_SECRET_KEY",
"description": "config secret description"
}
]
}
],
"private": false,
"privateProjects": [],
"supportedRegions": ["us-central1.gcp", "europe-west1.gcp"],
"hasChanges": false,
"alreadyListed": false,
"status": "Failed",
"publishingReport": {
"entries": [
{
"type": "Error",
"title": "Connector specification file not found",
"createdAt": "2023-08-08T17:00:59.327Z"
}
]
},
"isPreviewable": "false",
"previewableReport": {
"entries": [
{
"type": "Error",
"title": "Connector specification file not found",
"createdAt": "2023-08-08T12:20:31.143Z"
}
]
}
}

Get ConnectorStaged by Key

GET
https://connect.{region}.commercetools.com/connectors/drafts/key={key}
OAuth 2.0 Scopes:
manage_project:{projectKey} , manage_connectors:{projectKey} , view_connectors:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

key
String

key of the ConnectorDraft

Response:
200ConnectorStagedasapplication/json
Request Example:cURL
curl --get https://connect.{region}.commercetools.com/connectors/drafts/key={key} -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}'
200 Response Example: ConnectorStagedjson
{
"id": "5ab3edcd-9d23-4934-8f48-256805253119",
"key": "connector-key",
"version": 1,
"name": "Connector's name",
"description": "Connector's description",
"integrationTypes": ["other"],
"creator": {
"title": "Mr",
"name": "John Doe",
"email": "john.doe@example.com",
"company": "commercetools",
"noOfContributors": 200
},
"repository": {
"url": "git@github.com:commercetools/connect-application-kit.git",
"tag": "0.0.0"
},
"configurations": [
{
"applicationName": "app-1",
"applicationType": "service",
"standardConfiguration": [
{
"key": "CONFIG_KEY",
"description": "config key description"
}
],
"securedConfiguration": [
{
"key": "CONFIG_SECRET_KEY",
"description": "config secret description"
}
]
}
],
"private": false,
"privateProjects": [],
"supportedRegions": ["us-central1.gcp", "europe-west1.gcp"],
"hasChanges": false,
"alreadyListed": false,
"status": "Failed",
"publishingReport": {
"entries": [
{
"type": "Error",
"title": "Connector specification file not found",
"createdAt": "2023-08-08T17:00:59.327Z"
}
]
},
"isPreviewable": "false",
"previewableReport": {
"entries": [
{
"type": "Error",
"title": "Connector specification file not found",
"createdAt": "2023-08-08T12:20:31.143Z"
}
]
}
}

Query ConnectorStaged

GET
https://connect.{region}.commercetools.com/connectors/drafts
OAuth 2.0 Scopes:
manage_project:{projectKey} , manage_connectors:{projectKey} , view_connectors:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

Query parameters:
integrationTypes

Filter the results by the integrationType of a ConnectorStaged.

The parameter can be passed multiple times.
limit
Int
offset
Int

Number of elements skipped.

sort
String
The parameter can be passed multiple times.
Response:
Request Example:cURL
curl --get https://connect.{region}.commercetools.com/connectors/drafts -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}'
200 Response Example: ConnectorStagedPagedQueryResponsejson
{
"offset": 0,
"limit": 20,
"total": 1,
"count": 1,
"results": [
{
"id": "5ab3edcd-9d23-4934-8f48-256805253119",
"key": "connector-key",
"version": 1,
"name": "Connector's name",
"description": "Connector's description",
"integrationTypes": ["other"],
"creator": {
"title": "Mr",
"name": "John Doe",
"email": "john.doe@example.com",
"company": "commercetools",
"noOfContributors": 200
},
"repository": {
"url": "git@github.com:commercetools/connect-application-kit.git",
"tag": "0.0.0"
},
"configurations": [
{
"applicationName": "app-1",
"applicationType": "service",
"standardConfiguration": [
{
"key": "CONFIG_KEY",
"description": "config key description"
}
],
"securedConfiguration": [
{
"key": "CONFIG_SECRET_KEY",
"description": "config secret description"
}
]
}
],
"private": false,
"privateProjects": [],
"supportedRegions": ["us-central1.gcp", "europe-west1.gcp"],
"hasChanges": false,
"alreadyListed": false,
"status": "Draft",
"publishingReport": null,
"isPreviewable": "none",
"previewableReport": null,
"certified": true
}
]
}

Create ConnectorStaged

POST
https://connect.{region}.commercetools.com/connectors/drafts
OAuth 2.0 Scopes:
manage_project:{projectKey} , manage_connectors:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

Request Body:ConnectorDraftasapplication/json
Response:
201ConnectorStagedasapplication/json
Request Example:cURL
curl https://connect.{region}.commercetools.com/connectors/drafts -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}' \
--header 'Content-Type: application/json' \
--data-binary @- << DATA
{
"key" : "connector-key",
"name" : "Connector's name",
"description" : "Connector's description",
"creator" : {
"title" : "Mr",
"name" : "John Doe",
"email" : "john.doe@example.com",
"company" : "commercetools",
"noOfContributors" : 200
},
"repository" : {
"url" : "git@github.com:commercetools/connect-application-kit.git",
"tag" : "0.0.0"
},
"privateProjects" : [ ],
"supportedRegions" : [ "us-central1.gcp", "europe-west1.gcp" ],
"isPreviewable" : "true"
}
DATA
201 Response Example: ConnectorStagedjson
{
"id": "5ab3edcd-9d23-4934-8f48-256805253119",
"key": "connector-key",
"version": 1,
"name": "Connector's name",
"description": "Connector's description",
"integrationTypes": ["other"],
"creator": {
"title": "Mr",
"name": "John Doe",
"email": "john.doe@example.com",
"company": "commercetools",
"noOfContributors": 200
},
"repository": {
"url": "git@github.com:commercetools/connect-application-kit.git",
"tag": "0.0.0"
},
"configurations": [
{
"applicationName": "app-1",
"applicationType": "service",
"standardConfiguration": [
{
"key": "CONFIG_KEY",
"description": "config key description"
}
],
"securedConfiguration": [
{
"key": "CONFIG_SECRET_KEY",
"description": "config secret description"
}
]
}
],
"private": false,
"privateProjects": [],
"supportedRegions": ["us-central1.gcp", "europe-west1.gcp"],
"hasChanges": false,
"alreadyListed": false,
"status": "Failed",
"publishingReport": {
"entries": [
{
"type": "Error",
"title": "Connector specification file not found",
"createdAt": "2023-08-08T17:00:59.327Z"
}
]
},
"isPreviewable": "false",
"previewableReport": {
"entries": [
{
"type": "Error",
"title": "Connector specification file not found",
"createdAt": "2023-08-08T12:20:31.143Z"
}
]
}
}

Update ConnectorStaged

Update ConnectorStaged by ID

POST
https://connect.{region}.commercetools.com/connectors/drafts/{id}
OAuth 2.0 Scopes:
manage_project:{projectKey} , manage_connectors:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

id
String

id of the ConnectorDraft

Request Body:
application/json
version
Int

Expected version of the Connector on which the changes apply.

actions

Update actions to be performed on the Connector.

Response:
201ConnectorStagedasapplication/json
Request Example:cURL
curl https://connect.{region}.commercetools.com/connectors/drafts/{id} -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}' \
--header 'Content-Type: application/json' \
--data-binary @- << DATA
{
"version" : 1,
"actions" : [ {
"action" : "setName",
"name" : "Connector Name"
} ]
}
DATA
201 Response Example: ConnectorStagedjson
{
"id": "5ab3edcd-9d23-4934-8f48-256805253119",
"key": "connector-key",
"version": 1,
"name": "Connector's name",
"description": "Connector's description",
"integrationTypes": ["other"],
"creator": {
"title": "Mr",
"name": "John Doe",
"email": "john.doe@example.com",
"company": "commercetools",
"noOfContributors": 200
},
"repository": {
"url": "git@github.com:commercetools/connect-application-kit.git",
"tag": "0.0.0"
},
"configurations": [
{
"applicationName": "app-1",
"applicationType": "service",
"standardConfiguration": [
{
"key": "CONFIG_KEY",
"description": "config key description"
}
],
"securedConfiguration": [
{
"key": "CONFIG_SECRET_KEY",
"description": "config secret description"
}
]
}
],
"private": false,
"privateProjects": [],
"supportedRegions": ["us-central1.gcp", "europe-west1.gcp"],
"hasChanges": false,
"alreadyListed": false,
"status": "Failed",
"publishingReport": {
"entries": [
{
"type": "Error",
"title": "Connector specification file not found",
"createdAt": "2023-08-08T17:00:59.327Z"
}
]
},
"isPreviewable": "false",
"previewableReport": {
"entries": [
{
"type": "Error",
"title": "Connector specification file not found",
"createdAt": "2023-08-08T12:20:31.143Z"
}
]
}
}

Update ConnectorStaged by Key

POST
https://connect.{region}.commercetools.com/connectors/drafts/key={key}
OAuth 2.0 Scopes:
manage_project:{projectKey} , manage_connectors:{projectKey}
Path parameters:
region
String

Region in which the Project is hosted.

key
String

key of the ConnectorDraft

Request Body:
application/json
version
Int

Expected version of the Connector on which the changes apply.

actions

Update actions to be performed on the Connector.

Response:
201ConnectorStagedasapplication/json
Request Example:cURL
curl https://connect.{region}.commercetools.com/connectors/drafts/key={key} -i \
--header 'Authorization: Bearer ${BEARER_TOKEN}' \
--header 'Content-Type: application/json' \
--data-binary @- << DATA
{
"version" : 1,
"actions" : [ {
"action" : "setName",
"name" : "Connector Name"
} ]
}
DATA
201 Response Example: ConnectorStagedjson
{
"id": "5ab3edcd-9d23-4934-8f48-256805253119",
"key": "connector-key",
"version": 1,
"name": "Connector's name",
"description": "Connector's description",
"integrationTypes": ["other"],
"creator": {
"title": "Mr",
"name": "John Doe",
"email": "john.doe@example.com",
"company": "commercetools",
"noOfContributors": 200
},
"repository": {
"url": "git@github.com:commercetools/connect-application-kit.git",
"tag": "0.0.0"
},
"configurations": [
{
"applicationName": "app-1",
"applicationType": "service",
"standardConfiguration": [
{
"key": "CONFIG_KEY",
"description": "config key description"
}
],
"securedConfiguration": [
{
"key": "CONFIG_SECRET_KEY",
"description": "config secret description"
}
]
}
],
"private": false,
"privateProjects": [],
"supportedRegions": ["us-central1.gcp", "europe-west1.gcp"],
"hasChanges": false,
"alreadyListed": false,
"status": "Failed",
"publishingReport": {
"entries": [
{
"type": "Error",
"title": "Connector specification file not found",
"createdAt": "2023-08-08T17:00:59.327Z"
}
]
},
"isPreviewable": "false",
"previewableReport": {
"entries": [
{
"type": "Error",
"title": "Connector specification file not found",
"createdAt": "2023-08-08T12:20:31.143Z"
}
]
}
}

Update actions

Update Connector

Set Name

Updates the name of the Connector.

action
String
"setName"
name
String

Value to set.

Example: json
{
"action": "setName",
"name": "The new name of the Connector"
}

Set Description

Updates the description of the Connector.

action
String
"setDescription"
description
String

Value to set.

Example: json
{
"action": "setDescription",
"description": "New description of the Connector."
}

Set Repository

Updates the GitHub repository details of the Connector.

action
String
"setRepository"
url
String

New HTTPS or SSH GitHub URL to assign to the Connector.

tag
String

New Git tag to assign to the Connector.

Example: json
{
"action": "setRepository",
"url": "git@github.com:commercetools/connect-application-kit.git",
"tag": "0.0.0"
}

Set Supported Region

Updates the regions that the Connector can be deployed in.

action
String
"setSupportedRegions"
regions
Array of Region

New value to set.

MinItems: 1
Example: json
{
"action": "setSupportedRegions",
"regions": ["europe-west1.gcp", "us-central1.gcp", "australia-southeast1.gcp"]
}

Set Documentation URL

Updates the documentation URL of the Connector.

action
String
"setDocumentationUrl"
documentationUrl
String

Value to set.

Example: json
{
"action": "setDocumentationUrl",
"documentationUrl": "https://www.example.com/my-connector/documentation"
}

Set Integration Types

Updates the integration types of the Connector.

action
String
"setIntegrationTypes"
integrationTypes
Array of IntegrationType

New value to set.

Example: json
{
"action": "setIntegrationTypes",
"integrationTypes": ["promotion", "other"]
}

Update Creator

Use the following update actions to set values for fields within creator.

Set Name

Updates the name of the creator.

action
String
"setCreatorName"
creatorName
String

Value to set.

Example: json
{
"action": "setCreatorName",
"creatorName": "Jane Doe"
}

Set Title

Updates the title of the creator.

action
String
"setCreatorTitle"
creatorTitle
String

Value to set.

Example: json
{
"action": "setCreatorTitle",
"creatorTitle": "Ms"
}

Set Email

Updates the email address of the creator.

action
String
"setCreatorEmail"
creatorEmail
String

Value to set.

Example: json
{
"action": "setCreatorEmail",
"creatorEmail": "new-email-address@example.com"
}

Set Company

Updates the company of the creator.

action
String
"setCreatorCompany"
creatorCompany
String

Value to set.

Example: json
{
"action": "setCreatorCompany",
"creatorCompany": "New name of company"
}

Set Number of Contributors

Updates the number of contributors of the creator.

action
String
"setCreatorNoOfContributors"
creatorNoOfContributors
Int

Value to set.

Minimum: 1
Example: json
{
"action": "setCreatorNoOfContributors",
"creatorNoOfContributors": 123
}

Set Support URL

Updates the support URL of the creator.

action
String
"setCreatorSupportUrl"
creatorSupportUrl
String

Value to set.

Example: json
{
"action": "setCreatorSupportUrl",
"creatorSupportUrl": "https://www.example.com/support"
}

Update Privacy of Connector

Add Project to Private Connector

Allow a Composable Commerce Project to access a private Connector.

Attempting to add a privateProject to a non-private ConnectorStaged returns the ConnectorStagedNotPrivate error.

action
String
"addPrivateProject"
privateProject

The Composable Commerce Project to add to privateProjects.

Pattern: ^[a-zA-Z0-9-_.]+:[a-zA-Z0-9-_]{2,36}$
Example: json
{
"action": "addPrivateProject",
"privateProject": "europe-west1.gcp:example-project-key"
}

Remove Project from Private Connector

Remove a Composable Commerce Project's access to a private Connector.

Attempting to remove a privateProject from a non-private ConnectorStaged returns the ConnectorStagedNotPrivate error.

action
String
"removePrivateProject"
privateProject

The Composable Commerce Project to remove from privateProjects.

Pattern: ^[a-zA-Z0-9-_.]+:[a-zA-Z0-9-_]{2,36}$
Example: json
{
"action": "removePrivateProject",
"privateProject": "europe-west1.gcp:example-project-key"
}

Preview Connector

Requests the previewable status of a ConnectorStaged. A previewable ConnectorStaged can be used in a Deployment for testing and preview purposes.

After using this update action, the status of isPreviewable will change to pending. Following validation, the status of isPreviewable will change to true if the previewable status is granted, or false if it is rejected. In the case of a false status, contact our support team regarding any issues raised during the validation process.

Requesting the previewable status for a ConnectorStaged that is currently being reviewed returns the ConnectorStagedPreviewRequestUnderProcess error.

action
String
"updatePreviewable"
Example: json
{
"action": "updatePreviewable"
}

Publishing and Certification

Publish

Starts the Connector publishing process. You will be unable to update the Connector until the process completes.

action
String
"publish"
certification
Boolean

If true, the ConnectorStaged enters the certification process. After completing the certification process, the Connector will become publicly available. If false, the published Connector becomes private and is available for deployment to Projects listed in ConnectorStaged.privateProjects.

Example: json
{
"action": "publish",
"certification": true
}

Unlist

Removes a certified and listed Connector from search results and listings. This update action does not affect deployed instances of the Connector.

action
String
"unlist"
Example: json
{
"action": "unlist"
}

Add Certification Comment

Add a comment during the certification process of the Connector.

action
String
"addCertificationComment"
comment
String

Comment to add.

Example: json
{
"action": "addCertificationComment",
"comment": "The comment to add."
}