mirror of
https://github.com/SecurityBrewery/catalyst.git
synced 2025-12-05 23:02:43 +01:00
1132 lines
50 KiB
YAML
1132 lines
50 KiB
YAML
openapi: 3.0.3
|
|
info:
|
|
title: Ticketing System API
|
|
version: 1.0.0
|
|
servers:
|
|
- description: Ticketing System API
|
|
url: '{scheme}://{address}:{port}'
|
|
variables:
|
|
address:
|
|
default: localhost
|
|
port:
|
|
default: "8081"
|
|
scheme:
|
|
default: http
|
|
enum:
|
|
- https
|
|
- http
|
|
paths:
|
|
/tickets:
|
|
get:
|
|
summary: List all tickets
|
|
operationId: listTickets
|
|
parameters:
|
|
- { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0 } }
|
|
- { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10 } }
|
|
responses:
|
|
"200": { "description": "A list of tickets", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExtendedTicket" } } } }, "headers": { "X-Total-Count": { "schema": { "type": "integer" }, "description": "Total number of tickets" } } }
|
|
security: [ { OAuth2: [ "ticket:read" ] } ]
|
|
post:
|
|
summary: Create a new ticket
|
|
operationId: createTicket
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewTicket" } } } }
|
|
responses:
|
|
"200": { "description": "Ticket created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Ticket" } } } }
|
|
security: [ { "OAuth2": [ "ticket:write" ] } ]
|
|
/tickets/{id}:
|
|
get:
|
|
summary: Get a single ticket by ID
|
|
operationId: getTicket
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A single ticket", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedTicket" } } } }
|
|
security: [ { OAuth2: [ "ticket:read" ] } ]
|
|
patch:
|
|
summary: Update a ticket by ID
|
|
operationId: updateTicket
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TicketUpdate" } } } }
|
|
responses:
|
|
"200": { "description": "Tickets updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Ticket" } } } }
|
|
security: [ { OAuth2: [ "ticket:write" ] } ]
|
|
delete:
|
|
summary: Delete a ticket by ID
|
|
operationId: deleteTicket
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"204": { "description": "Tickets deleted" }
|
|
security: [ { OAuth2: [ "ticket:write" ] } ]
|
|
/comments:
|
|
get:
|
|
summary: List all comments
|
|
operationId: listComments
|
|
parameters:
|
|
- { "name": "ticket", "in": "query", "required": false, "schema": { "type": "string" } }
|
|
- { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0 } }
|
|
- { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10 } }
|
|
responses:
|
|
"200": { "description": "A list of comments", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExtendedComment" } } } }, "headers": { "X-Total-Count": { "schema": { "type": "integer" }, "description": "Total number of comments" } } }
|
|
security: [ { "OAuth2": [ "ticket:read" ] } ]
|
|
post:
|
|
summary: Create a new comment
|
|
operationId: createComment
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewComment" } } } }
|
|
responses:
|
|
"200": { "description": "Comment created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Comment" } } } }
|
|
security: [ { OAuth2: [ "ticket:write" ] } ]
|
|
/comments/{id}:
|
|
get:
|
|
summary: Get a single comment by ID
|
|
operationId: getComment
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A single comment", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedComment" } } } }
|
|
security: [ { OAuth2: [ "ticket:read" ] } ]
|
|
patch:
|
|
summary: Update a comment by ID
|
|
operationId: updateComment
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CommentUpdate" } } } }
|
|
responses:
|
|
"200": { "description": "Comment updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Comment" } } } }
|
|
security: [ { OAuth2: [ "ticket:write" ] } ]
|
|
delete:
|
|
summary: Delete a comment by ID
|
|
operationId: deleteComment
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"204": { "description": "Comment deleted" }
|
|
security: [ { OAuth2: [ "ticket:write" ] } ]
|
|
/files:
|
|
get:
|
|
summary: List all files
|
|
operationId: listFiles
|
|
parameters:
|
|
- { "name": "ticket", "in": "query", "required": false, "schema": { "type": "string" } }
|
|
- { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0 } }
|
|
- { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10 } }
|
|
responses:
|
|
"200": { "description": "A list of files", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/File" } } } }, "headers": { "X-Total-Count": { "schema": { "type": "integer" }, "description": "Total number of files" } } }
|
|
security: [ { OAuth2: [ "file:read" ] } ]
|
|
post:
|
|
summary: Create a new file
|
|
operationId: createFile
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewFile" } } } }
|
|
responses:
|
|
"200": { "description": "File created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/File" } } } }
|
|
security: [ { OAuth2: [ "file:write" ] } ]
|
|
/files/{id}:
|
|
get:
|
|
summary: Get a single file by ID
|
|
operationId: getFile
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A single file", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/File" } } } }
|
|
security: [ { OAuth2: [ "file:read" ] } ]
|
|
delete:
|
|
summary: Delete a file by ID
|
|
operationId: deleteFile
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"204": { "description": "File deleted" }
|
|
security: [ { OAuth2: [ "file:write" ] } ]
|
|
/files/{id}/download:
|
|
get:
|
|
summary: Download a file by ID
|
|
operationId: downloadFile
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "File content", "content": { "application/octet-stream": { } }, "headers": { "Content-Disposition": { "schema": { "type": "string" } }, "Content-Type": { "schema": { "type": "string" } } } }
|
|
security: [ { OAuth2: [ "file:read" ] } ]
|
|
/links:
|
|
get:
|
|
summary: List all links
|
|
operationId: listLinks
|
|
parameters:
|
|
- { "name": "ticket", "in": "query", "required": false, "schema": { "type": "string" } }
|
|
- { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0 } }
|
|
- { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10 } }
|
|
responses:
|
|
"200": { "description": "A list of links", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Link" } } } }, "headers": { "X-Total-Count": { "schema": { "type": "integer" }, "description": "Total number of links" } } }
|
|
security: [ { OAuth2: [ "ticket:read" ] } ]
|
|
post:
|
|
summary: Create a new link
|
|
operationId: createLink
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewLink" } } } }
|
|
responses:
|
|
"200": { "description": "Link created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Link" } } } }
|
|
security: [ { OAuth2: [ "ticket:write" ] } ]
|
|
/links/{id}:
|
|
get:
|
|
summary: Get a single link by ID
|
|
operationId: getLink
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A single link", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Link" } } } }
|
|
security: [ { OAuth2: [ "ticket:read" ] } ]
|
|
patch:
|
|
summary: Update a link by ID
|
|
operationId: updateLink
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LinkUpdate" } } } }
|
|
responses:
|
|
"200": { "description": "Link updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Link" } } } }
|
|
security: [ { OAuth2: [ "ticket:write" ] } ]
|
|
delete:
|
|
summary: Delete a link by ID
|
|
operationId: deleteLink
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"204": { "description": "Link deleted" }
|
|
security: [ { OAuth2: [ "ticket:write" ] } ]
|
|
/tasks:
|
|
get:
|
|
summary: List all tasks
|
|
operationId: listTasks
|
|
parameters:
|
|
- { "name": "ticket", "in": "query", "required": false, "schema": { "type": "string" } }
|
|
- { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0 } }
|
|
- { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10 } }
|
|
responses:
|
|
"200": { "description": "A list of tasks", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ExtendedTask" } } } }, "headers": { "X-Total-Count": { "schema": { "type": "integer" }, "description": "Total number of tasks" } } }
|
|
security: [ { OAuth2: [ "ticket:read" ] } ]
|
|
post:
|
|
summary: Create a new task
|
|
operationId: createTask
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewTask" } } } }
|
|
responses:
|
|
"200": { "description": "Task created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Task" } } } }
|
|
security: [ { OAuth2: [ "ticket:write" ] } ]
|
|
/tasks/{id}:
|
|
get:
|
|
summary: Get a single task by ID
|
|
operationId: getTask
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A single task", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExtendedTask" } } } }
|
|
security: [ { OAuth2: [ "ticket:read" ] } ]
|
|
patch:
|
|
summary: Update a task by ID
|
|
operationId: updateTask
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TaskUpdate" } } } }
|
|
responses:
|
|
"200": { "description": "Task updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Task" } } } }
|
|
security: [ { OAuth2: [ "ticket:write" ] } ]
|
|
delete:
|
|
summary: Delete a task by ID
|
|
operationId: deleteTask
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"204": { "description": "Task deleted" }
|
|
security: [ { OAuth2: [ "ticket:write" ] } ]
|
|
/timeline:
|
|
get:
|
|
summary: List all timeline items
|
|
operationId: listTimeline
|
|
parameters:
|
|
- { "name": "ticket", "in": "query", "required": false, "schema": { "type": "string" } }
|
|
- { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0 } }
|
|
- { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10 } }
|
|
responses:
|
|
"200": { "description": "A list of timeline items", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TimelineEntry" } } } }, "headers": { "X-Total-Count": { "schema": { "type": "integer" }, "description": "Total number of timeline items" } } }
|
|
security: [ { OAuth2: [ "ticket:read" ] } ]
|
|
post:
|
|
summary: Create a new timeline item
|
|
operationId: createTimeline
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewTimelineEntry" } } } }
|
|
responses:
|
|
"200": { "description": "Timeline item created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TimelineEntry" } } } }
|
|
security: [ { OAuth2: [ "ticket:write" ] } ]
|
|
/timeline/{id}:
|
|
get:
|
|
summary: Get a single timeline item by ID
|
|
operationId: getTimeline
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A single timeline item", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TimelineEntry" } } } }
|
|
security: [ { OAuth2: [ "ticket:read" ] } ]
|
|
patch:
|
|
summary: Update a timeline item by ID
|
|
operationId: updateTimeline
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TimelineEntryUpdate" } } } }
|
|
responses:
|
|
"200": { "description": "Timeline item updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TimelineEntry" } } } }
|
|
security: [ { OAuth2: [ "ticket:write" ] } ]
|
|
delete:
|
|
summary: Delete a timeline item by ID
|
|
operationId: deleteTimeline
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"204": { "description": "Timeline item deleted" }
|
|
security: [ { OAuth2: [ "ticket:write" ] } ]
|
|
/reactions:
|
|
get:
|
|
summary: List all reactions
|
|
operationId: listReactions
|
|
parameters:
|
|
- { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0 } }
|
|
- { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10 } }
|
|
responses:
|
|
"200": { "description": "A list of reactions", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Reaction" } } } }, "headers": { "X-Total-Count": { "schema": { "type": "integer" }, "description": "Total number of reactions" } } }
|
|
security: [ { OAuth2: [ "reaction:read" ] } ]
|
|
post:
|
|
summary: Create a new reaction
|
|
operationId: createReaction
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewReaction" } } } }
|
|
responses:
|
|
"200": { "description": "Reactions created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Reaction" } } } }
|
|
security: [ { OAuth2: [ "reaction:write" ] } ]
|
|
/reactions/{id}:
|
|
get:
|
|
summary: Get a single reaction by ID
|
|
operationId: getReaction
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A single reaction", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Reaction" } } } }
|
|
security: [ { OAuth2: [ "reaction:read" ] } ]
|
|
patch:
|
|
summary: Update a reaction by ID
|
|
operationId: updateReaction
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReactionUpdate" } } } }
|
|
responses:
|
|
"200": { "description": "Reactions updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Reaction" } } } }
|
|
security: [ { OAuth2: [ "reaction:write" ] } ]
|
|
delete:
|
|
summary: Delete a reaction by ID
|
|
operationId: deleteReaction
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"204": { "description": "Reactions deleted" }
|
|
security: [ { OAuth2: [ "reaction:write" ] } ]
|
|
/types:
|
|
get:
|
|
summary: List all types
|
|
operationId: listTypes
|
|
parameters:
|
|
- { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0 } }
|
|
- { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10 } }
|
|
responses:
|
|
"200": { "description": "A list of types", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Type" } } } }, "headers": { "X-Total-Count": { "schema": { "type": "integer" }, "description": "Total number of types" } } }
|
|
security: [ { OAuth2: [ "type:read" ] } ]
|
|
post:
|
|
summary: Create a new type
|
|
operationId: createType
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewType" } } } }
|
|
responses:
|
|
"200": { "description": "Types created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Type" } } } }
|
|
security: [ { OAuth2: [ "type:write" ] } ]
|
|
/types/{id}:
|
|
get:
|
|
summary: Get a single type by ID
|
|
operationId: getType
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A single type", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Type" } } } }
|
|
security: [ { OAuth2: [ "type:read" ] } ]
|
|
patch:
|
|
summary: Update a type by ID
|
|
operationId: updateType
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TypeUpdate" } } } }
|
|
responses:
|
|
"200": { "description": "Types updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Type" } } } }
|
|
security: [ { OAuth2: [ "type:write" ] } ]
|
|
delete:
|
|
summary: Delete a type by ID
|
|
operationId: deleteType
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"204": { "description": "Types deleted" }
|
|
security: [ { OAuth2: [ "type:write" ] } ]
|
|
/users:
|
|
get:
|
|
summary: List all users
|
|
operationId: listUsers
|
|
parameters:
|
|
- { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0 } }
|
|
- { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10 } }
|
|
responses:
|
|
"200": { "description": "A list of users", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/User" } } } }, "headers": { "X-Total-Count": { "schema": { "type": "integer" }, "description": "Total number of users" } } }
|
|
security: [ { OAuth2: [ "user:read" ] } ]
|
|
post:
|
|
summary: Create a new user
|
|
operationId: createUser
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewUser" } } } }
|
|
responses:
|
|
"200": { "description": "Users created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } }
|
|
security: [ { OAuth2: [ "user:write" ] } ]
|
|
/users/{id}:
|
|
get:
|
|
summary: Get a single user by ID
|
|
operationId: getUser
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A single user", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } }
|
|
security: [ { OAuth2: [ "user:read" ] } ]
|
|
patch:
|
|
summary: Update a user by ID
|
|
operationId: updateUser
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserUpdate" } } } }
|
|
responses:
|
|
"200": { "description": "Users updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User" } } } }
|
|
security: [ { OAuth2: [ "user:write" ] } ]
|
|
delete:
|
|
summary: Delete a user by ID
|
|
operationId: deleteUser
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"204": { "description": "Users deleted" }
|
|
security: [ { OAuth2: [ "user:write" ] } ]
|
|
/users/{id}/groups:
|
|
get:
|
|
summary: List all groups for a user
|
|
operationId: listUserGroups
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A list of user groups", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserGroup" } } } } }
|
|
security: [ { OAuth2: [ "user:read" ] } ]
|
|
post:
|
|
summary: Add a group to a user
|
|
operationId: addUserGroup
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupRelation" } } } }
|
|
responses:
|
|
"201": { "description": "Group added to user" }
|
|
security: [ { OAuth2: [ "user:write" ] } ]
|
|
/users/{id}/permissions:
|
|
get:
|
|
summary: List all permissions for a user
|
|
operationId: listUserPermissions
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A list of user permissions", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } }
|
|
security: [ { OAuth2: [ "user:read" ] } ]
|
|
/users/{id}/groups/{groupId}:
|
|
delete:
|
|
summary: Remove a group from a user
|
|
operationId: removeUserGroup
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
- { "name": "groupId", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"204": { "description": "Group removed from user" }
|
|
security: [ { OAuth2: [ "user:write" ] } ]
|
|
/groups:
|
|
get:
|
|
summary: List all groups
|
|
operationId: listGroups
|
|
parameters:
|
|
- { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0 } }
|
|
- { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10 } }
|
|
responses:
|
|
"200": { "description": "A list of users", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Group" } } } }, "headers": { "X-Total-Count": { "schema": { "type": "integer" }, "description": "Total number of groups" } } }
|
|
security: [ { OAuth2: [ "group:read" ] } ]
|
|
post:
|
|
summary: Create a new group
|
|
operationId: createGroup
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewGroup" } } } }
|
|
responses:
|
|
"200": { "description": "Groups created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Group" } } } }
|
|
security: [ { OAuth2: [ "group:write" ] } ]
|
|
/groups/{id}:
|
|
get:
|
|
summary: Get a single group by ID
|
|
operationId: getGroup
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A single group", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Group" } } } }
|
|
security: [ { OAuth2: [ "group:read" ] } ]
|
|
patch:
|
|
summary: Update a group by ID
|
|
operationId: updateGroup
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupUpdate" } } } }
|
|
responses:
|
|
"200": { "description": "Groups updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Group" } } } }
|
|
security: [ { OAuth2: [ "group:write" ] } ]
|
|
delete:
|
|
summary: Delete a group by ID
|
|
operationId: deleteGroup
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"204": { "description": "Groups deleted" }
|
|
security: [ { OAuth2: [ "group:write" ] } ]
|
|
/groups/{id}/parents:
|
|
get:
|
|
summary: List all parent groups for a group
|
|
operationId: listParentGroups
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A list of group groups", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserGroup" } } } } }
|
|
security: [ { OAuth2: [ "group:read" ] } ]
|
|
post:
|
|
summary: Add a parent group to another group
|
|
operationId: addGroupParent
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupRelation" } } } }
|
|
responses:
|
|
"201": { "description": "Group added to group" }
|
|
security: [ { OAuth2: [ "group:write" ] } ]
|
|
/groups/{id}/children:
|
|
get:
|
|
summary: List all child groups for a group
|
|
operationId: listChildGroups
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A list of group groups", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/UserGroup" } } } } }
|
|
security: [ { OAuth2: [ "group:read" ] } ]
|
|
/groups/{id}/users:
|
|
get:
|
|
summary: List all users for a group
|
|
operationId: listGroupUsers
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A list of group users", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/GroupUser" } } } } }
|
|
security: [ { OAuth2: [ "group:read" ] } ]
|
|
/groups/{id}/permissions:
|
|
get:
|
|
summary: List all permissions for a group
|
|
operationId: listParentPermissions
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A list of group permissions", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "string" } } } } }
|
|
security: [ { OAuth2: [ "group:read" ] } ]
|
|
/groups/{id}/groups/{parentGroupId}:
|
|
delete:
|
|
summary: Remove a parent group from another group
|
|
operationId: removeGroupParent
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
- { "name": "parentGroupId", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"204": { "description": "Group removed from group" }
|
|
security: [ { OAuth2: [ "group:write" ] } ]
|
|
/webhooks:
|
|
get:
|
|
summary: List all webhooks
|
|
operationId: listWebhooks
|
|
parameters:
|
|
- { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0 } }
|
|
- { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10 } }
|
|
responses:
|
|
"200": { "description": "A list of webhooks", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Webhook" } } } }, "headers": { "X-Total-Count": { "schema": { "type": "integer" }, "description": "Total number of webhooks" } } }
|
|
security: [ { OAuth2: [ "webhook:read" ] } ]
|
|
post:
|
|
summary: Create a new webhook
|
|
operationId: createWebhook
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NewWebhook" } } } }
|
|
responses:
|
|
"200": { "description": "Webhooks created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Webhook" } } } }
|
|
security: [ { OAuth2: [ "webhook:write" ] } ]
|
|
/webhooks/{id}:
|
|
get:
|
|
summary: Get a single webhook by ID
|
|
operationId: getWebhook
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"200": { "description": "A single webhook", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Webhook" } } } }
|
|
security: [ { OAuth2: [ "webhook:read" ] } ]
|
|
patch:
|
|
summary: Update a webhook by ID
|
|
operationId: updateWebhook
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookUpdate" } } } }
|
|
responses:
|
|
"200": { "description": "Webhooks updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Webhook" } } } }
|
|
security: [ { OAuth2: [ "webhook:write" ] } ]
|
|
delete:
|
|
summary: Delete a webhook by ID
|
|
operationId: deleteWebhook
|
|
parameters:
|
|
- { "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }
|
|
responses:
|
|
"204": { "description": "Webhooks deleted" }
|
|
security: [ { OAuth2: [ "webhook:write" ] } ]
|
|
/dashboard_counts:
|
|
get:
|
|
summary: Get dashboard summary counts
|
|
operationId: getDashboardCounts
|
|
responses:
|
|
"200": { "description": "Dashboard count data", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DashboardCounts" } } } } }
|
|
security: [ { OAuth2: [ "ticket:read" ] } ]
|
|
/sidebar:
|
|
get:
|
|
summary: Get sidebar data
|
|
operationId: getSidebar
|
|
responses:
|
|
"200": { "description": "Sidebar content", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Sidebar" } } } } }
|
|
security: [ { OAuth2: [ "ticket:read" ] } ]
|
|
/ticket_search:
|
|
get:
|
|
summary: Search tickets with full join data
|
|
operationId: searchTickets
|
|
parameters:
|
|
- { "name": "query", "in": "query", "required": false, "schema": { "type": "string" } }
|
|
- { "name": "type", "in": "query", "required": false, "schema": { "type": "string" } }
|
|
- { "name": "open", "in": "query", "required": false, "schema": { "type": "boolean" } }
|
|
- { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0 } }
|
|
- { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10 } }
|
|
responses:
|
|
"200": { "description": "Search results with aggregated data", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TicketSearch" } } } }, "headers": { "X-Total-Count": { "schema": { "type": "integer" }, "description": "Total number of tickets" } } }
|
|
security: [ { OAuth2: [ "ticket:read" ] } ]
|
|
/settings:
|
|
get:
|
|
summary: Get system settings
|
|
operationId: getSettings
|
|
responses:
|
|
"200": { "description": "System settings", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Settings" } } } }
|
|
security: [ { OAuth2: [ "settings:read" ] } ]
|
|
post:
|
|
summary: Update system settings
|
|
operationId: updateSettings
|
|
requestBody: { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Settings" } } } }
|
|
responses:
|
|
"200": { "description": "Settings updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Settings" } } } }
|
|
security: [ { OAuth2: [ "settings:write" ] } ]
|
|
/config:
|
|
get:
|
|
summary: Get the configuration
|
|
operationId: getConfig
|
|
responses:
|
|
"200": { "description": "The configuration", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Config" } } } }
|
|
components:
|
|
schemas:
|
|
NewComment:
|
|
type: object
|
|
properties:
|
|
ticket: { "type": "string" }
|
|
author: { "type": "string" }
|
|
message: { "type": "string" }
|
|
required: [ "ticket", "author", "message" ]
|
|
CommentUpdate:
|
|
type: object
|
|
properties:
|
|
author: { "type": "string" }
|
|
message: { "type": "string" }
|
|
Comment:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
ticket: { "type": "string" }
|
|
author: { "type": "string" }
|
|
message: { "type": "string" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "ticket", "author", "message", "created", "updated" ]
|
|
ExtendedComment:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
ticket: { "type": "string" }
|
|
author: { "type": "string" }
|
|
message: { "type": "string" }
|
|
author_name: { "type": "string" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "ticket", "author", "message", "author_name", "created", "updated" ]
|
|
NewFeature:
|
|
type: object
|
|
properties:
|
|
name: { "type": "string" }
|
|
required: [ "name" ]
|
|
Feature:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
name: { "type": "string" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "name", "created", "updated" ]
|
|
NewFile:
|
|
type: object
|
|
properties:
|
|
ticket: { "type": "string" }
|
|
blob: { "type": "string" }
|
|
name: { "type": "string" }
|
|
required: [ "ticket", "blob", "name" ]
|
|
FileUpdate:
|
|
type: object
|
|
properties:
|
|
name: { "type": "string" }
|
|
File:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
ticket: { "type": "string" }
|
|
name: { "type": "string" }
|
|
size: { "type": "number", "format": "double" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "ticket", "name", "size", "created", "updated" ]
|
|
NewLink:
|
|
type: object
|
|
properties:
|
|
ticket: { "type": "string" }
|
|
name: { "type": "string" }
|
|
url: { "type": "string" }
|
|
required: [ "ticket", "name", "url" ]
|
|
LinkUpdate:
|
|
type: object
|
|
properties:
|
|
name: { "type": "string" }
|
|
url: { "type": "string" }
|
|
Link:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
ticket: { "type": "string" }
|
|
name: { "type": "string" }
|
|
url: { "type": "string" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "ticket", "name", "url", "created", "updated" ]
|
|
NewReaction:
|
|
type: object
|
|
properties:
|
|
name: { "type": "string" }
|
|
action: { "type": "string" }
|
|
actiondata: { "type": "object" }
|
|
trigger: { "type": "string" }
|
|
triggerdata: { "type": "object" }
|
|
required: [ "name", "action", "actiondata", "trigger", "triggerdata" ]
|
|
ReactionUpdate:
|
|
type: object
|
|
properties:
|
|
name: { "type": "string" }
|
|
action: { "type": "string" }
|
|
actiondata: { "type": "object" }
|
|
trigger: { "type": "string" }
|
|
triggerdata: { "type": "object" }
|
|
Reaction:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
name: { "type": "string" }
|
|
action: { "type": "string" }
|
|
actiondata: { "type": "object" }
|
|
trigger: { "type": "string" }
|
|
triggerdata: { "type": "object" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "name", "action", "actiondata", "trigger", "triggerdata", "created", "updated" ]
|
|
NewTask:
|
|
type: object
|
|
properties:
|
|
ticket: { "type": "string" }
|
|
name: { "type": "string" }
|
|
open: { "type": "boolean" }
|
|
owner: { "type": "string" }
|
|
required: [ "ticket", "name", "open" ]
|
|
TaskUpdate:
|
|
type: object
|
|
properties:
|
|
name: { "type": "string" }
|
|
open: { "type": "boolean" }
|
|
owner: { "type": "string" }
|
|
Task:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
ticket: { "type": "string" }
|
|
name: { "type": "string" }
|
|
open: { "type": "boolean" }
|
|
owner: { "type": "string" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "ticket", "name", "open", "created", "updated" ]
|
|
ExtendedTask:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
ticket: { "type": "string" }
|
|
name: { "type": "string" }
|
|
open: { "type": "boolean" }
|
|
owner: { "type": "string" }
|
|
owner_name: { "type": "string" }
|
|
ticket_name: { "type": "string" }
|
|
ticket_type: { "type": "string" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "ticket", "name", "open", "ticket_name", "ticket_type", "created", "updated" ]
|
|
NewTicket:
|
|
type: object
|
|
properties:
|
|
type: { "type": "string" }
|
|
name: { "type": "string" }
|
|
description: { "type": "string" }
|
|
open: { "type": "boolean" }
|
|
owner: { "type": "string" }
|
|
resolution: { "type": "string" }
|
|
schema: { "type": "object" }
|
|
state: { "type": "object" }
|
|
required: [ "type", "name", "description", "open", "schema", "state" ]
|
|
TicketUpdate:
|
|
type: object
|
|
properties:
|
|
type: { "type": "string" }
|
|
name: { "type": "string" }
|
|
description: { "type": "string" }
|
|
open: { "type": "boolean" }
|
|
owner: { "type": "string" }
|
|
resolution: { "type": "string" }
|
|
schema: { "type": "object" }
|
|
state: { "type": "object" }
|
|
Ticket:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
type: { "type": "string" }
|
|
name: { "type": "string" }
|
|
description: { "type": "string" }
|
|
open: { "type": "boolean" }
|
|
owner: { "type": "string" }
|
|
resolution: { "type": "string" }
|
|
schema: { "type": "object" }
|
|
state: { "type": "object" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "type", "name", "description", "open", "schema", "state", "created", "updated" ]
|
|
ExtendedTicket:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
type: { "type": "string" }
|
|
name: { "type": "string" }
|
|
description: { "type": "string" }
|
|
open: { "type": "boolean" }
|
|
owner: { "type": "string" }
|
|
resolution: { "type": "string" }
|
|
schema: { "type": "object" }
|
|
state: { "type": "object" }
|
|
owner_name: { "type": "string" }
|
|
type_singular: { "type": "string" }
|
|
type_plural: { "type": "string" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "type", "name", "description", "open", "schema", "state", "type_singular", "type_plural", "created", "updated" ]
|
|
NewTimelineEntry:
|
|
type: object
|
|
properties:
|
|
ticket: { "type": "string" }
|
|
message: { "type": "string" }
|
|
time: { "type": "string", "format": "date-time" }
|
|
required: [ "ticket", "message", "time" ]
|
|
TimelineEntryUpdate:
|
|
type: object
|
|
properties:
|
|
message: { "type": "string" }
|
|
time: { "type": "string", "format": "date-time" }
|
|
TimelineEntry:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
ticket: { "type": "string" }
|
|
message: { "type": "string" }
|
|
time: { "type": "string", "format": "date-time" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "ticket", "message", "time", "created", "updated" ]
|
|
NewType:
|
|
type: object
|
|
properties:
|
|
icon: { "type": "string" }
|
|
plural: { "type": "string" }
|
|
schema: { "type": "object" }
|
|
singular: { "type": "string" }
|
|
required: [ "singular", "plural", "schema" ]
|
|
TypeUpdate:
|
|
type: object
|
|
properties:
|
|
icon: { "type": "string" }
|
|
plural: { "type": "string" }
|
|
schema: { "type": "object" }
|
|
singular: { "type": "string" }
|
|
Type:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
icon: { "type": "string" }
|
|
plural: { "type": "string" }
|
|
schema: { "type": "object" }
|
|
singular: { "type": "string" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "plural", "schema", "singular", "created", "updated" ]
|
|
NewUser:
|
|
type: object
|
|
properties:
|
|
username: { "type": "string" }
|
|
avatar: { "type": "string" }
|
|
email: { "type": "string" }
|
|
name: { "type": "string" }
|
|
active: { "type": "boolean" }
|
|
required: [ "username", "active" ]
|
|
UserUpdate:
|
|
type: object
|
|
properties:
|
|
username: { "type": "string" }
|
|
avatar: { "type": "string" }
|
|
email: { "type": "string" }
|
|
name: { "type": "string" }
|
|
password: { "type": "string" }
|
|
passwordConfirm: { "type": "string" }
|
|
active: { "type": "boolean" }
|
|
User:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
username: { "type": "string" }
|
|
avatar: { "type": "string" }
|
|
email: { "type": "string" }
|
|
lastResetSentAt: { "type": "string", "format": "date-time" }
|
|
lastVerificationSentAt: { "type": "string", "format": "date-time" }
|
|
name: { "type": "string" }
|
|
active: { "type": "boolean" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "username", "active", "created", "updated" ]
|
|
NewGroup:
|
|
type: object
|
|
properties:
|
|
name: { "type": "string" }
|
|
permissions: { "type": "array", "items": { "type": "string" } }
|
|
required: [ "name", "permissions" ]
|
|
GroupUpdate:
|
|
type: object
|
|
properties:
|
|
name: { "type": "string" }
|
|
permissions: { "type": "array", "items": { "type": "string" } }
|
|
Group:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
name: { "type": "string" }
|
|
permissions: { "type": "array", "items": { "type": "string" } }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "name", "permissions", "created", "updated" ]
|
|
UserGroup:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
name: { "type": "string" }
|
|
permissions: { "type": "array", "items": { "type": "string" } }
|
|
type: { "type": "string" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "name", "permissions", "type", "created", "updated" ]
|
|
GroupUser:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
username: { "type": "string" }
|
|
avatar: { "type": "string" }
|
|
email: { "type": "string" }
|
|
lastResetSentAt: { "type": "string", "format": "date-time" }
|
|
lastVerificationSentAt: { "type": "string", "format": "date-time" }
|
|
name: { "type": "string" }
|
|
active: { "type": "boolean" }
|
|
type: { "type": "string" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "username", "active", "type", "created", "updated" ]
|
|
GroupRelation:
|
|
type: object
|
|
properties:
|
|
group_id: { "type": "string" }
|
|
required: [ "group_id" ]
|
|
NewWebhook:
|
|
type: object
|
|
properties:
|
|
name: { "type": "string" }
|
|
collection: { "type": "string" }
|
|
destination: { "type": "string" }
|
|
required: [ "name", "collection", "destination" ]
|
|
WebhookUpdate:
|
|
type: object
|
|
properties:
|
|
name: { "type": "string" }
|
|
collection: { "type": "string" }
|
|
destination: { "type": "string" }
|
|
Webhook:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
name: { "type": "string" }
|
|
collection: { "type": "string" }
|
|
destination: { "type": "string" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
updated: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "name", "collection", "destination", "created", "updated" ]
|
|
DashboardCounts:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
count: { "type": "integer" }
|
|
required: [ "id", "count" ]
|
|
Sidebar:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
singular: { "type": "string" }
|
|
plural: { "type": "string" }
|
|
icon: { "type": "string" }
|
|
count: { "type": "integer" }
|
|
required: [ "id", "singular", "plural", "count" ]
|
|
TicketSearch:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
name: { "type": "string" }
|
|
description: { "type": "string" }
|
|
open: { "type": "boolean" }
|
|
type: { "type": "string" }
|
|
state: { "type": "object" }
|
|
owner_name: { "type": "string" }
|
|
created: { "type": "string", "format": "date-time" }
|
|
required: [ "id", "name", "description", "open", "type", "state", "owner_name", "created" ]
|
|
Config:
|
|
type: object
|
|
properties:
|
|
flags: { "type": "array", "items": { "type": "string" } }
|
|
permissions: { "type": "array", "items": { "type": "string" } }
|
|
tables: { "type": "array", "items": { "$ref": "#/components/schemas/Table" } }
|
|
required: [ "flags", "permissions", "tables" ]
|
|
Table:
|
|
type: object
|
|
properties:
|
|
id: { "type": "string" }
|
|
name: { "type": "string" }
|
|
required: [ "id", "name" ]
|
|
Settings:
|
|
type: object
|
|
properties:
|
|
meta:
|
|
$ref: '#/components/schemas/SettingsMeta'
|
|
smtp:
|
|
$ref: '#/components/schemas/SettingsSmtp'
|
|
required: [ "meta", "smtp" ]
|
|
SettingsMeta:
|
|
type: object
|
|
properties:
|
|
app_name:
|
|
type: string
|
|
app_url:
|
|
type: string
|
|
sender_name:
|
|
type: string
|
|
sender_address:
|
|
type: string
|
|
reset_password_template:
|
|
$ref: '#/components/schemas/EmailTemplate'
|
|
required: [ "app_name", "app_url", "sender_name", "sender_address", "reset_password_template" ]
|
|
SettingsSmtp:
|
|
type: object
|
|
properties:
|
|
enabled:
|
|
type: boolean
|
|
host:
|
|
type: string
|
|
port:
|
|
type: integer
|
|
username:
|
|
type: string
|
|
password:
|
|
type: string
|
|
auth_method:
|
|
type: string
|
|
tls:
|
|
type: boolean
|
|
local_name:
|
|
type: string
|
|
required: [ "enabled", "host", "port", "username", "password", "auth_method", "tls", "local_name" ]
|
|
EmailTemplate:
|
|
type: object
|
|
properties:
|
|
body:
|
|
type: string
|
|
subject:
|
|
type: string
|
|
required: [ "body", "subject" ]
|
|
Error:
|
|
type: object
|
|
properties:
|
|
status: { "type": "integer" }
|
|
error: { "type": "string" }
|
|
message: { "type": "string" }
|
|
required: [ "status", "error", "message" ]
|
|
securitySchemes:
|
|
OAuth2:
|
|
type: oauth2
|
|
flows:
|
|
authorizationCode:
|
|
authorizationUrl: /oauth/authorize
|
|
tokenUrl: /oauth/token
|
|
scopes:
|
|
user:read: Read user data
|
|
user:write: Write user data
|
|
group:read: Read group data
|
|
group:write: Write group data
|
|
ticket:read: Read ticket data
|
|
ticket:write: Write ticket data
|
|
comment:read: Read comment data
|
|
comment:write: Write comment data
|
|
file:read: Read file data
|
|
file:write: Write file data
|
|
link:read: Read link data
|
|
link:write: Write link data
|
|
reaction:read: Read reaction data
|
|
reaction:write: Write reaction data
|
|
task:read: Read task data
|
|
task:write: Write task data
|
|
feature:read: Read feature data
|
|
feature:write: Write feature data
|
|
webhook:read: Read webhook data
|
|
webhook:write: Write webhook data
|
|
settings:read: Read settings data
|
|
settings:write: Write settings data
|