From c4f887f106c2a27ebdbfdeb65dd92c124eb14aef Mon Sep 17 00:00:00 2001 From: Jose Manuel Cantera Date: Wed, 21 Nov 2018 11:59:14 +0100 Subject: [PATCH] Subscriptions OAS first stab --- examples/SubscriptionList-example.json | 37 +++ schema/subscriptions/Subscription.json | 203 ++++++------ schema/subscriptions/SubscriptionList.json | 17 + spec/updated/full_api.json | 359 ++++++++++----------- spec/updated/subscriptions-spec.json | 100 ++++++ 5 files changed, 435 insertions(+), 281 deletions(-) create mode 100644 examples/SubscriptionList-example.json create mode 100644 schema/subscriptions/SubscriptionList.json create mode 100644 spec/updated/subscriptions-spec.json diff --git a/examples/SubscriptionList-example.json b/examples/SubscriptionList-example.json new file mode 100644 index 0000000..6f0ba48 --- /dev/null +++ b/examples/SubscriptionList-example.json @@ -0,0 +1,37 @@ +[ + { + "id": "urn:ngsi-ld:Subscription:mySubscription", + "type": "Subscription", + "entities": [ + { + "type": "Vehicle" + } + ], + "watchedAttributes": [ + "speed" + ], + "q": "speed>50", + "geoQ": { + "georel": "near;maxDistance==2000", + "geometry": "Point", + "coordinates": [ + -1, + 100 + ] + }, + "notification": { + "attributes": [ + "speed" + ], + "format": "keyValues", + "endpoint": { + "uri": "http://my.endpoint.org/notify", + "accept": "application/json" + } + }, + "@context": [ + "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/coreContext/ngsi-ld-core-context.json", + "http://example.org/cim/vehicle.jsonld" + ] +} +] diff --git a/schema/subscriptions/Subscription.json b/schema/subscriptions/Subscription.json index a504034..68c57c7 100644 --- a/schema/subscriptions/Subscription.json +++ b/schema/subscriptions/Subscription.json @@ -68,106 +68,125 @@ "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/geometry" } } - } - }, - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uri" - }, - "type": { - "type": "string", - "const": "Subscription" - }, - "@context": { - "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/LdContext" - }, - "entities": { - "type": "array", - "items": { - "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/EntityInfo" - }, - "minItems": 1 - }, - "name": { - "type": "string", - "minLength": 1 - }, - "description": { - "type": "string", - "minLength": 1 - }, - "notification": { - "$ref": "#/definitions/NotificationParams" - }, - "watchedAttributes": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/Name" - }, - "uniqueItems": true - }, - "timeInterval": { - "type": "number", - "minimum": 0 - }, - "expires": { - "type": "string", - "format": "date-time" - }, - "status": { - "type": "string", - "enum": [ - "active", - "paused", - "expired" - ] - }, - "isActive": { - "type": "boolean" - }, - "throttling": { - "type": "number", - "minimum": 1 }, - "q": { - "type": "string" - }, - "geoQ": { - "$ref": "#/definitions/GeoQuery" - }, - "csf": { - "type": "string" - } - }, - "createdAt": { - "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/createdAt" - }, - "modifiedAt": { - "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/modifiedAt" - }, - "allOf": [ - { - "required": [ - "id", - "type" - ] + "SubscriptionFragment": { + "type": "object", + "properties": { + "@context": { + "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/LdContext" + }, + "entities": { + "type": "array", + "items": { + "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/EntityInfo" + }, + "minItems": 1 + }, + "name": { + "type": "string", + "minLength": 1 + }, + "description": { + "type": "string", + "minLength": 1 + }, + "watchedAttributes": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/Name" + }, + "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": { + "$ref": "#/definitions/GeoQuery" + }, + "csf": { + "type": "string" + } + } }, - { - "anyOf": [ + "Subscription": { + "allOf": [ { - "required": [ - "entities" - ] + "$ref": "#/definitions/SubscriptionFragment" }, { - "required": [ - "watchedAttributes" + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uri" + }, + "type": { + "type": "string", + "const": "Subscription" + }, + "notification": { + "$ref": "#/definitions/NotificationParams" + }, + "status": { + "type": "string", + "enum": [ + "active", + "paused", + "expired" + ] + }, + "createdAt": { + "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/createdAt" + }, + "modifiedAt": { + "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/modifiedAt" + } + }, + "allOf": [ + { + "required": [ + "id", + "type" + ] + }, + { + "anyOf": [ + { + "required": [ + "entities" + ] + }, + { + "required": [ + "watchedAttributes" + ] + } + ] + } ] } ] } + }, + "allOf": [ + { + "$ref": "#/definitions/Subscription" + } ] } diff --git a/schema/subscriptions/SubscriptionList.json b/schema/subscriptions/SubscriptionList.json new file mode 100644 index 0000000..9d18ca6 --- /dev/null +++ b/schema/subscriptions/SubscriptionList.json @@ -0,0 +1,17 @@ +{ + "$schema": "http://json-schema.org/schema#", + "id": "https://uri.etsi.org/ngsi-ld/schema/SubscriptionList.json", + "title": "NGSI-LD Subscription List", + "description": "NGSI-LD Subscription List", + "definitions": { + "SubscriptionList": { + "type": "array", + "items": { + "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/Subscription.json#/definitions/Subscription" + } + } + }, + "allOf": [{ + "$ref": "#/definitions/SubscriptionList" + }] +} diff --git a/spec/updated/full_api.json b/spec/updated/full_api.json index e82f755..ea8979c 100644 --- a/spec/updated/full_api.json +++ b/spec/updated/full_api.json @@ -152,16 +152,16 @@ "schema": { "oneOf": [ { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty/properties/value/definitions/position" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/value/definitions/position" }, { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty/properties/value/definitions/positionArray" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/value/definitions/positionArray" }, { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty/properties/value/definitions/lineString" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/value/definitions/lineString" }, { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty/properties/value/definitions/polygon" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/value/definitions/polygon" } ] } @@ -218,7 +218,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/Entity" + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" } }, "examples": { @@ -264,7 +264,31 @@ "content": { "application/json;application/ld+json": { "schema": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/Entity" + "allOf": [ + { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uri" + }, + "type": { + "$ref": "#/paths/~1entities~1%7BentityId%7D/get/parameters/2/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" + } + ] } } } @@ -353,7 +377,7 @@ "content": { "application/json;application/ld+json": { "schema": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/Entity" + "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema" }, "examples": { "simple": { @@ -456,110 +480,35 @@ "content": { "application/json;application/ld+json": { "schema": { - "$schema": "http://json-schema.org/schema#", - "id": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/Entity.json", - "title": "NGSI-LD Entity", - "description": "NGSI-LD Entity", - "definitions": { - "datasetId": { - "type": "string", - "format": "uri" - }, - "instanceId": { - "type": "string", - "format": "uri" - }, - "Property": { - "type": "object", - "properties": { - "type": { - "type": "string", - "const": "Property" + "type": "object", + "properties": { + "@context": { + "anyOf": [ + { + "type": "object" }, - "value": { - "type": [ - "string", - "number", - "boolean", - "array", - "object" - ] - }, - "observedAt": { - "type": "string", - "format": "date-time" - }, - "createdAt": { - "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/createdAt" - }, - "modifiedAt": { - "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/modifiedAt" - }, - "datasetId": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/datasetId" - }, - "instanceId": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/instanceId" - } - }, - "required": [ - "type", - "value" - ], - "additionalProperties": { - "anyOf": [ - { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/Property" - }, - { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/Relationship" - } - ] - } - }, - "Relationship": { - "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/definitions/Property/properties/observedAt" - }, - "createdAt": { - "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/createdAt" - }, - "modifiedAt": { - "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/modifiedAt" - }, - "datasetId": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/datasetId" - }, - "instanceId": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/instanceId" - } - }, - "required": [ - "type", - "object" - ], - "additionalProperties": { - "anyOf": [ - { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/Property" - }, - { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/Relationship" + { + "type": "array", + "minItems": 1, + "items": { + "anyOf": [ + { + "type": "string", + "format": "uri" + }, + { + "type": "object" + } + ] } - ] - } + } + ] }, - "GeoProperty": { + "location": { "type": "object", "properties": { "type": { @@ -586,7 +535,7 @@ ] }, "coordinates": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty/properties/value/definitions/position" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/value/definitions/position" } } }, @@ -599,7 +548,7 @@ ] }, "coordinates": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty/properties/value/definitions/positionArray" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/value/definitions/positionArray" } } }, @@ -612,7 +561,7 @@ ] }, "coordinates": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty/properties/value/definitions/lineString" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/value/definitions/lineString" } } }, @@ -627,7 +576,7 @@ "coordinates": { "type": "array", "items": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty/properties/value/definitions/lineString" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/value/definitions/lineString" } } } @@ -641,7 +590,7 @@ ] }, "coordinates": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty/properties/value/definitions/polygon" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/value/definitions/polygon" } } }, @@ -656,7 +605,7 @@ "coordinates": { "type": "array", "items": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty/properties/value/definitions/polygon" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/value/definitions/polygon" } } } @@ -681,14 +630,14 @@ "description": "An array of positions", "type": "array", "items": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty/properties/value/definitions/position" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/value/definitions/position" } }, "lineString": { "description": "An array of two or more positions", "allOf": [ { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty/properties/value/definitions/positionArray" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/value/definitions/positionArray" }, { "minItems": 2 @@ -699,7 +648,7 @@ "description": "An array of four positions where the first equals the last", "allOf": [ { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty/properties/value/definitions/positionArray" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/value/definitions/positionArray" }, { "minItems": 4 @@ -710,25 +659,28 @@ "description": "An array of linear rings", "type": "array", "items": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty/properties/value/definitions/linearRing" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location/properties/value/definitions/linearRing" } } } }, "observedAt": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/Property/properties/observedAt" + "type": "string", + "format": "date-time" }, "createdAt": { - "$ref": "#/paths/~1entities~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/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/properties/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/definitions/datasetId" + "type": "string", + "format": "uri" }, "instanceId": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/instanceId" + "type": "string", + "format": "uri" } }, "required": [ @@ -738,96 +690,125 @@ "additionalProperties": { "anyOf": [ { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/Property" + "$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/definitions/Relationship" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/additionalProperties/anyOf/1" } ] } }, - "Entity": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uri" - }, - "type": { - "$ref": "#/paths/~1entities~1%7BentityId%7D/get/parameters/2/schema" + "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" + } }, - "@context": { + "required": [ + "type", + "value" + ], + "additionalProperties": { "anyOf": [ { - "type": "object" + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/additionalProperties/anyOf/0" }, { - "type": "string", - "format": "uri" - }, - { - "type": "array", - "minItems": 1, - "items": { - "anyOf": [ - { - "type": "string", - "format": "uri" - }, - { - "type": "object" - } - ] - } + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/additionalProperties/anyOf/1" } ] - }, - "location": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty" - }, - "observationSpace": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty" - }, - "operationSpace": { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty" - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "modifiedAt": { - "type": "string", - "format": "date-time" } }, - "required": [ - "id", - "type" - ], - "additionalProperties": { - "anyOf": [ - { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/Property" + { + "type": "object", + "properties": { + "type": { + "type": "string", + "const": "Relationship" }, - { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/Relationship" + "object": { + "type": "string", + "format": "uri" }, - { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/GeoProperty" + "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" + } + ] + } }, - "propertyNames": { - "type": "string", - "pattern": "^((\\d|[a-zA-Z]|_)+(#\\d+)?)$|^(@context)$" + { + "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/properties/location" } - } + ] }, - "allOf": [ - { - "$ref": "#/paths/~1entities~1%7BentityId%7D~1attrs~1/post/requestBody/content/application~1json%3Bapplication~1ld%2Bjson/schema/definitions/Entity" - } - ] + "propertyNames": { + "type": "string", + "pattern": "^((\\d|[a-zA-Z]|_)+(#\\d+)?)$|^(@context)$" + } } } } diff --git a/spec/updated/subscriptions-spec.json b/spec/updated/subscriptions-spec.json new file mode 100644 index 0000000..17d7e1b --- /dev/null +++ b/spec/updated/subscriptions-spec.json @@ -0,0 +1,100 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "NGSI-LD Subscriptions", + "version": "latest" + }, + "components": { + "parameters": [ + "limit": { + "name": "limit", + "description": "Pagination limit", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ] + }, + "paths": { + "/subscriptions/": { + "get": { + "description": "Retrieves the subscriptions available in an NGSI-LD system", + "operationId": "retrieveSubscriptions", + "parameters": [ + { + "$ref": "#/components/parameters/limit" + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/subscriptions/SubscriptionList.json#/definitions/SubscriptionList" + }, + "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": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/ProblemDetails" + } + } + } + } + } + }, + "post": { + "description": "Creates a new Subscription within an NGSI-LD system", + "operationId": "createSubscription", + "requestBody": { + "required": true, + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/subscriptions/Subscription.json#/definitions/Subscription" + } + } + } + }, + "responses": { + "201": { + "description": "Created. Contains the resource URI of the created Subscription" + }, + "400": { + "description": "Bad request", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/ProblemDetails" + } + } + } + }, + "409": { + "description": "Already exists", + "content": { + "application/json;application/ld+json": { + "schema": { + "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/ProblemDetails" + } + } + } + } + } + } + } + } +} -- GitLab