From 31747243a7f5a67f60644aeae434c2ccfae841c3 Mon Sep 17 00:00:00 2001 From: Ron Ratovsky Date: Tue, 13 May 2014 23:11:24 +0300 Subject: [PATCH] Initial version of Swagger Spec 1.2 JSON Schema --- schemas/v1.2/apiDeclaration.json | 60 ++++++++ schemas/v1.2/authorizationObject.json | 59 ++++++++ schemas/v1.2/dataType.json | 132 ++++++++++++++++++ schemas/v1.2/dataTypeBase.json | 81 +++++++++++ .../fragments/dataType/dollarRef.patch.json | 4 + .../fragments/dataType/typeArray.patch.json | 64 +++++++++ .../fragments/dataType/typeBoolean.patch.json | 13 ++ .../fragments/dataType/typeInteger.patch.json | 20 +++ .../fragments/dataType/typeNumber.patch.json | 20 +++ .../fragments/dataType/typeString.patch.json | 28 ++++ .../dataType/typeVoidFile.patch.json | 8 ++ schemas/v1.2/infoObject.json | 16 +++ schemas/v1.2/modelsObject.json | 36 +++++ schemas/v1.2/oauth2GrantType.json | 57 ++++++++ schemas/v1.2/operationObject.json | 64 +++++++++ schemas/v1.2/parameterObject.json | 37 +++++ schemas/v1.2/resourceListing.json | 16 +++ schemas/v1.2/resourceObject.json | 11 ++ 18 files changed, 726 insertions(+) create mode 100644 schemas/v1.2/apiDeclaration.json create mode 100644 schemas/v1.2/authorizationObject.json create mode 100644 schemas/v1.2/dataType.json create mode 100644 schemas/v1.2/dataTypeBase.json create mode 100644 schemas/v1.2/fragments/dataType/dollarRef.patch.json create mode 100644 schemas/v1.2/fragments/dataType/typeArray.patch.json create mode 100644 schemas/v1.2/fragments/dataType/typeBoolean.patch.json create mode 100644 schemas/v1.2/fragments/dataType/typeInteger.patch.json create mode 100644 schemas/v1.2/fragments/dataType/typeNumber.patch.json create mode 100644 schemas/v1.2/fragments/dataType/typeString.patch.json create mode 100644 schemas/v1.2/fragments/dataType/typeVoidFile.patch.json create mode 100644 schemas/v1.2/infoObject.json create mode 100644 schemas/v1.2/modelsObject.json create mode 100644 schemas/v1.2/oauth2GrantType.json create mode 100644 schemas/v1.2/operationObject.json create mode 100644 schemas/v1.2/parameterObject.json create mode 100644 schemas/v1.2/resourceListing.json create mode 100644 schemas/v1.2/resourceObject.json diff --git a/schemas/v1.2/apiDeclaration.json b/schemas/v1.2/apiDeclaration.json new file mode 100644 index 0000000000..c165054745 --- /dev/null +++ b/schemas/v1.2/apiDeclaration.json @@ -0,0 +1,60 @@ +{ + "id": "http://wordnik.github.io/schemas/v1.2/apiDeclaration.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "required": [ "swaggerVersion", "basePath", "apis" ], + "properties": { + "swaggerVersion": { "enum": [ "1.2" ] }, + "apiVersion": { "type": "string" }, + "basePath": { + "type": "string", + "format": "uri", + "pattern": "^http://" + }, + "resourcePath": { + "type": "string", + "format": "uri", + "pattern": "^/" + }, + "apis": { + "type": "array", + "items": { "$ref": "#/definitions/apiObject" } + }, + "models": { + "type": "object", + "additionalProperties": { + "$ref": "modelsObject.json#" + } + }, + "produces": { "$ref": "#/definitions/mimeTypeArray" }, + "consumes": { "$ref": "#/definitions/mimeTypeArray" }, + "authorizations": { "$ref": "authorizationObject.json#" } + }, + "additionalProperties": false, + "definitions": { + "apiObject": { + "type": "object", + "required": [ "path", "operations" ], + "properties": { + "path": { + "type": "string", + "format": "uri-template", + "pattern": "^/" + }, + "description": { "type": "string" }, + "operations": { + "type": "array", + "items": { "$ref": "operationObject.json#" } + } + }, + "additionalProperties": false + }, + "mimeTypeArray": { + "type": "array", + "items": { + "type": "string", + "format": "mime-type" + } + } + } +} diff --git a/schemas/v1.2/authorizationObject.json b/schemas/v1.2/authorizationObject.json new file mode 100644 index 0000000000..2319b30e2e --- /dev/null +++ b/schemas/v1.2/authorizationObject.json @@ -0,0 +1,59 @@ +{ + "id": "http://wordnik.github.io/schemas/v1.2/authorizationObject.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "$ref": "#/definitions/basicAuth" + }, + { + "$ref": "#/definitions/apiKey" + }, + { + "$ref": "#/definitions/oauth2" + } + ] + }, + "definitions": { + "basicAuth": { + "required": [ "type" ], + "properties": { + "type": { "enum": [ "basicAuth" ] } + }, + "additionalProperties": false + }, + "apiKey": { + "required": [ "type", "passAs", "keyname" ], + "properties": { + "type": { "enum": [ "apiKey" ] }, + "passAs": { "enum": [ "header", "query" ] }, + "keyname": { "type": "string" } + }, + "additionalProperties": false + }, + "oauth2": { + "type": "object", + "required": [ "type", "grantTypes" ], + "properties": { + "type": { "enum": [ "oauth2" ] }, + "scopes": { + "type": "array", + "items": { "$ref": "#/definitions/oauth2Scope" } + }, + "grantTypes": { "$ref": "oauth2GrantType.json#" } + }, + "additionalProperties": false + }, + "oauth2Scope": { + "type": "object", + "required": [ "scope" ], + "properties": { + "scope": { "type": "string" }, + "description": { "type": "string" } + }, + "additionalProperties": false + } + } +} + diff --git a/schemas/v1.2/dataType.json b/schemas/v1.2/dataType.json new file mode 100644 index 0000000000..d2d647d263 --- /dev/null +++ b/schemas/v1.2/dataType.json @@ -0,0 +1,132 @@ +{ + "id": "http://wordnik.github.io/schemas/v1.2/dataType.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Data type as described by the specification (version 1.2)", + "type": "object", + "oneOf": [ + { "$ref": "#/definitions/refType" }, + { "$ref": "#/definitions/voidType" }, + { "$ref": "#/definitions/primitiveType" }, + { "$ref": "#/definitions/modelType" }, + { "$ref": "#/definitions/arrayType" } + ], + "definitions": { + "refType": { + "required": [ "$ref" ], + "properties": { + "$ref": { "type": "string" } + }, + "additionalProperties": false + }, + "voidType": { + "enum": [ { "type": "void" } ] + }, + "modelType": { + "required": [ "type" ], + "properties": { + "type": { + "type": "string", + "not": { + "enum": [ "boolean", "integer", "number", "string", "array" ] + } + } + }, + "additionalProperties": false + }, + "primitiveType": { + "required": [ "type" ], + "properties": { + "type": { + "enum": [ "boolean", "integer", "number", "string" ] + }, + "format": { "type": "string" }, + "defaultValue": { + "not": { "type": [ "array", "object", "null" ] } + }, + "enum": { + "type": "array", + "items": { "type": "string" }, + "minItems": 1, + "uniqueItems": true + }, + "minimum": { "type": "string" }, + "maximum": { "type": "string" } + }, + "additionalProperties": false, + "dependencies": { + "format": { + "oneOf": [ + { + "properties": { + "type": { "enum": [ "integer" ] }, + "format": { "enum": [ "int32", "int64" ] } + } + }, + { + "properties": { + "type": { "enum": [ "number" ] }, + "format": { "enum": [ "float", "double" ] } + } + }, + { + "properties": { + "type": { "enum": [ "string" ] }, + "format": { + "enum": [ "byte", "date", "date-time" ] + } + } + } + ] + }, + "enum": { + "properties": { + "type": { "enum": [ "string" ] } + } + }, + "minimum": { + "properties": { + "type": { "enum": [ "integer", "number" ] } + } + }, + "maximum": { + "properties": { + "type": { "enum": [ "integer", "number" ] } + } + } + } + }, + "arrayType": { + "required": [ "type", "items" ], + "properties": { + "type": { "enum": [ "array" ] }, + "items": { + "type": "array", + "items": { "$ref": "#/definitions/itemsObject" } + }, + "uniqueItems": { "type": "boolean" } + }, + "additionalProperties": false + }, + "itemsObject": { + "oneOf": [ + { + "$ref": "#/definitions/refType" + }, + { + "allOf": [ + { + "$ref": "#/definitions/primitiveType" + }, + { + "properties": { + "type": {}, + "format": {} + }, + "additionalProperties": false + } + ] + } + ] + } + } +} \ No newline at end of file diff --git a/schemas/v1.2/dataTypeBase.json b/schemas/v1.2/dataTypeBase.json new file mode 100644 index 0000000000..4043b08203 --- /dev/null +++ b/schemas/v1.2/dataTypeBase.json @@ -0,0 +1,81 @@ +{ + "id": "http://wordnik.github.io/schemas/v1.2/dataTypeBase.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Data type fields (section 4.3.3)", + "type": "object", + "oneOf": [ + { "required": [ "type" ] }, + { "required": [ "$ref" ] } + ], + "properties": { + "type": { "type": "string" }, + "$ref": { "type": "string" }, + "format": { "type": "string" }, + "defaultValue": { + "not": { "type": [ "array", "object", "null" ] } + }, + "enum": { + "type": "array", + "items": { "type": "string" }, + "uniqueItems": true, + "minItems": 1 + }, + "minimum": { "type": "string" }, + "maximum": { "type": "string" }, + "items": { "$ref": "#/definitions/itemsObject" }, + "uniqueItems": { "type": "boolean" } + }, + "dependencies": { + "format": { + "oneOf": [ + { + "properties": { + "type": { "enum": [ "integer" ] }, + "format": { "enum": [ "int32", "int64" ] } + } + }, + { + "properties": { + "type": { "enum": [ "number" ] }, + "format": { "enum": [ "float", "double" ] } + } + }, + { + "properties": { + "type": { "enum": [ "string" ] }, + "format": { + "enum": [ "byte", "date", "date-time" ] + } + } + } + ] + } + }, + "definitions": { + "itemsObject": { + "oneOf": [ + { + "type": "object", + "required": [ "$ref" ], + "properties": { + "$ref": { "type": "string" } + }, + "additionalProperties": false + }, + { + "allOf": [ + { "$ref": "#" }, + { + "required": [ "type" ], + "properties": { + "type": {}, + "format": {} + }, + "additionalProperties": false + } + ] + } + ] + } + } +} diff --git a/schemas/v1.2/fragments/dataType/dollarRef.patch.json b/schemas/v1.2/fragments/dataType/dollarRef.patch.json new file mode 100644 index 0000000000..cc8531c186 --- /dev/null +++ b/schemas/v1.2/fragments/dataType/dollarRef.patch.json @@ -0,0 +1,4 @@ +[ + { "op": "add", "path": "/required/-", "value": "$ref" }, + { "op": "add", "path": "/properties/$ref", "value": { "type": "string" } } +] \ No newline at end of file diff --git a/schemas/v1.2/fragments/dataType/typeArray.patch.json b/schemas/v1.2/fragments/dataType/typeArray.patch.json new file mode 100644 index 0000000000..0deb58e7fd --- /dev/null +++ b/schemas/v1.2/fragments/dataType/typeArray.patch.json @@ -0,0 +1,64 @@ +[ + { "op": "add", "path": "/required/-", "value": "type" }, + { + "op": "add", + "path": "/properties/type", + "value": { "enum": [ "array" ] } + }, + { + "op": "add", + "path": "/properties/uniqueItems", + "value": { "type": "boolean" } + }, + { "op": "add", "path": "/required/-", "value": "items" }, + { + "op": "add", + "path": "/properties/items", + "value": { + "type": "object", + "oneOf": [ + { + "required": [ "$ref" ], + "properties": { + "$ref": { "type": "string" } + }, + "additionalProperties": false + }, + { + "required": [ "type" ], + "properties": { + "type": { "enum": [ "boolean", "integer", "number", "string" ] }, + "format": { "type": "string" } + }, + "additionalPropertie": false, + "dependencies": { + "format": { + "oneOf": [ + { + "properties": { + "type": { "enum": [ "integer" ] }, + "format": { "enum": [ "int32", "int64" ] } + } + }, + { + "properties": { + "type": { "enum": [ "number" ] }, + "format": { "enum": [ "float", "double" ] } + } + }, + { + "properties": { + "type": { "enum": [ "string" ] }, + "format": { + "enum": [ "byte", "date", "date-time" ] + } + } + } + ] + } + } + } + ] + } + } +] \ No newline at end of file diff --git a/schemas/v1.2/fragments/dataType/typeBoolean.patch.json b/schemas/v1.2/fragments/dataType/typeBoolean.patch.json new file mode 100644 index 0000000000..22e836fb0a --- /dev/null +++ b/schemas/v1.2/fragments/dataType/typeBoolean.patch.json @@ -0,0 +1,13 @@ +[ + { "op": "add", "path": "/required/-", "value": "type" }, + { + "op": "add", + "path": "/properties/type", + "value": { "enum": [ "boolean" ] } + }, + { + "op": "add", + "path": "/properties/defaultValue", + "value": { "type": "boolean" } + } +] \ No newline at end of file diff --git a/schemas/v1.2/fragments/dataType/typeInteger.patch.json b/schemas/v1.2/fragments/dataType/typeInteger.patch.json new file mode 100644 index 0000000000..787c4eb9d3 --- /dev/null +++ b/schemas/v1.2/fragments/dataType/typeInteger.patch.json @@ -0,0 +1,20 @@ +[ + { "op": "add", "path": "/required/-", "value": "type" }, + { + "op": "add", + "path": "/properties/type", + "value": { "enum": [ "integer" ] } + }, + { + "op": "add", + "path": "/properties/format", + "value": { "enum": [ "int32", "int64" ] } + }, + { "op": "add", "path": "/properties/minimum", "value": { "type": "string" } }, + { "op": "add", "path": "/properties/maximum", "value": { "type": "string" } }, + { + "op": "add", + "path": "/properties/defaultValue", + "value": { "type": "integer" } + } +] \ No newline at end of file diff --git a/schemas/v1.2/fragments/dataType/typeNumber.patch.json b/schemas/v1.2/fragments/dataType/typeNumber.patch.json new file mode 100644 index 0000000000..cb8f4e6c05 --- /dev/null +++ b/schemas/v1.2/fragments/dataType/typeNumber.patch.json @@ -0,0 +1,20 @@ +[ + { "op": "add", "path": "/required/-", "value": "type" }, + { + "op": "add", + "path": "/properties/type", + "value": { "enum": [ "number" ] } + }, + { + "op": "add", + "path": "/properties/format", + "value": { "enum": [ "float", "double" ] } + }, + { "op": "add", "path": "/properties/minimum", "value": { "type": "string" } }, + { "op": "add", "path": "/properties/maximum", "value": { "type": "string" } }, + { + "op": "add", + "path": "/properties/defaultValue", + "value": { "type": "number" } + } +] \ No newline at end of file diff --git a/schemas/v1.2/fragments/dataType/typeString.patch.json b/schemas/v1.2/fragments/dataType/typeString.patch.json new file mode 100644 index 0000000000..717ad9affb --- /dev/null +++ b/schemas/v1.2/fragments/dataType/typeString.patch.json @@ -0,0 +1,28 @@ +[ + { "op": "add", "path": "/required/-", "value": "type" }, + { + "op": "add", + "path": "/properties/type", + "value": { "enum": [ "string" ] } + }, + { + "op": "add", + "path": "/properties/format", + "value": { "enum": [ "byte", "date", "date-time" ] } + }, + { + "op": "add", + "path": "/properties/defaultValue", + "value": { "type": "string" } + }, + { + "op": "add", + "path": "/properties/enum", + "value": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { "type": "string" } + } + } +] \ No newline at end of file diff --git a/schemas/v1.2/fragments/dataType/typeVoidFile.patch.json b/schemas/v1.2/fragments/dataType/typeVoidFile.patch.json new file mode 100644 index 0000000000..8e83887aed --- /dev/null +++ b/schemas/v1.2/fragments/dataType/typeVoidFile.patch.json @@ -0,0 +1,8 @@ +[ + { "op": "add", "path": "/required/-", "value": "type" }, + { + "op": "add", + "path": "/properties/type", + "value": { "enum": [ "void", "File" ] } + } +] \ No newline at end of file diff --git a/schemas/v1.2/infoObject.json b/schemas/v1.2/infoObject.json new file mode 100644 index 0000000000..1fd0f17247 --- /dev/null +++ b/schemas/v1.2/infoObject.json @@ -0,0 +1,16 @@ +{ + "id": "http://wordnik.github.io/schemas/v1.2/infoObject.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "info object (section 5.1.3)", + "type": "object", + "required": [ "title", "description" ], + "properties": { + "title": { "type": "string" }, + "description": { "type": "string" }, + "termsOfServiceUrl": { "type": "string", "format": "uri" }, + "contact": { "type": "string", "format": "email" }, + "license": { "type": "string" }, + "licenseUrl": { "type": "string", "format": "uri" } + }, + "additionalProperties": false +} \ No newline at end of file diff --git a/schemas/v1.2/modelsObject.json b/schemas/v1.2/modelsObject.json new file mode 100644 index 0000000000..6cfeaf8fc7 --- /dev/null +++ b/schemas/v1.2/modelsObject.json @@ -0,0 +1,36 @@ +{ + "id": "http://wordnik.github.io/schemas/v1.2/modelsObject.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "required": [ "id", "properties" ], + "properties": { + "id": { "type": "string" }, + "description": { "type": "string" }, + "properties": { + "type": "object", + "additionalProperties": { "$ref": "#/definitions/propertyObject" } + }, + "subTypes": { + "type": "array", + "items": { "type": "string" }, + "uniqueItems": true + }, + "discriminator": { "type": "string" } + }, + "dependencies": { + "subTypes": [ "discriminator" ] + }, + "definitions": { + "propertyObject": { + "allOf": [ + { + "not": { "$ref": "#" } + }, + { + "$ref": "dataTypeBase.json#" + } + ] + } + } +} + diff --git a/schemas/v1.2/oauth2GrantType.json b/schemas/v1.2/oauth2GrantType.json new file mode 100644 index 0000000000..ef4589a0aa --- /dev/null +++ b/schemas/v1.2/oauth2GrantType.json @@ -0,0 +1,57 @@ +{ + "id": "http://wordnik.github.io/schemas/v1.2/oauth2GrantType.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "minProperties": 1, + "properties": { + "implicit": { "$ref": "#/definitions/implicit" }, + "authorization_code": { "$ref": "#/definitions/authorizationCode" } + }, + "definitions": { + "implicit": { + "type": "object", + "required": [ "loginEndpoint" ], + "properties": { + "loginEndpoint": { "$ref": "#/definitions/loginEndpoint" }, + "tokenName": { "type": "string" } + }, + "additionalProperties": false + }, + "authorizationCode": { + "type": "object", + "required": [ "tokenEndpoint", "tokenRequestEndpoint" ], + "properties": { + "tokenEndpoint": { "$ref": "#/definitions/tokenEndpoint" }, + "tokenRequestEndpoint": { "$ref": "#/definitions/tokenRequestEndpoint" } + }, + "additionalProperties": false + }, + "loginEndpoint": { + "type": "object", + "required": [ "url" ], + "properties": { + "url": { "type": "string", "format": "uri" } + }, + "additionalProperties": false + }, + "tokenEndpoint": { + "type": "object", + "required": [ "url" ], + "properties": { + "url": { "type": "string", "format": "uri" }, + "tokenName": { "type": "string" } + }, + "additionalProperties": false + }, + "tokenRequestEndpoint": { + "type": "object", + "required": [ "url" ], + "properties": { + "url": { "type": "string", "format": "uri" }, + "clientIdName": { "type": "string" }, + "clientSecretName": { "type": "string" } + }, + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/schemas/v1.2/operationObject.json b/schemas/v1.2/operationObject.json new file mode 100644 index 0000000000..2166b3c473 --- /dev/null +++ b/schemas/v1.2/operationObject.json @@ -0,0 +1,64 @@ +{ + "id": "http://wordnik.github.io/schemas/v1.2/operationObject.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "allOf": [ + { "$ref": "dataTypeBase.json#" }, + { + "required": [ "method", "nickname", "parameters" ], + "properties": { + "method": { "enum": [ "GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS" ] }, + "summary": { "type": "string", "maxLength": 120 }, + "notes": { "type": "string" }, + "nickname": { + "type": "string", + "pattern": "^[a-zA-Z0-9_]+$" + }, + "authorizations": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "authorizationObject.json#/definitions/oauth2Scope" + } + } + }, + "parameters": { + "type": "array", + "items": { "$ref": "parameterObject.json#" } + }, + "responseMessages": { + "type": "array", + "items": { "$ref": "#/definitions/responseMessageObject"} + }, + "produces": { "$ref": "#/definitions/mimeTypeArray" }, + "consumes": { "$ref": "#/definitions/mimeTypeArray" }, + "deprecated": { "enum": [ "true", "false" ] } + } + } + ], + "definitions": { + "responseMessageObject": { + "type": "object", + "required": [ "code", "message" ], + "properties": { + "code": { "$ref": "#/definitions/rfc2616section10" }, + "message": { "type": "string" }, + "responseModel": { "type": "string" } + } + }, + "rfc2616section10": { + "type": "integer", + "minimum": 100, + "maximum": 600, + "exclusiveMaximum": true + }, + "mimeTypeArray": { + "type": "array", + "items": { + "type": "string", + "format": "mime-type" + } + } + } +} diff --git a/schemas/v1.2/parameterObject.json b/schemas/v1.2/parameterObject.json new file mode 100644 index 0000000000..af9ec52d6c --- /dev/null +++ b/schemas/v1.2/parameterObject.json @@ -0,0 +1,37 @@ +{ + "id": "http://wordnik.github.io/schemas/v1.2/parameterObject.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "allOf": [ + { "$ref": "dataTypeBase.json#" }, + { + "required": [ "paramType", "name" ], + "properties": { + "paramType": { + "enum": [ "path", "query", "body", "header", "form" ] + }, + "name": { "type": "string" }, + "description": { "type": "string" }, + "required": { "type": "boolean" }, + "allowMultiple": { "type": "boolean" } + } + }, + { + "description": "type File requires special paramType and consumes", + "oneOf": [ + { + "properties": { + "type": { "not": { "enum": [ "File" ] } } + } + }, + { + "properties": { + "type": { "enum": [ "File" ] }, + "paramType": { "enum": [ "form" ] }, + "consumes": { "enum": [ "multipart/form-data" ] } + } + } + ] + } + ] +} diff --git a/schemas/v1.2/resourceListing.json b/schemas/v1.2/resourceListing.json new file mode 100644 index 0000000000..1e140d749c --- /dev/null +++ b/schemas/v1.2/resourceListing.json @@ -0,0 +1,16 @@ +{ + "id": "http://wordnik.github.io/schemas/v1.2/resourceListing.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "required": [ "swaggerVersion", "apis" ], + "properties": { + "swaggerVersion": { "enum": [ "1.2" ] }, + "apis": { + "type": "array", + "items": { "$ref": "resourceObject.json#" } + }, + "apiVersion": { "type": "string" }, + "info": { "$ref": "infoObject.json#" }, + "authorizations": { "$ref": "authorizationObject.json#" } + } +} diff --git a/schemas/v1.2/resourceObject.json b/schemas/v1.2/resourceObject.json new file mode 100644 index 0000000000..f3f485598e --- /dev/null +++ b/schemas/v1.2/resourceObject.json @@ -0,0 +1,11 @@ +{ + "id": "http://wordnik.github.io/schemas/v1.2/resourceObject.json#", + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "required": [ "path" ], + "properties": { + "path": { "type": "string", "format": "uri" }, + "description": { "type": "string" } + }, + "additionalProperties": false +} \ No newline at end of file