-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapi.yaml
149 lines (149 loc) · 3.38 KB
/
api.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
openapi: 3.0.0
info:
title: URL Shortener
version: 1.0.0
license:
name: MIT
url: 'https://opensource.org/licenses/MIT'
paths:
/v1/link:
post:
tags:
- link
summary: Create link
operationId: create-link
responses:
'200':
$ref: '#/components/responses/LinkSuccess'
'400':
description: Bad Request
'401':
$ref: '#/components/responses/UnauthorizedError'
requestBody:
$ref: '#/components/requestBodies/Link'
security:
- Authorization: []
'/v1/link/{slug}':
get:
tags:
- link
summary: Lookup link
operationId: get-link
parameters:
- $ref: '#/components/parameters/slug'
responses:
'200':
$ref: '#/components/responses/LinkSuccess'
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
description: Not Found
security:
- Authorization: []
put:
tags:
- link
summary: Update an existing link
operationId: update-link
parameters:
- $ref: '#/components/parameters/slug'
responses:
'200':
$ref: '#/components/responses/LinkSuccess'
'400':
description: Bad Request
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
description: Not Found
requestBody:
$ref: '#/components/requestBodies/Link'
security:
- Authorization: []
delete:
tags:
- link
summary: Delete link
operationId: delete-link
parameters:
- $ref: '#/components/parameters/slug'
responses:
'204':
description: Success
'400':
description: Bad Request
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
description: Not Found
security:
- Authorization: []
components:
schemas:
Link:
type: object
properties:
code:
type: integer
default: 301
enum:
- 301
- 302
- 307
long_url:
type: string
format: uri
slug:
type: string
minLength: 3
maxLength: 15
links:
GetLink:
description: |
The `slug` value returned in the response can be used as the `slug`
parameter in `GET /v1/link/{slug}`.
operationId: get-link
parameters:
slug: '$response.body#/slug'
securitySchemes:
Authorization:
type: apiKey
name: Authorization
in: header
requestBodies:
Link:
content:
application/json:
schema:
$ref: '#/components/schemas/Link'
description: Link object
required: true
responses:
LinkSuccess:
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Link'
links:
GetLink:
$ref: '#/components/links/GetLink'
UnauthorizedError:
description: Access Token is missing or invalid
headers:
WWW-Authenticate:
schema:
type: string
parameters:
slug:
in: path
name: slug
required: true
schema:
type: string
maxLength: 15
minLength: 3
tags:
- name: link
description: Links
servers: []