{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "endpoints/streams", "title": "Streams", "description": "Endpoints relating to Streams", "stability": "stable", "type": "object", "definitions": { "id": { "$ref": "../definitions.json#/definitions/id" }, "created_on": { "$ref": "../definitions.json#/definitions/created_on" }, "modified_on": { "$ref": "../definitions.json#/definitions/modified_on" }, "incoming_port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "domain_name_port": { "type": "string", "pattern": "^(?:[^.*:]+\\.?)+[^.]:(?:(?:6553[0-5])|(?:655[0-2][0-9])|(?:65[0-4][0-9]{2})|(?:6[0-4][0-9]{3})|(?:[1-5][0-9]{4})|(?:[0-9]{1,4}))$" }, "ipv4_port": { "type": "string", "pattern": "^(?:\\b25[0-5]|\\b2[0-4][0-9]|\\b[01]?[0-9][0-9]?)(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}:(?:(?:6553[0-5])|(?:655[0-2][0-9])|(?:65[0-4][0-9]{2})|(?:6[0-4][0-9]{3})|(?:[1-5][0-9]{4})|(?:[0-9]{1,4}))$" }, "ipv6_port": { "type": "string", "pattern": "^(?:(?:[0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,7}:|(?:[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,5}(?::[0-9a-fA-F]{1,4}){1,2}|(?:[0-9a-fA-F]{1,4}:){1,4}(?::[0-9a-fA-F]{1,4}){1,3}|(?:[0-9a-fA-F]{1,4}:){1,3}(?::[0-9a-fA-F]{1,4}){1,4}|(?:[0-9a-fA-F]{1,4}:){1,2}(?::[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:(?:(?::[0-9a-fA-F]{1,4}){1,6})|:(?:(?::[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(?::[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(?:ffff(:0{1,4}){0,1}:){0,1}(?:(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])|(?:[0-9a-fA-F]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])):(?:(?:6553[0-5])|(?:655[0-2][0-9])|(?:65[0-4][0-9]{2})|(?:6[0-4][0-9]{3})|(?:[1-5][0-9]{4})|(?:[0-9]{1,4}))$" }, "host": { "anyOf": [ { "$ref": "../definitions.json#/definitions/domain_name" }, { "type": "string", "format": "ipv4" }, { "type": "string", "format": "ipv6" } ] }, "host_port": { "anyOf": [ { "$ref": "#/definitions/domain_name_port" }, { "$ref": "#/definitions/ipv4_port" }, { "$ref": "#/definitions/ipv6_port" } ] }, "forwarding_hosts": { "anyOf": [ { "$ref": "#/definitions/host" }, { "type": "array", "minItems": 1, "maxItems": 15, "uniqueItems": true, "items": { "anyOf": [ { "$ref": "#/definitions/host" }, { "$ref": "#/definitions/host_port" } ] } } ] }, "forwarding_port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "tcp_forwarding": { "type": "boolean" }, "udp_forwarding": { "type": "boolean" }, "enabled": { "$ref": "../definitions.json#/definitions/enabled" }, "meta": { "type": "object" } }, "properties": { "id": { "$ref": "#/definitions/id" }, "created_on": { "$ref": "#/definitions/created_on" }, "modified_on": { "$ref": "#/definitions/modified_on" }, "incoming_port": { "$ref": "#/definitions/incoming_port" }, "forwarding_hosts": { "$ref": "#/definitions/forwarding_hosts" }, "forwarding_port": { "$ref": "#/definitions/forwarding_port" }, "tcp_forwarding": { "$ref": "#/definitions/tcp_forwarding" }, "udp_forwarding": { "$ref": "#/definitions/udp_forwarding" }, "enabled": { "$ref": "#/definitions/enabled" }, "meta": { "$ref": "#/definitions/meta" } }, "links": [ { "title": "List", "description": "Returns a list of Steams", "href": "/nginx/streams", "access": "private", "method": "GET", "rel": "self", "http_header": { "$ref": "../examples.json#/definitions/auth_header" }, "targetSchema": { "type": "array", "items": { "$ref": "#/properties" } } }, { "title": "Create", "description": "Creates a new Stream", "href": "/nginx/streams", "access": "private", "method": "POST", "rel": "create", "http_header": { "$ref": "../examples.json#/definitions/auth_header" }, "schema": { "type": "object", "additionalProperties": false, "required": [ "incoming_port", "forwarding_hosts", "forwarding_port" ], "properties": { "incoming_port": { "$ref": "#/definitions/incoming_port" }, "forwarding_hosts": { "$ref": "#/definitions/forwarding_hosts" }, "forwarding_port": { "$ref": "#/definitions/forwarding_port" }, "tcp_forwarding": { "$ref": "#/definitions/tcp_forwarding" }, "udp_forwarding": { "$ref": "#/definitions/udp_forwarding" }, "meta": { "$ref": "#/definitions/meta" } } }, "targetSchema": { "properties": { "$ref": "#/properties" } } }, { "title": "Update", "description": "Updates a existing Stream", "href": "/nginx/streams/{definitions.identity.example}", "access": "private", "method": "PUT", "rel": "update", "http_header": { "$ref": "../examples.json#/definitions/auth_header" }, "schema": { "type": "object", "additionalProperties": false, "properties": { "incoming_port": { "$ref": "#/definitions/incoming_port" }, "forwarding_hosts": { "$ref": "#/definitions/forwarding_hosts" }, "forwarding_port": { "$ref": "#/definitions/forwarding_port" }, "tcp_forwarding": { "$ref": "#/definitions/tcp_forwarding" }, "udp_forwarding": { "$ref": "#/definitions/udp_forwarding" }, "meta": { "$ref": "#/definitions/meta" } } }, "targetSchema": { "properties": { "$ref": "#/properties" } } }, { "title": "Delete", "description": "Deletes a existing Stream", "href": "/nginx/streams/{definitions.identity.example}", "access": "private", "method": "DELETE", "rel": "delete", "http_header": { "$ref": "../examples.json#/definitions/auth_header" }, "targetSchema": { "type": "boolean" } }, { "title": "Enable", "description": "Enables a existing Stream", "href": "/nginx/streams/{definitions.identity.example}/enable", "access": "private", "method": "POST", "rel": "update", "http_header": { "$ref": "../examples.json#/definitions/auth_header" }, "targetSchema": { "type": "boolean" } }, { "title": "Disable", "description": "Disables a existing Stream", "href": "/nginx/streams/{definitions.identity.example}/disable", "access": "private", "method": "POST", "rel": "update", "http_header": { "$ref": "../examples.json#/definitions/auth_header" }, "targetSchema": { "type": "boolean" } } ] }