mirror of
https://github.com/valitydev/thrift.git
synced 2024-11-06 18:35:19 +00:00
ffa255cac5
Client: JSON Patch: Stig Bakken <stig@zedge.net> This closes #290 - add --gen json:merge option, and disable merging by default - output complete descriptors - add schema for JSON generator - indent output
311 lines
7.2 KiB
JSON
311 lines
7.2 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
|
|
"id": "http://thrift.apache.org/program-schema#",
|
|
"description": "Schema for Apache Thrift protocol descriptors",
|
|
|
|
"definitions": {
|
|
"type-id": {
|
|
"enum": [
|
|
"void",
|
|
"string",
|
|
"bool",
|
|
"byte",
|
|
"i16",
|
|
"i32",
|
|
"i64",
|
|
"double",
|
|
"list",
|
|
"set",
|
|
"map",
|
|
"union",
|
|
"struct",
|
|
"exception",
|
|
"binary"
|
|
]
|
|
},
|
|
"base-type": {
|
|
"title": "Base types",
|
|
"type": "object",
|
|
"properties": {
|
|
"typeId": {
|
|
"enum": [ "void", "string", "bool", "byte", "i16", "i32", "i64", "double", "binary" ]
|
|
}
|
|
},
|
|
"required": [ "typeId" ]
|
|
},
|
|
"list-type": {
|
|
"title": "List and set types",
|
|
"type": "object",
|
|
"properties": {
|
|
"typeId": { "enum": [ "list", "set" ] },
|
|
"elemTypeId": { "$ref": "#/definitions/type-id" },
|
|
"elemType": { "$ref": "#/definitions/type-spec" }
|
|
},
|
|
"required": [ "typeId", "elemTypeId", "elemType" ]
|
|
},
|
|
"map-type": {
|
|
"title": "Map type",
|
|
"type": "object",
|
|
"properties": {
|
|
"typeId": { "enum": [ "map" ] },
|
|
"keyTypeId": { "$ref": "#/definitions/type-id" },
|
|
"keyType": { "$ref": "#/definitions/type-spec" },
|
|
"valueTypeId": { "$ref": "#/definitions/type-id" },
|
|
"valueType": { "$ref": "#/definitions/type-spec" }
|
|
},
|
|
"required": [ "typeId", "keyTypeId", "valueTypeId" ]
|
|
},
|
|
"struct-spec": {
|
|
"title": "Struct and union types",
|
|
"type": "object",
|
|
"properties": {
|
|
"typeId": { "enum": [ "union", "struct" ] },
|
|
"class": { "type": "string" }
|
|
},
|
|
"required": [ "typeId", "class" ]
|
|
},
|
|
"type-spec": {
|
|
"allOf": [
|
|
{ "type": "object" },
|
|
{
|
|
"oneOf":
|
|
[
|
|
{ "$ref": "#/definitions/base-type" },
|
|
{ "$ref": "#/definitions/list-type" },
|
|
{ "$ref": "#/definitions/map-type" },
|
|
{ "$ref": "#/definitions/struct-spec" }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"name-and-doc": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"doc": { "type": "string" }
|
|
},
|
|
"required": [ "name" ]
|
|
},
|
|
"enum": {
|
|
"type": "object",
|
|
"allOf": [
|
|
{ "$ref": "#/definitions/name-and-doc" },
|
|
{
|
|
"required": [ "members" ],
|
|
"properties": {
|
|
"members": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"value": { "type": "integer" }
|
|
},
|
|
"required": [ "name", "value" ]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"typedef": {
|
|
"type": "object",
|
|
"allOf": [
|
|
{ "$ref": "#/definitions/name-and-doc" },
|
|
{
|
|
"properties": {
|
|
"typeId": { "$ref": "#/definitions/type-id" },
|
|
"type": { "$ref": "#/definitions/type-spec" }
|
|
},
|
|
"required": [ "typeId" ]
|
|
}
|
|
]
|
|
},
|
|
"constant": {
|
|
"type": "object",
|
|
"allOf": [
|
|
{ "$ref": "#/definitions/name-and-doc" },
|
|
{ "$ref": "#/definitions/type-spec" },
|
|
{
|
|
"properties": {
|
|
"value": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{ "type": "number" },
|
|
{ "type": "array" },
|
|
{ "type": "object" }
|
|
]
|
|
}
|
|
},
|
|
"required": [ "value" ]
|
|
}
|
|
]
|
|
},
|
|
"field": {
|
|
"type": "object",
|
|
"allOf": [
|
|
{ "$ref": "#/definitions/name-and-doc" },
|
|
{ "$ref": "#/definitions/type-spec" },
|
|
{
|
|
"properties": {
|
|
"key": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535
|
|
},
|
|
"required": {
|
|
"enum": [ "required", "optional", "req_out" ]
|
|
},
|
|
"default": {
|
|
"oneOf": [
|
|
{ "type": "string" },
|
|
{ "type": "number" },
|
|
{ "type": "array" },
|
|
{ "type": "object" }
|
|
]
|
|
}
|
|
},
|
|
"required": [ "key", "required" ]
|
|
}
|
|
]
|
|
},
|
|
"struct": {
|
|
"type": "object",
|
|
"allOf": [
|
|
{ "$ref": "#/definitions/name-and-doc" },
|
|
{
|
|
"properties": {
|
|
"isException": { "type": "boolean" },
|
|
"isUnion": { "type": "boolean" },
|
|
"fields": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/field"
|
|
}
|
|
}
|
|
},
|
|
"required": [ "isException", "isUnion", "fields" ]
|
|
}
|
|
]
|
|
},
|
|
"union": {
|
|
"$ref": "#/definitions/struct"
|
|
},
|
|
"exception": {
|
|
"$ref": "#/definitions/struct"
|
|
},
|
|
"function": {
|
|
"type": "object",
|
|
"allOf": [
|
|
{ "$ref": "#/definitions/name-and-doc" },
|
|
{
|
|
"oneOf": [
|
|
{
|
|
"properties": { "oneway": { "type": "boolean" } },
|
|
"required": [ "oneway" ]
|
|
},
|
|
{
|
|
"properties": { "returnType": { "$ref": "#/definitions/type-spec" } },
|
|
"required": [ "returnType" ]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"arguments": {
|
|
"type": "array",
|
|
"items": {
|
|
"allOf": [
|
|
{ "$ref": "#/definitions/field" },
|
|
{
|
|
"properties": { }
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"exceptions": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/exception"
|
|
}
|
|
}
|
|
},
|
|
"required": [ "oneway", "arguments", "exceptions" ]
|
|
}
|
|
]
|
|
},
|
|
"service": {
|
|
"type": "object",
|
|
"allOf": [
|
|
{ "$ref": "#/definitions/name-and-doc" },
|
|
{
|
|
"properties": {
|
|
"functions": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/function"
|
|
}
|
|
}
|
|
},
|
|
"required": [ "functions" ]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
|
|
"type": "object",
|
|
"required": [
|
|
"name",
|
|
"namespaces",
|
|
"includes",
|
|
"enums",
|
|
"typedefs",
|
|
"structs",
|
|
"constants",
|
|
"services"
|
|
],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"includes": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"uniqueItems": true
|
|
},
|
|
"enums": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/enum"
|
|
}
|
|
},
|
|
"typedefs": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/typedef"
|
|
}
|
|
},
|
|
"structs": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/struct"
|
|
}
|
|
},
|
|
"constants": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/constant"
|
|
}
|
|
},
|
|
"services": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/service"
|
|
}
|
|
}
|
|
}
|
|
}
|