summaryrefslogtreecommitdiffstats
path: root/src/orchestrator/api/json-schemas
diff options
context:
space:
mode:
Diffstat (limited to 'src/orchestrator/api/json-schemas')
-rw-r--r--src/orchestrator/api/json-schemas/cluster-kv.json54
-rw-r--r--src/orchestrator/api/json-schemas/cluster-label.json13
-rw-r--r--src/orchestrator/api/json-schemas/composite-app.json45
-rw-r--r--src/orchestrator/api/json-schemas/composite-profile.json46
-rw-r--r--src/orchestrator/api/json-schemas/controller.json73
-rw-r--r--src/orchestrator/api/json-schemas/deployment-group-intent.json79
-rw-r--r--src/orchestrator/api/json-schemas/deployment-intent.json55
-rw-r--r--src/orchestrator/api/json-schemas/generic-placement-intent-app.json117
-rw-r--r--src/orchestrator/api/json-schemas/generic-placement-intent.json51
-rw-r--r--src/orchestrator/api/json-schemas/metadata.json37
-rw-r--r--src/orchestrator/api/json-schemas/network-load-interface.json77
-rw-r--r--src/orchestrator/api/json-schemas/network-workload.json67
-rw-r--r--src/orchestrator/api/json-schemas/provider-network.json122
-rw-r--r--src/orchestrator/api/json-schemas/virtual-network.json75
14 files changed, 911 insertions, 0 deletions
diff --git a/src/orchestrator/api/json-schemas/cluster-kv.json b/src/orchestrator/api/json-schemas/cluster-kv.json
new file mode 100644
index 00000000..c7013bab
--- /dev/null
+++ b/src/orchestrator/api/json-schemas/cluster-kv.json
@@ -0,0 +1,54 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "required": [
+ "kv"
+ ],
+ "type": "object",
+ "properties": {
+ "kv": {
+ "items": {
+ "additionalProperties": {
+ "type": "string",
+ "maxLength": 128
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ }
+ },
+ "metadata": {
+ "required": ["name"],
+ "properties": {
+ "userData2": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some more data",
+ "maxLength": 512
+ },
+ "userData1": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some data",
+ "maxLength": 512
+ },
+ "name": {
+ "description": "Name of the resource",
+ "type": "string",
+ "example": "ResName",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "description": {
+ "description": "Description for the resource",
+ "type": "string",
+ "example": "Resource description",
+ "maxLength": 1024
+ }
+ }
+ }
+ }
+ } \ No newline at end of file
diff --git a/src/orchestrator/api/json-schemas/cluster-label.json b/src/orchestrator/api/json-schemas/cluster-label.json
new file mode 100644
index 00000000..22267b3d
--- /dev/null
+++ b/src/orchestrator/api/json-schemas/cluster-label.json
@@ -0,0 +1,13 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "label-name": {
+ "description": "Logical Cloud to use for this intent",
+ "type": "string",
+ "example": "cluster-label-1",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ }
+ }
+ } \ No newline at end of file
diff --git a/src/orchestrator/api/json-schemas/composite-app.json b/src/orchestrator/api/json-schemas/composite-app.json
new file mode 100644
index 00000000..3f976831
--- /dev/null
+++ b/src/orchestrator/api/json-schemas/composite-app.json
@@ -0,0 +1,45 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "version": {
+ "description": "Composite Application Version",
+ "type": "string",
+ "example": "v1",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ }
+ },
+ "metadata": {
+ "required": ["name"],
+ "properties": {
+ "userData2": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some more data",
+ "maxLength": 512
+ },
+ "userData1": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some data",
+ "maxLength": 512
+ },
+ "name": {
+ "description": "Name of the resource",
+ "type": "string",
+ "example": "ResName",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "description": {
+ "description": "Description for the resource",
+ "type": "string",
+ "example": "Resource description",
+ "maxLength": 1024
+ }
+ }
+ }
+ }
+ } \ No newline at end of file
diff --git a/src/orchestrator/api/json-schemas/composite-profile.json b/src/orchestrator/api/json-schemas/composite-profile.json
new file mode 100644
index 00000000..e404a64c
--- /dev/null
+++ b/src/orchestrator/api/json-schemas/composite-profile.json
@@ -0,0 +1,46 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "app-name": {
+ "description": "Application Name",
+ "required": [
+ "app-name"
+ ],
+ "type": "string",
+ "example": "Application1",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "metadata": {
+ "required": ["name"],
+ "properties": {
+ "userData2": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some more data",
+ "maxLength": 512
+ },
+ "userData1": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some data",
+ "maxLength": 512
+ },
+ "name": {
+ "description": "Name of the resource",
+ "type": "string",
+ "example": "ResName",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "description": {
+ "description": "Description for the resource",
+ "type": "string",
+ "example": "Resource description",
+ "maxLength": 1024
+ }
+ }
+ }
+ }
+ } \ No newline at end of file
diff --git a/src/orchestrator/api/json-schemas/controller.json b/src/orchestrator/api/json-schemas/controller.json
new file mode 100644
index 00000000..3263ff21
--- /dev/null
+++ b/src/orchestrator/api/json-schemas/controller.json
@@ -0,0 +1,73 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "required": [
+ "host",
+ "port",
+ "type",
+ "priority"
+ ],
+ "type": "object",
+ "properties": {
+ "priority": {
+ "description": "Priority of controller to be called",
+ "type": "integer",
+ "example": 4,
+ "minimum": 0,
+ "maximum": 100
+ },
+ "host": {
+ "description": "Controller reachibility information",
+ "type": "string",
+ "example": "10.7.100.4",
+ "maxLength": 128
+ },
+ "type": {
+ "description": "Type of controller (placement, action are 2 types supported)",
+ "type": "string",
+ "example": "placement",
+ "maxLength": 48
+ },
+ "port": {
+ "description": "Port for controller",
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 50000,
+ "example": 9029
+ }
+ }
+ },
+ "metadata": {
+ "required": ["name"],
+ "properties": {
+ "userData2": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some more data",
+ "maxLength": 512
+ },
+ "userData1": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some data",
+ "maxLength": 512
+ },
+ "name": {
+ "description": "Name of the resource",
+ "type": "string",
+ "example": "ResName",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "description": {
+ "description": "Description for the resource",
+ "type": "string",
+ "example": "Resource description",
+ "maxLength": 1024
+ }
+ }
+ }
+ }
+ } \ No newline at end of file
diff --git a/src/orchestrator/api/json-schemas/deployment-group-intent.json b/src/orchestrator/api/json-schemas/deployment-group-intent.json
new file mode 100644
index 00000000..2740747b
--- /dev/null
+++ b/src/orchestrator/api/json-schemas/deployment-group-intent.json
@@ -0,0 +1,79 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "required": [
+ "profile",
+ "version"
+ ],
+ "type": "object",
+ "description": "DepSpecData has profile, version, OverrideValuesObj",
+ "properties": {
+ "override-values": {
+ "items": {
+ "required": [
+ "app-name",
+ "values"
+ ],
+ "type": "object",
+ "description": "OverrideValues has appName and ValuesObj",
+ "properties": {
+ "app-name": {
+ "type": "string"
+ },
+ "values": {
+ "additionalProperties": {
+ "type": "string",
+ "maxLength": 128
+ },
+ "type": "object"
+ }
+ }
+ },
+ "type": "array"
+ },
+ "profile": {
+ "type": "string",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "version": {
+ "type": "string",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ }
+ }
+ },
+ "metadata": {
+ "required": ["name"],
+ "properties": {
+ "userData2": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some more data",
+ "maxLength": 512
+ },
+ "userData1": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some data",
+ "maxLength": 512
+ },
+ "name": {
+ "description": "Name of the resource",
+ "type": "string",
+ "example": "ResName",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "description": {
+ "description": "Description for the resource",
+ "type": "string",
+ "example": "Resource description",
+ "maxLength": 1024
+ }
+ }
+ }
+ }
+ } \ No newline at end of file
diff --git a/src/orchestrator/api/json-schemas/deployment-intent.json b/src/orchestrator/api/json-schemas/deployment-intent.json
new file mode 100644
index 00000000..6bdc0b43
--- /dev/null
+++ b/src/orchestrator/api/json-schemas/deployment-intent.json
@@ -0,0 +1,55 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "required": [
+ "intent"
+ ],
+ "type": "object",
+ "description": "IntentSpecData has Intent",
+ "properties": {
+ "intent": {
+ "additionalProperties": {
+ "type": "string",
+ "maxLength": 128
+ },
+ "type": "object",
+ "example": {
+ "generic-placement-intent": "gpi-name"
+ }
+ }
+ }
+ },
+ "metadata": {
+ "required": ["name"],
+ "properties": {
+ "userData2": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some more data",
+ "maxLength": 512
+ },
+ "userData1": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some data",
+ "maxLength": 512
+ },
+ "name": {
+ "description": "Name of the resource",
+ "type": "string",
+ "example": "ResName",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "description": {
+ "description": "Description for the resource",
+ "type": "string",
+ "example": "Resource description",
+ "maxLength": 1024
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/src/orchestrator/api/json-schemas/generic-placement-intent-app.json b/src/orchestrator/api/json-schemas/generic-placement-intent-app.json
new file mode 100644
index 00000000..0b6447c2
--- /dev/null
+++ b/src/orchestrator/api/json-schemas/generic-placement-intent-app.json
@@ -0,0 +1,117 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "properties": {
+ "app-name": {
+ "type": "string",
+ "example": "appl",
+ "maxLength": 128
+ },
+ "anyOf": {
+ "items": {
+ "type": "object",
+ "description": "AnyOf consists of Array of ProviderName & ClusterLabelNames",
+ "properties": {
+ "cluster-label-name": {
+ "type": "string",
+ "example": "east",
+ "maxLength": 128
+ },
+ "provider-name": {
+ "type": "string",
+ "example": "provider1",
+ "maxLength": 128
+ },
+ "cluster-name": {
+ "type": "string",
+ "example": "cluster1",
+ "maxLength": 128
+ }
+ }
+ },
+ "type": "array"
+ },
+ "allOf": {
+ "items": {
+ "type": "object",
+ "description": "AllOf ProviderName, ClusterName, ClusterLabelName and AnyOfArray",
+ "properties": {
+ "provider-name": {
+ "type": "string",
+ "example": "provider2",
+ "maxLength": 128
+ },
+ "cluster-label-name": {
+ "type": "string",
+ "example": "west",
+ "maxLength": 128
+ },
+ "anyOf": {
+ "items": {
+ "type": "object",
+ "description": "AnyOf consists of Array of ProviderName & ClusterLabelNames",
+ "properties": {
+ "cluster-label-name": {
+ "type": "string",
+ "example": "east",
+ "maxLength": 128
+ },
+ "provider-name": {
+ "type": "string",
+ "example": "provider1",
+ "maxLength": 128
+ },
+ "cluster-name": {
+ "type": "string",
+ "example": "cluster1",
+ "maxLength": 128
+ }
+ }
+ },
+ "type": "array"
+ },
+ "cluster-name": {
+ "type": "string",
+ "example": "cluster2",
+ "maxLength": 128
+ }
+ }
+ },
+ "type": "array"
+ }
+ }
+ },
+ "metadata": {
+ "required": ["name"],
+ "properties": {
+ "userData2": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some more data",
+ "maxLength": 512
+ },
+ "userData1": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some data",
+ "maxLength": 512
+ },
+ "name": {
+ "description": "Name of the resource",
+ "type": "string",
+ "example": "ResName",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "description": {
+ "description": "Description for the resource",
+ "type": "string",
+ "example": "Resource description",
+ "maxLength": 1024
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/src/orchestrator/api/json-schemas/generic-placement-intent.json b/src/orchestrator/api/json-schemas/generic-placement-intent.json
new file mode 100644
index 00000000..44df9087
--- /dev/null
+++ b/src/orchestrator/api/json-schemas/generic-placement-intent.json
@@ -0,0 +1,51 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "type": "object",
+ "description": "Spec",
+ "properties": {
+ "logical-cloud": {
+ "description": "Logical Cloud to use for this intent",
+ "required": [
+ "logical-cloud"
+ ],
+ "type": "string",
+ "example": "cloud1",
+ "maxLength": 128
+ }
+ }
+ },
+ "metadata": {
+ "required": ["name"],
+ "properties": {
+ "userData2": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some more data",
+ "maxLength": 512
+ },
+ "userData1": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some data",
+ "maxLength": 512
+ },
+ "name": {
+ "description": "Name of the resource",
+ "type": "string",
+ "example": "ResName",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "description": {
+ "description": "Description for the resource",
+ "type": "string",
+ "example": "Resource description",
+ "maxLength": 1024
+ }
+ }
+ }
+ }
+ } \ No newline at end of file
diff --git a/src/orchestrator/api/json-schemas/metadata.json b/src/orchestrator/api/json-schemas/metadata.json
new file mode 100644
index 00000000..960545ee
--- /dev/null
+++ b/src/orchestrator/api/json-schemas/metadata.json
@@ -0,0 +1,37 @@
+
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "required": ["name"],
+ "properties": {
+ "userData2": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some more data",
+ "maxLength": 512
+ },
+ "userData1": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some data",
+ "maxLength": 512
+ },
+ "name": {
+ "description": "Name of the resource",
+ "type": "string",
+ "example": "ResName",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "description": {
+ "description": "Description for the resource",
+ "type": "string",
+ "example": "Resource description",
+ "maxLength": 1024
+ }
+ }
+ }
+ }
+ } \ No newline at end of file
diff --git a/src/orchestrator/api/json-schemas/network-load-interface.json b/src/orchestrator/api/json-schemas/network-load-interface.json
new file mode 100644
index 00000000..dd5b40d1
--- /dev/null
+++ b/src/orchestrator/api/json-schemas/network-load-interface.json
@@ -0,0 +1,77 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "required": [
+ "interface",
+ "name"
+ ],
+ "type": "object",
+ "properties": {
+ "interface": {
+ "description": "interface Name",
+ "type": "string",
+ "example": "eth0",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "macAddress": {
+ "description": "Name of the network",
+ "type": "string",
+ "example": "x.x.x.x",
+ "maxLength": 128
+ },
+ "ipAddress": {
+ "description": "Name of the network",
+ "type": "string",
+ "example": "0.0.0.0",
+ "maxLength": 128
+ },
+ "name": {
+ "description": "Name of the network",
+ "type": "string",
+ "example": "provider-1",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "defaultGateway": {
+ "description": "Is this interface default gateway",
+ "type": "boolean",
+ "example": false,
+ "maxLength": 128
+ }
+ }
+ },
+ "metadata": {
+ "required": ["name"],
+ "properties": {
+ "userData2": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some more data",
+ "maxLength": 512
+ },
+ "userData1": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some data",
+ "maxLength": 512
+ },
+ "name": {
+ "description": "Name of the resource",
+ "type": "string",
+ "example": "ResName",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "description": {
+ "description": "Description for the resource",
+ "type": "string",
+ "example": "Resource description",
+ "maxLength": 1024
+ }
+ }
+ }
+ }
+ } \ No newline at end of file
diff --git a/src/orchestrator/api/json-schemas/network-workload.json b/src/orchestrator/api/json-schemas/network-workload.json
new file mode 100644
index 00000000..c5dc14cb
--- /dev/null
+++ b/src/orchestrator/api/json-schemas/network-workload.json
@@ -0,0 +1,67 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "type": "object",
+ "description": "Newtwork Workload Intent",
+ "properties": {
+ "spec": {
+ "type": "object",
+ "properties": {
+ "workload-resource": {
+ "description": "Name of the workload",
+ "type": "string",
+ "example": "firewall",
+ "maxLength": 254,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "type": {
+ "description": "Type of the workload",
+ "type": "string",
+ "example": "deployment",
+ "maxLength": 128
+ },
+ "application-name": {
+ "description": "Application Name",
+ "type": "string",
+ "example": "Application1",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ }
+ }
+ },
+ "metadata": {
+ "required": ["name"],
+ "properties": {
+ "userData2": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some more data",
+ "maxLength": 512
+ },
+ "userData1": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some data",
+ "maxLength": 512
+ },
+ "name": {
+ "description": "Name of the resource",
+ "type": "string",
+ "example": "ResName",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "description": {
+ "description": "Description for the resource",
+ "type": "string",
+ "example": "Resource description",
+ "maxLength": 1024
+ }
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/src/orchestrator/api/json-schemas/provider-network.json b/src/orchestrator/api/json-schemas/provider-network.json
new file mode 100644
index 00000000..0aef0304
--- /dev/null
+++ b/src/orchestrator/api/json-schemas/provider-network.json
@@ -0,0 +1,122 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "required": [
+ "cniType",
+ "ipv4Subnets",
+ "providerNetType",
+ "vlan"
+ ],
+ "type": "object",
+ "properties": {
+ "ipv4Subnets": {
+ "items": {
+ "required": [
+ "name",
+ "subnet"
+ ],
+ "type": "object",
+ "properties": {
+ "subnet": {
+ "type": "string",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "excludeIps": {
+ "type": "string",
+ "maxLength": 128
+ },
+ "gateway": {
+ "type": "string",
+ "maxLength": 128
+ },
+ "name": {
+ "type": "string",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ }
+ }
+ },
+ "type": "array"
+ },
+ "cniType": {
+ "type": "string",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "vlan": {
+ "required": [
+ "logicalInterfaceName",
+ "nodeLabelList",
+ "providerInterfaceName",
+ "vlanID",
+ "vlanNodeSelector"
+ ],
+ "type": "object",
+ "properties": {
+ "vlanNodeSelector": {
+ "type": "string",
+ "maxLength": 128
+ },
+ "nodeLabelList": {
+ "items": {
+ "type": "string",
+ "maxLength": 128
+ },
+ "type": "array"
+ },
+ "providerInterfaceName": {
+ "type": "string",
+ "maxLength": 128
+ },
+ "vlanID": {
+ "type": "string",
+ "maxLength": 128
+ },
+ "logicalInterfaceName": {
+ "type": "string",
+ "maxLength": 128
+ }
+ }
+ },
+ "providerNetType": {
+ "type": "string",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ }
+ }
+ },
+ "metadata": {
+ "required": ["name"],
+ "properties": {
+ "userData2": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some more data",
+ "maxLength": 512
+ },
+ "userData1": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some data",
+ "maxLength": 512
+ },
+ "name": {
+ "description": "Name of the resource",
+ "type": "string",
+ "example": "ResName",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "description": {
+ "description": "Description for the resource",
+ "type": "string",
+ "example": "Resource description",
+ "maxLength": 1024
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/src/orchestrator/api/json-schemas/virtual-network.json b/src/orchestrator/api/json-schemas/virtual-network.json
new file mode 100644
index 00000000..f2bc9d3d
--- /dev/null
+++ b/src/orchestrator/api/json-schemas/virtual-network.json
@@ -0,0 +1,75 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "type": "object",
+ "properties": {
+ "spec": {
+ "properties": {
+ "ipv4Subnets": {
+ "items": {
+ "required": [
+ "name",
+ "subnet"
+ ],
+ "type": "object",
+ "properties": {
+ "subnet": {
+ "type": "string",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "excludeIps": {
+ "type": "string",
+ "maxLength": 1024
+ },
+ "gateway": {
+ "type": "string",
+ "maxLength": 128
+ },
+ "name": {
+ "type": "string",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ }
+ }
+ },
+ "type": "array"
+ },
+ "cniType": {
+ "type": "string",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ }
+ }
+ },
+ "metadata": {
+ "required": ["name"],
+ "properties": {
+ "userData2": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some more data",
+ "maxLength": 512
+ },
+ "userData1": {
+ "description": "User relevant data for the resource",
+ "type": "string",
+ "example": "Some data",
+ "maxLength": 512
+ },
+ "name": {
+ "description": "Name of the resource",
+ "type": "string",
+ "example": "ResName",
+ "maxLength": 128,
+ "pattern": "[-_0-9a-zA-Z]+$"
+ },
+ "description": {
+ "description": "Description for the resource",
+ "type": "string",
+ "example": "Resource description",
+ "maxLength": 1024
+ }
+ }
+ }
+ }
+} \ No newline at end of file