@groton/veracross-api 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/package.json +3 -2
- package/spec/Authorization-API.yaml +0 -732
- package/spec/Data-API.yaml +0 -73643
- package/spec/Files-API.yaml +0 -1041
- package/templates/client.handlebars +0 -25
- package/templates/create.handlebars +0 -23
- package/templates/delete.handlebars +0 -20
- package/templates/get.handlebars +0 -24
- package/templates/index.handlebars +0 -2
- package/templates/list.handlebars +0 -50
- package/templates/post.handlebars +0 -31
- package/templates/read.handlebars +0 -24
- package/templates/update.handlebars +0 -22
|
@@ -1,732 +0,0 @@
|
|
|
1
|
-
openapi: 3.0.3
|
|
2
|
-
info:
|
|
3
|
-
title: Authorization API
|
|
4
|
-
version: '1.0'
|
|
5
|
-
description: |-
|
|
6
|
-
Schools can create OAuth Applications for vendors in Veracross. OAuth Applications allow for vendors to use Veracross OAuth SSO to enable users to log in to vendor sites with their Veracross Account. Using SSO provides several benefits for Veracross users:
|
|
7
|
-
|
|
8
|
-
- _User experience_: If all of a school's vendors are integrated via OAuth SSO, then Veracross users only need to manage one account. (Note: Veracross OAuth SSO will work for all Veracross account types, including MFA, External Identity Providers (Google/Okta/Azure, etc), and school domain accounts).
|
|
9
|
-
- _Security_: No user passwords are shared to vendors. Vendors also benefit from Veracross' existing security infrastructure.
|
|
10
|
-
- _History_: All logins via OAuth SSO are tracked in the Login Log.
|
|
11
|
-
contact:
|
|
12
|
-
name: Veracross
|
|
13
|
-
url: 'https://www.veracross.com/api'
|
|
14
|
-
servers:
|
|
15
|
-
- url: 'https://accounts.veracross.com/{school_route}'
|
|
16
|
-
description: Authorization Base URL
|
|
17
|
-
variables:
|
|
18
|
-
school_route:
|
|
19
|
-
description: The url path value for the individual school the integration is with
|
|
20
|
-
default: '{school_route}'
|
|
21
|
-
components:
|
|
22
|
-
schemas:
|
|
23
|
-
ErrorResponse:
|
|
24
|
-
type: object
|
|
25
|
-
properties:
|
|
26
|
-
error:
|
|
27
|
-
type: string
|
|
28
|
-
description: An error code
|
|
29
|
-
error_description:
|
|
30
|
-
type: string
|
|
31
|
-
description: The description of the error
|
|
32
|
-
error_id:
|
|
33
|
-
type: string
|
|
34
|
-
description: A unique ID for this specific error. Please provide this error id when you ask for help with an error.
|
|
35
|
-
required:
|
|
36
|
-
- error
|
|
37
|
-
- error_description
|
|
38
|
-
EmptyObject:
|
|
39
|
-
type: object
|
|
40
|
-
properties: {}
|
|
41
|
-
requestBodies:
|
|
42
|
-
TokenAndCredentials:
|
|
43
|
-
content:
|
|
44
|
-
application/x-www-form-urlencoded:
|
|
45
|
-
schema:
|
|
46
|
-
type: object
|
|
47
|
-
properties:
|
|
48
|
-
client_id:
|
|
49
|
-
type: string
|
|
50
|
-
client_secret:
|
|
51
|
-
type: string
|
|
52
|
-
token:
|
|
53
|
-
type: string
|
|
54
|
-
required:
|
|
55
|
-
- client_id
|
|
56
|
-
- client_secret
|
|
57
|
-
- token
|
|
58
|
-
responses:
|
|
59
|
-
Unauthorized:
|
|
60
|
-
description: Unauthorized
|
|
61
|
-
content:
|
|
62
|
-
application/json:
|
|
63
|
-
schema:
|
|
64
|
-
$ref: '#/components/schemas/ErrorResponse'
|
|
65
|
-
examples:
|
|
66
|
-
Error Example:
|
|
67
|
-
summary: Invalid Client
|
|
68
|
-
value:
|
|
69
|
-
error: invalid_client
|
|
70
|
-
error_description: The requested client id is unknown or unauthorized.
|
|
71
|
-
error_id: 896204e2-89e9-46c9-2fd0-ef74df63d513
|
|
72
|
-
UnsupportedMediaType:
|
|
73
|
-
description: |-
|
|
74
|
-
Unsupported media type.
|
|
75
|
-
This happens when the requests lacks the header `application/x-www-form-urlencoded`.
|
|
76
|
-
content:
|
|
77
|
-
application/json:
|
|
78
|
-
schema:
|
|
79
|
-
$ref: '#/components/schemas/EmptyObject'
|
|
80
|
-
examples:
|
|
81
|
-
UnsupportedMediaType:
|
|
82
|
-
value: {}
|
|
83
|
-
parameters:
|
|
84
|
-
ContentTypeFormUrlEncoded:
|
|
85
|
-
schema:
|
|
86
|
-
type: string
|
|
87
|
-
in: header
|
|
88
|
-
name: Content-Type
|
|
89
|
-
description: Needs to be `application/x-www-form-urlencoded`
|
|
90
|
-
required: true
|
|
91
|
-
paths:
|
|
92
|
-
/oauth/token:
|
|
93
|
-
post:
|
|
94
|
-
summary: Create Access Token
|
|
95
|
-
tags:
|
|
96
|
-
- OAuth
|
|
97
|
-
responses:
|
|
98
|
-
'200':
|
|
99
|
-
description: Success
|
|
100
|
-
content:
|
|
101
|
-
application/json:
|
|
102
|
-
examples:
|
|
103
|
-
Client Credentials:
|
|
104
|
-
value:
|
|
105
|
-
access_token: v3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv
|
|
106
|
-
created_at: 1599229410
|
|
107
|
-
expires_in: 3600
|
|
108
|
-
scope: 'example.object:list another.thing:create'
|
|
109
|
-
token_type: Bearer
|
|
110
|
-
Authorization Code with `sso` scope:
|
|
111
|
-
value:
|
|
112
|
-
access_token: v3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv
|
|
113
|
-
created_at: 1599229410
|
|
114
|
-
expires_in: 3600
|
|
115
|
-
refresh_token: v3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv
|
|
116
|
-
scope: 'sso example.object:list another.thing:create'
|
|
117
|
-
token_type: Bearer
|
|
118
|
-
Authorization Code with `openid` scope:
|
|
119
|
-
value:
|
|
120
|
-
access_token: v3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv
|
|
121
|
-
created_at: 1599229410
|
|
122
|
-
expires_in: 3600
|
|
123
|
-
refresh_token: v3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv
|
|
124
|
-
scope: 'openid example.object:list another.thing:create'
|
|
125
|
-
id_token: JwT0k3nJwT0k3nJwT0k3n.JwT0k3nJwT0k3nJwT0k3nJwT0k3nJwT0k3nJwT0k3n.JwT0k3nJwT0k3nJwT0k3n
|
|
126
|
-
token_type: Bearer
|
|
127
|
-
Refresh Token:
|
|
128
|
-
value:
|
|
129
|
-
access_token: v3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv
|
|
130
|
-
created_at: 1599229410
|
|
131
|
-
expires_in: 3600
|
|
132
|
-
refresh_token: v3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv
|
|
133
|
-
scope: 'example.object:list another.thing:create'
|
|
134
|
-
token_type: Bearer
|
|
135
|
-
schema:
|
|
136
|
-
type: object
|
|
137
|
-
properties:
|
|
138
|
-
access_token:
|
|
139
|
-
type: string
|
|
140
|
-
created_at:
|
|
141
|
-
type: number
|
|
142
|
-
expires_in:
|
|
143
|
-
type: number
|
|
144
|
-
scope:
|
|
145
|
-
type: string
|
|
146
|
-
refresh_token:
|
|
147
|
-
type: string
|
|
148
|
-
token_type:
|
|
149
|
-
type: string
|
|
150
|
-
id_token:
|
|
151
|
-
type: string
|
|
152
|
-
description: JWT string returned only with the Authorization Code grant type when the `openid` scope is requested. The JWT contains the user info (equivalent to the User Info endpoint). The JWT's signature may be verified using the public key provided by the JWKS endpoint.
|
|
153
|
-
required:
|
|
154
|
-
- access_token
|
|
155
|
-
- created_at
|
|
156
|
-
- expires_in
|
|
157
|
-
- scope
|
|
158
|
-
- token_type
|
|
159
|
-
headers: {}
|
|
160
|
-
'400':
|
|
161
|
-
description: Bad Request
|
|
162
|
-
content:
|
|
163
|
-
application/json:
|
|
164
|
-
schema:
|
|
165
|
-
$ref: '#/components/schemas/ErrorResponse'
|
|
166
|
-
examples:
|
|
167
|
-
Error Example:
|
|
168
|
-
value:
|
|
169
|
-
error: invalid_request
|
|
170
|
-
error_description: 'Missing required parameter: grant_type.'
|
|
171
|
-
error_id: 896204e2-89e9-46c9-2fd0-ef74df63d513
|
|
172
|
-
'401':
|
|
173
|
-
$ref: '#/components/responses/Unauthorized'
|
|
174
|
-
'415':
|
|
175
|
-
$ref: '#/components/responses/UnsupportedMediaType'
|
|
176
|
-
operationId: create-access-token
|
|
177
|
-
requestBody:
|
|
178
|
-
content:
|
|
179
|
-
application/x-www-form-urlencoded:
|
|
180
|
-
schema:
|
|
181
|
-
type: object
|
|
182
|
-
properties:
|
|
183
|
-
grant_type:
|
|
184
|
-
type: string
|
|
185
|
-
enum:
|
|
186
|
-
- client_credentials
|
|
187
|
-
- authorization_code
|
|
188
|
-
- refresh_token
|
|
189
|
-
client_id:
|
|
190
|
-
type: string
|
|
191
|
-
client_secret:
|
|
192
|
-
type: string
|
|
193
|
-
description: required for all grant types. Treat the client_secret as confidential.
|
|
194
|
-
scope:
|
|
195
|
-
type: string
|
|
196
|
-
description: list of scopes for this access token
|
|
197
|
-
code:
|
|
198
|
-
type: string
|
|
199
|
-
description: required only for authorization_code as grant_type
|
|
200
|
-
redirect_uri:
|
|
201
|
-
type: string
|
|
202
|
-
description: required only for authorization_code as grant_type
|
|
203
|
-
required:
|
|
204
|
-
- grant_type
|
|
205
|
-
- client_id
|
|
206
|
-
- client_secret
|
|
207
|
-
examples:
|
|
208
|
-
Client Credentials:
|
|
209
|
-
value:
|
|
210
|
-
grant_type: client_credentials
|
|
211
|
-
client_id: v3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4c
|
|
212
|
-
client_secret: v3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv
|
|
213
|
-
scope: 'example.object:list another.thing:create'
|
|
214
|
-
Authorization Code:
|
|
215
|
-
value:
|
|
216
|
-
grant_type: authorization_code
|
|
217
|
-
client_id: v3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4c
|
|
218
|
-
client_secret: v3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv
|
|
219
|
-
scope: sso
|
|
220
|
-
code: c0d3c0d3c0d3c0d3c0d3c0d3c0d3c0d3
|
|
221
|
-
Refresh Token:
|
|
222
|
-
value:
|
|
223
|
-
grant_type: refresh_token
|
|
224
|
-
client_id: v3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4c
|
|
225
|
-
client_secret: v3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv
|
|
226
|
-
refresh_token: v3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv3r4cr0ssv
|
|
227
|
-
description: |-
|
|
228
|
-
<!--
|
|
229
|
-
type: tab
|
|
230
|
-
title: Client Credentials
|
|
231
|
-
-->
|
|
232
|
-
#### Client Credentials
|
|
233
|
-
This grant type is suitable for "server to server" authentication where data access happens independent of any specific user's session.
|
|
234
|
-
|
|
235
|
-
<!--
|
|
236
|
-
type: tab
|
|
237
|
-
title: Authorization Code
|
|
238
|
-
-->
|
|
239
|
-
#### Authorization Code
|
|
240
|
-
This grant type should be used during SSO to exchange the provided authorization code for an access token that is associated with an individual user. Review [Creating a SSO integration](../../../../docs/guides/creating-an-sso-integration.md) for additional details.
|
|
241
|
-
|
|
242
|
-
<!--
|
|
243
|
-
type: tab
|
|
244
|
-
title: Refresh Token
|
|
245
|
-
-->
|
|
246
|
-
#### Refresh Token
|
|
247
|
-
This grant type is used to create a new access token when the former access token has expired. Refresh Tokens should only be used once.
|
|
248
|
-
<!-- type: tab-end -->
|
|
249
|
-
description: |-
|
|
250
|
-
All requests to the Data API must be made with an access token. Review [Access Tokens](../../../../docs/concepts/access-tokens.md) for additional details.
|
|
251
|
-
|
|
252
|
-
#### Endpoint applies to:
|
|
253
|
-
|
|
254
|
-
| Grant Type | Applicable |
|
|
255
|
-
|------------|------------|
|
|
256
|
-
| Client Credentials | ✅ |
|
|
257
|
-
| Authorization Code | ✅ |
|
|
258
|
-
| Refresh Token | ✅ |
|
|
259
|
-
|
|
260
|
-
#### Related links
|
|
261
|
-
- https://tools.ietf.org/html/rfc6749#section-3.2
|
|
262
|
-
- https://www.oauth.com/oauth2-servers/accessing-data/obtaining-an-access-token/
|
|
263
|
-
- https://www.oauth.com/oauth2-servers/making-authenticated-requests/refreshing-an-access-token/
|
|
264
|
-
parameters:
|
|
265
|
-
- $ref: '#/components/parameters/ContentTypeFormUrlEncoded'
|
|
266
|
-
parameters: []
|
|
267
|
-
/oauth/introspect:
|
|
268
|
-
post:
|
|
269
|
-
summary: Token Introspection
|
|
270
|
-
operationId: post-oauth-introspect
|
|
271
|
-
responses:
|
|
272
|
-
'200':
|
|
273
|
-
description: OK
|
|
274
|
-
content:
|
|
275
|
-
application/json:
|
|
276
|
-
schema:
|
|
277
|
-
type: object
|
|
278
|
-
properties:
|
|
279
|
-
active:
|
|
280
|
-
type: boolean
|
|
281
|
-
scope:
|
|
282
|
-
type: string
|
|
283
|
-
client_id:
|
|
284
|
-
type: string
|
|
285
|
-
nullable: true
|
|
286
|
-
description: null when used on token issued with authorization_code as grant_type
|
|
287
|
-
token_type:
|
|
288
|
-
type: string
|
|
289
|
-
exp:
|
|
290
|
-
type: integer
|
|
291
|
-
iat:
|
|
292
|
-
type: integer
|
|
293
|
-
required:
|
|
294
|
-
- active
|
|
295
|
-
examples:
|
|
296
|
-
With valid access token:
|
|
297
|
-
value:
|
|
298
|
-
active: true
|
|
299
|
-
scope: 'example.object:list another.thing:create'
|
|
300
|
-
client_id: null
|
|
301
|
-
token_type: Bearer
|
|
302
|
-
exp: 1600821466
|
|
303
|
-
iat: 1600817866
|
|
304
|
-
With invalid token:
|
|
305
|
-
value:
|
|
306
|
-
active: false
|
|
307
|
-
'401':
|
|
308
|
-
$ref: '#/components/responses/Unauthorized'
|
|
309
|
-
'415':
|
|
310
|
-
$ref: '#/components/responses/UnsupportedMediaType'
|
|
311
|
-
requestBody:
|
|
312
|
-
$ref: '#/components/requestBodies/TokenAndCredentials'
|
|
313
|
-
tags:
|
|
314
|
-
- OAuth
|
|
315
|
-
description: |-
|
|
316
|
-
The Token Introspection extension defines a mechanism for resource servers to obtain information about access tokens. With this spec, resource servers can check the validity of access tokens, and find out other information such as which user and which scopes are associated with the token.
|
|
317
|
-
|
|
318
|
-
#### Endpoint applies to:
|
|
319
|
-
|
|
320
|
-
| Grant Type | Applicable |
|
|
321
|
-
|------------|------------|
|
|
322
|
-
| Client Credentials | ✅ |
|
|
323
|
-
| Authorization Code | ✅ |
|
|
324
|
-
| Refresh Token | ✅ |
|
|
325
|
-
|
|
326
|
-
#### Related links
|
|
327
|
-
- https://tools.ietf.org/html/rfc7662
|
|
328
|
-
- https://www.oauth.com/oauth2-servers/token-introspection-endpoint/
|
|
329
|
-
- https://oauth.net/2/token-introspection/
|
|
330
|
-
parameters:
|
|
331
|
-
- $ref: '#/components/parameters/ContentTypeFormUrlEncoded'
|
|
332
|
-
/oauth/revoke:
|
|
333
|
-
post:
|
|
334
|
-
summary: Revoke Token
|
|
335
|
-
operationId: post-oauth-revoke
|
|
336
|
-
description: |
|
|
337
|
-
Post with client credentials to revoke an access token. The authorization server responds with HTTP status code 200 if the token has been revoked successfully or if the client submitted an invalid token.
|
|
338
|
-
|
|
339
|
-
<!-- theme: warning -->
|
|
340
|
-
> Note: per the OAuth spec, attempting to revoke an invalid token has no effect.
|
|
341
|
-
|
|
342
|
-
The content of the response body should be ignored by the client as all necessary information is conveyed in the response code.
|
|
343
|
-
|
|
344
|
-
A revoked token can no longer be used for any other endpoint. The response codes/bodies may vary depending on the endpoint. For example, Token Info (`GET /oauth/token/info`) returns `401 Unauthorized`, whereas Token Introspection (`POST /oauth/introspect`) still returns `200 OK`, but `active: false` in the body.
|
|
345
|
-
|
|
346
|
-
#### Endpoint applies to:
|
|
347
|
-
| Grant Type | Applicable |
|
|
348
|
-
|------------|------------|
|
|
349
|
-
| Client Credentials | ✅ |
|
|
350
|
-
| Authorization Code | ✅ |
|
|
351
|
-
| Refresh Token | ✅ |
|
|
352
|
-
|
|
353
|
-
#### Related links
|
|
354
|
-
- https://tools.ietf.org/html/rfc7009
|
|
355
|
-
- https://www.oauth.com/oauth2-servers/listing-authorizations/revoking-access/
|
|
356
|
-
- https://oauth.net/2/token-revocation/
|
|
357
|
-
requestBody:
|
|
358
|
-
$ref: '#/components/requestBodies/TokenAndCredentials'
|
|
359
|
-
responses:
|
|
360
|
-
'200':
|
|
361
|
-
description: OK
|
|
362
|
-
content:
|
|
363
|
-
application/json:
|
|
364
|
-
schema:
|
|
365
|
-
$ref: '#/components/schemas/EmptyObject'
|
|
366
|
-
examples:
|
|
367
|
-
Success:
|
|
368
|
-
value: {}
|
|
369
|
-
'401':
|
|
370
|
-
$ref: '#/components/responses/Unauthorized'
|
|
371
|
-
'415':
|
|
372
|
-
$ref: '#/components/responses/UnsupportedMediaType'
|
|
373
|
-
tags:
|
|
374
|
-
- OAuth
|
|
375
|
-
parameters:
|
|
376
|
-
- $ref: '#/components/parameters/ContentTypeFormUrlEncoded'
|
|
377
|
-
/oauth/authorize:
|
|
378
|
-
get:
|
|
379
|
-
responses:
|
|
380
|
-
'200':
|
|
381
|
-
description: Responds HTML with Veracross login form if the browser isn't authorized yet. Otherwise it goes directly to the `redirect_uri`
|
|
382
|
-
summary: Authorize
|
|
383
|
-
tags:
|
|
384
|
-
- OAuth
|
|
385
|
-
operationId: get-oauth-authorize
|
|
386
|
-
parameters:
|
|
387
|
-
- schema:
|
|
388
|
-
type: string
|
|
389
|
-
in: query
|
|
390
|
-
name: client_id
|
|
391
|
-
required: true
|
|
392
|
-
description: This is the client_id from your OAuth Application. It will be different for each school that you work with.
|
|
393
|
-
- schema:
|
|
394
|
-
type: string
|
|
395
|
-
in: query
|
|
396
|
-
required: true
|
|
397
|
-
name: redirect_uri
|
|
398
|
-
description: |-
|
|
399
|
-
Veracross will redirect to this URI upon successful login. It needs to be URL encoded, HTTPS, and registered on your OAuth Application.
|
|
400
|
-
|
|
401
|
-
It redirects with the `code` parameter which will be exchanged for the `access_token`.
|
|
402
|
-
- schema:
|
|
403
|
-
type: string
|
|
404
|
-
in: query
|
|
405
|
-
name: response_type
|
|
406
|
-
required: true
|
|
407
|
-
description: Needs to be `code`
|
|
408
|
-
- $ref: '#/components/parameters/ContentTypeFormUrlEncoded'
|
|
409
|
-
- schema:
|
|
410
|
-
type: string
|
|
411
|
-
in: query
|
|
412
|
-
name: scope
|
|
413
|
-
description: 'List of requested scopes (separated by spaces). To complete SSO, the `sso` scope must be requested. All requested scopes must already be enabled by the school on your OAuth Application.'
|
|
414
|
-
required: true
|
|
415
|
-
description: |-
|
|
416
|
-
This endpoint starts the OAuth SSO flow. The response is an HTML page intended for humans (in contrast to other endpoints, which are intended for servers). Users can log in to a vendor site with their existing Veracross account.
|
|
417
|
-
|
|
418
|
-
<!--
|
|
419
|
-
focus: false
|
|
420
|
-
-->
|
|
421
|
-

|
|
422
|
-
|
|
423
|
-
As a vendor, you need to formulate this URL with the proper parameters:
|
|
424
|
-
1. The `client_id` string that identifies your site as a Veracross OAuth Application.
|
|
425
|
-
2. One of the already registered `redirect_uri` that Veracross will redirect users to upon successful login (remember, this value should be URL encoded in the request).
|
|
426
|
-
3. `response_type=code`, which means that upon successful login, Veracross systems will also give you an **authorization code** that you will use to exchange for an **access token** to use with subsequent requests.
|
|
427
|
-
4. The `scope`, which specifies a list of scopes, separated by spaces, for the scopes for which you want to authorize the user, for example `scope = sso`.
|
|
428
|
-
|
|
429
|
-
> Note: Using SSO requires having an OAuth Application [registered at each school](https://community.veracross.com/s/article/Creating-an-OAuth-Application-School-Workflow). Vendors must provide the `redirect_uri`s and `scope`s they require, and will receive the corresponding OAuth `client_id` and `client_secret` values.
|
|
430
|
-
|
|
431
|
-
Unlike most public OAuth implementations (eg, "Log In with Facebook", "Log In with Google", etc), Veracross users won't see a separate "approval" screen when logging in. This is intentional; at Veracross, SSO to a vendor site is pre-approved with the set up of the OAuth Application by an administrator, and no separate approval from end users is necessary.
|
|
432
|
-
|
|
433
|
-
#### Endpoint applies to:
|
|
434
|
-
|
|
435
|
-
| Grant Type | Applicable |
|
|
436
|
-
|------------|------------|
|
|
437
|
-
| Client Credentials | ❌ |
|
|
438
|
-
| Authorization Code | ✅ |
|
|
439
|
-
| Refresh Token | ❌ |
|
|
440
|
-
|
|
441
|
-
#### Related links:
|
|
442
|
-
- https://tools.ietf.org/html/rfc6749#section-3.1
|
|
443
|
-
- https://www.oauth.com/oauth2-servers/accessing-data/authorization-request/
|
|
444
|
-
parameters: []
|
|
445
|
-
/oauth/userinfo:
|
|
446
|
-
get:
|
|
447
|
-
summary: User Info
|
|
448
|
-
tags:
|
|
449
|
-
- OAuth
|
|
450
|
-
- OIDC
|
|
451
|
-
responses:
|
|
452
|
-
'200':
|
|
453
|
-
description: OK
|
|
454
|
-
content:
|
|
455
|
-
application/json:
|
|
456
|
-
schema:
|
|
457
|
-
type: object
|
|
458
|
-
properties:
|
|
459
|
-
sub:
|
|
460
|
-
type: string
|
|
461
|
-
preferred_username:
|
|
462
|
-
type: string
|
|
463
|
-
email:
|
|
464
|
-
type: string
|
|
465
|
-
nullable: true
|
|
466
|
-
roles:
|
|
467
|
-
type: array
|
|
468
|
-
nullable: true
|
|
469
|
-
items:
|
|
470
|
-
type: string
|
|
471
|
-
required:
|
|
472
|
-
- sub
|
|
473
|
-
- preferred_username
|
|
474
|
-
examples:
|
|
475
|
-
Success:
|
|
476
|
-
value:
|
|
477
|
-
sub: '1234'
|
|
478
|
-
preferred_username: john.doe
|
|
479
|
-
email: john.doe@example.com
|
|
480
|
-
roles:
|
|
481
|
-
- Parent
|
|
482
|
-
- Coach
|
|
483
|
-
- Staff
|
|
484
|
-
- Faculty
|
|
485
|
-
- Donor
|
|
486
|
-
'401':
|
|
487
|
-
description: Unauthorized
|
|
488
|
-
content:
|
|
489
|
-
application/json:
|
|
490
|
-
examples:
|
|
491
|
-
Unauthorized:
|
|
492
|
-
value: ''
|
|
493
|
-
'403':
|
|
494
|
-
description: |-
|
|
495
|
-
Forbidden.
|
|
496
|
-
This happens when the access token lacks a required scope.
|
|
497
|
-
'404':
|
|
498
|
-
description: |-
|
|
499
|
-
Not Found.
|
|
500
|
-
There was no user associated with the provided access token. This can happen if the request uses an access token created with the Client Credentials grant type; since those exist apart from an individual user identity, there's no user info that can be provided. User info requests should only be made with Authorization Code access tokens.
|
|
501
|
-
'415':
|
|
502
|
-
$ref: '#/components/responses/UnsupportedMediaType'
|
|
503
|
-
parameters:
|
|
504
|
-
- schema:
|
|
505
|
-
type: string
|
|
506
|
-
example: Bearer your-access-token-here
|
|
507
|
-
in: header
|
|
508
|
-
name: Authorization
|
|
509
|
-
required: true
|
|
510
|
-
description: The access token
|
|
511
|
-
- $ref: '#/components/parameters/ContentTypeFormUrlEncoded'
|
|
512
|
-
description: |-
|
|
513
|
-
The access token is used to retrieve info about the user that has logged in, such as their Veracross Account ID and username.
|
|
514
|
-
|
|
515
|
-
> Note: `sub` is the internal account id, and uniquely identifies a user at a school. It must be combined with the school route to become globally unique. For example, different users at different schools might have the same `sub` value. Also note that schools may configure their own format for `preferred_username`, so it should only be used for display purposes (eg, some schools use email, some schools use other id's, etc)
|
|
516
|
-
|
|
517
|
-
#### Endpoint applies to:
|
|
518
|
-
|
|
519
|
-
| Grant Type | Applicable |
|
|
520
|
-
|------------|------------|
|
|
521
|
-
| Client Credentials | ❌ |
|
|
522
|
-
| Authorization Code | ✅ |
|
|
523
|
-
| Refresh Token | ❌ |
|
|
524
|
-
|
|
525
|
-
#### Related links
|
|
526
|
-
- https://www.oauth.com/oauth2-servers/signing-in-with-google/verifying-the-user-info/
|
|
527
|
-
- https://openid.net/specs/openid-connect-core-1_0.html#UserInfo
|
|
528
|
-
- https://community.veracross.com/s/article/Person-Role-Definitions
|
|
529
|
-
operationId: get-oauth-userinfo
|
|
530
|
-
/oauth/discovery/keys:
|
|
531
|
-
get:
|
|
532
|
-
summary: JSON Web Key Set (JWKS)
|
|
533
|
-
tags:
|
|
534
|
-
- OIDC
|
|
535
|
-
description: |-
|
|
536
|
-
The JSON Web Key Set (JWKS) endpoint returns the public keys used to verify JSON Web Tokens (JWTs) issued by the authorization server.
|
|
537
|
-
This endpoint is commonly used in OpenID Connect 1.0 (OIDC) flows to verify the authenticity and integrity of ID tokens.
|
|
538
|
-
|
|
539
|
-
#### Related links
|
|
540
|
-
- https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata
|
|
541
|
-
- https://www.rfc-editor.org/rfc/rfc7517.html
|
|
542
|
-
- https://datatracker.ietf.org/doc/html/rfc7518
|
|
543
|
-
- https://openid.net/specs/openid-connect-core-1_0.html#AuthorizationExamples
|
|
544
|
-
operationId: jwks
|
|
545
|
-
responses:
|
|
546
|
-
'200':
|
|
547
|
-
description: OK
|
|
548
|
-
content:
|
|
549
|
-
application/json:
|
|
550
|
-
schema:
|
|
551
|
-
type: object
|
|
552
|
-
properties:
|
|
553
|
-
keys:
|
|
554
|
-
type: array
|
|
555
|
-
items:
|
|
556
|
-
type: object
|
|
557
|
-
properties:
|
|
558
|
-
kty:
|
|
559
|
-
type: string
|
|
560
|
-
description: 'Key type parameter identifies the cryptographic algorithm family used with the key, such as "RSA" or "EC"'
|
|
561
|
-
'n':
|
|
562
|
-
type: string
|
|
563
|
-
description: Modulus parameter of the RSA public key
|
|
564
|
-
e:
|
|
565
|
-
type: string
|
|
566
|
-
description: Exponent parameter of the RSA public key
|
|
567
|
-
kid:
|
|
568
|
-
type: string
|
|
569
|
-
description: Key ID parameter is used to match a specific key. It is typically used to identify the key in a set of keys
|
|
570
|
-
use:
|
|
571
|
-
type: string
|
|
572
|
-
description: 'Intended use of the public key, such as "sig" for signature or "enc" for encryption'
|
|
573
|
-
enum:
|
|
574
|
-
- sig
|
|
575
|
-
- enc
|
|
576
|
-
alg:
|
|
577
|
-
type: string
|
|
578
|
-
description: 'Algorithm intended for use with the key, such as "RS256" for RSA SHA-256'
|
|
579
|
-
required:
|
|
580
|
-
- kty
|
|
581
|
-
- kid
|
|
582
|
-
- use
|
|
583
|
-
- alg
|
|
584
|
-
required:
|
|
585
|
-
- keys
|
|
586
|
-
examples:
|
|
587
|
-
Success:
|
|
588
|
-
value:
|
|
589
|
-
keys:
|
|
590
|
-
- kty: RSA
|
|
591
|
-
'n': y0ur_modulus_h3r3
|
|
592
|
-
e: AQAB
|
|
593
|
-
kid: y0ur_key_id_h3r3
|
|
594
|
-
use: sig
|
|
595
|
-
alg: RS256
|
|
596
|
-
/.well-known/openid-configuration:
|
|
597
|
-
get:
|
|
598
|
-
summary: OpenID Provider Configuration
|
|
599
|
-
operationId: openid-configuration
|
|
600
|
-
tags:
|
|
601
|
-
- OIDC
|
|
602
|
-
description: |-
|
|
603
|
-
The OpenID Provider Configuration endpoint provides metadata about the OpenID Provider (OP). This metadata includes information such as the issuer identifier, authorization endpoint, token endpoint, userinfo endpoint, and supported scopes and claims.
|
|
604
|
-
|
|
605
|
-
Clients can use this metadata to dynamically configure themselves to interact with the OP without requiring manual configuration.
|
|
606
|
-
|
|
607
|
-
#### Related links
|
|
608
|
-
- https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationRequest
|
|
609
|
-
- https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata
|
|
610
|
-
responses:
|
|
611
|
-
'200':
|
|
612
|
-
description: OK
|
|
613
|
-
content:
|
|
614
|
-
application/json:
|
|
615
|
-
schema:
|
|
616
|
-
type: object
|
|
617
|
-
properties:
|
|
618
|
-
issuer:
|
|
619
|
-
type: string
|
|
620
|
-
description: Issuer URL
|
|
621
|
-
authorization_endpoint:
|
|
622
|
-
type: string
|
|
623
|
-
description: Authorization endpoint URL
|
|
624
|
-
token_endpoint:
|
|
625
|
-
type: string
|
|
626
|
-
description: Token endpoint URL
|
|
627
|
-
revocation_endpoint:
|
|
628
|
-
type: string
|
|
629
|
-
description: Revocation endpoint URL
|
|
630
|
-
introspection_endpoint:
|
|
631
|
-
type: string
|
|
632
|
-
description: Introspection endpoint URL
|
|
633
|
-
userinfo_endpoint:
|
|
634
|
-
type: string
|
|
635
|
-
description: User Info endpoint URL
|
|
636
|
-
jwks_uri:
|
|
637
|
-
type: string
|
|
638
|
-
description: JWKS endpoint URL
|
|
639
|
-
scopes_supported:
|
|
640
|
-
type: array
|
|
641
|
-
description: List of supported scopes (this might not be an exhaustive list)
|
|
642
|
-
items:
|
|
643
|
-
type: string
|
|
644
|
-
response_types_supported:
|
|
645
|
-
type: array
|
|
646
|
-
description: List of supported OAuth2 `response_type` values
|
|
647
|
-
items:
|
|
648
|
-
type: string
|
|
649
|
-
response_modes_supported:
|
|
650
|
-
type: array
|
|
651
|
-
description: List of supported Oauth2 `response_mode` values
|
|
652
|
-
items:
|
|
653
|
-
type: string
|
|
654
|
-
grant_types_supported:
|
|
655
|
-
type: array
|
|
656
|
-
description: List of supported OAuth2 `grant_type` values
|
|
657
|
-
items:
|
|
658
|
-
type: string
|
|
659
|
-
token_endpoint_auth_methods_supported:
|
|
660
|
-
type: array
|
|
661
|
-
description: List of supported OAuth2 Client Authentication methods in the token endpoint
|
|
662
|
-
items:
|
|
663
|
-
type: string
|
|
664
|
-
subject_types_supported:
|
|
665
|
-
type: array
|
|
666
|
-
description: List of supported Subject Identifier types
|
|
667
|
-
items:
|
|
668
|
-
type: string
|
|
669
|
-
id_token_signing_alg_values_supported:
|
|
670
|
-
type: array
|
|
671
|
-
description: List of supported JWS signing algorithms (`alg` values) for the ID token
|
|
672
|
-
items:
|
|
673
|
-
type: string
|
|
674
|
-
claim_types_supported:
|
|
675
|
-
type: array
|
|
676
|
-
description: List of supported Claim Types
|
|
677
|
-
items:
|
|
678
|
-
type: string
|
|
679
|
-
claims_supported:
|
|
680
|
-
type: array
|
|
681
|
-
description: List of supported Claim Names we MAY be able to supply values for (this might not be an exhaustive list)
|
|
682
|
-
items:
|
|
683
|
-
type: string
|
|
684
|
-
required:
|
|
685
|
-
- issuer
|
|
686
|
-
- authorization_endpoint
|
|
687
|
-
- token_endpoint
|
|
688
|
-
- jwks_uri
|
|
689
|
-
- response_types_supported
|
|
690
|
-
- subject_types_supported
|
|
691
|
-
- id_token_signing_alg_values_supported
|
|
692
|
-
examples:
|
|
693
|
-
Success:
|
|
694
|
-
value:
|
|
695
|
-
issuer: 'http://accounts.veracross.com/your-school'
|
|
696
|
-
authorization_endpoint: 'http://accounts.veracross.com/your-school/oauth/authorize'
|
|
697
|
-
token_endpoint: 'http://accounts.veracross.com/your-school/oauth/token'
|
|
698
|
-
revocation_endpoint: 'http://accounts.veracross.com/your-school/oauth/revoke'
|
|
699
|
-
introspection_endpoint: 'http://accounts.veracross.com/your-school/oauth/instrospect'
|
|
700
|
-
userinfo_endpoint: 'http://accounts.veracross.com/your-school/oauth/userinfo'
|
|
701
|
-
jwks_uri: 'http://accounts.veracross.com/your-school/oauth/discovery/keys'
|
|
702
|
-
scopes_supported:
|
|
703
|
-
- openid
|
|
704
|
-
response_types_supported:
|
|
705
|
-
- code
|
|
706
|
-
response_modes_supported:
|
|
707
|
-
- query
|
|
708
|
-
- fragment
|
|
709
|
-
- form_post
|
|
710
|
-
grant_types_supported:
|
|
711
|
-
- authorization_code
|
|
712
|
-
- client_credentials
|
|
713
|
-
- refresh_token
|
|
714
|
-
token_endpoint_auth_methods_supported:
|
|
715
|
-
- client_secret_post
|
|
716
|
-
subject_types_supported:
|
|
717
|
-
- public
|
|
718
|
-
id_token_signing_alg_values_supported:
|
|
719
|
-
- RS256
|
|
720
|
-
claim_types_supported:
|
|
721
|
-
- normal
|
|
722
|
-
claims_supported:
|
|
723
|
-
- iss
|
|
724
|
-
- sub
|
|
725
|
-
- aud
|
|
726
|
-
- exp
|
|
727
|
-
- iat
|
|
728
|
-
- preferred_username
|
|
729
|
-
- email
|
|
730
|
-
- roles
|
|
731
|
-
tags:
|
|
732
|
-
- name: OAuth
|