Updated config.Message API docs. Allow params to be input via swagger ui.

This commit is contained in:
Patrick Connolly 2018-11-05 04:32:39 +08:00
parent de00b56d9a
commit 110b840d48
5 changed files with 156 additions and 40 deletions

View File

@ -108,6 +108,7 @@ func (b *Api) handleDocsRedirect(c echo.Context) error {
// @Summary Create/Update a message
// @Accept json
// @Produce json
// @Param body body object true "Message object to create"
// @Success 200 {object} config.Message
// @Router /message [post]
func (b *API) handlePostMessage(c echo.Context) error {
@ -127,7 +128,7 @@ func (b *API) handlePostMessage(c echo.Context) error {
}
// handleMessages godoc
// @Summary Lists messages
// @Summary List of new messages
// @Produce json
// @Success 200 {array} config.Message
// @Router /messages [get]
@ -141,7 +142,7 @@ func (b *API) handleMessages(c echo.Context) error {
// handleStream godoc
// @Summary Streams realtime messages
// @Produce json
// @Produce json-stream
// @Success 200 {object} config.Message
// @Router /stream [get]
func (b *API) handleStream(c echo.Context) error {

View File

@ -27,18 +27,30 @@ const (
)
type Message struct {
Text string `json:"text"`
Channel string `json:"channel"`
Username string `json:"username"`
UserID string `json:"userid"` // userid on the bridge
Avatar string `json:"avatar"`
Account string `json:"account"`
Event string `json:"event"`
Protocol string `json:"protocol"`
Gateway string `json:"gateway"`
// Content of the message
Text string `json:"text" example:"Testing, testing, 1-2-3."`
// Human-readable channel name
Channel string `json:"channel" example:"test-channel"`
// Human-readable username
Username string `json:"username" example:"alice"`
// userid on the bridge
UserID string `json:"userid" example:"U4MCXJKNC"`
// URL to an avatar image
Avatar string `json:"avatar" example:"https://secure.gravatar.com/avatar/1234567890abcdef1234567890abcdef.jpg"`
// Unique account name of format "<protocol>.<slug>"
Account string `json:"account" example:"slack.myteam"`
// Can be blank.
Event string `json:"event" example:""`
// Chat protocol of incoming message
Protocol string `json:"protocol" example:"slack"`
// Name of the gateway
Gateway string `json:"gateway" example:"test-channel-gateway"`
// Unique ID of a parent message, if threaded
ParentID string `json:"parent_id"`
Timestamp time.Time `json:"timestamp"`
ID string `json:"id"`
Timestamp time.Time `json:"timestamp" example:"1541361213.030700"`
// Unique ID of message on the gateway
ID string `json:"id" example:"slack 1541361213.030700"`
// Extra data that doesn't fit in other fields. Used for processing incoming messages.
Extra map[string][]interface{}
}

View File

@ -1,6 +1,6 @@
// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
// This file was generated by swaggo/swag at
// 2018-11-05 01:51:14.853722 +0800 CST m=+0.078800065
// 2018-11-05 04:31:47.316226 +0800 CST m=+0.167027083
package docs
@ -30,6 +30,17 @@ var doc = `{
"application/json"
],
"summary": "Create/Update a message",
"parameters": [
{
"description": "Message object to create",
"name": "body",
"in": "body",
"required": true,
"schema": {
"type": "object"
}
}
],
"responses": {
"200": {
"description": "OK",
@ -46,7 +57,7 @@ var doc = `{
"produces": [
"application/json"
],
"summary": "Lists messages",
"summary": "List of new messages",
"responses": {
"200": {
"description": "OK",
@ -63,7 +74,7 @@ var doc = `{
"/stream": {
"get": {
"produces": [
"application/json"
"application/x-json-stream"
],
"summary": "Streams realtime messages",
"responses": {
@ -83,40 +94,61 @@ var doc = `{
"type": "object",
"properties": {
"account": {
"type": "string"
"description": "Unique account name of format \"\u003cprotocol\u003e.\u003cslug\u003e\"\n",
"type": "string",
"example": "slack.myteam"
},
"avatar": {
"type": "string"
"description": "URL to an avatar image\n",
"type": "string",
"example": "https://secure.gravatar.com/avatar/1234567890abcdef1234567890abcdef.jpg"
},
"channel": {
"type": "string"
"description": "Human-readable channel name\n",
"type": "string",
"example": "test-channel"
},
"event": {
"description": "Can be blank.\n",
"type": "string"
},
"extra": {
"description": "Extra data that doesn't fit in other fields. Used for processing incoming messages.\n",
"type": "object"
},
"gateway": {
"type": "string"
"description": "Name of the gateway\n",
"type": "string",
"example": "test-channel-gateway"
},
"id": {
"type": "string"
"description": "Unique ID of message on the gateway\n",
"type": "string",
"example": "slack 1541361213.030700"
},
"protocol": {
"type": "string"
"description": "Chat protocol of incoming message\n",
"type": "string",
"example": "slack"
},
"text": {
"type": "string"
"description": "Content of the message\n",
"type": "string",
"example": "Testing, testing, 1-2-3."
},
"timestamp": {
"type": "string"
"type": "string",
"example": "1541361213.030700"
},
"userid": {
"type": "string"
"description": "userid on the bridge\n",
"type": "string",
"example": "U4MCXJKNC"
},
"username": {
"type": "string"
"description": "Human-readable username\n",
"type": "string",
"example": "alice"
}
}
}

View File

@ -20,6 +20,17 @@
"application/json"
],
"summary": "Create/Update a message",
"parameters": [
{
"description": "Message object to create",
"name": "body",
"in": "body",
"required": true,
"schema": {
"type": "object"
}
}
],
"responses": {
"200": {
"description": "OK",
@ -36,7 +47,7 @@
"produces": [
"application/json"
],
"summary": "Lists messages",
"summary": "List of new messages",
"responses": {
"200": {
"description": "OK",
@ -53,7 +64,7 @@
"/stream": {
"get": {
"produces": [
"application/json"
"application/x-json-stream"
],
"summary": "Streams realtime messages",
"responses": {
@ -73,40 +84,61 @@
"type": "object",
"properties": {
"account": {
"type": "string"
"description": "Unique account name of format \"\u003cprotocol\u003e.\u003cslug\u003e\"\n",
"type": "string",
"example": "slack.myteam"
},
"avatar": {
"type": "string"
"description": "URL to an avatar image\n",
"type": "string",
"example": "https://secure.gravatar.com/avatar/1234567890abcdef1234567890abcdef.jpg"
},
"channel": {
"type": "string"
"description": "Human-readable channel name\n",
"type": "string",
"example": "test-channel"
},
"event": {
"description": "Can be blank.\n",
"type": "string"
},
"extra": {
"description": "Extra data that doesn't fit in other fields. Used for processing incoming messages.\n",
"type": "object"
},
"gateway": {
"type": "string"
"description": "Name of the gateway\n",
"type": "string",
"example": "test-channel-gateway"
},
"id": {
"type": "string"
"description": "Unique ID of message on the gateway\n",
"type": "string",
"example": "slack 1541361213.030700"
},
"protocol": {
"type": "string"
"description": "Chat protocol of incoming message\n",
"type": "string",
"example": "slack"
},
"text": {
"type": "string"
"description": "Content of the message\n",
"type": "string",
"example": "Testing, testing, 1-2-3."
},
"timestamp": {
"type": "string"
"type": "string",
"example": "1541361213.030700"
},
"userid": {
"type": "string"
"description": "userid on the bridge\n",
"type": "string",
"example": "U4MCXJKNC"
},
"username": {
"type": "string"
"description": "Human-readable username\n",
"type": "string",
"example": "alice"
}
}
}

View File

@ -3,28 +3,60 @@ definitions:
config.Message:
properties:
account:
description: |
Unique account name of format "<protocol>.<slug>"
example: slack.myteam
type: string
avatar:
description: |
URL to an avatar image
example: https://secure.gravatar.com/avatar/1234567890abcdef1234567890abcdef.jpg
type: string
channel:
description: |
Human-readable channel name
example: test-channel
type: string
event:
description: |
Can be blank.
type: string
extra:
description: |
Extra data that doesn't fit in other fields. Used for processing incoming messages.
type: object
gateway:
description: |
Name of the gateway
example: test-channel-gateway
type: string
id:
description: |
Unique ID of message on the gateway
example: slack 1541361213.030700
type: string
protocol:
description: |
Chat protocol of incoming message
example: slack
type: string
text:
description: |
Content of the message
example: Testing, testing, 1-2-3.
type: string
timestamp:
example: "1541361213.030700"
type: string
userid:
description: |
userid on the bridge
example: U4MCXJKNC
type: string
username:
description: |
Human-readable username
example: alice
type: string
type: object
info:
@ -39,6 +71,13 @@ paths:
post:
consumes:
- application/json
parameters:
- description: Message object to create
in: body
name: body
required: true
schema:
type: object
produces:
- application/json
responses:
@ -59,11 +98,11 @@ paths:
items:
$ref: '#/definitions/config.Message'
type: array
summary: Lists messages
summary: List of new messages
/stream:
get:
produces:
- application/json
- application/x-json-stream
responses:
"200":
description: OK