{
  "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.106",
    "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": {
    "/call/invite": {
      "post": {
        "operationId": "Puppet_CallInvite",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetCallInviteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetCallInviteRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/call/{callId}/accept": {
      "post": {
        "operationId": "Puppet_CallAccept",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetCallAcceptResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "callId",
            "description": "由 CallInvite 响应获得；协议端持有会话状态，凭此即可定位会话（无需 peer/media）",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PuppetCallAcceptBody"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/call/{callId}/add": {
      "post": {
        "operationId": "Puppet_CallAdd",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetCallAddResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "callId",
            "description": "由 CallInvite 响应获得",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PuppetCallAddBody"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/call/{callId}/cancel": {
      "post": {
        "operationId": "Puppet_CallCancel",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetCallCancelResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "callId",
            "description": "由 CallInvite 响应获得；协议端持有会话状态，凭此即可定位会话（无需 peer/media）",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PuppetCallCancelBody"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/call/{callId}/hangup": {
      "post": {
        "operationId": "Puppet_CallHangup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetCallHangupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "callId",
            "description": "由 CallInvite 响应获得；协议端持有会话状态，凭此即可定位会话（无需 peer/media）",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PuppetCallHangupBody"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/call/{callId}/media-endpoint": {
      "post": {
        "summary": "POST：签发可能在网关侧预分配媒体会话（有副作用），非幂等读取。",
        "operationId": "Puppet_CallMediaEndpoint",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetCallMediaEndpointResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "callId",
            "description": "由 CallInvite 响应获得",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PuppetCallMediaEndpointBody"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/call/{callId}/reject": {
      "post": {
        "operationId": "Puppet_CallReject",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetCallRejectResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "callId",
            "description": "由 CallInvite 响应获得；协议端持有会话状态，凭此即可定位会话（无需 peer/media）",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PuppetCallRejectBody"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/call/{id}": {
      "get": {
        "operationId": "Puppet_CallPayload",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetCallPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "call_id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/cancel_verify_code": {
      "post": {
        "operationId": "Puppet_CancelVerifyCode",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetCancelVerifyCodeResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contact/externalUserId": {
      "post": {
        "operationId": "Puppet_GetContactExternalUserId",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetGetContactExternalUserIdResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetGetContactExternalUserIdRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contact/room/{roomId}/alias/{alias}": {
      "put": {
        "operationId": "Puppet_ContactSelfRoomAlias",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetContactSelfRoomAliasResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "roomId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "alias",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/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/batch-payload": {
      "post": {
        "operationId": "Puppet_BatchContactPayload",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetBatchContactPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetBatchContactPayloadRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/self/aka/{aka}": {
      "put": {
        "operationId": "Puppet_ContactSelfAka",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetContactSelfAkaResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "aka",
            "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/realName/{realName}": {
      "put": {
        "operationId": "Puppet_ContactSelfRealName",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetContactSelfRealNameResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "realName",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "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": {
              "$ref": "#/definitions/PuppetContactCorporationRemarkBody"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/{contactId}/delete": {
      "put": {
        "operationId": "Puppet_ContactDelete",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetContactDeleteResponse"
            }
          },
          "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": {
              "$ref": "#/definitions/PuppetContactDeleteBody"
            }
          }
        ],
        "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": {
              "$ref": "#/definitions/PuppetContactDescriptionBody"
            }
          }
        ],
        "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": {
              "$ref": "#/definitions/PuppetContactPhoneBody"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/{contactId}/tag/tags": {
      "get": {
        "operationId": "Puppet_TagContactTagList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagContactTagListResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "contactId",
            "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": {
              "$ref": "#/definitions/PuppetContactAliasBody"
            }
          }
        ],
        "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",
            "description": "DEPRECATED, will be removed after Dec 31, 2022",
            "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",
              "PAYLOAD_TYPE_POST",
              "PAYLOAD_TYPE_TAG",
              "PAYLOAD_TYPE_TAG_GROUP",
              "PAYLOAD_TYPE_WXXD_PRODUCT",
              "PAYLOAD_TYPE_WXXD_ORDER",
              "PAYLOAD_TYPE_CALL"
            ],
            "pattern": "PAYLOAD_TYPE_CONTACT"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/contacts/{id}/payload-modify": {
      "put": {
        "operationId": "Puppet_ContactPayloadModify",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetContactPayloadModifyResponse"
            }
          },
          "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": {
              "$ref": "#/definitions/PuppetContactPayloadModifyBody"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversation/{conversationId}/read": {
      "put": {
        "summary": "*",
        "description": "Conversation",
        "operationId": "Puppet_ConversationRead",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetConversationReadResponse"
            }
          },
          "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": {
              "$ref": "#/definitions/PuppetConversationReadBody"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations/{conversationId}/channel": {
      "post": {
        "operationId": "Puppet_MessageSendChannel",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageSendChannelResponse"
            }
          },
          "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": {
              "$ref": "#/definitions/PuppetMessageSendChannelBody"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations/{conversationId}/channel-card": {
      "post": {
        "operationId": "Puppet_MessageSendChannelCard",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageSendChannelCardResponse"
            }
          },
          "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": {
              "$ref": "#/definitions/PuppetMessageSendChannelCardBody"
            }
          }
        ],
        "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": {
              "$ref": "#/definitions/PuppetMessageSendContactBody"
            }
          }
        ],
        "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",
            "description": "对话id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "messageId",
            "description": "@deprecated: use message_ids instead.\n\n要转发的消息id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "messageIds",
            "description": "要合并转发的消息id列表",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "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": {
              "$ref": "#/definitions/PuppetMessageSendLocationBody"
            }
          }
        ],
        "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",
            "description": "对话id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PuppetMessageSendMiniProgramBody"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations/{conversationId}/post": {
      "post": {
        "operationId": "Puppet_MessageSendPost",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageSendPostResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "conversationId",
            "description": "对话id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PuppetMessageSendPostBody"
            }
          }
        ],
        "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",
            "description": "对话id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PuppetMessageSendTextBody"
            }
          }
        ],
        "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",
            "description": "对话id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PuppetMessageSendUrlBody"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations:batchForward": {
      "post": {
        "operationId": "Puppet_MessageBatchForward",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchForwardResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchForwardRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations:batchSendChannel": {
      "post": {
        "operationId": "Puppet_MessageBatchSendChannel",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendChannelResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendChannelRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations:batchSendChannelCard": {
      "post": {
        "operationId": "Puppet_MessageBatchSendChannelCard",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendChannelCardResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendChannelCardRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations:batchSendContact": {
      "post": {
        "operationId": "Puppet_MessageBatchSendContact",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendContactResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendContactRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations:batchSendFile": {
      "post": {
        "operationId": "Puppet_MessageBatchSendFile",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendFileResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendFileRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations:batchSendLocation": {
      "post": {
        "operationId": "Puppet_MessageBatchSendLocation",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendLocationResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendLocationRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations:batchSendMiniProgram": {
      "post": {
        "operationId": "Puppet_MessageBatchSendMiniProgram",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendMiniProgramResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendMiniProgramRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations:batchSendText": {
      "post": {
        "operationId": "Puppet_MessageBatchSendText",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendTextResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendTextRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/conversations:batchSendUrl": {
      "post": {
        "operationId": "Puppet_MessageBatchSendUrl",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendUrlResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageBatchSendUrlRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/currentUser": {
      "get": {
        "operationId": "Puppet_CurrentUser",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetCurrentUserResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "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"
        ]
      }
    },
    "/enter_verify_code": {
      "post": {
        "operationId": "Puppet_EnterVerifyCode",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetEnterVerifyCodeResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "code",
            "in": "query",
            "required": false,
            "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"
            }
          }
        },
        "parameters": [
          {
            "name": "seq",
            "description": "the seq of the last event",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "accountId",
            "description": "the accountId of the last event",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "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": {
              "$ref": "#/definitions/PuppetFriendshipAddBody"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/friendship/search/handle/{weixin}": {
      "get": {
        "operationId": "Puppet_FriendshipSearchHandle",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetFriendshipSearchHandleResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "weixin",
            "description": "*\nHuan(202203): in gRPC, we can freely rename the field name as long as the number keep consistent.\n so we can just rename `weixin` to `handle` here.\n\n(Huan(20220329): use `weixin` for now, until we upgrade to v2.0\n the `wechaty-grpc@1.0.0` will use the latest v1.x automatically when running `npm install`\n   which will causing a breaking change.\n @link https://github.com/wechaty/getting-started/issues/254\n\nTODO: rename `weixin` to `handle` in v2.0.0",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "description": " - CONTACT_TYPE_UNSPECIFIED: 不明确\n - CONTACT_TYPE_PERSONAL: 个微联系人\n - CONTACT_TYPE_OFFICIAL: 公众号\n - CONTACT_TYPE_CORPORATION: 企微联系人\n - CONTACT_TYPE_APPLICATION: 应用联系人 例如小助手",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "CONTACT_TYPE_UNSPECIFIED",
              "CONTACT_TYPE_PERSONAL",
              "CONTACT_TYPE_OFFICIAL",
              "CONTACT_TYPE_CORPORATION",
              "CONTACT_TYPE_APPLICATION"
            ],
            "default": "CONTACT_TYPE_UNSPECIFIED"
          }
        ],
        "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"
          },
          {
            "name": "type",
            "description": " - CONTACT_TYPE_UNSPECIFIED: 不明确\n - CONTACT_TYPE_PERSONAL: 个微联系人\n - CONTACT_TYPE_OFFICIAL: 公众号\n - CONTACT_TYPE_CORPORATION: 企微联系人\n - CONTACT_TYPE_APPLICATION: 应用联系人 例如小助手",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "CONTACT_TYPE_UNSPECIFIED",
              "CONTACT_TYPE_PERSONAL",
              "CONTACT_TYPE_OFFICIAL",
              "CONTACT_TYPE_CORPORATION",
              "CONTACT_TYPE_APPLICATION"
            ],
            "default": "CONTACT_TYPE_UNSPECIFIED"
          }
        ],
        "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.\n\nDEPRECATED, will be removed after Dec 31, 2022",
            "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",
              "PAYLOAD_TYPE_POST",
              "PAYLOAD_TYPE_TAG",
              "PAYLOAD_TYPE_TAG_GROUP",
              "PAYLOAD_TYPE_WXXD_PRODUCT",
              "PAYLOAD_TYPE_WXXD_ORDER",
              "PAYLOAD_TYPE_CALL"
            ],
            "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/broadcast/create": {
      "post": {
        "operationId": "Puppet_CreateMessageBroadcast",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetCreateMessageBroadcastResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetCreateMessageBroadcastRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/message/broadcast/target": {
      "get": {
        "operationId": "Puppet_GetMessageBroadcastTarget",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetGetMessageBroadcastTargetResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Puppet"
        ]
      }
    },
    "/message/broadcast/{id}": {
      "get": {
        "operationId": "Puppet_GetMessageBroadcastStatus",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetGetMessageBroadcastStatusResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "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}/call-record": {
      "get": {
        "operationId": "Puppet_MessageCallRecord",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageCallRecordResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/message/{id}/channel": {
      "get": {
        "operationId": "Puppet_MessageChannel",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageChannelResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/message/{id}/channel-card": {
      "get": {
        "operationId": "Puppet_MessageChannelCard",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageChannelCardResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/message/{id}/chat-history": {
      "get": {
        "operationId": "Puppet_MessageChatHistory",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageChatHistoryResponse"
            }
          },
          "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",
              "PAYLOAD_TYPE_POST",
              "PAYLOAD_TYPE_TAG",
              "PAYLOAD_TYPE_TAG_GROUP",
              "PAYLOAD_TYPE_WXXD_PRODUCT",
              "PAYLOAD_TYPE_WXXD_ORDER",
              "PAYLOAD_TYPE_CALL"
            ],
            "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}/preview": {
      "get": {
        "operationId": "Puppet_MessagePreview",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessagePreviewResponse"
            }
          },
          "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",
            "description": "@deprecated: use message_ids instead.\n\n要转发的消息id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "conversationId",
            "description": "对话id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "messageIds",
            "description": "要合并转发的消息id列表",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/moment/coverage": {
      "post": {
        "operationId": "Puppet_momentCoverage",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMomentCoverageResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMomentCoverageRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/moment/publish": {
      "post": {
        "operationId": "Puppet_momentPublish",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMomentPublishResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMomentPublishRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/moment/signature": {
      "post": {
        "operationId": "Puppet_momentSignature",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMomentSignatureResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMomentSignatureRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/moment/visibleList": {
      "get": {
        "operationId": "Puppet_MomentVisibleList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMomentVisibleListResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Puppet"
        ]
      }
    },
    "/moment/{momentId}": {
      "delete": {
        "operationId": "Puppet_MomentUnpublish",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMomentUnpublishResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "momentId",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/post/like": {
      "post": {
        "operationId": "Puppet_postTap",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetPostTapResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetPostTapRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/post/payload": {
      "post": {
        "operationId": "Puppet_postPayload",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetPostPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetPostPayloadRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/post/sayable": {
      "post": {
        "operationId": "Puppet_postPayloadSayable",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetPostPayloadSayableResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetPostPayloadSayableRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/refresh_qr_code": {
      "post": {
        "operationId": "Puppet_RefreshQRCode",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRefreshQRCodeRequest"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "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\n\nDeprecated: will be removed after Dec 31, 2022",
            "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"
        ]
      }
    },
    "/room-invitations/{qrcode}/accept-by-qrcode": {
      "put": {
        "operationId": "Puppet_RoomInvitationAcceptByQRCode",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomInvitationAcceptByQRCodeResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "qrcode",
            "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/batch-payload": {
      "post": {
        "operationId": "Puppet_BatchRoomPayload",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetBatchRoomPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetBatchRoomPayloadRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id_1}": {
      "delete": {
        "operationId": "Puppet_RoomDismiss",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomDismissResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id_1",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "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/admins/{contactIds}": {
      "put": {
        "operationId": "Puppet_RoomAddAdmins",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomAdminsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "contactIds",
            "in": "path",
            "required": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "minItems": 1
          }
        ],
        "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",
            "description": "被邀请联系人id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "inviteOnly",
            "description": "不明确，目前没见到使用这个的地方",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "quoteIds",
            "description": "要附带的聊天消息 id 列表",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "contactIds",
            "description": "邀请的联系人id列表,优先用这个",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id}/addV2": {
      "put": {
        "operationId": "Puppet_RoomAddV2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomAddV2Response"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "contactIds",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "inviteOnly",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "quoteIds",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "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",
            "description": "DEPRECATED, will be removed after Dec 31, 2022",
            "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": {
              "$ref": "#/definitions/PuppetRoomAnnounceBody"
            }
          }
        ],
        "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}/del/admins/{contactIds}": {
      "delete": {
        "operationId": "Puppet_RoomDelAdmins",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomAdminsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "contactIds",
            "in": "path",
            "required": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "csv",
            "minItems": 1
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id}/delV2": {
      "delete": {
        "operationId": "Puppet_RoomDelV2",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomDelV2Response"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "contactIds",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "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",
              "PAYLOAD_TYPE_POST",
              "PAYLOAD_TYPE_TAG",
              "PAYLOAD_TYPE_TAG_GROUP",
              "PAYLOAD_TYPE_WXXD_PRODUCT",
              "PAYLOAD_TYPE_WXXD_ORDER",
              "PAYLOAD_TYPE_CALL"
            ],
            "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",
              "PAYLOAD_TYPE_POST",
              "PAYLOAD_TYPE_TAG",
              "PAYLOAD_TYPE_TAG_GROUP",
              "PAYLOAD_TYPE_WXXD_PRODUCT",
              "PAYLOAD_TYPE_WXXD_ORDER",
              "PAYLOAD_TYPE_CALL"
            ],
            "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",
            "description": "Deprecated, will be removed after bot updated",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "contactIds",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "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/batch-payload": {
      "post": {
        "operationId": "Puppet_BatchRoomMemberPayload",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetBatchRoomMemberPayloadResponse"
            }
          },
          "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": {
              "$ref": "#/definitions/PuppetBatchRoomMemberPayloadBody"
            }
          }
        ],
        "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}/permission": {
      "get": {
        "operationId": "Puppet_RoomPermission",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomPermissionResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "inviteConfirm",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "BOOL_UNSET",
              "BOOL_FALSE",
              "BOOL_TRUE"
            ],
            "default": "BOOL_UNSET"
          },
          {
            "name": "adminOnlyManage",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "BOOL_UNSET",
              "BOOL_FALSE",
              "BOOL_TRUE"
            ],
            "default": "BOOL_UNSET"
          },
          {
            "name": "adminOnlyAtAll",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "BOOL_UNSET",
              "BOOL_FALSE",
              "BOOL_TRUE"
            ],
            "default": "BOOL_UNSET"
          },
          {
            "name": "muteAll",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "BOOL_UNSET",
              "BOOL_FALSE",
              "BOOL_TRUE"
            ],
            "default": "BOOL_UNSET"
          },
          {
            "name": "forbidRoomTopicEdit",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "BOOL_UNSET",
              "BOOL_FALSE",
              "BOOL_TRUE"
            ],
            "default": "BOOL_UNSET"
          },
          {
            "name": "disableMemberMutualAdd",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "BOOL_UNSET",
              "BOOL_FALSE",
              "BOOL_TRUE"
            ],
            "default": "BOOL_UNSET"
          }
        ],
        "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}/remark": {
      "put": {
        "operationId": "Puppet_RoomRemark",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomRemarkResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "remark",
            "in": "query",
            "required": false,
            "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",
            "description": "DEPRECATED, will be removed after Dec 31, 2022",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "topic",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/rooms/{id}/transfer/{contactId}": {
      "post": {
        "operationId": "Puppet_RoomOwnerTransfer",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomOwnerTransferResponse"
            }
          },
          "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/{url}/parse-dynamic-qrcode": {
      "get": {
        "operationId": "Puppet_RoomParseDynamicQRCode",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetRoomParseDynamicQRCodeResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "url",
            "description": "群活码链接",
            "in": "path",
            "required": true,
            "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"
        ]
      }
    },
    "/tag/add": {
      "post": {
        "operationId": "Puppet_TagTagAdd",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagTagAddResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetTagTagAddRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/tag/addContactTag": {
      "post": {
        "operationId": "Puppet_TagContactTagAdd",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagContactTagAddResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetTagContactTagAddRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/tag/delete": {
      "post": {
        "operationId": "Puppet_TagTagDelete",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagTagDeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetTagTagDeleteRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/tag/groups/{tagGroupId}/tags": {
      "get": {
        "operationId": "Puppet_TagGroupTagList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagGroupTagListResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tagGroupId",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/tag/list": {
      "get": {
        "operationId": "Puppet_TagTagList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagTagListResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Puppet"
        ]
      }
    },
    "/tag/modify": {
      "post": {
        "operationId": "Puppet_TagTagModify",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagTagModifyResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetTagTagModifyRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/tag/payload": {
      "post": {
        "operationId": "Puppet_TagPayload",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetTagPayloadRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/tag/removeContactTag": {
      "post": {
        "operationId": "Puppet_TagContactTagRemove",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagContactTagRemoveResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetTagContactTagRemoveRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/tag/{tagId}/contacts": {
      "get": {
        "operationId": "Puppet_TagTagContactList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagTagContactListResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "tagId",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/tagGroup/add": {
      "post": {
        "operationId": "Puppet_TagGroupAdd",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagGroupAddResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetTagGroupAddRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/tagGroup/delete": {
      "post": {
        "operationId": "Puppet_TagGroupDelete",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagGroupDeleteResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetTagGroupDeleteRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/tagGroup/list": {
      "get": {
        "operationId": "Puppet_TagGroupList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagGroupListResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Puppet"
        ]
      }
    },
    "/tagGroup/payload": {
      "post": {
        "operationId": "Puppet_TagGroupPayload",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetTagGroupPayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetTagGroupPayloadRequest"
            }
          }
        ],
        "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/FriendshipSearchWeixin": {
      "post": {
        "summary": "*\nHuan(202203): https://github.com/wechaty/puppet/issues/181\n@deprecated use FriendshipSearchHandle instead, will be removed in v3.0",
        "operationId": "Puppet_FriendshipSearchWeixin",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetFriendshipSearchHandleResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "*\nHuan(202003): we just rename the payload message because gRPC only care about the message structure\n (and as long as we keep consistent with the old structure).\n\n @link https://github.com/wechaty/grpc/pull/173\n\nRename:\n 1. `FriendshipSearchWeixinRequest`    -> `FriendshipSearchHandleRequest`\n 2. `FriendshipSearchWeixinReqsponse`  -> `FriendshipSearchHandleResponse`",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetFriendshipSearchHandleRequest"
            }
          }
        ],
        "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/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/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/MessageVoice": {
      "post": {
        "operationId": "Puppet_MessageVoice",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageVoiceResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageVoiceRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/wechaty.Puppet/MessageVoiceText": {
      "post": {
        "operationId": "Puppet_MessageVoiceText",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetMessageVoiceTextResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetMessageVoiceTextRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/wecom/corpMessageInterceptionStrategyList": {
      "get": {
        "operationId": "Puppet_GetCorpMessageInterceptionStrategies",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetGetCorpMessageInterceptionStrategiesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Puppet"
        ]
      }
    },
    "/wecom/roomAntiSpamStrategy/apply": {
      "post": {
        "operationId": "Puppet_ApplyRoomAntiSpamStrategy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetApplyRoomAntiSpamStrategyResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/puppetApplyRoomAntiSpamStrategyRequest"
            }
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/wecom/roomAntiSpamStrategy/{strategyId}/rooms": {
      "get": {
        "operationId": "Puppet_GetRoomAntiSpamStrategyEffectRoomList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetGetRoomAntiSpamStrategyEffectRoomListResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "strategyId",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Puppet"
        ]
      }
    },
    "/wecom/roomAntiSpamStrategyList": {
      "get": {
        "operationId": "Puppet_GetRoomAntiSpamStrategyList",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/puppetGetRoomAntiSpamStrategyListResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Puppet"
        ]
      }
    }
  },
  "definitions": {
    "PuppetBatchRoomMemberPayloadBody": {
      "type": "object",
      "properties": {
        "memberIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "PuppetCallAcceptBody": {
      "type": "object",
      "title": "被叫接听来电。"
    },
    "PuppetCallAddBody": {
      "type": "object",
      "properties": {
        "contactIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "新增受邀方 contactId 列表（不含已在通话中的参与者）"
        }
      },
      "title": "通话中途拉人（errors-only 契约）：\n- 新参与者的应答回执（响铃/接听/拒接）一律经 EVENT_TYPE_CALL 事件上行，本响应恒为空；\n- 拉人特有的失败（通话不存在/已结束、人数上限等）经 gRPC status error 返回。"
    },
    "PuppetCallCancelBody": {
      "type": "object",
      "title": "接通前主叫取消呼叫。"
    },
    "PuppetCallHangupBody": {
      "type": "object",
      "properties": {
        "reason": {
          "type": "string",
          "title": "可空，空串表示无"
        }
      },
      "title": "接通后任一方挂断。"
    },
    "PuppetCallMediaEndpointBody": {
      "type": "object",
      "title": "媒体入场券：按 call_id 向协议端换取媒体网关协商入口。\n签发可能在网关侧预分配媒体会话（有副作用），故服务端不得缓存响应、客户端按需拉取。"
    },
    "PuppetCallRejectBody": {
      "type": "object",
      "properties": {
        "reason": {
          "type": "string",
          "title": "可空，空串表示无"
        }
      },
      "title": "被叫拒接来电。"
    },
    "PuppetContactAliasBody": {
      "type": "object",
      "properties": {
        "aliasStringValueDeprecated": {
          "type": "string",
          "description": "DEPRECATED, will be removed after Dec 31, 2022",
          "title": "nullable"
        },
        "alias": {
          "type": "string"
        }
      }
    },
    "PuppetContactCorporationRemarkBody": {
      "type": "object",
      "properties": {
        "corporationRemarkStringValueDeprecated": {
          "type": "string",
          "title": "DEPRECATED, will be removed after Dec 31, 2022"
        },
        "corporationRemark": {
          "type": "string"
        }
      }
    },
    "PuppetContactDeleteBody": {
      "type": "object"
    },
    "PuppetContactDescriptionBody": {
      "type": "object",
      "properties": {
        "descriptionStringValueDeprecated": {
          "type": "string",
          "title": "DEPRECATED, will be removed after Dec 31, 2022"
        },
        "description": {
          "type": "string"
        }
      }
    },
    "PuppetContactPayloadModifyBody": {
      "type": "object",
      "properties": {
        "gender": {
          "$ref": "#/definitions/puppetContactGender",
          "title": "性别"
        },
        "type": {
          "$ref": "#/definitions/puppetContactType",
          "title": "类型"
        },
        "name": {
          "type": "string",
          "title": "姓名"
        },
        "avatar": {
          "type": "string",
          "title": "头像"
        },
        "address": {
          "type": "string",
          "title": "地址"
        },
        "alias": {
          "type": "string",
          "title": "别名，即备注"
        },
        "city": {
          "type": "string",
          "title": "城市"
        },
        "friend": {
          "type": "boolean",
          "title": "是否为好友"
        },
        "province": {
          "type": "string",
          "title": "省份"
        },
        "signature": {
          "type": "string",
          "title": "签名"
        },
        "star": {
          "type": "boolean",
          "title": "是否为特别好友"
        },
        "weixin": {
          "type": "string",
          "title": "IM专属id，在企微环境中特指weixinId"
        },
        "corporation": {
          "type": "string",
          "title": "企业"
        },
        "title": {
          "type": "string",
          "title": "头衔"
        },
        "description": {
          "type": "string",
          "title": "描述"
        },
        "coworker": {
          "type": "boolean",
          "title": "是否为同事"
        },
        "phones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "电话号码，企微中最多5个"
        },
        "additionalInfo": {
          "type": "string",
          "title": "额外信息，是由JS对象stringify得到的字符串，目前支持的内容包含addContactTime、corpId等。"
        },
        "tagIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "标签（的id）"
        },
        "clearPhones": {
          "type": "boolean",
          "description": "*\n The protobuf encoding doesn't distinguish between these two cases. (undefined vs [])\n Since protobuf is language-agnostic,\n it doesn't understand the conceptual nuance of \"undefined\" versus \"[]\" of Javascript."
        },
        "clearTagIds": {
          "type": "boolean"
        }
      }
    },
    "PuppetContactPhoneBody": {
      "type": "object",
      "properties": {
        "phones": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "PuppetConversationReadBody": {
      "type": "object",
      "properties": {
        "hasRead": {
          "type": "boolean"
        }
      }
    },
    "PuppetFriendshipAddBody": {
      "type": "object",
      "properties": {
        "hello": {
          "type": "string"
        },
        "sourceRoomIdStringValueDeprecated": {
          "type": "string",
          "title": "Deprecated: will be removed after Dec 31, 2022"
        },
        "sourceContactIdStringValueDeprecated": {
          "type": "string",
          "title": "Deprecated: will be removed after Dec 31, 2022"
        },
        "referrer": {
          "$ref": "#/definitions/puppetReferrer"
        }
      }
    },
    "PuppetMessageSendChannelBody": {
      "type": "object",
      "properties": {
        "channel": {
          "$ref": "#/definitions/puppetChannelPayload"
        }
      }
    },
    "PuppetMessageSendChannelCardBody": {
      "type": "object",
      "properties": {
        "channelCard": {
          "$ref": "#/definitions/puppetChannelCardPayload"
        }
      }
    },
    "PuppetMessageSendContactBody": {
      "type": "object",
      "properties": {
        "contactId": {
          "type": "string"
        }
      }
    },
    "PuppetMessageSendLocationBody": {
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/definitions/puppetLocationPayload"
        }
      }
    },
    "PuppetMessageSendMiniProgramBody": {
      "type": "object",
      "properties": {
        "miniProgramDeprecated": {
          "type": "string",
          "description": "deprecated after Sep 31, 2021, remove compatible code after Dec 31, 2022",
          "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",
          "title": "小程序payload"
        }
      }
    },
    "PuppetMessageSendPostBody": {
      "type": "object",
      "properties": {
        "content": {
          "$ref": "#/definitions/puppetPostPayloadClient",
          "title": "发送的post内容"
        }
      }
    },
    "PuppetMessageSendTextBody": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string",
          "title": "文本内容"
        },
        "mentionalIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "@人id列表"
        },
        "quoteId": {
          "type": "string",
          "title": "引用消息的id"
        }
      },
      "title": "发文本消息"
    },
    "PuppetMessageSendUrlBody": {
      "type": "object",
      "properties": {
        "urlLinkDeprecated": {
          "type": "string",
          "description": "deprecated after Sep 31, 2021, remove compatible code after Dec 31, 2022",
          "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",
          "title": "链接payload"
        }
      }
    },
    "PuppetRoomAnnounceBody": {
      "type": "object",
      "properties": {
        "textStringValueDeprecated": {
          "type": "string",
          "title": "DEPRECATED, will be removed after Dec 31, 2022"
        },
        "text": {
          "type": "string"
        }
      },
      "title": "群公告"
    },
    "protobufAny": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "puppetApplyRoomAntiSpamStrategyRequest": {
      "type": "object",
      "properties": {
        "strategyId": {
          "type": "string"
        },
        "roomIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "active": {
          "type": "boolean"
        }
      }
    },
    "puppetApplyRoomAntiSpamStrategyResponse": {
      "type": "object"
    },
    "puppetBatchContactPayloadRequest": {
      "type": "object",
      "properties": {
        "ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetBatchContactPayloadResponse": {
      "type": "object",
      "properties": {
        "contactPayloads": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetContactPayloadResponse"
          }
        }
      }
    },
    "puppetBatchRoomMemberPayloadResponse": {
      "type": "object",
      "properties": {
        "memberPayloads": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetRoomMemberPayloadResponse"
          }
        }
      }
    },
    "puppetBatchRoomPayloadRequest": {
      "type": "object",
      "properties": {
        "ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetBatchRoomPayloadResponse": {
      "type": "object",
      "properties": {
        "roomPayloads": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetRoomPayloadResponse"
          }
        }
      }
    },
    "puppetBroadcastStatus": {
      "type": "string",
      "enum": [
        "BROADCAST_STATUS_UNKNOWN",
        "BROADCAST_STATUS_SENDING",
        "BROADCAST_STATUS_SENT"
      ],
      "default": "BROADCAST_STATUS_UNKNOWN"
    },
    "puppetBroadcastTarget": {
      "type": "object",
      "properties": {
        "contactId": {
          "type": "string"
        },
        "roomId": {
          "type": "string"
        },
        "status": {
          "$ref": "#/definitions/puppetBroadcastTargetStatus"
        }
      }
    },
    "puppetBroadcastTargetStatus": {
      "type": "string",
      "enum": [
        "BROADCAST_TARGET_STATUS_UNSENT",
        "BROADCAST_TARGET_STATUS_SENT",
        "BROADCAST_TARGET_STATUS_NOT_FRIEND",
        "BROADCAST_TARGET_STATUS_OCCUPIED"
      ],
      "default": "BROADCAST_TARGET_STATUS_UNSENT"
    },
    "puppetCallAcceptResponse": {
      "type": "object"
    },
    "puppetCallAddResponse": {
      "type": "object"
    },
    "puppetCallCancelResponse": {
      "type": "object"
    },
    "puppetCallHangupResponse": {
      "type": "object"
    },
    "puppetCallInviteRequest": {
      "type": "object",
      "properties": {
        "contactIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "受邀方 contactId 列表（不含发起方）：单元素 = 1v1 通话，多元素 = 群通话；\n无论几人，一通通话只铸造一个 call_id。"
        },
        "media": {
          "$ref": "#/definitions/puppetCallType",
          "title": "必填：媒体类型（VOICE/VIDEO），复用既有 CallType；零值 CALL_TYPE_UNKNOWN 会被 server 拒绝"
        }
      },
      "title": "发起呼叫请求：callId 不由主叫携带，而是由 puppet 实现侧生成并经 CallInviteResponse 返回。"
    },
    "puppetCallInviteResponse": {
      "type": "object",
      "properties": {
        "callId": {
          "type": "string"
        }
      },
      "title": "CallInvite 响应：\n- call_id 由 puppet 实现侧（协议端）生成并经本响应返回，全链路以此关联控制面与媒体旁路；\n- 上行 EVENT_TYPE_CALL 事件可能先于本响应到达，客户端须容忍乱序；\n- 后续控制 RPC（CallAccept/CallReject/CallCancel/CallHangup）凭此 call_id 引用本通通话。"
    },
    "puppetCallMediaEndpointResponse": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "title": "媒体网关协商入口（非媒体流地址本身）"
        },
        "token": {
          "type": "string",
          "title": "短时效凭证，绑定 call_id + 本端身份"
        },
        "expiresAt": {
          "type": "string",
          "format": "date-time",
          "title": "凭证过期时刻；不设置 = 不过期；过期后重新拉取本 RPC"
        },
        "protocol": {
          "type": "string",
          "title": "入口方言（如 whip / livekit / 自定义），由媒体 SDK 消费"
        }
      }
    },
    "puppetCallPayloadResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "starter": {
          "type": "string",
          "title": "发起方 contactId；空串 = 协议端不可知（如中途被拉入者视角）"
        },
        "participants": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "当前全量参与者名册"
        },
        "media": {
          "$ref": "#/definitions/puppetCallType",
          "title": "当前媒体类型（语音↔视频切换经 dirty 反映）"
        },
        "startTime": {
          "type": "string",
          "format": "date-time",
          "title": "通话发起时刻；接通时刻不在此（等于上行 Accept 事件的 timestamp）"
        },
        "endTime": {
          "type": "string",
          "format": "date-time",
          "title": "通话结束时刻；未设置 = 通话进行中"
        }
      }
    },
    "puppetCallRecordPayload": {
      "type": "object",
      "properties": {
        "starterId": {
          "type": "string"
        },
        "participantIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "length": {
          "type": "integer",
          "format": "int32"
        },
        "type": {
          "$ref": "#/definitions/puppetCallType"
        },
        "status": {
          "$ref": "#/definitions/puppetCallStatus"
        },
        "callId": {
          "type": "string",
          "title": "关联控制面 call_id，可空字符串表示历史/未知"
        }
      }
    },
    "puppetCallRejectResponse": {
      "type": "object"
    },
    "puppetCallStatus": {
      "type": "string",
      "enum": [
        "CALL_STATUS_UNKNOWN",
        "CALL_STATUS_CANCELED",
        "CALL_STATUS_REJECTED",
        "CALL_STATUS_MISSED",
        "CALL_STATUS_ONGOING",
        "CALL_STATUS_ENDED"
      ],
      "default": "CALL_STATUS_UNKNOWN",
      "description": "- CALL_STATUS_UNKNOWN: 不明确\n - CALL_STATUS_CANCELED: 自己取消\n - CALL_STATUS_REJECTED: 对方拒接\n - CALL_STATUS_MISSED: 未接\n - CALL_STATUS_ONGOING: 正在通话\n - CALL_STATUS_ENDED: 已结束",
      "title": "类型枚举"
    },
    "puppetCallType": {
      "type": "string",
      "enum": [
        "CALL_TYPE_UNKNOWN",
        "CALL_TYPE_VOICE",
        "CALL_TYPE_VIDEO"
      ],
      "default": "CALL_TYPE_UNKNOWN",
      "title": "- CALL_TYPE_UNKNOWN: 不明确\n - CALL_TYPE_VOICE: 语音\n - CALL_TYPE_VIDEO: 视频"
    },
    "puppetCancelVerifyCodeResponse": {
      "type": "object"
    },
    "puppetChannelCardPayload": {
      "type": "object",
      "properties": {
        "avatar": {
          "type": "string",
          "title": "头像"
        },
        "extras": {
          "type": "string",
          "title": "额外信息"
        },
        "nickname": {
          "type": "string",
          "title": "用户名"
        },
        "url": {
          "type": "string",
          "title": "视频号地址"
        },
        "authIconUrl": {
          "type": "string",
          "title": "认证图标URL"
        },
        "authJob": {
          "type": "string",
          "title": "认证职业"
        }
      }
    },
    "puppetChannelFeedType": {
      "type": "string",
      "enum": [
        "CHANNEL_FEED_TYPE_UNKNOWN",
        "CHANNEL_FEED_TYPE_PHOTO",
        "CHANNEL_FEED_TYPE_VIDEO",
        "CHANNEL_FEED_TYPE_LIVE"
      ],
      "default": "CHANNEL_FEED_TYPE_UNKNOWN"
    },
    "puppetChannelMedia": {
      "type": "object",
      "properties": {
        "mediaType": {
          "type": "integer",
          "format": "int32",
          "title": "资源类型 2:图片 4:视频"
        },
        "url": {
          "type": "string",
          "title": "原始媒体流地址"
        },
        "thumbUrl": {
          "type": "string",
          "title": "视频第一帧缩略图地址"
        },
        "fullCoverUrl": {
          "type": "string",
          "title": "封面缩略图地址"
        },
        "coverUrl": {
          "type": "string",
          "title": "封面地址"
        },
        "width": {
          "type": "integer",
          "format": "int32",
          "title": "缩略图宽度，默认 1080"
        },
        "height": {
          "type": "integer",
          "format": "int32",
          "title": "缩略图高度，默认 1920"
        },
        "videoPlayDuration": {
          "type": "integer",
          "format": "int32",
          "title": "视频播放时长（秒）"
        }
      },
      "title": "视频号媒体资源，对应接收视频号 finderFeed.mediaList.media"
    },
    "puppetChannelPayload": {
      "type": "object",
      "properties": {
        "avatar": {
          "type": "string",
          "title": "头像"
        },
        "coverUrl": {
          "type": "string",
          "title": "封面地址"
        },
        "desc": {
          "type": "string",
          "title": "描述"
        },
        "extras": {
          "type": "string",
          "title": "额外信息，暂不明确含义，但传错会导致无法发出（红色感叹号）。应根据收到的视频号的extras字段填入。"
        },
        "feedType": {
          "$ref": "#/definitions/puppetChannelFeedType",
          "title": "暂不明确含义，目前请固定传4"
        },
        "nickname": {
          "type": "string",
          "title": "用户名"
        },
        "thumbUrl": {
          "type": "string",
          "title": "缩略图地址"
        },
        "url": {
          "type": "string",
          "title": "视频号地址"
        },
        "objectId": {
          "type": "string",
          "title": "视频号直播专属"
        },
        "objectNonceId": {
          "type": "string"
        },
        "username": {
          "type": "string",
          "description": "视频号 finder userName",
          "title": "个微（phoenix）转发视频号所需补充字段，来自接收视频号的 appmsg.finderFeed"
        },
        "authIconType": {
          "type": "integer",
          "format": "int32",
          "title": "认证类型"
        },
        "authIconUrl": {
          "type": "string",
          "title": "授权图标地址"
        },
        "fromUserName": {
          "type": "string",
          "title": "视频号转发自好友 userName"
        },
        "mediaList": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetChannelMedia"
          },
          "title": "媒体资源列表（图片类视频号可多条）"
        }
      }
    },
    "puppetChatHistoryContent": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/puppetChatHistoryContentType"
        },
        "text": {
          "type": "string"
        },
        "fileBox": {
          "type": "string"
        },
        "location": {
          "$ref": "#/definitions/puppetLocationPayload"
        },
        "urlLink": {
          "$ref": "#/definitions/puppetUrlLinkPayload"
        },
        "miniProgram": {
          "$ref": "#/definitions/puppetMiniProgramPayload"
        },
        "channel": {
          "$ref": "#/definitions/puppetChannelPayload"
        },
        "chatHistory": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetChatHistoryPayload"
          }
        },
        "channelCard": {
          "$ref": "#/definitions/puppetChannelCardPayload"
        }
      }
    },
    "puppetChatHistoryContentType": {
      "type": "string",
      "enum": [
        "TEXT",
        "FILE",
        "LOCATION",
        "URL",
        "MINI_PROGRAM",
        "CHANNEL",
        "CHAT_HISTORY",
        "CHANNEL_CARD"
      ],
      "default": "TEXT"
    },
    "puppetChatHistoryPayload": {
      "type": "object",
      "properties": {
        "type": {
          "type": "integer",
          "format": "int32"
        },
        "avatar": {
          "type": "string"
        },
        "senderName": {
          "type": "string"
        },
        "corpName": {
          "type": "string"
        },
        "time": {
          "type": "integer",
          "format": "int32"
        },
        "title": {
          "type": "string"
        },
        "message": {
          "$ref": "#/definitions/puppetChatHistoryContent"
        }
      }
    },
    "puppetContactAliasResponse": {
      "type": "object",
      "properties": {
        "aliasStringValueDeprecated": {
          "type": "string",
          "title": "DEPRECATED, will be removed after Dec 31, 2022"
        },
        "alias": {
          "type": "string"
        }
      }
    },
    "puppetContactAvatarResponse": {
      "type": "object",
      "properties": {
        "fileboxStringValueDeprecated": {
          "type": "string",
          "title": "DEPRECATED, will be removed after Dec 31, 2022"
        },
        "fileBox": {
          "type": "string"
        }
      }
    },
    "puppetContactCorporationRemarkResponse": {
      "type": "object"
    },
    "puppetContactDeleteResponse": {
      "type": "object"
    },
    "puppetContactDescriptionResponse": {
      "type": "object"
    },
    "puppetContactExternalUserIdPair": {
      "type": "object",
      "properties": {
        "contactId": {
          "type": "string"
        },
        "externalUserId": {
          "type": "string"
        }
      }
    },
    "puppetContactGender": {
      "type": "string",
      "enum": [
        "CONTACT_GENDER_UNSPECIFIED",
        "CONTACT_GENDER_MALE",
        "CONTACT_GENDER_FEMALE"
      ],
      "default": "CONTACT_GENDER_UNSPECIFIED",
      "description": "- CONTACT_GENDER_UNSPECIFIED: 不明确\n - CONTACT_GENDER_MALE: 男\n - CONTACT_GENDER_FEMALE: 女",
      "title": "性别枚举"
    },
    "puppetContactListResponse": {
      "type": "object",
      "properties": {
        "ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetContactPayloadModifyResponse": {
      "type": "object"
    },
    "puppetContactPayloadResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "gender": {
          "$ref": "#/definitions/puppetContactGender",
          "title": "性别"
        },
        "type": {
          "$ref": "#/definitions/puppetContactType",
          "title": "类型"
        },
        "name": {
          "type": "string",
          "title": "姓名"
        },
        "avatar": {
          "type": "string",
          "title": "头像"
        },
        "address": {
          "type": "string",
          "title": "地址"
        },
        "alias": {
          "type": "string",
          "title": "别名，即备注"
        },
        "city": {
          "type": "string",
          "title": "城市"
        },
        "friend": {
          "type": "boolean",
          "title": "是否为好友"
        },
        "province": {
          "type": "string",
          "title": "省份"
        },
        "signature": {
          "type": "string",
          "title": "签名"
        },
        "star": {
          "type": "boolean",
          "title": "是否为特别好友"
        },
        "weixin": {
          "type": "string",
          "description": "*\nHuan(202203): in gRPC, we can freely rename the field name as long as the number keep consistent.\n so we can just rename `weixin` to `handle` here.\n\n(Huan(20220329): use `weixin` for now, until we upgrade to v2.0\n the `wechaty-grpc@1.0.0` will use the latest v1.x automatically when running `npm install`\n   which will causing a breaking change.\n @link https://github.com/wechaty/getting-started/issues/254\n\nTODO: rename `weixin` to `handle` in v2.0.0\n\nIM专属id，在企微环境中特指weixinId"
        },
        "corporation": {
          "type": "string",
          "title": "企业"
        },
        "title": {
          "type": "string",
          "title": "头衔"
        },
        "description": {
          "type": "string",
          "title": "描述"
        },
        "coworker": {
          "type": "boolean",
          "title": "是否为同事"
        },
        "phones": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "电话号码，企微中最多5个"
        },
        "additionalInfo": {
          "type": "string",
          "title": "额外信息，是由JS对象stringify得到的字符串，目前支持的内容包含addContactTime、corpId等。"
        },
        "tagIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "标签（的id）"
        },
        "realName": {
          "type": "string"
        },
        "aka": {
          "type": "string"
        }
      }
    },
    "puppetContactPhoneResponse": {
      "type": "object",
      "properties": {
        "phones": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetContactSelfAkaResponse": {
      "type": "object"
    },
    "puppetContactSelfNameResponse": {
      "type": "object"
    },
    "puppetContactSelfQRCodeResponse": {
      "type": "object",
      "properties": {
        "qrcode": {
          "type": "string"
        }
      }
    },
    "puppetContactSelfRealNameResponse": {
      "type": "object"
    },
    "puppetContactSelfRoomAliasResponse": {
      "type": "object"
    },
    "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",
        "CONTACT_TYPE_APPLICATION"
      ],
      "default": "CONTACT_TYPE_UNSPECIFIED",
      "description": "- CONTACT_TYPE_UNSPECIFIED: 不明确\n - CONTACT_TYPE_PERSONAL: 个微联系人\n - CONTACT_TYPE_OFFICIAL: 公众号\n - CONTACT_TYPE_CORPORATION: 企微联系人\n - CONTACT_TYPE_APPLICATION: 应用联系人 例如小助手",
      "title": "类型枚举"
    },
    "puppetConversationReadResponse": {
      "type": "object",
      "properties": {
        "hasRead": {
          "type": "boolean"
        }
      }
    },
    "puppetCorpMessageInterceptionStrategy": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "words": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "phoneNumber": {
          "type": "boolean"
        },
        "email": {
          "type": "boolean"
        },
        "redPacket": {
          "type": "boolean"
        },
        "type": {
          "$ref": "#/definitions/puppetCorpMessageInterceptionType"
        }
      }
    },
    "puppetCorpMessageInterceptionType": {
      "type": "string",
      "enum": [
        "Interception_Type_Hard",
        "Interception_Type_Soft"
      ],
      "default": "Interception_Type_Hard"
    },
    "puppetCreateMessageBroadcastRequest": {
      "type": "object",
      "properties": {
        "targetIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "content": {
          "$ref": "#/definitions/puppetPostPayloadClient"
        }
      }
    },
    "puppetCreateMessageBroadcastResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetCurrentUserResponse": {
      "type": "object",
      "properties": {
        "userId": {
          "type": "string"
        }
      }
    },
    "puppetDingRequest": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string"
        }
      }
    },
    "puppetDingResponse": {
      "type": "object",
      "title": "*\n Ding has no return value\n  Puppet should emit a `ding` event when it receives a `ding()` call"
    },
    "puppetDirtyPayloadResponse": {
      "type": "object"
    },
    "puppetDownloadResponse": {
      "type": "object",
      "properties": {
        "chunk": {
          "type": "string",
          "format": "byte"
        }
      }
    },
    "puppetEnterVerifyCodeResponse": {
      "type": "object"
    },
    "puppetEventResponse": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/puppetEventType"
        },
        "payload": {
          "type": "string",
          "description": "JSON.stringify({ ... })",
          "title": "TODO: Huan(202002) consider to use a PB Map?"
        },
        "seq": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "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",
        "EVENT_TYPE_TAG",
        "EVENT_TYPE_TAG_GROUP",
        "EVENT_TYPE_POST_COMMENT",
        "EVENT_TYPE_POST_TAP",
        "EVENT_TYPE_ROOM_ANNOUNCE",
        "EVENT_TYPE_VERIFY_CODE",
        "EVENT_TYPE_VERIFY_SLIDE",
        "EVENT_TYPE_CALL"
      ],
      "default": "EVENT_TYPE_UNSPECIFIED"
    },
    "puppetFriendshipAcceptResponse": {
      "type": "object"
    },
    "puppetFriendshipAddResponse": {
      "type": "object"
    },
    "puppetFriendshipPayloadResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "contactId": {
          "type": "string",
          "title": "加好友的联系人id"
        },
        "hello": {
          "type": "string",
          "title": "加好友的打招呼消息"
        },
        "type": {
          "$ref": "#/definitions/puppetFriendshipType",
          "title": "好友事件类型"
        },
        "stranger": {
          "type": "string",
          "title": "不明确含义，wxwork中未使用"
        },
        "ticket": {
          "type": "string",
          "title": "个微遗留字段，wxwork中会传corp_id"
        },
        "scene": {
          "$ref": "#/definitions/puppetFriendshipSceneType",
          "title": "加好友的场景（例如通过名片添加、通过群添加等），wxwork未使用"
        }
      }
    },
    "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",
      "title": "事件场景 wxwork中未使用"
    },
    "puppetFriendshipSearchHandleRequest": {
      "type": "object",
      "properties": {
        "weixin": {
          "type": "string",
          "description": "*\nHuan(202203): in gRPC, we can freely rename the field name as long as the number keep consistent.\n so we can just rename `weixin` to `handle` here.\n\n(Huan(20220329): use `weixin` for now, until we upgrade to v2.0\n the `wechaty-grpc@1.0.0` will use the latest v1.x automatically when running `npm install`\n   which will causing a breaking change.\n @link https://github.com/wechaty/getting-started/issues/254\n\nTODO: rename `weixin` to `handle` in v2.0.0"
        },
        "type": {
          "$ref": "#/definitions/puppetContactType"
        }
      },
      "description": "*\nHuan(202003): we just rename the payload message because gRPC only care about the message structure\n (and as long as we keep consistent with the old structure).\n\n @link https://github.com/wechaty/grpc/pull/173\n\nRename:\n 1. `FriendshipSearchWeixinRequest`    -> `FriendshipSearchHandleRequest`\n 2. `FriendshipSearchWeixinReqsponse`  -> `FriendshipSearchHandleResponse`"
    },
    "puppetFriendshipSearchHandleResponse": {
      "type": "object",
      "properties": {
        "contactIdStringValueDeprecated": {
          "type": "string",
          "description": "DEPRECATED, will be removed after Dec 31, 2022",
          "title": "nullable"
        },
        "contactId": {
          "type": "string"
        }
      }
    },
    "puppetFriendshipSearchPhoneResponse": {
      "type": "object",
      "properties": {
        "contactIdStringValueDeprecated": {
          "type": "string",
          "description": "DEPRECATED, will be removed after Dec 31, 2022",
          "title": "nullable"
        },
        "contactId": {
          "type": "string"
        }
      }
    },
    "puppetFriendshipType": {
      "type": "string",
      "enum": [
        "FRIENDSHIP_TYPE_UNSPECIFIED",
        "FRIENDSHIP_TYPE_CONFIRM",
        "FRIENDSHIP_TYPE_RECEIVE",
        "FRIENDSHIP_TYPE_VERIFY",
        "FRIENDSHIP_TYPE_DELETE",
        "FRIENDSHIP_TYPE_REMOVED"
      ],
      "default": "FRIENDSHIP_TYPE_UNSPECIFIED",
      "description": "- FRIENDSHIP_TYPE_UNSPECIFIED: 不明确\n - FRIENDSHIP_TYPE_CONFIRM: 确认——双方互加后触发\n - FRIENDSHIP_TYPE_RECEIVE: 收到——收到好友请求后触发\n - FRIENDSHIP_TYPE_VERIFY: 验证——主动加他人为好友时触发，wxwork里暂无此事件\n - FRIENDSHIP_TYPE_DELETE: 删除——主动删除好友时触发\n - FRIENDSHIP_TYPE_REMOVED: 被删除——被他人删除好友时触发",
      "title": "事件类型"
    },
    "puppetGetContactExternalUserIdRequest": {
      "type": "object",
      "properties": {
        "contactIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "serviceProviderId": {
          "type": "string"
        }
      }
    },
    "puppetGetContactExternalUserIdResponse": {
      "type": "object",
      "properties": {
        "contactExternalUserIdPairs": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetContactExternalUserIdPair"
          }
        }
      }
    },
    "puppetGetCorpMessageInterceptionStrategiesResponse": {
      "type": "object",
      "properties": {
        "strategies": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetCorpMessageInterceptionStrategy"
          }
        }
      }
    },
    "puppetGetMessageBroadcastStatusResponse": {
      "type": "object",
      "properties": {
        "status": {
          "$ref": "#/definitions/puppetBroadcastStatus"
        },
        "detail": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetBroadcastTarget"
          }
        }
      }
    },
    "puppetGetMessageBroadcastTargetResponse": {
      "type": "object",
      "properties": {
        "contactIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "roomIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetGetRoomAntiSpamStrategyEffectRoomListResponse": {
      "type": "object",
      "properties": {
        "roomIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetGetRoomAntiSpamStrategyListResponse": {
      "type": "object",
      "properties": {
        "strategies": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetRoomAntiSpamStrategy"
          }
        }
      }
    },
    "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",
          "title": "精确度，默认为15"
        },
        "address": {
          "type": "string",
          "title": "地址，xx省xx市xx区xx路xx号"
        },
        "latitude": {
          "type": "number",
          "format": "double",
          "title": "纬度，北纬为正"
        },
        "longitude": {
          "type": "number",
          "format": "double",
          "title": "经度，东经为正"
        },
        "name": {
          "type": "string",
          "title": "地址名，例如xx大厦"
        }
      }
    },
    "puppetLogoutResponse": {
      "type": "object"
    },
    "puppetMessageBatchForwardRequest": {
      "type": "object",
      "properties": {
        "conversationIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "messageId": {
          "type": "string"
        },
        "messageIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "batchTaskId": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchForwardResponse": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetMessageBatchForwardResponseResult"
          }
        }
      }
    },
    "puppetMessageBatchForwardResponseResult": {
      "type": "object",
      "properties": {
        "conversationId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "error": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendChannelCardRequest": {
      "type": "object",
      "properties": {
        "conversationIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "channelCard": {
          "$ref": "#/definitions/puppetChannelCardPayload"
        },
        "batchTaskId": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendChannelCardResponse": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetMessageBatchSendChannelCardResponseResult"
          }
        }
      }
    },
    "puppetMessageBatchSendChannelCardResponseResult": {
      "type": "object",
      "properties": {
        "conversationId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "error": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendChannelRequest": {
      "type": "object",
      "properties": {
        "conversationIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "channel": {
          "$ref": "#/definitions/puppetChannelPayload"
        },
        "batchTaskId": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendChannelResponse": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetMessageBatchSendChannelResponseResult"
          }
        }
      }
    },
    "puppetMessageBatchSendChannelResponseResult": {
      "type": "object",
      "properties": {
        "conversationId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "error": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendContactRequest": {
      "type": "object",
      "properties": {
        "conversationIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "contactId": {
          "type": "string"
        },
        "batchTaskId": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendContactResponse": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetMessageBatchSendContactResponseResult"
          }
        }
      }
    },
    "puppetMessageBatchSendContactResponseResult": {
      "type": "object",
      "properties": {
        "conversationId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "error": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendFileRequest": {
      "type": "object",
      "properties": {
        "conversationIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "fileBox": {
          "type": "string"
        },
        "batchTaskId": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendFileResponse": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetMessageBatchSendFileResponseResult"
          }
        }
      }
    },
    "puppetMessageBatchSendFileResponseResult": {
      "type": "object",
      "properties": {
        "conversationId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "error": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendLocationRequest": {
      "type": "object",
      "properties": {
        "conversationIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "location": {
          "$ref": "#/definitions/puppetLocationPayload"
        },
        "batchTaskId": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendLocationResponse": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetMessageBatchSendLocationResponseResult"
          }
        }
      }
    },
    "puppetMessageBatchSendLocationResponseResult": {
      "type": "object",
      "properties": {
        "conversationId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "error": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendMiniProgramRequest": {
      "type": "object",
      "properties": {
        "conversationIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "miniProgram": {
          "$ref": "#/definitions/puppetMiniProgramPayload"
        },
        "batchTaskId": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendMiniProgramResponse": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetMessageBatchSendMiniProgramResponseResult"
          }
        }
      }
    },
    "puppetMessageBatchSendMiniProgramResponseResult": {
      "type": "object",
      "properties": {
        "conversationId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "error": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendTextRequest": {
      "type": "object",
      "properties": {
        "conversationIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "text": {
          "type": "string"
        },
        "batchTaskId": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendTextResponse": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetMessageBatchSendTextResponseResult"
          }
        }
      }
    },
    "puppetMessageBatchSendTextResponseResult": {
      "type": "object",
      "properties": {
        "conversationId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "error": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendUrlRequest": {
      "type": "object",
      "properties": {
        "conversationIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "urlLink": {
          "$ref": "#/definitions/puppetUrlLinkPayload"
        },
        "batchTaskId": {
          "type": "string"
        }
      }
    },
    "puppetMessageBatchSendUrlResponse": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetMessageBatchSendUrlResponseResult"
          }
        }
      }
    },
    "puppetMessageBatchSendUrlResponseResult": {
      "type": "object",
      "properties": {
        "conversationId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "error": {
          "type": "string"
        }
      }
    },
    "puppetMessageCallRecordResponse": {
      "type": "object",
      "properties": {
        "callRecord": {
          "$ref": "#/definitions/puppetCallRecordPayload"
        }
      }
    },
    "puppetMessageChannelCardResponse": {
      "type": "object",
      "properties": {
        "channelCard": {
          "$ref": "#/definitions/puppetChannelCardPayload"
        }
      }
    },
    "puppetMessageChannelResponse": {
      "type": "object",
      "properties": {
        "channel": {
          "$ref": "#/definitions/puppetChannelPayload"
        }
      }
    },
    "puppetMessageChatHistoryResponse": {
      "type": "object",
      "properties": {
        "chatHistoryList": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetChatHistoryPayload"
          }
        }
      }
    },
    "puppetMessageContactResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageFileRequest": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageFileResponse": {
      "type": "object",
      "properties": {
        "fileBox": {
          "type": "string"
        }
      }
    },
    "puppetMessageForwardResponse": {
      "type": "object",
      "properties": {
        "idStringValueDeprecated": {
          "type": "string",
          "description": "Deprecated after Sep 31, 2021, will be removed after Dec 31, 2022",
          "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",
          "title": "获取图片的类型（缩略图、原图）"
        }
      }
    },
    "puppetMessageImageResponse": {
      "type": "object",
      "properties": {
        "fileBox": {
          "type": "string"
        }
      }
    },
    "puppetMessageLocationResponse": {
      "type": "object",
      "properties": {
        "location": {
          "$ref": "#/definitions/puppetLocationPayload"
        }
      }
    },
    "puppetMessageMiniProgramResponse": {
      "type": "object",
      "properties": {
        "miniProgramDeprecated": {
          "type": "string",
          "description": "deprecated after Sep 31, 2021, remove compatible code after Dec 31, 2022",
          "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",
          "title": "文件名"
        },
        "text": {
          "type": "string",
          "title": "文本内容"
        },
        "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",
          "title": "类型"
        },
        "talkerId": {
          "type": "string",
          "title": "发送者id"
        },
        "roomId": {
          "type": "string",
          "title": "群聊id"
        },
        "listenerId": {
          "type": "string",
          "title": "接受者id"
        },
        "mentionIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "群消息@人的id列表"
        },
        "receiveTime": {
          "type": "string",
          "format": "date-time",
          "title": "收到消息时间"
        },
        "quoteId": {
          "type": "string",
          "title": "被引用的消息id"
        },
        "additionalInfo": {
          "type": "string"
        },
        "textContents": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetTextContent"
          }
        }
      }
    },
    "puppetMessagePreviewResponse": {
      "type": "object",
      "properties": {
        "fileBox": {
          "type": "string"
        }
      }
    },
    "puppetMessageRecallResponse": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        }
      }
    },
    "puppetMessageSendChannelCardResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageSendChannelResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageSendContactResponse": {
      "type": "object",
      "properties": {
        "idStringValueDeprecated": {
          "type": "string",
          "description": "Deprecated after Sep 31, 2021, will be removed after Dec 31, 2022",
          "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",
          "title": "对话id"
        },
        "fileBox": {
          "type": "string",
          "title": "发送文件的fileBox.toJSON()"
        }
      }
    },
    "puppetMessageSendFileResponse": {
      "type": "object",
      "properties": {
        "idStringValueDeprecated": {
          "type": "string",
          "description": "Deprecated after Sep 31, 2021, will be removed after Dec 31, 2022",
          "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",
          "description": "Deprecated after Sep 31, 2021, will be removed after Dec 31, 2022",
          "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"
        }
      }
    },
    "puppetMessageSendPostResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageSendTextResponse": {
      "type": "object",
      "properties": {
        "idStringValueDeprecated": {
          "type": "string",
          "description": "Deprecated after Sep 31, 2021, will be removed after Dec 31, 2022",
          "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",
          "description": "Deprecated after Sep 31, 2021, will be removed after Dec 31, 2022",
          "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_CHAT_HISTORY",
        "MESSAGE_TYPE_EMOTCION",
        "MESSAGE_TYPE_IMAGE",
        "MESSAGE_TYPE_TEXT",
        "MESSAGE_TYPE_LOCATION",
        "MESSAGE_TYPE_MINI_PROGRAM",
        "MESSAGE_TYPE_GROUP_NOTE",
        "MESSAGE_TYPE_TRANSFER",
        "MESSAGE_TYPE_RED_ENVELOPE",
        "MESSAGE_TYPE_RECALLED",
        "MESSAGE_TYPE_URL",
        "MESSAGE_TYPE_VIDEO",
        "MESSAGE_TYPE_POST",
        "MESSAGE_TYPE_CHANNEL",
        "MESSAGE_TYPE_SYSTEM",
        "MESSAGE_TYPE_MARKDOWN",
        "MESSAGE_TYPE_CALL_RECORD",
        "MESSAGE_TYPE_CHANNEL_CARD"
      ],
      "default": "MESSAGE_TYPE_UNSPECIFIED",
      "description": "- MESSAGE_TYPE_ATTACHMENT: 文件消息\n - MESSAGE_TYPE_AUDIO: 音频\n - MESSAGE_TYPE_CONTACT: 名片\n - MESSAGE_TYPE_CHAT_HISTORY: 聊天记录，wxwork暂不支持\n - MESSAGE_TYPE_EMOTCION: 表情\n - MESSAGE_TYPE_IMAGE: 图片\n - MESSAGE_TYPE_TEXT: 文本\n - MESSAGE_TYPE_LOCATION: 地址\n - MESSAGE_TYPE_MINI_PROGRAM: 小程序\n - MESSAGE_TYPE_GROUP_NOTE: 群接龙消息，wxwork中没有\n - MESSAGE_TYPE_TRANSFER: 转账，wxwork中没有\n - MESSAGE_TYPE_RED_ENVELOPE: 红包，wxwork中没有\n - MESSAGE_TYPE_RECALLED: 撤回\n - MESSAGE_TYPE_URL: 链接\n - MESSAGE_TYPE_VIDEO: 视频\n - MESSAGE_TYPE_POST: 特殊的复合类型，wxwork中没有\n - MESSAGE_TYPE_CHANNEL: 视频号\n - MESSAGE_TYPE_SYSTEM: 系统消息\n - MESSAGE_TYPE_MARKDOWN: MarkDown\n - MESSAGE_TYPE_CALL_RECORD: 通话记录\n - MESSAGE_TYPE_CHANNEL_CARD: 视频号名片",
      "title": "消息类型"
    },
    "puppetMessageUrlResponse": {
      "type": "object",
      "properties": {
        "urlLinkDeprecated": {
          "type": "string",
          "description": "deprecated after Sep 31, 2021, remove compatible code after Dec 31, 2022",
          "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"
        }
      }
    },
    "puppetMessageVoiceRequest": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageVoiceResponse": {
      "type": "object",
      "properties": {
        "fileBox": {
          "type": "string"
        }
      }
    },
    "puppetMessageVoiceTextRequest": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetMessageVoiceTextResponse": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string"
        },
        "noSpeech": {
          "type": "boolean"
        }
      }
    },
    "puppetMiniProgramPayload": {
      "type": "object",
      "properties": {
        "appid": {
          "type": "string",
          "title": "appId，形式如wx4ff94de0d8038c25"
        },
        "description": {
          "type": "string",
          "title": "描述(副标题)"
        },
        "pagePath": {
          "type": "string",
          "title": "访问路径"
        },
        "iconUrl": {
          "type": "string",
          "title": "图标路径"
        },
        "shareId": {
          "type": "string",
          "title": "发送小程序的用户id，可不填"
        },
        "thumbUrl": {
          "type": "string",
          "title": "缩略图路径"
        },
        "title": {
          "type": "string",
          "title": "标题"
        },
        "username": {
          "type": "string",
          "title": "关联公众号id，形式gh_69105b80ea75@app"
        },
        "thumbKey": {
          "type": "string",
          "title": "缩略图的key，可不填"
        }
      }
    },
    "puppetMomentCoverageRequest": {
      "type": "object",
      "properties": {
        "fileBox": {
          "type": "string"
        }
      }
    },
    "puppetMomentCoverageResponse": {
      "type": "object",
      "properties": {
        "fileBox": {
          "type": "string"
        }
      }
    },
    "puppetMomentPublishRequest": {
      "type": "object",
      "properties": {
        "post": {
          "$ref": "#/definitions/puppetPostPayloadClient"
        }
      }
    },
    "puppetMomentPublishResponse": {
      "type": "object",
      "properties": {
        "momentId": {
          "type": "string"
        }
      }
    },
    "puppetMomentSignatureRequest": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string"
        }
      }
    },
    "puppetMomentSignatureResponse": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string"
        }
      }
    },
    "puppetMomentUnpublishResponse": {
      "type": "object"
    },
    "puppetMomentVisibleListResponse": {
      "type": "object",
      "properties": {
        "contactIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetOptionalBoolean": {
      "type": "string",
      "enum": [
        "BOOL_UNSET",
        "BOOL_FALSE",
        "BOOL_TRUE"
      ],
      "default": "BOOL_UNSET"
    },
    "puppetPayloadType": {
      "type": "string",
      "enum": [
        "PAYLOAD_TYPE_UNSPECIFIED",
        "PAYLOAD_TYPE_MESSAGE",
        "PAYLOAD_TYPE_CONTACT",
        "PAYLOAD_TYPE_ROOM",
        "PAYLOAD_TYPE_ROOM_MEMBER",
        "PAYLOAD_TYPE_FRIENDSHIP",
        "PAYLOAD_TYPE_POST",
        "PAYLOAD_TYPE_TAG",
        "PAYLOAD_TYPE_TAG_GROUP",
        "PAYLOAD_TYPE_WXXD_PRODUCT",
        "PAYLOAD_TYPE_WXXD_ORDER",
        "PAYLOAD_TYPE_CALL"
      ],
      "default": "PAYLOAD_TYPE_UNSPECIFIED",
      "title": "数值必须与 @juzi/wechaty-puppet 的 DirtyType 严格一致。"
    },
    "puppetPostPayloadClient": {
      "type": "object",
      "properties": {
        "parentId": {
          "type": "string",
          "title": "转发的上一级id,评论时如果是回复，则是回复的评论的id，否则是朋友圈的id"
        },
        "rootId": {
          "type": "string",
          "title": "转发的根id，评论时应该是朋友圈的id"
        },
        "type": {
          "$ref": "#/definitions/puppetPostType"
        },
        "sayableList": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetPostSayable"
          }
        },
        "visibleList": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "location": {
          "$ref": "#/definitions/puppetLocationPayload"
        }
      }
    },
    "puppetPostPayloadRequest": {
      "type": "object",
      "properties": {
        "postId": {
          "type": "string"
        }
      }
    },
    "puppetPostPayloadResponse": {
      "type": "object",
      "properties": {
        "post": {
          "$ref": "#/definitions/puppetPostPayloadServer"
        }
      }
    },
    "puppetPostPayloadSayableRequest": {
      "type": "object",
      "properties": {
        "postId": {
          "type": "string"
        },
        "sayableId": {
          "type": "string"
        }
      }
    },
    "puppetPostPayloadSayableResponse": {
      "type": "object",
      "properties": {
        "sayable": {
          "$ref": "#/definitions/puppetPostSayable"
        }
      }
    },
    "puppetPostPayloadServer": {
      "type": "object",
      "properties": {
        "parentId": {
          "type": "string",
          "title": "转发的上一级id"
        },
        "rootId": {
          "type": "string",
          "title": "转发的根id"
        },
        "type": {
          "$ref": "#/definitions/puppetPostType"
        },
        "sayableList": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetPostSayable"
          }
        },
        "contactId": {
          "type": "string"
        },
        "timestamp": {
          "type": "string",
          "format": "date-time"
        },
        "children": {
          "type": "integer",
          "format": "int32",
          "title": "counters 计数器"
        },
        "descendant": {
          "type": "integer",
          "format": "int32"
        },
        "like": {
          "type": "integer",
          "format": "int32"
        },
        "visibleList": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "location": {
          "$ref": "#/definitions/puppetLocationPayload"
        }
      }
    },
    "puppetPostSayable": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/puppetSayableType"
        },
        "id": {
          "type": "string",
          "title": "服务器端获取的Post只传回id，异步进行获取"
        },
        "text": {
          "type": "string"
        },
        "fileBox": {
          "type": "string",
          "title": "FileBox.toJSON()"
        },
        "urlLink": {
          "$ref": "#/definitions/puppetUrlLinkPayload"
        },
        "channel": {
          "$ref": "#/definitions/puppetChannelPayload"
        },
        "miniProgram": {
          "$ref": "#/definitions/puppetMiniProgramPayload"
        },
        "mentionIdList": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "文本类型的sayable可传，朋友圈暂不支持"
        }
      }
    },
    "puppetPostTapRequest": {
      "type": "object",
      "properties": {
        "postId": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/puppetTapType"
        },
        "tap": {
          "type": "boolean",
          "title": "点赞还是取消"
        }
      }
    },
    "puppetPostTapResponse": {
      "type": "object",
      "properties": {
        "tap": {
          "type": "boolean"
        }
      }
    },
    "puppetPostType": {
      "type": "string",
      "enum": [
        "POST_TYPE_UNSPECIFIED",
        "POST_TYPE_MOMENT",
        "POST_TYPE_CHANNEL",
        "POST_TYPE_MESSAGE",
        "POST_TYPE_BROADCAST",
        "POST_TYPE_TEXT_BUTTON",
        "POST_TYPE_GOODS_CARD"
      ],
      "default": "POST_TYPE_UNSPECIFIED",
      "title": "- POST_TYPE_MOMENT: 朋友圈\n - POST_TYPE_CHANNEL: 视频号——原始设计走post，实际目前采用message\n - POST_TYPE_MESSAGE: 消息——富媒体消息\n - POST_TYPE_BROADCAST: 群发\n - POST_TYPE_TEXT_BUTTON: puppet-mini 按钮消息\n - POST_TYPE_GOODS_CARD: puppet-mini 商品消息"
    },
    "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"
    },
    "puppetRefreshQRCodeRequest": {
      "type": "object"
    },
    "puppetRoomAddResponse": {
      "type": "object"
    },
    "puppetRoomAddV2Response": {
      "type": "object",
      "properties": {
        "successIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "failedIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "failedReasons": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetRoomAdminsResponse": {
      "type": "object"
    },
    "puppetRoomAnnounceResponse": {
      "type": "object",
      "properties": {
        "textStringValueDeprecated": {
          "type": "string",
          "title": "DEPRECATED, will be removed after Dec 31, 2022"
        },
        "text": {
          "type": "string"
        }
      }
    },
    "puppetRoomAntiSpamStrategy": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "puppetRoomAvatarResponse": {
      "type": "object",
      "properties": {
        "fileBox": {
          "type": "string"
        }
      }
    },
    "puppetRoomCreateRequest": {
      "type": "object",
      "properties": {
        "contactIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "初始群成员id"
        },
        "topic": {
          "type": "string",
          "title": "群名称"
        }
      }
    },
    "puppetRoomCreateResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetRoomDelResponse": {
      "type": "object"
    },
    "puppetRoomDelV2Response": {
      "type": "object",
      "properties": {
        "successIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "failedIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "failedReasons": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetRoomDismissResponse": {
      "type": "object"
    },
    "puppetRoomInvitationAcceptByQRCodeResponse": {
      "type": "object",
      "properties": {
        "roomId": {
          "type": "string"
        },
        "chatId": {
          "type": "string"
        }
      }
    },
    "puppetRoomInvitationAcceptResponse": {
      "type": "object"
    },
    "puppetRoomInvitationPayloadResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "inviterId": {
          "type": "string",
          "title": "邀请者id"
        },
        "topic": {
          "type": "string",
          "title": "群名称"
        },
        "memberCount": {
          "type": "integer",
          "format": "int32",
          "title": "群成员数量"
        },
        "memberIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "群成员id列表"
        },
        "timestampUint64Deprecated": {
          "type": "string",
          "format": "uint64",
          "description": "Deprecated: will be removed after Dec 31, 2022",
          "title": "*\n@deprecated will be removed after Dec 31, 2022\n Huan(202109): use receive_time(10) instead"
        },
        "avatar": {
          "type": "string",
          "title": "群头像"
        },
        "invitation": {
          "type": "string",
          "title": "在企微中为群邀请的链接地址"
        },
        "receiverId": {
          "type": "string",
          "title": "收到群邀请的成员id"
        },
        "receiveTime": {
          "type": "string",
          "format": "date-time",
          "title": "时间戳"
        }
      }
    },
    "puppetRoomListResponse": {
      "type": "object",
      "properties": {
        "ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetRoomMemberJoinSceneType": {
      "type": "string",
      "enum": [
        "ROOM_MEMBER_JOIN_SCENE_TYPE_UNKNOWN",
        "ROOM_MEMBER_JOIN_SCENE_TYPE_ADD",
        "ROOM_MEMBER_JOIN_SCENE_TYPE_INVITE_LINK",
        "ROOM_MEMBER_JOIN_SCENE_TYPE_QRCODE",
        "ROOM_MEMBER_JOIN_SCENE_TYPE_OTHER"
      ],
      "default": "ROOM_MEMBER_JOIN_SCENE_TYPE_UNKNOWN",
      "title": "类型枚举"
    },
    "puppetRoomMemberListResponse": {
      "type": "object",
      "properties": {
        "memberIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetRoomMemberPayloadResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "roomAlias": {
          "type": "string",
          "title": "联系人在群内的别名（群备注）"
        },
        "inviterId": {
          "type": "string",
          "title": "邀请者id"
        },
        "avatar": {
          "type": "string",
          "title": "头像"
        },
        "name": {
          "type": "string",
          "title": "名称"
        },
        "additionalInfo": {
          "type": "string"
        },
        "joinTime": {
          "type": "number",
          "format": "double"
        },
        "joinScene": {
          "$ref": "#/definitions/puppetRoomMemberJoinSceneType"
        }
      }
    },
    "puppetRoomOwnerTransferResponse": {
      "type": "object"
    },
    "puppetRoomParseDynamicQRCodeResponse": {
      "type": "object",
      "properties": {
        "qrcode": {
          "type": "string",
          "title": "二维码url"
        },
        "qrcodeImageUrl": {
          "type": "string",
          "title": "二维码图片url"
        },
        "roomName": {
          "type": "string",
          "title": "群名称"
        }
      }
    },
    "puppetRoomPayloadResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "topic": {
          "type": "string",
          "title": "群名称"
        },
        "avatar": {
          "type": "string",
          "title": "群头像"
        },
        "ownerId": {
          "type": "string",
          "title": "群主id"
        },
        "adminIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "群管理员id列表"
        },
        "memberIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "群成员id列表"
        },
        "handle": {
          "type": "string",
          "title": "IM内部id，企微中为群的chat_id"
        },
        "additionalInfo": {
          "type": "string"
        },
        "roomRemark": {
          "type": "string"
        },
        "external": {
          "type": "boolean"
        },
        "createTime": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "puppetRoomPermissionResponse": {
      "type": "object",
      "properties": {
        "inviteConfirm": {
          "$ref": "#/definitions/puppetOptionalBoolean"
        },
        "adminOnlyManage": {
          "$ref": "#/definitions/puppetOptionalBoolean"
        },
        "adminOnlyAtAll": {
          "$ref": "#/definitions/puppetOptionalBoolean"
        },
        "muteAll": {
          "$ref": "#/definitions/puppetOptionalBoolean"
        },
        "forbidRoomTopicEdit": {
          "$ref": "#/definitions/puppetOptionalBoolean"
        },
        "disableMemberMutualAdd": {
          "$ref": "#/definitions/puppetOptionalBoolean"
        }
      }
    },
    "puppetRoomQRCodeResponse": {
      "type": "object",
      "properties": {
        "qrcode": {
          "type": "string"
        }
      }
    },
    "puppetRoomQuitResponse": {
      "type": "object"
    },
    "puppetRoomRemarkResponse": {
      "type": "object"
    },
    "puppetRoomTopicResponse": {
      "type": "object",
      "properties": {
        "topicStringValueDeprecated": {
          "type": "string",
          "title": "DEPRECATED, will be removed after Dec 31, 2022"
        },
        "topic": {
          "type": "string"
        }
      }
    },
    "puppetSayableType": {
      "type": "string",
      "enum": [
        "SAYABLE_TYPE_TEXT",
        "SAYABLE_TYPE_FILE",
        "SAYABLE_TYPE_URL",
        "SAYABLE_TYPE_CHANNEL",
        "SAYABLE_TYPE_MINIPROGRAM"
      ],
      "default": "SAYABLE_TYPE_TEXT"
    },
    "puppetStartResponse": {
      "type": "object"
    },
    "puppetStopResponse": {
      "type": "object"
    },
    "puppetTagContactTagAddRequest": {
      "type": "object",
      "properties": {
        "tagIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "要打的标签的id列表"
        },
        "contactIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "要打标签的联系人id列表"
        }
      }
    },
    "puppetTagContactTagAddResponse": {
      "type": "object"
    },
    "puppetTagContactTagListResponse": {
      "type": "object",
      "properties": {
        "tagIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetTagContactTagRemoveRequest": {
      "type": "object",
      "properties": {
        "tagIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "contactIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetTagContactTagRemoveResponse": {
      "type": "object"
    },
    "puppetTagGroupAddRequest": {
      "type": "object",
      "properties": {
        "tagGroupName": {
          "type": "string"
        }
      }
    },
    "puppetTagGroupAddResponse": {
      "type": "object",
      "properties": {
        "tagGroupId": {
          "type": "string"
        }
      }
    },
    "puppetTagGroupDeleteRequest": {
      "type": "object",
      "properties": {
        "tagGroupId": {
          "type": "string"
        }
      }
    },
    "puppetTagGroupDeleteResponse": {
      "type": "object"
    },
    "puppetTagGroupListResponse": {
      "type": "object",
      "properties": {
        "tagGroupIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetTagGroupPayloadRequest": {
      "type": "object",
      "properties": {
        "groupId": {
          "type": "string"
        }
      }
    },
    "puppetTagGroupPayloadResponse": {
      "type": "object",
      "properties": {
        "payload": {
          "$ref": "#/definitions/wechatyPuppetTagGroupPayload"
        }
      }
    },
    "puppetTagGroupTagListResponse": {
      "type": "object",
      "properties": {
        "tagIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetTagPayloadRequest": {
      "type": "object",
      "properties": {
        "tagId": {
          "type": "string"
        }
      }
    },
    "puppetTagPayloadResponse": {
      "type": "object",
      "properties": {
        "payload": {
          "$ref": "#/definitions/wechatyPuppetTagPayload"
        }
      }
    },
    "puppetTagTagAddRequest": {
      "type": "object",
      "properties": {
        "deprecatedTagName": {
          "type": "string"
        },
        "tagGroupId": {
          "type": "string"
        },
        "tagName": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetTagTagAddResponse": {
      "type": "object",
      "properties": {
        "deprecatedTagId": {
          "type": "string"
        },
        "tagInfo": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetTagTagInfo"
          }
        }
      }
    },
    "puppetTagTagContactListResponse": {
      "type": "object",
      "properties": {
        "contactIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetTagTagDeleteRequest": {
      "type": "object",
      "properties": {
        "deprecatedTagId": {
          "type": "string"
        },
        "tagId": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetTagTagDeleteResponse": {
      "type": "object"
    },
    "puppetTagTagInfo": {
      "type": "object",
      "properties": {
        "tagId": {
          "type": "string"
        },
        "tagName": {
          "type": "string"
        }
      }
    },
    "puppetTagTagListResponse": {
      "type": "object",
      "properties": {
        "tagIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "puppetTagTagModifyRequest": {
      "type": "object",
      "properties": {
        "deprecatedTagId": {
          "type": "string"
        },
        "deprecatedTagNewName": {
          "type": "string"
        },
        "tagNewInfo": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetTagTagInfo"
          }
        }
      }
    },
    "puppetTagTagModifyResponse": {
      "type": "object",
      "properties": {
        "deprecatedTagId": {
          "type": "string"
        },
        "deprecatedTagName": {
          "type": "string"
        },
        "tagInfo": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/puppetTagTagInfo"
          }
        }
      }
    },
    "puppetTagType": {
      "type": "string",
      "enum": [
        "Unspecific",
        "PERSONAL",
        "CORPORATION"
      ],
      "default": "Unspecific",
      "title": "- PERSONAL: 个人标签\n - CORPORATION: 企业标签"
    },
    "puppetTapType": {
      "type": "string",
      "enum": [
        "TAP_TYPE_UNSPECIFIED",
        "TAP_TYPE_LIKE"
      ],
      "default": "TAP_TYPE_UNSPECIFIED"
    },
    "puppetTextContent": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/puppetTextContentType"
        },
        "text": {
          "type": "string"
        },
        "data": {
          "$ref": "#/definitions/puppetTextContentData"
        }
      }
    },
    "puppetTextContentData": {
      "type": "object",
      "properties": {
        "contactId": {
          "type": "string"
        }
      }
    },
    "puppetTextContentType": {
      "type": "string",
      "enum": [
        "TEXT_CONTENT_TYPE_REGULAR",
        "TEXT_CONTENT_TYPE_AT"
      ],
      "default": "TEXT_CONTENT_TYPE_REGULAR"
    },
    "puppetUploadRequest": {
      "type": "object",
      "properties": {
        "chunk": {
          "type": "string",
          "format": "byte"
        }
      }
    },
    "puppetUploadResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "puppetUrlLinkPayload": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "title": "描述"
        },
        "thumbnailUrl": {
          "type": "string",
          "title": "缩略图地址"
        },
        "title": {
          "type": "string",
          "title": "标题"
        },
        "url": {
          "type": "string",
          "title": "文章地址"
        }
      }
    },
    "puppetVersionResponse": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string"
        }
      }
    },
    "rpcStatus": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32"
        },
        "message": {
          "type": "string"
        },
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/protobufAny"
          }
        }
      }
    },
    "wechatyPuppetTagGroupPayload": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/puppetTagType"
        }
      }
    },
    "wechatyPuppetTagPayload": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string",
          "title": "标签名"
        },
        "groupId": {
          "type": "string",
          "title": "所属标签组的id，可为空"
        },
        "type": {
          "$ref": "#/definitions/puppetTagType"
        }
      }
    }
  }
}
