Skip to content

Narrative

GET/api/v1/narrative/universes
GET
/api/v1/narrative/universes

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Query Parameters

filter?

Conditions as filter[][]=. Conditions on different fields all apply. in (any of) and all (every one of, on fields holding several values) take a comma-separated list (\, for a literal comma). exists takes true or false. Datetimes are RFC 3339, now, or a time before now such as -30m, -6h or -7d.

q?string

Full-text search over this list's searchable fields.

Length1 <= length <= 200
sort?string

Comma-separated sort keys, - for descending, at most 1. Keys: name, created_at. Default: -created_at.

limit?integer

Rows per page, 1 to 100 (default 25).

Range1 <= value <= 100
cursor?string

The page.next_cursor of the previous page. Cannot be combined with page.

page?integer

A 1-based page number, for jumping. Cannot be combined with cursor.

Range1 <= value
total?boolean

Set to true to include the number of matching rows in page.total.

include_stats?boolean

Include each universe's story, actor, and session counts

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes"
{  "items": [    {      "actor_id": "string",      "created_at": "2019-08-24T14:15:22Z",      "event_id": "string",      "event_key": "string",      "metadata": {        "property1": null,        "property2": null      },      "session_id": "string",      "story_id": "string",      "universe_id": "string",      "value_json": null    }  ],  "page": {    "has_more": true,    "next_cursor": "string",    "page": 0,    "total": 0  }}
POST/api/v1/narrative/universes
POST
/api/v1/narrative/universes

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/api/v1/narrative/universes" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
{  "created_at": "2019-08-24T14:15:22Z",  "description": "string",  "metadata": {    "property1": null,    "property2": null  },  "name": "string",  "settings": {    "allow_session_creation": true,    "allow_story_creation": true,    "max_concurrent_sessions": 0,    "max_stories": 0  },  "stats": null,  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z"}
GET/api/v1/narrative/universes/{universe_id}
GET
/api/v1/narrative/universes/{universe_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string"
{  "created_at": "2019-08-24T14:15:22Z",  "description": "string",  "metadata": {    "property1": null,    "property2": null  },  "name": "string",  "settings": {    "allow_session_creation": true,    "allow_story_creation": true,    "max_concurrent_sessions": 0,    "max_stories": 0  },  "stats": null,  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z"}
PATCH/api/v1/narrative/universes/{universe_id}
PATCH
/api/v1/narrative/universes/{universe_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X PATCH "https://example.com/api/v1/narrative/universes/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "created_at": "2019-08-24T14:15:22Z",  "description": "string",  "metadata": {    "property1": null,    "property2": null  },  "name": "string",  "settings": {    "allow_session_creation": true,    "allow_story_creation": true,    "max_concurrent_sessions": 0,    "max_stories": 0  },  "stats": null,  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z"}
DELETE/api/v1/narrative/universes/{universe_id}
DELETE
/api/v1/narrative/universes/{universe_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Response Body

curl -X DELETE "https://example.com/api/v1/narrative/universes/string"
Empty
GET/api/v1/narrative/universes/{universe_id}/actor-templates
GET
/api/v1/narrative/universes/{universe_id}/actor-templates

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Query Parameters

filter?

Conditions as filter[][]=. Conditions on different fields all apply. in (any of) and all (every one of, on fields holding several values) take a comma-separated list (\, for a literal comma). exists takes true or false. Datetimes are RFC 3339, now, or a time before now such as -30m, -6h or -7d.

q?string

Full-text search over this list's searchable fields.

Length1 <= length <= 200
sort?string

Comma-separated sort keys, - for descending, at most 1. Keys: name, version, updated_at, created_at. Default: -created_at.

limit?integer

Rows per page, 1 to 100 (default 25).

Range1 <= value <= 100
cursor?string

The page.next_cursor of the previous page. Cannot be combined with page.

page?integer

A 1-based page number, for jumping. Cannot be combined with cursor.

Range1 <= value
total?boolean

Set to true to include the number of matching rows in page.total.

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string/actor-templates"
{  "items": [    {      "actor_id": "string",      "created_at": "2019-08-24T14:15:22Z",      "event_id": "string",      "event_key": "string",      "metadata": {        "property1": null,        "property2": null      },      "session_id": "string",      "story_id": "string",      "universe_id": "string",      "value_json": null    }  ],  "page": {    "has_more": true,    "next_cursor": "string",    "page": 0,    "total": 0  }}
POST/api/v1/narrative/universes/{universe_id}/actor-templates
POST
/api/v1/narrative/universes/{universe_id}/actor-templates

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/api/v1/narrative/universes/string/actor-templates" \  -H "Content-Type: application/json" \  -d '{    "actor_type": "character",    "name": "string"  }'
{  "actor_type": "character",  "color": "string",  "created_at": "2019-08-24T14:15:22Z",  "default_attribute_ids": [    "string"  ],  "default_properties": {    "avatar_image_name": "string",    "description": "string",    "display_name": "string",    "image_name": "string"  },  "description": "string",  "image_name": "string",  "metadata": {    "property1": null,    "property2": null  },  "name": "string",  "publish_state": "draft",  "tags": [    "string"  ],  "template_id": "string",  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z",  "version": 0}
GET/api/v1/narrative/universes/{universe_id}/actor-templates/{template_id}
GET
/api/v1/narrative/universes/{universe_id}/actor-templates/{template_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

template_id*string

Template ID

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string/actor-templates/string"
{  "actor_type": "character",  "color": "string",  "created_at": "2019-08-24T14:15:22Z",  "default_attribute_ids": [    "string"  ],  "default_properties": {    "avatar_image_name": "string",    "description": "string",    "display_name": "string",    "image_name": "string"  },  "description": "string",  "image_name": "string",  "metadata": {    "property1": null,    "property2": null  },  "name": "string",  "publish_state": "draft",  "tags": [    "string"  ],  "template_id": "string",  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z",  "version": 0}
PATCH/api/v1/narrative/universes/{universe_id}/actor-templates/{template_id}
PATCH
/api/v1/narrative/universes/{universe_id}/actor-templates/{template_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

template_id*string

Template ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X PATCH "https://example.com/api/v1/narrative/universes/string/actor-templates/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "actor_type": "character",  "color": "string",  "created_at": "2019-08-24T14:15:22Z",  "default_attribute_ids": [    "string"  ],  "default_properties": {    "avatar_image_name": "string",    "description": "string",    "display_name": "string",    "image_name": "string"  },  "description": "string",  "image_name": "string",  "metadata": {    "property1": null,    "property2": null  },  "name": "string",  "publish_state": "draft",  "tags": [    "string"  ],  "template_id": "string",  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z",  "version": 0}
DELETE/api/v1/narrative/universes/{universe_id}/actor-templates/{template_id}
DELETE
/api/v1/narrative/universes/{universe_id}/actor-templates/{template_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

template_id*string

Template ID

Response Body

curl -X DELETE "https://example.com/api/v1/narrative/universes/string/actor-templates/string"
Empty
GET/api/v1/narrative/universes/{universe_id}/actors
GET
/api/v1/narrative/universes/{universe_id}/actors

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Query Parameters

filter?

Conditions as filter[][]=. Conditions on different fields all apply. in (any of) and all (every one of, on fields holding several values) take a comma-separated list (\, for a literal comma). exists takes true or false. Datetimes are RFC 3339, now, or a time before now such as -30m, -6h or -7d.

q?string

Full-text search over this list's searchable fields.

Length1 <= length <= 200
sort?string

Comma-separated sort keys, - for descending, at most 1. Keys: name, version, updated_at, created_at. Default: -created_at.

limit?integer

Rows per page, 1 to 100 (default 25).

Range1 <= value <= 100
cursor?string

The page.next_cursor of the previous page. Cannot be combined with page.

page?integer

A 1-based page number, for jumping. Cannot be combined with cursor.

Range1 <= value
total?boolean

Set to true to include the number of matching rows in page.total.

include_instances?boolean

Also list the session and story instances replicated from each matched actor

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string/actors"
{  "items": [    {      "actor_id": "string",      "created_at": "2019-08-24T14:15:22Z",      "event_id": "string",      "event_key": "string",      "metadata": {        "property1": null,        "property2": null      },      "session_id": "string",      "story_id": "string",      "universe_id": "string",      "value_json": null    }  ],  "page": {    "has_more": true,    "next_cursor": "string",    "page": 0,    "total": 0  }}
POST/api/v1/narrative/universes/{universe_id}/actors
POST
/api/v1/narrative/universes/{universe_id}/actors

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Unified actor creation request. Handles:

  • Direct creation (no source_actor_id)
  • Import from another actor (source_actor_id set)
  • Template instantiation (template_id set)

Response Body

application/json

curl -X POST "https://example.com/api/v1/narrative/universes/string/actors" \  -H "Content-Type: application/json" \  -d '{}'
{  "actor_id": "string",  "actor_type": "character",  "attributes": [    {      "attribute_id": "string",      "name": "string",      "override_properties": null,      "template_id": "string",      "updated_at": "2019-08-24T14:15:22Z",      "value": {        "type": "number",        "value": 0.1      },      "version": 0    }  ],  "control_id": "string",  "created_at": "2019-08-24T14:15:22Z",  "last_modified_by": "string",  "metadata": {    "property1": null,    "property2": null  },  "name": "string",  "player_controlled": true,  "properties": {    "avatar_image_name": "string",    "description": "string",    "display_name": "string",    "image_name": "string"  },  "publish_state": "draft",  "scope": "universe",  "session_id": "string",  "source_actor_id": "string",  "source_version": 0,  "story_id": "string",  "tags": [    "string"  ],  "template_id": "string",  "template_snapshot": null,  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z",  "version": 0}
GET/api/v1/narrative/universes/{universe_id}/actors/{actor_id}
GET
/api/v1/narrative/universes/{universe_id}/actors/{actor_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

actor_id*string

Actor ID

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string/actors/string"
{  "actor_id": "string",  "actor_type": "character",  "attributes": [    {      "attribute_id": "string",      "name": "string",      "override_properties": null,      "template_id": "string",      "updated_at": "2019-08-24T14:15:22Z",      "value": {        "type": "number",        "value": 0.1      },      "version": 0    }  ],  "control_id": "string",  "created_at": "2019-08-24T14:15:22Z",  "last_modified_by": "string",  "metadata": {    "property1": null,    "property2": null  },  "name": "string",  "player_controlled": true,  "properties": {    "avatar_image_name": "string",    "description": "string",    "display_name": "string",    "image_name": "string"  },  "publish_state": "draft",  "scope": "universe",  "session_id": "string",  "source_actor_id": "string",  "source_version": 0,  "story_id": "string",  "tags": [    "string"  ],  "template_id": "string",  "template_snapshot": null,  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z",  "version": 0}
PATCH/api/v1/narrative/universes/{universe_id}/actors/{actor_id}
PATCH
/api/v1/narrative/universes/{universe_id}/actors/{actor_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

actor_id*string

Actor ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X PATCH "https://example.com/api/v1/narrative/universes/string/actors/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "actor_id": "string",  "actor_type": "character",  "attributes": [    {      "attribute_id": "string",      "name": "string",      "override_properties": null,      "template_id": "string",      "updated_at": "2019-08-24T14:15:22Z",      "value": {        "type": "number",        "value": 0.1      },      "version": 0    }  ],  "control_id": "string",  "created_at": "2019-08-24T14:15:22Z",  "last_modified_by": "string",  "metadata": {    "property1": null,    "property2": null  },  "name": "string",  "player_controlled": true,  "properties": {    "avatar_image_name": "string",    "description": "string",    "display_name": "string",    "image_name": "string"  },  "publish_state": "draft",  "scope": "universe",  "session_id": "string",  "source_actor_id": "string",  "source_version": 0,  "story_id": "string",  "tags": [    "string"  ],  "template_id": "string",  "template_snapshot": null,  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z",  "version": 0}
DELETE/api/v1/narrative/universes/{universe_id}/actors/{actor_id}
DELETE
/api/v1/narrative/universes/{universe_id}/actors/{actor_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

actor_id*string

Actor ID

Response Body

curl -X DELETE "https://example.com/api/v1/narrative/universes/string/actors/string"
Empty
PATCH/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/attributes/{attribute_id}
PATCH
/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/attributes/{attribute_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

actor_id*string

Actor ID

attribute_id*string

Attribute ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X PATCH "https://example.com/api/v1/narrative/universes/string/actors/string/attributes/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "actor_id": "string",  "actor_type": "character",  "attributes": [    {      "attribute_id": "string",      "name": "string",      "override_properties": null,      "template_id": "string",      "updated_at": "2019-08-24T14:15:22Z",      "value": {        "type": "number",        "value": 0.1      },      "version": 0    }  ],  "control_id": "string",  "created_at": "2019-08-24T14:15:22Z",  "last_modified_by": "string",  "metadata": {    "property1": null,    "property2": null  },  "name": "string",  "player_controlled": true,  "properties": {    "avatar_image_name": "string",    "description": "string",    "display_name": "string",    "image_name": "string"  },  "publish_state": "draft",  "scope": "universe",  "session_id": "string",  "source_actor_id": "string",  "source_version": 0,  "story_id": "string",  "tags": [    "string"  ],  "template_id": "string",  "template_snapshot": null,  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z",  "version": 0}
GET/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/control
GET
/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/control

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

actor_id*string

Actor ID

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string/actors/string/control"
{  "actor_id": "string",  "allowed_mutations": {    "property1": true,    "property2": true  },  "control_id": "string",  "control_mode": "exclusive",  "created_at": "2019-08-24T14:15:22Z",  "expires_at": "2019-08-24T14:15:22Z",  "is_expired": true,  "on_release": {    "action": "discard",    "notify_webhook": "string"  },  "player_id": "string",  "session_id": "string",  "source_scope": "universe",  "universe_id": "string"}
POST/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/control
POST
/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/control

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

actor_id*string

Actor ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/api/v1/narrative/universes/string/actors/string/control" \  -H "Content-Type: application/json" \  -d '{    "player_id": "string",    "session_id": "string"  }'
{  "actor_id": "string",  "allowed_mutations": {    "property1": true,    "property2": true  },  "control_id": "string",  "control_mode": "exclusive",  "created_at": "2019-08-24T14:15:22Z",  "expires_at": "2019-08-24T14:15:22Z",  "is_expired": true,  "on_release": {    "action": "discard",    "notify_webhook": "string"  },  "player_id": "string",  "session_id": "string",  "source_scope": "universe",  "universe_id": "string"}
DELETE/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/control
DELETE
/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/control

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

actor_id*string

Actor ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

curl -X DELETE "https://example.com/api/v1/narrative/universes/string/actors/string/control" \  -H "Content-Type: application/json" \  -d '{}'
Empty
GET/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/events/{event_key}
GET
/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/events/{event_key}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

actor_id*string

Actor ID

event_key*string

Event Key

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string/actors/string/events/string"
{  "actor_id": "string",  "created_at": "2019-08-24T14:15:22Z",  "event_id": "string",  "event_key": "string",  "metadata": {    "property1": null,    "property2": null  },  "session_id": "string",  "story_id": "string",  "universe_id": "string",  "value_json": null}
PATCH/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/events/{event_key}
PATCH
/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/events/{event_key}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

actor_id*string

Actor ID

event_key*string

Event Key (idempotent)

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X PATCH "https://example.com/api/v1/narrative/universes/string/actors/string/events/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "actor_id": "string",  "created_at": "2019-08-24T14:15:22Z",  "event_id": "string",  "event_key": "string",  "metadata": {    "property1": null,    "property2": null  },  "session_id": "string",  "story_id": "string",  "universe_id": "string",  "value_json": null}
DELETE/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/events/{event_key}
DELETE
/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/events/{event_key}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

actor_id*string

Actor ID

event_key*string

Event Key

Response Body

curl -X DELETE "https://example.com/api/v1/narrative/universes/string/actors/string/events/string"
Empty
POST/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/promote
POST
/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/promote

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

actor_id*string

Actor ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/api/v1/narrative/universes/string/actors/string/promote" \  -H "Content-Type: application/json" \  -d '{    "from_scope": "universe",    "to_scope": "universe"  }'
{  "actor": {    "actor_id": "string",    "actor_type": "character",    "attributes": [      {        "attribute_id": "string",        "name": "string",        "override_properties": null,        "template_id": "string",        "updated_at": "2019-08-24T14:15:22Z",        "value": {          "type": "number",          "value": 0.1        },        "version": 0      }    ],    "control_id": "string",    "created_at": "2019-08-24T14:15:22Z",    "last_modified_by": "string",    "metadata": {      "property1": null,      "property2": null    },    "name": "string",    "player_controlled": true,    "properties": {      "avatar_image_name": "string",      "description": "string",      "display_name": "string",      "image_name": "string"    },    "publish_state": "draft",    "scope": "universe",    "session_id": "string",    "source_actor_id": "string",    "source_version": 0,    "story_id": "string",    "tags": [      "string"    ],    "template_id": "string",    "template_snapshot": null,    "universe_id": "string",    "updated_at": "2019-08-24T14:15:22Z",    "version": 0  },  "conflicts_resolved": 0,  "fields_promoted": [    "string"  ],  "from_scope": "universe",  "source_actor_id": "string",  "success": true,  "target_actor_id": "string",  "to_scope": "universe"}
POST/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/replicate
POST
/api/v1/narrative/universes/{universe_id}/actors/{actor_id}/replicate

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

actor_id*string

Actor ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/api/v1/narrative/universes/string/actors/string/replicate" \  -H "Content-Type: application/json" \  -d '{    "new_actor_id": "string",    "to_scope": "universe"  }'
{  "actor": {    "actor_id": "string",    "actor_type": "character",    "attributes": [      {        "attribute_id": "string",        "name": "string",        "override_properties": null,        "template_id": "string",        "updated_at": "2019-08-24T14:15:22Z",        "value": {          "type": "number",          "value": 0.1        },        "version": 0      }    ],    "control_id": "string",    "created_at": "2019-08-24T14:15:22Z",    "last_modified_by": "string",    "metadata": {      "property1": null,      "property2": null    },    "name": "string",    "player_controlled": true,    "properties": {      "avatar_image_name": "string",      "description": "string",      "display_name": "string",      "image_name": "string"    },    "publish_state": "draft",    "scope": "universe",    "session_id": "string",    "source_actor_id": "string",    "source_version": 0,    "story_id": "string",    "tags": [      "string"    ],    "template_id": "string",    "template_snapshot": null,    "universe_id": "string",    "updated_at": "2019-08-24T14:15:22Z",    "version": 0  },  "new_actor_id": "string",  "source_actor_id": "string",  "success": true}
GET/api/v1/narrative/universes/{universe_id}/attribute-templates
GET
/api/v1/narrative/universes/{universe_id}/attribute-templates

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Query Parameters

filter?

Conditions as filter[][]=. Conditions on different fields all apply. in (any of) and all (every one of, on fields holding several values) take a comma-separated list (\, for a literal comma). exists takes true or false. Datetimes are RFC 3339, now, or a time before now such as -30m, -6h or -7d.

q?string

Full-text search over this list's searchable fields.

Length1 <= length <= 200
sort?string

Comma-separated sort keys, - for descending, at most 1. Keys: name, min_value, max_value, updated_at, created_at. Default: -created_at.

limit?integer

Rows per page, 1 to 100 (default 25).

Range1 <= value <= 100
cursor?string

The page.next_cursor of the previous page. Cannot be combined with page.

page?integer

A 1-based page number, for jumping. Cannot be combined with cursor.

Range1 <= value
total?boolean

Set to true to include the number of matching rows in page.total.

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string/attribute-templates"
{  "items": [    {      "actor_id": "string",      "created_at": "2019-08-24T14:15:22Z",      "event_id": "string",      "event_key": "string",      "metadata": {        "property1": null,        "property2": null      },      "session_id": "string",      "story_id": "string",      "universe_id": "string",      "value_json": null    }  ],  "page": {    "has_more": true,    "next_cursor": "string",    "page": 0,    "total": 0  }}
POST/api/v1/narrative/universes/{universe_id}/attribute-templates
POST
/api/v1/narrative/universes/{universe_id}/attribute-templates

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/api/v1/narrative/universes/string/attribute-templates" \  -H "Content-Type: application/json" \  -d '{    "attribute_type": "number",    "name": "string"  }'
{  "attribute_type": "number",  "color": "string",  "created_at": "2019-08-24T14:15:22Z",  "default_value": null,  "description": "string",  "image_name": "string",  "max_value": 0,  "metadata": {    "property1": null,    "property2": null  },  "min_value": 0,  "name": "string",  "publish_state": "draft",  "suggested_values": [    "string"  ],  "template_id": "string",  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z"}
GET/api/v1/narrative/universes/{universe_id}/attribute-templates/{template_id}
GET
/api/v1/narrative/universes/{universe_id}/attribute-templates/{template_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

template_id*string

Template ID

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string/attribute-templates/string"
{  "attribute_type": "number",  "color": "string",  "created_at": "2019-08-24T14:15:22Z",  "default_value": null,  "description": "string",  "image_name": "string",  "max_value": 0,  "metadata": {    "property1": null,    "property2": null  },  "min_value": 0,  "name": "string",  "publish_state": "draft",  "suggested_values": [    "string"  ],  "template_id": "string",  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z"}
PATCH/api/v1/narrative/universes/{universe_id}/attribute-templates/{template_id}
PATCH
/api/v1/narrative/universes/{universe_id}/attribute-templates/{template_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

template_id*string

Template ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X PATCH "https://example.com/api/v1/narrative/universes/string/attribute-templates/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "attribute_type": "number",  "color": "string",  "created_at": "2019-08-24T14:15:22Z",  "default_value": null,  "description": "string",  "image_name": "string",  "max_value": 0,  "metadata": {    "property1": null,    "property2": null  },  "min_value": 0,  "name": "string",  "publish_state": "draft",  "suggested_values": [    "string"  ],  "template_id": "string",  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z"}
DELETE/api/v1/narrative/universes/{universe_id}/attribute-templates/{template_id}
DELETE
/api/v1/narrative/universes/{universe_id}/attribute-templates/{template_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

template_id*string

Template ID

Response Body

curl -X DELETE "https://example.com/api/v1/narrative/universes/string/attribute-templates/string"
Empty
GET/api/v1/narrative/universes/{universe_id}/events
GET
/api/v1/narrative/universes/{universe_id}/events

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Query Parameters

filter?

Conditions as filter[][]=. Conditions on different fields all apply. in (any of) and all (every one of, on fields holding several values) take a comma-separated list (\, for a literal comma). exists takes true or false. Datetimes are RFC 3339, now, or a time before now such as -30m, -6h or -7d.

sort?string

Comma-separated sort keys, - for descending, at most 1. Keys: created_at. Default: -created_at.

limit?integer

Rows per page, 1 to 100 (default 25).

Range1 <= value <= 100
cursor?string

The page.next_cursor of the previous page. Cannot be combined with page.

page?integer

A 1-based page number, for jumping. Cannot be combined with cursor.

Range1 <= value
total?boolean

Set to true to include the number of matching rows in page.total.

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string/events"
{  "items": [    {      "actor_id": "string",      "created_at": "2019-08-24T14:15:22Z",      "event_id": "string",      "event_key": "string",      "metadata": {        "property1": null,        "property2": null      },      "session_id": "string",      "story_id": "string",      "universe_id": "string",      "value_json": null    }  ],  "page": {    "has_more": true,    "next_cursor": "string",    "page": 0,    "total": 0  }}
POST/api/v1/narrative/universes/{universe_id}/events/aggregate
POST
/api/v1/narrative/universes/{universe_id}/events/aggregate

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/api/v1/narrative/universes/string/events/aggregate" \  -H "Content-Type: application/json" \  -d '{    "event_key": "string"  }'
{  "event_key": "string",  "total_count": 0}
POST/api/v1/narrative/universes/{universe_id}/events/batch
POST
/api/v1/narrative/universes/{universe_id}/events/batch

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

A batch of events to upsert under one universe (high-volume event ingestion). Each is upserted independently and fail-fast; the server enforces a cap.

Response Body

application/json

curl -X POST "https://example.com/api/v1/narrative/universes/string/events/batch" \  -H "Content-Type: application/json" \  -d '{    "events": [      {        "actor_id": "string",        "event": {},        "event_key": "string"      }    ]  }'
{  "count": 0,  "results": [    {      "actor_id": "string",      "created_at": "2019-08-24T14:15:22Z",      "event_id": "string",      "event_key": "string",      "metadata": {        "property1": null,        "property2": null      },      "session_id": "string",      "story_id": "string",      "universe_id": "string",      "value_json": null    }  ]}
GET/api/v1/narrative/universes/{universe_id}/sessions
GET
/api/v1/narrative/universes/{universe_id}/sessions

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Query Parameters

filter?

Conditions as filter[][]=. Conditions on different fields all apply. in (any of) and all (every one of, on fields holding several values) take a comma-separated list (\, for a literal comma). exists takes true or false. Datetimes are RFC 3339, now, or a time before now such as -30m, -6h or -7d.

sort?string

Comma-separated sort keys, - for descending, at most 1. Keys: expires_at, updated_at, created_at. Default: -created_at.

limit?integer

Rows per page, 1 to 100 (default 25).

Range1 <= value <= 100
cursor?string

The page.next_cursor of the previous page. Cannot be combined with page.

page?integer

A 1-based page number, for jumping. Cannot be combined with cursor.

Range1 <= value
total?boolean

Set to true to include the number of matching rows in page.total.

active_only?boolean

Only sessions that have not expired

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string/sessions"
{  "items": [    {      "actor_id": "string",      "created_at": "2019-08-24T14:15:22Z",      "event_id": "string",      "event_key": "string",      "metadata": {        "property1": null,        "property2": null      },      "session_id": "string",      "story_id": "string",      "universe_id": "string",      "value_json": null    }  ],  "page": {    "has_more": true,    "next_cursor": "string",    "page": 0,    "total": 0  }}
POST/api/v1/narrative/universes/{universe_id}/sessions
POST
/api/v1/narrative/universes/{universe_id}/sessions

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/api/v1/narrative/universes/string/sessions" \  -H "Content-Type: application/json" \  -d '{    "player_id": "string"  }'
{  "context": {    "property1": null,    "property2": null  },  "created_at": "2019-08-24T14:15:22Z",  "expires_at": "2019-08-24T14:15:22Z",  "is_expired": true,  "player_id": "string",  "session_id": "string",  "settings": {    "auto_save": true,    "save_interval_seconds": 0,    "ttl_seconds": 0  },  "story_id": "string",  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z"}
GET/api/v1/narrative/universes/{universe_id}/sessions/{session_id}
GET
/api/v1/narrative/universes/{universe_id}/sessions/{session_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

session_id*string

Session ID

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string/sessions/string"
{  "context": {    "property1": null,    "property2": null  },  "created_at": "2019-08-24T14:15:22Z",  "expires_at": "2019-08-24T14:15:22Z",  "is_expired": true,  "player_id": "string",  "session_id": "string",  "settings": {    "auto_save": true,    "save_interval_seconds": 0,    "ttl_seconds": 0  },  "story_id": "string",  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z"}
PATCH/api/v1/narrative/universes/{universe_id}/sessions/{session_id}
PATCH
/api/v1/narrative/universes/{universe_id}/sessions/{session_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

session_id*string

Session ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X PATCH "https://example.com/api/v1/narrative/universes/string/sessions/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "context": {    "property1": null,    "property2": null  },  "created_at": "2019-08-24T14:15:22Z",  "expires_at": "2019-08-24T14:15:22Z",  "is_expired": true,  "player_id": "string",  "session_id": "string",  "settings": {    "auto_save": true,    "save_interval_seconds": 0,    "ttl_seconds": 0  },  "story_id": "string",  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z"}
DELETE/api/v1/narrative/universes/{universe_id}/sessions/{session_id}
DELETE
/api/v1/narrative/universes/{universe_id}/sessions/{session_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

session_id*string

Session ID

Response Body

curl -X DELETE "https://example.com/api/v1/narrative/universes/string/sessions/string"
Empty
GET/api/v1/narrative/universes/{universe_id}/stories
GET
/api/v1/narrative/universes/{universe_id}/stories

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Query Parameters

filter?

Conditions as filter[][]=. Conditions on different fields all apply. in (any of) and all (every one of, on fields holding several values) take a comma-separated list (\, for a literal comma). exists takes true or false. Datetimes are RFC 3339, now, or a time before now such as -30m, -6h or -7d.

q?string

Full-text search over this list's searchable fields.

Length1 <= length <= 200
sort?string

Comma-separated sort keys, - for descending, at most 1. Keys: name, updated_at, created_at. Default: -created_at.

limit?integer

Rows per page, 1 to 100 (default 25).

Range1 <= value <= 100
cursor?string

The page.next_cursor of the previous page. Cannot be combined with page.

page?integer

A 1-based page number, for jumping. Cannot be combined with cursor.

Range1 <= value
total?boolean

Set to true to include the number of matching rows in page.total.

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string/stories"
{  "items": [    {      "actor_id": "string",      "created_at": "2019-08-24T14:15:22Z",      "event_id": "string",      "event_key": "string",      "metadata": {        "property1": null,        "property2": null      },      "session_id": "string",      "story_id": "string",      "universe_id": "string",      "value_json": null    }  ],  "page": {    "has_more": true,    "next_cursor": "string",    "page": 0,    "total": 0  }}
POST/api/v1/narrative/universes/{universe_id}/stories
POST
/api/v1/narrative/universes/{universe_id}/stories

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/api/v1/narrative/universes/string/stories" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
{  "created_at": "2019-08-24T14:15:22Z",  "description": "string",  "graph_data": null,  "lore_compiled": null,  "lore_compiler_version": "string",  "lore_source": "string",  "metadata": {    "property1": null,    "property2": null  },  "name": "string",  "publish_state": "draft",  "settings": {    "actor_import_mode": "copy_on_write",    "allow_sessions": true,    "divergence_point": null,    "max_sessions": 0  },  "stats": null,  "story_id": "string",  "story_type": "string",  "tags": [    "string"  ],  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z"}
GET/api/v1/narrative/universes/{universe_id}/stories/{story_id}
GET
/api/v1/narrative/universes/{universe_id}/stories/{story_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

story_id*string

Story ID

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string/stories/string"
{  "created_at": "2019-08-24T14:15:22Z",  "description": "string",  "graph_data": null,  "lore_compiled": null,  "lore_compiler_version": "string",  "lore_source": "string",  "metadata": {    "property1": null,    "property2": null  },  "name": "string",  "publish_state": "draft",  "settings": {    "actor_import_mode": "copy_on_write",    "allow_sessions": true,    "divergence_point": null,    "max_sessions": 0  },  "stats": null,  "story_id": "string",  "story_type": "string",  "tags": [    "string"  ],  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z"}
PATCH/api/v1/narrative/universes/{universe_id}/stories/{story_id}
PATCH
/api/v1/narrative/universes/{universe_id}/stories/{story_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

story_id*string

Story ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X PATCH "https://example.com/api/v1/narrative/universes/string/stories/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "created_at": "2019-08-24T14:15:22Z",  "description": "string",  "graph_data": null,  "lore_compiled": null,  "lore_compiler_version": "string",  "lore_source": "string",  "metadata": {    "property1": null,    "property2": null  },  "name": "string",  "publish_state": "draft",  "settings": {    "actor_import_mode": "copy_on_write",    "allow_sessions": true,    "divergence_point": null,    "max_sessions": 0  },  "stats": null,  "story_id": "string",  "story_type": "string",  "tags": [    "string"  ],  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z"}
DELETE/api/v1/narrative/universes/{universe_id}/stories/{story_id}
DELETE
/api/v1/narrative/universes/{universe_id}/stories/{story_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

story_id*string

Story ID

Response Body

curl -X DELETE "https://example.com/api/v1/narrative/universes/string/stories/string"
Empty
GET/api/v1/narrative/universes/{universe_id}/tags
GET
/api/v1/narrative/universes/{universe_id}/tags

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Query Parameters

filter?

Conditions as filter[][]=. Conditions on different fields all apply. in (any of) and all (every one of, on fields holding several values) take a comma-separated list (\, for a literal comma). exists takes true or false. Datetimes are RFC 3339, now, or a time before now such as -30m, -6h or -7d.

q?string

Full-text search over this list's searchable fields.

Length1 <= length <= 200
sort?string

Comma-separated sort keys, - for descending, at most 1. Keys: created_at, name. Default: name.

limit?integer

Rows per page, 1 to 100 (default 25).

Range1 <= value <= 100
cursor?string

The page.next_cursor of the previous page. Cannot be combined with page.

page?integer

A 1-based page number, for jumping. Cannot be combined with cursor.

Range1 <= value
total?boolean

Set to true to include the number of matching rows in page.total.

Response Body

application/json

curl -X GET "https://example.com/api/v1/narrative/universes/string/tags"
{  "items": [    {      "actor_id": "string",      "created_at": "2019-08-24T14:15:22Z",      "event_id": "string",      "event_key": "string",      "metadata": {        "property1": null,        "property2": null      },      "session_id": "string",      "story_id": "string",      "universe_id": "string",      "value_json": null    }  ],  "page": {    "has_more": true,    "next_cursor": "string",    "page": 0,    "total": 0  }}
POST/api/v1/narrative/universes/{universe_id}/tags
POST
/api/v1/narrative/universes/{universe_id}/tags

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/api/v1/narrative/universes/string/tags" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
{  "color": "string",  "created_at": "2019-08-24T14:15:22Z",  "name": "string",  "tag_id": "string",  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z"}
PATCH/api/v1/narrative/universes/{universe_id}/tags/{tag_id}
PATCH
/api/v1/narrative/universes/{universe_id}/tags/{tag_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

tag_id*string

Tag ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X PATCH "https://example.com/api/v1/narrative/universes/string/tags/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "color": "string",  "created_at": "2019-08-24T14:15:22Z",  "name": "string",  "tag_id": "string",  "universe_id": "string",  "updated_at": "2019-08-24T14:15:22Z"}
DELETE/api/v1/narrative/universes/{universe_id}/tags/{tag_id}
DELETE
/api/v1/narrative/universes/{universe_id}/tags/{tag_id}

Authorization

bearer_token
AuthorizationBearer <token>

In: header

Path Parameters

universe_id*string

Universe ID

tag_id*string

Tag ID

Response Body

curl -X DELETE "https://example.com/api/v1/narrative/universes/string/tags/string"
Empty