| { |
| "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" } |
| ] |
| } |
| } |
| } |