-
Notifications
You must be signed in to change notification settings - Fork 0
/
openapi.yml
171 lines (165 loc) · 4.87 KB
/
openapi.yml
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
openapi: 3.0.3
info:
title: Image Upload Service API
description: API documentation for the Image Upload Service.
version: 1.0.0
servers:
- url: https://api.example.com
description: Production server
paths:
/healthcheck:
get:
summary: Healthcheck
description: Check if the service is running.
responses:
'200':
description: Service is healthy
content:
application/json:
schema:
type: object
properties:
status:
type: string
example: "available"
/v1/link/create:
get:
summary: Create a link
description: Create a new link with an expiration time.
parameters:
- in: query
name: expiration_time
schema:
type: string
example: "5s"
required: true
description: The expiration time for the link (e.g., 5s for 5 seconds).
security:
- bearerAuth: []
responses:
'200':
description: Link created successfully
content:
application/json:
schema:
type: object
properties:
link:
type: string
example: "https://example.com/link/abc123"
/v1/image/upload/{timed-token}:
post:
summary: Upload an image
description: Upload an image using a timed token.
parameters:
- in: path
name: timed-token
required: true
schema:
type: string
description: The timed token used for authentication.
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
images:
type: array
items:
type: string
format: binary
responses:
'200':
description: Image uploaded successfully
content:
application/json:
schema:
type: object
properties:
images:
type: object
additionalProperties:
type: string
description: UUID of the uploaded image
example: "5e9f329c-a018-43de-a742-82e5a24c9a04"
'400':
description: Bad Request
'401':
description: Unauthorized
/v1/image/{id}:
get:
summary: Get an image
description: Retrieve an image as an octet-stream.
parameters:
- in: path
name: id
required: true
schema:
type: string
description: The ID of the image.
responses:
'200':
description: Image retrieved successfully
content:
application/octet-stream:
schema:
type: string
format: binary
'404':
description: Image not found
/v1/statistics:
get:
summary: Get service statistics
description: Retrieve statistics about the service.
security:
- bearerAuth: []
responses:
'200':
description: Service statistics retrieved successfully
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
top_image_format:
type: object
properties:
type:
type: string
example: "jpg"
count:
type: integer
example: 3
top_camera_model:
type: array
items:
type: object
properties:
name:
type: string
example: "Sony-HDR-HC3"
count:
type: integer
example: 1
image_upload_frequency:
type: array
items:
type: object
properties:
day:
type: string
format: date-time
example: "2024-08-15T00:00:00Z"
count:
type: integer
example: 3
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: Token