REST API
The REST API enables us to run the entity system and control the entity system from an external source like a web user interface or any web services.
Entity System (Export / Import)
The whole entity system with all types and all instances.
Method | URI | Description | Swag | CPP | ES |
---|---|---|---|---|---|
GET | /entitysystem | Exports the whole entity system | Y | N | N |
POST | /entitysystem | Imports the whole entity system | Y | N | N |
DELETE | /entitysystem | Clears the whole entity system | Y | N | N |
Entity Types
Multiple Entity Types
Method | URI | Description | Swag | CPP | ES |
---|---|---|---|---|---|
GET | /entities/types | Lists all entity types | Y | N | N |
POST | /entities/types | Creates an entity type | Y | N | N |
DELETE | /entities/types | Deletes all entity types (and all entity instances) | Y | N | N |
Single Entity Type
Method | URI | Description | Swag | CPP | ES |
---|---|---|---|---|---|
GET | /entities/types/{uuid} | Returns the entity type with the given UUID | Y | N | N |
POST | /entities/types/{uuid} | Creates (or updates if already exists) the entity type with the given UUID | Y | N | N |
DELETE | /entities/types/{uuid} | Deletes the entity type with the given UUID | Y | N | N |
Entity Type's Attributes
Method | URI | Description | Swag | CPP | ES |
---|---|---|---|---|---|
GET | /entities/types/{uuid} /attributes | Returns all attributes of the entity type with the given UUID | Y | N | N |
GET | /entities/types/{uuid} /attributes/{name} | Returns the value of the named attribute of the entity type with the given UUID | Y | N | N |
POST | /entities/types/{uuid} /attributes/{name} | Creates (or updates if already exists) the value of the named attribute of the given entity type with the given UUID | Y | N | N |
DELETE | /entities/types/{uuid} /attributes/{name} | Deletes the named attribute of the entity type with the given UUID | Y | N | N |
Entity Type's Relationship Types
Method | URI | Description | Swag | CPP | ES |
---|---|---|---|---|---|
GET | /entities/types/{uuid} /relationships | Returns all incoming and outgoing relationship types of the entity type with the given UUID | Y | N | N |
GET | /entities/types/{uuid} /relationships/incoming | Returns all incoming relationship types of the entity type with the given UUID | Y | N | N |
GET | /entities/types/{uuid} /relationships/outgoing | Returns all outgoing relationship types of the entity type with the given UUID | Y | N | N |
Entity Type's Instances
Method | URI | Description | Swag | CPP | ES |
---|---|---|---|---|---|
GET | /entities/types/{uuid} /instances | Returns all entity instances of the entity type with the given UUID | Y | N | N |
DELETE | /entities/types/{uuid} /instances | Deletes all entity instances of the entity type with the given UUID | Y | N | N |
Relationship Types
Multiple Relationship Types
Method | URI | Description | Swag | CPP | ES |
---|---|---|---|---|---|
GET | /relationships/types | Returns all relationship types | Y | N | N |
POST | /relationships/types | Creates an relationship type | Y | N | N |
DELETE | /relationships/types | Deletes all relationship types (and all relationship instances) | Y | N | N |
Single Relationship Type
Method | URI | Description | Swag | CPP | ES |
---|---|---|---|---|---|
GET | /relationships/types/{uuid} | Returns the relationship type with the given UUID | Y | N | N |
POST | /relationships/types/{uuid} | Creates (or updates if already exists) the relationship type with the given UUID | Y | N | N |
DELETE | /relationships/types/{uuid} | Deletes the relationship type with the given UUID | Y | N | N |
Entity Instances
Multiple Entity Instances
Method | URI | Description | Swag | CPP | ES |
---|---|---|---|---|---|
GET | /entities/instances | Returns all entity instances | Y | N | N |
POST | /entities/instances | Creates an entity instance | Y | N | N |
DELETE | /entities/instances | Deletes all entity instances | Y | N | N |
Single Entity Instance
Method | URI | Description | Swag | CPP | ES |
---|---|---|---|---|---|
GET | /entities/instances/{uuid} | Returns the entity instance with the given UUID | Y | Y | Y |
POST | /entities/instances/{uuid} | Creates (or updates if already exists) the entity instance with the given UUID | Y | N | N |
DELETE | /entities/instances/{uuid} | Deletes the entity instance with the given UUID | Y | N | N |
Entity Instance's Attributes
Method | URI | Description | Swag | CPP | ES |
---|---|---|---|---|---|
GET | /entities/instances/{uuid} /attributes | Returns all attributes of the entity instance with the given UUID | Y | N | N |
GET | /entities/instances/{uuid} /attributes/{name} | Returns the value of the named attribute of the entity instance with the given UUID | Y | N | N |
POST | /entities/instances/{uuid} /attributes/{name} | Creates (or updates if already exists) the value of the named attribute of the entity instance with the given UUID | Y | N | N |
DELETE | /entities/instances/{uuid} /attributes/{name} | Deletes the named attribute of the entity instance with the given UUID | Y | N | N |
Entity Instance's Relationship Instances
Method | URI | Description | Swag | CPP | ES |
---|---|---|---|---|---|
GET | /entities/instances/{uuid} /relationships | Returns all incoming and outgoing relationship instances of the entity instance with the given UUID | Y | N | N |
GET | /entities/instances/{uuid} /relationships/incoming | Returns all incoming relationship instances of the entity instance with the given UUID | Y | N | N |
GET | /entities/instances/{uuid} /relationships/outgoing | Returns all outgoing relationship instances of the entity instance with the given UUID | Y | N | N |
GET | /entities/instances/{uuid} /relationships/{uuid_rel_type} | Returns all incoming and outgoing relationship instances of the given relationship type and the entity instance with the given UUID | Y | N | N |
GET | /entities/instances/{uuid} /relationships/{uuid_rel_type} /incoming | Returns all incoming relationship instances of the given relationship type and the entity instance with the given UUID | Y | N | N |
GET | /entities/instances/{uuid} /relationships/{uuid_rel_type} /outgoing | Returns all outgoing relationship instances of the given relationship type and the entity instance with the given UUID | Y | N | N |
Relationship Instances
Multiple Relationship Instances
Method | URI | Description | Swag | CPP | ES |
---|---|---|---|---|---|
GET | /relationships/instances | Returns all relationship instances | Y | N | N |
POST | /relationships/instances | Creates an relationship instance | Y | N | N |
DELETE | /relationships/instances | Deletes all relationship instances | Y | N | N |
Single Relationship Instance
Method | URI | Description | Swag | CPP | ES |
---|---|---|---|---|---|
GET | /relationships/instances/{uuid} | Returns the relationship instance with the given UUID | Y | N | N |
POST | /relationships/instances/{uuid} | Creates (or updates if already exists) the relationship instance with the given UUID | Y | N | N |
DELETE | /relationships/instances/{uuid} | Deletes the relationship instance with the given UUID | Y | N | N |
GET | /relationships/instances /start/{uuid}/end/{uuid} | Returns all relationships between a start node and an end node | Y | N | N |
DELETE | /relationships/instances /start/{uuid}/end/{uuid} | Deletes all relationships between a start node and an end node | Y | N | N |
Features on attributes
A new requirement for the entity system is to have features on attributes.
Every attribute in the entity system can have named features with a boolean value. The feature may exist or not and can only be true or false. Features should be defined on type-level (Entity-Type or Relationship-Type) and can be overwritten on instance-level (Entity-Instance or Relationship-Instance).
Extended datastructure of entity system attributes
Property Name | Datatype | Description |
---|---|---|
uuid | string | The UUID of the attribute |
name | string | The name of the attribute |
datatype | enum | The data type of the attribute |
value | ? | The default value (entity type, relationship type) or the value (entity instance, relationship instance) |
features | map<string, bool> | The features are stored as a map, where the feature-name is the key (new) |
List of possible / planned features
Feature Name | Description |
---|---|
INPUT | The attribute is an input and can be set by the visual scripting. |
OUTPUT | The attribute is an output and can be used as source data by the visual scripting. |
SYNC_SERVER | The attribute have to be synchronized to the game server. |
SYNC_BROADCAST_CLIENTS | The attribute have to be synchronized to the other clients connected to the game server. |
CONFIGURABLE | The attribute is a configuration option. This can be used to specify configuration options of an entity system instance system (ESIS) like a map (number_of_bases), gamemode (needed_scores_to_win), prefab (grid_size_scale), game server logic (max_players) or other systems. Goal is to make it possible to load an ESIS and then initialize the system from config file, database or other config sources. |