Completed swagger with all routes

This commit is contained in:
Florian Sylvain
2023-02-24 11:03:00 +01:00
parent 67733bc6c4
commit 904d039308
+410 -48
View File
@@ -1,3 +1,102 @@
const category = {
type: "object",
properties: {
id: {
type: "number",
},
name: {
type: "string",
},
user_id: {
type: "number",
},
},
}
const snippet = {
type: "object",
properties: {
id: {
type: "number",
},
title: {
type: "string",
},
code: {
type: "string",
},
created_at: {
type: "string",
format: "date-time",
},
updated_at: {
type: "string",
format: "date-time",
},
user_id: {
type: "number",
},
category_id: {
type: "number",
},
language_id: {
type: "number",
},
},
}
const credentials = {
type: "object",
properties: {
email: {
type: "string",
required: true,
description: "The user email.",
},
password: {
type: "string",
required: true,
description: "The user password.",
},
},
}
const pagination = {
type: "object",
properties: {
take: {
type: "integer",
minimum: 0,
},
skip: {
type: "integer",
minimum: 0,
},
},
}
const paginationLinks = {
type: "object",
properties: {
next: {
type: "string",
},
prev: {
type: "string",
},
},
}
const idParam = {
in: "path",
name: "id",
description: "The targeted element id.",
required: true,
schema: {
type: "integer",
},
}
export default { export default {
openapi: "3.0.0", openapi: "3.0.0",
info: { info: {
@@ -20,37 +119,10 @@ export default {
properties: { properties: {
categories: { categories: {
type: "array", type: "array",
items: { items: category,
type: "object",
properties: {
id: {
type: "number",
},
name: {
type: "string",
},
user_id: {
type: "number",
},
},
},
},
pagination: {
type: "object",
properties: {
take: {
type: "integer",
minimum: 0,
},
skip: {
type: "integer",
minimum: 0,
},
},
},
links: {
type: "object",
}, },
pagination,
links: paginationLinks,
total: { total: {
type: "integer", type: "integer",
minimum: 0, minimum: 0,
@@ -64,6 +136,7 @@ export default {
description: "List of issues that led to the bad request.", description: "List of issues that led to the bad request.",
}, },
}, },
tags: ["Category"],
}, },
post: { post: {
summary: "Create a category", summary: "Create a category",
@@ -95,17 +168,218 @@ export default {
description: "List of issues that led to the bad request.", description: "List of issues that led to the bad request.",
}, },
}, },
tags: ["Category"],
}, },
}, },
"/v1/category/{id}": { "/v1/category/{id}": {
get: { get: {
summary: "Get a category", summary: "Get a category",
description: "Get a category available for the user by its id.", description: "Get a category available for the user by its id.",
parameters: [idParam],
responses: {
"200": {
description: "The category.",
content: {
"application/json": {
schema: {
type: "object",
properties: { category },
},
},
},
},
},
tags: ["Category"],
},
put: {
summary: "Update a category",
description: "Update a category name avalaible for the user.",
requestBody: {
description: "The new category name.",
required: true,
content: {
"application/json": {
schema: {
type: "object",
properties: {
name: {
type: "string",
required: true,
},
},
},
},
},
},
responses: {
"200": {
description: "The category has been successfully updated.",
},
"400": {
description: "List of issues that led to the bad request.",
},
},
tags: ["Category"],
},
delete: {
summary: "Delete a category",
description: "Delete a category available for the user.",
parameters: [idParam],
responses: {
"200": {
description: "The category has been successfully deleted.",
},
"400": {
description: "List of issues that led to the bad request.",
},
},
tags: ["Category"],
},
},
"/v1/session/login": {
post: {
summary: "Create a session",
description: "Create a session for an existing user.",
requestBody: {
description: "The user credentials.",
required: true,
content: {
"application/json": {
schema: credentials,
},
},
},
responses: {
"200": {
description: "Session created, httpOnly cookie has been set.",
},
"400": {
description:
"List of issues that led to the bad request or credentials related problem(s).",
},
},
tags: ["Session"],
},
},
"/v1/session/register": {
post: {
summary: "Create new user",
description: "Create a new user with the given credentials.",
requestBody: {
description: "The user credentials.",
required: true,
content: {
"application/json": {
schema: credentials,
},
},
},
responses: {
"200": {
description: "User successfully created.",
},
"400": {
description:
"List of issues that led to the bad request or credentials related problem(s).",
},
},
tags: ["Session"],
},
},
"/v1/snippet/": {
get: {
summary: "Get all snippets",
description: "Get all the snippets available for the user, with pagination.",
responses: {
"200": {
description: "The list of snippets with pagination and links.",
content: {
"application/json": {
schema: {
type: "object",
properties: {
categories: {
type: "array",
items: snippet,
},
pagination,
links: paginationLinks,
total: {
type: "integer",
minimum: 0,
},
},
},
},
},
},
},
tags: ["Snippet"],
},
post: {
summary: "Create a snippet",
description: "Create a snippet for the user.",
requestBody: {
description: "The snippet to create.",
required: true,
content: {
"application/json": {
schema: {
type: "object",
properties: {
title: {
type: "string",
required: true,
description: "The snippet name.",
},
code: {
type: "string",
required: true,
description: "The snippet content.",
},
language: {
type: "string",
required: true,
description: "The snippet language.",
},
tags: {
type: "array",
required: true,
description: "The snippet tags.",
items: {
type: "string",
},
},
category_id: {
type: "integer",
required: false,
description: "The snippet category id.",
},
},
},
},
},
},
responses: {
"200": {
description: "The snippet has been successfully created.",
},
"400": {
description: "List of issues that led to the bad request.",
},
},
tags: ["Snippet"],
},
},
"/v1/snippet/{id}": {
get: {
summary: "Get a snippet",
description: "Get a snippet available for the user by its id.",
parameters: [ parameters: [
{ {
in: "path", in: "path",
name: "id", name: "id",
description: "The category id.", description: "The snippet id.",
required: true, required: true,
schema: { schema: {
type: "integer", type: "integer",
@@ -114,25 +388,52 @@ export default {
], ],
responses: { responses: {
"200": { "200": {
description: "The category.", description: "The snippet.",
content: { content: {
"application/json": { "application/json": {
schema: { schema: snippet,
type: "object", },
properties: { },
category: { },
type: "object", "400": {
properties: { description: "List of issues that led to the bad request.",
id: { },
type: "integer", },
}, tags: ["Snippet"],
name: { },
type: "string", put: {
}, summary: "Update a snippet",
user_id: { description: "Update a snippet available for the user by its id.",
type: "integer", parameters: [idParam],
}, requestBody: {
}, description: "The snippet to update.",
required: true,
content: {
"application/json": {
schema: {
type: "object",
properties: {
title: {
type: "string",
required: true,
description: "The snippet name.",
},
code: {
type: "string",
required: true,
description: "The snippet content.",
},
language: {
type: "string",
required: true,
description: "The snippet language.",
},
tags: {
type: "array",
required: true,
description: "The snippet tags.",
items: {
type: "string",
}, },
}, },
}, },
@@ -140,6 +441,67 @@ export default {
}, },
}, },
}, },
responses: {
"200": {
description: "The snippet has been successfully updated.",
},
"400": {
description: "List of issues that led to the bad request.",
},
},
tags: ["Snippet"],
},
delete: {
summary: "Delete a snippet",
description: "Delete a snippet available for the user by its id.",
parameters: [idParam],
responses: {
"200": {
description: "The snippet has been successfully deleted.",
},
"400": {
description: "List of issues that led to the bad request.",
},
},
tags: ["Snippet"],
},
},
"/v1/user/": {
put: {
summary: "Update user",
description: "Update the user informations.",
requestBody: {
description: "The user informations to update.",
required: true,
content: {
"application/json": {
schema: {
type: "object",
properties: {
name: {
type: "string",
required: false,
description: "The user name.",
},
picture_path: {
type: "string",
required: false,
description: "The user picture path.",
},
},
},
},
},
},
responses: {
"200": {
description: "The user has been successfully updated.",
},
"400": {
description: "List of issues that led to the bad request.",
},
},
tags: ["User"],
}, },
}, },
}, },