{
    "swagger": "2.0",
    "info": {
        "description": "This is the Signal Cli REST API documentation.",
        "title": "Signal Cli REST API",
        "contact": {},
        "license": {},
        "version": "1.0"
    },
    "host": "127.0.0.1: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/api.About"
                        }
                    }
                }
            }
        },
        "/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": {
                    "201": {
                        "description": "OK",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "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/api.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/api.GroupEntry"
                        }
                    },
                    "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}/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": {
                    "200": {
                        "description": "OK",
                        "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": {
                    "200": {
                        "description": "OK",
                        "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": {
                    "200": {
                        "description": "OK",
                        "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/api.IdentityEntry"
                            }
                        }
                    }
                }
            }
        },
        "/v1/identities/{number}/trust/{numberToTrust}": {
            "put": {
                "description": "Trust an identity.",
                "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
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Image",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/api.Error"
                        }
                    }
                }
            }
        },
        "/v1/receive/{number}": {
            "get": {
                "description": "Receives Signal Messages from the Signal Network.",
                "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"
                    }
                ],
                "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": {},
                    "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/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"
                        }
                    }
                }
            }
        },
        "/v2/send": {
            "post": {
                "description": "Send a signal message",
                "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": "OK",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/api.Error"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "api.About": {
            "type": "object",
            "properties": {
                "build": {
                    "type": "integer"
                },
                "versions": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "api.Configuration": {
            "type": "object",
            "properties": {
                "logging": {
                    "type": "object",
                    "$ref": "#/definitions/api.LoggingConfiguration"
                }
            }
        },
        "api.CreateGroupRequest": {
            "type": "object",
            "properties": {
                "members": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "api.CreateGroupResponse": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                }
            }
        },
        "api.Error": {
            "type": "object",
            "properties": {
                "error": {
                    "type": "string"
                }
            }
        },
        "api.GroupEntry": {
            "type": "object",
            "properties": {
                "blocked": {
                    "type": "boolean"
                },
                "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"
                    }
                }
            }
        },
        "api.IdentityEntry": {
            "type": "object",
            "properties": {
                "added": {
                    "type": "string"
                },
                "fingerprint": {
                    "type": "string"
                },
                "number": {
                    "type": "string"
                },
                "safety_number": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "api.LoggingConfiguration": {
            "type": "object",
            "properties": {
                "Level": {
                    "type": "string"
                }
            }
        },
        "api.RegisterNumberRequest": {
            "type": "object",
            "properties": {
                "captcha": {
                    "type": "string"
                },
                "use_voice": {
                    "type": "boolean"
                }
            }
        },
        "api.SendMessageV1": {
            "type": "object",
            "properties": {
                "base64_attachment": {
                    "type": "string"
                },
                "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"
                    }
                },
                "message": {
                    "type": "string"
                },
                "number": {
                    "type": "string"
                },
                "recipients": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            }
        },
        "api.TrustIdentityRequest": {
            "type": "object",
            "properties": {
                "verified_safety_number": {
                    "type": "string"
                }
            }
        },
        "api.UpdateProfileRequest": {
            "type": "object",
            "properties": {
                "base64_avatar": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "api.VerifyNumberSettings": {
            "type": "object",
            "properties": {
                "pin": {
                    "type": "string"
                }
            }
        }
    },
    "tags": [
        {
            "description": "Some general endpoints.",
            "name": "General"
        },
        {
            "description": "Register and link Devices.",
            "name": "Devices"
        },
        {
            "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"
        }
    ]
}