From 88f28fba0c0d47f8d616af0ee3c12a2471bb2dd7 Mon Sep 17 00:00:00 2001 From: Jose Manuel Cantera Date: Mon, 19 Nov 2018 18:22:30 +0100 Subject: [PATCH] Restoring Subscriptions --- schema/subscriptions/Subscription.json | 319 +++++++++++++------------ 1 file changed, 171 insertions(+), 148 deletions(-) diff --git a/schema/subscriptions/Subscription.json b/schema/subscriptions/Subscription.json index 81d070f..a504034 100644 --- a/schema/subscriptions/Subscription.json +++ b/schema/subscriptions/Subscription.json @@ -1,150 +1,173 @@ { - "$schema": "http://json-schema.org/schema#", - "id": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/subscriptions/Subscription.json", - "title": "NGSI-LD Common Definitions", - "description": "NGSI-LD Common", - "definitions": { - "Name": { - "type": "string", - "pattern": "^(\\d|[a-zA-Z]|_)+$", - "minLength": 1, - "description": "NGSI-LD Name" - }, - "observedAt": { - "type": "string", - "format": "date-time" - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "modifiedAt": { - "type": "string", - "format": "date-time" - }, - "LdContext": { - "anyOf": [{ - "type": "object" - }, - { - "type": "string", - "format": "uri" - }, - { - "type": "array", - "minItems": 1, - "items": { - "anyOf": [{ - "type": "string", - "format": "uri" - }, - { - "type": "object" - } - ] - } - } - ] - }, - "Endpoint": { - "type": "object", - "required": [ - "uri" - ], - "properties": { - "uri": { - "type": "string", - "format": "uri" - }, - "accept": { - "type": "string", - "enum": [ - "application/json", - "application/ld+json" - ] - } - } - }, - "EntityInfo": { - "type": "object", - "properties": { - "id": { - "type": "string", - "format": "uri" - }, - "type": { - "$ref": "#/definitions/Name" - }, - "idPattern": { - "type": "string", - "format": "regex" - } - }, - "required": [ - "type" - ] - }, - "ProblemDetails": { - "type": "object", - "properties": { - "type": { - "type": "string", - "format": "uri" - }, - "title": { - "type": "string" - }, - "detail": { - "type": "string" - } - }, - "required": [ - "type" - ] - }, - "georel": { - "anyOf": [{ - "type": "string", - "enum": [ - "equals", - "disjoint", - "intersects", - "within", - "contains", - "overlaps" - ] - }, - { - "type": "string", - "pattern": "^near;((maxDistance==\\d+)|(minDistance==\\d+))$" - } - ] - }, - "coordinates": { - "oneOf": [{ - "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/geometry-schema.json#/definitions/position" - }, - { - "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/geometry-schema.json#/definitions/positionArray" - }, - { - "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/geometry-schema.json#/definitions/lineString" - }, - { - "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/geometry-schema.json#/definitions/polygon" - } - ] - }, - "geometry": { - "type": "string", - "enumeration": [ - "Point", - "MultiPoint", - "LineString", - "MultiLineString", - "Polygon", - "MultiPolygon" - ] - } - } + "$schema": "http://json-schema.org/schema#", + "id": "https://uri.etsi.org/ngsi-ld/schema/Subscription.json", + "title": "NGSI-LD Subscription", + "description": "NGSI-LD Subscription", + "definitions": { + "NotificationParams": { + "type": "object", + "properties": { + "attributes": { + "type": "array", + "minItems": 1, + "items": { + "type": "string", + "minLength": 1 + }, + "uniqueItems": true + }, + "format": { + "type": "string" + }, + "endpoint": { + "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/Endpoint" + }, + "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" + ] + }, + "GeoQuery": { + "type": "object", + "required": [ + "geometry", + "coordinates", + "georel" + ], + "properties": { + "georel": { + "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/georel" + }, + "coordinates": { + "$ref": "https://forge.etsi.org/gitlab/NGSI-LD/NGSI-LD/raw/master/schema/common.json#/definitions/coordinates" + }, + "geometry": { + "$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" + ] + }, + { + "anyOf": [ + { + "required": [ + "entities" + ] + }, + { + "required": [ + "watchedAttributes" + ] + } + ] + } + ] } -- GitLab