# Scenarios API

## GET /scenarios

> Retrieve scenarios. The \`scenario\_id\` can be used as \`x-configuiration-key\` on other public APIs.

```json
{"openapi":"3.0.3","info":{"title":"Scenarios API","version":"1.0"},"servers":[{"url":"https://api.gospace.app/scenarios/v1"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"Scenario":{"type":"object","properties":{"_id":{"type":"string"},"scenario_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"mode":{"type":"string"},"settings":{"type":"object","additionalProperties":true},"notes":{"type":"array","items":{"type":"object","additionalProperties":true}},"changes":{"type":"boolean"},"unsaved_changes":{"type":"boolean"},"created_by":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_by":{"type":"string"},"updated_at":{"type":"string","format":"date-time"},"archived_by":{"type":"string"},"archived_at":{"type":"string","format":"date-time"},"deleted_by":{"type":"string"},"deleted_at":{"type":"string","format":"date-time"},"active_admins":{"type":"array","items":{"type":"object","additionalProperties":true}},"services_publishing":{"type":"object","additionalProperties":true}},"additionalProperties":true},"Pagination":{"type":"object","properties":{"current_results":{"type":"object","properties":{"from":{"type":"integer"},"to":{"type":"integer"}}},"total_results":{"type":"integer"}},"additionalProperties":true}}},"paths":{"/scenarios":{"get":{"operationId":"getScenarios","description":"Retrieve scenarios. The `scenario_id` can be used as `x-configuiration-key` on other public APIs.","parameters":[{"name":"scenario_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"mode","in":"query","required":false,"schema":{"type":"string"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"scenarios":{"type":"array","items":{"$ref":"#/components/schemas/Scenario"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}},"identifier":{"type":"string"}}}}}}}}}}}
```

## POST /scenarios

> Create a new scenario.

```json
{"openapi":"3.0.3","info":{"title":"Scenarios API","version":"1.0"},"servers":[{"url":"https://api.gospace.app/scenarios/v1"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"Scenario":{"type":"object","properties":{"_id":{"type":"string"},"scenario_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"mode":{"type":"string"},"settings":{"type":"object","additionalProperties":true},"notes":{"type":"array","items":{"type":"object","additionalProperties":true}},"changes":{"type":"boolean"},"unsaved_changes":{"type":"boolean"},"created_by":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_by":{"type":"string"},"updated_at":{"type":"string","format":"date-time"},"archived_by":{"type":"string"},"archived_at":{"type":"string","format":"date-time"},"deleted_by":{"type":"string"},"deleted_at":{"type":"string","format":"date-time"},"active_admins":{"type":"array","items":{"type":"object","additionalProperties":true}},"services_publishing":{"type":"object","additionalProperties":true}},"additionalProperties":true}}},"paths":{"/scenarios":{"post":{"operationId":"createScenario","description":"Create a new scenario.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"mode":{"type":"string"},"settings":{"type":"object","additionalProperties":true},"notes":{"type":"array","items":{"type":"object","additionalProperties":true}}},"required":["name","mode"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/Scenario"},"identifier":{"type":"string"}}}}}}}}}}}
```

## GET /scenarios/{scenario\_id}

> Retrieve a scenario by ID.

```json
{"openapi":"3.0.3","info":{"title":"Scenarios API","version":"1.0"},"servers":[{"url":"https://api.gospace.app/scenarios/v1"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"Scenario":{"type":"object","properties":{"_id":{"type":"string"},"scenario_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"mode":{"type":"string"},"settings":{"type":"object","additionalProperties":true},"notes":{"type":"array","items":{"type":"object","additionalProperties":true}},"changes":{"type":"boolean"},"unsaved_changes":{"type":"boolean"},"created_by":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_by":{"type":"string"},"updated_at":{"type":"string","format":"date-time"},"archived_by":{"type":"string"},"archived_at":{"type":"string","format":"date-time"},"deleted_by":{"type":"string"},"deleted_at":{"type":"string","format":"date-time"},"active_admins":{"type":"array","items":{"type":"object","additionalProperties":true}},"services_publishing":{"type":"object","additionalProperties":true}},"additionalProperties":true}}},"paths":{"/scenarios/{scenario_id}":{"get":{"operationId":"getScenarioById","description":"Retrieve a scenario by ID.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"allOf":[{"$ref":"#/components/schemas/Scenario"}],"nullable":true},"identifier":{"type":"string"}}}}}}}}}}}
```

## PUT /scenarios/{scenario\_id}

> Update a scenario.

```json
{"openapi":"3.0.3","info":{"title":"Scenarios API","version":"1.0"},"servers":[{"url":"https://api.gospace.app/scenarios/v1"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"Scenario":{"type":"object","properties":{"_id":{"type":"string"},"scenario_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"mode":{"type":"string"},"settings":{"type":"object","additionalProperties":true},"notes":{"type":"array","items":{"type":"object","additionalProperties":true}},"changes":{"type":"boolean"},"unsaved_changes":{"type":"boolean"},"created_by":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_by":{"type":"string"},"updated_at":{"type":"string","format":"date-time"},"archived_by":{"type":"string"},"archived_at":{"type":"string","format":"date-time"},"deleted_by":{"type":"string"},"deleted_at":{"type":"string","format":"date-time"},"active_admins":{"type":"array","items":{"type":"object","additionalProperties":true}},"services_publishing":{"type":"object","additionalProperties":true}},"additionalProperties":true}}},"paths":{"/scenarios/{scenario_id}":{"put":{"operationId":"updateScenario","description":"Update a scenario.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"mode":{"type":"string"},"settings":{"type":"object","additionalProperties":true},"notes":{"type":"array","items":{"type":"object","additionalProperties":true}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/Scenario"},"identifier":{"type":"string"}}}}}}}}}}}
```

## DELETE /scenarios/{scenario\_id}

> Delete a scenario.

```json
{"openapi":"3.0.3","info":{"title":"Scenarios API","version":"1.0"},"servers":[{"url":"https://api.gospace.app/scenarios/v1"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"Scenario":{"type":"object","properties":{"_id":{"type":"string"},"scenario_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"mode":{"type":"string"},"settings":{"type":"object","additionalProperties":true},"notes":{"type":"array","items":{"type":"object","additionalProperties":true}},"changes":{"type":"boolean"},"unsaved_changes":{"type":"boolean"},"created_by":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_by":{"type":"string"},"updated_at":{"type":"string","format":"date-time"},"archived_by":{"type":"string"},"archived_at":{"type":"string","format":"date-time"},"deleted_by":{"type":"string"},"deleted_at":{"type":"string","format":"date-time"},"active_admins":{"type":"array","items":{"type":"object","additionalProperties":true}},"services_publishing":{"type":"object","additionalProperties":true}},"additionalProperties":true}}},"paths":{"/scenarios/{scenario_id}":{"delete":{"operationId":"deleteScenario","description":"Delete a scenario.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/Scenario"},"identifier":{"type":"string"}}}}}}}}}}}
```

## POST /scenarios/{scenario\_id}/publish

> Publish a scenario's changes.

```json
{"openapi":"3.0.3","info":{"title":"Scenarios API","version":"1.0"},"servers":[{"url":"https://api.gospace.app/scenarios/v1"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"Scenario":{"type":"object","properties":{"_id":{"type":"string"},"scenario_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"mode":{"type":"string"},"settings":{"type":"object","additionalProperties":true},"notes":{"type":"array","items":{"type":"object","additionalProperties":true}},"changes":{"type":"boolean"},"unsaved_changes":{"type":"boolean"},"created_by":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_by":{"type":"string"},"updated_at":{"type":"string","format":"date-time"},"archived_by":{"type":"string"},"archived_at":{"type":"string","format":"date-time"},"deleted_by":{"type":"string"},"deleted_at":{"type":"string","format":"date-time"},"active_admins":{"type":"array","items":{"type":"object","additionalProperties":true}},"services_publishing":{"type":"object","additionalProperties":true}},"additionalProperties":true}}},"paths":{"/scenarios/{scenario_id}/publish":{"post":{"operationId":"publishScenario","description":"Publish a scenario's changes.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"mode":{"type":"string"},"settings":{"type":"object","additionalProperties":true},"notes":{"type":"array","items":{"type":"object","additionalProperties":true}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/Scenario"},"identifier":{"type":"string"}}}}}}}}}}}
```

## DELETE /scenarios/{scenario\_id}/discard

> Discard unsaved changes for a scenario.

```json
{"openapi":"3.0.3","info":{"title":"Scenarios API","version":"1.0"},"servers":[{"url":"https://api.gospace.app/scenarios/v1"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"Scenario":{"type":"object","properties":{"_id":{"type":"string"},"scenario_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string"},"mode":{"type":"string"},"settings":{"type":"object","additionalProperties":true},"notes":{"type":"array","items":{"type":"object","additionalProperties":true}},"changes":{"type":"boolean"},"unsaved_changes":{"type":"boolean"},"created_by":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_by":{"type":"string"},"updated_at":{"type":"string","format":"date-time"},"archived_by":{"type":"string"},"archived_at":{"type":"string","format":"date-time"},"deleted_by":{"type":"string"},"deleted_at":{"type":"string","format":"date-time"},"active_admins":{"type":"array","items":{"type":"object","additionalProperties":true}},"services_publishing":{"type":"object","additionalProperties":true}},"additionalProperties":true}}},"paths":{"/scenarios/{scenario_id}/discard":{"delete":{"operationId":"discardScenarioChanges","description":"Discard unsaved changes for a scenario.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"$ref":"#/components/schemas/Scenario"},"identifier":{"type":"string"}}}}}}}}}}}
```

## GET /changes

> Retrieve changes. Use \`scenario\_id\` to filter changes for a single scenario.

```json
{"openapi":"3.0.3","info":{"title":"Scenarios API","version":"1.0"},"servers":[{"url":"https://api.gospace.app/scenarios/v1"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"Change":{"type":"object","properties":{"_id":{"type":"string"},"change_id":{"type":"string"},"configuration_id":{"type":"string"},"status":{"type":"string"},"service":{"type":"string"},"entity_id":{"type":"string"},"entity_type":{"type":"string"},"method":{"type":"string"},"data":{"type":"object","additionalProperties":true},"created_by":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_by":{"type":"string"},"updated_at":{"type":"string","format":"date-time"}},"additionalProperties":true},"Pagination":{"type":"object","properties":{"current_results":{"type":"object","properties":{"from":{"type":"integer"},"to":{"type":"integer"}}},"total_results":{"type":"integer"}},"additionalProperties":true}}},"paths":{"/changes":{"get":{"operationId":"getChanges","description":"Retrieve changes. Use `scenario_id` to filter changes for a single scenario.","parameters":[{"name":"scenario_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"configuration_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"service","in":"query","required":false,"schema":{"type":"string"}},{"name":"entity_id","in":"query","required":false,"schema":{"type":"string"}},{"name":"entity_type","in":"query","required":false,"schema":{"type":"string"}},{"name":"method","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","default":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"changes":{"type":"array","items":{"$ref":"#/components/schemas/Change"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}},"identifier":{"type":"string"}}}}}}}}}}}
```

## POST /changes

> Create one or more changes.

```json
{"openapi":"3.0.3","info":{"title":"Scenarios API","version":"1.0"},"servers":[{"url":"https://api.gospace.app/scenarios/v1"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}}},"paths":{"/changes":{"post":{"operationId":"createChanges","description":"Create one or more changes.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"session_id":{"type":"string"},"changes":{"type":"array","items":{"type":"object","properties":{"configuration_id":{"type":"string"},"service":{"type":"string"},"entity_id":{"type":"string"},"entity_type":{"type":"string"},"method":{"type":"string"},"data":{"type":"object","additionalProperties":true},"created_by":{"type":"string"},"status":{"type":"string"}},"required":["configuration_id","service","entity_id","entity_type","method","data"]}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"identifier":{"type":"string"}}}}}}}}}}}
```

## PUT /changes

> Update one or more changes.

```json
{"openapi":"3.0.3","info":{"title":"Scenarios API","version":"1.0"},"servers":[{"url":"https://api.gospace.app/scenarios/v1"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}}},"paths":{"/changes":{"put":{"operationId":"updateChanges","description":"Update one or more changes.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"merge_to_saved":{"type":"boolean"},"session_id":{"type":"string"},"changes":{"type":"array","items":{"type":"object","properties":{"change_id":{"type":"string"},"service":{"type":"string"},"entity_id":{"type":"string"},"entity_type":{"type":"string"},"status":{"type":"string"},"method":{"type":"string"},"data":{"type":"object","additionalProperties":true}},"required":["change_id"]}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","additionalProperties":true},"identifier":{"type":"string"}}}}}}}}}}}
```

## DELETE /changes/{change\_id}

> Delete a change by ID.

```json
{"openapi":"3.0.3","info":{"title":"Scenarios API","version":"1.0"},"servers":[{"url":"https://api.gospace.app/scenarios/v1"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}}},"paths":{"/changes/{change_id}":{"delete":{"operationId":"deleteChange","description":"Delete a change by ID.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"_id":{"type":"string"}}},"identifier":{"type":"string"}}}}}}}}}}}
```
