-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstunner.yaml
245 lines (245 loc) · 7.52 KB
/
stunner.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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
openapi: 3.0.3
info:
title: REST API For Access To TURN Services
description: Describes a proposed standard REST API for obtaining
access to TURN services via ephemeral (i.e. time-limited)
credentials. These credentials are vended by a web service over
HTTP, and then supplied to and checked by a TURN server using the
standard TURN protocol.
version: 0.0.1
servers:
- url: /
tags:
- name: TURN
description: To retrieve a new set of credentials, the client makes a HTTP GET
request, specifying TURN as the service to allocate credentials for,
and optionally specifying a user id parameter.
externalDocs:
url: https://datatracker.ietf.org/doc/html/draft-uberti-rtcweb-turn-rest-00
- name: ICE
paths:
/:
get:
tags:
- TURN
summary: GET TURN credentials
description: GET request, specifying TURN as the service to allocate credentials for, and optionally specifying a user id parameter.
operationId: getTurnAuth
parameters:
- name: service
in: query
description: Specifies the desired service (turn)
required: true
schema:
type: string
enum:
- turn
default: turn
- name: username
in: query
description: An optional user id to be associated with the credentials
required: false
schema:
type: string
- name: ttl
in: query
description: Duration for the lifetime of the authentication token, in seconds.
required: false
schema:
type: integer
default: 86400
- name: key
in: query
description: If an API key is used for authentication, the API key
required: false
schema:
type: string
- name: namespace
in: query
description: |
Generate TURN URIs only for the Gateways in the given namespace (optional)
required: false
schema:
type: string
- name: gateway
in: query
description: |
Generate TURN URIs only for the specified Gateway (optional); if gateway is set then
namespace must be set as well
required: false
schema:
type: string
- name: listener
in: query
description: |
Generate TURN URIs only for the specified listener of a given Gateway (optional); if
listener is set then namespace and gateway must be set as well
required: false
schema:
type: string
- name: public-addr
in: query
description: Override the public IP address with the provided value (optional)
required: false
schema:
type: string
responses:
"200":
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/turnAuthenticationToken'
"400":
description: Invalid status value
/ice:
get:
tags:
- ICE
summary: GET ICE credentials
description: GET request, specifying TURN as the service to allocate credentials for, and optionally specifying a user id parameter.
operationId: getIceAuth
parameters:
- name: service
in: query
description: Specifies the desired service (optional, turn)
required: false
schema:
type: string
enum:
- turn
default: turn
- name: username
in: query
description: An optional user id to be associated with the credentials
required: false
schema:
type: string
- name: ttl
in: query
description: Duration for the lifetime of the authentication token, in seconds.
required: false
schema:
type: integer
default: 86400
- name: iceTransportPolicy
in: query
description: An optional ICE transport policy ("all", "public", "relay").
required: false
schema:
$ref: '#/components/schemas/iceTransportPolicy'
- name: key
in: query
description: If an API key is used for authentication, the API key
required: false
schema:
type: string
- name: namespace
in: query
description: |
Generate TURN URIs only for the Gateways in the given namespace (optional)
required: false
schema:
type: string
- name: gateway
in: query
description: |
Generate TURN URIs only for the specified Gateway (optional); if gateway is set then
namespace must be set as well
required: false
schema:
type: string
- name: listener
in: query
description: |
Generate TURN URIs only for the specified listener of a given Gateway (optional); if
listener is set then namespace and gateway must be set as well
required: false
schema:
type: string
- name: public-addr
in: query
description: Override the public IP address with the provided value (optional)
required: false
schema:
type: string
responses:
"200":
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/iceConfig'
"400":
description: Invalid status value
components:
schemas:
turnAuthenticationToken:
type: object
properties:
username:
type: string
password:
type: string
ttl:
type: integer
format: int64
uris:
type: array
items:
type: string
example:
username: 12334939:username
password: randomHashedPassword
ttl: 86400
uris:
- turn:1.2.3.4:9991?transport=udp
- turn:1.2.3.4:9992?transport=tcp
- turns:1.2.3.4:443?transport=tcp
iceAuthenticationToken:
type: object
properties:
username:
type: string
credential:
type: string
urls:
type: array
items:
type: string
example:
username: 12334939:username
credential: randomHashedPassword
urls:
- turn:1.2.3.4:9991?transport=udp
- turn:1.2.3.4:9992?transport=tcp
- turns:1.2.3.4:443?transport=tcp
iceTransportPolicy:
type: string
enum:
- all
- public
- relay
default: all
iceConfig:
type: object
properties:
iceServers:
type: array
items:
"$ref": "#/components/schemas/iceAuthenticationToken"
iceTransportPolicy:
"$ref": "#/components/schemas/iceTransportPolicy"
example:
iceServers:
- username: 12334939:username
credential: randomHashedPassword
urls:
- turn:1.2.3.4:9991?transport=udp
- turn:1.2.3.4:9992?transport=tcp
- turns:1.2.3.4:443?transport=tcp
- username: 987654321:othername
credential: someOtherHashedPassword
urls:
- turn:1.2.3.4:3478?transport=tcp
iceTransportpolicy: relay