diff options
author | poeti8 <ezzati.upt@gmail.com> | 2020-02-22 19:53:52 +0300 |
---|---|---|
committer | poeti8 <ezzati.upt@gmail.com> | 2020-02-22 19:53:52 +0300 |
commit | b781a82a2f5b4056a6b31f107b75b9bd85333af4 (patch) | |
tree | 7de87fc1a7dba20274e85aa3be583a1697cab465 /docs | |
parent | 46e97882309f1122541bc9e33b718bb634e10a42 (diff) |
feat: add api to update links
Resolves #79
Diffstat (limited to 'docs')
-rw-r--r-- | docs/api/api.ts | 1136 |
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" + } + } + } }; |