From 391004045f833b3ed75cf0f56130ca6db60a2e3a Mon Sep 17 00:00:00 2001 From: Jose Manuel Cantera Date: Fri, 23 Nov 2018 08:43:18 +0100 Subject: [PATCH] Full API --- spec/updated/full_api.json | 2886 ++++++++++++++++++++++++++++++++++++ 1 file changed, 2886 insertions(+) diff --git a/spec/updated/full_api.json b/spec/updated/full_api.json index e69de29..d258bbf 100644 --- a/spec/updated/full_api.json +++ b/spec/updated/full_api.json @@ -0,0 +1,2886 @@ +{ + "openapi": "3.0.1", + "info": { + "description": "This OAS file describes the NGSI-LD API defined by the ETSI ISG CIM group. This Cross-domain Context Information Management API allows to provide, consume and subscribe to context information in multiple scenarios and involving multiple stakeholders", + "version": "latest", + "title": "ETSI ISG CIM / NGSI-LD API", + "contact": { + "email": "NGSI-LD@etsi.org" + } + }, + "externalDocs": { + "description": "Find out more about the ETSI ISG Context Information Management", + "url": "https://portal.etsi.org/tb.aspx?tbid=854&SubTB=854" + }, + "tags": [ + { + "name": "ETSI", + "description": "European Telecommunications Standards Institute", + "externalDocs": { + "description": "Find out more", + "url": "http://www.etsi.org" + } + }, + { + "name": "CIM", + "description": "Context Information Management", + "externalDocs": { + "description": "Find out more", + "url": "https://portal.etsi.org/tb.aspx?tbid=854&SubTB=854" + } + }, + { + "name": "JSON-LD", + "description": "JSON for Linked Data", + "externalDocs": { + "description": "Find out more", + "url": "https://json-ld.org/" + } + }, + { + "name": "NGSI-LD API", + "description": "API defined by the ETSI ISG CIM", + "externalDocs": { + "description": "Preliminary Specification", + "url": "http://www.etsi.org/deliver/etsi_gs/CIM/001_099/004/01.01.01_60/gs_CIM004v010101p.pdf" + } + } + ], + "paths": { + "/entities/": { + "get": { + "description": "Retrieve a set of entities which matches a specific query from an NGSI-LD system", + "operationId": "queryEntities", + "tags": [ + "Context Information" + ], + "parameters": [ + { + "name": "id", + "description": "Comma separated list of URIs to be retrieved", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "uri" + } + }, + { + "name": "idPattern", + "description": "Regular expression that must be matched by Entity ids", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "regexp" + } + }, + { + "name": "type", + "description": "Comma separated list of Entity type names to be retrieved", + "in": "query", + "required": false, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "attrs", + "description": "Comma separated list of attribute names (properties or relationships) to be retrieved", + "in": "query", + "required": false, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "q", + "description": "Query", + "in": "query", + "required": false, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "georel", + "description": "Geo-relationship", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "equals", + "disjoint", + "intersects", + "within", + "contains", + "overlaps" + ] + }, + { + "type": "string", + "pattern": "^near;((maxDistance==\\d+)|(minDistance==\\d+))$" + } + ] + } + }, + { + "name": "geometry", + "description": "Geometry", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "Point", + "MultiPoint", + "LineString", + "MultiLineString", + "Polygon", + "MultiPolygon" + ] + } + }, + { + "name": "coordinates", + "description": "Coordinates serialized as a string", + "in": "query", + "required": false, + "schema": { + "oneOf": [ + { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location/definitions/position" + }, + { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location/definitions/positionArray" + }, + { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location/definitions/lineString" + }, + { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location/definitions/polygon" + } + ] + } + }, + { + "name": "geoproperty", + "description": "The name of the property that contains the geo-spatial data that will be used to resolve the geoquery", + "in": "query", + "required": false, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "csf", + "description": "Context Source Filter", + "in": "query", + "required": false, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "limit", + "description": "Pagination limit", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + }, + { + "name": "options", + "description": "Options dictionary", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "keyValues", + "sysAttrs" + ] + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entityOperations~1update/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + }, + "examples": { + "simple": { + "externalValue": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/examples/EntityList-example.json" + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "detail": { + "type": "string" + } + }, + "required": [ + "type" + ] + } + } + } + } + } + }, + "post": { + "description": "Create a new Entity within an NGSI-LD system", + "operationId": "createEntity", + "tags": [ + "Context Information" + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uri" + }, + "type": { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/10/schema" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "modifiedAt": { + "type": "string", + "format": "date-time" + } + } + }, + { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + ] + } + } + } + }, + "responses": { + "201": { + "description": "Created. Contains the resource URI of the created Entity" + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "409": { + "description": "Already exists", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/entities/{entityId}": { + "get": { + "description": "Retrieve an specific Entity from an NGSI-LD system. It's possible to specify the Entity attributes to be retrieved by using query parameters", + "operationId": "retrieveEntityById", + "tags": [ + "Context Information" + ], + "parameters": [ + { + "name": "entityId", + "description": "Entity Id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uri" + } + }, + { + "name": "attrs", + "description": "Comma separated list of attribute names (properties or relationships) to be retrieved", + "in": "query", + "required": false, + "schema": { + "type": "string", + "minLength": 1 + } + }, + { + "name": "type", + "description": "Entity Type", + "in": "query", + "required": false, + "schema": { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/10/schema" + } + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/11" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + }, + "examples": { + "simple": { + "externalValue": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/examples/Entity-example.json" + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + }, + "delete": { + "description": "Removes an specific Entity from an NGSI-LD system", + "operationId": "removeEntityById", + "tags": [ + "Context Information" + ], + "parameters": [ + { + "$ref": "#/paths/~1entities~1%7BentityId%7D/get/parameters/0" + }, + { + "$ref": "#/paths/~1entities~1%7BentityId%7D/get/parameters/2" + } + ], + "responses": { + "204": { + "description": "No Content. The entity was removed successfully" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/entities/{entityId}/attrs/": { + "post": { + "description": "Append new Entity attributes to an existing Entity within an NGSI-LD system", + "operationId": "appendEntityAttrs", + "tags": [ + "Context Information" + ], + "parameters": [ + { + "name": "entityId", + "description": "Entity Id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uri" + } + }, + { + "name": "options", + "description": "Indicates that no attribute overwrite shall be performed", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "noOverwrite" + ] + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "type": "object", + "properties": { + "@context": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "string", + "format": "uri" + }, + { + "type": "array", + "minItems": 1, + "items": { + "anyOf": [ + { + "type": "string", + "format": "uri" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "location": { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "GeoProperty" + }, + "value": { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location" + }, + "observedAt": { + "type": "string", + "format": "date-time" + }, + "createdAt": { + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/createdAt" + }, + "modifiedAt": { + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/modifiedAt" + }, + "datasetId": { + "type": "string", + "format": "uri" + }, + "instanceId": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "type", + "value" + ], + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/additionalProperties/anyOf/0" + }, + { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/additionalProperties/anyOf/1" + } + ] + } + }, + "observationSpace": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location" + }, + "operationSpace": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location" + } + }, + "required": [ + "id", + "type" + ], + "additionalProperties": { + "anyOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "Property" + }, + "value": { + "type": [ + "string", + "number", + "boolean", + "array", + "object" + ] + }, + "observedAt": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/observedAt" + }, + "createdAt": { + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/createdAt" + }, + "modifiedAt": { + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/modifiedAt" + }, + "datasetId": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/datasetId" + }, + "instanceId": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/instanceId" + } + }, + "required": [ + "type", + "value" + ], + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/additionalProperties/anyOf/0" + }, + { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/additionalProperties/anyOf/1" + } + ] + } + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "Relationship" + }, + "object": { + "type": "string", + "format": "uri" + }, + "observedAt": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/observedAt" + }, + "createdAt": { + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/createdAt" + }, + "modifiedAt": { + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/modifiedAt" + }, + "datasetId": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/datasetId" + }, + "instanceId": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/instanceId" + } + }, + "required": [ + "type", + "object" + ], + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/additionalProperties/anyOf/0" + }, + { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/additionalProperties/anyOf/1" + } + ] + } + }, + { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location" + } + ] + }, + "propertyNames": { + "type": "string", + "pattern": "^((\\d|[a-zA-Z]|_)+(#\\d+)?)$|^(@context)$" + } + } + } + } + }, + "responses": { + "204": { + "description": "No Content" + }, + "207": { + "description": "Partial Success. Only the attributes included in the response payload were successfully appended", + "content": { + "application/json;application/ld+json": { + "schema": { + "$schema": "http://json-schema.org/schema#", + "id": "https://uri.etsi.org/ngsi-ld/schema/UpdateResult.json", + "title": "NGSI-LD Update Result", + "description": "NGSI-LD Update Result", + "definitions": { + "UnchangedDetails": { + "attributeName": { + "type": "string", + "pattern": "" + }, + "reason": { + "type": "string", + "minLenght": 1 + } + }, + "UpdateResult": { + "type": "object", + "properties": { + "updated": { + "type": "array", + "items": { + "type": "string", + "pattern": "" + } + }, + "unchanged": { + "type": "array", + "items": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/responses/207/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/UnchangedDetails" + } + } + } + } + }, + "allOf": [ + { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/responses/207/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/UpdateResult" + } + ] + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + }, + "patch": { + "description": "Update existing Entity attributes within an NGSI-LD system", + "operationId": "updateEntityAttrs", + "tags": [ + "Context Information" + ], + "parameters": [ + { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/parameters/0" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "responses": { + "204": { + "description": "No Content." + }, + "207": { + "description": "Partial Success. Only the attributes included in the response payload were successfully updated", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/responses/207/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/entities/{entityId}/attrs/{attrId}": { + "patch": { + "description": "Update existing Entity attributes within an NGSI-LD system", + "operationId": "partialAttrUpdate", + "tags": [ + "Context Information" + ], + "parameters": [ + { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/parameters/0" + }, + { + "name": "attrId", + "description": "Attribute Id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/10/schema" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "responses": { + "204": { + "description": "No Content." + }, + "400": { + "description": "Bad Request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + }, + "delete": { + "description": "Removes an existing Entity attribute within an NGSI-LD system", + "operationId": "removeEntityAttr", + "tags": [ + "Context Information" + ], + "parameters": [ + { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/parameters/0" + }, + { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1%7BattrId%7D/patch/parameters/1" + } + ], + "responses": { + "204": { + "description": "No Content." + }, + "400": { + "description": "Bad Request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/subscriptions/": { + "get": { + "description": "Retrieves the subscriptions available in an NGSI-LD system", + "operationId": "retrieveSubscriptions", + "tags": [ + "Subscriptions" + ], + "parameters": [ + { + "name": "limit", + "description": "Pagination limit", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json;application/ld+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/paths/~1subscriptions~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + }, + "examples": { + "simple": { + "externalValue": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/examples/SubscriptionList-example.json" + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + }, + "post": { + "description": "Creates a new Subscription within an NGSI-LD system", + "operationId": "createSubscription", + "tags": [ + "Subscriptions" + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "allOf": [ + { + "$ref": "#/paths/~1subscriptions~1%7BsubscriptionId%7D/patch/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + }, + { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uri" + }, + "type": { + "type": "string", + "const": "Subscription" + }, + "notification": { + "type": "object", + "properties": { + "attributes": { + "type": "array", + "minItems": 1, + "items": { + "type": "string", + "minLength": 1 + }, + "uniqueItems": true + }, + "format": { + "type": "string" + }, + "endpoint": { + "type": "object", + "required": [ + "uri" + ], + "properties": { + "uri": { + "type": "string", + "format": "uri" + }, + "accept": { + "type": "string", + "enum": [ + "application/json", + "application/ld+json" + ] + } + } + }, + "status": { + "type": "string", + "enum": [ + "ok", + "failed" + ] + }, + "timesSent": { + "type": "number", + "minimum": 1 + }, + "lastNotification": { + "type": "string", + "format": "date-time" + }, + "lastFailure": { + "type": "string", + "format": "date-time" + }, + "lastSuccess": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "endpoint" + ] + }, + "status": { + "type": "string", + "enum": [ + "active", + "paused", + "expired" + ] + }, + "createdAt": { + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/createdAt" + }, + "modifiedAt": { + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/modifiedAt" + } + }, + "allOf": [ + { + "required": [ + "id", + "type" + ] + }, + { + "anyOf": [ + { + "required": [ + "entities" + ] + }, + { + "required": [ + "watchedAttributes" + ] + } + ] + } + ] + } + ] + } + } + } + }, + "responses": { + "201": { + "description": "Created. Contains the resource URI of the created Subscription" + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "409": { + "description": "Already exists", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/subscriptions/{subscriptionId}": { + "get": { + "description": "Retrieves a specific Subscription from an NGSI-LD system", + "operationId": "retrieveSubscription", + "tags": [ + "Context Subscriptions" + ], + "parameters": [ + { + "name": "subscriptionId", + "description": "Subscription Id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uri" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1subscriptions~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + }, + "examples": { + "simple": { + "externalValue": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/examples/Subscription-example_C.4.json" + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + }, + "patch": { + "description": "Updates a specific Subscription within an NGSI-LD system", + "operationId": "updateSubscription", + "tags": [ + "Subscriptions" + ], + "parameters": [ + { + "$ref": "#/paths/~1subscriptions~1%7BsubscriptionId%7D/get/parameters/0" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "type": "object", + "properties": { + "@context": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/%40context" + }, + "entities": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uri" + }, + "type": { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/10/schema" + }, + "idPattern": { + "type": "string", + "format": "regex" + } + }, + "required": [ + "type" + ] + }, + "minItems": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "minLength": 1 + }, + "watchedAttributes": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/10/schema" + }, + "uniqueItems": true + }, + "timeInterval": { + "type": "number", + "minimum": 0 + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "isActive": { + "type": "boolean" + }, + "throttling": { + "type": "number", + "minimum": 1 + }, + "q": { + "type": "string" + }, + "geoQ": { + "type": "object", + "required": [ + "geometry", + "coordinates", + "georel" + ], + "properties": { + "georel": { + "$ref": "#/paths/~1entities~1/get/parameters/5/schema" + }, + "coordinates": { + "$ref": "#/paths/~1entities~1/get/parameters/7/schema" + }, + "geometry": { + "$ref": "#/paths/~1entities~1/get/parameters/6/schema" + } + } + }, + "csf": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "No Content. The Subscription was updated successfully" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + }, + "delete": { + "description": "Removes a specific Subscription from an NGSI-LD system", + "operationId": "removeSubscription", + "tags": [ + "Subscriptions" + ], + "parameters": [ + { + "$ref": "#/paths/~1subscriptions~1%7BsubscriptionId%7D/get/parameters/0" + } + ], + "responses": { + "204": { + "description": "No Content. The Subscription was removed successfully" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/csourceRegistrations/": { + "get": { + "description": "Retrieve a set of context sources which matches a specific query from an NGSI-LD system", + "operationId": "queryCsources", + "tags": [ + "Context Sources" + ], + "parameters": [ + { + "$ref": "#/paths/~1entities~1/get/parameters/0" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/1" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/2" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/3" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/4" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/5" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/6" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/7" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/8" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/10" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json;application/ld+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + }, + "examples": { + "simple": { + "externalValue": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/examples/ContextSourceRegistrationList-example.json" + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + }, + "post": { + "description": "Registers a new context source within an NGSI-LD system", + "operationId": "registerCsource", + "tags": [ + "Context Sources" + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "@context": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/%40context" + }, + "information": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": [ + "entities" + ], + "properties": { + "entities": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/paths/~1subscriptions~1%7BsubscriptionId%7D/patch/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/entities/items" + } + }, + "properties": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/10/schema" + }, + "uniqueItems": true + }, + "relationships": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/10/schema" + }, + "uniqueItems": true + } + } + } + }, + "timestamp": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": [ + "start" + ], + "properties": { + "start": { + "type": "string", + "format": "date-time" + }, + "end": { + "type": "string", + "format": "date-time" + } + } + } + }, + "location": { + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/geometry-schema.json", + "title": "geometry", + "description": "One geometry as defined by GeoJSON. Licensed as per original source is https://github.com/fge/sample-json-schemas/blob/master/geojson/geometry.json", + "type": "object", + "required": [ + "type", + "coordinates" + ], + "oneOf": [ + { + "title": "Point", + "properties": { + "type": { + "enum": [ + "Point" + ] + }, + "coordinates": { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location/definitions/position" + } + } + }, + { + "title": "MultiPoint", + "properties": { + "type": { + "enum": [ + "MultiPoint" + ] + }, + "coordinates": { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location/definitions/positionArray" + } + } + }, + { + "title": "LineString", + "properties": { + "type": { + "enum": [ + "LineString" + ] + }, + "coordinates": { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location/definitions/lineString" + } + } + }, + { + "title": "MultiLineString", + "properties": { + "type": { + "enum": [ + "MultiLineString" + ] + }, + "coordinates": { + "type": "array", + "items": { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location/definitions/lineString" + } + } + } + }, + { + "title": "Polygon", + "properties": { + "type": { + "enum": [ + "Polygon" + ] + }, + "coordinates": { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location/definitions/polygon" + } + } + }, + { + "title": "MultiPolygon", + "properties": { + "type": { + "enum": [ + "MultiPolygon" + ] + }, + "coordinates": { + "type": "array", + "items": { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location/definitions/polygon" + } + } + } + } + ], + "definitions": { + "position": { + "description": "A single position", + "type": "array", + "minItems": 2, + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false + }, + "positionArray": { + "description": "An array of positions", + "type": "array", + "items": { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location/definitions/position" + } + }, + "lineString": { + "description": "An array of two or more positions", + "allOf": [ + { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location/definitions/positionArray" + }, + { + "minItems": 2 + } + ] + }, + "linearRing": { + "description": "An array of four positions where the first equals the last", + "allOf": [ + { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location/definitions/positionArray" + }, + { + "minItems": 4 + } + ] + }, + "polygon": { + "description": "An array of linear rings", + "type": "array", + "items": { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/location/definitions/linearRing" + } + } + } + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "minLength": 1 + }, + "endpoint": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": { + "type": [ + "string", + "number", + "boolean", + "array", + "object" + ] + } + }, + { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uri" + }, + "type": { + "type": "string", + "const": "ContextSourceRegistration" + }, + "createdAt": { + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/createdAt" + }, + "modifiedAt": { + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/modifiedAt" + } + }, + "required": [ + "id", + "type", + "endpoint", + "information" + ] + } + ] + } + } + } + }, + "responses": { + "201": { + "description": "Created. Contains the resource URI of the created Registration" + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "409": { + "description": "Already exists", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/csourceRegistrations/{registrationId}": { + "get": { + "description": "Retrieves a specific context source registration from an NGSI-LD system", + "operationId": "retrieveCsource", + "tags": [ + "Context Sources" + ], + "parameters": [ + { + "name": "registrationId", + "description": "Registration Id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uri" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1csourceRegistrations~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + }, + "examples": { + "simple": { + "externalValue": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/examples/" + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + }, + "delete": { + "description": "Removes an specific context source registration within an NGSI-LD system", + "operationId": "removeCsource", + "tags": [ + "Context Sources" + ], + "parameters": [ + { + "$ref": "#/paths/~1csourceRegistrations~1%7BregistrationId%7D/get/parameters/0" + } + ], + "responses": { + "204": { + "description": "No Content. The Registration was removed successfully" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/csourceSubscriptions/": { + "get": { + "description": "Retrieves the context source discovery subscriptions available in an NGSI-LD system", + "operationId": "retrieveCSourceSubscriptions", + "tags": [ + "Context Sources" + ], + "parameters": [ + { + "name": "limit", + "description": "Pagination limit", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1subscriptions~1/get/responses/200/content/application~1json%3Bapplication~1ld%2Bjson/schema" + }, + "examples": { + "simple": { + "externalValue": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/examples/SubscriptionList-example.json" + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + }, + "post": { + "description": "Creates a context source discovery Subscription within an NGSI-LD system", + "operationId": "createCSourceSubscription", + "tags": [ + "Context Sources" + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1subscriptions~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "responses": { + "201": { + "description": "Created. Contains the resource URI of the created Subscription" + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "409": { + "description": "Already exists", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/csourceSubscriptions/{subscriptionId}": { + "get": { + "description": "Retrieves a specific Subscription from an NGSI-LD system", + "operationId": "retrieveSubscription", + "tags": [ + "Context Sources" + ], + "parameters": [ + { + "name": "subscriptionId", + "description": "Subscription Id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uri" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1subscriptions~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + }, + "examples": { + "simple": { + "externalValue": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/examples/Subscription-example_C.4.json" + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + }, + "patch": { + "description": "Updates a specific context source discovery Subscription within an NGSI-LD system", + "operationId": "updateCSourceSubscription", + "tags": [ + "Context Sources" + ], + "parameters": [ + { + "$ref": "#/paths/~1csourceSubscriptions~1%7BsubscriptionId%7D/get/parameters/0" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1subscriptions~1%7BsubscriptionId%7D/patch/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "responses": { + "204": { + "description": "No Content. The Subscription was updated successfully" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + }, + "delete": { + "description": "Removes a specific Context Source Subscription from an NGSI-LD system", + "operationId": "removeCSourceSubscription", + "tags": [ + "Context Sources" + ], + "parameters": [ + { + "$ref": "#/paths/~1csourceSubscriptions~1%7BsubscriptionId%7D/get/parameters/0" + } + ], + "responses": { + "204": { + "description": "No Content. The Subscription was removed successfully" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/entityOperations/create": { + "post": { + "description": "Batch Entity creation", + "operationId": "batchEntityCreation", + "tags": [ + "Batch Operations" + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entityOperations~1update/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entityOperations~1upsert/post/responses/200/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/entityOperations/update": { + "post": { + "description": "Batch Entity update", + "operationId": "batchEntityUpdate", + "tags": [ + "Batch Operations" + ], + "parameters": [ + { + "name": "options", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "noOverwrite" + ] + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entityOperations~1upsert/post/responses/200/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/entityOperations/upsert": { + "post": { + "description": "Batch Entity upsert", + "operationId": "batchEntityUpsert", + "tags": [ + "Batch Operations" + ], + "parameters": [ + { + "name": "options", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "replace", + "update" + ] + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entityOperations~1update/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json;application/ld+json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "array", + "items": { + "type": "string", + "format": "uri" + } + }, + "error": { + "type": "array", + "items": { + "entityId": { + "type": "string", + "format": "uri" + }, + "error": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/entityOperations/delete": { + "post": { + "description": "Batch Entity delete", + "operationId": "batchEntityDelete", + "tags": [ + "Batch Operations" + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "type": "array", + "items": { + "type": "string", + "format": "uri" + }, + "minItems": 1 + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entityOperations~1upsert/post/responses/200/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/temporal/entities/": { + "get": { + "description": "Query temporal evolution of Entities from an NGSI-LD system", + "operationId": "queryTemporalEntities", + "tags": [ + "Temporal Evolution" + ], + "parameters": [ + { + "$ref": "#/paths/~1entities~1/get/parameters/0" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/1" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/2" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/3" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/4" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/5" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/6" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/7" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/8" + }, + { + "name": "timerel", + "description": "Time relationship", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "before", + "after", + "between" + ] + } + }, + { + "name": "timeproperty", + "description": "The name of the property that contains the temporal data that will be used to resolve the temporal query", + "in": "query", + "required": false, + "schema": { + "type": "string", + "pattern": "^(\\d|[a-zA-Z]|_)+$", + "minLength": 1, + "description": "NGSI-LD Name" + } + }, + { + "name": "time", + "description": "start time for temporal query", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "endTime", + "description": "end time for temporal query", + "in": "query", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/9" + }, + { + "$ref": "#/paths/~1entities~1/get/parameters/10" + }, + { + "name": "options", + "description": "Options dictionary", + "in": "query", + "required": false, + "schema": { + "type": "string", + "enum": [ + "temporalValues", + "sysAttrs" + ] + } + }, + { + "name": "lastN", + "description": "Only retrieve last N instances", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json;application/ld+json": { + "schema": { + "type": "array", + "items": { + "$schema": "http://json-schema.org/schema#", + "id": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/temporal/EntityTemporal.json", + "title": "NGSI-LD Entity", + "description": "NGSI-LD Temporal Representation of an Entity", + "definitions": { + "EntityTemporalFragment": { + "type": "object", + "properties": { + "@context": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/%40context" + }, + "location": { + "type": "array", + "items": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location" + }, + "minItems": 1 + }, + "observationSpace": { + "type": "array", + "items": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location" + }, + "minItems": 1 + }, + "operationSpace": { + "type": "array", + "items": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location" + }, + "minItems": 1 + } + }, + "additionalProperties": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/additionalProperties/anyOf/0" + }, + "minItems": 1 + }, + { + "type": "array", + "items": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/additionalProperties/anyOf/1" + }, + "minItems": 1 + }, + { + "type": "array", + "items": { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location" + }, + "minItems": 1 + } + ] + }, + "propertyNames": { + "type": "string", + "pattern": "^((\\d|[a-zA-Z]|_)+(#\\d+)?)$|^(@context)$" + } + }, + "EntityTemporal": { + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uri" + }, + "type": { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/10/schema" + }, + "createdAt": { + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/createdAt" + }, + "modifiedAt": { + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/allOf/0/properties/modifiedAt" + } + }, + "required": [ + "id", + "type" + ] + }, + { + "$ref": "#/paths/~1temporal~1entities~1/get/responses/200/content/application~1json%3Bapplication~1ld%2Bjson/schema/items/definitions/EntityTemporalFragment" + } + ] + } + }, + "allOf": [ + { + "$ref": "#/paths/~1temporal~1entities~1/get/responses/200/content/application~1json%3Bapplication~1ld%2Bjson/schema/items/definitions/EntityTemporal" + } + ] + } + }, + "examples": { + "simple": { + "externalValue": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/examples/EntityTemporalList-example.json" + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + }, + "post": { + "description": "Create or update temporal representation of an Entity within an NGSI-LD system", + "operationId": "createUpdateEntityTemporal", + "tags": [ + "Temporal Evolution" + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1temporal~1entities~1/get/responses/200/content/application~1json%3Bapplication~1ld%2Bjson/schema/items/definitions/EntityTemporal" + }, + "examples": { + "simple": { + "externalValue": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/examples/EntityTemporal-example_C5.5.3.json" + } + } + } + } + }, + "responses": { + "201": { + "description": "Created. Contains the resource URI of the created Entity" + }, + "204": { + "description": "Updated. No Content" + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "409": { + "description": "Already exists", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/temporal/entities/{entityId}": { + "get": { + "description": "Retrieve the temporal representation of an specific Entity from an NGSI-LD system. It's possible to specify the Entity attributes to be retrieved by using query parameters", + "operationId": "retrieveEntityTemporalById", + "parameters": [ + { + "$ref": "#/paths/~1entities~1%7BentityId%7D/get/parameters/0" + }, + { + "$ref": "#/paths/~1entities~1%7BentityId%7D/get/parameters/1" + }, + { + "$ref": "#/paths/~1entities~1%7BentityId%7D/get/parameters/2" + }, + { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/15" + }, + { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/9" + }, + { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/10" + }, + { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/11" + }, + { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/12" + }, + { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/16" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1temporal~1entities~1/get/responses/200/content/application~1json%3Bapplication~1ld%2Bjson/schema/items/definitions/EntityTemporal" + }, + "examples": { + "simple": { + "externalValue": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/examples/EntityTemporal-example_C5.5.3.json" + } + } + } + } + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + }, + "delete": { + "description": "Removes the temporal representation of an Entity from an NGSI-LD system", + "operationId": "removeEntityTemporalById", + "parameters": [ + { + "$ref": "#/paths/~1entities~1%7BentityId%7D/get/parameters/0" + }, + { + "$ref": "#/paths/~1entities~1%7BentityId%7D/get/parameters/2" + } + ], + "responses": { + "204": { + "description": "No Content. The entity was removed successfully" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/temporal/entities/{entityId}/attrs/": { + "post": { + "description": "Add new attributes to an existing Temporal Entity within an NGSI-LD system", + "operationId": "addTemporalEntityAttrs", + "tags": [ + "Temporal Evolution" + ], + "parameters": [ + { + "name": "entityId", + "description": "Entity Id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uri" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1temporal~1entities~1/get/responses/200/content/application~1json%3Bapplication~1ld%2Bjson/schema/items/definitions/EntityTemporalFragment" + } + } + } + }, + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/temporal/entities/{entityId}/attrs/{attrId}": { + "delete": { + "description": "Attribute from Temporal Representation of Entity deletion", + "operationId": "removeEntityTemporalAttr", + "tags": [ + "Temporal Evolution" + ], + "parameters": [ + { + "$ref": "#/paths/~1temporal~1entities~1%7BentityId%7D~1attrs~1/post/parameters/0" + }, + { + "name": "attrId", + "description": "Attribute Id", + "in": "path", + "required": true, + "schema": { + "$ref": "#/paths/~1temporal~1entities~1/get/parameters/10/schema" + } + } + ], + "responses": { + "204": { + "description": "No Content." + }, + "400": { + "description": "Bad Request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + }, + "/temporal/entities/{entityId}/attrs/{attrId}/{instanceId}": { + "patch": { + "description": "Allows modifying a specific Attribute (Property or Relationship) instance, identified by its instanceId, of a Temporal Representation of an Entity.", + "operationId": "modifyEntityTemporalAttrInstance", + "tags": [ + "Temporal Evolution" + ], + "parameters": [ + { + "$ref": "#/paths/~1temporal~1entities~1%7BentityId%7D~1attrs~1/post/parameters/0" + }, + { + "$ref": "#/paths/~1temporal~1entities~1%7BentityId%7D~1attrs~1%7BattrId%7D/delete/parameters/1" + }, + { + "name": "instanceId", + "description": "Instance Id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uri" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1temporal~1entities~1/get/responses/200/content/application~1json%3Bapplication~1ld%2Bjson/schema/items/definitions/EntityTemporalFragment" + } + } + } + }, + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + }, + "delete": { + "description": "Attribute Instance deletion by instance id.", + "operationId": "removeEntityTemporalAttrInstance", + "tags": [ + "Temporal Evolution" + ], + "parameters": [ + { + "$ref": "#/paths/~1temporal~1entities~1%7BentityId%7D~1attrs~1/post/parameters/0" + }, + { + "$ref": "#/paths/~1temporal~1entities~1%7BentityId%7D~1attrs~1%7BattrId%7D/delete/parameters/1" + }, + { + "$ref": "#/paths/~1temporal~1entities~1%7BentityId%7D~1attrs~1%7BattrId%7D~1%7BinstanceId%7D/patch/parameters/2" + } + ], + "responses": { + "204": { + "description": "No Content." + }, + "400": { + "description": "Bad Request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "#/paths/~1entities~1/get/responses/400/content/application~1json%3Bapplication~1ld%2Bjson/schema" + } + } + } + } + } + } + } + } +} + -- GitLab