added swagger documentation

This commit is contained in:
Bernhard B
2020-07-03 17:32:52 +02:00
parent 65385d300e
commit e1c2853494
9 changed files with 2258 additions and 490 deletions

574
src/docs/docs.go Normal file
View File

@@ -0,0 +1,574 @@
// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
// This file was generated by swaggo/swag
package docs
import (
"bytes"
"encoding/json"
"strings"
"github.com/alecthomas/template"
"github.com/swaggo/swag"
)
var doc = `{
"schemes": {{ marshal .Schemes }},
"swagger": "2.0",
"info": {
"description": "{{.Description}}",
"title": "{{.Title}}",
"contact": {},
"license": {},
"version": "{{.Version}}"
},
"host": "{{.Host}}",
"basePath": "{{.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/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": [
{
"type": "string",
"description": "Registered Phone Number",
"name": "number",
"in": "path",
"required": true
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/api.CreateGroup"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/api.Error"
}
}
}
}
},
"/v1/groups/{number}/{groupid}": {
"delete": {
"description": "Delete a 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/qrcodelink": {
"get": {
"description": "test",
"produces": [
"application/json"
],
"tags": [
"Devices"
],
"summary": "Link device and generate QR code.",
"responses": {
"200": {
"description": "Image",
"schema": {
"type": "string"
}
}
}
}
},
"/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
}
],
"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
}
],
"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
},
{
"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/{number}": {
"post": {
"description": "Send a signal message",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Messages"
],
"summary": "Send a signal message.",
"deprecated": true,
"parameters": [
{
"type": "string",
"description": "Registered Phone Number",
"name": "number",
"in": "path",
"required": true
},
{
"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/{number}": {
"post": {
"description": "Send a signal message",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Messages"
],
"summary": "Send a signal message.",
"parameters": [
{
"type": "string",
"description": "Registered Phone Number",
"name": "number",
"in": "path",
"required": true
},
{
"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.CreateGroup": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
}
},
"api.Error": {
"type": "object",
"properties": {
"error": {
"type": "string"
}
}
},
"api.GroupEntry": {
"type": "object",
"properties": {
"active": {
"type": "boolean"
},
"blocked": {
"type": "boolean"
},
"id": {
"type": "string"
},
"internal_id": {
"type": "string"
},
"members": {
"type": "array",
"items": {
"type": "string"
}
},
"name": {
"type": "string"
}
}
},
"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"
}
}
}
}
},
"tags": [
{
"description": "List general information.",
"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"
}
]
}`
type swaggerInfo struct {
Version string
Host string
BasePath string
Schemes []string
Title string
Description string
}
// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = swaggerInfo{
Version: "1.0",
Host: "127.0.0.1:8080",
BasePath: "/",
Schemes: []string{},
Title: "Signal Cli REST API",
Description: "This is the Signal Cli REST API documentation.",
}
type s struct{}
func (s *s) ReadDoc() string {
sInfo := SwaggerInfo
sInfo.Description = strings.Replace(sInfo.Description, "\n", "\\n", -1)
t, err := template.New("swagger_info").Funcs(template.FuncMap{
"marshal": func(v interface{}) string {
a, _ := json.Marshal(v)
return string(a)
},
}).Parse(doc)
if err != nil {
return doc
}
var tpl bytes.Buffer
if err := t.Execute(&tpl, sInfo); err != nil {
return doc
}
return tpl.String()
}
func init() {
swag.Register(swag.Name, &s{})
}

512
src/docs/swagger.json Normal file
View File

@@ -0,0 +1,512 @@
{
"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/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": [
{
"type": "string",
"description": "Registered Phone Number",
"name": "number",
"in": "path",
"required": true
}
],
"responses": {
"201": {
"description": "Created",
"schema": {
"$ref": "#/definitions/api.CreateGroup"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/api.Error"
}
}
}
}
},
"/v1/groups/{number}/{groupid}": {
"delete": {
"description": "Delete a 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/qrcodelink": {
"get": {
"description": "test",
"produces": [
"application/json"
],
"tags": [
"Devices"
],
"summary": "Link device and generate QR code.",
"responses": {
"200": {
"description": "Image",
"schema": {
"type": "string"
}
}
}
}
},
"/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
}
],
"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
}
],
"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
},
{
"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/{number}": {
"post": {
"description": "Send a signal message",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Messages"
],
"summary": "Send a signal message.",
"deprecated": true,
"parameters": [
{
"type": "string",
"description": "Registered Phone Number",
"name": "number",
"in": "path",
"required": true
},
{
"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/{number}": {
"post": {
"description": "Send a signal message",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Messages"
],
"summary": "Send a signal message.",
"parameters": [
{
"type": "string",
"description": "Registered Phone Number",
"name": "number",
"in": "path",
"required": true
},
{
"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.CreateGroup": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
}
},
"api.Error": {
"type": "object",
"properties": {
"error": {
"type": "string"
}
}
},
"api.GroupEntry": {
"type": "object",
"properties": {
"active": {
"type": "boolean"
},
"blocked": {
"type": "boolean"
},
"id": {
"type": "string"
},
"internal_id": {
"type": "string"
},
"members": {
"type": "array",
"items": {
"type": "string"
}
},
"name": {
"type": "string"
}
}
},
"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"
}
}
}
}
},
"tags": [
{
"description": "List general information.",
"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"
}
]
}

335
src/docs/swagger.yaml Normal file
View File

@@ -0,0 +1,335 @@
basePath: /
definitions:
api.About:
properties:
build:
type: integer
versions:
items:
type: string
type: array
type: object
api.CreateGroup:
properties:
id:
type: string
type: object
api.Error:
properties:
error:
type: string
type: object
api.GroupEntry:
properties:
active:
type: boolean
blocked:
type: boolean
id:
type: string
internal_id:
type: string
members:
items:
type: string
type: array
name:
type: string
type: object
api.SendMessageV1:
properties:
base64_attachment:
type: string
is_group:
type: boolean
message:
type: string
number:
type: string
recipients:
items:
type: string
type: array
type: object
api.SendMessageV2:
properties:
base64_attachments:
items:
type: string
type: array
message:
type: string
number:
type: string
recipients:
items:
type: string
type: array
type: object
host: 127.0.0.1:8080
info:
contact: {}
description: This is the Signal Cli REST API documentation.
license: {}
title: Signal Cli REST API
version: "1.0"
paths:
/v1/about:
get:
description: Returns the supported API versions and the internal build nr
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.About'
summary: Lists general information about the API
tags:
- General
/v1/groups/{number}:
get:
consumes:
- application/json
description: List all Signal Groups.
parameters:
- description: Registered Phone Number
in: path
name: number
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/api.GroupEntry'
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/api.Error'
summary: List all Signal Groups.
tags:
- Groups
post:
consumes:
- application/json
description: Create a new Signal Group with the specified members.
parameters:
- description: Registered Phone Number
in: path
name: number
required: true
type: string
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/api.CreateGroup'
"400":
description: Bad Request
schema:
$ref: '#/definitions/api.Error'
summary: Create a new Signal Group.
tags:
- Groups
/v1/groups/{number}/{groupid}:
delete:
consumes:
- application/json
description: Delete a Signal Group.
parameters:
- description: Registered Phone Number
in: path
name: number
required: true
type: string
- description: Group Id
in: path
name: groupid
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
type: string
"400":
description: Bad Request
schema:
$ref: '#/definitions/api.Error'
summary: Delete a Signal Group.
tags:
- Groups
/v1/qrcodelink:
get:
description: test
produces:
- application/json
responses:
"200":
description: Image
schema:
type: string
summary: Link device and generate QR code.
tags:
- Devices
/v1/receive/{number}:
get:
consumes:
- application/json
description: Receives Signal Messages from the Signal Network.
parameters:
- description: Registered Phone Number
in: path
name: number
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
type: string
type: array
"400":
description: Bad Request
schema:
$ref: '#/definitions/api.Error'
summary: Receive Signal Messages.
tags:
- Messages
/v1/register/{number}:
post:
consumes:
- application/json
description: Register a phone number with the signal network.
parameters:
- description: Registered Phone Number
in: path
name: number
required: true
type: string
produces:
- application/json
responses:
"201": {}
"400":
description: Bad Request
schema:
$ref: '#/definitions/api.Error'
summary: Register a phone number.
tags:
- Devices
/v1/register/{number}/verify/{token}:
post:
consumes:
- application/json
description: Verify a registered phone number with the signal network.
parameters:
- description: Registered Phone Number
in: path
name: number
required: true
type: string
- description: Verification Code
in: path
name: token
required: true
type: string
produces:
- application/json
responses:
"201":
description: OK
schema:
type: string
"400":
description: Bad Request
schema:
$ref: '#/definitions/api.Error'
summary: Verify a registered phone number.
tags:
- Devices
/v1/send/{number}:
post:
consumes:
- application/json
deprecated: true
description: Send a signal message
parameters:
- description: Registered Phone Number
in: path
name: number
required: true
type: string
- description: Input Data
in: body
name: data
required: true
schema:
$ref: '#/definitions/api.SendMessageV1'
produces:
- application/json
responses:
"201":
description: OK
schema:
type: string
"400":
description: Bad Request
schema:
$ref: '#/definitions/api.Error'
summary: Send a signal message.
tags:
- Messages
/v2/send/{number}:
post:
consumes:
- application/json
description: Send a signal message
parameters:
- description: Registered Phone Number
in: path
name: number
required: true
type: string
- description: Input Data
in: body
name: data
required: true
schema:
$ref: '#/definitions/api.SendMessageV2'
produces:
- application/json
responses:
"201":
description: OK
schema:
type: string
"400":
description: Bad Request
schema:
$ref: '#/definitions/api.Error'
summary: Send a signal message.
tags:
- Messages
swagger: "2.0"
tags:
- description: List general information.
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