Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/thedevs-network/kutt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorpoeti8 <ezzati.upt@gmail.com>2020-02-22 19:53:52 +0300
committerpoeti8 <ezzati.upt@gmail.com>2020-02-22 19:53:52 +0300
commitb781a82a2f5b4056a6b31f107b75b9bd85333af4 (patch)
tree7de87fc1a7dba20274e85aa3be583a1697cab465 /docs
parent46e97882309f1122541bc9e33b718bb634e10a42 (diff)
feat: add api to update links
Resolves #79
Diffstat (limited to 'docs')
-rw-r--r--docs/api/api.ts1136
1 files changed, 610 insertions, 526 deletions
diff --git a/docs/api/api.ts b/docs/api/api.ts
index bffe068..af1454c 100644
--- a/docs/api/api.ts
+++ b/docs/api/api.ts
@@ -1,529 +1,613 @@
-import * as p from '../../package.json';
+import * as p from "../../package.json";
export default {
- openapi: '3.0.0',
- info: {
- title: "Kutt.it",
- description: "API referrence for [http://kutt.it](http://kutt.it).\n",
- version: p.version
- },
- servers: [{
- url: "https://kutt.it/api/v2"
- }],
- tags: [{
- name: "health"
- }, {
- name: "links"
- }, {
- name: "domains"
- }, {
- name: "users"
- }],
- paths: {
- '/health': {
- get: {
- tags: ["health"],
- summary: "API health",
- responses: {
- 200: {
- description: "Health",
- content: {
- 'text/html': {
- example: "OK"
- }
- }
- }
- }
- }
- },
- '/links': {
- get: {
- tags: ["links"],
- description: "Get list of links",
- parameters: [{
- name: "limit",
- in: "query",
- description: "Limit",
- required: false,
- style: "form",
- explode: true,
- schema: {
- type: "number",
- example: 10
- }
- }, {
- name: "skip",
- in: "query",
- description: "Skip",
- required: false,
- style: "form",
- explode: true,
- schema: {
- type: "number",
- example: 0
- }
- }, {
- name: "all",
- in: "query",
- description: "All links (ADMIN only)",
- required: false,
- style: "form",
- explode: true,
- schema: {
- type: "boolean",
- example: false
- }
- }],
- responses: {
- 200: {
- description: "List of links",
- content: {
- 'application/json': {
- schema: {
- $ref: "#/components/schemas/inline_response_200"
- }
- }
- }
- }
- },
- security: [{
- APIKeyAuth: []
- }]
- },
- post: {
- tags: ["links"],
- description: "Create a short link",
- requestBody: {
- content: {
- 'application/json': {
- schema: {
- $ref: "#/components/schemas/body"
- }
- }
- }
- },
- responses: {
- 200: {
- description: "Craeted link",
- content: {
- 'application/json': {
- schema: {
- $ref: "#/components/schemas/Link"
- }
- }
- }
- }
- },
- security: [{
- APIKeyAuth: []
- }]
- }
- },
- '/links/{id}': {
- delete: {
- tags: ["links"],
- description: "Delete a link",
- parameters: [{
- name: "id",
- in: "path",
- required: true,
- style: "simple",
- explode: false,
- schema: {
- type: "string",
- format: "uuid"
- }
- }],
- responses: {
- 200: {
- description: "Deleted link successfully",
- content: {
- 'application/json': {
- schema: {
- $ref: "#/components/schemas/inline_response_200_1"
- }
- }
- }
- }
- },
- security: [{
- APIKeyAuth: []
- }]
- }
- },
- '/links/{id}/stats': {
- get: {
- tags: ["links"],
- description: "Get link stats",
- parameters: [{
- name: "id",
- in: "path",
- required: true,
- style: "simple",
- explode: false,
- schema: {
- type: "string",
- format: "uuid"
- }
- }],
- responses: {
- 200: {
- description: "Link stats",
- content: {
- 'application/json': {
- schema: {
- $ref: "#/components/schemas/Stats"
- }
- }
- }
- }
- },
- security: [{
- APIKeyAuth: []
- }]
- }
- },
- '/domains': {
- post: {
- tags: ["domains"],
- description: "Create a domain",
- requestBody: {
- content: {
- 'application/json': {
- schema: {
- $ref: "#/components/schemas/body_1"
- }
- }
- }
- },
- responses: {
- 200: {
- description: "Created domain",
- content: {
- 'application/json': {
- schema: {
- $ref: "#/components/schemas/Domain"
- }
- }
- }
- }
- },
- security: [{
- APIKeyAuth: []
- }]
- }
- },
- '/domains/{id}': {
- delete: {
- tags: ["domains"],
- description: "Delete a domain",
- parameters: [{
- name: "id",
- in: "path",
- required: true,
- style: "simple",
- explode: false,
- schema: {
- type: "string",
- format: "uuid"
- }
- }],
- responses: {
- 200: {
- description: "Deleted domain successfully",
- content: {
- 'application/json': {
- schema: {
- $ref: "#/components/schemas/inline_response_200_1"
- }
- }
- }
- }
- },
- security: [{
- APIKeyAuth: []
- }]
- }
- },
- '/users': {
- get: {
- tags: ["users"],
- description: "Get user info",
- responses: {
- 200: {
- description: "User info",
- content: {
- 'application/json': {
- schema: {
- $ref: "#/components/schemas/User"
- }
- }
- }
- }
- },
- security: [{
- APIKeyAuth: []
- }]
- }
- }
- },
- components: {
- schemas: {
- Link: {
- type: "object",
- properties: {
- address: {
- type: "string"
- },
- banned: {
- type: "boolean",
- default: false
- },
- created_at: {
- type: "string",
- format: "date-time"
- },
- id: {
- type: "string",
- format: "uuid"
- },
- link: {
- type: "string"
- },
- password: {
- type: "boolean",
- default: false
- },
- target: {
- type: "string"
- },
- updated_at: {
- type: "string",
- format: "date-time"
- },
- visit_count: {
- type: "number"
- }
- }
- },
- Domain: {
- type: "object",
- properties: {
- address: {
- type: "string"
- },
- banned: {
- type: "boolean",
- default: false
- },
- created_at: {
- type: "string",
- format: "date-time"
- },
- id: {
- type: "string",
- format: "uuid"
- },
- homepage: {
- type: "string"
- },
- updated_at: {
- type: "string",
- format: "date-time"
- }
- }
- },
- User: {
- type: "object",
- properties: {
- apikey: {
- type: "string"
- },
- email: {
- type: "string"
- },
- domains: {
- type: "array",
- items: {
- $ref: "#/components/schemas/Domain"
- }
- }
- }
- },
- StatsItem: {
- type: "object",
- properties: {
- stats: {
- $ref: "#/components/schemas/StatsItem_stats"
- },
- views: {
- type: "array",
- items: {
- type: "number"
- }
- }
- }
- },
- Stats: {
- type: "object",
- properties: {
- allTime: {
- $ref: "#/components/schemas/StatsItem"
- },
- lastDay: {
- $ref: "#/components/schemas/StatsItem"
- },
- lastMonth: {
- $ref: "#/components/schemas/StatsItem"
- },
- lastWeek: {
- $ref: "#/components/schemas/StatsItem"
- },
- updatedAt: {
- type: "string"
- },
- address: {
- type: "string"
- },
- banned: {
- type: "boolean",
- default: false
- },
- created_at: {
- type: "string",
- format: "date-time"
- },
- id: {
- type: "string",
- format: "uuid"
- },
- link: {
- type: "string"
- },
- password: {
- type: "boolean",
- default: false
- },
- target: {
- type: "string"
- },
- updated_at: {
- type: "string",
- format: "date-time"
- },
- visit_count: {
- type: "number"
- }
- }
- },
- inline_response_200: {
- properties: {
- limit: {
- type: "number",
- default: 10
- },
- skip: {
- type: "number",
- default: 0
- },
- total: {
- type: "number",
- default: 0
- },
- data: {
- type: "array",
- items: {
- $ref: "#/components/schemas/Link"
- }
- }
- }
- },
- body: {
- required: ["target"],
- properties: {
- target: {
- type: "string"
- },
- password: {
- type: "string"
- },
- customurl: {
- type: "string"
- },
- reuse: {
- type: "boolean",
- default: false
- },
- domain: {
- type: "string"
- }
- }
- },
- inline_response_200_1: {
- properties: {
- message: {
- type: "string"
- }
- }
- },
- body_1: {
- required: ["address"],
- properties: {
- address: {
- type: "string"
- },
- homepage: {
- type: "string"
- }
- }
- },
- StatsItem_stats_browser: {
- type: "object",
- properties: {
- name: {
- type: "string"
- },
- value: {
- type: "number"
- }
- }
- },
- StatsItem_stats: {
- type: "object",
- properties: {
- browser: {
- type: "array",
- items: {
- $ref: "#/components/schemas/StatsItem_stats_browser"
- }
- },
- os: {
- type: "array",
- items: {
- $ref: "#/components/schemas/StatsItem_stats_browser"
- }
- },
- country: {
- type: "array",
- items: {
- $ref: "#/components/schemas/StatsItem_stats_browser"
- }
- },
- referrer: {
- type: "array",
- items: {
- $ref: "#/components/schemas/StatsItem_stats_browser"
- }
- }
- }
- }
- },
- securitySchemes: {
- APIKeyAuth: {
- type: "apiKey",
- name: "X-API-KEY",
- in: "header"
- }
- }
- }
+ openapi: "3.0.0",
+ info: {
+ title: "Kutt.it",
+ description: "API referrence for [http://kutt.it](http://kutt.it).\n",
+ version: p.version
+ },
+ servers: [
+ {
+ url: "https://kutt.it/api/v2"
+ }
+ ],
+ tags: [
+ {
+ name: "health"
+ },
+ {
+ name: "links"
+ },
+ {
+ name: "domains"
+ },
+ {
+ name: "users"
+ }
+ ],
+ paths: {
+ "/health": {
+ get: {
+ tags: ["health"],
+ summary: "API health",
+ responses: {
+ "200": {
+ description: "Health",
+ content: {
+ "text/html": {
+ example: "OK"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/links": {
+ get: {
+ tags: ["links"],
+ description: "Get list of links",
+ parameters: [
+ {
+ name: "limit",
+ in: "query",
+ description: "Limit",
+ required: false,
+ style: "form",
+ explode: true,
+ schema: {
+ type: "number",
+ example: 10
+ }
+ },
+ {
+ name: "skip",
+ in: "query",
+ description: "Skip",
+ required: false,
+ style: "form",
+ explode: true,
+ schema: {
+ type: "number",
+ example: 0
+ }
+ },
+ {
+ name: "all",
+ in: "query",
+ description: "All links (ADMIN only)",
+ required: false,
+ style: "form",
+ explode: true,
+ schema: {
+ type: "boolean",
+ example: false
+ }
+ }
+ ],
+ responses: {
+ "200": {
+ description: "List of links",
+ content: {
+ "application/json": {
+ schema: {
+ $ref: "#/components/schemas/inline_response_200"
+ }
+ }
+ }
+ }
+ },
+ security: [
+ {
+ APIKeyAuth: []
+ }
+ ]
+ },
+ post: {
+ tags: ["links"],
+ description: "Create a short link",
+ requestBody: {
+ content: {
+ "application/json": {
+ schema: {
+ $ref: "#/components/schemas/body"
+ }
+ }
+ }
+ },
+ responses: {
+ "200": {
+ description: "Craeted link",
+ content: {
+ "application/json": {
+ schema: {
+ $ref: "#/components/schemas/Link"
+ }
+ }
+ }
+ }
+ },
+ security: [
+ {
+ APIKeyAuth: []
+ }
+ ]
+ }
+ },
+ "/links/{id}": {
+ delete: {
+ tags: ["links"],
+ description: "Delete a link",
+ parameters: [
+ {
+ name: "id",
+ in: "path",
+ required: true,
+ style: "simple",
+ explode: false,
+ schema: {
+ type: "string",
+ format: "uuid"
+ }
+ }
+ ],
+ responses: {
+ "200": {
+ description: "Deleted link successfully",
+ content: {
+ "application/json": {
+ schema: {
+ $ref: "#/components/schemas/inline_response_200_1"
+ }
+ }
+ }
+ }
+ },
+ security: [
+ {
+ APIKeyAuth: []
+ }
+ ]
+ },
+ patch: {
+ tags: ["links"],
+ description: "Update a link",
+ parameters: [
+ {
+ name: "id",
+ in: "path",
+ required: true,
+ style: "simple",
+ explode: false,
+ schema: {
+ type: "string",
+ format: "uuid"
+ }
+ }
+ ],
+ requestBody: {
+ content: {
+ "application/json": {
+ schema: {
+ $ref: "#/components/schemas/body_1"
+ }
+ }
+ }
+ },
+ responses: {
+ "200": {
+ description: "Updated link successfully",
+ content: {
+ "application/json": {
+ schema: {
+ $ref: "#/components/schemas/Link"
+ }
+ }
+ }
+ }
+ },
+ security: [
+ {
+ APIKeyAuth: []
+ }
+ ]
+ }
+ },
+ "/links/{id}/stats": {
+ get: {
+ tags: ["links"],
+ description: "Get link stats",
+ parameters: [
+ {
+ name: "id",
+ in: "path",
+ required: true,
+ style: "simple",
+ explode: false,
+ schema: {
+ type: "string",
+ format: "uuid"
+ }
+ }
+ ],
+ responses: {
+ "200": {
+ description: "Link stats",
+ content: {
+ "application/json": {
+ schema: {
+ $ref: "#/components/schemas/Stats"
+ }
+ }
+ }
+ }
+ },
+ security: [
+ {
+ APIKeyAuth: []
+ }
+ ]
+ }
+ },
+ "/domains": {
+ post: {
+ tags: ["domains"],
+ description: "Create a domain",
+ requestBody: {
+ content: {
+ "application/json": {
+ schema: {
+ $ref: "#/components/schemas/body_2"
+ }
+ }
+ }
+ },
+ responses: {
+ "200": {
+ description: "Created domain",
+ content: {
+ "application/json": {
+ schema: {
+ $ref: "#/components/schemas/Domain"
+ }
+ }
+ }
+ }
+ },
+ security: [
+ {
+ APIKeyAuth: []
+ }
+ ]
+ }
+ },
+ "/domains/{id}": {
+ delete: {
+ tags: ["domains"],
+ description: "Delete a domain",
+ parameters: [
+ {
+ name: "id",
+ in: "path",
+ required: true,
+ style: "simple",
+ explode: false,
+ schema: {
+ type: "string",
+ format: "uuid"
+ }
+ }
+ ],
+ responses: {
+ "200": {
+ description: "Deleted domain successfully",
+ content: {
+ "application/json": {
+ schema: {
+ $ref: "#/components/schemas/inline_response_200_1"
+ }
+ }
+ }
+ }
+ },
+ security: [
+ {
+ APIKeyAuth: []
+ }
+ ]
+ }
+ },
+ "/users": {
+ get: {
+ tags: ["users"],
+ description: "Get user info",
+ responses: {
+ "200": {
+ description: "User info",
+ content: {
+ "application/json": {
+ schema: {
+ $ref: "#/components/schemas/User"
+ }
+ }
+ }
+ }
+ },
+ security: [
+ {
+ APIKeyAuth: []
+ }
+ ]
+ }
+ }
+ },
+ components: {
+ schemas: {
+ Link: {
+ type: "object",
+ properties: {
+ address: {
+ type: "string"
+ },
+ banned: {
+ type: "boolean",
+ default: false
+ },
+ created_at: {
+ type: "string",
+ format: "date-time"
+ },
+ id: {
+ type: "string",
+ format: "uuid"
+ },
+ link: {
+ type: "string"
+ },
+ password: {
+ type: "boolean",
+ default: false
+ },
+ target: {
+ type: "string"
+ },
+ updated_at: {
+ type: "string",
+ format: "date-time"
+ },
+ visit_count: {
+ type: "number"
+ }
+ }
+ },
+ Domain: {
+ type: "object",
+ properties: {
+ address: {
+ type: "string"
+ },
+ banned: {
+ type: "boolean",
+ default: false
+ },
+ created_at: {
+ type: "string",
+ format: "date-time"
+ },
+ id: {
+ type: "string",
+ format: "uuid"
+ },
+ homepage: {
+ type: "string"
+ },
+ updated_at: {
+ type: "string",
+ format: "date-time"
+ }
+ }
+ },
+ User: {
+ type: "object",
+ properties: {
+ apikey: {
+ type: "string"
+ },
+ email: {
+ type: "string"
+ },
+ domains: {
+ type: "array",
+ items: {
+ $ref: "#/components/schemas/Domain"
+ }
+ }
+ }
+ },
+ StatsItem: {
+ type: "object",
+ properties: {
+ stats: {
+ $ref: "#/components/schemas/StatsItem_stats"
+ },
+ views: {
+ type: "array",
+ items: {
+ type: "number"
+ }
+ }
+ }
+ },
+ Stats: {
+ type: "object",
+ properties: {
+ allTime: {
+ $ref: "#/components/schemas/StatsItem"
+ },
+ lastDay: {
+ $ref: "#/components/schemas/StatsItem"
+ },
+ lastMonth: {
+ $ref: "#/components/schemas/StatsItem"
+ },
+ lastWeek: {
+ $ref: "#/components/schemas/StatsItem"
+ },
+ updatedAt: {
+ type: "string"
+ },
+ address: {
+ type: "string"
+ },
+ banned: {
+ type: "boolean",
+ default: false
+ },
+ created_at: {
+ type: "string",
+ format: "date-time"
+ },
+ id: {
+ type: "string",
+ format: "uuid"
+ },
+ link: {
+ type: "string"
+ },
+ password: {
+ type: "boolean",
+ default: false
+ },
+ target: {
+ type: "string"
+ },
+ updated_at: {
+ type: "string",
+ format: "date-time"
+ },
+ visit_count: {
+ type: "number"
+ }
+ }
+ },
+ inline_response_200: {
+ properties: {
+ limit: {
+ type: "number",
+ default: 10
+ },
+ skip: {
+ type: "number",
+ default: 0
+ },
+ total: {
+ type: "number",
+ default: 0
+ },
+ data: {
+ type: "array",
+ items: {
+ $ref: "#/components/schemas/Link"
+ }
+ }
+ }
+ },
+ body: {
+ required: ["target"],
+ properties: {
+ target: {
+ type: "string"
+ },
+ password: {
+ type: "string"
+ },
+ customurl: {
+ type: "string"
+ },
+ reuse: {
+ type: "boolean",
+ default: false
+ },
+ domain: {
+ type: "string"
+ }
+ }
+ },
+ inline_response_200_1: {
+ properties: {
+ message: {
+ type: "string"
+ }
+ }
+ },
+ body_1: {
+ properties: {
+ target: {
+ type: "string"
+ },
+ address: {
+ type: "string"
+ }
+ }
+ },
+ body_2: {
+ required: ["address"],
+ properties: {
+ address: {
+ type: "string"
+ },
+ homepage: {
+ type: "string"
+ }
+ }
+ },
+ StatsItem_stats_browser: {
+ type: "object",
+ properties: {
+ name: {
+ type: "string"
+ },
+ value: {
+ type: "number"
+ }
+ }
+ },
+ StatsItem_stats: {
+ type: "object",
+ properties: {
+ browser: {
+ type: "array",
+ items: {
+ $ref: "#/components/schemas/StatsItem_stats_browser"
+ }
+ },
+ os: {
+ type: "array",
+ items: {
+ $ref: "#/components/schemas/StatsItem_stats_browser"
+ }
+ },
+ country: {
+ type: "array",
+ items: {
+ $ref: "#/components/schemas/StatsItem_stats_browser"
+ }
+ },
+ referrer: {
+ type: "array",
+ items: {
+ $ref: "#/components/schemas/StatsItem_stats_browser"
+ }
+ }
+ }
+ }
+ },
+ securitySchemes: {
+ APIKeyAuth: {
+ type: "apiKey",
+ name: "X-API-KEY",
+ in: "header"
+ }
+ }
+ }
};