-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathSkylines API.txt
375 lines (191 loc) · 6.1 KB
/
Skylines API.txt
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
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
# Skylines API
## Overview
### Schema
- API is only available over HTTPS at `https://api.skylines.aero/`
- HTTP will show `404 Not Found`
- All data is sent and received as [JSON](http://json.org/)
- Blank fields are included as `null`
- All timestamps are returned in ISO 8601 format: `YYYY-MM-DDTHH:MM:SSZ`
### Authentication
- Authentication failure results in `401 Unauthorized`
- Several failed authentication attemps result in temporary block for the user and `403 Forbidden`
- Missing resource access results in `404 Not Found` or `403 Forbidden`, depending on the resource
- Three ways to authenticate:
- [Basic Authentication](http://en.wikipedia.org/wiki/Basic_access_authentication)
- `Authorization: bearer TOKEN` header
- `access_token` query parameter
### Pagination
- 30 items by default
- `?page` parameter to select page
- `?page=1` is the first page
- no `?page` parameter means first page
- `?per_page` parameter to increase items per page limit (up to 100)
#### Link Header
- Pagination info is included in the `Link` header
- `next`, `last`, `first`, `prev` are supported `rel` values
```
Link: <https://api.skylines.aero/v1/flights?page=3&per_page=100>; rel="next",
<https://api.skylines.aero/v1/flights?page=50&per_page=100>; rel="last"
```
*Linebreak is included for readability.*
### Rate Limiting
- Authenticated requests: 5.000 requests per hour and user
- Unauthenticated requests: 60 requests per hour and IP
- `X-Rate-Limit-Limit` header shows maximum number of requests that the consumer is permitted to make per hour
- `X-Rate-Limit-Remaining` header shows number of requests remaining in the current rate limit window
- `X-Rate-Limit-Reset`header shows remaining time in seconds until the current rate limit window resets
- Reached limit will result in `403 Forbidden`
### User Agent Required
- `User-Agent` header is required and must not be empty
- Request without `User-Agent` header is rejected with `403 Forbidden`
### Conditional requests
- Resources return `ETag` and `Last-Modified` headers
- Resource requests return `304 Not Modified` if requested with matching `If-None-Match` or `If-Modified-Since` headers
- `304 Not Modified` responses do not count against the Rate Limit
### Cross Origin Resource Sharing
- Supported from any `Origin`
- Requests with token may be limited to the `Origin` that created the token
### JSONP
- Supported through `callback` parameter
- Data is enveloped in `data` property, headers and HTTP status code in `meta`
### JSON Envelope
- JSONP envelope sent as JSON with `?envelope=true`
- Always returns `200 Ok`
## Airfields
### List airfields
GET /airfields
### Get airfield
GET /airfields/:airfield_id
## Airspace
### List airspaces
GET /airspaces
### Get airspace
GET /airspaces/:airspace_id
## Events
*(Experimental)*
### List events
GET /events
### List events performed by a single user
GET /users/:user_id/events
### List events for the authenticated user
GET /user/events
## Flights
### List flights
GET /flights
### Get flight
GET /flights/:flight_id
### Edit flight
PATCH /flights/:flight_id
### Delete flight
DELETE /flights/:flight_id
### List flight comments
GET /flights/:flight_id/comments
### Add flight comment
POST /flights/:flight_id/comments
### List flight phases
GET /flights/:flight_id/phases
### List flight encounters
GET /flights/:flight_id/encounters
## Groups/Clubs
### List groups/clubs
GET /groups
### List groups/clubs of a user
GET /users/:user_id/groups
### List groups/clubs of the authenticated user
GET /user/groups
### Get group/club
GET /groups/:group_id
### Create group/club
POST /groups
### Edit group/club
PATCH /groups/:group_id
### Delete group/club
DELETE /groups/:group_id
### List group/club members
GET /groups/:group_id/members
### Add group/club member
PUT /groups/:group_id/members/:user_id
### Remove group/club member
DELETE /groups/:group_id/members/:user_id
## IGC Files
### List IGC files
GET /igcs
### Get IGC file
GET /igcs/:igc_id
### Update IGC file
PATCH /igcs/:igc_id
### Download IGC file
GET /igcs/:igc_id/content{?access_token=DOWNLOAD-TOKEN}
### Upload IGC file(s)
POST /igcs
Also accepts archives with 1..n IGC files inside.
## Live Tracking
*(Experimental)*
### List live tracking sessions
GET /live
### Get live tracking session
GET /live/:live_id
## LiveTrack24
*(Experimental)*
GET /track.php
GET /client.php
## Notifications
*(Experimental)*
### List notifications for the authenticated user
GET /notifications
### Mark notifications as read
PUT /notifications
### Mark single notification as read
PATCH /notifications/:notification_id
## Ranking
*(Experimental)*
### Get user ranking
GET /ranking/users
### Get club ranking
GET /ranking/clubs
### Get airfield ranking
GET /ranking/airfields
## Search
GET /search?q=abc123
## Sessions
### List (active) sessions
GET /sessions
### Create session
POST /sessions
### Get current session
GET /session
### Delete current session
DELETE /session
### Delete different session
DELETE /sessions/:session_id
## Statistics
*(Experimental)*
### Get global statistics
GET /statistics
### Get user statistics
GET /users/:user_id/statistics
### Get group/club statistics
GET /groups/:group_id/statistics
## Users
### List users
GET /users
### Create user
POST /users
### Get user
GET /users/:user_id
### Get the followers of a user
GET /users/:user_id/followers
### Get the users another user is following
GET /users/:user_id/following
### Get the authenticated user
GET /user
### Update the authenticated user
PATCH /user
### Get the followers of the authenticated user
GET /user/followers
### Get the users the authenticated user is following
GET /user/following
### Follow a user
PUT /user/following/:user_id
### Unfollow a user
DELETE /user/following/:user_id