288 lines
7.7 KiB
JSON
288 lines
7.7 KiB
JSON
|
|
{
|
||
|
|
"openapi": "3.0.3",
|
||
|
|
"info": {
|
||
|
|
"title": "json-patch",
|
||
|
|
"description": "RFC 6902, JavaScript Object Notation (JSON) Patch",
|
||
|
|
"contact": {
|
||
|
|
"name": "Ivan Dubrov",
|
||
|
|
"email": "dubrov.ivan@gmail.com"
|
||
|
|
},
|
||
|
|
"license": {
|
||
|
|
"name": "MIT/Apache-2.0"
|
||
|
|
},
|
||
|
|
"version": "0.0.0"
|
||
|
|
},
|
||
|
|
"paths": {
|
||
|
|
"foo": {
|
||
|
|
"get": {
|
||
|
|
"tags": [
|
||
|
|
"crate"
|
||
|
|
],
|
||
|
|
"operationId": "get_foo",
|
||
|
|
"requestBody": {
|
||
|
|
"content": {
|
||
|
|
"application/json": {
|
||
|
|
"schema": {
|
||
|
|
"$ref": "#/components/schemas/Patch"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"required": true
|
||
|
|
},
|
||
|
|
"responses": {
|
||
|
|
"200": {
|
||
|
|
"description": "Patch completed"
|
||
|
|
},
|
||
|
|
"406": {
|
||
|
|
"description": "Not accepted"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"components": {
|
||
|
|
"schemas": {
|
||
|
|
"AddOperation": {
|
||
|
|
"type": "object",
|
||
|
|
"description": "JSON Patch 'add' operation representation",
|
||
|
|
"required": [
|
||
|
|
"path",
|
||
|
|
"value"
|
||
|
|
],
|
||
|
|
"properties": {
|
||
|
|
"path": {
|
||
|
|
"type": "string",
|
||
|
|
"description": "JSON-Pointer value [RFC6901](https://tools.ietf.org/html/rfc6901) that references a location\nwithin the target document where the operation is performed."
|
||
|
|
},
|
||
|
|
"value": {
|
||
|
|
"description": "Value to add to the target location."
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"CopyOperation": {
|
||
|
|
"type": "object",
|
||
|
|
"description": "JSON Patch 'copy' operation representation",
|
||
|
|
"required": [
|
||
|
|
"from",
|
||
|
|
"path"
|
||
|
|
],
|
||
|
|
"properties": {
|
||
|
|
"from": {
|
||
|
|
"type": "string",
|
||
|
|
"description": "JSON-Pointer value [RFC6901](https://tools.ietf.org/html/rfc6901) that references a location\nto copy value from."
|
||
|
|
},
|
||
|
|
"path": {
|
||
|
|
"type": "string",
|
||
|
|
"description": "JSON-Pointer value [RFC6901](https://tools.ietf.org/html/rfc6901) that references a location\nwithin the target document where the operation is performed."
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"MoveOperation": {
|
||
|
|
"type": "object",
|
||
|
|
"description": "JSON Patch 'move' operation representation",
|
||
|
|
"required": [
|
||
|
|
"from",
|
||
|
|
"path"
|
||
|
|
],
|
||
|
|
"properties": {
|
||
|
|
"from": {
|
||
|
|
"type": "string",
|
||
|
|
"description": "JSON-Pointer value [RFC6901](https://tools.ietf.org/html/rfc6901) that references a location\nto move value from."
|
||
|
|
},
|
||
|
|
"path": {
|
||
|
|
"type": "string",
|
||
|
|
"description": "JSON-Pointer value [RFC6901](https://tools.ietf.org/html/rfc6901) that references a location\nwithin the target document where the operation is performed."
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"Patch": {
|
||
|
|
"type": "array",
|
||
|
|
"items": {
|
||
|
|
"$ref": "#/components/schemas/PatchOperation"
|
||
|
|
},
|
||
|
|
"description": "Representation of JSON Patch (list of patch operations)"
|
||
|
|
},
|
||
|
|
"PatchOperation": {
|
||
|
|
"oneOf": [
|
||
|
|
{
|
||
|
|
"allOf": [
|
||
|
|
{
|
||
|
|
"$ref": "#/components/schemas/AddOperation"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": [
|
||
|
|
"op"
|
||
|
|
],
|
||
|
|
"properties": {
|
||
|
|
"op": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": [
|
||
|
|
"add"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"allOf": [
|
||
|
|
{
|
||
|
|
"$ref": "#/components/schemas/RemoveOperation"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": [
|
||
|
|
"op"
|
||
|
|
],
|
||
|
|
"properties": {
|
||
|
|
"op": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": [
|
||
|
|
"remove"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"allOf": [
|
||
|
|
{
|
||
|
|
"$ref": "#/components/schemas/ReplaceOperation"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": [
|
||
|
|
"op"
|
||
|
|
],
|
||
|
|
"properties": {
|
||
|
|
"op": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": [
|
||
|
|
"replace"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"allOf": [
|
||
|
|
{
|
||
|
|
"$ref": "#/components/schemas/MoveOperation"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": [
|
||
|
|
"op"
|
||
|
|
],
|
||
|
|
"properties": {
|
||
|
|
"op": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": [
|
||
|
|
"move"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"allOf": [
|
||
|
|
{
|
||
|
|
"$ref": "#/components/schemas/CopyOperation"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": [
|
||
|
|
"op"
|
||
|
|
],
|
||
|
|
"properties": {
|
||
|
|
"op": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": [
|
||
|
|
"copy"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"allOf": [
|
||
|
|
{
|
||
|
|
"$ref": "#/components/schemas/TestOperation"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": [
|
||
|
|
"op"
|
||
|
|
],
|
||
|
|
"properties": {
|
||
|
|
"op": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": [
|
||
|
|
"test"
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"description": "JSON Patch single patch operation",
|
||
|
|
"discriminator": {
|
||
|
|
"propertyName": "op"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"RemoveOperation": {
|
||
|
|
"type": "object",
|
||
|
|
"description": "JSON Patch 'remove' operation representation",
|
||
|
|
"required": [
|
||
|
|
"path"
|
||
|
|
],
|
||
|
|
"properties": {
|
||
|
|
"path": {
|
||
|
|
"type": "string",
|
||
|
|
"description": "JSON-Pointer value [RFC6901](https://tools.ietf.org/html/rfc6901) that references a location\nwithin the target document where the operation is performed."
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"ReplaceOperation": {
|
||
|
|
"type": "object",
|
||
|
|
"description": "JSON Patch 'replace' operation representation",
|
||
|
|
"required": [
|
||
|
|
"path",
|
||
|
|
"value"
|
||
|
|
],
|
||
|
|
"properties": {
|
||
|
|
"path": {
|
||
|
|
"type": "string",
|
||
|
|
"description": "JSON-Pointer value [RFC6901](https://tools.ietf.org/html/rfc6901) that references a location\nwithin the target document where the operation is performed."
|
||
|
|
},
|
||
|
|
"value": {
|
||
|
|
"description": "Value to replace with."
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"TestOperation": {
|
||
|
|
"type": "object",
|
||
|
|
"description": "JSON Patch 'test' operation representation",
|
||
|
|
"required": [
|
||
|
|
"path",
|
||
|
|
"value"
|
||
|
|
],
|
||
|
|
"properties": {
|
||
|
|
"path": {
|
||
|
|
"type": "string",
|
||
|
|
"description": "JSON-Pointer value [RFC6901](https://tools.ietf.org/html/rfc6901) that references a location\nwithin the target document where the operation is performed."
|
||
|
|
},
|
||
|
|
"value": {
|
||
|
|
"description": "Value to test against."
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|