<!-- https://staircase.co/platform/data/site -->
# Site

# Site

The documentation platform, run as a product: ontology-driven navigation, per-product pages, content management and glossary enforcement.

Site generated developer documentation from the ontology rather than from hand-written navigation. Families, categories and products produced the sidebar; each product carried an overview and a quickstart; component ordering was configuration.

Content came from a managed store, and terminology was checked against a glossary at authoring time, so the same term meant the same thing across products.

## How it works

Navigation generated from the ontology cannot drift from it. A product added to the catalogue appeared; one removed disappeared. A hand-maintained sidebar fails silently and keeps looking correct.

## Operations

<!--source:api-specifications-->

### Advertisement[new]
<!--/source-->

`POST` `/advertisers`

<!--source:api-specifications-->

#### Register Advertiser
<!--/source-->

`registerAdvertiser`

<!--source:api-specifications-->
This endpoint registers the Advertiser.

#### Redirect URL

`redirect_url` is used to redirect the user to specified location upon interaction with the advertiser's ad.

#### Advertiser Language

Here user has to specify earlier registered language with predefined rule sets that allow translation of advertising data to Staircase lexicon. Please refer to Language documentation.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "advertiser_id": "e0e44570-6666-0001-000a-000a00aa0a0a",
 "advertiser_name": "cordless_media",
 "redirect_url": "https://staircase.co/",
 "advertiser_language": "cordless-media-language"
}
```

<!--/source-->

##### Request body`application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `advertiser_id`required | `string` | <!--source:api-specifications-->Advertiser Name<!--/source--> |
| `advertiser_name`required | `string` | <!--source:api-specifications-->Advertiser Name<!--/source--> |
| `redirect_url`required | `string (uri)` | <!--source:api-specifications-->URL to which user is redirected upon interaction with ad<!--/source--> |
| `advertiser_language`required | `string` | <!--source:api-specifications-->Language of the Advertisers that has registered rule sets allowing translation to Staircase lexicon<!--/source--> |

##### Response `201``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Advertiser Registered
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `advertiser_id` | `string` | <!--source:api-specifications-->Advertiser ID<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/advertisers`

<!--source:api-specifications-->

#### List Advertisers
<!--/source-->

`listAdvertisers`

<!--source:api-specifications-->
Retrieves and lists all registered Advertisers.

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `next_token` | `string` query | `eNolzLEKwkAQRdFfeZnGRvwAWxtBbOwsh2TcXYxvZJ2NBPHfNVpduMV5yf4gW8k2d5i9rSbDxRsHKGH6CKvfpoRCRDYctV4t7qP2hsH7djOGRnHKWk4LtHOmqtHG3+1w/ptPJ+iRC9NG3h89BijN` | <!--source:api-specifications-->Used for pagination purposes<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Advertisers Retrieved
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `advertisers` | `array` | <!--source:api-specifications-->Array of Advertisers<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`DELETE` `/advertisers/{advertiser_id}`

<!--source:api-specifications-->

#### Delete Advertiser
<!--/source-->

`deleteAdvertiser`

<!--source:api-specifications-->
Deletes Advertiser referenced by `advertiser_id`.

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `advertiser_id` required | `string` path | `advertiser_id` | <!--source:api-specifications-->Advertiser ID referencing a registered advertiser<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`204``403`

`GET` `/advertisers/{advertiser_id}/advertising_data`

<!--source:api-specifications-->

#### Redirect From Advertiser
<!--/source-->

`persistAdvertisingData`

<!--source:api-specifications-->
This endpoint accepts advertising data and persists it in the Staircase Persistence product. A Transaction with a specific label is created, to which a Collection containing the advertising data is being attached.

#### Input Data

The advertising data is accepted through the query parameters of this endpoint.

#### Data Formatting

The provided advertising data is updated to contain the Advertiser information that can be queried on later.

#### Open Endpoint

This endpoint does not require `x-api-key` header.

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `advertiser_id` required | `string` path | `advertiser_id` | <!--source:api-specifications-->Advertiser ID referencing a registered advertiser<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`302``403`

`POST` `/advertisers/{advertiser_id}/advertising_data/transactions/{transaction_id}`

<!--source:api-specifications-->

#### Persist Advertiser Data[new]
<!--/source-->

`persistAdvertisingDataDirect`

<!--source:api-specifications-->
Persist Advertiser Data
<!--/source-->

<!--source:api-specifications-->
This endpoint accepts advertising data and persists it in the Staircase Persistence product.

A Transaction with a specific label is provided by the user. An additional Collection, containing the advertising data is being attached.

#### Input Data

The advertising data is accepted through the payload in the body of the request. Request body is required to be a valid JSON object, and must be present.

#### Data Formatting

The provided advertising data is updated to contain the Advertiser information that can be queried on later.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "campaign_identifier": "campaign_identifier",
 "keyword_match_type": "exact"
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `advertiser_id` required | `string` path | `advertiser_id` | <!--source:api-specifications-->Advertiser ID referencing a registered advertiser<!--/source--> |
| `transaction_id` required | `string` path | `transaction_id` | <!--source:api-specifications-->Transaction ID<!--/source--> |

##### Response `202``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Advertising data has been persisted
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `transaction_id`required | `string` | <!--source:api-specifications-->Transaction ID<!--/source-->Example `01H7B8YQYCWRGNHXF8GY5CSZNM` |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `object` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

<!--source:api-specifications-->

### Traffic Control[new]
<!--/source-->

`POST` `/configurations`

<!--source:api-specifications-->

#### Create Traffic Configuration[new]
<!--/source-->

`createTrafficConfiguration`

<!--source:api-specifications-->
Create Traffic Configuration
<!--/source-->

<!--source:api-specifications-->
This endpoint creates a traffic split configuration by exposing interface for user to define weighted distribution of users hitting the configuration among different sites.

Since traffic statistics is collected, an initial revision of the configuration is created and attached to it. Any following updates to the configuration will create a new revision and point such to it to logically separate the incoming traffic statistics based on the ratios in the current revision.

#### Warning

Sum of ratios given for each url should make up to 1.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "sites_settings": [
 {
 "url": "https://google.com",
 "ratio": 0.8
 },
 {
 "url": "https://bing.com",
 "ratio": 0.2
 }
 ]
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Request body`application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `sites_settings`required | `object[]` | <!--source:api-specifications-->Array of sites with their settings.<!--/source--> |
| `url`required | `string (uri)` | <!--source:api-specifications-->Url of site to which redirection will occur.<!--/source--> |
| `ratio`required | `number (float)` | <!--source:api-specifications-->Ratio weight of the provided url with respect to other sites.<!--/source--> |

##### Response `201``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `traffic_configuration_id` | `string` | <!--source:api-specifications-->Idenfitier of the configuration created.<!--/source--> |

##### Other responses

`422`

`GET` `/configurations`

<!--source:api-specifications-->

#### List Traffic Configurations[new]
<!--/source-->

`listTrafficConfigurations`

<!--source:api-specifications-->
List Traffic Configurations
<!--/source-->

<!--source:api-specifications-->
Lists all created traffic configurations.

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `next_token` | `string` query | `eNolzLEKwkAQRdFfeZnGRvwAWxtBbOwsh2TcXYxvZJ2NBPHfNVpduMV5yf4gW8k2d5i9rSbDxRsHKGH6CKvfpoRCRDYctV4t7qP2hsH7djOGRnHKWk4LtHOmqtHG3+1w/ptPJ+iRC9NG3h89BijN` | <!--source:api-specifications-->The response can include a limited number of results along with a `next_token` value. You can use this `next_token` value in a subsequent API request to retrieve the next batch of items. `next_token` is located under the `page` object in the response.<!--/source--> |
| `limit` | `integer` query | `10` | <!--source:api-specifications-->Items limit<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `page`required | `object` | <!--source:api-specifications-->Page information. Contains basic information of the current page returned.<!--/source--> |
| `count`required | `integer` | <!--source:api-specifications-->Count of items that were retrieved for this page.<!--/source-->Example `1` |
| `next_token`required | `string` | <!--source:api-specifications-->If this field exists in the page information collection, it means you can continue querying for other items, using this token in the query parameters of the following request.<!--/source-->Example `eNolzLEKwkAQRdFfeZnGRvwAWxtBbOwsh2TcXYxvZJ2NBPHfNVpduMV5yf4gW8k2d5i9rSbDxRsHKGH6CKvfpoRCRDYctV4t7qP2hsH7djOGRnHKWk4LtHOmqtHG3+1w/ptPJ+iRC9NG3h89BijN` |
| `traffic_configurations` | `array` | <!--source:api-specifications-->Configurations list<!--/source--> |

##### Other responses

`422`

`GET` `/configurations/{traffic_configuration_id}`

<!--source:api-specifications-->

#### Retrieve Traffic Configuration[new]
<!--/source-->

`retrieveTrafficConfiguration`

<!--source:api-specifications-->
Retrieve Traffic Configuration
<!--/source-->

<!--source:api-specifications-->
Retrieve traffic configuration with the latest revision information. User can specify a different revision of the same configuration to be displayed via query parameters.

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `traffic_configuration_id` required | `string` path | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Traffic Configuration ID<!--/source--> |
| `revision_id` | `string` query | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Revision ID of the configuration to display<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `traffic_configuration_id` | `string (uuid)` | <!--source:api-specifications-->Configuration ID<!--/source--> |
| `revision_id` | `string` | <!--source:api-specifications-->Revision ID<!--/source--> |
| `sites_settings` | `object[]` | <!--source:api-specifications-->Array of sites with their settings.<!--/source--> |
| `url`required | `string (uri)` | <!--source:api-specifications-->Url of site to which redirection will occur.<!--/source--> |
| `ratio`required | `number (float)` | <!--source:api-specifications-->Ratio weight of the provided url with respect to other sites.<!--/source--> |
| `traffic_stats` | `object[]` | <!--source:api-specifications-->Array of sites with their statistics.<!--/source--> |
| `url`required | `string (uri)` | <!--source:api-specifications-->Site url<!--/source--> |
| `hits`required | `integer` | <!--source:api-specifications-->Number of redirects to this site<!--/source--> |

##### Other responses

`422`

`PUT` `/configurations/{traffic_configuration_id}`

<!--source:api-specifications-->

#### Update Traffic Configuration[new]
<!--/source-->

`updateTrafficConfiguration`

<!--source:api-specifications-->
Update Traffic Configuration
<!--/source-->

<!--source:api-specifications-->
Updates provided traffic configuration with new site settings. Creates a separate revision and points the configuration to it.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "sites_settings": [
 {
 "url": "https://google.com",
 "ratio": 0.8
 },
 {
 "url": "https://bing.com",
 "ratio": 0.2
 }
 ]
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `traffic_configuration_id` required | `string` path | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Traffic Configuration ID<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `sites_settings`required | `object[]` | <!--source:api-specifications-->Array of sites with their settings.<!--/source--> |
| `url`required | `string (uri)` | <!--source:api-specifications-->Url of site to which redirection will occur.<!--/source--> |
| `ratio`required | `number (float)` | <!--source:api-specifications-->Ratio weight of the provided url with respect to other sites.<!--/source--> |

##### Other responses

`204``422`

`GET` `/configurations/{traffic_configuration_id}/revisions`

<!--source:api-specifications-->

#### Retrieve Configuration Revisions[new]
<!--/source-->

`retrieveConfigurationRevisions`

<!--source:api-specifications-->
Retrieve Configuration Revisions
<!--/source-->

<!--source:api-specifications-->
Retrieves all revisions information for the provided traffic configuration.

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
3
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `traffic_configuration_id` required | `string` path | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Traffic Configuration ID<!--/source--> |
| `next_token` | `string` query | `eNolzLEKwkAQRdFfeZnGRvwAWxtBbOwsh2TcXYxvZJ2NBPHfNVpduMV5yf4gW8k2d5i9rSbDxRsHKGH6CKvfpoRCRDYctV4t7qP2hsH7djOGRnHKWk4LtHOmqtHG3+1w/ptPJ+iRC9NG3h89BijN` | <!--source:api-specifications-->The response can include a limited number of results along with a `next_token` value. You can use this `next_token` value in a subsequent API request to retrieve the next batch of items. `next_token` is located under the `page` object in the response.<!--/source--> |
| `limit` | `integer` query | `10` | <!--source:api-specifications-->Items limit<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `page`required | `object` | <!--source:api-specifications-->Page information. Contains basic information of the current page returned.<!--/source--> |
| `count`required | `integer` | <!--source:api-specifications-->Count of items that were retrieved for this page.<!--/source-->Example `1` |
| `next_token`required | `string` | <!--source:api-specifications-->If this field exists in the page information collection, it means you can continue querying for other items, using this token in the query parameters of the following request.<!--/source-->Example `eNolzLEKwkAQRdFfeZnGRvwAWxtBbOwsh2TcXYxvZJ2NBPHfNVpduMV5yf4gW8k2d5i9rSbDxRsHKGH6CKvfpoRCRDYctV4t7qP2hsH7djOGRnHKWk4LtHOmqtHG3+1w/ptPJ+iRC9NG3h89BijN` |
| `revisions`required | `array` | <!--source:api-specifications-->Revisions list<!--/source--> |

##### Other responses

`422`

`GET` `/configurations/{traffic_configuration_id}/url`

<!--source:api-specifications-->

#### Split Traffic[new]
<!--/source-->

`splitTraffic`

<!--source:api-specifications-->
Split Traffic
<!--/source-->

<!--source:api-specifications-->
This endpoint redirects the user to one of the urls defined in the traffic configuration provided in path with the choice being made based on the ratios provided. The latest revision of the configuration is used to determine configuration parameters.

#### Query Parameters

Query parameters passed to this endpoint are preserved and appended to the url selected from the configuration.

#### Notes on Implementation

Target url is selected using weighted random selection algorithm, which tends to get more accurate in user distribution with the increasing sample size.

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `traffic_configuration_id` required | `string` path | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Traffic Configuration ID<!--/source--> |

##### Other responses

`302``422`

<!--source:api-specifications-->

### Documentation
<!--/source-->

`POST` `/documentation`

<!--source:api-specifications-->

#### Publish product definition
<!--/source-->

`publishDocumentation`

<!--source:api-specifications-->
Publish an API definition to an environment. API definitions describe service inputs, outputs, error codes and example request / responses.

Documentation can be published from source artifact which passed Assessment or using bundle from Marketplace. Also, direct URL to swagger file can be used for publishing. In this case swagger file URL should return content with 200 response.

<!--/source-->

##### Request

<!--source:api-specifications-->
ArtifactExampleSwaggerExample
<!--/source-->

<!--source:api-specifications-->
application/json Copy
```
{
 "artifact_url": "https://code-manager-dev-root.s3.amazonaws.com/service-builder-api/2f867413-2f16-4c73-86ec-3086c0d4a33c/source.zip"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy
```
{
 "swagger_url": "https://documentation.staircaseapi.com/swagger.yml"
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |

##### Response `201``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `publish_id` | `string` | <!--source:api-specifications-->Publish ID corresponding to the publish process.<!--/source-->Example `e0f01bac-8a0b-4a61-9e0a-180f28106f7f` |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`POST` `/ontology`

<!--source:api-specifications-->

#### Publish products ontology
<!--/source-->

`publishOntology`

<!--source:api-specifications-->
Publish products ontology. It will be used to show ordered product families, categories, and products in the navigation bar. When ontology contains not published product, then it will not be shown in the navigation bar. When ontology does not have a product, it will be shown at the end of the list.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "DevOps": {
 "Ship": [
 "Build",
 "Deploy"
 ],
 "Distribute": [
 "Marketplace",
 "Environment",
 "Documentation"
 ]
 }
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "DevOps": {
 "Ship": [
 "Build",
 "Deploy"
 ],
 "Distribute": [
 "Marketplace",
 "Environment",
 "Documentation"
 ]
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`200``403`

`GET` `/documentation/{publish_id}`

<!--source:api-specifications-->

#### Retrieve publish status
<!--/source-->

`getPublishStatus`

<!--source:api-specifications-->
Retrieve the status of a given publish_id. Status is SUCCEEDED, FAILED or IN PROGRESS.

<!--/source-->

##### Response

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `publish_id` required | `string` path | `45cc7cea-4626-40b2-b237-01799d037cg2` | <!--source:api-specifications-->Publish id of returned by the publish documentation endpoint.<!--/source--> |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `status` | `string` | <!--source:api-specifications-->Status of the publish process.<!--/source-->`FAILED``FAULT``IN_PROGRESS``IN_REVIEW``REJECTED``STOPPED``SUCCEEDED``TIMED_OUT`Example `IN_PROGRESS` |
| `status_msg` | `string` | <!--source:api-specifications-->Message with details about the publish process status.<!--/source-->Example `The bundle review process is starting.` |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/ontology`

<!--source:api-specifications-->

#### Retrieve products ontology
<!--/source-->

`getOntology`

<!--source:api-specifications-->
Retrieve products ontology.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "DevOps": {
 "Ship": [
 "Build",
 "Deploy"
 ],
 "Distribute": [
 "Marketplace",
 "Environment",
 "Documentation"
 ]
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`200``403`

`GET` `/content/{product_name}/try-it-data/{openapi_path}`

<!--source:api-specifications-->

#### Get Try It data
<!--/source-->

`getTryItData`

<!--source:api-specifications-->
Retrieve the data for try it functionality. Also, it contains examples of request body.

<!--/source-->

##### Response

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Documentation` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |
| `openapi_path` required | `string` path | `publishDocumentation` | <!--source:api-specifications-->Path which was specified as 'operationId' in api method definition in product swagger file.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
5 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `method` | `string` | <!--source:api-specifications-->API method type.<!--/source-->`DELETE``GET``PATCH``POST``PUT` |
| `path` | `string` | <!--source:api-specifications-->API method path.<!--/source-->Example `/transactions/{transaction_id}/collections` |
| `url` | `string` | <!--source:api-specifications-->URL of service.<!--/source-->Example `https://documentation-test.staircaseapi.com/employment` |
| `body_examples` | `object[]` | <!--source:api-specifications-->Body payload examples.<!--/source--> |
| `name` | `string` | <!--source:api-specifications-->Example name.<!--/source-->Example `FullExample` |
| `value` | `object` | <!--source:api-specifications-->Example value.<!--/source--> |
| `parameters` | `object` | <!--source:api-specifications-->Parameters definition.<!--/source--> |
| `header` | `object[]` | <!--source:api-specifications-->Header parameters.<!--/source--> |
| `name` | `string` | <!--source:api-specifications-->Parameter name.<!--/source-->Example `x-api-key` |
| `description` | `string` | <!--source:api-specifications-->Parameter description.<!--/source-->Example `Environment api key.` |
| `type` | `string` | <!--source:api-specifications-->Parameter type.<!--/source-->Example `string` |
| `example` | `string` | <!--source:api-specifications-->Parameter example.<!--/source-->Example `3d54e011-9a17-4357-bf7a-10a854e4ae15` |
| `default` | `string` | <!--source:api-specifications-->Parameter default value.<!--/source--> |
| `required` | `boolean` | <!--source:api-specifications-->Is parameter required.<!--/source-->Example `true` |
| `path` | `object[]` | <!--source:api-specifications-->Query parameters.<!--/source--> |
| `name` | `string` | <!--source:api-specifications-->Parameter name.<!--/source-->Example `transaction_id` |
| `description` | `string` | <!--source:api-specifications-->Parameter description.<!--/source-->Example `Employment transaction id.` |
| `type` | `string` | <!--source:api-specifications-->Parameter type.<!--/source-->Example `string` |
| `example` | `string` | <!--source:api-specifications-->Parameter example.<!--/source-->Example `189ec86a-2b8d-41ed-bb0e-91b4a7fc0efc` |
| `default` | `string` | <!--source:api-specifications-->Parameter default value.<!--/source--> |
| `required` | `boolean` | <!--source:api-specifications-->Is parameter required.<!--/source-->Example `true` |
| `query` | `object[]` | <!--source:api-specifications-->Path parameters.<!--/source--> |
| `name` | `string` | <!--source:api-specifications-->Parameter name.<!--/source-->Example `returnResult` |
| `description` | `string` | <!--source:api-specifications-->Parameter description.<!--/source-->Example `Is need to return result in response.` |
| `type` | `string` | <!--source:api-specifications-->Parameter type.<!--/source-->Example `boolean` |
| `example` | `string` | <!--source:api-specifications-->Parameter example.<!--/source-->Example `true` |
| `default` | `string` | <!--source:api-specifications-->Parameter default value.<!--/source-->Example `false` |
| `required` | `boolean` | <!--source:api-specifications-->Is parameter required.<!--/source-->Example `false` |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/content/sidebar`

<!--source:api-specifications-->

#### Get sidebar
<!--/source-->

`getSideBar`

<!--source:api-specifications-->
Retrieve the sidebar data.

<!--/source-->

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `products_side_bar` | `object` | <!--source:api-specifications-->List of products for sidebar.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/content/products`

<!--source:api-specifications-->

#### List all products
<!--/source-->

`getProducts`

<!--source:api-specifications-->
Retrieve the list of published products.

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy Success response.

```
[
 "Build",
 "Deploy",
 "Test"
]
```

<!--/source-->

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `products_published` | `string[]` | <!--source:api-specifications-->List of published products.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/content/{product_name}/guides`

<!--source:api-specifications-->

#### Get How To guide
<!--/source-->

`getGuides`

<!--source:api-specifications-->
Get How To guide.
<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
[
 {
 "name": "How to build a service",
 "md_url": "https://content.template.staircaseapi.com/Employment/4c026275-00be-472a-a6a6-83a27970762a/public/How to build a service.md",
 "html_url": "https://content.template.staircaseapi.com/Employment/4c026275-00be-472a-a6a6-83a27970762a/public/How to build a service.html",
 "pdf_url": "https://content.template.staircaseapi.com/Employment/4c026275-00be-472a-a6a6-83a27970762a/public/How to build a service.pdf"
 }
]
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Documentation` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `name` | `string` | <!--source:api-specifications-->Title.<!--/source-->Example `How to build a service` |
| `md_url` | `string` | <!--source:api-specifications-->URL to guide in MD format.<!--/source-->Example `https://content.template.staircaseapi.com/Employment/4c026275-00be-472a-a6a6-83a27970762a/public/How to build a service.md` |
| `html_url` | `string` | <!--source:api-specifications-->URL to guide in HTML format.<!--/source-->Example `https://content.template.staircaseapi.com/Employment/4c026275-00be-472a-a6a6-83a27970762a/public/How to build a service.html` |
| `pdf_url` | `string` | <!--source:api-specifications-->URL to guide in PDF format.<!--/source-->Example `https://content.template.staircaseapi.com/Employment/4c026275-00be-472a-a6a6-83a27970762a/public/How to build a service.pdf` |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/content/{product_name}/static`

<!--source:api-specifications-->

#### Get static files
<!--/source-->

`getStatic`

<!--source:api-specifications-->
Get product static files.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "static_files": {
 "Employment.svg": "https://content.template.staircaseapi.com/Employment/4c026275-00be-472a-a6a6-83a27970762a/public/Employment.svg",
 "Preview_Blue.svg": "https://content.template.staircaseapi.com/Employment/4c026275-00be-472a-a6a6-83a27970762a/public/Preview_Blue.svg"
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Documentation` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `static_files` | `object` | <!--source:api-specifications-->List of static files.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/content/{product_name}/overview`

<!--source:api-specifications-->

#### Get overview
<!--/source-->

`getOverview`

<!--source:api-specifications-->
Get product overview HTML content.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "overview": "<!DOCTYPE html>\n<p><html lang=\"en\">\n<head>\n</head></p></html></p>"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Documentation` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `overview` | `string` | <!--source:api-specifications-->HTML content of overview page.<!--/source-->Example `<!DOCTYPE html> <p><html lang="en"> <head> </head></p></html></p>` |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/content/{product_name}/overview_embedded`

<!--source:api-specifications-->

#### Get overview embedded
<!--/source-->

`getOverviewEmbedded`

<!--source:api-specifications-->
Get product overview embedded HTML content.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "overview_embedded": "<!DOCTYPE html>\n<p><html lang=\"en\">\n<head>\n</head></p></html></p>"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Documentation` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `overview_embedded` | `string` | <!--source:api-specifications-->HTML content of embedded overview page.<!--/source-->Example `<!DOCTYPE html> <p><html lang="en"> <head> </head></p></html></p>` |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`DELETE` `/content/{product_name}/openapi`

<!--source:api-specifications-->

#### Delete Open API definition
<!--/source-->

`deleteOpenApi`

<!--source:api-specifications-->
Delete Open API definition.

<!--/source-->

##### Response

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Builder` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`204``403`

`GET` `/content/{product_name}/openapi`

<!--source:api-specifications-->

#### Get Open API definition
<!--/source-->

`getOpenApi`

<!--source:api-specifications-->
Get Open API definition.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "openapi_fields": {
 "openapi": "3.0.1",
 "x-explorer-enabled": true,
 "info": {
 "title": "Build",
 "x-product-category": "Ship",
 "x-product-family": "DevOps",
 "x-product-name": "Build",
 "version": "1.0.0"
 },
 "servers": [
 {
 "url": "https://documentation.staircaseapi.com/infra-builder"
 }
 ],
 "security": [
 {
 "ApiKeyAuth": []
 }
 ],
 "paths": {
 "/builds": {
 "post": {
 "x-product-component": "Product",
 "x-product-endpoint": "Build Product",
 "x-product-sequence": 1,
 "summary": "Create/Run service builder for services.",
 "description": "Build a deployable artifact for a product. The artifact must be provided via a URL. A callback will be sent to the URL specified in property.",
 "requestBody": {
 "description": "Run Specification",
 "content": {
 "application/json": {
 "schema": {
 "type": "object",
 "title": "Service Build Schema",
 "properties": {
 "bundle_id": {
 "type": "string",
 "format": "uuid",
 "description": "Usually a hash of the commit but can be any UUID."
 },
 "source_url": {
 "type": "string",
 "description": "URL to source code.",
 "format": "uri"
 },
 "callback_url": {
 "type": "string",
 "format": "uri",
 "default": "null",
 "description": "Callback URL where are you waiting for build status"
 }
 },
 "required": [
 "source_url"
 ],
 "example": {
 "source_url": "https://code-manager-dev-root.s3.amazonaws.com/service-builder-api/2f867413-2f16-4c73-86ec-3086c0d4a33c/source.zip"
 }
 },
 "example": {
 "source_url": "https://code-manager-dev-root.s3.amazonaws.com/service-builder-api/2f867413-2f16-4c73-86ec-3086c0d4a33c/source.zip"
 }
 }
 }
 },
 "responses": {
 "201": {
 "description": "Build created",
 "content": {
 "application/json": {
 "schema": {
 "type": "object",
 "properties": {
 "build_id": {
 "type": "string",
 "format": "uuid",
 "description": "Unique build_id which can be used for tracking build status. Usually it is a UUID."
 }
 },
 "example": {
 "build_id": "13bd5b51-1a41-4510-9baa-d7f7e24c89a3"
 }
 },
 "example": {
 "build_id": "13bd5b51-1a41-4510-9baa-d7f7e24c89a3"
 }
 }
 }
 }
 }
 }
 }
 }
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Documentation` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `openapi_fields` | `object` | <!--source:api-specifications-->Open API definition.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/content/{product_name}/openapi/paths`

<!--source:api-specifications-->

#### Get all Open API paths
<!--/source-->

`getOpenApiPaths`

<!--source:api-specifications-->
Get all Open API path definitions.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "openapi_paths": {
 "method": "get",
 "service_name": "Build",
 "base_path": "infra-builder",
 "env_domain": "template.staircaseapi.com",
 "path": "/builds/{build_id}",
 "sidebar_path": "/docs/DevOps/Ship/Build/get-build-status",
 "operation_id": null,
 "description": "**Retrieve Service Build Status**",
 "summary": "Get build status",
 "request_body": null,
 "responses": [
 {
 "response_code": "200",
 "content": {
 "application/json": {
 "schema": {
 "type": "object",
 "properties": {
 "build_id": {
 "type": "string",
 "description": "Unique build id which was returned when build was started",
 "format": "uuid"
 },
 "status": {
 "type": "string",
 "description": "Build status (IN_PROGRESS, FAILED, SUCCEEDED)"
 },
 "artifacts_url": {
 "type": "string",
 "format": "url",
 "description": "Artifact URL if build was successfully completed"
 },
 "logs": {
 "type": "array",
 "description": "Build Logs which can be used for build problem investigation",
 "items": {
 "type": "string"
 }
 },
 "metadata": {
 "type": "object",
 "description": "Metadata generated by build"
 }
 }
 },
 "example": {
 "build_id": "7ac245b7-2f93-4850-8e86-abfdfd3b0a76",
 "status": "SUCCEEDED",
 "metadata": {
 "service-assessor": {
 "id": "devops-code-assessor:e5dcb19e-b025-4255-a42f-7f501456703c",
 "timestamp": 1623399920.05132,
 "version": "1.0.0",
 "issuer": "https://build.staircaseapi.com/code-assessor",
 "status": "SUCCEEDED"
 },
 "service-code": {
 "id": "0da65dfd-9753-4bb4-8853-06e608979e73",
 "timestamp": 1623399796.747468,
 "version": "1.1",
 "status": "SUCCEEDED",
 "commit_hash": "c366156be0d8a39ce9a7bf85a5f5d5fc1a59ba4c",
 "issuer": "https://build.staircaseapi.com/code"
 },
 "service-builder": {
 "id": "7ac245b7-2f93-4850-8e86-abfdfd3b0a76",
 "timestamp": 1623400025.2152104,
 "version": "1.1",
 "status": "SUCCEEDED",
 "bundle_type": "SERVICE",
 "issuer": "https://build.staircaseapi.com/infra-builder"
 }
 },
 "artifacts_url": "https://builder-api-dev-codebuilddevbucket-kkwqngshvjap.s3.amazonaws.com/build-main/build/7ac245b7-2f93-4850-8e86-abfdfd3b0a76/build.zip",
 "logs": []
 }
 }
 },
 "description": "200 response"
 }
 ],
 "parameters": [
 {
 "in": "path",
 "children": [
 {
 "name": "build_id",
 "description": "Unique build id which was returned when build was started",
 "type": "string",
 "required": true,
 "example": "",
 "default": ""
 }
 ]
 }
 ]
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Documentation` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `openapi_paths` | `object` | <!--source:api-specifications-->Open API paths definition.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/content/{product_name}/openapi/paths/{path}`

<!--source:api-specifications-->

#### Get Open API paths
<!--/source-->

`getOpenApiPath`

<!--source:api-specifications-->
Get Open API path definitions.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "openapi_paths": {
 "method": "get",
 "service_name": "Build",
 "base_path": "infra-builder",
 "env_domain": "template.staircaseapi.com",
 "path": "/builds/{build_id}",
 "sidebar_path": "/docs/DevOps/Ship/Build/get-build-status",
 "operation_id": null,
 "description": "**Retrieve Service Build Status**",
 "summary": "Get build status",
 "request_body": null,
 "responses": [
 {
 "response_code": "200",
 "content": {
 "application/json": {
 "schema": {
 "type": "object",
 "properties": {
 "build_id": {
 "type": "string",
 "description": "Unique build id which was returned when build was started",
 "format": "uuid"
 },
 "status": {
 "type": "string",
 "description": "Build status (IN_PROGRESS, FAILED, SUCCEEDED)"
 },
 "artifacts_url": {
 "type": "string",
 "format": "url",
 "description": "Artifact URL if build was successfully completed"
 },
 "logs": {
 "type": "array",
 "description": "Build Logs which can be used for build problem investigation",
 "items": {
 "type": "string"
 }
 },
 "metadata": {
 "type": "object",
 "description": "Metadata generated by build"
 }
 }
 },
 "example": {
 "build_id": "7ac245b7-2f93-4850-8e86-abfdfd3b0a76",
 "status": "SUCCEEDED",
 "metadata": {
 "service-assessor": {
 "id": "devops-code-assessor:e5dcb19e-b025-4255-a42f-7f501456703c",
 "timestamp": 1623399920.05132,
 "version": "1.0.0",
 "issuer": "https://build.staircaseapi.com/code-assessor",
 "status": "SUCCEEDED"
 },
 "service-code": {
 "id": "0da65dfd-9753-4bb4-8853-06e608979e73",
 "timestamp": 1623399796.747468,
 "version": "1.1",
 "status": "SUCCEEDED",
 "commit_hash": "c366156be0d8a39ce9a7bf85a5f5d5fc1a59ba4c",
 "issuer": "https://build.staircaseapi.com/code"
 },
 "service-builder": {
 "id": "7ac245b7-2f93-4850-8e86-abfdfd3b0a76",
 "timestamp": 1623400025.2152104,
 "version": "1.1",
 "status": "SUCCEEDED",
 "bundle_type": "SERVICE",
 "issuer": "https://build.staircaseapi.com/infra-builder"
 }
 },
 "artifacts_url": "https://builder-api-dev-codebuilddevbucket-kkwqngshvjap.s3.amazonaws.com/build-main/build/7ac245b7-2f93-4850-8e86-abfdfd3b0a76/build.zip",
 "logs": []
 }
 }
 },
 "description": "200 response"
 }
 ],
 "parameters": [
 {
 "in": "path",
 "children": [
 {
 "name": "build_id",
 "description": "Unique build id which was returned when build was started",
 "type": "string",
 "required": true,
 "example": "",
 "default": ""
 }
 ]
 }
 ]
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Documentation` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |
| `path` required | `string` path | `publishDocumentation` | <!--source:api-specifications-->Path which was specified as 'operationId' in api method definition in product swagger file.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `openapi_paths` | `object` | <!--source:api-specifications-->Open API paths definition.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/content/paths`

<!--source:api-specifications-->

#### List all Open API paths
<!--/source-->

`getContentPaths`

<!--source:api-specifications-->
Get all Open API path definitions.

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "products_paths": {
 "/builds": {
 "post": {
 "x-product-component": "Product",
 "x-product-endpoint": "Build Product",
 "x-product-sequence": 1,
 "tags": [
 "Build"
 ],
 "summary": "Create/Run service builder for services.",
 "description": "Build a deployable artifact for a product. The artifact must be provided via a URL. A callback will be sent to the URL specified in property.",
 "requestBody": {
 "description": "Run Specification",
 "content": {
 "application/json": {
 "schema": {
 "type": "object",
 "title": "Service Build Schema",
 "properties": {
 "bundle_id": {
 "type": "string",
 "format": "uuid",
 "description": "Usually a hash of the commit but can be any UUID."
 },
 "source_url": {
 "type": "string",
 "description": "URL to source code.",
 "format": "uri"
 },
 "callback_url": {
 "type": "string",
 "format": "uri",
 "default": "null",
 "description": "Callback URL where are you waiting for build status"
 }
 },
 "required": [
 "source_url"
 ],
 "example": {
 "source_url": "https://code-manager-dev-root.s3.amazonaws.com/service-builder-api/2f867413-2f16-4c73-86ec-3086c0d4a33c/source.zip"
 }
 },
 "example": {
 "source_url": "https://code-manager-dev-root.s3.amazonaws.com/service-builder-api/2f867413-2f16-4c73-86ec-3086c0d4a33c/source.zip"
 }
 }
 }
 },
 "responses": {
 "201": {
 "description": "Build created",
 "content": {
 "application/json": {
 "schema": {
 "type": "object",
 "properties": {
 "build_id": {
 "type": "string",
 "format": "uuid",
 "description": "Unique build_id which can be used for tracking build status. Usually it is a UUID."
 }
 },
 "example": {
 "build_id": "13bd5b51-1a41-4510-9baa-d7f7e24c89a3"
 }
 },
 "example": {
 "build_id": "13bd5b51-1a41-4510-9baa-d7f7e24c89a3"
 }
 }
 }
 }
 }
 }
 },
 "/builds/{build_id}": {
 "get": {
 "x-product-component": "Product",
 "x-product-endpoint": "Retrieve Product Build Status",
 "x-product-sequence": 2,
 "tags": [
 "Build"
 ],
 "summary": "Get build status",
 "description": "**Retrieve Service Build Status**\n",
 "parameters": [
 {
 "name": "build_id",
 "description": "Unique build id which was returned when build was started",
 "required": true,
 "in": "path",
 "schema": {
 "type": "string"
 }
 }
 ],
 "responses": {
 "200": {
 "description": "200 response",
 "content": {
 "application/json": {
 "schema": {
 "type": "object",
 "properties": {
 "build_id": {
 "type": "string",
 "description": "Unique build id which was returned when build was started",
 "format": "uuid"
 },
 "status": {
 "type": "string",
 "description": "Build status (IN_PROGRESS, FAILED, SUCCEEDED)"
 },
 "artifacts_url": {
 "type": "string",
 "format": "url",
 "description": "Artifact URL if build was successfully completed"
 },
 "logs": {
 "type": "array",
 "description": "Build Logs which can be used for build problem investigation",
 "items": {
 "type": "string"
 }
 },
 "metadata": {
 "type": "object",
 "description": "Metadata generated by build"
 }
 }
 },
 "example": {
 "build_id": "7ac245b7-2f93-4850-8e86-abfdfd3b0a76",
 "status": "SUCCEEDED",
 "metadata": {
 "service-assessor": {
 "id": "devops-code-assessor:e5dcb19e-b025-4255-a42f-7f501456703c",
 "timestamp": 1623399920.05132,
 "version": "1.0.0",
 "issuer": "https://build.staircaseapi.com/code-assessor",
 "status": "SUCCEEDED"
 },
 "service-code": {
 "id": "0da65dfd-9753-4bb4-8853-06e608979e73",
 "timestamp": 1623399796.747468,
 "version": "1.1",
 "status": "SUCCEEDED",
 "commit_hash": "c366156be0d8a39ce9a7bf85a5f5d5fc1a59ba4c",
 "issuer": "https://build.staircaseapi.com/code"
 },
 "service-builder": {
 "id": "7ac245b7-2f93-4850-8e86-abfdfd3b0a76",
 "timestamp": 1623400025.2152104,
 "version": "1.1",
 "status": "SUCCEEDED",
 "bundle_type": "SERVICE",
 "issuer": "https://build.staircaseapi.com/infra-builder"
 }
 },
 "artifacts_url": "https://builder-api-dev-codebuilddevbucket-kkwqngshvjap.s3.amazonaws.com/build-main/build/7ac245b7-2f93-4850-8e86-abfdfd3b0a76/build.zip"
 }
 }
 }
 }
 }
 }
 }
 }
}
```

<!--/source-->

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `products_paths` | `object` | <!--source:api-specifications-->Open all API paths definitions.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/collection/{product_name}`

<!--source:api-specifications-->

#### Get Postman Collection
<!--/source-->

`getPostmanCollection`

<!--source:api-specifications-->
Get Postman Collection.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "item": [
 {
 "id": "09b9a1ae-9fb4-4391-82b6-67fd6d244f01",
 "name": "builds",
 "item": [
 {
 "id": "888efd45-186c-4fb3-b1ed-573efd38340b",
 "name": "Retrieve Product Build Status",
 "request": {
 "name": "Retrieve Product Build Status",
 "description": {
 "content": "**Retrieve Service Build Status** retrieves metadata generated by the build.\n\n- Metadata is available only for builds that succeed (status==SUCCEEDED).\n- The *artifact_url* key in the response body contains the URL to the artifact that was built. This URL only supports the GET method and is valid for one hour. A new request to this endpoint will provide a new *artifact_url*.\n- The response to a GET request for artifact_url will contain headers describing the artifact metadata. Only header names that start with x-amz-meta-service- are considered service metadata.\n- Regardless of status response contains build execution logs\n",
 "type": "text/plain"
 },
 "url": {
 "path": [
 "builds",
 ":build_id"
 ],
 "host": [
 "{{baseUrl}}"
 ],
 "query": [],
 "variable": [
 {
 "disabled": false,
 "type": "any",
 "value": "<string>",
 "key": "build_id",
 "description": "(Required) Unique build id which was returned when build was started"
 }
 ]
 },
 "header": [
 {
 "disabled": false,
 "description": "(Required) API Key",
 "key": "x-api-key",
 "value": "<string>"
 }
 ],
 "method": "GET",
 "auth": null
 },
 "response": [
 {
 "id": "872b2b15-1fcf-48d5-bebd-950b1e4baccb",
 "name": "200 response",
 "originalRequest": {
 "url": {
 "path": [
 "builds",
 ":build_id"
 ],
 "host": [
 "{{baseUrl}}"
 ],
 "query": [],
 "variable": [
 {
 "type": "any",
 "key": "build_id"
 }
 ]
 },
 "header": [
 {
 "disabled": false,
 "description": "(Required) API Key",
 "key": "x-api-key",
 "value": "<string>"
 }
 ],
 "method": "GET",
 "body": {}
 },
 "status": "OK",
 "code": 200,
 "header": [
 {
 "key": "Content-Type",
 "value": "application/json"
 }
 ],
 "body": "",
 "cookie": [],
 "_postman_previewlanguage": "json"
 }
 ],
 "event": []
 }
 ],
 "event": []
 }
 ]
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Documentation` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `item` | `object[]` | <!--source:api-specifications-->List of postman items.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

<!--source:api-specifications-->

### Setup[new]
<!--/source-->

`PUT` `/integrations/datocms/credentials`

<!--source:api-specifications-->

#### Update DatoCMS Token[warning]
<!--/source-->

`updateDatoCMStoken`

<!--source:api-specifications-->
Update DatoCMS Token
<!--/source-->

<!--source:api-specifications-->
Update your DatoCMS connection

Every DatoCMS project comes with two API tokens by default: one is read-only, and the other gives full read-write permissions to the project.

! Note: Establishing connection Site requires only read-only token, but both variants acceptable.

You can find your DatoCMS Project's tokens at:

```
].admin.datocms.com/admin/access_tokens
```

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "token": "<redacted>"
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
201400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Example response

```
{
 "message": "Created"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Request body`application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `token` | `string` | <!--source:api-specifications-->DatoCMS token<!--/source--> |

##### Response `201``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Example response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message`required | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`PUT` `/integrations/writercom/credentials`

<!--source:api-specifications-->

#### Set Writer.com Credentials[warning]
<!--/source-->

`updateWriterComCredentials`

<!--source:api-specifications-->
Update Writer.com credentials
<!--/source-->

<!--source:api-specifications-->
Update your Writer.com connection

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "token": "<redacted>",
 "team_id": "23gdqae9013f7baf9f2025306e98283",
 "organization_id": "4saa3e9013f7baf9f20e256322283"
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
201400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Example response

```
{
 "message": "Created"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Request body`application/json`

<!--source:api-specifications-->
3 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `token` | `string` | <!--source:api-specifications-->Writer.com token<!--/source--> |
| `team_id` | `string` | <!--source:api-specifications-->Writer.com team_id<!--/source--> |
| `organization_id` | `string` | <!--source:api-specifications-->Writer.com organization_id<!--/source--> |

##### Response `201``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Example response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message`required | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

<!--source:api-specifications-->

### Integration: DatoCMS[new]
<!--/source-->

`GET` `/integrations/datocms/fields/{field_id}`

<!--source:api-specifications-->

#### Retrieve DatoCMS Field
<!--/source-->

`retrieveDatoCMSField`

<!--source:api-specifications-->
Retrieve DatoCMS Field

! Note: You can find all possible DatoCMS field types here

! Required: You should set up your token first

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "type": "field",
 "id": "124",
 "attributes": {
 "label": "Title",
 "field_type": "string",
 "localized": "true",
 "default_value": {
 "en": "A default value",
 "it": "Un valore di default"
 },
 "api_key": "title",
 "hint": "This field will be used as post title",
 "validators": {
 "required": {}
 },
 "appearance": {
 "editor": "single_line",
 "parameters": {
 "heading": false
 },
 "addons": [
 {
 "id": "1555",
 "field_extension": "lorem_ipsum",
 "parameters": {}
 }
 ]
 },
 "position": 1
 },
 "relationships": {
 "item_type": {
 "data": {
 "type": "item_type",
 "id": "53311"
 }
 },
 "fieldset": {
 "data": null
 }
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `field_id` required | `string` path | `4934786` | <!--source:api-specifications-->DatoCMS Field ID or Field api_key<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `id`required | `string` | <!--source:api-specifications-->DatoCMS field ID or api_key<!--/source--> |
| `type`required | `string` | <!--source:api-specifications-->DatoCMS field type<!--/source--> |
| `relationships` | `object` | <!--source:api-specifications-->DatoCMS field relationships<!--/source--> |
| `attributes` | `object` | <!--source:api-specifications-->DatoCMS field attributes<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/integrations/datocms/models`

<!--source:api-specifications-->

#### Retrieve DatoCMS Models
<!--/source-->

`retrieveDatoCMSModels`

<!--source:api-specifications-->
Retrieve DatoCMS Models

Returns an array of DatoCMS model objects.

! Note: You can learn more about DatoCMS models here

! Required: You should set up your token first

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
[
 {
 "type": "item_type",
 "id": "124",
 "attributes": {
 "name": "Blog post",
 "api_key": "post",
 "collection_appearance": "compact",
 "singleton": false,
 "all_locales_required": false,
 "sortable": true,
 "modular_block": false,
 "draft_mode_active": false,
 "tree": false,
 "ordering_direction": null,
 "ordering_meta": "created_at",
 "has_singleton_item": false,
 "hint": "Blog posts will be shown in our website under the Blog section"
 },
 "relationships": {
 "singleton_item": {
 "data": null
 },
 "fields": {
 "data": [
 {
 "type": "field",
 "id": "3535555"
 }
 ]
 },
 "fieldsets": {
 "data": [
 {
 "type": "fieldset",
 "id": "23555"
 }
 ]
 },
 "title_field": {
 "data": null
 },
 "image_preview_field": {
 "data": null
 },
 "excerpt_field": {
 "data": null
 },
 "ordering_field": {
 "data": null
 },
 "workflow": {
 "data": null
 }
 }
 }
]
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Response `200``application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `id`required | `string` | <!--source:api-specifications-->DatoCMS model ID or api_key<!--/source--> |
| `type`required | `string` | <!--source:api-specifications-->DatoCMS model type<!--/source--> |
| `relationships` | `object` | <!--source:api-specifications-->DatoCMS model relationships<!--/source--> |
| `attributes` | `object` | <!--source:api-specifications-->DatoCMS model attributes<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/integrations/datocms/models/{model_id}`

<!--source:api-specifications-->

#### Retrieve DatoCMS Model
<!--/source-->

`retrieveDatoCMSModel`

<!--source:api-specifications-->
Retrieve DatoCMS Model

Returns DatoCMS model object.

! Note: You can learn more about DatoCMS models here

! Required: You should set up your token first

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "type": "item_type",
 "id": "124",
 "attributes": {
 "name": "Blog post",
 "api_key": "post",
 "collection_appearance": "compact",
 "singleton": false,
 "all_locales_required": false,
 "sortable": true,
 "modular_block": false,
 "draft_mode_active": false,
 "tree": false,
 "ordering_direction": null,
 "ordering_meta": "created_at",
 "has_singleton_item": false,
 "hint": "Blog posts will be shown in our website under the Blog section"
 },
 "relationships": {
 "singleton_item": {
 "data": null
 },
 "fields": {
 "data": [
 {
 "type": "field",
 "id": "3535555"
 }
 ]
 },
 "fieldsets": {
 "data": [
 {
 "type": "fieldset",
 "id": "23555"
 }
 ]
 },
 "title_field": {
 "data": null
 },
 "image_preview_field": {
 "data": null
 },
 "excerpt_field": {
 "data": null
 },
 "ordering_field": {
 "data": null
 },
 "workflow": {
 "data": null
 }
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `model_id` required | `string` path | `1153125` | <!--source:api-specifications-->DatoCMS Model ID or Model api_key<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `id`required | `string` | <!--source:api-specifications-->DatoCMS model ID or api_key<!--/source--> |
| `type`required | `string` | <!--source:api-specifications-->DatoCMS model type<!--/source--> |
| `relationships` | `object` | <!--source:api-specifications-->DatoCMS model relationships<!--/source--> |
| `attributes` | `object` | <!--source:api-specifications-->DatoCMS model attributes<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/integrations/datocms/models/{model_id}/fields`

<!--source:api-specifications-->

#### Retrieve DatoCMS Model Fields
<!--/source-->

`retrieveDatoCMSModelFields`

<!--source:api-specifications-->
Retrieve DatoCMS Model Fields

Returns an array of DatoCMS field objects.

! Note: You can find all possible DatoCMS field types here

! Required: You should set up your token first

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
[
 {
 "type": "field",
 "id": "124",
 "attributes": {
 "label": "Title",
 "field_type": "string",
 "localized": "true",
 "default_value": {
 "en": "A default value",
 "it": "Un valore di default"
 },
 "api_key": "title",
 "hint": "This field will be used as post title",
 "validators": {
 "required": {}
 },
 "appearance": {
 "editor": "single_line",
 "parameters": {
 "heading": false
 },
 "addons": [
 {
 "id": "1555",
 "field_extension": "lorem_ipsum",
 "parameters": {}
 }
 ]
 },
 "position": 1
 },
 "relationships": {
 "item_type": {
 "data": {
 "type": "item_type",
 "id": "53311"
 }
 },
 "fieldset": {
 "data": null
 }
 }
 }
]
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `model_id` required | `string` path | `1153125` | <!--source:api-specifications-->DatoCMS Model ID or Model api_key<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `id`required | `string` | <!--source:api-specifications-->DatoCMS field ID or api_key<!--/source--> |
| `type`required | `string` | <!--source:api-specifications-->DatoCMS field type<!--/source--> |
| `relationships` | `object` | <!--source:api-specifications-->DatoCMS field relationships<!--/source--> |
| `attributes` | `object` | <!--source:api-specifications-->DatoCMS field attributes<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/integrations/datocms/page-details/{page_id}`

<!--source:api-specifications-->

#### Retrieve page details from DatoCMS
<!--/source-->

`retrieveDatoCMSPageDetails`

<!--source:api-specifications-->
Retrieve page details from DatoCMS

! Required: You should set up your token first

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "type": "field",
 "id": "124",
 "attributes": {
 "label": "Title",
 "field_type": "string",
 "localized": "true",
 "default_value": {
 "en": "A default value",
 "it": "Un valore di default"
 },
 "api_key": "title",
 "hint": "This field will be used as post title",
 "validators": {
 "required": {}
 },
 "appearance": {
 "editor": "single_line",
 "parameters": {
 "heading": false
 },
 "addons": [
 {
 "id": "1555",
 "field_extension": "lorem_ipsum",
 "parameters": {}
 }
 ]
 },
 "position": 1
 },
 "relationships": {
 "item_type": {
 "data": {
 "type": "item_type",
 "id": "53311"
 }
 },
 "fieldset": {
 "data": null
 }
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `page_id` required | `—` path | `pricing-page` | <!--source:api-specifications-->Page ID<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `id`required | `string` | <!--source:api-specifications-->DatoCMS field ID or api_key<!--/source--> |
| `type`required | `string` | <!--source:api-specifications-->DatoCMS field type<!--/source--> |
| `relationships` | `object` | <!--source:api-specifications-->DatoCMS field relationships<!--/source--> |
| `attributes` | `object` | <!--source:api-specifications-->DatoCMS field attributes<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/integrations/datocms/records`

<!--source:api-specifications-->

#### Retrieve DatoCMS Records
<!--/source-->

`retrieveDatoCMSRecords`

<!--source:api-specifications-->
Retrieve DatoCMS Records

Returns an array of DatoCMS record objects.

! Note: You can learn more about DatoCMS records here

! Required: You should set up your token first

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
[
 {
 "type": "item",
 "id": "124",
 "attributes": {
 "title": "My first blog post!",
 "content": "Lorem ipsum dolor sit amet...",
 "category": "24"
 },
 "relationships": {
 "creator": {
 "data": [
 {
 "type": "account",
 "id": "3535555"
 }
 ]
 },
 "item_type": {
 "data": [
 {
 "type": "item_type",
 "id": "23555"
 }
 ]
 }
 },
 "meta": {
 "created_at": "2020-04-21T07:57:11.124Z",
 "updated_at": "2020-04-21T07:57:11.124Z",
 "published_at": "2020-04-21T07:57:11.124Z",
 "first_published_at": "2020-04-21T07:57:11.124Z",
 "publication_scheduled_at": "2020-04-21T07:57:11.124Z",
 "unpublishing_scheduled_at": "2020-04-21T07:57:11.124Z",
 "status": "draft",
 "is_current_version_valid": true,
 "is_published_version_valid": true,
 "current_version": "4234",
 "stage": ""
 }
 }
]
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
10
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `nested` | `string` query | `true` | <!--source:api-specifications-->For Modular Content fields and Structured Text fields. If set, returns full payload for nested blocks instead of IDs<!--/source--> |
| `filter[ids]` | `string` query | `124214,21421` | <!--source:api-specifications-->Record (or block record) IDs to fetch, comma separated. If you use this filter, you must not use filter[type] or filter[fields]<!--/source--> |
| `filter[type]` | `string` query | `item` | <!--source:api-specifications-->Record (or block record) IDs to fetch, comma separated. If you use this filter, you must not use filter[type] or filter[fields]<!--/source--> |
| `filter[query]` | `string` query | `search query` | <!--source:api-specifications-->Textual query to match. You must not use filter[ids]. If locale is defined, search within that locale. Otherwise, environment's main locale will be used.<!--/source--> |
| `filter[fields]` | `string` query | `field` | <!--source:api-specifications-->Same as GraphQL API records filters. Use snake_case for fields names. If locale is defined, search within that locale. Otherwise, environment's main locale will be used.<!--/source--> |
| `locale` | `string` query | `en` | <!--source:api-specifications-->When filter[query] or field[fields] is defined, filter by this locale. Default: environment's main locale<!--/source--> |
| `order_by` | `string` query | `id_DESC` | <!--source:api-specifications-->Fields used to order results. You must specify also filter[type] with one element only to be able use this option. Format: <field_name>_<(ASC|DESC)>, where <field_name> can be either the API key of a model's field, or one of the following meta columns: id, _updated_at, _created_at, _status, _published_at, _first_published_at, _publication_scheduled_at, _unpublishing_scheduled_at, _is_valid, position (only for sortable models). You can pass multiple comma separated rules.<!--/source--> |
| `version` | `string` query | `current` | <!--source:api-specifications-->Whether you want the currently published versions (published, default) of your records, or the latest available (current)<!--/source--> |
| `page[offset]` | `string` query | `10` | <!--source:api-specifications-->Index of first record to fetch (defaults to 0)<!--/source--> |
| `page[limit]` | `string` query | `50` | <!--source:api-specifications-->Number of records to fetch (defaults to 30, maximum is 500)<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
5 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `id`required | `string` | <!--source:api-specifications-->DatoCMS record ID or api_key<!--/source--> |
| `type`required | `string` | <!--source:api-specifications-->DatoCMS record type<!--/source--> |
| `relationships` | `object` | <!--source:api-specifications-->DatoCMS record relationships<!--/source--> |
| `attributes` | `object` | <!--source:api-specifications-->DatoCMS record attributes<!--/source--> |
| `meta` | `object` | <!--source:api-specifications-->DatoCMS record metadata<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/integrations/datocms/records/{record_id}`

<!--source:api-specifications-->

#### Retrieve DatoCMS Record
<!--/source-->

`retrieveDatoCMSRecord`

<!--source:api-specifications-->
Retrieve DatoCMS Record

Returns DatoCMS record objects.

! Note: You can learn more about DatoCMS records here

! Required: You should set up your token first

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "type": "item",
 "id": "124",
 "attributes": {
 "title": "My first blog post!",
 "content": "Lorem ipsum dolor sit amet...",
 "category": "24"
 },
 "relationships": {
 "creator": {
 "data": [
 {
 "type": "account",
 "id": "3535555"
 }
 ]
 },
 "item_type": {
 "data": [
 {
 "type": "item_type",
 "id": "23555"
 }
 ]
 }
 },
 "meta": {
 "created_at": "2020-04-21T07:57:11.124Z",
 "updated_at": "2020-04-21T07:57:11.124Z",
 "published_at": "2020-04-21T07:57:11.124Z",
 "first_published_at": "2020-04-21T07:57:11.124Z",
 "publication_scheduled_at": "2020-04-21T07:57:11.124Z",
 "unpublishing_scheduled_at": "2020-04-21T07:57:11.124Z",
 "status": "draft",
 "is_current_version_valid": true,
 "is_published_version_valid": true,
 "current_version": "4234",
 "stage": ""
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
3
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `record_id` required | `string` path | `4934786` | <!--source:api-specifications-->DatoCMS Record ID or Record api_key<!--/source--> |
| `nested` | `string` query | `true` | <!--source:api-specifications-->For Modular Content fields and Structured Text fields. If set, returns full payload for nested blocks instead of IDs<!--/source--> |
| `version` | `string` query | `current` | <!--source:api-specifications-->Whether you want the currently published versions (published, default) of your records, or the latest available (current)<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
5 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `id`required | `string` | <!--source:api-specifications-->DatoCMS record ID or api_key<!--/source--> |
| `type`required | `string` | <!--source:api-specifications-->DatoCMS record type<!--/source--> |
| `relationships` | `object` | <!--source:api-specifications-->DatoCMS record relationships<!--/source--> |
| `attributes` | `object` | <!--source:api-specifications-->DatoCMS record attributes<!--/source--> |
| `meta` | `object` | <!--source:api-specifications-->DatoCMS record metadata<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/integrations/datocms/records/{record_id}/apply-glossary`

<!--source:api-specifications-->

#### Apply Writer.com glossary to DatoCMS Record
<!--/source-->

`applyGlossaryToDatoCMSRecord`

<!--source:api-specifications-->
Apply Writer.com glossary to DatoCMS Record

It will apply Writer.com values to the record structure

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "type": "item",
 "id": "124",
 "attributes": {
 "title": "My first blog post!",
 "content": "Lorem ipsum dolor sit amet...",
 "category": "24"
 },
 "relationships": {
 "creator": {
 "data": [
 {
 "type": "account",
 "id": "3535555"
 }
 ]
 },
 "item_type": {
 "data": [
 {
 "type": "item_type",
 "id": "23555"
 }
 ]
 }
 },
 "meta": {
 "created_at": "2020-04-21T07:57:11.124Z",
 "updated_at": "2020-04-21T07:57:11.124Z",
 "published_at": "2020-04-21T07:57:11.124Z",
 "first_published_at": "2020-04-21T07:57:11.124Z",
 "publication_scheduled_at": "2020-04-21T07:57:11.124Z",
 "unpublishing_scheduled_at": "2020-04-21T07:57:11.124Z",
 "status": "draft",
 "is_current_version_valid": true,
 "is_published_version_valid": true,
 "current_version": "4234",
 "stage": ""
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `record_id` required | `string` path | `4934786` | <!--source:api-specifications-->DatoCMS Record ID or Record api_key<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
5 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `id`required | `string` | <!--source:api-specifications-->DatoCMS record ID or api_key<!--/source--> |
| `type`required | `string` | <!--source:api-specifications-->DatoCMS record type<!--/source--> |
| `relationships` | `object` | <!--source:api-specifications-->DatoCMS record relationships<!--/source--> |
| `attributes` | `object` | <!--source:api-specifications-->DatoCMS record attributes<!--/source--> |
| `meta` | `object` | <!--source:api-specifications-->DatoCMS record metadata<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/integrations/datocms/uploads`

<!--source:api-specifications-->

#### Retrieve DatoCMS Uploads
<!--/source-->

`retrieveDatoCMSUploads`

<!--source:api-specifications-->
Retrieve DatoCMS Uploads

Returns an array of DatoCMS upload objects.

! Note: You can learn more about DatoCMS uploads here

! Required: You should set up your token first

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
[
 {
 "type": "upload",
 "id": "124",
 "attributes": {
 "size": "444",
 "width": "30",
 "height": 30,
 "path": "/45/1496845848-digital-cats.jpg",
 "basename": "digital-cats",
 "filename": "digital-cats.jpg",
 "url": "https://www.datocms-assets.com/45/1496845848-digital-cats.jpg",
 "format": "Mark Smith",
 "author": "Mark Smith",
 "copyright": "2020 Staircase",
 "notes": "Nyan the cat",
 "md5": "873c296d0f2b7ee569f2d7ddaebc0d33",
 "duration": 62,
 "frame_rate": 30,
 "blurhash": "LEHV6nWB2yk8pyo0adR*.7kCMdnj",
 "mux_playback_id": "a1B2c3D4e5F6g7H8i9",
 "mux_mp4_highest_res": "high",
 "default_field_metadata": {
 "en": {
 "title": "this is the default title",
 "alt": "this is the default alternate text",
 "custom_data": {
 "foo": "bar"
 },
 "focal_point": {
 "x": "0.5,",
 "y": 0.5
 }
 }
 },
 "is_image": true,
 "created_at": "2020-04-21T07:57:11.124Z",
 "updated_at": "2020-04-21T07:57:11.124Z",
 "mime_type": "image/jpeg",
 "tags": [
 "cats"
 ],
 "smart_tags": [
 "staircase_cats"
 ],
 "exit_info": {
 "iso": 10000,
 "model": "ILCE-7",
 "flash_mode": 16,
 "focal_length": 35,
 "exposure_time": 0.0166667
 },
 "colors": [
 {
 "red": 206,
 "green": 203,
 "blue": 167,
 "alpha": 255
 },
 {
 "red": 158,
 "green": 163,
 "blue": 93,
 "alpha": 235
 }
 ]
 },
 "relationships": {
 "creator": {
 "data": {
 "type": "account",
 "id": "53311"
 }
 }
 }
 }
]
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
7
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `filter[ids]` | `string` query | `124214,21421` | <!--source:api-specifications-->Record (or block record) IDs to fetch, comma separated. If you use this filter, you must not use filter[type] or filter[fields]<!--/source--> |
| `filter[query]` | `string` query | `search query` | <!--source:api-specifications-->Textual query to match. You must not use filter[ids]. If locale is defined, search within that locale. Otherwise, environment's main locale will be used.<!--/source--> |
| `filter[fields]` | `string` query | `field` | <!--source:api-specifications-->Same as GraphQL API records filters. Use snake_case for fields names. If locale is defined, search within that locale. Otherwise, environment's main locale will be used.<!--/source--> |
| `locale` | `string` query | `en` | <!--source:api-specifications-->When filter[query] or field[fields] is defined, filter by this locale. Default: environment's main locale<!--/source--> |
| `order_by` | `string` query | `id_DESC` | <!--source:api-specifications-->Fields used to order results. Format: <field_name>_<(ASC|DESC)>. You can pass multiple comma separated rules.<!--/source--> |
| `page[offset]` | `string` query | `10` | <!--source:api-specifications-->Index of first record to fetch (defaults to 0)<!--/source--> |
| `page[limit]` | `string` query | `50` | <!--source:api-specifications-->Number of records to fetch (defaults to 30, maximum is 500)<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `id`required | `string` | <!--source:api-specifications-->DatoCMS upload ID or api_key<!--/source--> |
| `type`required | `string` | <!--source:api-specifications-->DatoCMS upload type<!--/source--> |
| `relationships` | `object` | <!--source:api-specifications-->DatoCMS upload relationships<!--/source--> |
| `attributes` | `object` | <!--source:api-specifications-->DatoCMS upload attributes<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/integrations/datocms/uploads/{upload_id}`

<!--source:api-specifications-->

#### Retrieve DatoCMS Upload
<!--/source-->

`retrieveDatoCMSUpload`

<!--source:api-specifications-->
Retrieve DatoCMS Upload

Returns DatoCMS upload object.

! Note: You can learn more about DatoCMS uploads here

! Required: You should set up your token first

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "type": "upload",
 "id": "124",
 "attributes": {
 "size": "444",
 "width": "30",
 "height": 30,
 "path": "/45/1496845848-digital-cats.jpg",
 "basename": "digital-cats",
 "filename": "digital-cats.jpg",
 "url": "https://www.datocms-assets.com/45/1496845848-digital-cats.jpg",
 "format": "Mark Smith",
 "author": "Mark Smith",
 "copyright": "2020 Staircase",
 "notes": "Nyan the cat",
 "md5": "873c296d0f2b7ee569f2d7ddaebc0d33",
 "duration": 62,
 "frame_rate": 30,
 "blurhash": "LEHV6nWB2yk8pyo0adR*.7kCMdnj",
 "mux_playback_id": "a1B2c3D4e5F6g7H8i9",
 "mux_mp4_highest_res": "high",
 "default_field_metadata": {
 "en": {
 "title": "this is the default title",
 "alt": "this is the default alternate text",
 "custom_data": {
 "foo": "bar"
 },
 "focal_point": {
 "x": "0.5,",
 "y": 0.5
 }
 }
 },
 "is_image": true,
 "created_at": "2020-04-21T07:57:11.124Z",
 "updated_at": "2020-04-21T07:57:11.124Z",
 "mime_type": "image/jpeg",
 "tags": [
 "cats"
 ],
 "smart_tags": [
 "staircase_cats"
 ],
 "exit_info": {
 "iso": 10000,
 "model": "ILCE-7",
 "flash_mode": 16,
 "focal_length": 35,
 "exposure_time": 0.0166667
 },
 "colors": [
 {
 "red": 206,
 "green": 203,
 "blue": 167,
 "alpha": 255
 },
 {
 "red": 158,
 "green": 163,
 "blue": 93,
 "alpha": 235
 }
 ]
 },
 "relationships": {
 "creator": {
 "data": {
 "type": "account",
 "id": "53311"
 }
 }
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `upload_id` required | `string` path | `4934786` | <!--source:api-specifications-->DatoCMS Upload ID or Upload api_key<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `id`required | `string` | <!--source:api-specifications-->DatoCMS upload ID or api_key<!--/source--> |
| `type`required | `string` | <!--source:api-specifications-->DatoCMS upload type<!--/source--> |
| `relationships` | `object` | <!--source:api-specifications-->DatoCMS upload relationships<!--/source--> |
| `attributes` | `object` | <!--source:api-specifications-->DatoCMS upload attributes<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

<!--source:api-specifications-->

### Integration: Writer.com[new]
<!--/source-->

`GET` `/integrations/writercom/snippets`

<!--source:api-specifications-->

#### Retrieve Writer.com Snippets
<!--/source-->

`retrieveWriterComSnippets`

<!--source:api-specifications-->
Retrieve Writer.com Snippets

Returns an array of Writer.com snippet objects.

! Required: You should set up your credentials first

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
[
 {}
]
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
7
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `shortcut` | `string` query | `string` | <!--source:api-specifications-->Shortcut<!--/source--> |
| `search` | `string` query | `search string` | <!--source:api-specifications-->Search<!--/source--> |
| `tags` | `string[]` query | — | <!--source:api-specifications-->Tags<!--/source--> |
| `sortField` | `string` query | `type` | <!--source:api-specifications-->Sort Field<!--/source--> |
| `sortOrder` | `string` query | `asc` | <!--source:api-specifications-->Sort Order<!--/source--> |
| `offset` | `integer` query | `5` | <!--source:api-specifications-->Offset<!--/source--> |
| `limit` | `integer` query | `20` | <!--source:api-specifications-->Limit<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`200``403`

`GET` `/integrations/writercom/terms`

<!--source:api-specifications-->

#### Retrieve Writer.com Terms
<!--/source-->

`retrieveWriterComTerms`

<!--source:api-specifications-->
Retrieve Writer.com Terms

Returns an array of Writer.com terms objects.

! Required: You should set up your credentials first

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
[
 {}
]
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
8
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `type` | `string` query | `approved` | <!--source:api-specifications-->Type<!--/source--> |
| `term` | `string` query | `term` | <!--source:api-specifications-->Term<!--/source--> |
| `Part of speech` | `string` query | `type` | <!--source:api-specifications-->Part of speech<!--/source--> |
| `tags` | `string[]` query | — | <!--source:api-specifications-->Tags<!--/source--> |
| `sortField` | `string` query | `type` | <!--source:api-specifications-->Sort Field<!--/source--> |
| `sortOrder` | `string` query | `asc` | <!--source:api-specifications-->Sort Order<!--/source--> |
| `offset` | `integer` query | `5` | <!--source:api-specifications-->Offset<!--/source--> |
| `limit` | `integer` query | `20` | <!--source:api-specifications-->Limit<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`200``403`

<!--source:api-specifications-->

### App Configurations[new]
<!--/source-->

`PUT` `/ordered-flows`

<!--source:api-specifications-->

#### Register Configuration[updated]
<!--/source-->

`registerAppConfiguration`

<!--source:api-specifications-->
Register Configuration
<!--/source-->

<!--source:api-specifications-->
Part of Site product, component name: Site-App-Flows registered on `marketplace.staircaseapi.com`.

#### Update Or Add Flow

Enables you to glue the Console applications into a standalone application or a flow of applications.

##### Specification

The Site Flow Configuration is a flow specification designed to define the structure of a web application's layout. By using Site Flows, you can dynamically configure the layout of the application, including authentication settings, appearance of various layout elements, and the sequence of apps that appear in the main layout.

Show the rest The flexibility provided by the endpoint allows developers to quickly update the application's appearance and functionality without needing to modify the underlying code.

##### Layout types

| Configuration key | Layout Element | Description |
| --- | --- | --- |
| `authentication` | Authentication | Defines whether authentication is enabled or disabled for the application. |
| `left_sidebar` | Left Sidebar | Represents the settings and appearance of the left sidebar in the layout. |
| `right_sidebar` | Right Sidebar | Represents the settings and appearance of the right sidebar in the layout. |
| `header` | Header | Represents the settings and appearance of the header in the layout. |
| `hero` | Hero | Represents the settings and appearance of the hero in the layout. |
| `footer` | Footer | Represents the settings and appearance of the footer in the layout. |
| `main` | Main | Represents the settings and appearance of the main layout, which can be either a sequence of apps or a standalone app. |
| `favicon` | Favicon | A symbol or graphic associated with a website. In a typical browser stands right before the tab title. |
| `layout` | Layout | Represents the settings and appearance of the layout. |

##### Main Layout

###### Rendering

Main layout can be rendered in two different ways, and is defined via `rendering_type` field under `main` layout configuration.

| Rendering Type | Description |
| --- | --- |
| `flow` | Allows defining an interactive set of app configurations called a `flow`. |
| `list` | Allows having unordered list of app configurations. Except for the default (first) screen. |

##### Window titling

The default title of the browser window must be defined in `main` layout configuration. However, it can be overwritten by optionally configured title of an individual app configurations.

#### Analytics

The analytics settings can be defined in the flow configuration along with layout configuration.

Analytics configuration resides under `analytics` key in the flow configuration.

List of partners which analytics can be enabled for a site:

| Partner | Configuration key | Description | Value Example |
| --- | --- | --- | --- |
| Google Analytics | `google_analytics_tag` | Google Analytics tag can be retrieved from Google Analytics. | `G-A1BCD2EF3H` |
| Google Analytics | `google_analytics_server_url` | Google Analytics Server URL. Can be retrived from Google Analytics Server Side |  |
| Mouseflow | `mouseflow_project_identifier` | Mouseflow can be enabled by providing an identifier retrieved from the project. | `0710f46a-9441-11ee-8acf-6ae56c4923a6` |
| GA Tracking | `google_analytics_tracking_parameters` | Google Analytics tracking parameters can be enabled by providing a list of parameters. | `["utm_campaign","guid"]` |
| Facebook tracking | `facebook_pixel_id` | ID of Facebook tracing pixel | `["utm_campaign","guid"]` |
| Facebook tracking | `facebook_pixel_domain_verification` | facebook-domain-verification content for meta tag in head | `["utm_campaign","guid"]` |
| Site Advertisement | `advertiser_correlation_key` | Site Advertisement can be enabled by providing a correlation key. `utm_source` is the only allowed value. | `e0e44570-6666-0001-000a-000a00aa0a0a` |
| **Google Tag Manager ** | `google_tag_manager_id` | Google Tag Manager ID can be retrieved from Google Tag Manager. | `GTM-XXXXXX` |

##### GA Tracking

```
{
 "analytics": {
 "google_analytics_tracking_parameters": ["utm_campaign", "guid"]
 }
}
```

When the user navigates to ``, Site will send a `staircase_page_view` event to Google Analytics with the following parameters:

```
{
 "utm_campaign": "email",
 "guid": "98903487222"
}
```

##### Site Advertisement

```
{
 "analytics": {
 "advertiser_correlation_key": "utm_source"
 }
}
```

Defines the query parameter to look up advertiser's information at. When user visit ``, Site will perform Persist Advertiser Data with `utm_source`'s value as an `advertiser_id`. The data will be collected from query parameters and passed on for the further translation.

##### Consent

Cookie consent is automatically enabled for any site that has analytics enabled. It is fully managed by the Site product and does not require any additional configuration. However, it can be customized with the consent configuration under `cookie_consent` key.

###### Cookie Consent Configuration Example

```
{
 ...
 "analytics": {
 "google_analytics_tag": "G-9TJJ8RPE4H"
 },
 "cookie_consent": {
 "popup": {
 "title": "Got time for cookies?",
 "button_ok": "Sure"
 }
 }
}
```

Review the schema of `cookie_consent` for more customization options.

#### Error Pages

| Error page | Description |
| --- | --- |
| forbidden | Access Denied: The user's IP address is not from the United States. |

Error page content can include full HTML markup, including CSS and JavaScript. Avoid bloating the page with unnecessary resources, as it will affect the page load time.

Note: the Site product restricts access to visitors with IP addresses from the United States only. Traffic from IP addresses outside the U.S. is not permitted.

##### Example

```
{
 ...
 "layout_configuration": { ... },
 "analytics": { ... },
 "error_pages": {
 "forbidden": {
 "page_content": "<!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>Access Restricted</title><style>body{font-family:Arial,sans-serif;background-color:#f4f4f4;text-align:center;padding:50px}.container{background-color:#fff;margin:auto;width:60%;padding:20px;box-shadow:0 4px 8px rgba(0,0,0,.1)}h1{color:#333}p{color:#666}a{color:#007bff;text-decoration:none}a:hover{text-decoration:underline}</style></head><body><div class=\"container\"><h1>Access Restricted</h1><p>Sorry, this content is not available in your region.</p><p>Your IP address has been identified as not originating from the United States. For compliance reasons, we cannot grant access to users outside this region.</p><p>If you believe you have received this message in error, please contact support atsupport@example.com.</p></div></body></html>"
 }
 }
}
```

##### (IMPORTANT) Custom Domains

When you change `error_pages` in the Site configuration, remember to sync the Site deployments.

- Register Configuration with `error_pages` configuration.
- Deploy Configuration to the distribution network.
- Synchronize custom Site.

#### Open Graph Protocol

Site provides a way to define OGP tags inside the Site configuration. We follow for the most part with slight modifications. Namely:

- `og:type` can only be set to `website` as is required.
- `og:description` is a required parameter.
- `og:locale` can only be set to `en_US` and is required
- `og:site_name` is required for ANY website.

In the original OGP these fields are optional. For a configuration example navigate to a request payload example named "Open Graph Tags".

##### Best Practices for OGP Images

- Aspect Ratio: The most widely recommended aspect ratio for OG images is 1.91:1. This ratio is optimal for platforms like Facebook, LinkedIn, and Twitter.
- Dimensions:
- Minimum Size: At minimum, your image should be 600 x 315 pixels (width x height). However, this is quite small and might not look great on high-resolution displays.
- Optimal Size: A more commonly recommended size is 1200 x 630 pixels. This size tends to work well on most social networks and provides a good balance between file size and image quality.
- Maximum Size: For some platforms like Facebook, the maximum image size can be up to 4096 x 4096 pixels, but such large images are rarely necessary and can increase page load times.
- File Size: Keep an eye on the image file size. It's generally recommended to keep it under 300 KB to ensure fast loading times, as large images can slow down your page's performance.
- File Type: Use JPEG for photographic images to save bandwidth, or PNG for images with text, logos, or simple graphics where clarity is important.

#### Path Mappings

Path mappings can be defined in the flow configuration along with layout configuration.

Path mappings allow you to define a set of rules that will be applied to the behavior of the Site when the certain URL path is provided. If the URL path matches the rule, the user will be redirected to the specified URL path. Request URL attributes such as query parameters will be preserved, but are not allowed to be defined in source path.

Note: Requests without `Host` header provided will not be eligible for a proper redirect response. As those requests will be considered malicious.

Path mappings configuration resides under `path_mapping` key in the flow configuration.

##### Examples

The redirect response example (the actual response may vary):

```
HTTP/2 302
server: CloudFront
date: Wed, 19 Jul 2023 04:21:00 GMT
content-length: 75
cache-control: public, max-age=86400, immutable
location: 

* Connection #0 to host staircase.co left intact
<!DOCTYPE html><html><body><p>You are being redirected...</p></body></html>
```

Take a closer look at `Cache-Control`. The maximum caching age value is set by the server and cannot be changed. The server will direct the viewer to cache the response for 24 hours.

##### Validation rules

For the URL path:

- Must not contain leading or trailing slashes. E.g., `/about-us/` must be corrected to `about-us`.
- Must be already URL encoded. E.g., `about us` must be corrected to `about%20us`.
- Must not contain anything other than alphanumeric characters, forward slash, period, and dash. It should match `^[a-z0-9]+([./-][a-z0-9]+)*$` regular expression.
- Must not contain query parameters. E.g., `about-us?utm_source=google` must be corrected to `about-us`.

For the complete URL:

- Must contain the `URL` schema. E.g., `example.staircase.co` must be corrected to ``.
- Must not contain query parameters. E.g., `must be corrected to`.
- Must not contain fragment identifiers. E.g., `must be corrected to`.

##### Use cases

##### Internal redirects

Redirect to a different URL on the same domain name.

###### Problem statement

We need to redirect all requests from the old pricing.html page to the new pricing page located at a different URL path, ensuring this redirection is permanent.

###### Configuration

```
{
 ...
 "layout_configuration": { ... },
 "analytics": { ... },
 "path_mappings": [
 {
 "from_path": "pricing.html",
 "to_path": "pricing"
 },
 {
 "from_path": "legal-terms.html",
 "to_path": "legal"
 }
 ]
}
```

We have added a new path mapping rule to the flow configuration, which will redirect all requests from `pricing.html` to `pricing` path.

##### External redirects

Redirect to a different URL on a different domain name.

###### Problem statement

We would like to move part of the existing application, to a completely new site configuration, under the different domain name. It's currently hosted on `and we would like to move it to`.

###### Configuration

```
{
 ...
 "layout_configuration": { ... },
 "analytics": { ... },
 "path_mappings": [
 {
 "from_path": "exchange",
 "to_path": ""
 }
 ]
}
```

We have added a new path mapping rule to the flow configuration, which will redirect all requests from `exchange` to `` path.

##### Notes

###### Custom Domains

When you change `path_mapping` in the Site configuration, remember to sync the Site deployments.

- Register Configuration with `path_mappings` configuration.
- Deploy Configuration to the distribution network.
- Synchronize custom Site.

#### Custom Authentication

Site provides a way to manage the authentication of the user using custom console app. Authentication requirement can be defined in the Site configuration as following using `authentication_action`.

##### Communication

###### Query Parameters

The following parameters are loaded

| Parameter | Description |
| --- | --- |
| `next_console_app_configuration_id` | The next console app configuration that should be loaded on Site, once the user was authenticated |
| `authentication_action` | Authentication intent defined in the Site configuration or requested by another console app via the Site Event. |
| `authentication_state` | Authentication state key. A short random string generated by Site, the Authentication app is expected to put this key in the redirect URLs for `SignUp` and `Sign In by SSO` authentication flows |
| `authentication_origin` | Authentication origin. The current Site URL instantiating the authentication flow. |

###### Events

The following event is expected to be emitted by the custom console app to the Site.

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Site product identifier.",
 "enum": [
 "e9cc145f-9d03-422e-ba71-1852885998e6"
 ]
 },
 "authentication_completed": {
 "type": "boolean",
 "description": "Describes whether the authentication flow has been completed.",
 "enum": [true]
 },
 "next_console_app_configuration_id": {
 "type": "string",
 "description": "Describes the console app configuration. Tells the Site to load an app marked by this field."
 },
 "auth": {
 "type": "object",
 "description": "What authentication context screen to load.",
 "properties": {
 "access_token": {"type": "string"},
 "id_token": {"type": "string"},
 "refresh_token": {"type": "string"}
 }
 }
 },
 "required": [
 "listener",
 "next_console_app_configuration_id",
 "auth",
 "authentication_completed"
 ]
}
```

###### Cookies

When the user is redirected back to site after Sign In by SSO or Sign Up authentication flow, site instructs browser to store a cookie named `accessToken` with the value of the access token provided in the URL hash. e.g., when visiting site with ``, the Site will instruct user's browser engine to store a cookie named `accessToken` with a value `1234`.

Additionally, cookie will have the following attributes:

- `Domain` – the domain name will be bound to the environment FQDN currently serving the backend APIs. e.g., `production.staircaseapi.com`
- `Path` – the path will be bound to the root path `/`.
- `Secure` – the cookie will be marked as secure to be transmitted to HTTPS origins exclusively.
- `HttpOnly` – the cookie will not be accessible via JavaScript. It can only by the CDN request interceptor (CloudFront functions), or an API accessible under the same domain name.
- `SameSite` – the value will be set to `None` to avoid improper cookie setting given the iframe context.
- `Expires` – the value will be set to expire in 6 hours from when the request has been made.

Currently, the `__sc.acact` cookie (represent the access token) set by site is considered as a third-party cookie, so you must apply caution when using API calls for authentication.

##### Example

```
{
 "authentication": {
 "enabled": true,
 "show_authentication_on_load": false,
 "console_app_configuration": { ... }
 }
 "layout_configuration": {
 "main": {
 ...
 "console_app_configurations": [
 {
 "console_app_configuration_id": "6374c7f8-13fa-454a-8587-bd2972434bbb",
 "temporary__console_app_url": "/6374c7f8-13fa-454a-8587-bd2972434bbb-copy34/",
 "authentication_action": "signin",
 "url_suffix": "/conversations"
 }
 ]
 }
 }
}
```

Before accessing `/conversations` the user, if not already authenticated, will be redirected to the `/signin` path and the custom console app will be loaded for authentication.

##### Advanced

###### State Exchange

Custom authentication apps should utilize `authentication_state` to provide smooth user experience.

Upon loading in an iframe, the app receives a query parameter: `authentication_state`, a short string of random characters. It's crucial to retain the authentication state, particularly when the authentication flow is interrupted by external redirections. Common scenarios include Sign Up processes, and authentications via SSO providers like Google, Amazon, or Facebook. The app should provider users with a link for redirection whenever necessary based on the authentication scenario.

The Sign Up process is notable as it requires redirection from an email link for account activation.

The site expects the "return" of the state key in the URL hash.

###### Example

```
<!-- The app is initially loaded within an iframe, with the authentication_state parameter -->
<iframe src="" width="100%" height="500"></iframe>

<!-- A redirection occurs during the authentication flow for Google login -->
Login using Google
```

In this example:

- The app is loaded in an iframe and receives the authentication_state parameter.
- During the authentication flow, a redirection for Google login is required. The user is provided a link to login via Google.
- Upon clicking the link, the user completes the Google login process.
- The user is redirected back to test.staircase.co with the URL hash `#state=p1d048R`.
- The site, having associated this state with the data in local storage, uses it to load the most recently used console app.

This scenario emphasizes the importance of managing the `authentication_state` parameter effectively to maintain a smooth user experience in cases involving external redirections like authentication via SSO.

###### Soft Authentication

Everything described above is considered as a soft authentication. It does force authentication on the user, but it does not validate the user's identity. The user can easily bypass the authentication. Soft authentication is useful for when it's not required to validate the user's identity.

###### Authorization

Forced validation cannot be achieved via the Site configuration. There will always be a way to bypass the authentication, instead apps must apply the Cookie validation logic to ensure the user is authenticated. The cookie validation can simply be achieved by validating the JWT token stored in the `__sc.acact` cookie, which represent access token from Access. If the app has an API it communicates with to retrieve the data that should not be generally available, the API must implement the access token validation logic to ensure the user is authenticated. The Site product enables such functionality by setting `HttpOnly` cookies accessible to every API that the console app consumes.

#### Console App and Site Communications

The Site allows two-way communication between the Site and the Apps using `postMessage` method.

##### Console App to Site

Embedded Apps can communicate with the Site using `window.parent.postMessage(payloadObject, "*");`. `postMessage` was introduced to eliminate API calls from the Apps to Site endpoints. A unit of communication is a "message", which in itself is a JavaScript object with a required property `listener`. The value for the `listener` must correspond to the Site product identifier.

Fact: Site product identifier is `e9cc145f-9d03-422e-ba71-1852885998e6`

The list of events accepted by Site is described below.

###### Relocate the User

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Site product identifier.",
 "enum": [
 "e9cc145f-9d03-422e-ba71-1852885998e6"
 ]
 },
 "relocation_action": {
 "type": "string",
 "description": "Describes the action to be taken by the Site.",
 "enum": [
 "REPLACE_CURRENT_URL",
 "OPEN_NEW_TAB",
 "OPEN_DEFAULT"
 ]
 },
 "relocation_url": {
 "type": "string",
 "description": "The URL to be loaded by the Site."
 }
 },
 "required": [
 "listener",
 "relocation_action",
 "relocation_url"
 ]
}
```

###### Toggle Popup

Note: `layout_configuration` should contain `popup` definition for the toggle to work.

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Site product identifier.",
 "enum": [
 "e9cc145f-9d03-422e-ba71-1852885998e6"
 ]
 },
 "style": {
 "type": "object",
 "description": "Styling attributes. Standard CSS attributes.",
 "additionalProperties": {
 "type": "string"
 }
 },
 "showPopup": {
 "type": "boolean",
 "description": "Marks the popup state. Use `true` – to show, `false` – to hide popup."
 }
 },
 "required": [
 "listener",
 "style",
 "showPopup"
 ]
}
```

###### Load Authentication Page

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Site product identifier.",
 "enum": [
 "e9cc145f-9d03-422e-ba71-1852885998e6"
 ]
 },
 "auth_screen": {
 "type": "string",
 "description": "What authentication context screen to load.",
 "enum": [
 "signin",
 "signup",
 "forgot-password",
 "forgot-password-update"
 ]
 }
 },
 "required": [
 "listener",
 "auth_screen"
 ]
}
```

The feature can also be accessed via the configuration via `authentication_action` field under `layout_configuration.main.console_app_configurations[*]`.

###### Logout the User

Note: You can define `logout_url` under `layout_configuration.authentication` to redirect the user to the desired URL after the authentication reset.

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Site product identifier.",
 "enum": [
 "e9cc145f-9d03-422e-ba71-1852885998e6"
 ]
 },
 "logout": {
 "type": "boolean",
 "description": "Whether to logout the user. Can only be `true`.",
 "enum": [
 true
 ]
 }
 },
 "required": [
 "listener",
 "logout"
 ]
}
```

###### Load Console App

Note: `console_app_configuration_id` should be present among console app configurations registered for the active flow configuration, and not just any console app configuration identifier.

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Site product identifier.",
 "enum": [
 "e9cc145f-9d03-422e-ba71-1852885998e6"
 ]
 },
 "console_app_configuration_id": {
 "type": "string",
 "description": "Describes the console app configuration. Tells the Site to load an app marked by this field."
 }
 },
 "required": [
 "listener",
 "console_app_configuration_id"
 ]
}
```

###### Change Browser Tab URL

Note: `url_suffix` property should be a path, not a full URL.

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Site product identifier.",
 "enum": [
 "e9cc145f-9d03-422e-ba71-1852885998e6"
 ]
 },
 "url_suffix": {
 "type": "string",
 "description": "URL to be set in user's browser tab."
 }
 },
 "required": [
 "listener",
 "url_suffix"
 ]
}
```

Warning: This feature is exclusive to site configurations with a single console app configuration.

###### Send Custom Tracking Event

Sends a custom tracking event to the analytics provider. Right now only Google Tag Manager and Facebook Pixel are supported. It is recommended to use Google Tag Manager and manage data destinations from there, including Facebook

Note: This will work only if the `analytics` configuration is present in the flow configuration.

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Site product identifier.",
 "enum": [
 "e9cc145f-9d03-422e-ba71-1852885998e6"
 ]
 },
 "externalFeedbackProvider": {
 "type": "string",
 "enum": ["pixel", "gtm"]
 },
 "type": {
 "type": "string",
 "example": "trackCustom"
 },
 "action": {
 "type": "string"
 },
 "data": {
 "type": "object"
 }
 },
 "required": [
 "listener",
 "externalFeedbackProvider",
 "action",
 "data"
 ]
}
```

###### Restyle Console App

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Site product identifier.",
 "enum": [
 "e9cc145f-9d03-422e-ba71-1852885998e6"
 ]
 },
 "style": {
 "type": "object",
 "additionalProperties": true,
 "description": "Apply different than original styles dynamically using a set of key-value pairs where the keys are CSS properties"
 },
 "target": {
 "type": "string",
 "description": "A site component placeholder, which requires a change in styling.",
 "enum": ["header", "left_sidebar", "right_sidebar", "footer", "hero", "main"]
 }
 },
 "required": [
 "listener",
 "style",
 "target"
 ]
}
```

###### Dynamically Resizing Main Layout

In order to keep the footer on the bottom of the page, the main layout height should be adjusted dynamically. To its dynamic height.

The following example demonstrates how to use `ResizeObserver` to monitor document height changes, and send a message to the Site to adjust the height of the main layout.

```
const emitResizeSelfDimensions = ({height}) => {
 const resizeMeEvent = {
 listener: "e9cc145f-9d03-422e-ba71-1852885998e6",
 style: {height},
 target: "main"
 };
 window.parent.postMessage(resizeMeEvent, '*');
}

const resizeObserver = new ResizeObserver(
 entries => {
 for (let entry of entries) {
 const newHeight = entry.contentRect.height;
 emitResizeSelfDimensions({height: newHeight});
 }
 }
)

resizeObserver.observe(document.body)
```

Important: Site automatically applies `margin-top` and `z-index` for the header, so it's kept on top while scrolling.

###### Pass on the Data

When the `payload` property is passed together with `direction` or `console_app_configuration_id` fields, Site converts that value into the URL-encoded string and passes it to the console app configuration as a query parameter.

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Site product identifier.",
 "enum": [
 "e9cc145f-9d03-422e-ba71-1852885998e6"
 ]
 },
 "console_app_configuration_id": {
 "type": "string",
 "description": "Describes the console app configuration. Tells the Site to load an app marked by this field."
 },
 "direction": {
 "type": "string",
 "description": "Describes the direction of the flow. Tells the Site what to load next.",
 "enum": ["backward", "forward"]
 },
 "payload": {
 "type": "object",
 "additionalProperties": {
 "type": "string"
 }
 }
 },
 "required": [
 "listener"
 ]
}
```

###### Refresh access and ID tokens

Site allows refreshing the access and ID tokens by sending a message to the Site if refresh token is persisted. Note, that currently refresh token is generated by Access only for email-password flow and is not provided for SSO. If your application uses custom auth app, that app have to send refresh token to the Site

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Site product identifier.",
 "enum": [
 "e9cc145f-9d03-422e-ba71-1852885998e6"
 ]
 },
 "eventType": {
 "type": "string",
 "description": "Event type.",
 "enum": [
 "refreshAccessToken"
 ]
 }
 },
 "required": [
 "listener",
 "eventType"
 ]
}
```

###### Data-driven Site Flow

If none of `console_app_configuration_id` or `direction` were provided, the Site will treat the flow as conditionally driven. It will go through every console app configuration until it matches provided data to a specified condition.

##### Site to Console App

Embedded Apps can listen to the Site event using `window.addEventListener`. In the case of Site to Console App communication the value for the `listener` corresponds to the console application configuration receiving the message.

Every message sent by the Site to the Console App has a fixed structure.

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Console application configuration identifier."
 },
 "eventType": {
 "type": "string",
 "description": "Describes the event type that has occurred.",
 "enum": [
 "main_app_change"
 ]
 },
 "eventPayload": {
 "type": "object",
 "description": "Event payload. Varies depending on the event type."
 }
 },
 "required": [
 "listener",
 "eventType"
 ]
}
```

###### The Main Console App Has Changed

The current main application configuration has changed to a different one.

Warning: When a non-main console application configuration with `inherit_main_url: true` gets initialized, it is not guaranteed that the event will be emitted to the console application through the Site. Instead, the console application can rely on `main_url_path` passed as a query parameter when loading the console application. Same goes for `is_authenticated`

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Console application configuration identifier."
 },
 "eventType": {
 "type": "string",
 "description": "Describes the event type that has occurred.",
 "enum": ["main_app_change"]
 },
 "eventPayload": {
 "type": "object",
 "description": "Event payload. Can contain additional properties depending on the `change_reload_url_params` definition in the console app configuration.",
 "required": ["console_app_configuration_id", "is_authenticated"],
 "properties": {
 "main_url_path": {
 "type": "string",
 "description": "URL path of the main console app configuration. Provided if `inherit_url_path` is enabled." 
 },
 "console_app_configuration_id": {
 "type": "string",
 "description": "Console app configuration identifier of the switched app."
 },
 "is_authenticated": {
 "type": "boolean",
 "description": "Correlation flag. Indicates whether the user is authenticated or not."
 }
 }
 }
 },
 "required": [
 "listener",
 "eventType",
 "eventPayload"
 ]
}
```

Warning: Do not use `is_authenticated` flag for authorization purposes. It's only meant to be used to correlate the state between site and console applications.

##### Ratio Based Application Loading

Main console application configuration can be configured to load different applications based on the ratio. The main use-case for the ratio based application loading is A/B testing on the level of the application configuration.

When rendering such application, the Site will randomly select one of the application configurations (defined in `ratio_based_console_app_configurations` under the main application configuration) based on the ratio defined in the configuration. Site uses weighted random selection to determine which application configuration to load.

Note: Defining the ratio based applications still requires defining the `console_app_configuration_id` and `temporary__console_app_url` properties.

###### Validation Rules

The following rules are designed to ensure the ratio based application loading is configured correctly:

- `ratio_based_console_app_configurations` must contain the original application configuration in the list of the alternative application configurations.
- Each application configuration under `ratio_based_console_app_configurations` must contain the `ratio`.
- The ratio for each application configuration must be a positive number greater than `0.0` and less than `1.0`.
- The sum of all ratios must be equal to `1.0`.

Navigate to endpoint request payload Flow with A/B Applications example to see the example of the ratio based application site configuration.

##### Conditional flows

Conditional flows are a particular way of Site flows where the logic of which App should be displayed depends on the data passed in `postMessage`. First, the Site configuration should contain `condition` property set on all Apps except the first one. An example:

```
...
"console_app_configurations": 
 {
 "console_app_configuration_id": "6374c7f8-13fa-454a-8587-bd2972434bbb",
 "temporary__console_app_url": "",
 "url_suffix": "/welcome"
 },
 {
 "console_app_configuration_id": "6374c7f8-13fa-454a-8587-bd2972434ccc",
 "temporary__console_app_url": "",
 "url_suffix": "/option-one",
 "condition": {
 "path": "optionSelected",
 "operation": "equal",
 "value": "1"
 }
 },
 {
 "console_app_configuration_id": "6374c7f8-13fa-454a-8587-bd2972434ddd",
 "temporary__console_app_url": "",
 "url_suffix": "/option-two",
 "condition": {
 "path": "optionSelected",
 "operation": "equal",
 "value": "2"
 }
 }
}
...
```

When the Site is opened, the `/welcome` page will be displayed. Let's assume that `/welcome` page contains some form and, depending on the value selected by the User, one of the other two Apps should be displayed. After the User submits the value on `/welcome` App, the App invokes `window.parent.postMessage({"listener": "e9cc145f-9d03-422e-ba71-1852885998e6", "payload": {"optionSelected": submitedValue}}, "*");` with `submitedValue`. The Site receives the payload, checks for the conditions and if the `submitedValue` is equal to 1 displays `/option-one` App or `/option-two` if the `submitedValue` is equal to 2. The Site passes to the App `optionSelected` as a query parameter, for example, if `submitedValue` was equal to 2 it will load the App like ``.

Note:

- if the condition passed in `postMessage` payload does not match any of the conditions in the Site configuration, the User will remain on the same App
- if multiple Apps conditions match the passed payload, the first one will be displayed
- the Site does not do casting when comparing conditions and treats all values as strings

###### Using complex conditions

The Site allows conditions to be complex using `and` and `or` operations. Example of such Site configuration:

```
...
{
 "console_app_configuration_id": "6374c7f8-13fa-454a-8587-bd2972434ddd",
 "temporary__console_app_url": "",
 "url_suffix": "/option-two",
 "condition": {
 "and": [
 {
 "path": "optionSelected",
 "operation": "equal",
 "value": "1"
 },
 {
 "path": "userAge",
 "operation": "greatherThan",
 "value": "21"
 }
 }
 }
}
...
```

In this case, conditions are matched if only both `optionSelected` equals 1 and `userAge` is greater than 21. Similarly, using `or` operator instead of `and` will be matched if one of the conditions is meet.

#### User State & Workflows

Warning: Workflows can only be used for flows with authentication enabled. If the site visitor is not authenticated and tries entering the workflow, they will be directed to the authentication page.

Workflows help in consistently saving user state data between various console app settings.

A workflow is essentially a blueprint detailing the user's journey. You have the option to set up to 10 distinct workflows for each site configuration. It's crucial that every workflow is marked with a unique identifier and its corresponding path.

When a user wraps up a state (in this case, a console app), the app then signals the completion to the Site. Subsequently, the Site initiates the loading of the forthcoming state.

Should a user return to the site, the Site will automatically load their most recent state, presenting it directly to the user.

##### Defining a Workflow

The framework to define a workflow resemble the [States Language seen in AWS Step Functions. However, it's a more condensed structure.

Key distinctions include:

- The `Type` property of a State can solely be `App`.
- The `Resource` pertains to a console app configuration ID.
- Every `States` should possess a distinctive `Resource` property.

##### Events for Workflows

###### State Done

Tells site to load the Next app in the workflow. If the current state is terminal (`End: true`) nothing is changed.

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Site product identifier.",
 "enum": [
 "e9cc145f-9d03-422e-ba71-1852885998e6"
 ]
 },
 "state_done": {
 "type": "boolean",
 "description": "Represents the state completion by the user. Can only be `true`.",
 "enum": [
 true
 ]
 }
 },
 "required": [
 "listener",
 "state_done"
 ]
}
```

###### Switch Workflow

Tells site to load to switch from one workflow to a different one. If the workflow specified does not exist – nothing will change.

```
{
 "$schema": "",
 "type": "object",
 "properties": {
 "listener": {
 "type": "string",
 "description": "Site product identifier.",
 "enum": [
 "e9cc145f-9d03-422e-ba71-1852885998e6"
 ]
 },
 "workflow_id": {
 "type": "string",
 "description": "Represents the workflow identifier."
 }
 },
 "required": [
 "listener",
 "workflow_id"
 ]
}
```

##### URL Paths & Workflow

Each workflow is tied to a specific path. When a user accesses a URL that matches this path, they are directed into that particular workflow.

Note that a workflow will absorb all `url_suffix`es defined for states in `Resource`. This implies that if a `url_suffix` is set, it must be distinctly different from other `url_suffix` definitions.

See an example for a workflow definition in an example named "Stateful".

Important: Modify identifiers for both site and console app configurations before using examples below.

##### Custom domain for backend and console apps

The Site product allows you to use a custom domain for the backend and console apps. To use a custom domain you need to add `backend.domain_name` to your site configuration. Site will use this domain to load the console apps and to make requests to the backend.

Example:

```
{
 "backend": {
 "domain_name": "api.example.com"
 }
}
```

<!--/source-->

##### Request

<!--source:api-specifications-->
SimpleOpen Graph TagsA/B AppsAnalytics EnabledStateful
<!--/source-->

<!--source:api-specifications-->
application/json Copy
```
{
 "site_flow_configuration_id": "345e8795-eb14-24t3-a2-aaaa174000",
 "site_flow_product_id": "345e8795-eb14-24t3-a2-aaaa174001",
 "layout_configuration": {
 "authentication": {
 "enabled": false
 },
 "left_sidebar": {
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174002",
 "temporary__console_app_url": "/left-sidebar-url",
 "style": {
 "width": "250px",
 "height": "100%"
 }
 },
 "header": {
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174003",
 "temporary__console_app_url": "/header-url",
 "style": {
 "width": "100%",
 "height": "50px"
 }
 },
 "hero": {
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174013",
 "temporary__console_app_url": "/hero-url",
 "style": {
 "width": "100%",
 "height": "50px"
 }
 },
 "footer": {
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174004",
 "temporary__console_app_url": "/footer-url",
 "style": {
 "width": "100%",
 "height": "30px"
 }
 },
 "main": {
 "title": "My website",
 "style": {
 "width": "100%",
 "height": "80px",
 "padding": "10px 20px"
 },
 "rendering_type": "flow",
 "console_app_configurations": [
 {
 "title": "Credentials",
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174006",
 "temporary__console_app_url": "/app1",
 "url_suffix": "/credentials"
 },
 {
 "title": "Configuration Settings",
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174007",
 "temporary__console_app_url": "/app2",
 "url_suffix": "/configuration-settings"
 },
 {
 "title": "Partner Options",
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174008",
 "temporary__console_app_url": "/app3",
 "url_suffix": "/partner-options"
 }
 ]
 }
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy
```
{
 "site_flow_configuration_id": "345e8795-eb14-24t3-a2-aaaa174007",
 "site_flow_product_id": "345e8795-eb14-24t3-a2-aaaa174005",
 "analytics": {
 "google_analytics_tag": "G-A1BCD2EF3H"
 },
 "open_graph_tags": {
 "title": "Staircase",
 "description": "Staircase is a platform for building and deploying web applications.",
 "image": "https://www.datocms-assets.com/media/example-icons-favicon-dark.ico",
 "type": "website",
 "url": "https://www.staircase.co",
 "site_name": "Staircase",
 "locale": "en_US"
 },
 "layout_configuration": {
 "authentication": {
 "enabled": false
 },
 "main": {
 "title": "Constant Feedback (Beta)",
 "rendering_type": "list",
 "console_app_configurations": [
 {
 "title": "Options",
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174006",
 "temporary__console_app_url": "/a827000000"
 },
 {
 "title": "Application submission",
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa1748931",
 "temporary__console_app_url": "/a0987627892",
 "url_suffix": "/application"
 }
 ]
 }
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy
```
{
 "site_flow_configuration_id": "345e8795-eb14-24t3-a2-aaaa174000",
 "site_flow_product_id": "345e8795-eb14-24t3-a2-aaaa174001",
 "layout_configuration": {
 "authentication": {
 "enabled": false
 },
 "main": {
 "title": "A/B Website",
 "rendering_type": "list",
 "console_app_configurations": [
 {
 "console_app_configuration_id": "145e8795-eb14-24t3-a2-aaaa174006",
 "temporary__console_app_url": "https://bing.com",
 "ratio_based_console_app_configurations": [
 {
 "ratio": 0.5,
 "console_app_configuration": {
 "console_app_configuration_id": "145e8795-eb14-24t3-a2-aaaa174006",
 "temporary__console_app_url": "https://bing.com"
 }
 },
 {
 "ratio": 0.5,
 "console_app_configuration": {
 "console_app_configuration_id": "245e8795-eb14-24t3-a2-aaaa174007",
 "temporary__console_app_url": "https://google.com"
 }
 }
 ]
 }
 ]
 }
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy
```
{
 "site_flow_configuration_id": "345e8795-eb14-24t3-a2-aaaa174007",
 "site_flow_product_id": "345e8795-eb14-24t3-a2-aaaa174005",
 "analytics": {
 "google_analytics_tag": "G-A1BCD2EF3H",
 "mouseflow_project_identifier": "0710f46a-9441-11ee-8acf-6ae56c4923a6"
 },
 "layout_configuration": {
 "authentication": {
 "enabled": false
 },
 "main": {
 "title": "Constant Feedback (Beta)",
 "rendering_type": "list",
 "console_app_configurations": [
 {
 "title": "Options",
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174006",
 "temporary__console_app_url": "/a827000000"
 },
 {
 "title": "Application submission",
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa1748931",
 "temporary__console_app_url": "/a0987627892",
 "url_suffix": "/application"
 }
 ]
 }
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy
```
{
 "site_flow_configuration_id": "27372a78-0aae-4bbd-a9be-80688d6346cc",
 "site_flow_product_id": "a699d986-08b7-4012-bb6f-421d7ae2ce4f",
 "layout_configuration": {
 "authentication": {
 "enabled": true,
 "show_authentication_on_load": false
 },
 "main": {
 "title": "Milestone",
 "rendering_type": "flow",
 "console_app_configurations": [
 {
 "console_app_configuration_id": "0231ae28-b9cc-4d89-bbaf-ca344d215a7f",
 "temporary__console_app_url": "/0231ae28-b9cc-4d89-bbaf-ca344d215a7f/",
 "url_suffix": "/contract"
 },
 {
 "console_app_configuration_id": "56773f9b-4cea-4faa-b028-670f254fc59e",
 "temporary__console_app_url": "/56773f9b-4cea-4faa-b028-670f254fc59e/",
 "url_suffix": "/agree"
 },
 {
 "console_app_configuration_id": "3e12cbff-fb66-41f3-96be-30835c6d0317",
 "temporary__console_app_url": "/3e12cbff-fb66-41f3-96be-30835c6d0317/",
 "url_suffix": "/filter"
 },
 {
 "console_app_configuration_id": "d901517a-a530-488e-bc4d-3005b4d2288f",
 "temporary__console_app_url": "/d901517a-a530-488e-bc4d-3005b4d2288f/",
 "url_suffix": "/subscribe"
 },
 {
 "console_app_configuration_id": "37556e03-9681-461f-ade3-4b38c6a8e2ef",
 "temporary__console_app_url": "/37556e03-9681-461f-ade3-4b38c6a8e2ef/",
 "url_suffix": "/milestone"
 },
 {
 "console_app_configuration_id": "675ba25d-2b29-40b3-8d83-d93d31b88cb3",
 "temporary__console_app_url": "/675ba25d-2b29-40b3-8d83-d93d31b88cb3/",
 "url_suffix": "/profile-settings"
 }
 ]
 }
 },
 "workflows": [
 {
 "id": "12345678-82eb-4522-bc47-f0fcfdd00001",
 "path": "/",
 "definition": {
 "StartAt": "Contracting",
 "States": {
 "Contracting": {
 "Type": "App",
 "Resource": "0231ae28-b9cc-4d89-bbaf-ca344d215a7f",
 "Next": "Agreement"
 },
 "Agreement": {
 "Type": "App",
 "Resource": "56773f9b-4cea-4faa-b028-670f254fc59e",
 "Next": "Observatory"
 },
 "Observatory": {
 "Type": "App",
 "Resource": "37556e03-9681-461f-ade3-4b38c6a8e2ef",
 "End": true
 }
 }
 }
 },
 {
 "id": "12345678-82eb-4522-bc47-f0fcfdd00002",
 "definition": {
 "StartAt": "Filters",
 "States": {
 "Filters": {
 "Type": "App",
 "Resource": "3e12cbff-fb66-41f3-96be-30835c6d0317",
 "Next": "Subscriptions"
 },
 "Subscriptions": {
 "Type": "App",
 "Resource": "d901517a-a530-488e-bc4d-3005b4d2288f",
 "End": true
 }
 }
 }
 }
 ]
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
400422
<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Request body`application/json`

<!--source:api-specifications-->
10 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `site_flow_configuration_id` | `string` | <!--source:api-specifications-->The ID of the site configuration.<!--/source-->Example `15a820a6-cac9-4b-a7b1-d364b26d7f69` |
| `site_flow_product_id` | `string` | <!--source:api-specifications-->The ID of the site flow product.<!--/source-->Example `6c5f392f-1ee7-41-9a3d-3b2d08b954fd` |
| `analytics` | `object` | <!--source:api-specifications-->Analytics configuration.<!--/source--> |
| `google_analytics_tag` | `string` | <!--source:api-specifications-->Google Analytics tag.<!--/source-->Example `G-A1BCD2EF3H` |
| `google_analytics_server_url` | `string` | <!--source:api-specifications-->Google Analytics Container Server URL.<!--/source-->Example `https://ss-tagging.moore-dev.staircaseapi.com` |
| `advertiser_correlation_key` | `string` | <!--source:api-specifications-->Advertiser correlation key.<!--/source-->`utm_source`Example `utm_source` |
| `mouseflow_project_identifier` | `string` | <!--source:api-specifications-->Mouseflow project identifier.<!--/source-->Example `0710f46a-9441-11ee-8acf-6ae56c4923a6` |
| `google_analytics_tracking_parameters` | `string[]` | <!--source:api-specifications-->List of GA custom tracking parameters.<!--/source--> |
| `facebook_pixel_id` | `string` | <!--source:api-specifications-->Facebook pixel ID.<!--/source-->Example `1234567890123456` |
| `facebook_pixel_domain_verification` | `string` | <!--source:api-specifications-->Facebook tracking domain name verification to be put in meta head tag.<!--/source-->Example `1234567890123456` |
| `google_tag_manager_id` | `string` | <!--source:api-specifications-->Google Tag Manager ID.<!--/source-->Example `GTM-123456` |
| `layout_configuration` | `object` | <!--source:api-specifications-->Site layout configuration.<!--/source--> |
| `favicon` | `object` | <!--source:api-specifications-->Favicon schema.<!--/source--> |
| `blob_id` | `string` | <!--source:api-specifications-->Blob identifier from Persistence.<!--/source-->Example `01H0JANT98QNERDF7EV0S2JJJJ` |
| `blob_url`required | `string` | <!--source:api-specifications-->Blob URL.<!--/source-->Example `https://cdn.edge.staircaseapi.com/media/si_oi9ju8hy7t627892iju4872h4ucnhwebf32eicmcmji349mmc33im3/favicon-dark.ico` |
| `authentication` | `object` | <!--source:api-specifications-->Authentication schema.<!--/source--> |
| `enabled` | `boolean` | <!--source:api-specifications-->Whether authentication is enabled.<!--/source-->Example `true` |
| `show_authentication_on_load` | `boolean` | <!--source:api-specifications-->Should the authentication immediately on site load, default True<!--/source-->Example `true` |
| `console_app_configuration` | `object` | — |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `style_mobile` | `object` | — |
| `title` | `string` | <!--source:api-specifications-->The title of the app.<!--/source-->Example `My App` |
| `logout_url` | `string (uri)` | <!--source:api-specifications-->The logout URL. The user will land on this page when logout is requested by the app.<!--/source-->Example `https://staircase.co` |
| `access_app_name` | `string` | <!--source:api-specifications-->Access application name. This will be passed to custom auth app via query arguments. Required, when custom auth app is enabled.<!--/source-->Example `Staircase` |
| `popup` | `object` | <!--source:api-specifications-->Popup layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `left_sidebar` | `object` | <!--source:api-specifications-->Left sidebar layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `right_sidebar` | `object` | <!--source:api-specifications-->Right sidebar layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `header` | `object` | <!--source:api-specifications-->Header layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `hero` | `object` | <!--source:api-specifications-->Hero layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `footer` | `object` | <!--source:api-specifications-->Footer layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `main`required | `object` | <!--source:api-specifications-->Main layout schema.<!--/source--> |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `title` | `string` | <!--source:api-specifications-->The title of the app.<!--/source-->Example `My App` |
| `rendering_type` | `string` | <!--source:api-specifications-->Rendering strategy applied to `console_app_configurations`.<!--/source-->`flow``list`Example `flow` |
| `console_app_configurations` | `array` | <!--source:api-specifications-->The sequence of apps.<!--/source--> |
| `change_reload_url_params` | `object` | <!--source:api-specifications-->Dictionary of URL parameters that will be passed as URL query paramerters to `on_change_reload`. Maximum 3 properties can be added.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the main app.<!--/source-->Example `true` |
| `path_mappings` | `array` | <!--source:api-specifications-->Path mappings configuration.<!--/source--> |
| `workflows` | `array` | <!--source:api-specifications-->Workflows configuration.<!--/source--> |
| `error_pages` | `object` | <!--source:api-specifications-->Error pages schema.<!--/source--> |
| `forbidden` | `object` | <!--source:api-specifications-->Error page schema.<!--/source--> |
| `page_content`required | `string` | <!--source:api-specifications-->Error page content in HTML<!--/source-->Example `<h1>Oops! Something went wrong. Please, refresh or make sure you're accessing this site from the US.</h1>` |
| `cookie_consent` | `object` | <!--source:api-specifications-->Cookie consent schema.<!--/source--> |
| `popup` | `object` | <!--source:api-specifications-->Cookie consent popup schema.<!--/source--> |
| `title` | `string` | <!--source:api-specifications-->Cookie consent popup title.<!--/source-->Example `Cookie consent` |
| `short_text` | `string` | <!--source:api-specifications-->Cookie consent popup short text.<!--/source-->Example `We use cookies to improve your experience on our website.` |
| `button_ok` | `string` | <!--source:api-specifications-->Cookie consent popup OK button text.<!--/source-->Example `OK` |
| `button_manage_preferences` | `string` | <!--source:api-specifications-->Cookie consent popup manage preferences button text.<!--/source-->Example `Manage preferences` |
| `preference_center` | `object` | <!--source:api-specifications-->Cookie consent preference center schema.<!--/source--> |
| `button_save_preferences` | `string` | <!--source:api-specifications-->Cookie consent preference center save preferences button text.<!--/source-->Example `Save preferences` |
| `title` | `string` | <!--source:api-specifications-->Cookie consent preference center title.<!--/source-->Example `Cookie consent` |
| `privacy_policy_url` | `string (uri)` | <!--source:api-specifications-->Privacy policy URL.<!--/source-->Example `https://www.staircase.co/privacy-policy` |
| `custom_css` | `string` | <!--source:api-specifications-->Custom CSS for the cookie consent popup.<!--/source-->Example `body { background-color: #000; }` |
| `browser_cookie_domain` | `string` | <!--source:api-specifications-->Browser cookie domain.<!--/source-->Example `staircase.co` |
| `browser_cookie_expiration_days` | `integer` | <!--source:api-specifications-->Cookie expiration in days.<!--/source-->Example `365` |
| `open_graph_tags` | `object` | <!--source:api-specifications-->Open Graphs tags schema.<!--/source--> |
| `title`required | `string` | <!--source:api-specifications-->Open Graphs tags title.<!--/source-->Example `Staircase` |
| `description`required | `string` | <!--source:api-specifications-->Open Graphs tags description.<!--/source-->Example `Staircase is a platform for building and deploying web applications.` |
| `image`required | `string (uri)` | <!--source:api-specifications-->Open Graphs tags image.<!--/source-->Example `https://cdn.edge.staircaseapi.com/media/si_oi9ju8hy7t627892iju4872h4ucnhwebf32eicmcmji349mmc33im3/favicon-dark.ico` |
| `type`required | `string` | <!--source:api-specifications-->Open Graphs tags type.<!--/source-->`website`Example `website` |
| `url`required | `string (uri)` | <!--source:api-specifications-->Open Graphs tags URL.<!--/source-->Example `https://www.staircase.co` |
| `site_name`required | `string` | <!--source:api-specifications-->Open Graphs tags site name.<!--/source-->Example `Staircase` |
| `locale`required | `string` | <!--source:api-specifications-->Open Graphs tags locale.<!--/source-->`en_US`Example `en_US` |
| `backend` | `object` | <!--source:api-specifications-->Backend configuration schema.<!--/source--> |
| `domain_name` | `string` | <!--source:api-specifications-->Domain name of the backend.<!--/source-->Example `service.staircase.co` |

##### Response `201``application/json`

<!--source:api-specifications-->
10 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `site_flow_configuration_id` | `string` | <!--source:api-specifications-->The ID of the site configuration.<!--/source-->Example `15a820a6-cac9-4b-a7b1-d364b26d7f69` |
| `site_flow_product_id` | `string` | <!--source:api-specifications-->The ID of the site flow product.<!--/source-->Example `6c5f392f-1ee7-41-9a3d-3b2d08b954fd` |
| `analytics` | `object` | <!--source:api-specifications-->Analytics configuration.<!--/source--> |
| `google_analytics_tag` | `string` | <!--source:api-specifications-->Google Analytics tag.<!--/source-->Example `G-A1BCD2EF3H` |
| `google_analytics_server_url` | `string` | <!--source:api-specifications-->Google Analytics Container Server URL.<!--/source-->Example `https://ss-tagging.moore-dev.staircaseapi.com` |
| `advertiser_correlation_key` | `string` | <!--source:api-specifications-->Advertiser correlation key.<!--/source-->`utm_source`Example `utm_source` |
| `mouseflow_project_identifier` | `string` | <!--source:api-specifications-->Mouseflow project identifier.<!--/source-->Example `0710f46a-9441-11ee-8acf-6ae56c4923a6` |
| `google_analytics_tracking_parameters` | `string[]` | <!--source:api-specifications-->List of GA custom tracking parameters.<!--/source--> |
| `facebook_pixel_id` | `string` | <!--source:api-specifications-->Facebook pixel ID.<!--/source-->Example `1234567890123456` |
| `facebook_pixel_domain_verification` | `string` | <!--source:api-specifications-->Facebook tracking domain name verification to be put in meta head tag.<!--/source-->Example `1234567890123456` |
| `google_tag_manager_id` | `string` | <!--source:api-specifications-->Google Tag Manager ID.<!--/source-->Example `GTM-123456` |
| `layout_configuration` | `object` | <!--source:api-specifications-->Site layout configuration.<!--/source--> |
| `favicon` | `object` | <!--source:api-specifications-->Favicon schema.<!--/source--> |
| `blob_id` | `string` | <!--source:api-specifications-->Blob identifier from Persistence.<!--/source-->Example `01H0JANT98QNERDF7EV0S2JJJJ` |
| `blob_url`required | `string` | <!--source:api-specifications-->Blob URL.<!--/source-->Example `https://cdn.edge.staircaseapi.com/media/si_oi9ju8hy7t627892iju4872h4ucnhwebf32eicmcmji349mmc33im3/favicon-dark.ico` |
| `authentication` | `object` | <!--source:api-specifications-->Authentication schema.<!--/source--> |
| `enabled` | `boolean` | <!--source:api-specifications-->Whether authentication is enabled.<!--/source-->Example `true` |
| `show_authentication_on_load` | `boolean` | <!--source:api-specifications-->Should the authentication immediately on site load, default True<!--/source-->Example `true` |
| `console_app_configuration` | `object` | — |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `style_mobile` | `object` | — |
| `title` | `string` | <!--source:api-specifications-->The title of the app.<!--/source-->Example `My App` |
| `logout_url` | `string (uri)` | <!--source:api-specifications-->The logout URL. The user will land on this page when logout is requested by the app.<!--/source-->Example `https://staircase.co` |
| `access_app_name` | `string` | <!--source:api-specifications-->Access application name. This will be passed to custom auth app via query arguments. Required, when custom auth app is enabled.<!--/source-->Example `Staircase` |
| `popup` | `object` | <!--source:api-specifications-->Popup layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `left_sidebar` | `object` | <!--source:api-specifications-->Left sidebar layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `right_sidebar` | `object` | <!--source:api-specifications-->Right sidebar layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `header` | `object` | <!--source:api-specifications-->Header layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `hero` | `object` | <!--source:api-specifications-->Hero layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `footer` | `object` | <!--source:api-specifications-->Footer layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `main`required | `object` | <!--source:api-specifications-->Main layout schema.<!--/source--> |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `title` | `string` | <!--source:api-specifications-->The title of the app.<!--/source-->Example `My App` |
| `rendering_type` | `string` | <!--source:api-specifications-->Rendering strategy applied to `console_app_configurations`.<!--/source-->`flow``list`Example `flow` |
| `console_app_configurations` | `array` | <!--source:api-specifications-->The sequence of apps.<!--/source--> |
| `change_reload_url_params` | `object` | <!--source:api-specifications-->Dictionary of URL parameters that will be passed as URL query paramerters to `on_change_reload`. Maximum 3 properties can be added.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the main app.<!--/source-->Example `true` |
| `path_mappings` | `array` | <!--source:api-specifications-->Path mappings configuration.<!--/source--> |
| `workflows` | `array` | <!--source:api-specifications-->Workflows configuration.<!--/source--> |
| `error_pages` | `object` | <!--source:api-specifications-->Error pages schema.<!--/source--> |
| `forbidden` | `object` | <!--source:api-specifications-->Error page schema.<!--/source--> |
| `page_content`required | `string` | <!--source:api-specifications-->Error page content in HTML<!--/source-->Example `<h1>Oops! Something went wrong. Please, refresh or make sure you're accessing this site from the US.</h1>` |
| `cookie_consent` | `object` | <!--source:api-specifications-->Cookie consent schema.<!--/source--> |
| `popup` | `object` | <!--source:api-specifications-->Cookie consent popup schema.<!--/source--> |
| `title` | `string` | <!--source:api-specifications-->Cookie consent popup title.<!--/source-->Example `Cookie consent` |
| `short_text` | `string` | <!--source:api-specifications-->Cookie consent popup short text.<!--/source-->Example `We use cookies to improve your experience on our website.` |
| `button_ok` | `string` | <!--source:api-specifications-->Cookie consent popup OK button text.<!--/source-->Example `OK` |
| `button_manage_preferences` | `string` | <!--source:api-specifications-->Cookie consent popup manage preferences button text.<!--/source-->Example `Manage preferences` |
| `preference_center` | `object` | <!--source:api-specifications-->Cookie consent preference center schema.<!--/source--> |
| `button_save_preferences` | `string` | <!--source:api-specifications-->Cookie consent preference center save preferences button text.<!--/source-->Example `Save preferences` |
| `title` | `string` | <!--source:api-specifications-->Cookie consent preference center title.<!--/source-->Example `Cookie consent` |
| `privacy_policy_url` | `string (uri)` | <!--source:api-specifications-->Privacy policy URL.<!--/source-->Example `https://www.staircase.co/privacy-policy` |
| `custom_css` | `string` | <!--source:api-specifications-->Custom CSS for the cookie consent popup.<!--/source-->Example `body { background-color: #000; }` |
| `browser_cookie_domain` | `string` | <!--source:api-specifications-->Browser cookie domain.<!--/source-->Example `staircase.co` |
| `browser_cookie_expiration_days` | `integer` | <!--source:api-specifications-->Cookie expiration in days.<!--/source-->Example `365` |
| `open_graph_tags` | `object` | <!--source:api-specifications-->Open Graphs tags schema.<!--/source--> |
| `title`required | `string` | <!--source:api-specifications-->Open Graphs tags title.<!--/source-->Example `Staircase` |
| `description`required | `string` | <!--source:api-specifications-->Open Graphs tags description.<!--/source-->Example `Staircase is a platform for building and deploying web applications.` |
| `image`required | `string (uri)` | <!--source:api-specifications-->Open Graphs tags image.<!--/source-->Example `https://cdn.edge.staircaseapi.com/media/si_oi9ju8hy7t627892iju4872h4ucnhwebf32eicmcmji349mmc33im3/favicon-dark.ico` |
| `type`required | `string` | <!--source:api-specifications-->Open Graphs tags type.<!--/source-->`website`Example `website` |
| `url`required | `string (uri)` | <!--source:api-specifications-->Open Graphs tags URL.<!--/source-->Example `https://www.staircase.co` |
| `site_name`required | `string` | <!--source:api-specifications-->Open Graphs tags site name.<!--/source-->Example `Staircase` |
| `locale`required | `string` | <!--source:api-specifications-->Open Graphs tags locale.<!--/source-->`en_US`Example `en_US` |
| `backend` | `object` | <!--source:api-specifications-->Backend configuration schema.<!--/source--> |
| `domain_name` | `string` | <!--source:api-specifications-->Domain name of the backend.<!--/source-->Example `service.staircase.co` |

##### Other responses

`400``422`

`GET` `/ordered-flows/{site_flow_configuration_id}`

<!--source:api-specifications-->

#### View Configuration
<!--/source-->

`getAppConfiguration`

<!--source:api-specifications-->

#### View Configuration

Retrieves the definition.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400404
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success

```
{
 "site_flow_configuration_id": "345e8795-eb14-24t3-a2-aaaa174000",
 "site_flow_product_id": "345e8795-eb14-24t3-a2-aaaa174001",
 "layout_configuration": {
 "authentication": {
 "enabled": false
 },
 "left_sidebar": {
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174002",
 "temporary__console_app_url": "/left-sidebar-url",
 "style": {
 "width": "250px",
 "height": "100%"
 }
 },
 "header": {
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174003",
 "temporary__console_app_url": "/header-url",
 "style": {
 "width": "100%",
 "height": "50px"
 }
 },
 "hero": {
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174013",
 "temporary__console_app_url": "/hero-url",
 "style": {
 "width": "100%",
 "height": "50px"
 }
 },
 "footer": {
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174004",
 "temporary__console_app_url": "/footer-url",
 "style": {
 "width": "100%",
 "height": "30px"
 }
 },
 "main": {
 "title": "My website",
 "style": {
 "width": "100%",
 "height": "80px",
 "padding": "10px 20px"
 },
 "rendering_type": "flow",
 "console_app_configurations": [
 {
 "title": "Credentials",
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174006",
 "temporary__console_app_url": "/app1",
 "url_suffix": "/credentials"
 },
 {
 "title": "Configuration Settings",
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174007",
 "temporary__console_app_url": "/app2",
 "url_suffix": "/configuration-settings"
 },
 {
 "title": "Partner Options",
 "console_app_configuration_id": "345e8795-eb14-24t3-a2-aaaa174008",
 "temporary__console_app_url": "/app3",
 "url_suffix": "/partner-options"
 }
 ]
 }
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 404 status code occurs when a requested resource cannot be located.

```
{
 "error": {
 "message": "Not found.",
 "reason": "Flow(site_flow_configuration_id=`345e8795-eb14-24t3-a2-aaaa174000`)"
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `site_flow_configuration_id` required | `string` path | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Site flow configuration ID.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
10 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `site_flow_configuration_id` | `string` | <!--source:api-specifications-->The ID of the site configuration.<!--/source-->Example `15a820a6-cac9-4b-a7b1-d364b26d7f69` |
| `site_flow_product_id` | `string` | <!--source:api-specifications-->The ID of the site flow product.<!--/source-->Example `6c5f392f-1ee7-41-9a3d-3b2d08b954fd` |
| `analytics` | `object` | <!--source:api-specifications-->Analytics configuration.<!--/source--> |
| `google_analytics_tag` | `string` | <!--source:api-specifications-->Google Analytics tag.<!--/source-->Example `G-A1BCD2EF3H` |
| `google_analytics_server_url` | `string` | <!--source:api-specifications-->Google Analytics Container Server URL.<!--/source-->Example `https://ss-tagging.moore-dev.staircaseapi.com` |
| `advertiser_correlation_key` | `string` | <!--source:api-specifications-->Advertiser correlation key.<!--/source-->`utm_source`Example `utm_source` |
| `mouseflow_project_identifier` | `string` | <!--source:api-specifications-->Mouseflow project identifier.<!--/source-->Example `0710f46a-9441-11ee-8acf-6ae56c4923a6` |
| `google_analytics_tracking_parameters` | `string[]` | <!--source:api-specifications-->List of GA custom tracking parameters.<!--/source--> |
| `facebook_pixel_id` | `string` | <!--source:api-specifications-->Facebook pixel ID.<!--/source-->Example `1234567890123456` |
| `facebook_pixel_domain_verification` | `string` | <!--source:api-specifications-->Facebook tracking domain name verification to be put in meta head tag.<!--/source-->Example `1234567890123456` |
| `google_tag_manager_id` | `string` | <!--source:api-specifications-->Google Tag Manager ID.<!--/source-->Example `GTM-123456` |
| `layout_configuration` | `object` | <!--source:api-specifications-->Site layout configuration.<!--/source--> |
| `favicon` | `object` | <!--source:api-specifications-->Favicon schema.<!--/source--> |
| `blob_id` | `string` | <!--source:api-specifications-->Blob identifier from Persistence.<!--/source-->Example `01H0JANT98QNERDF7EV0S2JJJJ` |
| `blob_url`required | `string` | <!--source:api-specifications-->Blob URL.<!--/source-->Example `https://cdn.edge.staircaseapi.com/media/si_oi9ju8hy7t627892iju4872h4ucnhwebf32eicmcmji349mmc33im3/favicon-dark.ico` |
| `authentication` | `object` | <!--source:api-specifications-->Authentication schema.<!--/source--> |
| `enabled` | `boolean` | <!--source:api-specifications-->Whether authentication is enabled.<!--/source-->Example `true` |
| `show_authentication_on_load` | `boolean` | <!--source:api-specifications-->Should the authentication immediately on site load, default True<!--/source-->Example `true` |
| `console_app_configuration` | `object` | — |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `style_mobile` | `object` | — |
| `title` | `string` | <!--source:api-specifications-->The title of the app.<!--/source-->Example `My App` |
| `logout_url` | `string (uri)` | <!--source:api-specifications-->The logout URL. The user will land on this page when logout is requested by the app.<!--/source-->Example `https://staircase.co` |
| `access_app_name` | `string` | <!--source:api-specifications-->Access application name. This will be passed to custom auth app via query arguments. Required, when custom auth app is enabled.<!--/source-->Example `Staircase` |
| `popup` | `object` | <!--source:api-specifications-->Popup layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `left_sidebar` | `object` | <!--source:api-specifications-->Left sidebar layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `right_sidebar` | `object` | <!--source:api-specifications-->Right sidebar layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `header` | `object` | <!--source:api-specifications-->Header layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `hero` | `object` | <!--source:api-specifications-->Hero layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `footer` | `object` | <!--source:api-specifications-->Footer layout schema.<!--/source--> |
| `console_app_configuration_id` | `string` | <!--source:api-specifications-->The ID of the console app configuration.<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `temporary__console_app_url` | `string (uri)` | <!--source:api-specifications-->The temporary URL of the console app.<!--/source-->Example `/app/4ed4be4e-4c4e-4f72-af36-7928d3e1c9ac` |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `main`required | `object` | <!--source:api-specifications-->Main layout schema.<!--/source--> |
| `style` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `style_mobile` | `object` | — |
| `width` | `string` | <!--source:api-specifications-->The width of an element.<!--/source-->Example `100%` |
| `height` | `string` | <!--source:api-specifications-->The height of an element.<!--/source-->Example `50px` |
| `padding` | `string` | <!--source:api-specifications-->The padding of an element.<!--/source-->Example `10px 20px` |
| `margin` | `string` | <!--source:api-specifications-->The margin of an element.<!--/source-->Example `5px` |
| `display` | `string` | <!--source:api-specifications-->Display value of element.<!--/source-->`flex``none`Example `flex` |
| `on_change_reload` | `string[]` | <!--source:api-specifications-->The locations to reload when the app changes.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the layout placeholder app.<!--/source-->Example `true` |
| `title` | `string` | <!--source:api-specifications-->The title of the app.<!--/source-->Example `My App` |
| `rendering_type` | `string` | <!--source:api-specifications-->Rendering strategy applied to `console_app_configurations`.<!--/source-->`flow``list`Example `flow` |
| `console_app_configurations` | `array` | <!--source:api-specifications-->The sequence of apps.<!--/source--> |
| `change_reload_url_params` | `object` | <!--source:api-specifications-->Dictionary of URL parameters that will be passed as URL query paramerters to `on_change_reload`. Maximum 3 properties can be added.<!--/source--> |
| `inherit_url_path` | `boolean` | <!--source:api-specifications-->Pass url_path from Site to the main app.<!--/source-->Example `true` |
| `path_mappings` | `array` | <!--source:api-specifications-->Path mappings configuration.<!--/source--> |
| `workflows` | `array` | <!--source:api-specifications-->Workflows configuration.<!--/source--> |
| `error_pages` | `object` | <!--source:api-specifications-->Error pages schema.<!--/source--> |
| `forbidden` | `object` | <!--source:api-specifications-->Error page schema.<!--/source--> |
| `page_content`required | `string` | <!--source:api-specifications-->Error page content in HTML<!--/source-->Example `<h1>Oops! Something went wrong. Please, refresh or make sure you're accessing this site from the US.</h1>` |
| `cookie_consent` | `object` | <!--source:api-specifications-->Cookie consent schema.<!--/source--> |
| `popup` | `object` | <!--source:api-specifications-->Cookie consent popup schema.<!--/source--> |
| `title` | `string` | <!--source:api-specifications-->Cookie consent popup title.<!--/source-->Example `Cookie consent` |
| `short_text` | `string` | <!--source:api-specifications-->Cookie consent popup short text.<!--/source-->Example `We use cookies to improve your experience on our website.` |
| `button_ok` | `string` | <!--source:api-specifications-->Cookie consent popup OK button text.<!--/source-->Example `OK` |
| `button_manage_preferences` | `string` | <!--source:api-specifications-->Cookie consent popup manage preferences button text.<!--/source-->Example `Manage preferences` |
| `preference_center` | `object` | <!--source:api-specifications-->Cookie consent preference center schema.<!--/source--> |
| `button_save_preferences` | `string` | <!--source:api-specifications-->Cookie consent preference center save preferences button text.<!--/source-->Example `Save preferences` |
| `title` | `string` | <!--source:api-specifications-->Cookie consent preference center title.<!--/source-->Example `Cookie consent` |
| `privacy_policy_url` | `string (uri)` | <!--source:api-specifications-->Privacy policy URL.<!--/source-->Example `https://www.staircase.co/privacy-policy` |
| `custom_css` | `string` | <!--source:api-specifications-->Custom CSS for the cookie consent popup.<!--/source-->Example `body { background-color: #000; }` |
| `browser_cookie_domain` | `string` | <!--source:api-specifications-->Browser cookie domain.<!--/source-->Example `staircase.co` |
| `browser_cookie_expiration_days` | `integer` | <!--source:api-specifications-->Cookie expiration in days.<!--/source-->Example `365` |
| `open_graph_tags` | `object` | <!--source:api-specifications-->Open Graphs tags schema.<!--/source--> |
| `title`required | `string` | <!--source:api-specifications-->Open Graphs tags title.<!--/source-->Example `Staircase` |
| `description`required | `string` | <!--source:api-specifications-->Open Graphs tags description.<!--/source-->Example `Staircase is a platform for building and deploying web applications.` |
| `image`required | `string (uri)` | <!--source:api-specifications-->Open Graphs tags image.<!--/source-->Example `https://cdn.edge.staircaseapi.com/media/si_oi9ju8hy7t627892iju4872h4ucnhwebf32eicmcmji349mmc33im3/favicon-dark.ico` |
| `type`required | `string` | <!--source:api-specifications-->Open Graphs tags type.<!--/source-->`website`Example `website` |
| `url`required | `string (uri)` | <!--source:api-specifications-->Open Graphs tags URL.<!--/source-->Example `https://www.staircase.co` |
| `site_name`required | `string` | <!--source:api-specifications-->Open Graphs tags site name.<!--/source-->Example `Staircase` |
| `locale`required | `string` | <!--source:api-specifications-->Open Graphs tags locale.<!--/source-->`en_US`Example `en_US` |
| `backend` | `object` | <!--source:api-specifications-->Backend configuration schema.<!--/source--> |
| `domain_name` | `string` | <!--source:api-specifications-->Domain name of the backend.<!--/source-->Example `service.staircase.co` |

##### Other responses

`400``404`

`POST` `/event-loop/poll/{site_flow_configuration_id}`

<!--source:api-specifications-->

#### Check Session
<!--/source-->

`pollSessionProgress`

<!--source:api-specifications-->
This endpoint generates a new session and transaction IDs, Session ID is used to differentiate between different sessions of the same user who is coming from the same resource, and possibly several times.

This API is an entrypoint for the shell application of the Site to start the communication with the backend Site.

#### Authentication

If the configuration has the authentication enabled, the Site will perform soft-validation of the user and store email address of the person logging in. The email address will be stored in the `person[0].email_address`.

Show the rest Site checks for `email_address` and `custom:person_identifier` JWT claims to find user's email address and GUID. Later on, Site will populate transaction (marked by `transaction_id`) with the email address of the user signed in.

Site populates the transaction in a synchronous manner, i.e., the transaction will be populated before the response is returned.

#### Advertiser Key Correlation

When the website is set up with the advertiser key linkage, it will search for the correlating key within query parameters of the URL. This key should be present in the query parameters and its value should correspond to the advertiser's ID. If a prior session is already in place, the website will bypass both the correlating key and the associated advertisement information. If not, the website will initiate a new session, and the advertisement details will be stored under this fresh transaction, which is marked by a `transaction_id`.

##### Example

Define the advertiser key correlation key in the configuration:

```
{
 "analytics": {
 "advertiser_correlation_key": "utm_source"
 },
 "layout_configuration": {...}
}
```

Set the URL in the advertisement platform (e.g. Google Ads) to include the correlating key:

```
```

Here the correlating key is `utm_source` and the value is `91319ebc-3c29-4e65-801c-91d4e32073a5`, which represents the advertiser's ID.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400404
<!--/source-->

<!--source:api-specifications-->
application/json Copy Successfully retrieved the current app ID

```
{
 "transaction_id": "5aa4be4e-4c4e-42-af36-9ddaaa2322ec",
 "session_id": "6ed4be4e-4c4e-42-af36-9ddaaa2322ec",
 "trace_id": "OOWDANFA"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 404 status code occurs when a requested resource cannot be located.

```
{
 "error": {
 "message": "Not found.",
 "reason": "Flow(site_flow_configuration_id=`345e8795-eb14-24t3-a2-aaaa174000`)"
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
5
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-sc-trace-id` required | `string` header | `01HQQEHAPB8EVDA35QDTMEEV9X` | <!--source:api-specifications-->The trace ID<!--/source--> |
| `site_flow_configuration_id` required | `string` path | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Site flow configuration ID.<!--/source--> |
| `session_id` | `string` query | `5ed4be4e-4c4e-42-af36-9ddaaa2322ec` | <!--source:api-specifications-->An existing session ID (optional)<!--/source--> |
| `transaction_id` | `string` query | `5aa4be4e-4c4e-42-af36-9ddaaa2322ec` | <!--source:api-specifications-->An existing transaction ID associated with the session ID (optional)<!--/source--> |
| `Authorization` | `string` header | `<redacted>` | <!--source:api-specifications-->Authentication token<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
3 fields
<!--/source-->
<!--source:api-specifications-->
Successfully retrieved the current app ID
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `session_id` | `string` | <!--source:api-specifications-->The session ID, either provided or newly generated<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `transaction_id` | `string` | <!--source:api-specifications-->The transaction ID, either provided or newly generated<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |
| `trace_id` | `string` | <!--source:api-specifications-->The sc-trace-id<!--/source-->Example `4ed4be4e-4c4e-42-af36-7928d3e1c9ac` |

##### Other responses

`400``404`

`GET` `/ordered-flows`

<!--source:api-specifications-->

#### List Configurations
<!--/source-->

`listAppConfigurations`

<!--source:api-specifications-->
List Configuration
<!--/source-->

<!--source:api-specifications-->

#### List Configurations

Retrieves list of registered configurations.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400422
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success

```
{
 "site_flow_configurations": [
 {
 "site_flow_configuration_id": "345e8795-eb14-24t3-a2-aaaa174000",
 "site_flow_product_id": "345e8795-eb14-24t3-a2-aaaa174001"
 },
 {
 "site_flow_configuration_id": "345e8795-eb14-24t3-a2-aaaa174004",
 "site_flow_product_id": "345e8795-eb14-24t3-a2-aaaa174088"
 }
 ],
 "page": {
 "count": 2,
 "next_token": null
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `next_token` | `string` query | `eNolzLEKwkAQRdFfeZnGRvwAWxtBbOwsh2TcXYxvZJ2NBPHfNVpduMV5yf4gW8k2d5i9rSbDxRsHKGH6CKvfpoRCRDYctV4t7qP2hsH7djOGRnHKWk4LtHOmqtHG3+1w/ptPJ+iRC9NG3h89BijN` | <!--source:api-specifications-->The response can include a limited number of results along with a `next_token` value. You can use this `next_token` value in a subsequent API request to retrieve the next batch of items. `next_token` is located under the `page` object in the response.<!--/source--> |
| `limit` | `integer` query | `10` | <!--source:api-specifications-->List configurations limit<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `site_flow_configurations`required | `array` | <!--source:api-specifications-->Represents the array of flow configurations.<!--/source--> |
| `page`required | `object` | <!--source:api-specifications-->Page information. Contains basic information of the current page returned.<!--/source--> |
| `count`required | `integer` | <!--source:api-specifications-->Count of items that were retrieved for this page.<!--/source-->Example `1` |
| `next_token`required | `string` | <!--source:api-specifications-->If this field exists in the page information collection, it means you can continue querying for other items, using this token in the query parameters of the following request.<!--/source-->Example `eNolzLEKwkAQRdFfeZnGRvwAWxtBbOwsh2TcXYxvZJ2NBPHfNVpduMV5yf4gW8k2d5i9rSbDxRsHKGH6CKvfpoRCRDYctV4t7qP2hsH7djOGRnHKWk4LtHOmqtHG3+1w/ptPJ+iRC9NG3h89BijN` |

##### Other responses

`400``422`

`DELETE` `/ordered-flows/{site_flow_configuration_id}`

<!--source:api-specifications-->

#### Remove Configuration
<!--/source-->

`removeAppConfiguration`

<!--source:api-specifications-->

#### Remove Configuration

Removes configurations with all of its layouts.

<!--/source-->

##### Response

<!--source:api-specifications-->
400404
<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 404 status code occurs when a requested resource cannot be located.

```
{
 "error": {
 "message": "Not found.",
 "reason": "Flow(site_flow_configuration_id=`345e8795-eb14-24t3-a2-aaaa174000`)"
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `site_flow_configuration_id` required | `string` path | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Site flow configuration ID.<!--/source--> |

##### Other responses

`204``400``404`

`POST` `/system-feedback/ordered-flows/{site_flow_configuration_id}/sessions/{session_id}/transactions/{transaction_id}`

<!--source:api-specifications-->

#### Collect System Feedback
<!--/source-->

`collectSystemFeedback`

<!--source:api-specifications-->

#### Collect System Feedback

Collects system feedback for a given session and transaction IDs.

| Event type | Description | `base_elapsed_time` |
| --- | --- | --- |
| `start_session` | Indicates the start of a session. | The time elapsed in milliseconds since the start of the interaction with site. |
| `page_change` | Indicates a page change. | The time elapsed in milliseconds since the user has opened the page. |
| `end_session` | Indicates the end of a session. | The time elapsed in milliseconds since the start of the session. |
| `error` | Indicates error. | Can be set to `0` |
| `console_app_loaded` | Indicates the console app has been loaded. | The time elapsed in milliseconds since the "iframe" started loading. |

<!--/source-->

##### Request

<!--source:api-specifications-->
Start SessionConsole App LoadedPage ChangeEnd SessionSampled (Advanced)
<!--/source-->

<!--source:api-specifications-->
application/json Copy
```
{
 "events": [
 {
 "event_type": "start_session",
 "base_elapsed_time": 0
 }
 ]
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy
```
{
 "events": [
 {
 "event_type": "console_app_loaded",
 "base_elapsed_time": 1.2,
 "modifiers": {
 "configuration_id": "345e8795-eb14-24t3-a2-aaaa1748931"
 }
 }
 ]
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy
```
{
 "events": [
 {
 "event_type": "page_change",
 "base_elapsed_time": 9982
 }
 ]
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy
```
{
 "events": [
 {
 "event_type": "end_session",
 "base_elapsed_time": 112500
 }
 ]
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy
```
{
 "events": [
 {
 "event_type": "start_session",
 "base_elapsed_time": 0
 },
 {
 "event_type": "page_change",
 "base_elapsed_time": 3215
 },
 {
 "event_type": "page_change",
 "base_elapsed_time": 6152
 }
 ]
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
200400404422
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success

```
{
 "status": "SUCCEEDED"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 404 status code occurs when a requested resource cannot be located.

```
{
 "error": {
 "message": "Not found.",
 "reason": "Flow(site_flow_configuration_id=`345e8795-eb14-24t3-a2-aaaa174000`)"
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
3
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `site_flow_configuration_id` required | `string` path | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Site flow configuration ID.<!--/source--> |
| `session_id` required | `string` path | `5ed4be4e-4c4e-42-af36-9ddaaa2322ec` | <!--source:api-specifications-->An existing session ID (required)<!--/source--> |
| `transaction_id` required | `string` path | `5aa4be4e-4c4e-42-af36-9ddaaa2322ec` | <!--source:api-specifications-->An existing transaction ID associated with the session ID (required)<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
3 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `user` | `object` | <!--source:api-specifications-->Represents user object<!--/source--> |
| `user_guid`required | `string` | <!--source:api-specifications-->Global Unique Identifier of the user<!--/source--> |
| `location`required | `object` | <!--source:api-specifications-->Represents location object<!--/source--> |
| `ip_address` | `string` | <!--source:api-specifications-->IP address of the user<!--/source--> |
| `device`required | `object` | <!--source:api-specifications-->Represents device object<!--/source--> |
| `brand` | `string` | <!--source:api-specifications-->Device Brand<!--/source--> |
| `model` | `string` | <!--source:api-specifications-->Device Model<!--/source--> |
| `screen_resolution` | `string` | <!--source:api-specifications-->Screen resolution<!--/source--> |
| `browser_name` | `string` | <!--source:api-specifications-->Browser name<!--/source--> |
| `browser_version` | `string` | <!--source:api-specifications-->Browser version<!--/source--> |
| `operating_system` | `string` | <!--source:api-specifications-->Device OS<!--/source--> |
| `events`required | `array` | <!--source:api-specifications-->A list of event objects that contain system feedback information.<!--/source--> |
| `session_telemetry` | `object` | <!--source:api-specifications-->Represents session telemetry<!--/source--> |
| `start_time` | `string` | <!--source:api-specifications-->Session start timestamp<!--/source--> |
| `end_time` | `string` | <!--source:api-specifications-->Session end timestamp<!--/source--> |
| `load_time` | `integer` | <!--source:api-specifications-->Load time<!--/source--> |
| `time_spent` | `integer` | <!--source:api-specifications-->Time spent on site<!--/source--> |
| `number_of_clicks` | `integer` | <!--source:api-specifications-->Number of clicks on site<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `status`required | `string` | <!--source:api-specifications-->The status of the operation.<!--/source-->`SUCCEEDED`Example `SUCCEEDED` |

##### Other responses

`400``404``422`

`GET` `/deployments`

<!--source:api-specifications-->

#### List Deployments
<!--/source-->

`listLatestSitesDeployments`

<!--source:api-specifications-->

#### List Deployments

Retrieves list of active deployments.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400422
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success

```
{
 "deployments": [
 {
 "domain_name": "site-acdc27.product.staircaseapi.com",
 "site_flow_configuration_id": "15a820a6-cac9-4b-a7b1-d364b26d7f69"
 }
 ],
 "page": {
 "next_token": null,
 "count": 1
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
4
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `next_token` | `string` query | `eNolzLEKwkAQRdFfeZnGRvwAWxtBbOwsh2TcXYxvZJ2NBPHfNVpduMV5yf4gW8k2d5i9rSbDxRsHKGH6CKvfpoRCRDYctV4t7qP2hsH7djOGRnHKWk4LtHOmqtHG3+1w/ptPJ+iRC9NG3h89BijN` | <!--source:api-specifications-->The response can include a limited number of results along with a `next_token` value. You can use this `next_token` value in a subsequent API request to retrieve the next batch of items. `next_token` is located under the `page` object in the response.<!--/source--> |
| `limit` | `integer` query | `10` | <!--source:api-specifications-->List deployments limit<!--/source--> |
| `site_flow_configuration_id` | `string` query | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Site Flow Configuration ID. Exclusive with `site_domain_name` parameter.<!--/source--> |
| `site_domain_name` | `string` query | `site-b0964187.bohr.staircaseapi.com` | <!--source:api-specifications-->Domain name of the site. Can not be custom domain name, only deployment one is accepted. Exclusive with `site_flow_configuration_id` parameter.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `deployments`required | `object[]` | <!--source:api-specifications-->Represents the array of flow configurations.<!--/source--> |
| `site_flow_configuration_id`required | `string` | <!--source:api-specifications-->The ID of the site flow configuration.<!--/source-->Example `15a820a6-cac9-4b-a7b1-d364b26d7f69` |
| `domain_name`required | `string` | <!--source:api-specifications-->Site full domain name.<!--/source-->Example `site-000aaa.docs.staircaseapi.com` |
| `transaction_id` | `string` | <!--source:api-specifications-->Deployment transaction ID. Omitted when queried with `site_domain_name` query filter.<!--/source-->Example `01H021M9X10AN9XNNJ8THMMMMM` |
| `page`required | `object` | <!--source:api-specifications-->Page information. Contains basic information of the current page returned.<!--/source--> |
| `count`required | `integer` | <!--source:api-specifications-->Count of items that were retrieved for this page.<!--/source-->Example `1` |
| `next_token`required | `string` | <!--source:api-specifications-->If this field exists in the page information collection, it means you can continue querying for other items, using this token in the query parameters of the following request.<!--/source-->Example `eNolzLEKwkAQRdFfeZnGRvwAWxtBbOwsh2TcXYxvZJ2NBPHfNVpduMV5yf4gW8k2d5i9rSbDxRsHKGH6CKvfpoRCRDYctV4t7qP2hsH7djOGRnHKWk4LtHOmqtHG3+1w/ptPJ+iRC9NG3h89BijN` |

##### Other responses

`400``422`

`PUT` `/deployments`

<!--source:api-specifications-->

#### Deploy Configuration
<!--/source-->

`deployAppConfiguration`

<!--source:api-specifications-->

#### Deploy Configuration

Sites are installed under environment's subdomain. Each site configuration gets its own short ID, which is used in the future domain name of the site.

Example of the URL: site-3065e3b5.xchange.staircaseapi.com.

##### Observe deployment status

Events are sent in payloads of a “HTTP requests” using `POST` method.

```
{
 "$schema": "",
 "additionalProperties": true,
 "type": "object",
 "required": ["status", "transaction_id", "domain_name"],
 "description": "Schema for the payload event emitted to callback.",
 "properties": {
 "transaction_id": {
 "type": "string",
 "description": "Transaction identifier. Unique per deployment and managed by Site."
 },
 "status": {
 "type": "string",
 "description": "Provisioning status.",
 "enum": ["SUCCEEDED", "FAILED"]
 },
 "domain_name": {
 "type": "string",
 "description": "Domain name of the site."
 },
 "error": {
 "type": "object",
 "additionalProperties": true,
 "description": "Deployment has failed unexpectedly. Error details are provided in this object. Note that you should contact the support team when the error occurs."
 }
 }
}
```

###### Troubleshooting

Events are dispatched once the deployment process completes.

Show the rest An event is deemed as successfully delivered when its recipient acknowledges with an HTTP status code that falls within the range of successful responses. If an event isn't successfully delivered, the Site will make six additional attempts to resend the event, with each attempt following an exponential back off strategy.

To confirm the propagation of the webhook, you can utilize Retrieve Transaction Collections with the transaction ID, which is returned during the initialization of deployment.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "site_flow_configuration_id": "6374c7f8-13fa-454a-8587-bd29724346f7",
 "callback_url": "https://webhooks.staircaseapi.com/persistence/bridge/o09jun2kjhjkkkiDj"
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
400404422
<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 404 status code occurs when a requested resource cannot be located.

```
{
 "error": {
 "message": "Not found.",
 "reason": "Flow(site_flow_configuration_id=`345e8795-eb14-24t3-a2-aaaa174000`)"
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Request body`application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `site_flow_configuration_id`required | `string` | <!--source:api-specifications-->Site flow configuration ID.<!--/source-->Example `6374c7f8-13fa-454a-8587-bd29724346f7` |
| `callback_url`required | `string` | <!--source:api-specifications-->Callback URL.<!--/source-->Example `https://webhooks.staircaseapi.com/persistence/bridge/o09jun2kjhjkkkiDj` |

##### Response `200``application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `domain_name`required | `string` | <!--source:api-specifications-->Generated domain name for the site.<!--/source-->Example `site-abc00def.xchange.staircaseapi.com` |
| `transaction_id`required | `string` | <!--source:api-specifications-->Transaction ID.<!--/source-->Example `01H021M9X10AN9XNNJ8THMMMMM` |
| `callback_url` | `string` | <!--source:api-specifications-->The callback URL is returned as is. The value will match the input `callback_url`.<!--/source-->Example `https://webhooks.staircaseapi.com/persistence/bridge/o09jun2kjhjkkkiDj` |
| `site_flow_configuration_id` | `string` | <!--source:api-specifications-->Site flow configuration ID. The value will match the input `site_flow_configuration_id`.<!--/source-->Example `6374c7f8-13fa-454a-8587-bd29724346f7` |

##### Other responses

`400``404``422`

`POST` `/event-loop/sso/{site_flow_configuration_id}`

<!--source:api-specifications-->

#### Request SSO Links
<!--/source-->

`requestSSOLinks`

<!--source:api-specifications-->
Retrieves SSO links for the specified flow configuration. This is an automated process, intended for the browser environment by the frontend application.

If the origin is validated, and certain conditions are met – creates a new SSO application and returns SSO links. When the same origin already contains a mapped SSO application – returns SSO links.

#### Limitations

Only specific domain names are eligible for automatic SSO application issuance. The maximum amount of automatically managed SSO applications is `3` per site flow configuration.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400404422
<!--/source-->

<!--source:api-specifications-->
application/json Copy SSO links generated successfully.

```
{
 "access_sso_links": {
 "sso_provider": "Google",
 "sso_signin_link": "https://auth.bah.staircaseapi.com/oauth2/authorize?identity_provider=Google&redirect_uri=https://site-9873489.bah.staircaseapi.com&response_type=TOKEN&client_id=93414o1ml23chevrloh762oO9d&scope=email+openid+profile",
 "sso_logout_link": "https://auth.bah.staircaseapi.com/logout?client_id=93414o1ml23chevrloh762oO9d&response_type=TOKEN&logout_uri=https://site-9873489.bah.staircaseapi.com/logout"
 },
 "access_app_identifier": "6374c7f8-13fa-454a-8587-bd2000007"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 404 status code occurs when a requested resource cannot be located.

```
{
 "error": {
 "message": "Not found.",
 "reason": "Flow(site_flow_configuration_id=`345e8795-eb14-24t3-a2-aaaa174000`)"
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `site_flow_configuration_id` required | `string` path | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Site flow configuration ID.<!--/source--> |
| `sso_provider` required | `string` query | `Google` | <!--source:api-specifications-->The provider for Single Sign-On (SSO). Currently, only Google is supported.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
SSO links generated successfully.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `access_sso_links`required | `object` | <!--source:api-specifications-->Object proxied from Access. Contains the SSO links for the specified provider.<!--/source--> |
| `sso_provider` | `string` | <!--source:api-specifications-->The provider for Single Sign-On (SSO). Currently, only Google is supported.<!--/source-->Example `Google` |
| `sso_signin_link` | `string` | <!--source:api-specifications-->The SSO link for the specified provider.<!--/source-->Example `https://auth.bah.staircaseapi.com/oauth2/authorize?identity_provider=Google&redirect_uri=https://site-9873489.bah.staircaseapi.com&response_type=TOKEN&client_id=93414o1ml23chevrloh762oO9d&scope=email+openid+profile` |
| `sso_logout_link` | `string` | <!--source:api-specifications-->The SSO logout link for the specified provider.<!--/source-->Example `https://auth.bah.staircaseapi.com/logout?client_id=93414o1ml23chevrloh762oO9d&response_type=TOKEN&logout_uri=https://site-9873489.bah.staircaseapi.com/logout` |
| `access_app_identifier`required | `string (uuid)` | <!--source:api-specifications-->Access application identifier in UUID format.<!--/source-->Example `6374c7f8-13fa-454a-8587-bd2000007` |

##### Other responses

`400``401``404``407``422`

`POST` `/event-loop/logout`

<!--source:api-specifications-->

#### Logout
<!--/source-->

`logout`

<!--source:api-specifications-->
Resets access and ID token cookies for the current session.

Response contains same cookies from the request with expiration date set to the past.

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `__sc.acact` required | `string` cookie | `access-token` | <!--source:api-specifications-->Authentication access token<!--/source--> |
| `__sc.acidt` required | `string` cookie | `openid ID token in JWT format.` | <!--source:api-specifications-->Authentication ID token<!--/source--> |

##### Other responses

`204``400`

`GET` `/event-loop/workflows`

<!--source:api-specifications-->

#### Get State[new]
<!--/source-->

`getState`

<!--source:api-specifications-->
Get State
<!--/source-->

<!--source:api-specifications-->
Get state for the current user.

<!--/source-->

##### Response

<!--source:api-specifications-->
200 SomeState200 NoState400401422
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success

```
{
 "current_console": "89e820a6-cac9-4b-a7b1-d364b26d5552"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Success

```
{}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 401 status code occurs when a request is unauthorized.

```
{
 "error": {
 "message": "Token is not valid.",
 "reason": "Unauthorized."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
4
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `__sc.acact` required | `string` cookie | `access-token` | <!--source:api-specifications-->Authentication access token<!--/source--> |
| `__sc.acidt` required | `string` cookie | `openid ID token in JWT format.` | <!--source:api-specifications-->Authentication ID token<!--/source--> |
| `site_configuration` required | `string` query | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Site configuration ID.<!--/source--> |
| `site_workflow` required | `string` query | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Site workflow ID.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `current_console` | `string` | <!--source:api-specifications-->Current console ID.<!--/source-->Example `89e820a6-cac9-4b-a7b1-d364b26d5552` |

##### Other responses

`400``401``422`

`POST` `/event-loop/workflows`

<!--source:api-specifications-->

#### Set State[new]
<!--/source-->

`setState`

<!--source:api-specifications-->
Set State
<!--/source-->

<!--source:api-specifications-->
Set state for the current user.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "site_configuration": "6374c7f8-13fa-454a-8587-bd29724346f7",
 "site_workflow": "6374c7f8-13fa-454a-8587-bd29724346f7",
 "current_console": "89e820a6-cac9-4b-a7b1-d364b26d5552"
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
400401422
<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 401 status code occurs when a request is unauthorized.

```
{
 "error": {
 "message": "Token is not valid.",
 "reason": "Unauthorized."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `__sc.acact` required | `string` cookie | `access-token` | <!--source:api-specifications-->Authentication access token<!--/source--> |
| `__sc.acidt` required | `string` cookie | `openid ID token in JWT format.` | <!--source:api-specifications-->Authentication ID token<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
3 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `site_configuration`required | `string` | <!--source:api-specifications-->The ID of the site configuration.<!--/source-->Example `15a820a6-cac9-4b-a7b1-d364b26d7f69` |
| `site_workflow`required | `string` | <!--source:api-specifications-->The ID of the site workflow configuration.<!--/source-->Example `15a820a6-cac9-4b-a7b1-d364b26d7f69` |
| `current_console`required | `string` | <!--source:api-specifications-->Current console ID.<!--/source-->Example `89e820a6-cac9-4b-a7b1-d364b26d5552` |

##### Other responses

`204``400``401``422`

<!--source:api-specifications-->

### Distribute
<!--/source-->

`GET` `/pipeline/products/{product_name}/artifacts`

<!--source:api-specifications-->

#### Get Product Artifacts
<!--/source-->

`getProductArtifacts`

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "artifacts": [
 "Site",
 "Site Health Configuration",
 "Site Connector Configuration",
 "Site Documentation Configuration"
 ]
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `artifacts` | `string[]` | <!--source:api-specifications-->The list of artifacts<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`DELETE` `/pipeline/products/{product_name}/artifacts/{artifact_tag}`

<!--source:api-specifications-->

#### Delete Product Artifact
<!--/source-->

`deleteProductArtifact`

##### Response

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
3
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |
| `artifact_tag` required | `string` path | `SiteDocumentationConfig` | <!--source:api-specifications-->Product Artifact Tag.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`204``403`

`POST` `/pipeline/publish`

<!--source:api-specifications-->

#### Publish Artifact
<!--/source-->

`publishArtifact`

<!--source:api-specifications-->
Publish your Artifacts

You can add Site product in your DevOps pipeline. Site is compatible with Staircase's other Ship products. Site can accept the bundle of the Market Place as an artifact input.

#### Swagger Files

You need to specify you swagger path in your `service.yml` or `data.yml' file.
```
documentation:
 path: requirements/swagger.yml
```

Also, if you don't want to publish swagger, you can specify it in the yml. Default is true

Show the rest
```
documentation:
 publish: false
 path: requirements/swagger.yml
```

If you want to put link to a file in your swagger, you can use Upload Public Content API and place the `download_url` in your swagger file.

#### Product Component Ordering

If you want to set order for your product's components, in service yml file you can specify it as follows:

```
documentation:
 publish: true
 path: requirements/swagger.yml
 components:
 ordering:
 - 'Tech: Ontology'
 - 'Tech: Open Api'
 - 'Tech: Component Ordering'
 - 'Tech: Overview'
 - 'Tech: Quick Start Guides'
 - 'Marketing: Companies'
 - 'Marketing: Product Ontology'
 - 'Distribute'
```

! Note: If your product has multiple artifacts due to microservices, you can choose one main configuration repo for your product's site(documentation) config and set components' order.

#### Product Overview Page

All products have an overview page which describes the product usage and workflow. The product’s overview page is located in the product repo /requirements folder. File name is “overview.md”. Content in the /requirements/overview.md file is displayed when the product name is clicked in the api.staircase.co left-hand navigation bar.

#### Product Icons/Images

Product icons and images can be put in the product repo /requirements/public folder. They can be referenced in the overview file like `<img src="image_name.png" alt="Alt Text" />`. Site will automatically upload images and modify the image paths to point to the correct URL. ! Note: You should avoid using spaces at your content name

#### Product Quick Start Guides

Detailed guide of how-to attach product Quick Start Guides under the product bundle

#### Links to custom files

Any downloadable file you want to serve in overview page should be placed to product repo /requirements/public folder. They can be referenced in the overview file like `Link Text`. Site will automatically upload the files and modify the path to point to the correct URL.

##### Left-Hand Navigation Sidebar

The left-hand navigation sidebar for api.staircase.co is automatically built based on custom extensions in the product’s swagger file. Every swagger file needs these 3 custom extensions added after the “title” property. You only need to specify these extensions once per swagger file.

- `x-product-family:` family the product should be listed under
- `x-product-category:` category the product should be listed under
- `x-product-name:` product name.

Every endpoint within the swagger file needs these 3 custom extensions added after the “path” property:

- `x-product-component:` the name of the component under which the endpoint should be grouped
- `x-product-endpoint:` the name of the endpoint
- `x-product-sequence:` the sequence in which the endpoint should appear under the component.

Both: `x-product-component` and/or `x-product-endpoint` can be defined as:

- `x-product-*: value[new]` it will add "NEW" pill to the x-product-*
- `x-product-*: value[deprecated]` it will add "DEPRECATED" pill to the x-product-*
- `x-product-*: value[warning]` it will add "WARNING" pill to the x-product-*
- `x-product-*: value[updated]` it will add "UPDATED" pill to the x-product-*
! Note: `x-product-*` value at Technical Site will not contain `[*pill*]` text while rendering. It will render pill instead.

##### Multiple Swagger Files for One Product

To publish multiple swagger files to the same product, make sure that the x-product-name extension in every repo’s swagger file must be given the same product name. For example, if the “Tax” product is associated with 5 different swagger files and repos, every swagger file/repo must provide the name “Tax” as x-product-name.

The product name must match a product name in the product ontology.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "artifact_url": "https://dev-marketplace-bundles-bucket-us-east-1-581813358386.s3.amazonaws.com/SERVICE/Automated%20Underwriting%20System%20%28AUS%29/01G110WHPJFCGMD0YHF8G6PAKB?AWSAccessKeyId=<redacted>&Signature=<redacted>&x-amz-security-token=<redacted>&Expires=1650459612",
 "artifact_tag": "Automated Underwriting System (AUS)"
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Approval uploaded

```
{
 "publish_id": "01G13DH3PRSTQQQRK186PWF9GC"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Request body`application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `artifact_url` | `string` | <!--source:api-specifications-->Artifact URL<!--/source--> |
| `artifact_tag` | `string` | <!--source:api-specifications-->Artifact Tag<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Approval uploaded
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `publish_id` | `string` | <!--source:api-specifications-->Publish started<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/pipeline/publish/{publish_id}`

<!--source:api-specifications-->

#### Get Publish Status
<!--/source-->

`getProductPublish`

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "status": "COMPLETED",
 "message": "Published Successfully"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |
| `publish_id` required | `string` path | `01G13DH3PRSTQQQRK186PWF9GC` | <!--source:api-specifications-->Publish ID.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `status` | `string` | <!--source:api-specifications-->Publish Status<!--/source-->`COMPLETED``FAILED``RUNNING` |
| `message` | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

<!--source:api-specifications-->

### SuCo
<!--/source-->

`POST` `/process`

<!--source:api-specifications-->

#### Match with MDL
<!--/source-->

`process`

<!--source:api-specifications-->
Process
<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "callback_url": "https://callback.url",
 "data": {
 "people": [
 {
 "@id": "1",
 "first_name": "John",
 "last_name": "Doe"
 }
 ],
 "addresses": [
 {
 "@id": "2",
 "address_line_1": "123 Main St",
 "city": "Springfield",
 "state_code": "IL",
 "postal_code": "62701"
 }
 ]
 }
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
202400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Accepted

```
{
 "message": "Accepted"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Request data invalid

```
{
 "message": "Request body is invalid."
}
```

<!--/source-->

##### Request body`application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `callback_url` | `string` | <!--source:api-specifications-->Callback URL<!--/source-->Example `https://callback.url` |
| `data` | `object` | <!--source:api-specifications-->Data<!--/source--> |

##### Response `202``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Accepted
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Request data invalid
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Error message<!--/source--> |

<!--source:api-specifications-->

### Tech: Ontology
<!--/source-->

`POST` `/tech/ontology`

<!--source:api-specifications-->

#### Save Product Ontology
<!--/source-->

`saveOntology`

<!--source:api-specifications-->
Product Ontology defines concepts, relations among them and axioms to be applied in the complex product modeling domain

Ontology consists of product families. Every family is a set of products which share a common, managed set of features that satisfy the specific needs of a particular market segment and are developed from a common set of core assets in a prescribed way

Publish products ontology. It will be used to show ordered product families, categories, and products in the navigation bar. When ontology contains not published product, then it will not be shown in the navigation bar. When ontology does not have a product, it will be shown at the end of the list.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "ontology": {
 "product_families": [
 {
 "name": "Mortgage Products",
 "product_categories": [
 {
 "name": "Data Manager",
 "products": [
 {
 "name": "Document Classification"
 },
 {
 "name": "Data Extraction"
 },
 {
 "name": "Ground Truth Labeling"
 }
 ]
 },
 {
 "name": "Borrower",
 "products": [
 {
 "name": "Employment"
 },
 {
 "name": "Credit"
 },
 {
 "name": "Income"
 },
 {
 "name": "Assets"
 }
 ]
 },
 {
 "name": "Collateral",
 "products": [
 {
 "name": "Automated Valuation Model (AVM)"
 },
 {
 "name": "Property Taxes"
 }
 ]
 },
 {
 "name": "Loan",
 "products": [
 {
 "name": "Pricing"
 },
 {
 "name": "Fees"
 }
 ]
 },
 {
 "name": "Adapters",
 "products": [
 {
 "name": "LOS"
 }
 ]
 }
 ]
 },
 {
 "name": "Mortgage Processes",
 "product_categories": [
 {
 "name": "Application",
 "products": [
 {
 "name": "Pre-Approval"
 }
 ]
 },
 {
 "name": "Underwriting",
 "products": [
 {
 "name": "Loan Eligibility"
 },
 {
 "name": "Automated Underwriting System (AUS)"
 }
 ]
 },
 {
 "name": "Servicing",
 "products": [
 {
 "name": "Loanboarding"
 }
 ]
 }
 ]
 }
 ]
 }
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
201 application/json201 application/json400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "DevOps": {
 "Ship": [
 "Build",
 "Deploy"
 ],
 "Distribute": [
 "Marketplace",
 "Environment",
 "Documentation"
 ]
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "ontology": {
 "product_families": [
 {
 "name": "Mortgage Products",
 "product_categories": [
 {
 "name": "Data Manager",
 "products": [
 {
 "name": "Document Classification"
 },
 {
 "name": "Data Extraction"
 },
 {
 "name": "Ground Truth Labeling"
 }
 ]
 },
 {
 "name": "Borrower",
 "products": [
 {
 "name": "Employment"
 },
 {
 "name": "Credit"
 },
 {
 "name": "Income"
 },
 {
 "name": "Assets"
 }
 ]
 },
 {
 "name": "Collateral",
 "products": [
 {
 "name": "Automated Valuation Model (AVM)"
 },
 {
 "name": "Property Taxes"
 }
 ]
 },
 {
 "name": "Loan",
 "products": [
 {
 "name": "Pricing"
 },
 {
 "name": "Fees"
 }
 ]
 },
 {
 "name": "Adapters",
 "products": [
 {
 "name": "LOS"
 }
 ]
 }
 ]
 },
 {
 "name": "Mortgage Processes",
 "product_categories": [
 {
 "name": "Application",
 "products": [
 {
 "name": "Pre-Approval"
 }
 ]
 },
 {
 "name": "Underwriting",
 "products": [
 {
 "name": "Loan Eligibility"
 },
 {
 "name": "Automated Underwriting System (AUS)"
 }
 ]
 },
 {
 "name": "Servicing",
 "products": [
 {
 "name": "Loanboarding"
 }
 ]
 }
 ]
 }
 ]
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `ontology` | `object` | <!--source:api-specifications-->Ontology<!--/source--> |
| `product_families` | `object[]` | <!--source:api-specifications-->Family List<!--/source--> |
| `name` | `string` | <!--source:api-specifications-->Family name<!--/source--> |
| `product_categories` | `object[]` | <!--source:api-specifications-->Category List<!--/source--> |
| `name` | `string` | <!--source:api-specifications-->Category name<!--/source--> |
| `products` | `object[]` | <!--source:api-specifications-->Product List<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`201``403`

`DELETE` `/tech/ontology`

<!--source:api-specifications-->

#### Delete Product Ontology
<!--/source-->

`deleteOntology`

<!--source:api-specifications-->
Delete products ontology
<!--/source-->

<!--source:api-specifications-->
Delete products ontology.

<!--/source-->

##### Response

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`204``403`

`GET` `/tech/ontology`

<!--source:api-specifications-->

#### Retrieve Product Ontology
<!--/source-->

`getOntology`

<!--source:api-specifications-->
Retrieve products ontology
<!--/source-->

<!--source:api-specifications-->
Retrieve products ontology.

<!--/source-->

##### Response

<!--source:api-specifications-->
200 application/json200 application/json400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "DevOps": {
 "Ship": [
 "Build",
 "Deploy"
 ],
 "Distribute": [
 "Marketplace",
 "Environment",
 "Documentation"
 ]
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "ontology": {
 "product_families": [
 {
 "name": "Mortgage Products",
 "product_categories": [
 {
 "name": "Data Manager",
 "products": [
 {
 "name": "Document Classification"
 },
 {
 "name": "Data Extraction"
 },
 {
 "name": "Ground Truth Labeling"
 }
 ]
 },
 {
 "name": "Borrower",
 "products": [
 {
 "name": "Employment"
 },
 {
 "name": "Credit"
 },
 {
 "name": "Income"
 },
 {
 "name": "Assets"
 }
 ]
 },
 {
 "name": "Collateral",
 "products": [
 {
 "name": "Automated Valuation Model (AVM)"
 },
 {
 "name": "Property Taxes"
 }
 ]
 },
 {
 "name": "Loan",
 "products": [
 {
 "name": "Pricing"
 },
 {
 "name": "Fees"
 }
 ]
 },
 {
 "name": "Adapters",
 "products": [
 {
 "name": "LOS"
 }
 ]
 }
 ]
 },
 {
 "name": "Mortgage Processes",
 "product_categories": [
 {
 "name": "Application",
 "products": [
 {
 "name": "Pre-Approval"
 }
 ]
 },
 {
 "name": "Underwriting",
 "products": [
 {
 "name": "Loan Eligibility"
 },
 {
 "name": "Automated Underwriting System (AUS)"
 }
 ]
 },
 {
 "name": "Servicing",
 "products": [
 {
 "name": "Loanboarding"
 }
 ]
 }
 ]
 }
 ]
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`200``403`

<!--source:api-specifications-->

### Tech: Open Api
<!--/source-->

`POST` `/tech/products`

<!--source:api-specifications-->

#### Add Product Documentation
<!--/source-->

`saveProduct`

<!--source:api-specifications-->

#### Publish Your Open API Definition of your product

1. Every swagger file needs these 3 custom extensions added after the “title” property. You only need to specify these extensions once per swagger file.
- `x-product-family:` family the product should be listed under, either Mortgage, Platform or DevOps
- `x-product-category:` category the product should be listed under (e.g. Borrower, Distribute, Integrate)
- `x-product-name:` product name. This name must match a product name in the product ontology spreadsheet.

1. Every endpoint within the swagger file needs these 3 custom extensions added after the “path” property:
- `x-product-component:` the name of the component under which the endpoint should be grouped
- `x-product-endpoint:` the name of the endpoint
- `x-product-sequence:` the sequence in which the endpoint should appear under the component.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "swagger": {}
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `swagger` | `object` | <!--source:api-specifications-->Open API Definition<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`202``403`

`DELETE` `/tech/products/{product_name}`

<!--source:api-specifications-->

#### Delete Product Documentation
<!--/source-->

`deleteProduct`

##### Response

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`204``403`

`GET` `/tech/sidebar`

<!--source:api-specifications-->

#### Get sidebar
<!--/source-->

`getSideBar`

<!--source:api-specifications-->
Retrieve the sidebar data.

<!--/source-->

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `products_side_bar` | `string` | <!--source:api-specifications-->List of products for sidebar.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/tech/products/{product_name}/openapi/paths/{openapi_method_id}`

<!--source:api-specifications-->

#### Get Open API Method Definition
<!--/source-->

`getOpenApiPath`

<!--source:api-specifications-->
Get Open API path definitions.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "openapi_paths": {
 "method": "get",
 "service_name": "Build",
 "base_path": "infra-builder",
 "env_domain": "template.staircaseapi.com",
 "path": "/builds/{build_id}",
 "sidebar_path": "/docs/DevOps/Ship/Build/get-build-status",
 "operation_id": null,
 "description": "**Retrieve Service Build Status**",
 "summary": "Get build status",
 "request_body": null,
 "responses": [
 {
 "response_code": "200",
 "content": {
 "application/json": {
 "schema": {
 "type": "object",
 "properties": {
 "build_id": {
 "type": "string",
 "description": "Unique build id which was returned when build was started",
 "format": "uuid"
 },
 "status": {
 "type": "string",
 "description": "Build status (IN_PROGRESS, FAILED, SUCCEEDED)"
 },
 "artifacts_url": {
 "type": "string",
 "format": "url",
 "description": "Artifact URL if build was successfully completed"
 },
 "logs": {
 "type": "array",
 "description": "Build Logs which can be used for build problem investigation",
 "items": {
 "type": "string"
 }
 },
 "metadata": {
 "type": "object",
 "description": "Metadata generated by build"
 }
 }
 },
 "example": {
 "build_id": "7ac245b7-2f93-4850-8e86-abfdfd3b0a76",
 "status": "SUCCEEDED",
 "metadata": {
 "service-assessor": {
 "id": "devops-code-assessor:e5dcb19e-b025-4255-a42f-7f501456703c",
 "timestamp": 1623399920.05132,
 "version": "1.0.0",
 "issuer": "https://build.staircaseapi.com/code-assessor",
 "status": "SUCCEEDED"
 },
 "service-code": {
 "id": "0da65dfd-9753-4bb4-8853-06e608979e73",
 "timestamp": 1623399796.747468,
 "version": "1.1",
 "status": "SUCCEEDED",
 "commit_hash": "c366156be0d8a39ce9a7bf85a5f5d5fc1a59ba4c",
 "issuer": "https://build.staircaseapi.com/code"
 },
 "service-builder": {
 "id": "7ac245b7-2f93-4850-8e86-abfdfd3b0a76",
 "timestamp": 1623400025.2152104,
 "version": "1.1",
 "status": "SUCCEEDED",
 "bundle_type": "SERVICE",
 "issuer": "https://build.staircaseapi.com/infra-builder"
 }
 },
 "artifacts_url": "https://builder-api-dev-codebuilddevbucket-kkwqngshvjap.s3.amazonaws.com/build-main/build/7ac245b7-2f93-4850-8e86-abfdfd3b0a76/build.zip",
 "logs": []
 }
 }
 },
 "description": "200 response"
 }
 ]
 }
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |
| `openapi_method_id` required | `string` path | `publishDocumentation` | <!--source:api-specifications-->Path which was specified as 'operationId' in api method definition in product swagger file.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `openapi_paths` | `object` | <!--source:api-specifications-->Open API paths definition.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

<!--source:api-specifications-->

### Tech: Component Ordering
<!--/source-->

`GET` `/tech/products/{product_name}/components/ordering`

<!--source:api-specifications-->

#### Retrieve Product Component Ordering
<!--/source-->

`retrieveProductComponentOrdering`

##### Response

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-component' in product swagger file.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`200``403`

`POST` `/tech/products/{product_name}/components/ordering`

<!--source:api-specifications-->

#### Add Product Component Ordering
<!--/source-->

`addProductComponentOrdering`

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "order_list": [
 "COMP_1",
 "COMP_2",
 "COMP_3"
 ]
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "order_list": [
 "COMP_1",
 "COMP_2",
 "COMP_3"
 ]
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-component' in product swagger file.<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `order_list` | `string[]` | <!--source:api-specifications-->Component Ordering<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `order_list` | `string[]` | <!--source:api-specifications-->Component Ordering<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Not Authorized
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

<!--source:api-specifications-->

### Tech: Quick Start Guides
<!--/source-->

`DELETE` `/tech/products/{product_name}/quickstart-guides/{quickstart_guide_id}`

<!--source:api-specifications-->

#### Delete Quick Start Guide
<!--/source-->

`deleteQuickStartGuide`

##### Response

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |
| `quickstart_guide_id` required | `string` path | `how-to-distribute-site` | <!--source:api-specifications-->Quick Start Guide Id.<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`204``403`

`GET` `/tech/products/{product_name}/quickstart-guides`

<!--source:api-specifications-->

#### Retrieve Quick Start Guides
<!--/source-->

`getProductQuickStartGuides`

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
[
 {
 "id": "how-to-distribute-site",
 "name": "How To Distribute Site",
 "description": "Description of How To Distribute Site",
 "type": "markdown",
 "data": "<!DOCTYPE html>\n<p><html lang=\"en\">\n<head>\n</head></p></html></p>"
 }
]
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
5 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `id` | `string` | <!--source:api-specifications-->Quick Start Guide ID.<!--/source-->Example `how-to-distribute-site` |
| `name` | `string` | <!--source:api-specifications-->Quick Start Guide name.<!--/source-->Example `How To Distribute Site` |
| `description` | `string` | <!--source:api-specifications-->Quick Start Guide description.<!--/source-->Example `Description of How To Distribute Site` |
| `type` | `string` | <!--source:api-specifications-->Quick Start Guide type.<!--/source-->Example `markdown` |
| `data` | `string` | <!--source:api-specifications-->Quick Start Guide content.<!--/source-->Example `<!DOCTYPE html> <p><html lang="en"> <head> </head></p></html></p>` |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`POST` `/tech/products/{product_name}/quickstart-guides`

<!--source:api-specifications-->

#### Add Quick Start Guide
<!--/source-->

`postQuickStartGuide`

<!--source:api-specifications-->
Add Quick Start Guide

#### Attaching Quick Start Guides via bundle

Site platform is able to parse Quick Start Guides from your bundle automatically. To get your Quick Start Guides be parsed from your bundle, just create the following structure:

```
/requirements/quick-start-guides/dictionary.json
/requirements/quick-start-guides/guide1.md
/requirements/quick-start-guides/guide2.md
...etc
```

/requirements/quick-start-guides/dictionary.json

Show the rest This file contains your Quick Start Guides descriptions, names and paths to MD files. Example:

```
{
 "guide_1_name": {
 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.",
 "path": "guide1.md"
 },
 "guide_2_name": {
 "description": "Quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
 "path": "guide2.md"
 }
}
```

! Note: Quick Start Guide Definition can accept an images/custom files described at Site: Publish Artifact endpoint.

! Note: Custom Files/images should be present under the same product name as Quick Start Guide

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "name": "How to publish documentation via pipeline",
 "description": "Complete how-to...",
 "type": "markdown",
 "data": "<!DOCTYPE html>\n<p><html lang=\"en\">\n<head>\n</head></p></html></p>"
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
201400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Example response

```
{
 "id": "0944f479-3b23-4a9e-b193-b3df37825525"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-component' in product swagger file.<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `name` | `string` | <!--source:api-specifications-->Quick Start Guide Name<!--/source--> |
| `description` | `string` | <!--source:api-specifications-->Quick Start Guide Description<!--/source--> |
| `type` | `string` | <!--source:api-specifications-->Quick Start Guide Type<!--/source-->`markdown` |
| `data` | `string` | <!--source:api-specifications-->Quick Start Guide Data<!--/source--> |

##### Response `201``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Example response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `id`required | `string` | <!--source:api-specifications-->Quick Start Guide ID<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/tech/products/{product_name}/quickstart-guides/{quickstart_guide_id}`

<!--source:api-specifications-->

#### Retrieve Quick Start Guide
<!--/source-->

`getQuickStartGuide`

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "type": "markdown",
 "description": "description",
 "name": "Quick Start Guide name",
 "data": "<!DOCTYPE html>\n<p><html lang=\"en\">\n<head>\n</head></p></html></p>"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |
| `quickstart_guide_id` required | `string` path | `how-to-distribute-site` | <!--source:api-specifications-->Quick Start Guide Id.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `name` | `string` | <!--source:api-specifications-->Quick Start Guide name.<!--/source-->Example `Quick Start Guide name` |
| `type` | `string` | <!--source:api-specifications-->Quick Start Guide type.<!--/source-->Example `markdown` |
| `description` | `string` | <!--source:api-specifications-->Quick Start Guide description.<!--/source-->Example `description` |
| `data` | `string` | <!--source:api-specifications-->Quick Start Guide content.<!--/source-->Example `<!DOCTYPE html> <p><html lang="en"> <head> </head></p></html></p>` |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`PUT` `/tech/products/{product_name}/quickstart-guides/{quickstart_guide_id}`

<!--source:api-specifications-->

#### Update Quick Start Guide
<!--/source-->

`putQuickStartGuide`

<!--source:api-specifications-->
Update Quick Start Guide

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "name": "How to publish documentation via pipeline",
 "description": "Complete how-to...",
 "type": "markdown",
 "data": "<!DOCTYPE html>\n<p><html lang=\"en\">\n<head>\n</head></p></html></p>"
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
201400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Example response

```
{
 "id": "0944f479-3b23-4a9e-b193-b3df37825525"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |
| `quickstart_guide_id` required | `string` path | `how-to-distribute-site` | <!--source:api-specifications-->Quick Start Guide Id.<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `name` | `string` | <!--source:api-specifications-->Quick Start Guide Name<!--/source--> |
| `description` | `string` | <!--source:api-specifications-->Quick Start Guide Description<!--/source--> |
| `type` | `string` | <!--source:api-specifications-->Quick Start Guide Type<!--/source-->`markdown` |
| `data` | `string` | <!--source:api-specifications-->Quick Start Guide Data<!--/source--> |

##### Response `201``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Example response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `id`required | `string` | <!--source:api-specifications-->Quick Start Guide ID<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

<!--source:api-specifications-->

### Customer Ticket
<!--/source-->

`POST` `/tech/products/{product_name}/ticket`

<!--source:api-specifications-->

#### New Ticket
<!--/source-->

`postCustomerTicket`

<!--source:api-specifications-->
Create Customer Ticket
<!--/source-->

<!--source:api-specifications-->
What it does

This endpoint creates a new Zendesk Ticket using the information passed in the request.

Registering Zendesk as partner

To register Zendesk as a partner in a given environment, please get the correct client_id and secret according to the following documentation:

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "name": "Test Ticket Title",
 "description": "This is a description for the test ticket",
 "requester_name": "John Doe",
 "requester_email": "john.doe@example.com",
 "source_id": "test_id_for_source",
 "priority": "low",
 "type": "defect",
 "attachments": [
 "01G4YJ1F9K8ER3GGQEBFZGH5W"
 ]
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-component' in product swagger file.<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
8 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `name`required | `string` | <!--source:api-specifications-->Ticket Title<!--/source--> |
| `description`required | `string` | <!--source:api-specifications-->Description<!--/source--> |
| `requester_name`required | `string` | <!--source:api-specifications-->Requester Name<!--/source--> |
| `requester_email`required | `string` | <!--source:api-specifications-->Requester Email<!--/source--> |
| `source_id`required | `string` | <!--source:api-specifications-->The URL of the page where the ticket was created<!--/source--> |
| `priority`required | `string` | <!--source:api-specifications-->Priority<!--/source-->`high``low``normal``urgent` |
| `type`required | `string` | <!--source:api-specifications-->Ticket Type<!--/source-->`comment``cr``defect``other``question` |
| `attachments` | `string[]` | <!--source:api-specifications-->The list of Blob ID<!--/source--> |

##### Response `201``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Ok.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Success Message.<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`400``401``403``404`

`POST` `/tech/products/{product_name}/ticket/attachments-blobs`

<!--source:api-specifications-->

#### Customer Ticket Attachment Blobs
<!--/source-->

`postCustomerTicketAttachmentBlobs`

<!--source:api-specifications-->
What it does

This endpoint creates list of blobs for attachments

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "attachments": [
 {
 "file_type": "image/png"
 }
 ]
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-component' in product swagger file.<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `attachments`required | `object[]` | <!--source:api-specifications-->List of attachment information<!--/source--> |
| `file_type`required | `string` | <!--source:api-specifications-->Mime type of the file<!--/source--> |

##### Response `201``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Ok.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `blobs` | `object[]` | <!--source:api-specifications-->Blobs array.<!--/source--> |
| `blob_id` | `string` | <!--source:api-specifications-->Blob ID<!--/source--> |
| `upload_Presigned_URL` | `string` | <!--source:api-specifications-->Upload URL<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`400``401``403``404`

<!--source:api-specifications-->

### Sitemap
<!--/source-->

`POST` `/updates`

<!--source:api-specifications-->

#### Update Sitemap
<!--/source-->

`UpdateSitemap`

<!--source:api-specifications-->
Update Sitemap with new data

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy Minimal GraphQL selection you’re using

```
{
 "webhookId": "wh_123",
 "id": "evt_abc",
 "createdAt": "2025-08-22T10:10:00Z",
 "type": "GRAPHQL_EVENT",
 "event": {
 "data": {
 "block": {
 "logs": [
 {
 "data": "0x162B87B2044BFCCD1BABE22DE6734BFCFBD995D81DC9CEC65A7CC384E692981A5"
 },
 {
 "data": "0xabc123...deadbeef"
 }
 ]
 }
 }
 }
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
401 missing401 invalid
<!--/source-->

<!--source:api-specifications-->
application/json Copy Missing or invalid signature header.

```
{
 "error": "Missing signature"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Missing or invalid signature header.

```
{
 "error": "Invalid signature"
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-alchemy-signature` required | `string` header | `some-hashed-signature` | <!--source:api-specifications-->HMAC-SHA256 hex digest of the **raw** request body using the server's SIGNING_KEY.<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
5 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `webhookId`required | `string` | <!--source:api-specifications-->Unique identifier of the Alchemy webhook configuration that triggered this delivery.<!--/source--> |
| `id`required | `string` | <!--source:api-specifications-->Unique identifier of this specific webhook delivery attempt/event.<!--/source--> |
| `createdAt`required | `string (date-time)` | <!--source:api-specifications-->ISO 8601 timestamp when Alchemy created the webhook event.<!--/source--> |
| `type`required | `string` | <!--source:api-specifications-->Classification of the webhook event from Alchemy (opaque to the service).<!--/source--> |
| `event`required | `object` | <!--source:api-specifications-->Container for the actual GraphQL execution result returned by Alchemy for your query.<!--/source--> |
| `data` | `object` | <!--source:api-specifications-->Root GraphQL data object containing the block payload.<!--/source--> |
| `block` | `object` | <!--source:api-specifications-->The matched block that produced the filtered logs.<!--/source--> |
| `logs` | `object[]` | <!--source:api-specifications-->Array of log entries that matched your address/topic filters within the block.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Sitemap Updated Succesfully
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `status` | `string` | <!--source:api-specifications-->Human-readable status string; "ok" on success.<!--/source-->Example `ok` |
| `dataHashesFound` | `integer` | <!--source:api-specifications-->Count of dataHash values extracted from the payload.<!--/source--> |

##### Response `401``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Missing or invalid signature header.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Short, non-sensitive reason for the failure (e.g., "Invalid JSON").<!--/source--> |

##### Other responses

`403`

<!--source:api-specifications-->

### Custom Site
<!--/source-->

`POST` `/verifications`

<!--source:api-specifications-->

#### Attach Site to Domain
<!--/source-->

`registerCustomDomain`

<!--source:api-specifications-->
Add custom domain to the existing website
<!--/source-->

<!--source:api-specifications-->

#### Attach Site to Domain

This endpoint enables you to easily and securely register custom domain names for your website, providing a personalized and branded experience for your users. This service benefits businesses that want to expand their online presence, create separate marketing and technical sites.

Utilizing this endpoint, you can efficiently request a new SSL certificate for the specified domain(s).

Show the rest This endpoint works by combining two independent functions:

- Issue and validate the certificate for provided domain names.
- Attach certificate to existing Site Configuration.
- Mirror and deliver content of sites mentioned above using your custom domain name.

In order to clone technical or marketing websites – apply for a verification and check verification results in:

Note that custom domains are attached to the deployed version of the site. Make sure you deploy it before mirroring onto custom domain.

#### FAQ

##### How many domains can I include per certificate?

Currently, only two domain names can be included under the same certificate.

##### Can I register my root domain?

Typically, DNS standards don't allow for CNAME records at the zone apex (also known as the root domain or naked domain). This is because a CNAME record can't coexist with any other data for the same name, and at the zone apex there are always other records, like SOA or NS records. However, some DNS providers provide a way to register records that are not bound to IP-addresses (`A` and `AAAA`). List of DNS providers known to support or not support alias records at the apex zone:

| Provider | Can Have Alias at Apex Zone | Specific Feature Used |
| --- | --- | --- |
| AWS Route 53 | Yes | Alias Records |
| Cloudflare | Yes | CNAME Flattening |
| Azure DNS | Yes | Alias Records |
| DNSimple | Yes | ALIAS Records |
| DNS Made Easy | Yes | ANAME Records |
| NS1 | Yes | ALIAS Records |
| Google Cloud DNS | No | N/A |

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "domain_names": [
 "dmn.foreign.staircaseapi.com"
 ],
 "company_id": "01F7Z8J1M8G8W9XKVX9G1JQFN2",
 "transaction_id": "01F7Z8J1M8G8W9XKVX9G1JQFN2",
 "site_id": "00000aa0000-4080-0aa0-000-000aa00000aa"
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Request body`application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `domain_names`required | `string[]` | <!--source:api-specifications-->List of domain names to be registered. Accepts up to two domain names.<!--/source--> |
| `company_id`required | `string` | <!--source:api-specifications-->The company identifier – requester of the custom assignment<!--/source-->Example `01F7Z8J1M8G8W9XKVX9G1JQFN2` |
| `transaction_id`required | `string` | <!--source:api-specifications-->A unique transaction identifier<!--/source-->Example `01F7Z8J1M8G8W9XKVX9G1JQFN2` |
| `site_id`required | `string` | <!--source:api-specifications-->Site Configuration identifier.<!--/source-->Example `00000aa0000-4080-0aa0-000-000aa00000aa` |

##### Response `200``application/json`

<!--source:api-specifications-->
3 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `domains` | `object[]` | <!--source:api-specifications-->List of registered domain names.<!--/source--> |
| `domain_name` | `string` | <!--source:api-specifications-->The custom domain name<!--/source-->Example `dmn.foreign.staircaseapi.com` |
| `domain_id` | `string` | <!--source:api-specifications-->The unique identifier for the domain<!--/source-->Example `c206b986-0a9f-4b88-82b3-67afea9bd9` |
| `certificate_id` | `string` | <!--source:api-specifications-->The unique identifier for the SSL certificate<!--/source-->Example `c206b986-0a9f-4b88-82b3-67afea9bd9` |
| `certificate_id` | `string` | <!--source:api-specifications-->The unique identifier for the SSL certificate<!--/source-->Example `c206b986-0a9f-4b88-82b3-67afea9bd9` |
| `transaction_id` | `string` | <!--source:api-specifications-->The unique identifier for the verification process<!--/source-->Example `01F7Z8J1M8G8W9XKVX9G1JQFE2` |

##### Other responses

`422`

`GET` `/verifications/{transaction_id}`

<!--source:api-specifications-->

#### Check Certificate and DNS Records
<!--/source-->

`checkCustomDomainValidation`

<!--source:api-specifications-->
Check the status of certificate verification
<!--/source-->

<!--source:api-specifications-->

#### Check Certificate and DNS Records

Retrieves DNS records required to be set up. At the same time retrieves certificate issuance status.

Each record under `records` array must be created under corresponding domain name's DNS management system. Only after that certificate will become valid.

Note: It can take up to 72 hours for the certificate to be validated.

Show the rest

#### DNS providers

##### GoDaddy

When using GoDaddy as a DNS provider, if you create a `CNAME` record, it will automatically add the `@` (root) directive at the end of the record's name. Therefore, if you receive a record with the following information:

```
{
 "type": "CNAME",
 "name": "_657987justAnExample2o8ade532806ee.pre-approval.example.com.",
 "value": "_9d20eb7EjustAnotherExample140fd4476.rotmnwfxf.acm-validations.aws."
 "validation_status": "PENDING_VALIDATION"
}
```

You should insert the record as shown in the following example:

- `_657987justAnExample2o8ade532806ee.pre-approval` (no `.example.com.` at the end) as a name for the record
- `_9d20eb7EjustAnotherExample140fd4476.rotmnwfxf.acm-validations.aws.` as a value for the record
- For the record type select `CNAME`

##### Route53

###### Apex zone

Create certificate validation record as usual. For the content delivery record at the zone apex, please follow:

1. Log in to the AWS Management Console: Make sure you're in the account that has the Route 53 hosted zone for your domain.
1. Open the Route 53 console: Navigate to the Route 53 home page.
1. Select Hosted Zones: On the Route 53 home page, choose `Hosted zones` from the navigation pane on the left.
1. Select your Domain: In the Hosted Zones page, click on the domain name for which you want to create the record.
1. Create Record Set: On the domain's settings page, click on `Create Record`.
1. Configure Record Set:

- Record name: Leave it blank to use the root domain.
- Record type: Select `A - IPv4 address`.
- Toggle the `Alias` switch to `Yes`.
- In the `Route traffic to` dropdown, select `Alias to CloudFront distribution`.
- In the `Choose Distribution` dropdown and toggle `Switch to Manual Input mode` and paste the record which ends with `.cloudfront.net`.

1. Create Record Set: After filling in all the details, click on `Define simple record` and then `Create Records`.

Please note that DNS changes can take a while to propagate, so it might take some time before you see your changes take effect.

To check DNS propagation of a particular record you can use public DNS resolver and look up the record by its name. For example, you can use Google DNS Lookup to do that.

<!--/source-->

##### Response

<!--source:api-specifications-->
200 Certificate Pending Validation200 Certificate Issued422
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success

```
{
 "certificate": {
 "status": "PENDING_VALIDATION",
 "created_at": "2023-02-05T00:21:23.295438+00:00"
 },
 "records": [
 {
 "type": "CNAME",
 "name": "_7www9www678222e742953.dmn.foreign.staircaseapi.com",
 "value": "_7329461678222e742953.scffwap.acm-validations.aws",
 "validation_status": "PENDING_VALIDATION"
 },
 {
 "type": "CNAME",
 "name": "dmn.foreign.staircaseapi.com",
 "value": "dwarf-star.cloudfront.net"
 }
 ]
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Success

```
{
 "certificate": {
 "status": "ISSUED",
 "issued_at": "2023-02-04T14:14:42.987868+00:00",
 "created_at": "2023-02-05T00:21:23.295438+00:00"
 },
 "records": [
 {
 "type": "CNAME",
 "name": "_7www9www678222e742953.dmn.foreign.staircaseapi.com",
 "value": "_7329461678222e742953.scffwap.acm-validations.aws",
 "validation_status": "SUCCESS"
 },
 {
 "type": "CNAME",
 "name": "dmn.foreign.staircaseapi.com",
 "value": "dwarf-star.cloudfront.net"
 }
 ]
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `transaction_id` required | `string` path | `01F7Z8J1M8G8W9XKVX9G1JQFE2` | <!--source:api-specifications-->The unique identifier of the verification task<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `certificate` | `object` | <!--source:api-specifications-->Certificate status<!--/source--> |
| `status`required | `string` | <!--source:api-specifications-->Whether the certificate is issued or not<!--/source-->`EXPIRED``FAILED``INACTIVE``ISSUED``PENDING_VALIDATION``REMOVED``REVOKED``VALIDATION_TIMED_OUT` |
| `issued_at` | `string` | <!--source:api-specifications-->Certificate issuance date and time. Present when the certificate status is `ISSUED`.<!--/source-->Example `2023-02-04T14:14:42.987868+00:00` |
| `created_at` | `string` | <!--source:api-specifications-->Creation date and time for the certificate. Present if the status is not `REMOVED`.<!--/source-->Example `2023-02-05T00:21:23.295438+00:00` |
| `records` | `object[]` | <!--source:api-specifications-->The list of domain names with required to set up records.<!--/source--> |
| `type`required | `string` | <!--source:api-specifications-->The type of the DNS record<!--/source-->`CNAME`Example `CNAME` |
| `name`required | `string` | <!--source:api-specifications-->The name of the DNS record<!--/source-->Example `_7www9www678222e742953.dmn.foreign.staircaseapi.com` |
| `value`required | `string` | <!--source:api-specifications-->The value of the DNS record<!--/source-->Example `_7329461678222e742953.scffwap.acm-validations.aws` |
| `validation_status` | `string` | <!--source:api-specifications-->The validation status of the domain for the certificate records. Present for certificate validation records exclusively, other records are not validated.<!--/source-->`FAILED``PENDING_VALIDATION``SUCCESS`Example `PENDING_VALIDATION` |

##### Other responses

`404``422`

`DELETE` `/verifications/{transaction_id}`

<!--source:api-specifications-->

#### Detach Site from Domain
<!--/source-->

`detachSiteFromDomain`

<!--source:api-specifications-->
Provides a way to detach a site from your domain.
<!--/source-->

<!--source:api-specifications-->
Provides a way to detach a site from domain.

Keep in mind that deleting DNS records from your DNS provider is on user. Site does not have access to modify those.

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `transaction_id` required | `string` path | `01F7Z8J1M8G8W9XKVX9G1JQFE2` | <!--source:api-specifications-->The unique identifier of the verification task<!--/source--> |

##### Other responses

`204``404``422`

`PUT` `/verifications/{transaction_id}/invalidation`

<!--source:api-specifications-->

#### Invalidate Cache
<!--/source-->

`invalidateCacheCustomSite`

<!--source:api-specifications-->
Invalidate cache.
<!--/source-->

<!--source:api-specifications-->
Invalidates the cache of the site on a custom domain.

Cache invalidation is recommended to be done whenever the source site is re-deployed.

<!--/source-->

##### Response

<!--source:api-specifications-->
202404422
<!--/source-->

<!--source:api-specifications-->
application/json Copy Site cache invalidation request accepted

```
{
 "transaction_id": "01F7Z8J1M8G8W9XKVX9G1JQFE2"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Transaction was not found

```
{
 "error": {
 "message": "Could not find transaction ID.",
 "reason": "Transaction (`01F7Z8J1M8G8W9LTLT9G1J0J00`)"
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `transaction_id` required | `string` path | `01F7Z8J1M8G8W9XKVX9G1JQFE2` | <!--source:api-specifications-->The unique identifier of the verification task<!--/source--> |

##### Response `202``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Site cache invalidation request accepted
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `transaction_id`required | `string` | <!--source:api-specifications-->Verification transaction ID.<!--/source-->Example `01F7Z8J1M8G8W9XKVX9G1JQFE2` |

##### Other responses

`404``422`

`PUT` `/verifications/{transaction_id}/synchronization`

<!--source:api-specifications-->

#### Synchronize
<!--/source-->

`syncCustomSite`

<!--source:api-specifications-->
Synchronize site.
<!--/source-->

<!--source:api-specifications-->
Synchronizes site on a custom domain with a source site.

Synchronization is optional, but is recommended to be done whenever sources changes.

<!--/source-->

##### Response

<!--source:api-specifications-->
202404422
<!--/source-->

<!--source:api-specifications-->
application/json Copy Site synchronization request accepted

```
{
 "transaction_id": "01F7Z8J1M8G8W9XKVX9G1JQFE2"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy Transaction not found

```
{
 "error": {
 "message": "Could not find transaction ID.",
 "reason": "Transaction (`01F7Z8J1M8G8W9LTLT9G1J0J00`)"
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `transaction_id` required | `string` path | `01F7Z8J1M8G8W9XKVX9G1JQFE2` | <!--source:api-specifications-->The unique identifier of the verification task<!--/source--> |

##### Response `202``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Site synchronization request accepted
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `transaction_id`required | `string` | <!--source:api-specifications-->Verification transaction ID.<!--/source-->Example `01F7Z8J1M8G8W9XKVX9G1JQFE2` |

##### Other responses

`404``422`

`GET` `/certificates`

<!--source:api-specifications-->

#### List Certificates
<!--/source-->

`listCertificates`

<!--source:api-specifications-->
Retrieve a list of registered certificates and their statuses.

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy Success

```
{
 "certificates": [
 {
 "status": "ISSUED",
 "issued_at": "2023-02-04T14:14:42.987868+00:00",
 "renewal_eligible": "ELIGIBLE",
 "created_at": "2023-02-05T00:21:23.295438+00:00",
 "subject": "CN=xira.example.com",
 "expiry_date": "2024-02-04T23:59:59+00:00"
 },
 {
 "status": "ISSUED",
 "issued_at": "2023-02-04T14:14:42.987868+00:00",
 "renewal_eligible": "ELIGIBLE",
 "created_at": "2023-02-05T00:21:23.295438+00:00",
 "subject": "CN=dmn.foreign.staircaseapi.com",
 "expiry_date": "2024-06-26T23:59:59+00:00"
 }
 ]
}
```

<!--/source-->

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `certificates` | `object[]` | <!--source:api-specifications-->List of registered certificates.<!--/source--> |
| `subject` | `string` | <!--source:api-specifications-->The subject of the certificate.<!--/source-->Example `CN=dmn.foreign.staircaseapi.com` |
| `status` | `string` | <!--source:api-specifications-->Whether the certificate is issued or not<!--/source-->`EXPIRED``FAILED``INACTIVE``ISSUED``PENDING_VALIDATION``REMOVED``REVOKED``VALIDATION_TIMED_OUT`Example `ISSUED` |
| `issued_at` | `string` | <!--source:api-specifications-->Certificate issuance date and time. Present when the certificate status is `ISSUED`.<!--/source-->Example `2023-02-04T14:14:42.987868+00:00` |
| `expiry_date` | `string` | <!--source:api-specifications-->Certificate expiration date and time. Present when the certificate status is `ISSUED`.<!--/source-->Example `2023-02-04T14:14:42.987868+00:00` |
| `renewal_eligible` | `string` | <!--source:api-specifications-->Whether the certificate is eligible for renewal.<!--/source-->`ELIGIBLE``INELIGIBLE`Example `ELIGIBLE` |
| `created_at` | `string` | <!--source:api-specifications-->Creation date and time for the certificate. Present if the status is not `REMOVED`.<!--/source-->Example `2023-02-05T00:21:23.295438+00:00` |

<!--source:api-specifications-->

### Simple sites[new]
<!--/source-->

`PUT` `/simple`

<!--source:api-specifications-->

#### Register Simple Configuration[new]
<!--/source-->

`registerSimpleAppConfiguration`

<!--source:api-specifications-->
Register Simple Configuration
<!--/source-->

<!--source:api-specifications-->
Simple configuration registration API. The simple site will route requests based on lust of resources specified in the configuration. The simple site will not have any client-side features like authentication, analytics, etc. It will not be affected by iframe downsides. You can specify list of resources to be served by the simple site and error page for restricted access. If `analytics` google tag manager is provided, the tag will be available via `/common.js` request. Your environment domain of site is available via `/environment.json` request. For now only the google analytics tag is supported. In custom object, you can specify custom JS code for common.js API.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "site_id": "6374c7f8-13fa-454a-8587-bd29724346d6",
 "analytics": {
 "google_analytics_tag": "UA-123456789-1"
 },
 "custom": {
 "commonjs": "my_js_code"
 },
 "url_mappings": [
 {
 "console_app_url": "https://chatmtg-prod.chatmtg.com/chatmtg_apply_app/"
 },
 {
 "console_app_url": "https://chatmtg-prod.chatmtg.com/chatmtg_apply_app/",
 "url_suffix": "/preapproval"
 }
 ]
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
400422
<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Request body`application/json`

<!--source:api-specifications-->
7 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `site_id` | `string` | <!--source:api-specifications-->The ID of the site configuration.<!--/source-->Example `15a820a6-cac9-4b-a7b1-d364b26d7f69` |
| `last_updated` | `string (date-time)` | <!--source:api-specifications-->Last updated date in ISO format.<!--/source-->Example `2024-05-14T11:33:11.755632` |
| `custom` | `object` | <!--source:api-specifications-->Custom configuration.<!--/source--> |
| `commonjs` | `string` | <!--source:api-specifications-->Custom JS code.<!--/source-->Example `my_js_code` |
| `domain_name` | `string` | <!--source:api-specifications-->Domain name of the site. Available after successful deployment.<!--/source-->Example `simple-c9985d4f.cerf-dev.staircaseapi.com` |
| `url_mappings` | `object[]` | <!--source:api-specifications-->URL mappings configuration.<!--/source--> |
| `console_app_url`required | `string (uri)` | <!--source:api-specifications-->Console app URL.<!--/source-->Example `https://chatmtg-prod.chatmtg.com/chatmtg_apply_app/` |
| `url_suffix` | `string (uri)` | <!--source:api-specifications-->URL suffix.<!--/source-->Example `/preapproval` |
| `environment` | `object` | <!--source:api-specifications-->Environment configuration.<!--/source--> |
| `domain` | `string` | <!--source:api-specifications-->Environment domain of site.<!--/source-->Example `cerf.staircaseapi.com` |
| `analytics` | `object` | <!--source:api-specifications-->Analytics configuration.<!--/source--> |
| `google_analytics_tag` | `string` | <!--source:api-specifications-->If provided, Google Analytics tag will be available inside /common.js request.<!--/source-->Example `UA-123456789-1` |

##### Response `201``application/json`

<!--source:api-specifications-->
7 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `site_id` | `string` | <!--source:api-specifications-->The ID of the site configuration.<!--/source-->Example `15a820a6-cac9-4b-a7b1-d364b26d7f69` |
| `last_updated` | `string (date-time)` | <!--source:api-specifications-->Last updated date in ISO format.<!--/source-->Example `2024-05-14T11:33:11.755632` |
| `custom` | `object` | <!--source:api-specifications-->Custom configuration.<!--/source--> |
| `commonjs` | `string` | <!--source:api-specifications-->Custom JS code.<!--/source-->Example `my_js_code` |
| `domain_name` | `string` | <!--source:api-specifications-->Domain name of the site. Available after successful deployment.<!--/source-->Example `simple-c9985d4f.cerf-dev.staircaseapi.com` |
| `url_mappings` | `object[]` | <!--source:api-specifications-->URL mappings configuration.<!--/source--> |
| `console_app_url`required | `string (uri)` | <!--source:api-specifications-->Console app URL.<!--/source-->Example `https://chatmtg-prod.chatmtg.com/chatmtg_apply_app/` |
| `url_suffix` | `string (uri)` | <!--source:api-specifications-->URL suffix.<!--/source-->Example `/preapproval` |
| `environment` | `object` | <!--source:api-specifications-->Environment configuration.<!--/source--> |
| `domain` | `string` | <!--source:api-specifications-->Environment domain of site.<!--/source-->Example `cerf.staircaseapi.com` |
| `analytics` | `object` | <!--source:api-specifications-->Analytics configuration.<!--/source--> |
| `google_analytics_tag` | `string` | <!--source:api-specifications-->If provided, Google Analytics tag will be available inside /common.js request.<!--/source-->Example `UA-123456789-1` |

##### Other responses

`400``422`

`GET` `/simple`

<!--source:api-specifications-->

#### List Simple Configurations[new]
<!--/source-->

`listSimpleAppConfigurations`

<!--source:api-specifications-->
List Simple Configurations
<!--/source-->

<!--source:api-specifications-->
Retrieves list of registered simple configurations.

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy Success

```
{
 "sites": [
 {
 "site_id": "82fc3fd6-9031-4dc5-9f40-81927134f19c",
 "url_mappings": [
 {
 "console_app_url": "https://chatmtg-prod.chatmtg.com/chatmtg_apply_app/"
 },
 {
 "console_app_url": "https://chatmtg-prod.chatmtg.com/chatmtg_apply_app/",
 "url_suffix": "/preapproval"
 }
 ]
 },
 {
 "site_id": "6374c7f8-13fa-454a-8587-bd29724346d6",
 "url_mappings": [
 {
 "console_app_url": "https://chatmtg-prod.chatmtg.com/chatmtg_apply_app/"
 },
 {
 "console_app_url": "https://chatmtg-prod.chatmtg.com/chatmtg_apply_app/",
 "url_suffix": "/preapproval"
 }
 ]
 },
 {
 "site_id": "c98f97c7-e021-4988-973d-d51fe041204b",
 "url_mappings": [
 {
 "console_app_url": "https://chatmtg-prod.chatmtg.com/chatmtg_apply_app/"
 },
 {
 "console_app_url": "https://chatmtg-prod.chatmtg.com/chatmtg_apply_app/",
 "url_suffix": "/preapproval"
 }
 ]
 }
 ],
 "next_token": null
}
```

<!--/source-->

##### Response `200``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `sites` | `array` | <!--source:api-specifications-->Represents the array of simple sites.<!--/source--> |
| `next_token` | `string` | <!--source:api-specifications-->Next token to be used in the next request to fetch the next page of configurations.<!--/source--> |

`GET` `/simple/{site_id}`

<!--source:api-specifications-->

#### Get Simple Configuration[new]
<!--/source-->

`getSimpleSite`

<!--source:api-specifications-->
Get Simple Site
<!--/source-->

<!--source:api-specifications-->
Retrieves simple site by ID.

<!--/source-->

##### Response

<!--source:api-specifications-->
200404
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success

```
{
 "site_id": "82fc3fd6-9031-4dc5-9f40-81927134f19c",
 "domain_name": "simple-c9985d4f.cerf-dev.staircaseapi.com",
 "custom": {
 "commonjs": "my_js_code"
 },
 "url_mappings": [
 {
 "console_app_url": "https://chatmtg-prod.chatmtg.com/chatmtg_apply_app/"
 },
 {
 "console_app_url": "https://chatmtg-prod.chatmtg.com/chatmtg_apply_app/",
 "url_suffix": "/preapproval"
 }
 ]
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 404 status code occurs when a requested resource cannot be located.

```
{
 "error": {
 "message": "Not found.",
 "reason": "Flow(site_id=`345e8795-eb14-24t3-a2-aaaa174000`)"
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `site_id` required | `string` path | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Site ID<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
7 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `site_id` | `string` | <!--source:api-specifications-->The ID of the site configuration.<!--/source-->Example `15a820a6-cac9-4b-a7b1-d364b26d7f69` |
| `last_updated` | `string (date-time)` | <!--source:api-specifications-->Last updated date in ISO format.<!--/source-->Example `2024-05-14T11:33:11.755632` |
| `custom` | `object` | <!--source:api-specifications-->Custom configuration.<!--/source--> |
| `commonjs` | `string` | <!--source:api-specifications-->Custom JS code.<!--/source-->Example `my_js_code` |
| `domain_name` | `string` | <!--source:api-specifications-->Domain name of the site. Available after successful deployment.<!--/source-->Example `simple-c9985d4f.cerf-dev.staircaseapi.com` |
| `url_mappings` | `object[]` | <!--source:api-specifications-->URL mappings configuration.<!--/source--> |
| `console_app_url`required | `string (uri)` | <!--source:api-specifications-->Console app URL.<!--/source-->Example `https://chatmtg-prod.chatmtg.com/chatmtg_apply_app/` |
| `url_suffix` | `string (uri)` | <!--source:api-specifications-->URL suffix.<!--/source-->Example `/preapproval` |
| `environment` | `object` | <!--source:api-specifications-->Environment configuration.<!--/source--> |
| `domain` | `string` | <!--source:api-specifications-->Environment domain of site.<!--/source-->Example `cerf.staircaseapi.com` |
| `analytics` | `object` | <!--source:api-specifications-->Analytics configuration.<!--/source--> |
| `google_analytics_tag` | `string` | <!--source:api-specifications-->If provided, Google Analytics tag will be available inside /common.js request.<!--/source-->Example `UA-123456789-1` |

##### Other responses

`404`

`PUT` `/deployments-simple-site`

<!--source:api-specifications-->

#### Deploy Simple siteConfiguration
<!--/source-->

`deploySimpleSiteConfiguration`

<!--source:api-specifications-->
Deploy Simple site Configuration
<!--/source-->

<!--source:api-specifications-->

#### Deploy Configuration

Sites are installed under environment's subdomain. Each site configuration gets its own short ID, which is used in the future domain name of the site.

Example of the URL: site-3065e3b5.xchange.staircaseapi.com.

##### Observe deployment status

Events are sent in payloads of a “HTTP requests” using `POST` method.

```
{
 "$schema": "",
 "additionalProperties": true,
 "type": "object",
 "required": ["status", "transaction_id", "domain_name"],
 "description": "Schema for the payload event emitted to callback.",
 "properties": {
 "transaction_id": {
 "type": "string",
 "description": "Transaction identifier. Unique per deployment and managed by Site."
 },
 "status": {
 "type": "string",
 "description": "Provisioning status.",
 "enum": ["SUCCEEDED", "FAILED"]
 },
 "domain_name": {
 "type": "string",
 "description": "Domain name of the site."
 },
 "error": {
 "type": "object",
 "additionalProperties": true,
 "description": "Deployment has failed unexpectedly. Error details are provided in this object. Note that you should contact the support team when the error occurs."
 }
 }
}
```

###### Troubleshooting

Events are dispatched once the deployment process completes.

Show the rest An event is deemed as successfully delivered when its recipient acknowledges with an HTTP status code that falls within the range of successful responses. If an event isn't successfully delivered, the Site will make six additional attempts to resend the event, with each attempt following an exponential back off strategy.

To confirm the propagation of the webhook, you can utilize Retrieve Transaction Collections with the transaction ID, which is returned during the initialization of deployment.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "site_id": "6374c7f8-13fa-454a-8587-bd29724346f7",
 "callback_url": "https://webhooks.staircaseapi.com/persistence/bridge/o09jun2kjhjkkkiDj"
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
400404422
<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 404 status code occurs when a requested resource cannot be located.

```
{
 "error": {
 "message": "Not found.",
 "reason": "Flow(site_id=`345e8795-eb14-24t3-a2-aaaa174000`)"
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Request body`application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `site_id`required | `string` | <!--source:api-specifications-->Simple site flow configuration ID.<!--/source-->Example `6374c7f8-13fa-454a-8587-bd29724346f7` |
| `callback_url`required | `string` | <!--source:api-specifications-->Callback URL.<!--/source-->Example `https://webhooks.staircaseapi.com/persistence/bridge/o09jun2kjhjkkkiDj` |

##### Response `200``application/json`

<!--source:api-specifications-->
5 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `deploy_id` | `string` | <!--source:api-specifications-->deploy_id<!--/source-->Example `16af04ab-eb62-42b7-8778-a79234d137ce` |
| `domain_name`required | `string` | <!--source:api-specifications-->Generated domain name for the site.<!--/source-->Example `site-abc00def.xchange.staircaseapi.com` |
| `transaction_id`required | `string` | <!--source:api-specifications-->Transaction ID.<!--/source-->Example `01H021M9X10AN9XNNJ8THMMMMM` |
| `callback_url` | `string` | <!--source:api-specifications-->The callback URL is returned as is. The value will match the input `callback_url`.<!--/source-->Example `https://webhooks.staircaseapi.com/persistence/bridge/o09jun2kjhjkkkiDj` |
| `site_id` | `string` | <!--source:api-specifications-->Simple site ID. The value will match the input `site_id`.<!--/source-->Example `6374c7f8-13fa-454a-8587-bd29724346f7` |

##### Other responses

`400``404``422`

`GET` `/deployments-simple-site/{deploy_id}`

<!--source:api-specifications-->

#### Deploy Simple siteConfiguration
<!--/source-->

`deploySimpleSiteConfigurationStatus`

<!--source:api-specifications-->
Deploy Simple site Configuration Status
<!--/source-->

<!--source:api-specifications-->
API for checking the status of the simple site deployment.

<!--/source-->

##### Response

<!--source:api-specifications-->
200404
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success

```
{
 "status": "SUCCEEDED"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 404 status code occurs when a requested resource cannot be located.

```
{
 "error": {
 "message": "Not found.",
 "reason": "Flow(site_id=`345e8795-eb14-24t3-a2-aaaa174000`)"
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `deploy_id` required | `string` path | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Deploy ID.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `status` | `string` | <!--source:api-specifications-->Deployment status.<!--/source-->`RUNNING``SUCCEEDED``FAILED``TIMED_OUT``ABORTED``PENDING_REDRIVE`Example `SUCCEEDED` |

##### Other responses

`404`

`GET` `/simple/{site_id}/custom-domain`

<!--source:api-specifications-->

#### Custom domain status[new]
<!--/source-->

`customDomainStatus`

<!--source:api-specifications-->
Custom Domain Status
<!--/source-->

<!--source:api-specifications-->
Fetch status of custom domain attachment.

<!--/source-->

##### Response

<!--source:api-specifications-->
200404
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success

```
{
 "domain_name": "example.chatmtg.com",
 "certificate_arn": "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
 "attach": true
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 404 status code occurs when a requested resource cannot be located.

```
{
 "error": {
 "message": "Not found.",
 "reason": "Flow(site_id=`345e8795-eb14-24t3-a2-aaaa174000`)"
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `site_id` required | `string` path | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Site ID<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
3 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `attach` | `boolean` | <!--source:api-specifications-->Attach flag.<!--/source-->Example `false` |
| `domain_name` | `string` | <!--source:api-specifications-->Custom domain name.<!--/source-->Example `example.chatmtg.com` |
| `certificate_arn` | `string` | <!--source:api-specifications-->ACM Certificate ARN.<!--/source-->Example `arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012` |

##### Other responses

`404`

`PUT` `/simple/{site_id}/custom-domain`

<!--source:api-specifications-->

#### Attach custom domain[new]
<!--/source-->

`attachCustomDomain`

<!--source:api-specifications-->
Attach Custom Domain
<!--/source-->

<!--source:api-specifications-->
Allows to attach custom domain to the simple site. Simple site can be deployed under different domain name (custom domain name). In order to deploy the site under custom domain name, you need to provide the domain name and ACM Certificate ARN in the configuration. After it, the site will be deployed under the provided domain name, and previous domain name will not be accessible. First deployment should use attach flag as false. After the deployment, grab the cloudfront distribution name and put in into CNAME record of your custom domain. After that, you can deploy the site with attach flag as true. After attaching custom domain name it is impossible to go back to default domain name.

<!--/source-->

##### Response

<!--source:api-specifications-->
201400404422
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success

```
{
 "domain_name": "example.chatmtg.com",
 "certificate_arn": "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
 "attach": true
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 404 status code occurs when a requested resource cannot be located.

```
{
 "error": {
 "message": "Not found.",
 "reason": "Flow(site_id=`345e8795-eb14-24t3-a2-aaaa174000`)"
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `site_id` required | `string` path | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Site ID<!--/source--> |

##### Response `201``application/json`

<!--source:api-specifications-->
3 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `attach` | `boolean` | <!--source:api-specifications-->Attach flag.<!--/source-->Example `false` |
| `domain_name` | `string` | <!--source:api-specifications-->Custom domain name.<!--/source-->Example `example.chatmtg.com` |
| `certificate_arn` | `string` | <!--source:api-specifications-->ACM Certificate ARN.<!--/source-->Example `arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012` |

##### Other responses

`400``404``422`

`POST` `/simple/{site_id}/invalidate-cache`

<!--source:api-specifications-->

#### Invalidate cache[new]
<!--/source-->

`invalidateCache`

<!--source:api-specifications-->
Invalidate Cache
<!--/source-->

<!--source:api-specifications-->
Starts cache invalidation process for the site. Process is asynchronous and can take up to 15 minutes.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "items": [
 "listings*"
 ]
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
202400404422
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success

```
{
 "message": "Cache invalidation started"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 400 status code occurs when some of provided request parameters is invalid.

```
{
 "error": {
 "message": "Bad Request",
 "reason": "Provided token is not valid."
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 404 status code occurs when a requested resource cannot be located.

```
{
 "error": {
 "message": "Not found.",
 "reason": "Flow(site_id=`345e8795-eb14-24t3-a2-aaaa174000`)"
 }
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy A 422 status code occurs when a request is well-formed, however, due to semantic errors it is unable to be processed.

```
{
 "error": {
 "message": "Unprocessable entity.",
 "reason": "Domain name could not be validated."
 }
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `site_id` required | `string` path | `15a820a6-cac9-4b-a7b1-d364b26d7f69` | <!--source:api-specifications-->Site ID<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `items`required | `string[]` | <!--source:api-specifications-->List of items to invalidate<!--/source--> |

##### Response `202``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message about the cache invalidation process.<!--/source--> |

##### Other responses

`400``404``422`

<!--source:api-specifications-->

### Marketing: Companies
<!--/source-->

`GET` `/marketing/companies`

<!--source:api-specifications-->

#### Retrieve Companies
<!--/source-->

`Companies`

<!--source:api-specifications-->
Retrieve Companies

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Approval uploaded

```
{
 "partners": [
 {
 "name": "partner_x",
 "logo": "https://site-content.domain.staircaseapi.com/marketing/partners/partner_x/logo.png"
 }
 ]
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `company_type` required | `string` query | `customer` | <!--source:api-specifications-->filters by concrete company type.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Approval uploaded
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `partners` | `object[]` | <!--source:api-specifications-->The partner list<!--/source--> |
| `name` | `string` | <!--source:api-specifications-->Name<!--/source--> |
| `logo` | `string` | <!--source:api-specifications-->Logo URL<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`POST` `/marketing/companies`

<!--source:api-specifications-->

#### Add Company
<!--/source-->

`addCompany`

<!--source:api-specifications-->
Add Company

<!--/source-->

##### Request

<!--source:api-specifications-->
Example Request for Adding Partnerexample-1
<!--/source-->

<!--source:api-specifications-->
application/json Copy
```
{
 "name": "Company_X",
 "company_type": "partner",
 "logo_url": "https://dev-data-manager-blobs-bucket-us-east-1-581813358386.s3.amazonaws.com/01G0J3GRQER1DH5HXNYA7S39YN.png?response-content-type=image%2Fpng&AWSAccessKeyId=<redacted>&Signature=<redacted>&x-amz-security-token=<redacted>&Expires=1651062920",
 "logo_extension": ".png"
}
```

<!--/source-->

<!--source:api-specifications-->
application/json Copy
```
{
 "name": "Partner_X",
 "logo_url": "https://dev-data-manager-blobs-bucket-us-east-1-581813358386.s3.amazonaws.com/01G0J3GRQER1DH5HXNYA7S39YN.png?response-content-type=image%2Fpng&AWSAccessKeyId=<redacted>&Signature=<redacted>&x-amz-security-token=<redacted>&Expires=1651062920",
 "logo_extension": ".png"
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy Example response

```
{
 "message": "Created"
}
```

<!--/source-->

##### Request body`application/json`

<!--source:api-specifications-->
4 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `name`required | `string` | <!--source:api-specifications-->Company Name<!--/source--> |
| `company_type`required | `string` | <!--source:api-specifications-->Company Type<!--/source-->`adapter``customer``partner` |
| `logo_url`required | `string` | <!--source:api-specifications-->Logo URL<!--/source--> |
| `logo_extension`required | `string` | <!--source:api-specifications-->Logo Extension<!--/source--> |

##### Response `201``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Example response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message`required | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`DELETE` `/marketing/companies/{company_name}`

<!--source:api-specifications-->

#### Delete Company
<!--/source-->

`Company`

<!--source:api-specifications-->
Delete Company

<!--/source-->

##### Response

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |
| `company_name` required | `string` path | `Truework` | <!--source:api-specifications-->Company Name<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`204``403`

`PUT` `/marketing/companies/{company_name}/logo`

<!--source:api-specifications-->

#### Upload Company Logo
<!--/source-->

`uploadCompanyLogo`

<!--source:api-specifications-->
Upload Logo

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
Select option 'binary' in order to upload file
```

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Approval uploaded

```
{
 "message": "Successfully Uploaded"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `x-api-key` required | `string` header | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` | <!--source:api-specifications-->API key of Environment.<!--/source--> |
| `company_name` required | `string` path | `Truework` | <!--source:api-specifications-->Company Name<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Approval uploaded
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Successfully Uploaded<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

<!--source:api-specifications-->

### Marketing: Product Ontology
<!--/source-->

`GET` `/marketing/ontology`

<!--source:api-specifications-->

#### Retrieve Product Ontology
<!--/source-->

`retrieveMarketingProductOntology`

<!--source:api-specifications-->
Retrieve Product Ontology

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "product_families": [
 {
 "name": "Mortgage Products",
 "product_categories": [
 {
 "name": "Data Manager",
 "products": [
 {
 "name": "Document Classification"
 },
 {
 "name": "Data Extraction"
 },
 {
 "name": "Ground Truth Labeling"
 }
 ]
 },
 {
 "name": "Borrower",
 "products": [
 {
 "name": "Employment"
 },
 {
 "name": "Credit"
 },
 {
 "name": "Income"
 },
 {
 "name": "Assets"
 }
 ]
 },
 {
 "name": "Collateral",
 "products": [
 {
 "name": "Automated Valuation Model (AVM)"
 },
 {
 "name": "Property Taxes"
 }
 ]
 },
 {
 "name": "Loan",
 "products": [
 {
 "name": "Pricing"
 },
 {
 "name": "Fees"
 }
 ]
 },
 {
 "name": "Adapters",
 "products": [
 {
 "name": "LOS"
 }
 ]
 }
 ]
 },
 {
 "name": "Mortgage Processes",
 "product_categories": [
 {
 "name": "Application",
 "products": [
 {
 "name": "Pre-Approval"
 }
 ]
 },
 {
 "name": "Underwriting",
 "products": [
 {
 "name": "Loan Eligibility"
 },
 {
 "name": "Automated Underwriting System (AUS)"
 }
 ]
 },
 {
 "name": "Servicing",
 "products": [
 {
 "name": "Loanboarding"
 }
 ]
 }
 ]
 },
 {
 "name": "Platform",
 "product_categories": [
 {
 "name": "Integrate",
 "products": [
 {
 "name": "Connector"
 },
 {
 "name": "Job"
 },
 {
 "name": "Product"
 }
 ]
 },
 {
 "name": "Data",
 "products": [
 {
 "name": "Persistence"
 },
 {
 "name": "Data Extraction Training"
 },
 {
 "name": "Translator"
 },
 {
 "name": "Language"
 },
 {
 "name": "Rule"
 },
 {
 "name": "Site"
 }
 ]
 }
 ]
 },
 {
 "name": "Devops",
 "product_categories": [
 {
 "name": "Distribute",
 "products": [
 {
 "name": "Environment"
 },
 {
 "name": "Account"
 },
 {
 "name": "Marketplace"
 },
 {
 "name": "Host"
 },
 {
 "name": "Company"
 },
 {
 "name": "Setup"
 }
 ]
 },
 {
 "name": "Ship",
 "products": [
 {
 "name": "Code"
 },
 {
 "name": "Assess"
 },
 {
 "name": "Build"
 },
 {
 "name": "Deploy"
 },
 {
 "name": "Test"
 },
 {
 "name": "Health"
 },
 {
 "name": "Comply"
 },
 {
 "name": "Experience"
 },
 {
 "name": "Work"
 }
 ]
 }
 ]
 },
 {
 "name": "Operations",
 "product_categories": [
 {
 "name": "Operations",
 "products": [
 {
 "name": "Capital Allocation"
 }
 ]
 }
 ]
 }
 ]
}
```

<!--/source-->

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `product_families`required | `object[]` | <!--source:api-specifications-->Product Families<!--/source--> |
| `name`required | `string` | <!--source:api-specifications-->Family name<!--/source--> |
| `description` | `string` | <!--source:api-specifications-->Family description<!--/source--> |
| `color` | `string` | <!--source:api-specifications-->Family color code<!--/source--> |
| `product_categories`required | `object[]` | <!--source:api-specifications-->Product categories<!--/source--> |
| `name`required | `string` | <!--source:api-specifications-->Category name<!--/source--> |
| `description` | `string` | <!--source:api-specifications-->Category description<!--/source--> |
| `color` | `string` | <!--source:api-specifications-->Category color code<!--/source--> |
| `products`required | `object[]` | <!--source:api-specifications-->Products<!--/source--> |
| `name`required | `string` | <!--source:api-specifications-->Product name<!--/source--> |
| `description` | `string` | <!--source:api-specifications-->Product description<!--/source--> |
| `color` | `string` | <!--source:api-specifications-->Product color code<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`POST` `/marketing/ontology`

<!--source:api-specifications-->

#### Create Product Ontology
<!--/source-->

`createMarketingProductOntology`

<!--source:api-specifications-->
Add Product Ontology

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "ontology": {
 "product_families": [
 {
 "name": "Mortgage Products",
 "product_categories": [
 {
 "name": "Data Manager",
 "products": [
 {
 "name": "Document Classification"
 },
 {
 "name": "Data Extraction"
 },
 {
 "name": "Ground Truth Labeling"
 }
 ]
 },
 {
 "name": "Borrower",
 "products": [
 {
 "name": "Employment"
 },
 {
 "name": "Credit"
 },
 {
 "name": "Income"
 },
 {
 "name": "Assets"
 }
 ]
 },
 {
 "name": "Collateral",
 "products": [
 {
 "name": "Automated Valuation Model (AVM)"
 },
 {
 "name": "Property Taxes"
 }
 ]
 },
 {
 "name": "Loan",
 "products": [
 {
 "name": "Pricing"
 },
 {
 "name": "Fees"
 }
 ]
 },
 {
 "name": "Adapters",
 "products": [
 {
 "name": "LOS"
 }
 ]
 }
 ]
 },
 {
 "name": "Mortgage Processes",
 "product_categories": [
 {
 "name": "Application",
 "products": [
 {
 "name": "Pre-Approval"
 }
 ]
 },
 {
 "name": "Underwriting",
 "products": [
 {
 "name": "Loan Eligibility"
 },
 {
 "name": "Automated Underwriting System (AUS)"
 }
 ]
 },
 {
 "name": "Servicing",
 "products": [
 {
 "name": "Loanboarding"
 }
 ]
 }
 ]
 },
 {
 "name": "Platform",
 "product_categories": [
 {
 "name": "Integrate",
 "products": [
 {
 "name": "Connector"
 },
 {
 "name": "Job"
 },
 {
 "name": "Product"
 }
 ]
 },
 {
 "name": "Data",
 "products": [
 {
 "name": "Persistence"
 },
 {
 "name": "Data Extraction Training"
 },
 {
 "name": "Translator"
 },
 {
 "name": "Language"
 },
 {
 "name": "Rule"
 },
 {
 "name": "Site"
 }
 ]
 }
 ]
 },
 {
 "name": "Devops",
 "product_categories": [
 {
 "name": "Distribute",
 "products": [
 {
 "name": "Environment"
 },
 {
 "name": "Account"
 },
 {
 "name": "Marketplace"
 },
 {
 "name": "Host"
 },
 {
 "name": "Company"
 },
 {
 "name": "Setup"
 }
 ]
 },
 {
 "name": "Ship",
 "products": [
 {
 "name": "Code"
 },
 {
 "name": "Assess"
 },
 {
 "name": "Build"
 },
 {
 "name": "Deploy"
 },
 {
 "name": "Test"
 },
 {
 "name": "Health"
 },
 {
 "name": "Comply"
 },
 {
 "name": "Experience"
 },
 {
 "name": "Work"
 }
 ]
 }
 ]
 },
 {
 "name": "Operations",
 "product_categories": [
 {
 "name": "Operations",
 "products": [
 {
 "name": "Capital Allocation"
 }
 ]
 }
 ]
 }
 ]
 }
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy Example response

```
{
 "message": "Created"
}
```

<!--/source-->

##### Request body`application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `ontology`required | `object` | <!--source:api-specifications-->Marketing Ontology<!--/source--> |
| `product_families`required | `object[]` | <!--source:api-specifications-->Product Families<!--/source--> |
| `name`required | `string` | <!--source:api-specifications-->Family name<!--/source--> |
| `description` | `string` | <!--source:api-specifications-->Family description<!--/source--> |
| `color` | `string` | <!--source:api-specifications-->Family color code<!--/source--> |
| `product_categories`required | `object[]` | <!--source:api-specifications-->Product categories<!--/source--> |
| `name`required | `string` | <!--source:api-specifications-->Category name<!--/source--> |
| `description` | `string` | <!--source:api-specifications-->Category description<!--/source--> |
| `color` | `string` | <!--source:api-specifications-->Category color code<!--/source--> |
| `products`required | `object[]` | <!--source:api-specifications-->Products<!--/source--> |

##### Response `201``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Example response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message`required | `string` | <!--source:api-specifications-->Message<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`DELETE` `/marketing/ontology/families/{family_id}`

<!--source:api-specifications-->

#### Delete Product Family
<!--/source-->

`deleteMarketingProductFamily`

<!--source:api-specifications-->
Delete Product Ontology
<!--/source-->

<!--source:api-specifications-->
Delete Product Family

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `family_id` required | `string` path | `platform` | <!--source:api-specifications-->The family id<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`204``403`

`GET` `/marketing/ontology/families/{family_id}`

<!--source:api-specifications-->

#### Retrieve Product Family
<!--/source-->

`retrieveMarketingProductFamily`

<!--source:api-specifications-->
Retrieve Product Ontology
<!--/source-->

<!--source:api-specifications-->
Retrieve Product Family

<!--/source-->

##### Response

<!--source:api-specifications-->
application/json Copy Successfully got the response

```
{
 "category": "",
 "color": "",
 "name": "Platform",
 "component_type": "FAMILY",
 "description": "",
 "family": "",
 "id": "platform",
 "logo_url": "https://site-content.dev-site.staircaseapi.com/marketing/ontology/families/platform/content/public/logo.svg",
 "pk": "ONTOLOGY",
 "sk": "FAMILY#platform",
 "product_categories": [
 {
 "category": "",
 "color": "",
 "name": "Data",
 "component_type": "CATEGORY",
 "description": "",
 "family": "platform",
 "id": "data",
 "logo_url": "",
 "pk": "ONTOLOGY",
 "sk": "FAMILY#platform#CATEGORY#data",
 "products": [
 {
 "category": "data",
 "color": "",
 "name": "Data Extraction Training",
 "component_type": "PRODUCT",
 "description": "",
 "family": "platform",
 "id": "data-extraction-training",
 "logo_url": "",
 "pk": "ONTOLOGY",
 "sk": "FAMILY#platform#CATEGORY#data#PRODUCT#data-extraction-training"
 },
 {
 "category": "data",
 "color": "",
 "name": "Language",
 "component_type": "PRODUCT",
 "description": "",
 "family": "platform",
 "id": "language",
 "logo_url": "",
 "pk": "ONTOLOGY",
 "sk": "FAMILY#platform#CATEGORY#data#PRODUCT#language"
 },
 {
 "category": "data",
 "color": "",
 "name": "Persistence",
 "component_type": "PRODUCT",
 "description": "",
 "family": "platform",
 "id": "persistence",
 "logo_url": "",
 "pk": "ONTOLOGY",
 "sk": "FAMILY#platform#CATEGORY#data#PRODUCT#persistence"
 },
 {
 "category": "data",
 "color": "",
 "name": "Rule",
 "component_type": "PRODUCT",
 "description": "",
 "family": "platform",
 "id": "rule",
 "logo_url": "",
 "pk": "ONTOLOGY",
 "sk": "FAMILY#platform#CATEGORY#data#PRODUCT#rule"
 },
 {
 "category": "data",
 "color": "",
 "name": "Site",
 "component_type": "PRODUCT",
 "description": "",
 "family": "platform",
 "id": "site",
 "logo_url": "https://site-content.dev-site.staircaseapi.com/marketing/ontology/families/platform/categories/data/products/site/content/public/logo.svg",
 "pk": "ONTOLOGY",
 "sk": "FAMILY#platform#CATEGORY#data#PRODUCT#site"
 },
 {
 "category": "data",
 "color": "",
 "name": "Translator",
 "component_type": "PRODUCT",
 "description": "",
 "family": "platform",
 "id": "translator",
 "logo_url": "",
 "pk": "ONTOLOGY",
 "sk": "FAMILY#platform#CATEGORY#data#PRODUCT#translator"
 }
 ]
 },
 {
 "category": "",
 "color": "",
 "name": "Integrate",
 "component_type": "CATEGORY",
 "description": "",
 "family": "platform",
 "id": "integrate",
 "logo_url": "",
 "pk": "ONTOLOGY",
 "sk": "FAMILY#platform#CATEGORY#integrate",
 "products": [
 {
 "category": "integrate",
 "color": "",
 "name": "Connector",
 "component_type": "PRODUCT",
 "description": "",
 "family": "platform",
 "id": "connector",
 "logo_url": "",
 "pk": "ONTOLOGY",
 "sk": "FAMILY#platform#CATEGORY#integrate#PRODUCT#connector"
 },
 {
 "category": "integrate",
 "color": "",
 "name": "Job",
 "component_type": "PRODUCT",
 "description": "",
 "family": "platform",
 "id": "job",
 "logo_url": "",
 "pk": "ONTOLOGY",
 "sk": "FAMILY#platform#CATEGORY#integrate#PRODUCT#job"
 },
 {
 "category": "integrate",
 "color": "",
 "name": "Product",
 "component_type": "PRODUCT",
 "description": "",
 "family": "platform",
 "id": "product",
 "logo_url": "",
 "pk": "ONTOLOGY",
 "sk": "FAMILY#platform#CATEGORY#integrate#PRODUCT#product"
 }
 ]
 }
 ]
}
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `family_id` required | `string` path | `platform` | <!--source:api-specifications-->The family id<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
11 fields
<!--/source-->
<!--source:api-specifications-->
Successfully got the response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `category` | `string` | <!--source:api-specifications-->The category name<!--/source--> |
| `color` | `string` | <!--source:api-specifications-->Color code<!--/source--> |
| `name`required | `string` | <!--source:api-specifications-->The component name<!--/source--> |
| `component_type`required | `string` | <!--source:api-specifications-->Component Type<!--/source--> |
| `description`required | `string` | <!--source:api-specifications-->Description<!--/source--> |
| `family` | `string` | <!--source:api-specifications-->Family<!--/source--> |
| `id`required | `string` | <!--source:api-specifications-->Component ID<!--/source--> |
| `logo_url` | `string` | <!--source:api-specifications-->The logo URL<!--/source--> |
| `pk`required | `string` | <!--source:api-specifications-->key<!--/source--> |
| `sk`required | `string` | <!--source:api-specifications-->The path key<!--/source--> |
| `product_categories`required | `object[]` | <!--source:api-specifications-->Product categories<!--/source--> |
| `category` | `string` | <!--source:api-specifications-->Category name<!--/source--> |
| `color` | `string` | <!--source:api-specifications-->The color code<!--/source--> |
| `name`required | `string` | <!--source:api-specifications-->Component Name<!--/source--> |
| `component_type`required | `string` | <!--source:api-specifications-->Component Type<!--/source--> |
| `description`required | `string` | <!--source:api-specifications-->Description<!--/source--> |
| `family` | `string` | <!--source:api-specifications-->Family<!--/source--> |
| `id`required | `string` | <!--source:api-specifications-->ID<!--/source--> |
| `logo_url` | `string` | <!--source:api-specifications-->The logo URL<!--/source--> |
| `pk`required | `string` | <!--source:api-specifications-->PK<!--/source--> |
| `sk`required | `string` | <!--source:api-specifications-->SK<!--/source--> |
| `products` | `object[]` | <!--source:api-specifications-->Products List<!--/source--> |
| `category` | `string` | <!--source:api-specifications-->Category<!--/source--> |
| `color` | `string` | <!--source:api-specifications-->Color Code<!--/source--> |
| `name`required | `string` | <!--source:api-specifications-->Component Name<!--/source--> |
| `component_type`required | `string` | <!--source:api-specifications-->Component Type<!--/source--> |
| `description`required | `string` | <!--source:api-specifications-->Description<!--/source--> |
| `family` | `string` | <!--source:api-specifications-->Family<!--/source--> |
| `id`required | `string` | <!--source:api-specifications-->ID<!--/source--> |
| `logo_url` | `string` | <!--source:api-specifications-->Logo URL<!--/source--> |
| `pk`required | `string` | <!--source:api-specifications-->PK<!--/source--> |
| `sk`required | `string` | <!--source:api-specifications-->SK<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

<!--source:api-specifications-->

### Tech: Overview
<!--/source-->

`PUT` `/tech/products/{product_name}/content/public/{content_name}`

<!--source:api-specifications-->

#### Upload Product Public Content[updated]
<!--/source-->

`uploadPublicContent`

<!--source:api-specifications-->
Upload Public Content
<!--/source-->

<!--source:api-specifications-->
Upload your Public Content

! Note: You should avoid using spaces at your content name

#### Big size files

Site platform has some restrictions at request body size. Once you reach this limit, you will face 413 Payload Too Large error.

413 Payload Too Large error fix

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
Select option 'binary' in order to upload file
```

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Approval uploaded

```
{
 "download_url": "https://documentation.staircaseapi.com/products/Site/content/public/notebook.ipynb"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
3
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |
| `content_name` required | `string` path | `notebook.ipynb` | <!--source:api-specifications-->The name of the content (should contain extension too)<!--/source--> |
| `Content-Type` required | `string` header | `application/vnd.jupyter` | <!--source:api-specifications-->Mime type of the file<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Approval uploaded
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `download_url` | `string` | <!--source:api-specifications-->Download URL for the uploaded content<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/tech/products/{product_name}/content/public/{content_name}/presigned-url`

<!--source:api-specifications-->

#### Get Presigned URL to upload Public Content[new]
<!--/source-->

`uploadPublicContentPresignedUrl`

<!--source:api-specifications-->
Get Presigned URL to upload Public Content
<!--/source-->

<!--source:api-specifications-->
Upload your big size Public Content

This is a functional duplicate of this endpoint.

Just use upload_Presigned_URL from response to upload your any-size content!

! Note: it is important to set correct {content_name} and {content_type} values according to your file!

! Note: You should avoid using spaces at your content name

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Approval uploaded

```
{
 "download_url": "https://documentation.staircaseapi.com/products/Site/content/public/filename.pdf",
 "presigned_upload_url": "https://site-api-dev-publishingbucket-kz0j6vc5htl0.s3.amazonaws.com/products/Site/content/public/filename.pdf?AWSAccessKeyId=<redacted>&Signature=<redacted>&content-type=application%2Fpdf&x-amz-security-token=<redacted>&Expires=1665605220"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
3
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file<!--/source--> |
| `content_name` required | `string` path | `filename.pdf` | <!--source:api-specifications-->The name of the content (should contain extension too)<!--/source--> |
| `content_type` required | `string` query | `application/pdf` | <!--source:api-specifications-->Content-Type of file you want to upload via Presigned URL<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Approval uploaded
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `download_url` | `string` | <!--source:api-specifications-->Download URL for the uploaded content<!--/source--> |
| `presigned_upload_url` | `string` | <!--source:api-specifications-->Presigned Upload URL for the content<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/tech/products/{product_name}/components/{component_name}/overview`

<!--source:api-specifications-->

#### Get Component Overview Page
<!--/source-->

`getComponentOverviewPage`

<!--source:api-specifications-->
Get component overview page HTML content.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "overview_embedded": "<!DOCTYPE html>\n<p><html lang=\"en\">\n<head>\n</head></p></html></p>"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-component' in product swagger file.<!--/source--> |
| `component_name` required | `string` path | `Marketing: Product Ontology` | <!--source:api-specifications-->Component name which was specified as 'x-product-name' in product swagger file.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `overview` | `string` | <!--source:api-specifications-->HTML content of embedded overview page.<!--/source-->Example `<!DOCTYPE html> <p><html lang="en"> <head> </head></p></html></p>` |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`POST` `/tech/products/{product_name}/components/{component_name}/overview`

<!--source:api-specifications-->

#### Add Component Overview Page
<!--/source-->

`postComponentOverviewPage`

<!--source:api-specifications-->
Add Component Overview Page.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "overview": ""
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "overview_embedded": "<!DOCTYPE html>\n<p><html lang=\"en\">\n<head>\n</head></p></html></p>"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
2
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-component' in product swagger file.<!--/source--> |
| `component_name` required | `string` path | `Marketing: Product Ontology` | <!--source:api-specifications-->Component name which was specified as 'x-product-name' in product swagger file.<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `overview` | `string` | <!--source:api-specifications-->Overview markdown or HTML<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `overview_embedded` | `string` | <!--source:api-specifications-->HTML content of embedded overview page.<!--/source-->Example `<!DOCTYPE html> <p><html lang="en"> <head> </head></p></html></p>` |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`GET` `/tech/products/{product_name}/overview`

<!--source:api-specifications-->

#### Get Overview Page
<!--/source-->

`getOverviewEmbedded`

<!--source:api-specifications-->
Get overview Page
<!--/source-->

<!--source:api-specifications-->
Get product overview page HTML content.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "overview_embedded": "<!DOCTYPE html>\n<p><html lang=\"en\">\n<head>\n</head></p></html></p>"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-name' in product swagger file.<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `overview_embedded` | `string` | <!--source:api-specifications-->HTML content of embedded overview page.<!--/source-->Example `<!DOCTYPE html> <p><html lang="en"> <head> </head></p></html></p>` |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`POST` `/tech/products/{product_name}/overview`

<!--source:api-specifications-->

#### Add Overview Page
<!--/source-->

`postOverviewPage`

<!--source:api-specifications-->
Add Product Overview Page.

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
{
 "overview": ""
}
```

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Success response

```
{
 "overview_embedded": "<!DOCTYPE html>\n<p><html lang=\"en\">\n<head>\n</head></p></html></p>"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `product_name` required | `string` path | `Site` | <!--source:api-specifications-->Product name which was specified as 'x-product-component' in product swagger file.<!--/source--> |

##### Request body`application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `overview` | `string` | <!--source:api-specifications-->Overview markdown or HTML<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Success response
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `overview_embedded` | `string` | <!--source:api-specifications-->HTML content of embedded overview page.<!--/source-->Example `<!DOCTYPE html> <p><html lang="en"> <head> </head></p></html></p>` |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `422``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Bad request.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

<!--source:api-specifications-->

### Tech: Logo[new]
<!--/source-->

`GET` `/tech/logo`

<!--source:api-specifications-->

#### Get Logo
<!--/source-->

`getLogo`

<!--source:api-specifications-->
Get Logo download URL used both Sites: Technical and Marketing.

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Logo URL

```
{
 "download_url": "https://documentation.staircaseapi.com/products/Site/content/public/logo.png"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Logo URL
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `download_url` | `string` | <!--source:api-specifications-->Download URL for the uploaded Logo<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

`PUT` `/tech/logo`

<!--source:api-specifications-->

#### Upload Logo
<!--/source-->

`uploadGlobalCompanyLogo`

<!--source:api-specifications-->
Upload Logo which will be used both: Technical and Marketing Sites

! Note: It might take time after request did to update your logo

<!--/source-->

##### Request

<!--source:api-specifications-->
application/json Copy
```
Select option 'binary' in order to upload file
```

<!--/source-->

##### Response

<!--source:api-specifications-->
200400
<!--/source-->

<!--source:api-specifications-->
application/json Copy Logo Uploaded

```
{
 "download_url": "https://documentation.staircaseapi.com/products/Site/content/public/logo.png"
}
```

<!--/source-->

<!--source:api-specifications-->
text/html Copy Bad Request

```
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
```

<!--/source-->

##### Parameters

<!--source:api-specifications-->
1
<!--/source-->

| Parameter | Type | Example | Description |
| --- | --- | --- | --- |
| `Content-Type` required | `string` header | `image/png` | <!--source:api-specifications-->Mime type of the file<!--/source--> |

##### Response `200``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Logo Uploaded
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `download_url` | `string` | <!--source:api-specifications-->Download URL for the uploaded Logo<!--/source--> |

##### Response `400``application/json`

<!--source:api-specifications-->
2 fields
<!--/source-->
<!--source:api-specifications-->
Bad Request
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error.<!--/source--> |
| `message` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `404``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Publishing not found.
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `message` | `string` | <!--source:api-specifications-->Message which contains information about requested entity<!--/source--> |

##### Response `500``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error`required | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Response `502``application/json`

<!--source:api-specifications-->
1 fields
<!--/source-->
<!--source:api-specifications-->
Server error
<!--/source-->

| Field | Type | Description |
| --- | --- | --- |
| `error` | `string` | <!--source:api-specifications-->Error message.<!--/source--> |

##### Other responses

`403`

<!--source:api-specifications-->

### Operations
<!--/source-->

`GET` `/getting-started`

<!--source:api-specifications-->

#### Content for getting-started section
<!--/source-->

<!--source:api-specifications-->
Get content for getting started section

<!--/source-->

##### Other responses

`200``403`

`POST` `/hello-world`

<!--source:api-specifications-->

#### Hello World
<!--/source-->

<!--source:api-specifications-->
Dummy hello world endpoint

<!--/source-->

##### Other responses

`200`

## Errors

`400``401``403``404``407``422``500``502`

## More in Data

- Previous product: Rule
- Next product: Turker
