{
  "swagger": "2.0",
  "info": {
    "title": "Wechaty Puppet Service OpenAPI Specification",
    "description": "Wechaty is a Conversational RPA SDK for chatbot makers. With only 6 lines of code, you can create a bot on the most popular IMs like WeChat, Whatsapp, WeCom, Gitter, etc.\n\nWechaty Puppet Service is the RESTful API for Wechaty API, which is build on top of the Wechaty Puppet Abstraction and the gRPC proto definition.",
    "version": "1.0.1",
    "contact": {
      "name": "Wechaty",
      "url": "https://github.com/wechaty/openapi",
      "email": "wechaty@chatie.io"
    },
    "license": {
      "name": "Apache-2.0",
      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "tags": [
    {
      "name": "Puppet"
    }
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/contacts": {
      "get": {
        "summary": "*\nHuan(202002): consider changing response to a stream in the future for better performance",
        "operationId": "Puppet_ContactList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetContactListResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/-/tags/{id}": {
      "delete": {
        "summary": "*\nOperate Sub-Collections\n  https://cloud.google.com/apis/design/design_patterns#list_sub-collections",
        "operationId": "Puppet_TagContactDelete",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagContactDeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/self/name/{name}": {
      "put": {
        "operationId": "Puppet_ContactSelfName",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetContactSelfNameResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/self/qrcode": {
      "get": {
        "summary": "*",
        "description": "Contact Self",
        "operationId": "Puppet_ContactSelfQRCode",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetContactSelfQRCodeResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/self/signature": {
      "put": {
        "operationId": "Puppet_ContactSelfSignature",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetContactSelfSignatureResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetContactSelfSignatureRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/{contactId}/corporation-remark": {
      "put": {
        "operationId": "Puppet_ContactCorporationRemark",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetContactCorporationRemarkResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "corporationRemarkStringValueDeprecated": {
                  "type": "string"
                },
                "corporationRemark": {
                  "type": "string"
                }
              }
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/{contactId}/description": {
      "put": {
        "operationId": "Puppet_ContactDescription",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetContactDescriptionResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "descriptionStringValueDeprecated": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/{contactId}/phone": {
      "put": {
        "operationId": "Puppet_ContactPhone",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetContactPhoneResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "phones": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/{contactId}/tags": {
      "get": {
        "operationId": "Puppet_TagContactList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagContactListResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "contactIdStringValueDeprecated",
            "description": "@deprecated:\n Huan(202109): Wrapper types must not be used going forward.\n   https://cloud.google.com/apis/design/design_patterns#optional_primitive_fields",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/{contactId}/tags/{id}": {
      "delete": {
        "operationId": "Puppet_TagContactRemove",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagContactRemoveResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      },
      "put": {
        "summary": "*",
        "description": "Tag",
        "operationId": "Puppet_TagContactAdd",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagContactAddResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/{id}": {
      "get": {
        "summary": "Get a contact payload",
        "description": "Contact",
        "operationId": "contactPayload",
        "responses": {
          "200": {
            "description": "Contact payload",
            "schema": {
              "$ref": "#/definitions/puppetContactPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "contact"
        ]
      }
    },
    "/contacts/{id}/alias": {
      "put": {
        "operationId": "Puppet_ContactAlias",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetContactAliasResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "aliasStringValueDeprecated": {
                  "type": "string",
                  "title": "nullable"
                },
                "alias": {
                  "type": "string"
                }
              }
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/{id}/avatar": {
      "get": {
        "operationId": "Puppet_ContactAvatar",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetContactAvatarResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "fileboxStringValueDeprecated",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "fileBox",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/{id}/dirty/{type}": {
      "put": {
        "operationId": "Puppet_DirtyPayload2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetDirtyPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "in": "path",
            "required": true,
            "type": "string",
            "enum": [
              "PAYLOAD_TYPE_UNSPECIFIED",
              "PAYLOAD_TYPE_MESSAGE",
              "PAYLOAD_TYPE_CONTACT",
              "PAYLOAD_TYPE_ROOM",
              "PAYLOAD_TYPE_ROOM_MEMBER",
              "PAYLOAD_TYPE_FRIENDSHIP"
            ],
            "pattern": "PAYLOAD_TYPE_CONTACT"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations/{conversationId}/contact": {
      "post": {
        "operationId": "Puppet_MessageSendContact",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageSendContactResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "contactId": {
                  "type": "string"
                }
              }
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations/{conversationId}/forward/{messageId}": {
      "post": {
        "operationId": "Puppet_MessageForward2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageForwardResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "messageId",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations/{conversationId}/location": {
      "post": {
        "operationId": "Puppet_MessageSendLocation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageSendLocationResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "location": {
                  "$ref": "#/definitions/puppetLocationPayload"
                }
              }
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations/{conversationId}/mini-program": {
      "post": {
        "operationId": "Puppet_MessageSendMiniProgram",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageSendMiniProgramResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "miniProgramDeprecated": {
                  "type": "string",
                  "title": "*\nHuan(202110): We should use payload instead of JSON.stringify string\n The compatible code will be removed after Dec 31, 2022"
                },
                "miniProgram": {
                  "$ref": "#/definitions/puppetMiniProgramPayload"
                }
              }
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations/{conversationId}/text": {
      "post": {
        "operationId": "Puppet_MessageSendText",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageSendTextResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "text": {
                  "type": "string"
                },
                "mentionalIds": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "title": "Huan(202011) FIXME: Issue #99\nhttps://github.com/wechaty/grpc/issues/99"
                }
              }
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations/{conversationId}/url-link": {
      "post": {
        "operationId": "Puppet_MessageSendUrl",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageSendUrlResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "urlLinkDeprecated": {
                  "type": "string",
                  "title": "*\nHuan(202110): We should use payload instead of JSON.stringify string\n The compatible code will be removed after Dec 31, 2022"
                },
                "urlLink": {
                  "$ref": "#/definitions/puppetUrlLinkPayload"
                }
              }
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/ding": {
      "post": {
        "operationId": "Puppet_Ding",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetDingResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetDingRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/download/{id}": {
      "get": {
        "summary": "*\nFile/Blob download & upload",
        "operationId": "Puppet_Download",
        "responses": {
          "200": {
            "description": "A successful response.(streaming responses)",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "$ref": "#/definitions/puppetDownloadResponse"
                },
                "error": {
                  "$ref": "#/definitions/rpcStatus"
                }
              },
              "title": "Stream result of puppetDownloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/events": {
      "get": {
        "summary": "*",
        "description": "Event - Server Stream",
        "operationId": "Puppet_Event",
        "responses": {
          "200": {
            "description": "A successful response.(streaming responses)",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "$ref": "#/definitions/puppetEventResponse"
                },
                "error": {
                  "$ref": "#/definitions/rpcStatus"
                }
              },
              "title": "Stream result of puppetEventResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Puppet"
        ]
      }
    },
    "/friendship/accept/{id}": {
      "put": {
        "operationId": "Puppet_FriendshipAccept",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetFriendshipAcceptResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/friendship/add/{contactId}": {
      "put": {
        "operationId": "Puppet_FriendshipAdd",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetFriendshipAddResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "hello": {
                  "type": "string"
                },
                "sourceRoomIdStringValueDeprecated": {
                  "type": "string"
                },
                "sourceContactIdStringValueDeprecated": {
                  "type": "string"
                },
                "referrer": {
                  "$ref": "#/definitions/puppetReferrer"
                }
              }
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/friendship/search/phone/{phone}": {
      "get": {
        "operationId": "Puppet_FriendshipSearchPhone",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetFriendshipSearchPhoneResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "phone",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/friendship/search/weixin/{weixin}": {
      "get": {
        "operationId": "Puppet_FriendshipSearchWeixin",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetFriendshipSearchWeixinResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "weixin",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/friendship/{id}": {
      "get": {
        "summary": "*",
        "description": "Friendship",
        "operationId": "Puppet_FriendshipPayload",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetFriendshipPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "payloadStringValueDeprecated",
            "description": "*\nHuan(202003):\n What's the reason we need belowing payload?\n We should remove it if possible.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "payload",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/friendships/{id}/dirty/{type}": {
      "put": {
        "operationId": "Puppet_DirtyPayload5",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetDirtyPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "in": "path",
            "required": true,
            "type": "string",
            "enum": [
              "PAYLOAD_TYPE_UNSPECIFIED",
              "PAYLOAD_TYPE_MESSAGE",
              "PAYLOAD_TYPE_CONTACT",
              "PAYLOAD_TYPE_ROOM",
              "PAYLOAD_TYPE_ROOM_MEMBER",
              "PAYLOAD_TYPE_FRIENDSHIP"
            ],
            "pattern": "PAYLOAD_TYPE_FRIENDSHIP"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/logout": {
      "put": {
        "operationId": "Puppet_Logout",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetLogoutResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Puppet"
        ]
      }
    },
    "/message/{id}": {
      "get": {
        "operationId": "Puppet_MessagePayload",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessagePayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/message/{id}/contact": {
      "get": {
        "operationId": "Puppet_MessageContact",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageContactResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/message/{id}/dirty/{type}": {
      "put": {
        "operationId": "Puppet_DirtyPayload",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetDirtyPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "in": "path",
            "required": true,
            "type": "string",
            "enum": [
              "PAYLOAD_TYPE_UNSPECIFIED",
              "PAYLOAD_TYPE_MESSAGE",
              "PAYLOAD_TYPE_CONTACT",
              "PAYLOAD_TYPE_ROOM",
              "PAYLOAD_TYPE_ROOM_MEMBER",
              "PAYLOAD_TYPE_FRIENDSHIP"
            ],
            "pattern": "PAYLOAD_TYPE_MESSAGE"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/message/{id}/location": {
      "get": {
        "operationId": "Puppet_MessageLocation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageLocationResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/message/{id}/mini-program": {
      "get": {
        "operationId": "Puppet_MessageMiniProgram",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageMiniProgramResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/message/{id}/recall": {
      "put": {
        "operationId": "Puppet_MessageRecall",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageRecallResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/message/{id}/url-link": {
      "get": {
        "operationId": "Puppet_MessageUrl",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageUrlResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/messages/{messageId}/forward/{conversationId}": {
      "post": {
        "operationId": "Puppet_MessageForward",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageForwardResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "messageId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/room-invitations/{id}": {
      "get": {
        "summary": "*",
        "description": "Room Invitation",
        "operationId": "Puppet_RoomInvitationPayload",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomInvitationPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "payloadStringValueDeprecated",
            "description": "*\nHuan(202002): `payload` should be removed.\n The puppet server should take the responsibilities\n for storing the unaccepted friend-request payload.\n\n@deprecated: use payload instead.\n Huan(202109): Wrapper types must not be used going forward.\n   https://cloud.google.com/apis/design/design_patterns#optional_primitive_fields",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "payload",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/room-invitations/{id}/accept": {
      "put": {
        "operationId": "Puppet_RoomInvitationAccept",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomInvitationAcceptResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms": {
      "get": {
        "operationId": "Puppet_RoomList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomListResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Puppet"
        ]
      },
      "post": {
        "operationId": "Puppet_RoomCreate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomCreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetRoomCreateRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id}": {
      "get": {
        "summary": "*",
        "description": "Room",
        "operationId": "Puppet_RoomPayload",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      },
      "delete": {
        "operationId": "Puppet_RoomQuit",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomQuitResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id}/add/{contactId}": {
      "put": {
        "operationId": "Puppet_RoomAdd",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomAddResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "inviteOnly",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id}/announcement": {
      "get": {
        "operationId": "Puppet_RoomAnnounce",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomAnnounceResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "textStringValueDeprecated",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "text",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      },
      "put": {
        "operationId": "Puppet_RoomAnnounce2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomAnnounceResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "textStringValueDeprecated": {
                  "type": "string"
                },
                "text": {
                  "type": "string"
                }
              }
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id}/avatar": {
      "get": {
        "operationId": "Puppet_RoomAvatar",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomAvatarResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id}/dirty/members/{type}": {
      "put": {
        "operationId": "Puppet_DirtyPayload4",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetDirtyPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "in": "path",
            "required": true,
            "type": "string",
            "enum": [
              "PAYLOAD_TYPE_UNSPECIFIED",
              "PAYLOAD_TYPE_MESSAGE",
              "PAYLOAD_TYPE_CONTACT",
              "PAYLOAD_TYPE_ROOM",
              "PAYLOAD_TYPE_ROOM_MEMBER",
              "PAYLOAD_TYPE_FRIENDSHIP"
            ],
            "pattern": "PAYLOAD_TYPE_ROOM_MEMBER"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id}/dirty/{type}": {
      "put": {
        "operationId": "Puppet_DirtyPayload3",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetDirtyPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "in": "path",
            "required": true,
            "type": "string",
            "enum": [
              "PAYLOAD_TYPE_UNSPECIFIED",
              "PAYLOAD_TYPE_MESSAGE",
              "PAYLOAD_TYPE_CONTACT",
              "PAYLOAD_TYPE_ROOM",
              "PAYLOAD_TYPE_ROOM_MEMBER",
              "PAYLOAD_TYPE_FRIENDSHIP"
            ],
            "pattern": "PAYLOAD_TYPE_ROOM"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id}/member/{contactId}": {
      "delete": {
        "operationId": "Puppet_RoomDel",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomDelResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id}/members": {
      "get": {
        "operationId": "Puppet_RoomMemberList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomMemberListResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id}/members/{memberId}": {
      "get": {
        "summary": "*",
        "description": "Room Member",
        "operationId": "Puppet_RoomMemberPayload",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomMemberPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "memberId",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id}/qrcode": {
      "get": {
        "operationId": "Puppet_RoomQRCode",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomQRCodeResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id}/topic": {
      "get": {
        "operationId": "Puppet_RoomTopic",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomTopicResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "topicStringValueDeprecated",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "topic",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/start": {
      "put": {
        "summary": "*",
        "description": "Base",
        "operationId": "Puppet_Start",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetStartResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Puppet"
        ]
      }
    },
    "/stop": {
      "put": {
        "operationId": "Puppet_Stop",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetStopResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Puppet"
        ]
      }
    },
    "/upload": {
      "post": {
        "operationId": "Puppet_Upload",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetUploadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": " (streaming inputs)",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetUploadRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/version": {
      "get": {
        "operationId": "Puppet_Version",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetVersionResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Puppet"
        ]
      }
    },
    "/wechaty.Puppet/MessageFile": {
      "post": {
        "operationId": "Puppet_MessageFile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageFileResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageFileRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/wechaty.Puppet/MessageFileStream": {
      "post": {
        "summary": "*\nDeprecated: will be removed after Dec 31, 2022",
        "operationId": "Puppet_MessageFileStream",
        "responses": {
          "200": {
            "description": "A successful response.(streaming responses)",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "$ref": "#/definitions/puppetMessageFileStreamResponse"
                },
                "error": {
                  "$ref": "#/definitions/rpcStatus"
                }
              },
              "title": "Stream result of puppetMessageFileStreamResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageFileStreamRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/wechaty.Puppet/MessageImage": {
      "post": {
        "operationId": "Puppet_MessageImage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageImageResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageImageRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/wechaty.Puppet/MessageImageStream": {
      "post": {
        "operationId": "Puppet_MessageImageStream",
        "responses": {
          "200": {
            "description": "A successful response.(streaming responses)",
            "schema": {
              "type": "object",
              "properties": {
                "result": {
                  "$ref": "#/definitions/puppetMessageImageStreamResponse"
                },
                "error": {
                  "$ref": "#/definitions/rpcStatus"
                }
              },
              "title": "Stream result of puppetMessageImageStreamResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageImageStreamRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/wechaty.Puppet/MessageSendFile": {
      "post": {
        "operationId": "Puppet_MessageSendFile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageSendFileResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageSendFileRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/wechaty.Puppet/MessageSendFileStream": {
      "post": {
        "operationId": "Puppet_MessageSendFileStream",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageSendFileStreamResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": " (streaming inputs)",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageSendFileStreamRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    }
  },
  "definitions": {
    "protobufAny": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "puppetContactAliasResponse": {
      "type": "object",
      "properties": {
        "aliasStringValueDeprecated": {
          "type": "string"
        },
        "alias": {
          "type": "string"
        }
      }
    },
    "puppetContactAvatarResponse": {
      "type": "object",
      "properties": {
        "fileboxStringValueDeprecated": {
          "type": "string"
        },
        "fileBox": {
          "type": "string"
        }
      }
    },
    "puppetContactCorporationRemarkResponse": {
      "type": "object"
    },
    "puppetContactDescriptionResponse": {
      "type": "object"
    },
    "puppetContactGender": {
      "type": "string",
      "enum": [
        "CONTACT_GENDER_UNSPECIFIED",
        "CONTACT_GENDER_MALE",
        "CONTACT_GENDER_FEMALE"
      ],
      "default": "CONTACT_GENDER_UNSPECIFIED"
    },
    "puppetContactListResponse": {
      "type": "object",
      "properties": {
        "ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetContactPayloadResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "gender": {
          "$ref": "#/definitions/puppetContactGender"
        },
        "type": {
          "$ref": "#/definitions/puppetContactType"
        },
        "name": {
          "type": "string"
        },
        "avatar": {
          "type": "string"
        },
        "address": {
          "type": "string"
        },
        "alias": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "friend": {
          "type": "boolean"
        },
        "province": {
          "type": "string"
        },
        "signature": {
          "type": "string"
        },
        "star": {
          "type": "boolean"
        },
        "weixin": {
          "type": "string"
        },
        "corporation": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "coworker": {
          "type": "boolean"
        },
        "phones": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetContactPhoneResponse": {
      "type": "object",
      "properties": {
        "phones": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetContactSelfNameResponse": {
      "type": "object"
    },
    "puppetContactSelfQRCodeResponse": {
      "type": "object",
      "properties": {
        "qrcode": {
          "type": "string"
        }
      }
    },
    "puppetContactSelfSignatureRequest": {
      "type": "object",
      "properties": {
        "signature": {
          "type": "string"
        }
      }
    },
    "puppetContactSelfSignatureResponse": {
      "type": "object"
    },
    "puppetContactType": {
      "type": "string",
      "enum": [
        "CONTACT_TYPE_UNSPECIFIED",
        "CONTACT_TYPE_PERSONAL",
        "CONTACT_TYPE_OFFICIAL",
        "CONTACT_TYPE_CORPORATION"
      ],
      "default": "CONTACT_TYPE_UNSPECIFIED"
    },
    "puppetDingRequest": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string"
        }
      }
    },
    "puppetDingResponse": {
      "type": "object"
    },
    "puppetDirtyPayloadResponse": {
      "type": "object"
    },
    "puppetDownloadResponse": {
      "type": "object",
      "properties": {
        "chunk": {
          "type": "string",
          "format": "byte"
        }
      }
    },
    "puppetEventResponse": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/puppetEventType"
        },
        "payload": {
          "type": "string",
          "title": "TODO: Huan(202002) consider to use a PB Map?"
        }
      }
    },
    "puppetEventType": {
      "type": "string",
      "enum": [
        "EVENT_TYPE_UNSPECIFIED",
        "EVENT_TYPE_HEARTBEAT",
        "EVENT_TYPE_MESSAGE",
        "EVENT_TYPE_DONG",
        "EVENT_TYPE_POST",
        "EVENT_TYPE_ERROR",
        "EVENT_TYPE_FRIENDSHIP",
        "EVENT_TYPE_ROOM_INVITE",
        "EVENT_TYPE_ROOM_JOIN",
        "EVENT_TYPE_ROOM_LEAVE",
        "EVENT_TYPE_ROOM_TOPIC",
        "EVENT_TYPE_SCAN",
        "EVENT_TYPE_READY",
        "EVENT_TYPE_RESET",
        "EVENT_TYPE_LOGIN",
        "EVENT_TYPE_LOGOUT",
        "EVENT_TYPE_DIRTY"
      ],
      "default": "EVENT_TYPE_UNSPECIFIED"
    },
    "puppetFileBoxChunk": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string",
          "format": "byte",
          "title": "oneof payload {"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "puppetFriendshipAcceptResponse": {
      "type": "object"
    },
    "puppetFriendshipAddResponse": {
      "type": "object"
    },
    "puppetFriendshipPayloadResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "contactId": {
          "type": "string"
        },
        "hello": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/puppetFriendshipType"
        },
        "stranger": {
          "type": "string"
        },
        "ticket": {
          "type": "string"
        },
        "scene": {
          "$ref": "#/definitions/puppetFriendshipSceneType"
        }
      }
    },
    "puppetFriendshipSceneType": {
      "type": "string",
      "enum": [
        "FRIENDSHIP_SCENE_TYPE_UNSPECIFIED",
        "FRIENDSHIP_SCENE_TYPE_QQ",
        "FRIENDSHIP_SCENE_TYPE_EMAIL",
        "FRIENDSHIP_SCENE_TYPE_WEIXIN",
        "FRIENDSHIP_SCENE_TYPE_QQTBD",
        "FRIENDSHIP_SCENE_TYPE_ROOM",
        "FRIENDSHIP_SCENE_TYPE_PHONE",
        "FRIENDSHIP_SCENE_TYPE_CARD",
        "FRIENDSHIP_SCENE_TYPE_LOCATION",
        "FRIENDSHIP_SCENE_TYPE_BOTTLE",
        "FRIENDSHIP_SCENE_TYPE_SHAKING",
        "FRIENDSHIP_SCENE_TYPE_QRCODE"
      ],
      "default": "FRIENDSHIP_SCENE_TYPE_UNSPECIFIED"
    },
    "puppetFriendshipSearchPhoneResponse": {
      "type": "object",
      "properties": {
        "contactIdStringValueDeprecated": {
          "type": "string",
          "title": "nullable"
        },
        "contactId": {
          "type": "string"
        }
      }
    },
    "puppetFriendshipSearchWeixinResponse": {
      "type": "object",
      "properties": {
        "contactIdStringValueDeprecated": {
          "type": "string",
          "title": "nullable"
        },
        "contactId": {
          "type": "string"
        }
      }
    },
    "puppetFriendshipType": {
      "type": "string",
      "enum": [
        "FRIENDSHIP_TYPE_UNSPECIFIED",
        "FRIENDSHIP_TYPE_CONFIRM",
        "FRIENDSHIP_TYPE_RECEIVE",
        "FRIENDSHIP_TYPE_VERIFY"
      ],
      "default": "FRIENDSHIP_TYPE_UNSPECIFIED"
    },
    "puppetImageType": {
      "type": "string",
      "enum": [
        "IMAGE_TYPE_UNSPECIFIED",
        "IMAGE_TYPE_THUMBNAIL",
        "IMAGE_TYPE_HD",
        "IMAGE_TYPE_ARTWORK"
      ],
      "default": "IMAGE_TYPE_UNSPECIFIED"
    },
    "puppetLocationPayload": {
      "type": "object",
      "properties": {
        "accuracy": {
          "type": "number",
          "format": "float"
        },
        "address": {
          "type": "string"
        },
        "latitude": {
          "type": "number",
          "format": "double"
        },
        "longitude": {
          "type": "number",
          "format": "double"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "puppetLogoutResponse": {
      "type": "object"
    },
    "puppetMessageContactResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageFileRequest": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageFileResponse": {
      "type": "object",
      "properties": {
        "fileBox": {
          "type": "string"
        }
      }
    },
    "puppetMessageFileStreamRequest": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageFileStreamResponse": {
      "type": "object",
      "properties": {
        "fileBoxChunk": {
          "$ref": "#/definitions/puppetFileBoxChunk"
        }
      }
    },
    "puppetMessageForwardResponse": {
      "type": "object",
      "properties": {
        "idStringValueDeprecated": {
          "type": "string",
          "title": "*\n@deprecated: use payload instead.\n Huan(202109): Wrapper types must not be used going forward.\n   https://cloud.google.com/apis/design/design_patterns#optional_primitive_fields"
        },
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageImageRequest": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/puppetImageType"
        }
      }
    },
    "puppetMessageImageResponse": {
      "type": "object",
      "properties": {
        "fileBox": {
          "type": "string"
        }
      }
    },
    "puppetMessageImageStreamRequest": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/puppetImageType"
        }
      }
    },
    "puppetMessageImageStreamResponse": {
      "type": "object",
      "properties": {
        "fileBoxChunk": {
          "$ref": "#/definitions/puppetFileBoxChunk"
        }
      }
    },
    "puppetMessageLocationResponse": {
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/definitions/puppetLocationPayload"
        }
      }
    },
    "puppetMessageMiniProgramResponse": {
      "type": "object",
      "properties": {
        "miniProgramDeprecated": {
          "type": "string",
          "title": "*\nHuan(202110): We should use payload instead of JSON.stringify string\n The compatible code will be removed after Dec 31, 2022"
        },
        "miniProgram": {
          "$ref": "#/definitions/puppetMiniProgramPayload"
        }
      }
    },
    "puppetMessagePayloadResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "filename": {
          "type": "string"
        },
        "text": {
          "type": "string"
        },
        "timestampDeprecated": {
          "type": "string",
          "format": "uint64",
          "title": "*\n@deprecated will be removed after Dec 31, 2022\n Huan(202109): use receive_time(10) instead"
        },
        "type": {
          "$ref": "#/definitions/puppetMessageType"
        },
        "fromId": {
          "type": "string"
        },
        "roomId": {
          "type": "string"
        },
        "toId": {
          "type": "string"
        },
        "mentionIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "receiveTime": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "puppetMessageRecallResponse": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        }
      }
    },
    "puppetMessageSendContactResponse": {
      "type": "object",
      "properties": {
        "idStringValueDeprecated": {
          "type": "string",
          "title": "*\n@deprecated:\n Huan(202109): Wrapper types must not be used going forward.\n   https://cloud.google.com/apis/design/design_patterns#optional_primitive_fields"
        },
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageSendFileRequest": {
      "type": "object",
      "properties": {
        "conversationId": {
          "type": "string"
        },
        "fileBox": {
          "type": "string"
        }
      }
    },
    "puppetMessageSendFileResponse": {
      "type": "object",
      "properties": {
        "idStringValueDeprecated": {
          "type": "string",
          "title": "*\n@deprecated:\n Huan(202109): Wrapper types must not be used going forward.\n   https://cloud.google.com/apis/design/design_patterns#optional_primitive_fields"
        },
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageSendFileStreamRequest": {
      "type": "object",
      "properties": {
        "conversationId": {
          "type": "string",
          "title": "oneof payload {"
        },
        "fileBoxChunk": {
          "$ref": "#/definitions/puppetFileBoxChunk"
        }
      }
    },
    "puppetMessageSendFileStreamResponse": {
      "type": "object",
      "properties": {
        "idStringValueDeprecated": {
          "type": "string",
          "title": "*\n@deprecated:\n Huan(202109): Wrapper types must not be used going forward.\n   https://cloud.google.com/apis/design/design_patterns#optional_primitive_fields"
        },
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageSendLocationResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "title": "*\nHuan(202110): we will not use wrappers any more by following the Google Style Guide:\n If not using optional would add complexity or ambiguity, then use optional primitive fields,\n Wrapper types must not be used going forward.\n — Optional Primitive Fields (https://cloud.google.com/apis/design/design_patterns.md#optional-primitive-fields)"
        }
      }
    },
    "puppetMessageSendMiniProgramResponse": {
      "type": "object",
      "properties": {
        "idStringValueDeprecated": {
          "type": "string",
          "title": "*\n@deprecated:\n Huan(202109): Wrapper types must not be used going forward.\n   https://cloud.google.com/apis/design/design_patterns#optional_primitive_fields"
        },
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageSendTextResponse": {
      "type": "object",
      "properties": {
        "idStringValueDeprecated": {
          "type": "string",
          "title": "*\n@deprecated:\n Huan(202109): Wrapper types must not be used going forward.\n   https://cloud.google.com/apis/design/design_patterns#optional_primitive_fields"
        },
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageSendUrlResponse": {
      "type": "object",
      "properties": {
        "idStringValueDeprecated": {
          "type": "string",
          "title": "*\n@deprecated:\n Huan(202109): Wrapper types must not be used going forward.\n   https://cloud.google.com/apis/design/design_patterns#optional_primitive_fields"
        },
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageType": {
      "type": "string",
      "enum": [
        "MESSAGE_TYPE_UNSPECIFIED",
        "MESSAGE_TYPE_ATTACHMENT",
        "MESSAGE_TYPE_AUDIO",
        "MESSAGE_TYPE_CONTACT",
        "MESSAGE_TYPE_EMOTICON",
        "MESSAGE_TYPE_IMAGE",
        "MESSAGE_TYPE_TEXT",
        "MESSAGE_TYPE_VIDEO",
        "MESSAGE_TYPE_CHAT_HISTORY",
        "MESSAGE_TYPE_LOCATION",
        "MESSAGE_TYPE_MINI_PROGRAM",
        "MESSAGE_TYPE_TRANSFER",
        "MESSAGE_TYPE_RED_ENVELOPE",
        "MESSAGE_TYPE_RECALLED",
        "MESSAGE_TYPE_URL"
      ],
      "default": "MESSAGE_TYPE_UNSPECIFIED"
    },
    "puppetMessageUrlResponse": {
      "type": "object",
      "properties": {
        "urlLinkDeprecated": {
          "type": "string",
          "title": "*\nHuan(202110): We should use payload instead of JSON.stringify string\n The compatible code will be removed after Dec 31, 2022"
        },
        "urlLink": {
          "$ref": "#/definitions/puppetUrlLinkPayload"
        }
      }
    },
    "puppetMiniProgramPayload": {
      "type": "object",
      "properties": {
        "appid": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "pagePath": {
          "type": "string"
        },
        "iconUrl": {
          "type": "string"
        },
        "shareId": {
          "type": "string"
        },
        "thumbUrl": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "username": {
          "type": "string"
        },
        "thumbKey": {
          "type": "string"
        }
      }
    },
    "puppetPayloadType": {
      "type": "string",
      "enum": [
        "PAYLOAD_TYPE_UNSPECIFIED",
        "PAYLOAD_TYPE_MESSAGE",
        "PAYLOAD_TYPE_CONTACT",
        "PAYLOAD_TYPE_ROOM",
        "PAYLOAD_TYPE_ROOM_MEMBER",
        "PAYLOAD_TYPE_FRIENDSHIP"
      ],
      "default": "PAYLOAD_TYPE_UNSPECIFIED"
    },
    "puppetReferrer": {
      "type": "object",
      "properties": {
        "contactId": {
          "type": "string"
        },
        "roomId": {
          "type": "string"
        }
      },
      "title": "*\n\"Referrer\" and \"Referral\" refers to different things. \"Referrer\" is something or somebody who refers. \"Referral\" is the act of referring.\n - https://english.stackexchange.com/questions/33135/referrer-versus-referral-versus-referer"
    },
    "puppetRoomAddResponse": {
      "type": "object"
    },
    "puppetRoomAnnounceResponse": {
      "type": "object",
      "properties": {
        "textStringValueDeprecated": {
          "type": "string"
        },
        "text": {
          "type": "string"
        }
      }
    },
    "puppetRoomAvatarResponse": {
      "type": "object",
      "properties": {
        "fileBox": {
          "type": "string"
        }
      }
    },
    "puppetRoomCreateRequest": {
      "type": "object",
      "properties": {
        "contactIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "topic": {
          "type": "string"
        }
      }
    },
    "puppetRoomCreateResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetRoomDelResponse": {
      "type": "object"
    },
    "puppetRoomInvitationAcceptResponse": {
      "type": "object"
    },
    "puppetRoomInvitationPayloadResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "inviterId": {
          "type": "string"
        },
        "topic": {
          "type": "string"
        },
        "memberCount": {
          "type": "integer",
          "format": "int32"
        },
        "memberIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "timestampUint64Deprecated": {
          "type": "string",
          "format": "uint64",
          "title": "*\n@deprecated will be removed after Dec 31, 2022\n Huan(202109): use receive_time(10) instead"
        },
        "avatar": {
          "type": "string"
        },
        "invitation": {
          "type": "string"
        },
        "receiverId": {
          "type": "string"
        },
        "receiveTime": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "puppetRoomListResponse": {
      "type": "object",
      "properties": {
        "ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetRoomMemberListResponse": {
      "type": "object",
      "properties": {
        "memberIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetRoomMemberPayloadResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "roomAlias": {
          "type": "string"
        },
        "inviterId": {
          "type": "string"
        },
        "avatar": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "puppetRoomPayloadResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "topic": {
          "type": "string"
        },
        "avatar": {
          "type": "string"
        },
        "ownerId": {
          "type": "string"
        },
        "adminIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "memberIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetRoomQRCodeResponse": {
      "type": "object",
      "properties": {
        "qrcode": {
          "type": "string"
        }
      }
    },
    "puppetRoomQuitResponse": {
      "type": "object"
    },
    "puppetRoomTopicResponse": {
      "type": "object",
      "properties": {
        "topicStringValueDeprecated": {
          "type": "string"
        },
        "topic": {
          "type": "string"
        }
      }
    },
    "puppetStartResponse": {
      "type": "object"
    },
    "puppetStopResponse": {
      "type": "object"
    },
    "puppetTagContactAddResponse": {
      "type": "object"
    },
    "puppetTagContactDeleteResponse": {
      "type": "object"
    },
    "puppetTagContactListResponse": {
      "type": "object",
      "properties": {
        "ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetTagContactRemoveResponse": {
      "type": "object"
    },
    "puppetUploadRequest": {
      "type": "object",
      "properties": {
        "chunk": {
          "type": "string",
          "format": "byte"
        }
      }
    },
    "puppetUploadResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetUrlLinkPayload": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "thumbnailUrl": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "puppetVersionResponse": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string"
        }
      }
    },
    "rpcStatus": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32"
        },
        "message": {
          "type": "string"
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/protobufAny"
          }
        }
      }
    }
  }
}
