json_schema: {
      "additionalProperties": false,
      "definitions": {
          "event": {
              "additionalProperties": false,
              "properties": {
                  "name": {
                      "description": "Event name",
                      "type": "string"
                  },
                  "params": {
                      "items": {
                          "$ref": "#/definitions/param"
                      },
                      "minItems": 0,
                      "type": "array",
                      "_uniqueItems": false
                  }
              },
              "type": "object"
          },
          "param": {
              "additionalProperties": false,
              "properties": {
                  "doc": {
                      "description": "parameter documentation",
                      "type": "string"
                  },
                  "name": {
                      "type": "string"
                  },
                  "nullable": {
                      "type": "boolean"
                  },
                  "since": {
                      "$ref": "#/definitions/since"
                  },
                  "type": {
                      "enum": [
                          "boolean",
                          "byte",
                          "int",
                          "long",
                          "UUID",
                          "enum",
                          "byteArray",
                          "longArray",
                          "String",
                          "Data",
                          "EntryList_Integer_UUID",
                          "EntryList_Integer_Long",
                          "EntryList_Integer_Integer",
                          "List_Integer",
                          "List_Long",
                          "List_UUID",
                          "Address",
                          "CacheEventData",
                          "DistributedObjectInfo",
                          "Member",
                          "QueryCacheEventData",
                          "RaftGroupId",
                          "ScheduledTaskHandler",
                          "SimpleEntryView",
                          "WanReplicationRef",
                          "Xid",
                          "CacheConfigHolder",
                          "CacheSimpleEntryListenerConfig",
                          "EventJournalConfig",
                          "EvictionConfigHolder",
                          "HotRestartConfig",
                          "ListenerConfigHolder",
                          "AttributeConfig",
                          "IndexConfig",
                          "MapStoreConfigHolder",
                          "MerkleTreeConfig",
                          "NearCacheConfigHolder",
                          "NearCachePreloaderConfig",
                          "PredicateConfigHolder",
                          "QueryCacheConfigHolder",
                          "QueueStoreConfigHolder",
                          "RingbufferStoreConfigHolder",
                          "TimedExpiryPolicyFactoryConfig",
                          "DurationConfig",
                          "ClientBwListEntry",
                          "EntryList_String_String",
                          "EntryList_String_byteArray",
                          "EntryList_Long_byteArray",
                          "EntryList_String_EntryList_Integer_Long",
                          "EntryList_UUID_Long",
                          "EntryList_Address_List_Integer",
                          "EntryList_UUID_Address",
                          "EntryList_Data_Data",
                          "EntryList_Member_List_ScheduledTaskHandler",
                          "List_Address",
                          "List_byteArray",
                          "List_CacheEventData",
                          "List_CacheSimpleEntryListenerConfig",
                          "List_Data",
                          "ListCN_Data",
                          "List_DistributedObjectInfo",
                          "List_ListenerConfigHolder",
                          "List_AttributeConfig",
                          "List_IndexConfig",
                          "List_MemberInfo",
                          "List_QueryCacheConfigHolder",
                          "List_QueryCacheEventData",
                          "List_ScheduledTaskHandler",
                          "List_String",
                          "List_Xid",
                          "List_StackTraceElement",
                          "List_ClientBwListEntry",
                          "List_MCEvent",
                          "Map_String_String",
                          "MergePolicyConfig",
                          "MemberVersion",
                          "MemberInfo",
                          "MCEvent",
                          "AnchorDataListHolder",
                          "PagingPredicateHolder"
                      ]
                  }
              },
              "required": [
                  "name",
                  "type",
                  "nullable",
                  "since",
                  "doc"
              ],
              "type": "object"
          },
          "since": {
              "default": 2.0,
              "enum": [
                  2.0
              ]
          }
      },
      "properties": {
          "id": {
              "description": "Service unique id, 0-255",
              "maximum": 255,
              "minimum": 0,
              "type": "integer"
          },
          "methods": {
              "items": {
                  "additionalProperties": false,
                  "properties": {
                      "doc": {
                          "description": "method documentation",
                          "type": "string"
                      },
                      "events": {
                          "items": {
                              "$ref": "#/definitions/event"
                          },
                          "minItems": 1,
                          "type": "array",
                          "_uniqueItems": true
                      },
                      "id": {
                          "description": "Method unique id, 1-255",
                          "maximum": 255,
                          "minimum": 1,
                          "type": "integer"
                      },
                      "name": {
                          "description": "Method name",
                          "type": "string"
                      },
                      "request": {
                          "additionalProperties": false,
                          "description": "Request message definition",
                          "properties": {
                              "params": {
                                  "items": {
                                      "$ref": "#/definitions/param"
                                  },
                                  "minItems": 0,
                                  "type": "array",
                                  "_uniqueItems": false
                              },
                              "partitionIdentifier": {
                                  "description": "How should the partition Id calculated for this request. Used in documentation.",
                                  "type": [
                                      "integer",
                                      "string"
                                  ]
                              },
                              "retryable": {
                                  "description": "Is the request retryable or not",
                                  "type": "boolean"
                              }
                          },
                          "required": [
                              "retryable",
                              "partitionIdentifier"
                          ],
                          "type": "object"
                      },
                      "response": {
                          "additionalProperties": false,
                          "properties": {
                              "params": {
                                  "items": {
                                      "$ref": "#/definitions/param"
                                  },
                                  "minItems": 0,
                                  "type": "array",
                                  "_uniqueItems": false
                              }
                          },
                          "type": "object"
                      },
                      "since": {
                          "$ref": "#/definitions/since"
                      }
                  },
                  "required": [
                      "name",
                      "since",
                      "doc",
                      "request",
                      "response"
                  ]
              },
              "type": "array"
          },
          "name": {
              "description": "Service name",
              "type": "string"
          }
      },
      "required": [
          "name",
          "methods"
      ],
      "title": "Hazelcast Client Protocol Definition",
      "type": "object"
  }