Subscription.json 3.9 KB
Newer Older
canterafonsj's avatar
canterafonsj committed
{
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": {
    "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"
          ]
        }
      ]
    }
  ]
canterafonsj's avatar
canterafonsj committed
}