{
  "schemes": [
    "http"
  ],
  "swagger": "2.0",
  "info": {
    "description": "This is the Signal Cli REST API documentation.",
    "title": "Signal Cli REST API",
    "contact": {},
    "version": "1.0"
  },
  "host": "localhost:8080",
  "basePath": "/",
  "paths": {
    "/v1/about": {
      "get": {
        "description": "Returns the supported API versions and the internal build nr",
        "produces": [
          "application/json"
        ],
        "tags": [
          "General"
        ],
        "summary": "Lists general information about the API",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/client.About"
            }
          }
        }
      }
    },
    "/v1/accounts": {
      "get": {
        "description": "Lists all of the accounts linked or registered",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Accounts"
        ],
        "summary": "List all accounts",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/accounts/{number}/pin": {
      "post": {
        "description": "Sets a new Signal Pin",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Accounts"
        ],
        "summary": "Set Pin",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Request",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.SetPinRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      },
      "delete": {
        "description": "Removes a Signal Pin",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Accounts"
        ],
        "summary": "Remove Pin",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/accounts/{number}/rate-limit-challenge": {
      "post": {
        "description": "When running into rate limits, sometimes the limit can be lifted, by solving a CAPTCHA. To get the captcha token, go to https://signalcaptchas.org/challenge/generate.html For the staging environment, use: https://signalcaptchas.org/staging/registration/generate.html. The \"challenge_token\" is the token from the failed send attempt. The \"captcha\" is the captcha result, starting with signalcaptcha://",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Accounts"
        ],
        "summary": "Lift rate limit restrictions by solving a captcha.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Request",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.RateLimitChallengeRequest"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/accounts/{number}/settings": {
      "put": {
        "description": "Update the account attributes on the signal server.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Accounts"
        ],
        "summary": "Update the account settings.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Request",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.UpdateAccountSettingsRequest"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/accounts/{number}/username": {
      "post": {
        "description": "Allows to set the username that should be used for this account. This can either be just the nickname (e.g. test) or the complete username with discriminator (e.g. test.123). Returns the new username with discriminator and the username link.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Accounts"
        ],
        "summary": "Set a username.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Request",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.SetUsernameRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/client.SetUsernameResponse"
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      },
      "delete": {
        "description": "Delete the username associated with this account.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Accounts"
        ],
        "summary": "Remove a username.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/attachments": {
      "get": {
        "description": "List all downloaded attachments",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Attachments"
        ],
        "summary": "List all attachments.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/attachments/{attachment}": {
      "get": {
        "description": "Serve the attachment with the given id",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Attachments"
        ],
        "summary": "Serve Attachment.",
        "parameters": [
          {
            "type": "string",
            "description": "Attachment ID",
            "name": "attachment",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      },
      "delete": {
        "description": "Remove the attachment with the given id from filesystem.",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Attachments"
        ],
        "summary": "Remove attachment.",
        "parameters": [
          {
            "type": "string",
            "description": "Attachment ID",
            "name": "attachment",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/configuration": {
      "get": {
        "description": "List the REST API configuration.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "General"
        ],
        "summary": "List the REST API configuration.",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/api.Configuration"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      },
      "post": {
        "description": "Set the REST API configuration.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "General"
        ],
        "summary": "Set the REST API configuration.",
        "parameters": [
          {
            "description": "Configuration",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.Configuration"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/configuration/{number}/settings": {
      "get": {
        "description": "List account specific settings.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "General"
        ],
        "summary": "List account specific settings.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Request",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.TrustModeResponse"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      },
      "post": {
        "description": "Set account specific settings.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "General"
        ],
        "summary": "Set account specific settings.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Request",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.TrustModeRequest"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/contacts/{number}": {
      "get": {
        "description": "List all contacts for the given number.",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Contacts"
        ],
        "summary": "List Contacts",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/client.ListContactsResponse"
              }
            }
          }
        }
      },
      "put": {
        "description": "Updates the info associated to a number on the contact list.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Contacts"
        ],
        "summary": "Updates the info associated to a number on the contact list. If the contact doesn’t exist yet, it will be added.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Contact",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.UpdateContactRequest"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/contacts/{number}/sync": {
      "post": {
        "description": "Send a synchronization message with the local contacts list to all linked devices. This command should only be used if this is the primary device.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Contacts"
        ],
        "summary": "Send a synchronization message with the local contacts list to all linked devices.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/contacts/{number}/{uuid}": {
      "get": {
        "description": "List a specific contact.",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Contacts"
        ],
        "summary": "List Contact",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/client.ListContactsResponse"
            }
          }
        }
      }
    },
    "/v1/contacts/{number}/{uuid}/avatar": {
      "get": {
        "description": "Returns the avatar of a contact.",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Contacts"
        ],
        "summary": "Returns the avatar of a contact",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Image",
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/v1/devices/{number}": {
      "get": {
        "description": "List linked devices associated to this device.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Devices"
        ],
        "summary": "List linked devices.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/client.ListDevicesResponse"
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      },
      "post": {
        "description": "Links another device to this device. Only works, if this is the master device.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Devices"
        ],
        "summary": "Links another device to this device.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Request",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.AddDeviceRequest"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/groups/{number}": {
      "get": {
        "description": "List all Signal Groups.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Groups"
        ],
        "summary": "List all Signal Groups.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/client.GroupEntry"
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      },
      "post": {
        "description": "Create a new Signal Group with the specified members.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Groups"
        ],
        "summary": "Create a new Signal Group.",
        "parameters": [
          {
            "description": "Input Data",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.CreateGroupRequest"
            }
          },
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/api.CreateGroupResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/groups/{number}/{groupid}": {
      "get": {
        "description": "List a specific Signal Group.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Groups"
        ],
        "summary": "List a Signal Group.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "Group ID",
            "name": "groupid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/client.GroupEntry"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      },
      "put": {
        "description": "Update the state of a Signal Group.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Groups"
        ],
        "summary": "Update the state of a Signal Group.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "Group ID",
            "name": "groupid",
            "in": "path",
            "required": true
          },
          {
            "description": "Input Data",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.UpdateGroupRequest"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      },
      "delete": {
        "description": "Delete the specified Signal Group.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Groups"
        ],
        "summary": "Delete a Signal Group.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "Group Id",
            "name": "groupid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/groups/{number}/{groupid}/admins": {
      "post": {
        "description": "Add one or more admins to an existing Signal Group.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Groups"
        ],
        "summary": "Add one or more admins to an existing Signal Group.",
        "parameters": [
          {
            "description": "Admins",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.ChangeGroupAdminsRequest"
            }
          },
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "Group ID",
            "name": "groupid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      },
      "delete": {
        "description": "Remove one or more admins from an existing Signal Group.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Groups"
        ],
        "summary": "Remove one or more admins from an existing Signal Group.",
        "parameters": [
          {
            "description": "Admins",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.ChangeGroupAdminsRequest"
            }
          },
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "Group ID",
            "name": "groupid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/groups/{number}/{groupid}/avatar": {
      "get": {
        "description": "Returns the avatar of a Signal Group.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Groups"
        ],
        "summary": "Returns the avatar of a Signal Group.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "Group ID",
            "name": "groupid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Image",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/groups/{number}/{groupid}/block": {
      "post": {
        "description": "Block the specified Signal Group.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Groups"
        ],
        "summary": "Block a Signal Group.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "Group ID",
            "name": "groupid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/groups/{number}/{groupid}/join": {
      "post": {
        "description": "Join the specified Signal Group.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Groups"
        ],
        "summary": "Join a Signal Group.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "Group ID",
            "name": "groupid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/groups/{number}/{groupid}/members": {
      "post": {
        "description": "Add one or more members to an existing Signal Group.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Groups"
        ],
        "summary": "Add one or more members to an existing Signal Group.",
        "parameters": [
          {
            "description": "Members",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.ChangeGroupMembersRequest"
            }
          },
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "Group ID",
            "name": "groupid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      },
      "delete": {
        "description": "Remove one or more members from an existing Signal Group.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Groups"
        ],
        "summary": "Remove one or more members from an existing Signal Group.",
        "parameters": [
          {
            "description": "Members",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.ChangeGroupMembersRequest"
            }
          },
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "Group ID",
            "name": "groupid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/groups/{number}/{groupid}/quit": {
      "post": {
        "description": "Quit the specified Signal Group.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Groups"
        ],
        "summary": "Quit a Signal Group.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "Group ID",
            "name": "groupid",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/health": {
      "get": {
        "description": "Internally used by the docker container to perform the health check.",
        "produces": [
          "application/json"
        ],
        "tags": [
          "General"
        ],
        "summary": "API Health Check",
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/v1/identities/{number}": {
      "get": {
        "description": "List all identities for the given number.",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Identities"
        ],
        "summary": "List Identities",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/client.IdentityEntry"
              }
            }
          }
        }
      }
    },
    "/v1/identities/{number}/trust/{numberToTrust}": {
      "put": {
        "description": "Trust an identity. When 'trust_all_known_keys' is set to' true', all known keys of this user are trusted. **This is only recommended for testing.**",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Identities"
        ],
        "summary": "Trust Identity",
        "parameters": [
          {
            "description": "Input Data",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.TrustIdentityRequest"
            }
          },
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "Number To Trust",
            "name": "numberToTrust",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "/v1/profiles/{number}": {
      "put": {
        "description": "Set your name and optional an avatar.",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Profiles"
        ],
        "summary": "Update Profile.",
        "parameters": [
          {
            "description": "Profile Data",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.UpdateProfileRequest"
            }
          },
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/qrcodelink": {
      "get": {
        "description": "Link device and generate QR code",
        "produces": [
          "application/json"
        ],
        "tags": [
          "Devices"
        ],
        "summary": "Link device and generate QR code.",
        "parameters": [
          {
            "type": "string",
            "description": "Device Name",
            "name": "device_name",
            "in": "query",
            "required": true
          },
          {
            "type": "integer",
            "description": "QRCode Version (defaults to 10)",
            "name": "qrcode_version",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Image",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/reactions/{number}": {
      "post": {
        "description": "React to a message",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Reactions"
        ],
        "summary": "Send a reaction.",
        "parameters": [
          {
            "description": "Reaction",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.Reaction"
            }
          },
          {
            "type": "string",
            "description": "Registered phone number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      },
      "delete": {
        "description": "Remove a reaction",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Reactions"
        ],
        "summary": "Remove a reaction.",
        "parameters": [
          {
            "description": "Reaction",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.Reaction"
            }
          },
          {
            "type": "string",
            "description": "Registered phone number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/receipts/{number}": {
      "post": {
        "description": "Send a read or viewed receipt",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Receipts"
        ],
        "summary": "Send a receipt.",
        "parameters": [
          {
            "description": "Receipt",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.Receipt"
            }
          },
          {
            "type": "string",
            "description": "Registered phone number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/receive/{number}": {
      "get": {
        "description": "Receives Signal Messages from the Signal Network. If you are running the docker container in normal/native mode, this is a GET endpoint. In json-rpc mode this is a websocket endpoint.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Messages"
        ],
        "summary": "Receive Signal Messages.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "Receive timeout in seconds (default: 1)",
            "name": "timeout",
            "in": "query"
          },
          {
            "type": "string",
            "description": "Specify whether the attachments of the received message should be ignored",
            "name": "ignore_attachments",
            "in": "query"
          },
          {
            "type": "string",
            "description": "Specify whether stories should be ignored when receiving messages",
            "name": "ignore_stories",
            "in": "query"
          },
          {
            "type": "string",
            "description": "Specify the maximum number of messages to receive (default: unlimited)",
            "name": "max_messages",
            "in": "query"
          },
          {
            "type": "string",
            "description": "Specify whether read receipts should be sent when receiving messages",
            "name": "send_read_receipts",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/register/{number}": {
      "post": {
        "description": "Register a phone number with the signal network.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Devices"
        ],
        "summary": "Register a phone number.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Additional Settings",
            "name": "data",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/api.RegisterNumberRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/register/{number}/verify/{token}": {
      "post": {
        "description": "Verify a registered phone number with the signal network.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Devices"
        ],
        "summary": "Verify a registered phone number.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Additional Settings",
            "name": "data",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/api.VerifyNumberSettings"
            }
          },
          {
            "type": "string",
            "description": "Verification Code",
            "name": "token",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "201": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/remote-delete/{number}": {
      "delete": {
        "description": "Delete a signal message",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Messages"
        ],
        "summary": "Delete a signal message.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Type",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.RemoteDeleteRequest"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/api.RemoteDeleteResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/search/{number}": {
      "get": {
        "description": "Check if one or more phone numbers are registered with the Signal Service.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Search"
        ],
        "summary": "Check if one or more phone numbers are registered with the Signal Service.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi",
            "description": "Numbers to check",
            "name": "numbers",
            "in": "query",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/api.SearchResponse"
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/send": {
      "post": {
        "description": "Send a signal message",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Messages"
        ],
        "summary": "Send a signal message.",
        "deprecated": true,
        "parameters": [
          {
            "description": "Input Data",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.SendMessageV1"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "OK",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/sticker-packs/{number}": {
      "get": {
        "description": "List Installed Sticker Packs.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Sticker Packs"
        ],
        "summary": "List Installed Sticker Packs.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/client.ListInstalledStickerPacksResponse"
              }
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      },
      "post": {
        "description": "In order to add a sticker pack, browse to https://signalstickers.org/ and select the sticker pack you want to add. Then, press the \"Add to Signal\" button. If you look at the address bar in your browser you should see an URL in this format: https://signal.art/addstickers/#pack_id=XXX&pack_key=YYY, where XXX is the pack_id and YYY is the pack_key.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Sticker Packs"
        ],
        "summary": "Add Sticker Pack.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Request",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.AddStickerPackRequest"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/typing-indicator/{number}": {
      "put": {
        "description": "Show Typing Indicator.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Messages"
        ],
        "summary": "Show Typing Indicator.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Type",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.TypingIndicatorRequest"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      },
      "delete": {
        "description": "Hide Typing Indicator.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Messages"
        ],
        "summary": "Hide Typing Indicator.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Type",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.TypingIndicatorRequest"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "schema": {
              "type": "string"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v1/unregister/{number}": {
      "post": {
        "description": "Disables push support for this device. **WARNING:** If *delete_account* is set to *true*, the account will be deleted from the Signal Server. This cannot be undone without loss.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Devices"
        ],
        "summary": "Unregister a phone number.",
        "parameters": [
          {
            "type": "string",
            "description": "Registered Phone Number",
            "name": "number",
            "in": "path",
            "required": true
          },
          {
            "description": "Additional Settings",
            "name": "data",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/api.UnregisterNumberRequest"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.Error"
            }
          }
        }
      }
    },
    "/v2/send": {
      "post": {
        "description": "Send a signal message. Set the text_mode to 'styled' in case you want to add formatting to your text message. Styling Options: \\*italic text\\*, \\*\\*bold text\\*\\*, ~strikethrough text~, ||spoiler||, \\`monospace\\`. If you want to escape a formatting character, prefix it with two backslashes.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "Messages"
        ],
        "summary": "Send a signal message.",
        "parameters": [
          {
            "description": "Input Data",
            "name": "data",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/api.SendMessageV2"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/api.SendMessageResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/api.SendMessageError"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "api.AddDeviceRequest": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string"
        }
      }
    },
    "api.AddStickerPackRequest": {
      "type": "object",
      "properties": {
        "pack_id": {
          "type": "string",
          "example": "9a32eda01a7a28574f2eb48668ae0dc4"
        },
        "pack_key": {
          "type": "string",
          "example": "19546e18eba0ff69dea78eb591465289d39e16f35e58389ae779d4f9455aff3a"
        }
      }
    },
    "api.ChangeGroupAdminsRequest": {
      "type": "object",
      "properties": {
        "admins": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "api.ChangeGroupMembersRequest": {
      "type": "object",
      "properties": {
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "api.Configuration": {
      "type": "object",
      "properties": {
        "logging": {
          "$ref": "#/definitions/api.LoggingConfiguration"
        }
      }
    },
    "api.CreateGroupRequest": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "expiration_time": {
          "type": "integer"
        },
        "group_link": {
          "type": "string",
          "enum": [
            "disabled",
            "enabled",
            "enabled-with-approval"
          ]
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "name": {
          "type": "string"
        },
        "permissions": {
          "$ref": "#/definitions/api.GroupPermissions"
        }
      }
    },
    "api.CreateGroupResponse": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "api.Error": {
      "type": "object",
      "properties": {
        "error": {
          "type": "string"
        }
      }
    },
    "api.GroupPermissions": {
      "type": "object",
      "properties": {
        "add_members": {
          "type": "string",
          "enum": [
            "only-admins",
            "every-member"
          ]
        },
        "edit_group": {
          "type": "string",
          "enum": [
            "only-admins",
            "every-member"
          ]
        },
        "send_messages": {
          "type": "string",
          "enum": [
            "only-admins",
            "every-member"
          ]
        }
      }
    },
    "api.LoggingConfiguration": {
      "type": "object",
      "properties": {
        "Level": {
          "type": "string"
        }
      }
    },
    "api.RateLimitChallengeRequest": {
      "type": "object",
      "properties": {
        "captcha": {
          "type": "string",
          "example": "signalcaptcha://{captcha value}"
        },
        "challenge_token": {
          "type": "string",
          "example": "<challenge token>"
        }
      }
    },
    "api.Reaction": {
      "type": "object",
      "properties": {
        "reaction": {
          "type": "string"
        },
        "recipient": {
          "type": "string"
        },
        "target_author": {
          "type": "string"
        },
        "timestamp": {
          "type": "integer"
        }
      }
    },
    "api.Receipt": {
      "type": "object",
      "properties": {
        "receipt_type": {
          "type": "string",
          "enum": [
            "read",
            "viewed"
          ]
        },
        "recipient": {
          "type": "string"
        },
        "timestamp": {
          "type": "integer"
        }
      }
    },
    "api.RegisterNumberRequest": {
      "type": "object",
      "properties": {
        "captcha": {
          "type": "string"
        },
        "use_voice": {
          "type": "boolean"
        }
      }
    },
    "api.RemoteDeleteRequest": {
      "type": "object",
      "properties": {
        "recipient": {
          "type": "string"
        },
        "timestamp": {
          "type": "integer"
        }
      }
    },
    "api.RemoteDeleteResponse": {
      "type": "object",
      "properties": {
        "timestamp": {
          "type": "string"
        }
      }
    },
    "api.SearchResponse": {
      "type": "object",
      "properties": {
        "number": {
          "type": "string"
        },
        "registered": {
          "type": "boolean"
        }
      }
    },
    "api.SendMessageError": {
      "type": "object",
      "properties": {
        "account": {
          "type": "string"
        },
        "challenge_tokens": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "error": {
          "type": "string"
        }
      }
    },
    "api.SendMessageResponse": {
      "type": "object",
      "properties": {
        "timestamp": {
          "type": "string"
        }
      }
    },
    "api.SendMessageV1": {
      "type": "object",
      "properties": {
        "base64_attachment": {
          "type": "string",
          "example": "'<BASE64 ENCODED DATA>' OR 'data:<MIME-TYPE>;base64,<BASE64 ENCODED DATA>' OR 'data:<MIME-TYPE>;filename=<FILENAME>;base64,<BASE64 ENCODED DATA>'"
        },
        "is_group": {
          "type": "boolean"
        },
        "message": {
          "type": "string"
        },
        "number": {
          "type": "string"
        },
        "recipients": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "api.SendMessageV2": {
      "type": "object",
      "properties": {
        "base64_attachments": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "example": [
            "<BASE64 ENCODED DATA>",
            "data:<MIME-TYPE>;base64<comma><BASE64 ENCODED DATA>",
            "data:<MIME-TYPE>;filename=<FILENAME>;base64<comma><BASE64 ENCODED DATA>"
          ]
        },
        "edit_timestamp": {
          "type": "integer"
        },
        "link_preview": {
          "$ref": "#/definitions/data.LinkPreviewType"
        },
        "mentions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/data.MessageMention"
          }
        },
        "message": {
          "type": "string"
        },
        "notify_self": {
          "type": "boolean"
        },
        "number": {
          "type": "string"
        },
        "quote_author": {
          "type": "string"
        },
        "quote_mentions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/data.MessageMention"
          }
        },
        "quote_message": {
          "type": "string"
        },
        "quote_timestamp": {
          "type": "integer"
        },
        "recipients": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "sticker": {
          "type": "string"
        },
        "text_mode": {
          "type": "string",
          "enum": [
            "normal",
            "styled"
          ]
        },
        "view_once": {
          "type": "boolean"
        }
      }
    },
    "api.SetPinRequest": {
      "type": "object",
      "properties": {
        "pin": {
          "type": "string"
        }
      }
    },
    "api.SetUsernameRequest": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string",
          "example": "test"
        }
      }
    },
    "api.TrustIdentityRequest": {
      "type": "object",
      "properties": {
        "trust_all_known_keys": {
          "type": "boolean",
          "example": false
        },
        "verified_safety_number": {
          "type": "string"
        }
      }
    },
    "api.TrustModeRequest": {
      "type": "object",
      "properties": {
        "trust_mode": {
          "type": "string"
        }
      }
    },
    "api.TrustModeResponse": {
      "type": "object",
      "properties": {
        "trust_mode": {
          "type": "string"
        }
      }
    },
    "api.TypingIndicatorRequest": {
      "type": "object",
      "properties": {
        "recipient": {
          "type": "string"
        }
      }
    },
    "api.UnregisterNumberRequest": {
      "type": "object",
      "properties": {
        "delete_account": {
          "type": "boolean",
          "example": false
        },
        "delete_local_data": {
          "type": "boolean",
          "example": false
        }
      }
    },
    "api.UpdateAccountSettingsRequest": {
      "type": "object",
      "properties": {
        "discoverable_by_number": {
          "type": "boolean"
        },
        "share_number": {
          "type": "boolean"
        }
      }
    },
    "api.UpdateContactRequest": {
      "type": "object",
      "properties": {
        "expiration_in_seconds": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "recipient": {
          "type": "string"
        }
      }
    },
    "api.UpdateGroupRequest": {
      "type": "object",
      "properties": {
        "base64_avatar": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "expiration_time": {
          "type": "integer"
        },
        "group_link": {
          "type": "string",
          "enum": [
            "disabled",
            "enabled",
            "enabled-with-approval"
          ]
        },
        "name": {
          "type": "string"
        },
        "permissions": {
          "$ref": "#/definitions/api.GroupPermissions"
        }
      }
    },
    "api.UpdateProfileRequest": {
      "type": "object",
      "properties": {
        "about": {
          "type": "string"
        },
        "base64_avatar": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "api.VerifyNumberSettings": {
      "type": "object",
      "properties": {
        "pin": {
          "type": "string"
        }
      }
    },
    "client.About": {
      "type": "object",
      "properties": {
        "build": {
          "type": "integer"
        },
        "capabilities": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "mode": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "versions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "client.ContactProfile": {
      "type": "object",
      "properties": {
        "about": {
          "type": "string"
        },
        "given_name": {
          "type": "string"
        },
        "has_avatar": {
          "type": "boolean"
        },
        "last_updated_timestamp": {
          "type": "integer"
        },
        "lastname": {
          "type": "string"
        }
      }
    },
    "client.GroupEntry": {
      "type": "object",
      "properties": {
        "admins": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "blocked": {
          "type": "boolean"
        },
        "description": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "internal_id": {
          "type": "string"
        },
        "invite_link": {
          "type": "string"
        },
        "members": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "name": {
          "type": "string"
        },
        "pending_invites": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "pending_requests": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "client.IdentityEntry": {
      "type": "object",
      "properties": {
        "added": {
          "type": "string"
        },
        "fingerprint": {
          "type": "string"
        },
        "number": {
          "type": "string"
        },
        "safety_number": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "uuid": {
          "type": "string"
        }
      }
    },
    "client.ListContactsResponse": {
      "type": "object",
      "properties": {
        "blocked": {
          "type": "boolean"
        },
        "color": {
          "type": "string"
        },
        "given_name": {
          "type": "string"
        },
        "message_expiration": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "nickname": {
          "$ref": "#/definitions/client.Nickname"
        },
        "note": {
          "type": "string"
        },
        "number": {
          "type": "string"
        },
        "profile": {
          "$ref": "#/definitions/client.ContactProfile"
        },
        "profile_name": {
          "type": "string"
        },
        "username": {
          "type": "string"
        },
        "uuid": {
          "type": "string"
        }
      }
    },
    "client.ListDevicesResponse": {
      "type": "object",
      "properties": {
        "creation_timestamp": {
          "type": "integer"
        },
        "last_seen_timestamp": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "client.ListInstalledStickerPacksResponse": {
      "type": "object",
      "properties": {
        "author": {
          "type": "string"
        },
        "installed": {
          "type": "boolean"
        },
        "pack_id": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "client.Nickname": {
      "type": "object",
      "properties": {
        "family_name": {
          "type": "string"
        },
        "given_name": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "client.SetUsernameResponse": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string"
        },
        "username_link": {
          "type": "string"
        }
      }
    },
    "data.LinkPreviewType": {
      "type": "object",
      "properties": {
        "base64_thumbnail": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "data.MessageMention": {
      "type": "object",
      "properties": {
        "author": {
          "type": "string"
        },
        "length": {
          "type": "integer"
        },
        "start": {
          "type": "integer"
        }
      }
    }
  },
  "tags": [
    {
      "description": "Some general endpoints.",
      "name": "General"
    },
    {
      "description": "Register and link Devices.",
      "name": "Devices"
    },
    {
      "description": "List registered and linked accounts",
      "name": "Accounts"
    },
    {
      "description": "Create, List and Delete Signal Groups.",
      "name": "Groups"
    },
    {
      "description": "Send and Receive Signal Messages.",
      "name": "Messages"
    },
    {
      "description": "List and Delete Attachments.",
      "name": "Attachments"
    },
    {
      "description": "Update Profile.",
      "name": "Profiles"
    },
    {
      "description": "List and Trust Identities.",
      "name": "Identities"
    },
    {
      "description": "React to messages.",
      "name": "Reactions"
    },
    {
      "description": "Send receipts for messages.",
      "name": "Receipts"
    },
    {
      "description": "Search the Signal Service.",
      "name": "Search"
    },
    {
      "description": "List and Install Sticker Packs",
      "name": "Sticker Packs"
    }
  ]
}