-
Notifications
You must be signed in to change notification settings - Fork 1
/
openapi.yaml
333 lines (333 loc) · 9.63 KB
/
openapi.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
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
swagger: '2.0'
info:
title: Terms API
description: Get information about terms
version: v1
license:
name: GNU Affero General Public License Version 3
url: http://www.gnu.org/licenses/agpl-3.0.en.html
contact:
name: IS Data Architecture Team
url: https://is.oregonstate.edu/data-architecture
email: isdataarchitecture@oregonstate.edu
schemes:
- https
host: api.oregonstate.edu
basePath: /v1
externalDocs:
description: GitHub Repository
url: https://github.com/osu-mist/terms-api
produces:
- application/json
consumes:
- application/json
security:
- OAuth2:
- full
paths:
/terms:
get:
summary: List all terms
tags:
- terms
description: Get terms
operationId: getTerms
parameters:
- $ref: '#/parameters/pageNumber'
- $ref: '#/parameters/pageSize'
- in: query
name: academicYear
description: Search terms by academic year. For example, 1819
required: false
type: string
pattern: '^\d{4}$'
- in: query
name: calendarYear
description: Search terms by calendar year. For example, 2019
required: false
type: string
pattern: '^\d{4}$'
- in: query
name: financialAidYear
description: Search terms by financial aid year. For example, 1819
required: false
type: string
pattern: '^\d{4}$'
- in: query
name: date
description: Search term by date. For example, 2019-01-01
required: false
type: string
format: date
- in: query
name: postInterimTermDate
description: Search the post-interim term for a specific date. For example, 2019-01-01
required: false
type: string
format: date
- in: query
name: preInterimTermDate
description: Search the pre-interim term for a specific date. For example, 2019-01-01
required: false
type: string
format: date
- in: query
name: housingDate
description: Search term by housing date. For example, 2019-01-01
required: false
type: string
format: date
- in: query
name: registrationDate
description: Search term by registration date. For example, 2019-01-01
required: false
type: string
format: date
- in: query
name: status
description: |
Filter terms which contain at least one of the provided status:
- `completed` - term has been completed
- `current` - current term
- `open` - terms that a student can register for
- `not-open` - terms which are not open for registration yet
- `post-interim` - post-interim term of the current date
- `pre-interim` - pre-interim term of the current date
required: false
type: array
collectionFormat: csv
items:
type: string
enum: [completed, current, open, not-open, pre-interim, post-interim]
responses:
'200':
description: Successful response
schema:
$ref: '#/definitions/TermsResult'
'400':
description: Bad request
schema:
$ref: '#/definitions/ErrorResult'
'500':
description: Internal server error
schema:
$ref: '#/definitions/ErrorResult'
/terms/{termCode}:
get:
summary: Info for a specific term
tags:
- terms
description: Get term by term code
operationId: getTermByTermCode
parameters:
- name: termCode
in: path
description: 6-digit unique code
required: true
type: string
pattern: '^\d{6}$'
responses:
'200':
description: Successful response
schema:
$ref: '#/definitions/TermResult'
'404':
description: Term not found
schema:
$ref: '#/definitions/ErrorResult'
'500':
description: Internal server error
schema:
$ref: '#/definitions/ErrorResult'
parameters:
pageNumber:
name: page[number]
in: query
type: integer
required: false
description: Page number of results
default: 1
minimum: 1
pageSize:
name: page[size]
in: query
type: integer
required: false
description: Number of results to return
default: 25
maximum: 500
minimum: 1
securityDefinitions:
OAuth2:
type: oauth2
flow: application
tokenUrl: https://api.oregonstate.edu/oauth2/token
scopes:
full: Full access to the API
definitions:
Meta:
properties:
totalResults:
type: integer
description: Total number of results
example: 10
totalPages:
type: integer
description: Total number of pages
example: 10
currentPageNumber:
type: integer
description: Page number of the returned results
example: 1
currentPageSize:
type: integer
description: Number of results per page
example: 25
PaginationLinks:
properties:
self:
type: string
format: uri
description: Self-link of current resource
first:
type: string
format: uri
description: The first page of data
last:
type: string
format: uri
description: The last page of data
prev:
type: string
format: uri
description: The previous page of data
next:
type: string
format: uri
description: The next page of data
SelfLink:
properties:
self:
type: string
format: url
description: Self-link of current resource
TermResource:
properties:
id:
type: string
description: A 6-digit unique term code
pattern: '^\d{6}$'
type:
type: string
enum: [term]
links:
$ref: '#/definitions/SelfLink'
attributes:
properties:
description:
type: string
description: Human readable academic term description
example: Winter 2019
season:
type: string
description: Season of the term
example: Winter
enum: [Fall, Winter, Summer, Spring]
calendarYear:
type: string
description: A 4-digit calendar year
pattern: '^\d{4}$'
example: '2019'
academicYear:
type: string
description: Academic year associated with this term. This is a 4-digit code
pattern: '^\d{4}$'
example: '1819'
financialAidYear:
type: string
description: Aid year associated with this term. This is a 4-digit code. For example, for Summer 2018, the value would be 1819
pattern: '^\d{4}$'
example: '1819'
startDate:
type: string
description: First day of classes in this term. Format is in YYYY-MM-DD
format: date
example: 2019-01-07
endDate:
type: string
description: Last day of classes in this term. Format is in YYYY-MM-DD
format: date
example: 2019-03-22
housingStartDate:
type: string
description: First day for meal plan and housing assignments. Format is in YYYY-MM-DD
format: date
example: 2019-01-06
housingEndDate:
type: string
description: Last day for meal plan and housing assignments. Format is in YYYY-MM-DD
format: date
example: 2019-03-16
registrationStartDate:
type: string
description: First day for general registration. Format is in YYYY-MM-DD
format: date
example: 2018-10-19
registrationEndDate:
type: string
description: Last day for general registration. Format is in YYYY-MM-DD
format: date
example: 2019-03-15
status:
type: array
description: The status of the term
items:
type: string
enum: [completed, current, open, not-open, post-interim, pre-interim]
example: [current, open]
TermResult:
properties:
links:
$ref: '#/definitions/SelfLink'
data:
$ref: '#/definitions/TermResource'
TermsResult:
properties:
meta:
$ref: '#/definitions/Meta'
links:
$ref: '#/definitions/PaginationLinks'
data:
type: array
items:
$ref: '#/definitions/TermResource'
ErrorObject:
properties:
status:
type: string
description: HTTP status code
example: '123'
title:
type: string
description: A short, user readable summary of the error
example: Not Found
code:
type: string
description: An application-specific error code
example: '1234'
detail:
type: string
description: A long description of the error that may contain instance-specific details
links:
properties:
about:
type: string
format: uri
description: A link to further information about the error
example: https://developer.oregonstate.edu/documentation/error-reference#1234
ErrorResult:
properties:
errors:
type: array
items:
$ref: '#/definitions/ErrorObject'