Chore: Swagger Docs V1 (#546)
This commit is contained in:
9
swagger/definitions/error/bad_request.yml
Normal file
9
swagger/definitions/error/bad_request.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
title: data
|
||||
type: object
|
||||
properties:
|
||||
description:
|
||||
type: string
|
||||
errors:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/definitions/request_error'
|
||||
8
swagger/definitions/error/request.yml
Normal file
8
swagger/definitions/error/request.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
type: object
|
||||
properties:
|
||||
field:
|
||||
type: string
|
||||
message:
|
||||
type: string
|
||||
code:
|
||||
type: string
|
||||
39
swagger/definitions/index.yml
Normal file
39
swagger/definitions/index.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
# ERROR
|
||||
bad_request_error:
|
||||
$ref: ./error/bad_request.yml
|
||||
request_error:
|
||||
$ref: ./error/request.yml
|
||||
|
||||
# RESOURCE
|
||||
contact:
|
||||
$ref: ./resource/contact.yml
|
||||
conversation:
|
||||
$ref: ./resource/conversation.yml
|
||||
|
||||
# RESPONSE
|
||||
extended_contact:
|
||||
allOf:
|
||||
- $ref: '#/definitions/contact'
|
||||
- $ref: ./resource/extension/contact/show.yml
|
||||
contact_base:
|
||||
allOf:
|
||||
- $ref: '#/definitions/contact'
|
||||
- $ref: ./resource/extension/generic.yml
|
||||
contact_list:
|
||||
type: array
|
||||
items:
|
||||
allOf:
|
||||
- $ref: '#/definitions/contact'
|
||||
- $ref: ./resource/extension/generic.yml
|
||||
contact_conversations:
|
||||
type: array
|
||||
items:
|
||||
allOf:
|
||||
- $ref: '#/definitions/conversation'
|
||||
- $ref: ./resource/extension/contact/conversation.yml
|
||||
|
||||
# REQUEST
|
||||
contact_create:
|
||||
$ref: ./request/contact/create.yml
|
||||
contact_update:
|
||||
$ref: ./request/contact/update.yml
|
||||
6
swagger/definitions/request/contact/create.yml
Normal file
6
swagger/definitions/request/contact/create.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
type: object
|
||||
properties:
|
||||
account_id:
|
||||
type: number
|
||||
inbox_id:
|
||||
type: number
|
||||
8
swagger/definitions/request/contact/update.yml
Normal file
8
swagger/definitions/request/contact/update.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
email:
|
||||
type: string
|
||||
phone_number:
|
||||
type: string
|
||||
12
swagger/definitions/resource/contact.yml
Normal file
12
swagger/definitions/resource/contact.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
type: object
|
||||
properties:
|
||||
email:
|
||||
type: string
|
||||
name:
|
||||
type: string
|
||||
phone_number:
|
||||
type: string
|
||||
thumbnail:
|
||||
type: string
|
||||
additional_attributes:
|
||||
type: object
|
||||
21
swagger/definitions/resource/conversation.yml
Normal file
21
swagger/definitions/resource/conversation.yml
Normal file
@@ -0,0 +1,21 @@
|
||||
type: object
|
||||
properties:
|
||||
display_id:
|
||||
type: number
|
||||
messages:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
inbox_id:
|
||||
type: number
|
||||
status:
|
||||
type: string
|
||||
enum: ['open', 'resolved']
|
||||
timestamp:
|
||||
type: string
|
||||
user_last_seen_at:
|
||||
type: string
|
||||
agent_last_seen_at:
|
||||
type: agent_last_seen_at
|
||||
unread_count:
|
||||
type: number
|
||||
@@ -0,0 +1,18 @@
|
||||
type: object
|
||||
properties:
|
||||
meta:
|
||||
type: object
|
||||
properties:
|
||||
sender:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: number
|
||||
name:
|
||||
type: string
|
||||
thumbnail:
|
||||
type: string
|
||||
channel:
|
||||
type: string
|
||||
assignee:
|
||||
type: object
|
||||
5
swagger/definitions/resource/extension/contact/list.yml
Normal file
5
swagger/definitions/resource/extension/contact/list.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
type: object
|
||||
properties:
|
||||
allOf:
|
||||
- $ref: '#/definitions/contact'
|
||||
- $ref: ./resource/extension/contact.yaml
|
||||
7
swagger/definitions/resource/extension/contact/show.yml
Normal file
7
swagger/definitions/resource/extension/contact/show.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: number
|
||||
availability_status:
|
||||
type: string
|
||||
enum: ['online', 'offline']
|
||||
4
swagger/definitions/resource/extension/generic.yml
Normal file
4
swagger/definitions/resource/extension/generic.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: number
|
||||
23
swagger/index.html
Normal file
23
swagger/index.html
Normal file
@@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>ReDoc</title>
|
||||
<!-- needed for adaptive design -->
|
||||
<meta charset="utf-8"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="https://fonts.googleapis.com/css?family=Montserrat:300,400,700|Roboto:300,400,700" rel="stylesheet">
|
||||
<!--
|
||||
ReDoc doesn't change outer page styles
|
||||
-->
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<redoc spec-url='/swagger/swagger.json'></redoc>
|
||||
<script src="https://cdn.jsdelivr.net/npm/redoc@next/bundles/redoc.standalone.js"> </script>
|
||||
</body>
|
||||
</html>
|
||||
17
swagger/index.yml
Normal file
17
swagger/index.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
swagger: 2.0
|
||||
info:
|
||||
description: This is the api documentation for Chatwoot server.
|
||||
version: 1.0.0
|
||||
title: Chatwoot
|
||||
termsOfService: https://www.chatwoot.com/terms-of-service/
|
||||
contact:
|
||||
email: support@chatwoot.com
|
||||
license:
|
||||
name: MIT License
|
||||
url: https://opensource.org/licenses/MIT
|
||||
host: app.chatwoot.com
|
||||
basePath: /api/v1/
|
||||
paths:
|
||||
$ref: ./paths/index.yml
|
||||
definitions:
|
||||
$ref: ./definitions/index.yml
|
||||
18
swagger/paths/contact/conversations.yml
Normal file
18
swagger/paths/contact/conversations.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
get:
|
||||
tags: [Contact]
|
||||
summary: Conversations
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
type: number
|
||||
description: ID of contact
|
||||
required: true
|
||||
responses:
|
||||
200:
|
||||
description: Success
|
||||
schema:
|
||||
$ref: '#/definitions/contact_conversations'
|
||||
404:
|
||||
description: Contact not found
|
||||
403:
|
||||
description: Access denied
|
||||
42
swagger/paths/contact/crud.yml
Normal file
42
swagger/paths/contact/crud.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
get:
|
||||
tags: [Contact]
|
||||
summary: Show Contact
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
type: number
|
||||
description: ID of contact
|
||||
required: true
|
||||
responses:
|
||||
200:
|
||||
description: Success
|
||||
schema:
|
||||
$ref: '#/definitions/extended_contact'
|
||||
404:
|
||||
description: Contact not found
|
||||
403:
|
||||
description: Access denied
|
||||
|
||||
put:
|
||||
tags: [Contact]
|
||||
summary: Update Contact
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
type: number
|
||||
description: ID of the contact
|
||||
required: true
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/contact_update'
|
||||
responses:
|
||||
204:
|
||||
description: Success
|
||||
schema:
|
||||
$ref: '#/definitions/contact_base'
|
||||
404:
|
||||
description: Contact not found
|
||||
403:
|
||||
description: Access denied
|
||||
36
swagger/paths/contact/list_create.yml
Normal file
36
swagger/paths/contact/list_create.yml
Normal file
@@ -0,0 +1,36 @@
|
||||
get:
|
||||
tags: [Contact]
|
||||
description: Listing all contacts with pagination
|
||||
summary: List contacts
|
||||
parameters:
|
||||
- name: query_hash
|
||||
in: query
|
||||
type: string
|
||||
responses:
|
||||
200:
|
||||
description: Success
|
||||
schema:
|
||||
$ref: '#/definitions/contact_list'
|
||||
400:
|
||||
description: Bad Request Error
|
||||
schema:
|
||||
$ref: '#/definitions/bad_request_error'
|
||||
|
||||
post:
|
||||
tags: [Contact]
|
||||
description: Create a contact
|
||||
parameters:
|
||||
- name: data
|
||||
in: body
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/contact_create'
|
||||
responses:
|
||||
200:
|
||||
description: Success
|
||||
schema:
|
||||
$ref: '#/definitions/extended_contact'
|
||||
400:
|
||||
description: Bad Request Error
|
||||
schema:
|
||||
$ref: '#/definitions/bad_request_error'
|
||||
7
swagger/paths/index.yml
Normal file
7
swagger/paths/index.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
# Contacts
|
||||
/contacts:
|
||||
$ref: ./contact/list_create.yml
|
||||
/contacts/{id}:
|
||||
$ref: ./contact/crud.yml
|
||||
/contacts/{id}/conversations:
|
||||
$ref: ./contact/conversations.yml
|
||||
386
swagger/swagger.json
Normal file
386
swagger/swagger.json
Normal file
@@ -0,0 +1,386 @@
|
||||
{
|
||||
"swagger": 2.0,
|
||||
"info": {
|
||||
"description": "This is the api documentation for Chatwoot server.",
|
||||
"version": "1.0.0",
|
||||
"title": "Chatwoot",
|
||||
"termsOfService": "https://www.chatwoot.com/terms-of-service/",
|
||||
"contact": {
|
||||
"email": "support@chatwoot.com"
|
||||
},
|
||||
"license": {
|
||||
"name": "MIT License",
|
||||
"url": "https://opensource.org/licenses/MIT"
|
||||
},
|
||||
"host": "app.chatwoot.com",
|
||||
"basePath": "/api/v1/"
|
||||
},
|
||||
"paths": {
|
||||
"/contacts": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"Contact"
|
||||
],
|
||||
"description": "Listing all contacts with pagination",
|
||||
"summary": "List contacts",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "query_hash",
|
||||
"in": "query",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Success",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/contact_list"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Bad Request Error",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/bad_request_error"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"post": {
|
||||
"tags": [
|
||||
"Contact"
|
||||
],
|
||||
"description": "Create a contact",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "data",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/contact_create"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Success",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/extended_contact"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Bad Request Error",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/bad_request_error"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/contacts/{id}": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"Contact"
|
||||
],
|
||||
"summary": "Show Contact",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"type": "number",
|
||||
"description": "ID of contact",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Success",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/extended_contact"
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "Contact not found"
|
||||
},
|
||||
"403": {
|
||||
"description": "Access denied"
|
||||
}
|
||||
}
|
||||
},
|
||||
"put": {
|
||||
"tags": [
|
||||
"Contact"
|
||||
],
|
||||
"summary": "Update Contact",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"type": "number",
|
||||
"description": "ID of the contact",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "data",
|
||||
"in": "body",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"$ref": "#/definitions/contact_update"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"204": {
|
||||
"description": "Success",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/contact_base"
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "Contact not found"
|
||||
},
|
||||
"403": {
|
||||
"description": "Access denied"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/contacts/{id}/conversations": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"Contact"
|
||||
],
|
||||
"summary": "Conversations",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"in": "path",
|
||||
"type": "number",
|
||||
"description": "ID of contact",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Success",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/contact_conversations"
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "Contact not found"
|
||||
},
|
||||
"403": {
|
||||
"description": "Access denied"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"definitions": {
|
||||
"bad_request_error": {
|
||||
"title": "data",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"errors": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/request_error"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"request_error": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"field": {
|
||||
"type": "string"
|
||||
},
|
||||
"message": {
|
||||
"type": "string"
|
||||
},
|
||||
"code": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"contact": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"email": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"phone_number": {
|
||||
"type": "string"
|
||||
},
|
||||
"thumbnail": {
|
||||
"type": "string"
|
||||
},
|
||||
"additional_attributes": {
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
},
|
||||
"conversation": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"display_id": {
|
||||
"type": "number"
|
||||
},
|
||||
"messages": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"inbox_id": {
|
||||
"type": "number"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"open",
|
||||
"resolved"
|
||||
]
|
||||
},
|
||||
"timestamp": {
|
||||
"type": "string"
|
||||
},
|
||||
"user_last_seen_at": {
|
||||
"type": "string"
|
||||
},
|
||||
"agent_last_seen_at": {
|
||||
"type": "agent_last_seen_at"
|
||||
},
|
||||
"unread_count": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
},
|
||||
"extended_contact": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/definitions/contact"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "number"
|
||||
},
|
||||
"availability_status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"online",
|
||||
"offline"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"contact_base": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/definitions/contact"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"contact_list": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/definitions/contact"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"contact_conversations": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/definitions/conversation"
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"meta": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"sender": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "number"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"thumbnail": {
|
||||
"type": "string"
|
||||
},
|
||||
"channel": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"assignee": {
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"contact_create": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"account_id": {
|
||||
"type": "number"
|
||||
},
|
||||
"inbox_id": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
},
|
||||
"contact_update": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"email": {
|
||||
"type": "string"
|
||||
},
|
||||
"phone_number": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user