UNPKG

@getanthill/datastore

Version:

Event-Sourced Datastore

653 lines (622 loc) 17.9 kB
[ { "$id": "/schemas/datastore/aggregator/pipeline", "type": "array", "items": { "oneOf": [ { "$ref": "/schemas/datastore/aggregator/step/fetch" }, { "$ref": "/schemas/datastore/aggregator/step/json_patch" }, { "$ref": "/schemas/datastore/aggregator/step/map" }, { "$ref": "/schemas/datastore/aggregator/step/unset" }, { "$ref": "/schemas/datastore/aggregator/step/validate" }, { "$ref": "/schemas/datastore/aggregator/step/each" }, { "$ref": "/schemas/datastore/aggregator/step/if" }, { "$ref": "/schemas/datastore/aggregator/step/filter" }, { "$ref": "/schemas/datastore/aggregator/step/op" }, { "$ref": "/schemas/datastore/aggregator/step/from" }, { "$ref": "/schemas/datastore/aggregator/step/persist" } ] } }, { "$id": "/schemas/datastore/aggregator/step/fetch", "type": "object", "required": ["type", "model"], "properties": { "type": { "$ref": "/schemas/datastore/aggregator/components/type", "enum": ["fetch"] }, "name": { "$ref": "/schemas/datastore/aggregator/components/step/name" }, "description": { "$ref": "/schemas/datastore/aggregator/components/step/description" }, "destination": { "$ref": "/schemas/datastore/aggregator/components/destination" }, "datastore": { "$ref": "/schemas/datastore/aggregator/components/model" }, "model": { "$ref": "/schemas/datastore/aggregator/components/model" }, "source": { "$ref": "/schemas/datastore/aggregator/components/source" }, "timetravel": { "$ref": "/schemas/datastore/aggregator/components/timetravel" }, "correlation_field": { "$ref": "/schemas/datastore/aggregator/components/correlation_field", "description": "Correlation field to use for timetravel" }, "query": { "$ref": "/schemas/datastore/aggregator/components/query" }, "headers": { "$ref": "/schemas/datastore/aggregator/components/headers" }, "map": { "$ref": "/schemas/datastore/aggregator/components/map" }, "page": { "type": "number", "minimum": 0, "description": "Page index of the fetch step" }, "page_size": { "type": "number", "minimum": 0, "description": "Page size of the fetch step" }, "as_entity": { "type": "boolean", "description": "Does a single entity must be fetched?" }, "must_decrypt": { "type": "boolean", "description": "Does the entity content be decrypt before being persisted?" }, "default": { "description": "Default value" } } }, { "$id": "/schemas/datastore/aggregator/step/json_patch", "type": "object", "required": ["type"], "properties": { "type": { "$ref": "/schemas/datastore/aggregator/components/type", "enum": ["json_patch"] }, "name": { "$ref": "/schemas/datastore/aggregator/components/step/name" }, "description": { "$ref": "/schemas/datastore/aggregator/components/step/description" }, "patch": { "type": "array", "items": { "type": "object", "required": ["op", "path"], "properties": { "op": { "type": "string", "enum": ["add", "remove", "replace", "copy", "move"], "description": "JSON PATCH Operation" }, "path": { "type": "string", "description": "JSON PATCH Operation path" } } } } } }, { "$id": "/schemas/datastore/aggregator/step/map", "type": "object", "required": ["type"], "properties": { "type": { "$ref": "/schemas/datastore/aggregator/components/type", "enum": ["map"] }, "name": { "$ref": "/schemas/datastore/aggregator/components/step/name" }, "description": { "$ref": "/schemas/datastore/aggregator/components/step/description" }, "map": { "$ref": "/schemas/datastore/aggregator/components/map" } } }, { "$id": "/schemas/datastore/aggregator/step/unset", "type": "object", "required": ["type"], "properties": { "type": { "$ref": "/schemas/datastore/aggregator/components/type", "enum": ["unset"] }, "name": { "$ref": "/schemas/datastore/aggregator/components/step/name" }, "description": { "$ref": "/schemas/datastore/aggregator/components/step/description" }, "path": { "$ref": "/schemas/datastore/aggregator/components/path" } } }, { "$id": "/schemas/datastore/aggregator/step/validate", "type": "object", "required": ["type"], "properties": { "type": { "$ref": "/schemas/datastore/aggregator/components/type", "enum": ["validate"] }, "name": { "$ref": "/schemas/datastore/aggregator/components/step/name" }, "description": { "$ref": "/schemas/datastore/aggregator/components/step/description" }, "path": { "$ref": "/schemas/datastore/aggregator/components/path", "description": "Path in the current state to validate" }, "destination": { "$ref": "/schemas/datastore/aggregator/components/path", "description": "Validation result path" }, "must_throw": { "type": "boolean", "description": "Does an invalidation leads to an exception?" }, "schema": { "type": "object", "description": "JSON Schema to validate" } } }, { "$id": "/schemas/datastore/aggregator/step/each", "type": "object", "required": ["type"], "properties": { "type": { "$ref": "/schemas/datastore/aggregator/components/type", "enum": ["each"] }, "name": { "$ref": "/schemas/datastore/aggregator/components/step/name" }, "description": { "$ref": "/schemas/datastore/aggregator/components/step/description" }, "path": { "$ref": "/schemas/datastore/aggregator/components/path", "description": "Path in the current state to iterate on" }, "destination": { "$ref": "/schemas/datastore/aggregator/components/path", "description": "Validation result path" }, "pipeline": { "$ref": "/schemas/datastore/aggregator/pipeline" } } }, { "$id": "/schemas/datastore/aggregator/step/if", "type": "object", "required": ["type"], "properties": { "type": { "$ref": "/schemas/datastore/aggregator/components/type", "enum": ["if"] }, "name": { "$ref": "/schemas/datastore/aggregator/components/step/name" }, "description": { "$ref": "/schemas/datastore/aggregator/components/step/description" }, "path": { "$ref": "/schemas/datastore/aggregator/components/path", "description": "Path in the current state to validate" }, "schema": { "type": "object", "description": "JSON Schema to validate" }, "pipeline": { "$ref": "/schemas/datastore/aggregator/pipeline", "description": "Sub pipeline to execute" }, "repeat_while_true": { "type": "boolean", "description": "Repeat the step while the validate part is true (while loop)" }, "max_iteration_count": { "type": "number", "minimum": 0, "description": "Maximum number of iterations in case of a while loop iteration (default: 100)" } } }, { "$id": "/schemas/datastore/aggregator/step/filter", "type": "object", "required": ["type"], "properties": { "type": { "$ref": "/schemas/datastore/aggregator/components/type", "enum": ["filter"] }, "name": { "$ref": "/schemas/datastore/aggregator/components/step/name" }, "description": { "$ref": "/schemas/datastore/aggregator/components/step/description" }, "path": { "$ref": "/schemas/datastore/aggregator/components/path", "description": "Path in the current state to validate" }, "destination": { "$ref": "/schemas/datastore/aggregator/components/path", "description": "Validation result path" }, "schema": { "type": "object", "description": "JSON Schema to validate" }, "as_entity": { "type": "boolean", "description": "Does a single entity must be found?" }, "map": { "$ref": "/schemas/datastore/aggregator/components/map" }, "default": { "description": "Default value" } } }, { "$id": "/schemas/datastore/aggregator/step/from", "type": "object", "required": ["type"], "properties": { "type": { "$ref": "/schemas/datastore/aggregator/components/type", "enum": ["from"] }, "name": { "$ref": "/schemas/datastore/aggregator/components/step/name" }, "description": { "$ref": "/schemas/datastore/aggregator/components/step/description" }, "path": { "$ref": "/schemas/datastore/aggregator/components/path", "description": "Path in the current state to search steps to execute" } } }, { "$id": "/schemas/datastore/aggregator/step/op", "type": "object", "required": ["type"], "properties": { "type": { "$ref": "/schemas/datastore/aggregator/components/type", "enum": ["op"] }, "name": { "$ref": "/schemas/datastore/aggregator/components/step/name" }, "description": { "$ref": "/schemas/datastore/aggregator/components/step/description" }, "path": { "$ref": "/schemas/datastore/aggregator/components/path", "description": "Path in the current state to apply the operationn on" }, "destination": { "$ref": "/schemas/datastore/aggregator/components/path", "description": "Validation result path" }, "func": { "type": "string", "description": "Name of the function to invoke" }, "args_as_array": { "type": "boolean", "description": "Are the args be sent as array (true) to the function or as arguments (otherwise)?" }, "args": { "type": "array", "description": "List of arguments taken from the value defined by `path`", "items": { "anyOf": [ { "type": "number" }, { "type": "string" }, { "type": "boolean" }, { "type": "object", "properties": { "path": { "$ref": "/schemas/datastore/aggregator/components/path" }, "func": { "type": "string", "description": "Lodash valid function" } } } ] } }, "default": { "description": "Default value" } } }, { "$id": "/schemas/datastore/aggregator/step/persist", "type": "object", "required": ["type"], "properties": { "type": { "$ref": "/schemas/datastore/aggregator/components/type", "enum": ["persist"] }, "name": { "$ref": "/schemas/datastore/aggregator/components/step/name" }, "description": { "$ref": "/schemas/datastore/aggregator/components/step/description" }, "destination": { "$ref": "/schemas/datastore/aggregator/components/destination" }, "datastore": { "$ref": "/schemas/datastore/aggregator/components/model" }, "model": { "$ref": "/schemas/datastore/aggregator/components/model" }, "correlation_field": { "$ref": "/schemas/datastore/aggregator/components/correlation_field", "description": "Correlation field to use for update" }, "imperative_version_next": { "$ref": "/schemas/datastore/aggregator/components/path" }, "payload": { "$ref": "/schemas/datastore/aggregator/components/query" }, "headers": { "$ref": "/schemas/datastore/aggregator/components/headers" }, "map": { "$ref": "/schemas/datastore/aggregator/components/map" } } }, { "$id": "/schemas/datastore/aggregator/components/type", "type": "string", "description": "Step type" }, { "$id": "/schemas/datastore/aggregator/components/path", "oneOf": [ { "type": "string", "description": "String path definition" }, { "type": "array", "description": "Array based path definition", "items": { "type": "string" } } ] }, { "$id": "/schemas/datastore/aggregator/components/datastore", "type": "string", "description": "Datastore client to use", "default": "(The first one available)" }, { "$id": "/schemas/datastore/aggregator/components/model", "type": "string", "description": "Model to fetch data from" }, { "$id": "/schemas/datastore/aggregator/components/source", "type": "string", "enum": ["entities", "events"], "description": "Source of data: entities or events", "default": "entities" }, { "$id": "/schemas/datastore/aggregator/components/timetravel", "type": "string", "description": "Path of the field to use for timetravel date" }, { "$id": "/schemas/datastore/aggregator/components/correlation_field", "type": "string", "description": "Correlation field" }, { "$id": "/schemas/datastore/aggregator/components/destination", "$ref": "/schemas/datastore/aggregator/components/path", "description": "Location of the persistence in the state as a lodash path format" }, { "$id": "/schemas/datastore/aggregator/components/query", "type": "object", "description": "Base query to use to perform the fetch" }, { "$id": "/schemas/datastore/aggregator/components/headers", "type": "object", "patternProperties": { ".*": { "type": "string" } }, "description": "Headers to send along the fetch request" }, { "$id": "/schemas/datastore/aggregator/components/map", "type": "array", "items": { "$ref": "/schemas/datastore/aggregator/components/map/item" } }, { "$id": "/schemas/datastore/aggregator/components/map/item", "description": "Map step definition", "type": "object", "required": ["to"], "properties": { "from": { "$ref": "/schemas/datastore/aggregator/components/path", "description": "Source location of the data to map" }, "to": { "$ref": "/schemas/datastore/aggregator/components/path", "description": "Destination location of the mapped data" }, "default": { "description": "Default value" }, "must_hash": { "type": "boolean", "description": "Does the mapped value be hashed before being persisted?" }, "json_stringify": { "type": "boolean", "description": "Does the mapped value be JSON stringified before being hashed or persisted" }, "relative_date_in_seconds": { "type": "number", "description": "Change the date defined in value or current date of a specific quantity defined in seconds" } } }, { "$id": "/schemas/datastore/aggregator/components/step/name", "type": "string", "description": "Step name" }, { "$id": "/schemas/datastore/aggregator/components/step/description", "type": "string", "description": "Step description" }, { "$id": "/schemas/datastore/projection", "title": "Projection configuration", "type": "object", "properties": { "name": { "type": "string", "description": "Name of the projection" }, "destination": { "type": "string", "description": "Datastore name in the configuration receiving the projection" }, "model": { "type": "object", "description": "Model configuration of the projection" }, "triggers": { "type": "array", "items": { "$ref": "/schemas/datastore/runner/trigger" } }, "pipeline": { "$ref": "/schemas/datastore/aggregator/pipeline" } } }, { "$id": "/schemas/datastore/runner/trigger", "title": "Runner trigger schema", "type": "object", "required": ["datastore", "model", "source"], "properties": { "datastore": { "type": "string", "descrption": "Name of the Datastore in the configuration to use" }, "model": { "type": "string", "descrption": "Model name used for the trigger" }, "source": { "type": "string", "descrption": "Source of the trigger", "enum": ["entities", "events"] }, "raw": { "type": "boolean", "descrption": "Does the event be parsed before sending to the handler?" }, "query": { "type": "object", "descrption": "Query of the trigger" } } } ]