blob: 1f8167e32a256ec796deab6ecd743cfcde1eec93 [file] [log] [blame]
{
"title": "JSON Patch",
"description": "A JSON Schema describing a JSON Patch",
"$schema": "http://json-schema.org/draft-04/schema#",
"notes": [
"Only required members are accounted for, other members are ignored"
],
"type": "array",
"items": {
"description": "one JSON Patch operation",
"allOf": [
{
"description": "Members common to all operations",
"type": "object",
"required": [ "op", "path" ],
"properties": {
"path": { "$ref": "#/definitions/jsonPointer" }
}
},
{ "$ref": "#/definitions/oneOperation" }
]
},
"definitions": {
"jsonPointer": {
"type": "string",
"pattern": "^(/[^/~]*(~[01][^/~]*)*)*$"
},
"add": {
"description": "add operation. Value can be any JSON value.",
"properties": { "op": { "enum": [ "add" ] } },
"required": [ "value" ]
},
"remove": {
"description": "remove operation. Only a path is specified.",
"properties": { "op": { "enum": [ "remove" ] } }
},
"replace": {
"description": "replace operation. Value can be any JSON value.",
"properties": { "op": { "enum": [ "replace" ] } },
"required": [ "value" ]
},
"move": {
"description": "move operation. \"from\" is a JSON Pointer.",
"properties": {
"op": { "enum": [ "move" ] },
"from": { "$ref": "#/definitions/jsonPointer" }
},
"required": [ "from" ]
},
"copy": {
"description": "copy operation. \"from\" is a JSON Pointer.",
"properties": {
"op": { "enum": [ "copy" ] },
"from": { "$ref": "#/definitions/jsonPointer" }
},
"required": [ "from" ]
},
"test": {
"description": "test operation. Value can be any JSON value.",
"properties": { "op": { "enum": [ "test" ] } },
"required": [ "value" ]
},
"oneOperation": {
"oneOf": [
{ "$ref": "#/definitions/add" },
{ "$ref": "#/definitions/remove" },
{ "$ref": "#/definitions/replace" },
{ "$ref": "#/definitions/move" },
{ "$ref": "#/definitions/copy" },
{ "$ref": "#/definitions/test" }
]
}
}
}