Subscription.json 4.38 KB
Newer Older
canterafonsj's avatar
canterafonsj committed
{
  "$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": {
canterafonsj's avatar
canterafonsj committed
    "NotificationParams": {
canterafonsj's avatar
canterafonsj committed
      "type": "object",
      "properties": {
canterafonsj's avatar
canterafonsj committed
        "type": "object",
        "required": [
          "endpoint"
        ],
        "properties": {
          "attributes": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string"
canterafonsj's avatar
canterafonsj committed
            }
canterafonsj's avatar
canterafonsj committed
          },
          "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"
          }
        }
      },
      "EntityInfo": {},
      "GeoQuery": {
        "type": "object",
        "required": [
          "geometry",
          "coordinates",
          "georel"
        ],
        "properties": {
          "georel": {
            "oneOf": [
              {
                "type": "string",
                "enumeration": [
                  "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"
            ]
          }
canterafonsj's avatar
canterafonsj committed
        }
      }
    },
canterafonsj's avatar
canterafonsj committed
    "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"
      },
      "name": {
        "type": "string",
        "minLength": 1
      },
      "description": {
        "type": "string",
        "minLength": 1
      },
      "entities": {
        "$ref": "#/definitions/EntityInfo"
      },
      "watchedAttributes": {
        "type": "array",
        "minItems": 1,
        "items": {
          "type": "string"
        },
        "uniqueItems": true
      },
      "timeInterval": {
        "type": "number",
        "minimum": 0
      },
      "geoQ": {
        "$ref": "#/definitions/GeoQuery"
      },
      "notification": {
        "$ref": "#/definitions/NotificationParams"
      },
      "expires": {
        "type": "string",
        "format": "date-time"
      },
      "status": {
        "type": "string",
        "enum": [
          "active",
          "paused",
          "expired"
        ]
      },
      "isActive": {
        "type": "boolean"
      },
      "throttling": {
        "type": "number",
        "minimum": 1
      },
      "q": {
canterafonsj's avatar
canterafonsj committed
        "type": "string"
      },
canterafonsj's avatar
canterafonsj committed
      "csf": {
        "type": "string"
      }
canterafonsj's avatar
canterafonsj committed
    },
canterafonsj's avatar
canterafonsj committed
    "required": [
      "id",
      "type"
    ]
  }
canterafonsj's avatar
canterafonsj committed
}