@reqquest/ui 1.0.0 → 1.1.0
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/README.md +8 -0
- package/dist/api.js +656 -111
- package/dist/components/AppRequestCard.svelte +172 -0
- package/dist/components/ApplicantProgramList.svelte +184 -0
- package/dist/components/ApplicantProgramListTooltip.svelte +22 -0
- package/dist/components/ApplicantPromptPage.svelte +88 -0
- package/dist/components/ApplicationDetailsView.svelte +307 -0
- package/dist/components/ButtonLoadingIcon.svelte +2 -1
- package/dist/components/FieldCardCheckbox.svelte +328 -0
- package/dist/components/FieldCardRadio.svelte +320 -0
- package/dist/components/IntroPanel.svelte +41 -0
- package/dist/components/PeriodPanel.svelte +100 -0
- package/dist/components/QuestionnairePrompt.svelte +36 -0
- package/dist/components/RenderDisplayComponent.svelte +38 -0
- package/dist/components/ReviewerList.svelte +93 -0
- package/dist/components/StatusMessageList.svelte +35 -0
- package/dist/components/WarningIconYellow.svelte +20 -0
- package/dist/components/index.js +11 -0
- package/dist/components/types.js +1 -0
- package/dist/csv.js +21 -0
- package/dist/index.js +2 -0
- package/dist/status-utils.js +343 -0
- package/dist/stores/IStateStore.js +0 -1
- package/dist/typed-client/schema.graphql +564 -124
- package/dist/typed-client/schema.js +87 -23
- package/dist/typed-client/types.js +919 -454
- package/dist/util.js +12 -1
- package/package.json +39 -40
- package/dist/api.d.ts +0 -595
- package/dist/components/ButtonLoadingIcon.svelte.d.ts +0 -18
- package/dist/components/index.d.ts +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/registry.d.ts +0 -138
- package/dist/stores/IStateStore.d.ts +0 -5
- package/dist/typed-client/index.d.ts +0 -25
- package/dist/typed-client/runtime/batcher.d.ts +0 -105
- package/dist/typed-client/runtime/createClient.d.ts +0 -17
- package/dist/typed-client/runtime/error.d.ts +0 -18
- package/dist/typed-client/runtime/fetcher.d.ts +0 -10
- package/dist/typed-client/runtime/generateGraphqlOperation.d.ts +0 -30
- package/dist/typed-client/runtime/index.d.ts +0 -11
- package/dist/typed-client/runtime/linkTypeMap.d.ts +0 -9
- package/dist/typed-client/runtime/typeSelection.d.ts +0 -28
- package/dist/typed-client/runtime/types.d.ts +0 -55
- package/dist/typed-client/schema.d.ts +0 -1483
- package/dist/typed-client/types.d.ts +0 -540
- package/dist/util.d.ts +0 -2
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
type Access {
|
|
2
2
|
"""
|
|
3
|
-
Current user may create a new app request
|
|
3
|
+
Current user may create a new app request on behalf of another user and should be shown the Create App Request button on the reviewer dashboard or main app request list.
|
|
4
4
|
"""
|
|
5
|
-
|
|
5
|
+
createAppRequestOther: Boolean!
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
Current user may create a new app request for themselves and should be shown the Create App Request button.
|
|
9
|
+
"""
|
|
10
|
+
createAppRequestSelf: Boolean!
|
|
6
11
|
|
|
7
12
|
"""
|
|
8
13
|
Current user is permitted to create new periods in the period management UI.
|
|
@@ -14,6 +19,9 @@ type Access {
|
|
|
14
19
|
"""
|
|
15
20
|
createRole: Boolean!
|
|
16
21
|
|
|
22
|
+
"""The current user, if any."""
|
|
23
|
+
user: AccessUser
|
|
24
|
+
|
|
17
25
|
"""Current user is permitted to view the app request list."""
|
|
18
26
|
viewAppRequestList: Boolean!
|
|
19
27
|
|
|
@@ -35,6 +43,25 @@ type AccessControl {
|
|
|
35
43
|
name: String!
|
|
36
44
|
}
|
|
37
45
|
|
|
46
|
+
type AccessControlGroup {
|
|
47
|
+
"""
|
|
48
|
+
A list of all possible controls for this controlGroup. Use this to populate the control dropdown when creating a grant.
|
|
49
|
+
"""
|
|
50
|
+
controls: [AccessControl!]!
|
|
51
|
+
|
|
52
|
+
"""
|
|
53
|
+
A longer explanation of the control group for display in the role management interface.
|
|
54
|
+
"""
|
|
55
|
+
description: String
|
|
56
|
+
name: String!
|
|
57
|
+
tags: [AccessTagCategory!]!
|
|
58
|
+
|
|
59
|
+
"""
|
|
60
|
+
A slightly longer version of the control group's name, for display in the role management interface.
|
|
61
|
+
"""
|
|
62
|
+
title: String!
|
|
63
|
+
}
|
|
64
|
+
|
|
38
65
|
type AccessGrantTag {
|
|
39
66
|
category: String!
|
|
40
67
|
categoryLabel: String!
|
|
@@ -50,7 +77,7 @@ type AccessRole {
|
|
|
50
77
|
"""
|
|
51
78
|
description: String
|
|
52
79
|
grants: [AccessRoleGrant!]!
|
|
53
|
-
groups: [
|
|
80
|
+
groups: [AccessRoleGroup!]!
|
|
54
81
|
id: ID!
|
|
55
82
|
name: String!
|
|
56
83
|
scope: String
|
|
@@ -66,13 +93,13 @@ input AccessRoleFilter {
|
|
|
66
93
|
type AccessRoleGrant {
|
|
67
94
|
actions: AccessRoleGrantActions!
|
|
68
95
|
|
|
69
|
-
"\n If true, this grant allows the action specified by the selected controls. If false, it removes\n the controls.\n\n Removing a control only happens within the context of a single role. If another role grants the\n same control, the action is allowed. This is more of an exception system than a denial\n system. So you can do something like add the \"view\" control to the \"movie\"
|
|
96
|
+
"\n If true, this grant allows the action specified by the selected controls. If false, it removes\n the controls.\n\n Removing a control only happens within the context of a single role. If another role grants the\n same control, the action is allowed. This is more of an exception system than a denial\n system. So you can do something like add the \"view\" control to the \"movie\" control group in one\n grant, and then in a second grant in the same role, remove it from \"The Princess Bride\". Now you\n have a role that grants \"view\" on all movies _except_ The Princess Bride. If the user has another role\n that grants \"view\" on The Princess Bride (or on all movies), they can view it based on that other role.\n "
|
|
70
97
|
allow: Boolean!
|
|
98
|
+
|
|
99
|
+
"""The group this control belongs to. e.g. Reviewer - Review Phase"""
|
|
100
|
+
controlGroup: AccessControlGroup!
|
|
71
101
|
controls: [String!]!
|
|
72
102
|
id: ID!
|
|
73
|
-
|
|
74
|
-
"""The type of subject this grant applies to, e.g. "movie"."""
|
|
75
|
-
subjectType: AccessSubjectType!
|
|
76
103
|
tags: [AccessGrantTag!]!
|
|
77
104
|
}
|
|
78
105
|
|
|
@@ -83,12 +110,12 @@ type AccessRoleGrantActions {
|
|
|
83
110
|
|
|
84
111
|
input AccessRoleGrantCreate {
|
|
85
112
|
allow: Boolean!
|
|
113
|
+
controlGroup: String
|
|
86
114
|
|
|
87
115
|
"""
|
|
88
|
-
A list of controls that are allowed or denied by this grant. Each
|
|
116
|
+
A list of controls that are allowed or denied by this grant. Each controlGroup has a list of available controls, available under Query.controlGroups.
|
|
89
117
|
"""
|
|
90
118
|
controls: [String!]
|
|
91
|
-
subjectType: String
|
|
92
119
|
|
|
93
120
|
"""
|
|
94
121
|
A list of tags to restrict a grant. For instance, if this is added to a grant on PromptAnswer-update, each tag refers to a subset of App Requests.
|
|
@@ -98,12 +125,12 @@ input AccessRoleGrantCreate {
|
|
|
98
125
|
|
|
99
126
|
input AccessRoleGrantUpdate {
|
|
100
127
|
allow: Boolean!
|
|
128
|
+
controlGroup: String
|
|
101
129
|
|
|
102
130
|
"""
|
|
103
|
-
A list of controls that are allowed or denied by this grant. Each
|
|
131
|
+
A list of controls that are allowed or denied by this grant. Each controlGroup has a list of available controls, available under Query.controlGroups.
|
|
104
132
|
"""
|
|
105
133
|
controls: [String!]
|
|
106
|
-
subjectType: String
|
|
107
134
|
|
|
108
135
|
"""
|
|
109
136
|
A list of tags to restrict a grant. For instance, if this is added to a grant on PromptAnswer-update, each tag refers to a subset of App Requests.
|
|
@@ -111,6 +138,25 @@ input AccessRoleGrantUpdate {
|
|
|
111
138
|
tags: [AccessTagInput!]
|
|
112
139
|
}
|
|
113
140
|
|
|
141
|
+
type AccessRoleGroup {
|
|
142
|
+
"""The date the group was added to a role."""
|
|
143
|
+
dateAdded: DateTime!
|
|
144
|
+
dateCreated: DateTime!
|
|
145
|
+
|
|
146
|
+
"""The name of the group. This should be unique even among all roleIds."""
|
|
147
|
+
groupName: String!
|
|
148
|
+
managers: [AccessRoleGroupManager!]!
|
|
149
|
+
roleId: ID!
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
type AccessRoleGroupManager {
|
|
153
|
+
"""The date the group was added to a role."""
|
|
154
|
+
email: String
|
|
155
|
+
|
|
156
|
+
"""The date the group was added to a role."""
|
|
157
|
+
fullname: String!
|
|
158
|
+
}
|
|
159
|
+
|
|
114
160
|
input AccessRoleInput {
|
|
115
161
|
"""
|
|
116
162
|
A description of the role. This is not used for anything, but can be useful for admins to understand what the role is trying to do.
|
|
@@ -135,25 +181,6 @@ type AccessRoleValidatedResponse {
|
|
|
135
181
|
success: Boolean!
|
|
136
182
|
}
|
|
137
183
|
|
|
138
|
-
type AccessSubjectType {
|
|
139
|
-
"""
|
|
140
|
-
A list of all possible controls for this subjectType. Use this to populate the control dropdown when creating a grant.
|
|
141
|
-
"""
|
|
142
|
-
controls: [AccessControl!]!
|
|
143
|
-
|
|
144
|
-
"""
|
|
145
|
-
A longer explanation of the subject type for display in the role management interface.
|
|
146
|
-
"""
|
|
147
|
-
description: String
|
|
148
|
-
name: String!
|
|
149
|
-
tags: [AccessTagCategory!]!
|
|
150
|
-
|
|
151
|
-
"""
|
|
152
|
-
A slightly longer version of the subject type's name, for display in the role management interface.
|
|
153
|
-
"""
|
|
154
|
-
title: String!
|
|
155
|
-
}
|
|
156
|
-
|
|
157
184
|
type AccessTag {
|
|
158
185
|
label: String!
|
|
159
186
|
value: String!
|
|
@@ -190,15 +217,36 @@ type AccessUser {
|
|
|
190
217
|
A JSON object containing any information about the user that the implementing application wants to store. Could be useful for constructing personalized UI.
|
|
191
218
|
"""
|
|
192
219
|
otherInfo: JsonData
|
|
193
|
-
roles: AccessRole!
|
|
220
|
+
roles: [AccessRole!]!
|
|
221
|
+
|
|
222
|
+
"""
|
|
223
|
+
True as long as the lookupUser.byLogins function still returns this user. False otherwise. Likely this user has been deactivated.
|
|
224
|
+
"""
|
|
225
|
+
stillValid: Boolean!
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
"""
|
|
229
|
+
A category and tag pair for an internal and external user related attributes. For example, [{ category: "institutionalRole", tags: ["STAFF", "STUDENT"] }, { category: "lastLogin", tags: ["2025-09-01T10:20:04"] }]
|
|
230
|
+
"""
|
|
231
|
+
input AccessUserCategoryInput {
|
|
232
|
+
category: ID!
|
|
233
|
+
tags: [ID!]!
|
|
194
234
|
}
|
|
195
235
|
|
|
196
236
|
input AccessUserFilter {
|
|
197
237
|
logins: [ID!]
|
|
198
238
|
|
|
239
|
+
"""
|
|
240
|
+
One to Many categories Filter, like a institutional role people may belong to.
|
|
241
|
+
"""
|
|
242
|
+
otherCategoriesByLabel: [AccessUserCategoryInput!]
|
|
243
|
+
|
|
199
244
|
"""Filter by identifiers aside from username, like an Employee ID."""
|
|
200
245
|
otherIdentifiers: [String!]
|
|
201
246
|
otherIdentifiersByLabel: [AccessUserIdentifierInput!]
|
|
247
|
+
|
|
248
|
+
"""Filter users by associated Application Roles"""
|
|
249
|
+
roles: [String!]
|
|
202
250
|
search: String
|
|
203
251
|
|
|
204
252
|
"""If true, only return the user that is currently logged in."""
|
|
@@ -239,6 +287,7 @@ type AppRequest {
|
|
|
239
287
|
Filters to apply to the activity log. This can be used to filter by action type, date range, etc.
|
|
240
288
|
"""
|
|
241
289
|
filters: AppRequestActivityFilters
|
|
290
|
+
paged: Pagination
|
|
242
291
|
): [AppRequestActivity!]!
|
|
243
292
|
applicant: AccessUser!
|
|
244
293
|
applications: [Application!]!
|
|
@@ -247,6 +296,7 @@ type AppRequest {
|
|
|
247
296
|
Date that this request was considered closed and no longer editable. If active or re-opened, will be null. If closed again, will be the second closure date.
|
|
248
297
|
"""
|
|
249
298
|
closedAt: DateTime
|
|
299
|
+
complete: Boolean!
|
|
250
300
|
createdAt: DateTime!
|
|
251
301
|
|
|
252
302
|
"""
|
|
@@ -258,6 +308,11 @@ type AppRequest {
|
|
|
258
308
|
"""
|
|
259
309
|
schemaVersion: String
|
|
260
310
|
): JsonData!
|
|
311
|
+
|
|
312
|
+
"""
|
|
313
|
+
The version of the data for this app request. This is incremented every time the data is updated. If you provide it with your update requests, the API will perform an optimistic concurrency check and fail the update if someone else has updated the data in the meantime.
|
|
314
|
+
"""
|
|
315
|
+
dataVersion: Int!
|
|
261
316
|
id: ID!
|
|
262
317
|
|
|
263
318
|
"""
|
|
@@ -270,6 +325,16 @@ type AppRequest {
|
|
|
270
325
|
for: AppRequestIndexDestination
|
|
271
326
|
): [AppRequestIndexCategory!]!
|
|
272
327
|
|
|
328
|
+
"""
|
|
329
|
+
Notes attached to this app request. Notes are internal only and only visible to reviewers. They are not visible to applicants.
|
|
330
|
+
"""
|
|
331
|
+
notes(filter: AppRequestNoteFilters): [Note!]!
|
|
332
|
+
|
|
333
|
+
"""
|
|
334
|
+
Notes attached to other app requests from this same applicant. Useful for providing context information from previous applications.
|
|
335
|
+
"""
|
|
336
|
+
otherNotes(filter: AppRequestNoteFilters): [Note!]!
|
|
337
|
+
|
|
273
338
|
"""The period this appRequest is associated with."""
|
|
274
339
|
period: Period!
|
|
275
340
|
|
|
@@ -287,6 +352,11 @@ type AppRequest {
|
|
|
287
352
|
}
|
|
288
353
|
|
|
289
354
|
type AppRequestActions {
|
|
355
|
+
"""
|
|
356
|
+
User may finalize the acceptance or denial of the offer. Sends the app request to non-blocking workflow (or completion).
|
|
357
|
+
"""
|
|
358
|
+
acceptOffer: Boolean!
|
|
359
|
+
|
|
290
360
|
"""
|
|
291
361
|
User may cancel this app request as the owner. Separate from closing as a reviewer/admin.
|
|
292
362
|
"""
|
|
@@ -297,8 +367,15 @@ type AppRequestActions {
|
|
|
297
367
|
"""
|
|
298
368
|
close: Boolean!
|
|
299
369
|
|
|
300
|
-
"""
|
|
301
|
-
|
|
370
|
+
"""
|
|
371
|
+
User may complete the app request. All non-blocking workflow must be complete.
|
|
372
|
+
"""
|
|
373
|
+
completeRequest: Boolean!
|
|
374
|
+
|
|
375
|
+
"""
|
|
376
|
+
User may complete the review app request. Sends the app request to the acceptance phase, or if there is no acceptance phase, to the non-blocking workflow or completion.
|
|
377
|
+
"""
|
|
378
|
+
completeReview: Boolean!
|
|
302
379
|
|
|
303
380
|
"""
|
|
304
381
|
User may reopen this app request, whether as the owner or as a reviewer/admin.
|
|
@@ -306,7 +383,20 @@ type AppRequestActions {
|
|
|
306
383
|
reopen: Boolean!
|
|
307
384
|
|
|
308
385
|
"""User may return this app request to the applicant phase."""
|
|
309
|
-
|
|
386
|
+
returnToApplicant: Boolean!
|
|
387
|
+
|
|
388
|
+
"""User may return to the non-blocking workflow phase from completion."""
|
|
389
|
+
returnToNonBlocking: Boolean!
|
|
390
|
+
|
|
391
|
+
"""
|
|
392
|
+
User may return the app request to the acceptance phase from non-blocking workflow or completion.
|
|
393
|
+
"""
|
|
394
|
+
returnToOffer: Boolean!
|
|
395
|
+
|
|
396
|
+
"""
|
|
397
|
+
User may return the app request to the review phase from non-blocking workflow or completion. This does not cover reclaiming an offer - see reverseOffer for that. It also does not cover returning from completion to acceptance - see returnToOffer for that.
|
|
398
|
+
"""
|
|
399
|
+
returnToReview: Boolean!
|
|
310
400
|
|
|
311
401
|
"""Whether the user can view this app request as a reviewer."""
|
|
312
402
|
review: Boolean!
|
|
@@ -373,7 +463,9 @@ input AppRequestActivityFilters {
|
|
|
373
463
|
"""
|
|
374
464
|
impersonatedUsers: [ID!]
|
|
375
465
|
|
|
376
|
-
"""
|
|
466
|
+
"""
|
|
467
|
+
Return activities that were performed by one of the given logins. Also returns activities that were performed while one of the given logins was impersonating someone else.
|
|
468
|
+
"""
|
|
377
469
|
users: [ID!]
|
|
378
470
|
}
|
|
379
471
|
|
|
@@ -382,15 +474,55 @@ input AppRequestFilter {
|
|
|
382
474
|
true -> only return appRequests that are closed. false -> only return appRequests that are open. null -> return all appRequests.
|
|
383
475
|
"""
|
|
384
476
|
closed: Boolean
|
|
477
|
+
|
|
478
|
+
"""
|
|
479
|
+
Only return appRequests that were closed after this date. Open appRequests will be filtered out.
|
|
480
|
+
"""
|
|
481
|
+
closedAfter: DateTime
|
|
482
|
+
|
|
483
|
+
"""
|
|
484
|
+
Only return appRequests that were closed before this date. Open appRequests will be filtered out.
|
|
485
|
+
"""
|
|
486
|
+
closedBefore: DateTime
|
|
487
|
+
|
|
488
|
+
"""Only return appRequests that were created after this date."""
|
|
489
|
+
createdAfter: DateTime
|
|
490
|
+
|
|
491
|
+
"""Only return appRequests that were created before this date."""
|
|
492
|
+
createdBefore: DateTime
|
|
385
493
|
ids: [ID!]
|
|
386
494
|
|
|
495
|
+
"""Only return appRequests that match one of the given indexes."""
|
|
496
|
+
indexes: [AppRequestIndexFilter!]
|
|
497
|
+
|
|
387
498
|
"""Only return appRequests that are owned by one the given logins."""
|
|
388
499
|
logins: [ID!]
|
|
389
500
|
|
|
390
501
|
"""Only return appRequests that are owned by the current user."""
|
|
391
502
|
own: Boolean
|
|
392
503
|
periodIds: [ID!]
|
|
504
|
+
|
|
505
|
+
"""
|
|
506
|
+
Search for appRequests that match this search term. This will do a prefix search across all fields that are indexed.
|
|
507
|
+
"""
|
|
508
|
+
search: String
|
|
393
509
|
status: [AppRequestStatus!]
|
|
510
|
+
|
|
511
|
+
"""
|
|
512
|
+
Only return appRequests that were submitted after this date. App Requests that have not been submitted will be filtered out.
|
|
513
|
+
"""
|
|
514
|
+
submittedAfter: DateTime
|
|
515
|
+
|
|
516
|
+
"""
|
|
517
|
+
Only return appRequests that were submitted before this date. App Requests that have not been submitted will be filtered out.
|
|
518
|
+
"""
|
|
519
|
+
submittedBefore: DateTime
|
|
520
|
+
|
|
521
|
+
"""Only return appRequests that were updated after this date."""
|
|
522
|
+
updatedAfter: DateTime
|
|
523
|
+
|
|
524
|
+
"""Only return appRequests that were updated before this date."""
|
|
525
|
+
updatedBefore: DateTime
|
|
394
526
|
}
|
|
395
527
|
|
|
396
528
|
"""
|
|
@@ -443,6 +575,24 @@ enum AppRequestIndexDestination {
|
|
|
443
575
|
REVIEWER_DASHBOARD
|
|
444
576
|
}
|
|
445
577
|
|
|
578
|
+
input AppRequestIndexFilter {
|
|
579
|
+
category: String!
|
|
580
|
+
tags: [String!]!
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
input AppRequestNoteFilters {
|
|
584
|
+
"""Filter notes to those attached to the specified application requests."""
|
|
585
|
+
appRequestIds: [ID!]
|
|
586
|
+
|
|
587
|
+
"""
|
|
588
|
+
Filter notes to those attached to application requests from the specified applicants (by login name).
|
|
589
|
+
"""
|
|
590
|
+
applicants: [String!]
|
|
591
|
+
|
|
592
|
+
"""Filter to the specified note IDs."""
|
|
593
|
+
ids: [ID!]
|
|
594
|
+
}
|
|
595
|
+
|
|
446
596
|
"\n The status of an appRequest. This status is computed based on the \"dbStatus\" recorded in\n the database and the status of each application.\n "
|
|
447
597
|
enum AppRequestStatus {
|
|
448
598
|
"""
|
|
@@ -461,7 +611,7 @@ enum AppRequestStatus {
|
|
|
461
611
|
APPROVAL
|
|
462
612
|
|
|
463
613
|
"""
|
|
464
|
-
|
|
614
|
+
Results have been released to the applicant, there is no acceptance phase, and at least one application was found eligible.
|
|
465
615
|
"""
|
|
466
616
|
APPROVED
|
|
467
617
|
|
|
@@ -474,10 +624,14 @@ enum AppRequestStatus {
|
|
|
474
624
|
Applicant has not yet submitted but ALL applications have been disqualified. Applicant may continue editing prompts until the App Request is closed.
|
|
475
625
|
"""
|
|
476
626
|
DISQUALIFIED
|
|
627
|
+
|
|
628
|
+
"""
|
|
629
|
+
Applicant has responded to the offer, but did not accept an offer on any application.
|
|
630
|
+
"""
|
|
477
631
|
NOT_ACCEPTED
|
|
478
632
|
|
|
479
633
|
"""
|
|
480
|
-
|
|
634
|
+
Results have been released to the applicant, there is no acceptance phase, and all applications were found ineligible.
|
|
481
635
|
"""
|
|
482
636
|
NOT_APPROVED
|
|
483
637
|
|
|
@@ -486,11 +640,21 @@ enum AppRequestStatus {
|
|
|
486
640
|
"""
|
|
487
641
|
PREAPPROVAL
|
|
488
642
|
|
|
643
|
+
"""
|
|
644
|
+
Applicant has been offered, satisfied all acceptance requirements and is ready to accept. This status is unreachable if the period has no ACCEPTANCE requirements.
|
|
645
|
+
"""
|
|
646
|
+
READY_TO_ACCEPT
|
|
647
|
+
|
|
489
648
|
"""
|
|
490
649
|
Applicant has completed all prompts and is ready to submit. At least one application is eligible to proceed.
|
|
491
650
|
"""
|
|
492
651
|
READY_TO_SUBMIT
|
|
493
652
|
|
|
653
|
+
"""
|
|
654
|
+
All applications have been reviewed and any blocking workflow stages have been completed. The application is ready for results to be released to the applicant.
|
|
655
|
+
"""
|
|
656
|
+
REVIEW_COMPLETE
|
|
657
|
+
|
|
494
658
|
"""Applicant has begun the process and has not yet submitted."""
|
|
495
659
|
STARTED
|
|
496
660
|
|
|
@@ -507,8 +671,31 @@ type Application {
|
|
|
507
671
|
actions: ApplicationActions!
|
|
508
672
|
id: ID!
|
|
509
673
|
|
|
674
|
+
"""
|
|
675
|
+
The phase in which this application became ineligible for benefits. Useful for reporting / filtering. Null if the application is not (yet) ineligible.
|
|
676
|
+
"""
|
|
677
|
+
ineligiblePhase: IneligiblePhases
|
|
678
|
+
|
|
510
679
|
"""The navigation title of the program this application is for."""
|
|
511
680
|
navTitle: String!
|
|
681
|
+
|
|
682
|
+
"""
|
|
683
|
+
The next workflow stage for this application that would be active after activating the advanceWorkflow mutation. Null if the application or current user is not allowed to advance.
|
|
684
|
+
"""
|
|
685
|
+
nextWorkflowStage: PeriodWorkflowStage
|
|
686
|
+
|
|
687
|
+
"""
|
|
688
|
+
The phase of the application. This is usually a computed field, not stored in the database.
|
|
689
|
+
"""
|
|
690
|
+
phase: ApplicationPhase!
|
|
691
|
+
|
|
692
|
+
"""
|
|
693
|
+
The previous workflow stage for this application that would be active after activating the reverseWorkflow mutation. Null if the application or current user is not allowed to reverse.
|
|
694
|
+
"""
|
|
695
|
+
previousWorkflowStage: PeriodWorkflowStage
|
|
696
|
+
|
|
697
|
+
"""The program key this application corresponds to."""
|
|
698
|
+
programKey: String!
|
|
512
699
|
requirements: [ApplicationRequirement!]!
|
|
513
700
|
status: ApplicationStatus!
|
|
514
701
|
|
|
@@ -519,12 +706,92 @@ type Application {
|
|
|
519
706
|
|
|
520
707
|
"""The title of the program this application is for."""
|
|
521
708
|
title: String!
|
|
709
|
+
|
|
710
|
+
"""
|
|
711
|
+
If the program has workflow, it may be divided into multiple stages of audit, each with their own requirements/prompts. This indicates which stage we are currently evaluating, or null if we are not in the workflow phase. An application with no workflow defined will never be in the workflow phase. Starts at 1.
|
|
712
|
+
"""
|
|
713
|
+
workflowStage: PeriodWorkflowStage
|
|
714
|
+
|
|
715
|
+
"""
|
|
716
|
+
All workflow stages defined for the program/period of this application, in evaluation order.
|
|
717
|
+
"""
|
|
718
|
+
workflowStages: [PeriodWorkflowStage!]!
|
|
522
719
|
}
|
|
523
720
|
|
|
524
721
|
type ApplicationActions {
|
|
722
|
+
advanceWorkflow: Boolean!
|
|
723
|
+
reverseWorkflow: Boolean!
|
|
525
724
|
viewAsReviewer: Boolean!
|
|
526
725
|
}
|
|
527
726
|
|
|
727
|
+
"\n The phase of the application. This is usually a computed field, not stored in the database. The phase\n is computed based on the status of the appRequest and of the requirements for the program.\n "
|
|
728
|
+
enum ApplicationPhase {
|
|
729
|
+
"""
|
|
730
|
+
The application has been reviewed and an offer has been made to the applicant. The applicant must accept the offer.
|
|
731
|
+
"""
|
|
732
|
+
ACCEPTANCE
|
|
733
|
+
|
|
734
|
+
"""
|
|
735
|
+
The applicant has submitted the application and any PREAPPROVAL requirements are passing. The application is under review.
|
|
736
|
+
"""
|
|
737
|
+
APPROVAL
|
|
738
|
+
|
|
739
|
+
"""
|
|
740
|
+
The application has been reviewed. If there was a workflow, it is complete. If there was an acceptance phase, the offer was accepted or rejected.
|
|
741
|
+
"""
|
|
742
|
+
COMPLETE
|
|
743
|
+
|
|
744
|
+
"""
|
|
745
|
+
The applicant has submitted the application, but there are automated prompts that need to be filled in before the application will appear on a reviewer's dashboard.
|
|
746
|
+
"""
|
|
747
|
+
PREAPPROVAL
|
|
748
|
+
|
|
749
|
+
"""
|
|
750
|
+
The appRequest has not finished pre-qual yet. The application doesn't properly exist yet.
|
|
751
|
+
"""
|
|
752
|
+
PREQUAL
|
|
753
|
+
|
|
754
|
+
"""
|
|
755
|
+
The applicant is filling out their portion of prompts and has not yet finished.
|
|
756
|
+
"""
|
|
757
|
+
QUALIFICATION
|
|
758
|
+
|
|
759
|
+
"""
|
|
760
|
+
No application requirements are PENDING. The application is ready for the first workflow stage, but a reviewer must manually advance the phase. This phase will be automatically skipped if there are no workflow stages configured/enabled.
|
|
761
|
+
"""
|
|
762
|
+
READY_FOR_WORKFLOW
|
|
763
|
+
|
|
764
|
+
"""
|
|
765
|
+
An offer has been made to the applicant. The acceptance requirements are no longer pending, the application is ready to be finalized.
|
|
766
|
+
"""
|
|
767
|
+
READY_TO_ACCEPT
|
|
768
|
+
|
|
769
|
+
"""
|
|
770
|
+
All non-blocking workflow stages are complete. The application is ready to be finalized.
|
|
771
|
+
"""
|
|
772
|
+
READY_TO_COMPLETE
|
|
773
|
+
|
|
774
|
+
"""
|
|
775
|
+
The applicant has filled out their portion of the prompts but has not yet submitted for review.
|
|
776
|
+
"""
|
|
777
|
+
READY_TO_SUBMIT
|
|
778
|
+
|
|
779
|
+
"""
|
|
780
|
+
The application has been reviewed and any blocking workflow stages have been completed. The application is ready for results (whether eligible or not) to be released to the applicant. A reviewer must manually advanced the phase, and will do so for the whole appRequest, not one application at a time. So the application will sit in this state until all applications are REVIEW_COMPLETE. If there is no acceptance phase (because there are no acceptance requirements), or if the application is not eligible, the makeOffer prompt will move the phase to WORKFLOW_NONBLOCKING or COMPLETE.
|
|
781
|
+
"""
|
|
782
|
+
REVIEW_COMPLETE
|
|
783
|
+
|
|
784
|
+
"""
|
|
785
|
+
The application review has been completed and now there is a workflow process to audit the review BEFORE marking the application status as eligible or ineligible. It should remain pending until the blocking workflow stages have been completed. Workflow stages that evaluate to INELIGIBLE will also make the application status INELIGIBLE. Prompts from the applicant and review phases are locked.
|
|
786
|
+
"""
|
|
787
|
+
WORKFLOW_BLOCKING
|
|
788
|
+
|
|
789
|
+
"""
|
|
790
|
+
The application has been offered and accepted and now there is a workflow process to audit the review AFTER marking the application status as eligible or ineligible. Requirements from non-blocking workflow states cannot affect the application status, but the application will not proceed to the complete phase until all workflow stages are non-PENDING.
|
|
791
|
+
"""
|
|
792
|
+
WORKFLOW_NONBLOCKING
|
|
793
|
+
}
|
|
794
|
+
|
|
528
795
|
"""
|
|
529
796
|
The specific instance of a requirement on a particular application. Stores the status of the requirement, e.g. being satisfied or not.
|
|
530
797
|
"""
|
|
@@ -553,11 +820,6 @@ type ApplicationRequirement {
|
|
|
553
820
|
navTitle: String!
|
|
554
821
|
prompts: [RequirementPrompt!]!
|
|
555
822
|
|
|
556
|
-
"""
|
|
557
|
-
When true, means that the requirement has not been made moot by an earlier requirement failing. It may still need to be hidden from navigation based on evaluatedInEarlierApplication.
|
|
558
|
-
"""
|
|
559
|
-
reachable: Boolean!
|
|
560
|
-
|
|
561
823
|
"""
|
|
562
824
|
The smart title for this requirement in the app request's period. For instance, might be "Applicant must have GPA over 3.4" instead of the regular title "Applicant must meet GPA requirement". Will fall back to the regular title for any requirement that does not provide a smart title.
|
|
563
825
|
"""
|
|
@@ -580,76 +842,82 @@ type ApplicationRequirement {
|
|
|
580
842
|
The type of requirement. This determines when the requirement is evaluated and who can see the requirement.
|
|
581
843
|
"""
|
|
582
844
|
type: RequirementType!
|
|
583
|
-
}
|
|
584
845
|
|
|
585
|
-
"\n The status of an application. This is usually a computed field, not stored in the database. The status\n is computed based on the status of the appRequest and of the requirements for the program. If\n the appRequest is CLOSED, the status should permanently match the ApplicationStatusDB instead of being\n computed. If the appRequest is CANCELLED, all applications should be CANCELLED as well.\n "
|
|
586
|
-
enum ApplicationStatus {
|
|
587
846
|
"""
|
|
588
|
-
The
|
|
847
|
+
The stage of the workflow for this requirement. Null if not part of a workflow stage
|
|
589
848
|
"""
|
|
590
|
-
|
|
849
|
+
workflowStage: PeriodWorkflowStage
|
|
850
|
+
}
|
|
591
851
|
|
|
852
|
+
"\n The status of an application. This is usually a computed field, not stored in the database. The status\n is computed based on the status of the appRequest and of the requirements for the program. If\n the appRequest is CLOSED or CANCELLED, this status will remain frozen wherever it was before the\n closure / cancellation.\n "
|
|
853
|
+
enum ApplicationStatus {
|
|
592
854
|
"""
|
|
593
|
-
|
|
855
|
+
An offer was made to the applicant and all ACCEPTANCE requirements are met (the applicant accepted the offer).
|
|
594
856
|
"""
|
|
595
857
|
ACCEPTED
|
|
596
858
|
|
|
597
859
|
"""
|
|
598
|
-
|
|
860
|
+
All application requirements up to and including WORKFLOW_BLOCKING requirements are resolving as MET (or NOT_APPLICABLE or WARNING). If there is an acceptance phase, the acceptance is still pending.
|
|
599
861
|
"""
|
|
600
|
-
|
|
862
|
+
ELIGIBLE
|
|
601
863
|
|
|
602
|
-
"""
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
CANCELLED
|
|
864
|
+
"""
|
|
865
|
+
At least one application requirement up to and including WORKFLOW_BLOCKING requirements is not met. The review cannot proceed, but the first or current stage of the workflow should still continue.
|
|
866
|
+
"""
|
|
867
|
+
INELIGIBLE
|
|
607
868
|
|
|
608
869
|
"""
|
|
609
|
-
The
|
|
870
|
+
The application status has not yet been determined. Further prompts must be answered.
|
|
610
871
|
"""
|
|
611
|
-
|
|
872
|
+
PENDING
|
|
612
873
|
|
|
613
874
|
"""
|
|
614
|
-
|
|
875
|
+
An offer was made to the applicant and at least one ACCEPTANCE requirement is not met (the applicant rejected the offer).
|
|
615
876
|
"""
|
|
616
|
-
|
|
877
|
+
REJECTED
|
|
878
|
+
}
|
|
617
879
|
|
|
880
|
+
type Category {
|
|
618
881
|
"""
|
|
619
|
-
|
|
882
|
+
This is indexed name of the category. Categories are indexed to allow for quick filtering of a list of items. e.g. institutionalRoles
|
|
620
883
|
"""
|
|
621
|
-
|
|
884
|
+
category: String!
|
|
622
885
|
|
|
623
|
-
"""
|
|
624
|
-
|
|
886
|
+
"""Displayed Label of the category. e.g. Institutional Roles"""
|
|
887
|
+
label: String
|
|
625
888
|
|
|
626
|
-
"""
|
|
627
|
-
|
|
889
|
+
"""
|
|
890
|
+
IDs are the unique values that may be used to group an items. Multiple IDs may be assigned to an item. i.e. ["Staff", "Faculty", "Student"]
|
|
891
|
+
"""
|
|
892
|
+
tags: [CategoryTag!]!
|
|
628
893
|
|
|
629
894
|
"""
|
|
630
|
-
|
|
895
|
+
Set this to true should be available as a filter in the User list view.
|
|
631
896
|
"""
|
|
632
|
-
|
|
897
|
+
useInFilters: Boolean
|
|
633
898
|
|
|
634
899
|
"""
|
|
635
|
-
|
|
900
|
+
Set this to true should be displayed as a column in the User list view.
|
|
636
901
|
"""
|
|
637
|
-
|
|
902
|
+
useInList: Boolean
|
|
903
|
+
}
|
|
638
904
|
|
|
905
|
+
type CategoryTag {
|
|
639
906
|
"""
|
|
640
|
-
|
|
907
|
+
Displayed Label of the tag in the UI Filter. This value should be unique enough to be distinguishable between other tags within a category type.
|
|
641
908
|
"""
|
|
642
|
-
|
|
909
|
+
label: String
|
|
643
910
|
|
|
644
911
|
"""
|
|
645
|
-
|
|
912
|
+
This is the indexed name of the tagged instance within a category type and is what is stored/searched for in the database.
|
|
646
913
|
"""
|
|
647
|
-
|
|
914
|
+
tag: String!
|
|
648
915
|
}
|
|
649
916
|
|
|
650
917
|
type Configuration {
|
|
651
918
|
actions: ConfigurationAccess!
|
|
652
919
|
data: JsonData!
|
|
920
|
+
fetchedData: JsonData
|
|
653
921
|
|
|
654
922
|
"""The key being configured. Could be a requirement or prompt key."""
|
|
655
923
|
key: String!
|
|
@@ -719,24 +987,108 @@ type IndexValue {
|
|
|
719
987
|
value: String!
|
|
720
988
|
}
|
|
721
989
|
|
|
990
|
+
enum IneligiblePhases {
|
|
991
|
+
"""The application became ineligible in the acceptance phase."""
|
|
992
|
+
ACCEPTANCE
|
|
993
|
+
|
|
994
|
+
"""The application became ineligible in the approval phase."""
|
|
995
|
+
APPROVAL
|
|
996
|
+
|
|
997
|
+
"""The application became ineligible in the pre-approval phase."""
|
|
998
|
+
PREAPPROVAL
|
|
999
|
+
|
|
1000
|
+
"""The application became ineligible in the pre-qualification phase."""
|
|
1001
|
+
PREQUAL
|
|
1002
|
+
|
|
1003
|
+
"""The application became ineligible in the qualification phase."""
|
|
1004
|
+
QUALIFICATION
|
|
1005
|
+
|
|
1006
|
+
"""The application became ineligible during blocking workflow."""
|
|
1007
|
+
WORKFLOW
|
|
1008
|
+
}
|
|
1009
|
+
|
|
722
1010
|
"""Unstructured JSON data."""
|
|
723
1011
|
scalar JsonData
|
|
724
1012
|
|
|
725
1013
|
type Mutation {
|
|
1014
|
+
"""
|
|
1015
|
+
This is for the applicant to accept or reject the offer that was made based on their app request. The difference between accept and reject is determined by the status of the acceptance requirements. They will still "accept offer" after they answer that they do not want the offer. If there is non-blocking workflow on any applications, the first one in each will begin. Applications without non-blocking workflow will be advanced to the COMPLETE phase. If all applications are complete, the app request will be closed.
|
|
1016
|
+
"""
|
|
1017
|
+
acceptOffer(appRequestId: ID!): ValidatedAppRequestResponse!
|
|
1018
|
+
|
|
726
1019
|
"""Add a note to the app request."""
|
|
727
1020
|
addNote(
|
|
1021
|
+
"""The content of the note. HTML is expected."""
|
|
728
1022
|
content: String!
|
|
1023
|
+
): ValidatedAppRequestResponse!
|
|
1024
|
+
|
|
1025
|
+
"""
|
|
1026
|
+
Moves the application to the next workflow stage. If phase is READY_FOR_WORKFLOW, moves to the first or next blocking workflow stage. If on the last blocking workflow, moves to REVIEW_COMPLETE. If on the last non-blocking workflow, moves the application to COMPLETE. If all applications are COMPLETE, automatically triggers the app request close mutation.
|
|
1027
|
+
"""
|
|
1028
|
+
advanceWorkflow(applicationId: ID!): ValidatedAppRequestResponse!
|
|
1029
|
+
|
|
1030
|
+
"""
|
|
1031
|
+
Cancel or withdraw the app request, depending on its current phase. This is only available if the app request is in a cancellable state.
|
|
1032
|
+
"""
|
|
1033
|
+
cancelAppRequest(
|
|
1034
|
+
appRequestId: ID!
|
|
729
1035
|
|
|
730
1036
|
"""
|
|
731
|
-
If
|
|
1037
|
+
If the user is currently viewing some of the app request details, include the dataVersion here to make the cancellation fail when the app request has been updated by another user.
|
|
732
1038
|
"""
|
|
733
|
-
|
|
1039
|
+
dataVersion: Int
|
|
734
1040
|
): ValidatedAppRequestResponse!
|
|
735
1041
|
|
|
736
|
-
"""
|
|
737
|
-
|
|
1042
|
+
"""
|
|
1043
|
+
Close the app request. Generally this is always available and will freeze the request/applications in their current phase/status.
|
|
1044
|
+
"""
|
|
1045
|
+
closeAppRequest(appRequestId: ID!): ValidatedAppRequestResponse!
|
|
1046
|
+
|
|
1047
|
+
"""
|
|
1048
|
+
Complete the app request. This is generally only available if request is in non-blocking workflow and all applications are complete.
|
|
1049
|
+
"""
|
|
1050
|
+
completeRequest(appRequestId: ID!): ValidatedAppRequestResponse!
|
|
1051
|
+
|
|
1052
|
+
"""
|
|
1053
|
+
Make an offer on the app request. If all applications are ineligible, or if there are no acceptance requirements, the applications will advance to the non-blocking workflow, or absent that, be marked complete.
|
|
1054
|
+
"""
|
|
1055
|
+
completeReview(appRequestId: ID!): ValidatedAppRequestResponse!
|
|
1056
|
+
|
|
1057
|
+
"""Create a new app request."""
|
|
1058
|
+
createAppRequest(login: String!, periodId: ID!, validateOnly: Boolean): ValidatedAppRequestResponse!
|
|
1059
|
+
createPeriod(copyPeriodId: String, period: PeriodUpdate!, validateOnly: Boolean): ValidatedPeriodResponse!
|
|
1060
|
+
deletePeriod(periodId: ID!): ValidatedResponse!
|
|
1061
|
+
markPeriodReviewed(periodId: ID!, validateOnly: Boolean): ValidatedPeriodResponse!
|
|
1062
|
+
|
|
1063
|
+
"""
|
|
1064
|
+
Reopen the app request. This is only available if the app request is in a state that allows reopening.
|
|
1065
|
+
"""
|
|
1066
|
+
reopenAppRequest(appRequestId: ID!): ValidatedAppRequestResponse!
|
|
1067
|
+
|
|
1068
|
+
"""
|
|
1069
|
+
Return the app request to the applicant phase. This is only available if the app request is in a state that allows returning.
|
|
1070
|
+
"""
|
|
1071
|
+
returnToApplicant(appRequestId: ID!): ValidatedAppRequestResponse!
|
|
1072
|
+
|
|
1073
|
+
"""If request is complete, undo and return to non-blocking workflow."""
|
|
1074
|
+
returnToNonBlocking(appRequestId: ID!): ValidatedAppRequestResponse!
|
|
1075
|
+
|
|
1076
|
+
"""
|
|
1077
|
+
Return the app request to the acceptance phase from non-blocking workflow or completion.
|
|
1078
|
+
"""
|
|
1079
|
+
returnToOffer(appRequestId: ID!): ValidatedAppRequestResponse!
|
|
1080
|
+
|
|
1081
|
+
"""
|
|
1082
|
+
Return the app request to the review phase from acceptance, non-blocking workflow, or completion.
|
|
1083
|
+
"""
|
|
1084
|
+
returnToReview(appRequestId: ID!): ValidatedAppRequestResponse!
|
|
1085
|
+
|
|
1086
|
+
"""
|
|
1087
|
+
Moves the application back to the previous workflow stage. If on the first blocking workflow stage, moves back to APPROVAL. If on the first non-blocking workflow, throws an error.
|
|
1088
|
+
"""
|
|
1089
|
+
reverseWorkflow(applicationId: ID!): ValidatedAppRequestResponse!
|
|
738
1090
|
roleAddGrant(grant: AccessRoleGrantCreate!, roleId: ID!, validateOnly: Boolean): AccessRoleValidatedResponse!
|
|
739
|
-
roleCreate(role: AccessRoleInput!, validateOnly: Boolean): AccessRoleValidatedResponse!
|
|
1091
|
+
roleCreate(copyRoleId: ID, role: AccessRoleInput!, validateOnly: Boolean): AccessRoleValidatedResponse!
|
|
740
1092
|
roleDelete(roleId: ID!): ValidatedResponse!
|
|
741
1093
|
roleDeleteGrant(grantId: ID!): AccessRoleValidatedResponse!
|
|
742
1094
|
roleUpdate(role: AccessRoleInput!, roleId: ID!, validateOnly: Boolean): AccessRoleValidatedResponse!
|
|
@@ -744,11 +1096,21 @@ type Mutation {
|
|
|
744
1096
|
|
|
745
1097
|
"""Submit the app request."""
|
|
746
1098
|
submitAppRequest(appRequestId: ID!): ValidatedAppRequestResponse!
|
|
747
|
-
updateConfiguration(data: JsonData!, key: String!, periodId:
|
|
748
|
-
updatePeriod(
|
|
1099
|
+
updateConfiguration(data: JsonData!, key: String!, periodId: ID!, validateOnly: Boolean): ValidatedConfigurationResponse!
|
|
1100
|
+
updatePeriod(periodId: ID!, update: PeriodUpdate!, validateOnly: Boolean): ValidatedPeriodResponse!
|
|
1101
|
+
updatePeriodRequirement(disabled: Boolean!, periodId: String!, requirementKey: String!): ValidatedResponse!
|
|
749
1102
|
|
|
750
1103
|
"""Update the data for a prompt in this app request."""
|
|
751
|
-
updatePrompt(
|
|
1104
|
+
updatePrompt(
|
|
1105
|
+
data: JsonData!
|
|
1106
|
+
|
|
1107
|
+
"""
|
|
1108
|
+
The data version of the app request at the time this prompt was loaded. If provided, the API will perform an optimistic concurrency check and fail the update if someone else has updated the data in the meantime.
|
|
1109
|
+
"""
|
|
1110
|
+
dataVersion: Int
|
|
1111
|
+
promptId: ID!
|
|
1112
|
+
validateOnly: Boolean
|
|
1113
|
+
): ValidatedAppRequestResponse!
|
|
752
1114
|
}
|
|
753
1115
|
|
|
754
1116
|
type MutationMessage {
|
|
@@ -781,6 +1143,68 @@ enum MutationMessageType {
|
|
|
781
1143
|
warning
|
|
782
1144
|
}
|
|
783
1145
|
|
|
1146
|
+
"""
|
|
1147
|
+
An internal note attached to an application request. Notes are always written by reviewers and never visible to applicants. "Messages" are for reviewers and applicants communicating with one another.
|
|
1148
|
+
"""
|
|
1149
|
+
type Note {
|
|
1150
|
+
actions: NoteActions!
|
|
1151
|
+
|
|
1152
|
+
"""The app request this note is attached to."""
|
|
1153
|
+
appRequest: AppRequest!
|
|
1154
|
+
|
|
1155
|
+
"""The author of the note."""
|
|
1156
|
+
author: AccessUser!
|
|
1157
|
+
|
|
1158
|
+
"""The content of the note in HTML."""
|
|
1159
|
+
content: String!
|
|
1160
|
+
createdAt: DateTime!
|
|
1161
|
+
id: ID!
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
"""Actions that can be performed on a note."""
|
|
1165
|
+
type NoteActions {
|
|
1166
|
+
update: Boolean!
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
input Pagination {
|
|
1170
|
+
"""The page number to retrieve. If not provided, will default to 1."""
|
|
1171
|
+
page: Int
|
|
1172
|
+
perPage: Int
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
type PaginationInfoWithTotalItems {
|
|
1176
|
+
"""
|
|
1177
|
+
List of indexed category data related to items within a page. Often used for filtering items.
|
|
1178
|
+
"""
|
|
1179
|
+
categories: [Category!]
|
|
1180
|
+
|
|
1181
|
+
"""
|
|
1182
|
+
The current page number, starting at 1. This is always provided - if pagination was not requested, will return 1.
|
|
1183
|
+
"""
|
|
1184
|
+
currentPage: Float!
|
|
1185
|
+
|
|
1186
|
+
"""
|
|
1187
|
+
Indicates whether requesting the next page would provide more results. Especially useful for models that cannot provide total item count for practical reasons. Note that over time, more results can appear and make this answer wrong, so in some circumstances it makes sense to request another page anyway.
|
|
1188
|
+
"""
|
|
1189
|
+
hasNextPage: Boolean!
|
|
1190
|
+
|
|
1191
|
+
"""
|
|
1192
|
+
The number of items per page. Null if pagination was not requested/forced because results per page is unlimited.
|
|
1193
|
+
"""
|
|
1194
|
+
perPage: Float
|
|
1195
|
+
|
|
1196
|
+
"""
|
|
1197
|
+
If possible, the total number of results will be provided. The API may return null if calculating the total is impractical. If pagination was not requested/forced, will equal the result count.
|
|
1198
|
+
"""
|
|
1199
|
+
totalItems: Float
|
|
1200
|
+
}
|
|
1201
|
+
|
|
1202
|
+
type PaginationResponse {
|
|
1203
|
+
accessUsers: PaginationInfoWithTotalItems
|
|
1204
|
+
appRequests: PaginationInfoWithTotalItems
|
|
1205
|
+
appRequestsActivity: PaginationInfoWithTotalItems
|
|
1206
|
+
}
|
|
1207
|
+
|
|
784
1208
|
type Period {
|
|
785
1209
|
actions: PeriodActions!
|
|
786
1210
|
|
|
@@ -811,11 +1235,17 @@ type Period {
|
|
|
811
1235
|
programs: [PeriodProgram!]!
|
|
812
1236
|
prompts: [PeriodPrompt!]!
|
|
813
1237
|
requirements: [PeriodProgramRequirement!]!
|
|
1238
|
+
|
|
1239
|
+
"""
|
|
1240
|
+
Whether this period's configurations have been reviewed by an administrator. Newly created periods must be reviewed before they will accept new app requests, even if the open date has passed.
|
|
1241
|
+
"""
|
|
1242
|
+
reviewed: Boolean!
|
|
814
1243
|
}
|
|
815
1244
|
|
|
816
1245
|
type PeriodActions {
|
|
1246
|
+
createAppRequest: Boolean!
|
|
1247
|
+
delete: Boolean!
|
|
817
1248
|
update: Boolean!
|
|
818
|
-
view: Boolean!
|
|
819
1249
|
}
|
|
820
1250
|
|
|
821
1251
|
input PeriodFilters {
|
|
@@ -839,6 +1269,9 @@ input PeriodFilters {
|
|
|
839
1269
|
"""Return periods that have any of these IDs."""
|
|
840
1270
|
ids: [ID!]
|
|
841
1271
|
|
|
1272
|
+
"""Return periods that have any of these names."""
|
|
1273
|
+
names: [String!]
|
|
1274
|
+
|
|
842
1275
|
"""true -> open periods. false -> closed periods. null -> all periods."""
|
|
843
1276
|
openNow: Boolean
|
|
844
1277
|
|
|
@@ -858,7 +1291,6 @@ type PeriodProgram {
|
|
|
858
1291
|
Whether the program is enabled in this period. This is set by the system administrator.
|
|
859
1292
|
"""
|
|
860
1293
|
enabled: Boolean!
|
|
861
|
-
group: PeriodProgramActions!
|
|
862
1294
|
key: ID!
|
|
863
1295
|
navTitle: String!
|
|
864
1296
|
period: Period!
|
|
@@ -940,33 +1372,29 @@ input PeriodUpdate {
|
|
|
940
1372
|
openDate: DateTime!
|
|
941
1373
|
}
|
|
942
1374
|
|
|
943
|
-
type
|
|
944
|
-
key: ID!
|
|
945
|
-
navTitle: String!
|
|
946
|
-
title: String!
|
|
947
|
-
}
|
|
948
|
-
|
|
949
|
-
input ProgramFilters {
|
|
950
|
-
keys: [String!]
|
|
951
|
-
}
|
|
952
|
-
|
|
953
|
-
type ProgramGroup {
|
|
954
|
-
key: ID!
|
|
955
|
-
|
|
1375
|
+
type PeriodWorkflowStage {
|
|
956
1376
|
"""
|
|
957
|
-
|
|
1377
|
+
Whether this stage is blocking. If true, the application cannot be completed and shown to the applicant until all requirements in this stage are satisfied.
|
|
958
1378
|
"""
|
|
959
|
-
|
|
960
|
-
programs(filter: ProgramFilters): [Program!]!
|
|
1379
|
+
blocking: Boolean!
|
|
961
1380
|
|
|
962
1381
|
"""
|
|
963
|
-
|
|
1382
|
+
Globally unique key for this workflow stage. Use lowercase snake_case, alphanumeric and underscore only.
|
|
964
1383
|
"""
|
|
1384
|
+
key: String!
|
|
1385
|
+
|
|
1386
|
+
"""A human readable title for the workflow stage."""
|
|
1387
|
+
title: String!
|
|
1388
|
+
}
|
|
1389
|
+
|
|
1390
|
+
type Program {
|
|
1391
|
+
key: ID!
|
|
1392
|
+
navTitle: String!
|
|
965
1393
|
title: String!
|
|
966
1394
|
}
|
|
967
1395
|
|
|
968
|
-
input
|
|
969
|
-
keys: [
|
|
1396
|
+
input ProgramFilters {
|
|
1397
|
+
keys: [String!]
|
|
970
1398
|
}
|
|
971
1399
|
|
|
972
1400
|
"""
|
|
@@ -978,11 +1406,6 @@ enum PromptVisibility {
|
|
|
978
1406
|
"""
|
|
979
1407
|
APPLICATION_DUPE
|
|
980
1408
|
|
|
981
|
-
"""
|
|
982
|
-
The prompt is intended to be filled in by an automation, but is otherwise available to be answered. It may or may not be visible in various UIs but it is not editable in any of them.
|
|
983
|
-
"""
|
|
984
|
-
AUTOMATION
|
|
985
|
-
|
|
986
1409
|
"""
|
|
987
1410
|
This RequirementPrompt is available to be answered. It is the first appearance of this prompt in the App Request. It should be visible in both the applicant and reviewer UI.
|
|
988
1411
|
"""
|
|
@@ -1002,7 +1425,7 @@ enum PromptVisibility {
|
|
|
1002
1425
|
type Query {
|
|
1003
1426
|
"\n This is the global access object. Each field represents a global permission\n like the ability to view the role management interface.\n "
|
|
1004
1427
|
access: Access!
|
|
1005
|
-
accessUsers(filter: AccessUserFilter): [AccessUser!]!
|
|
1428
|
+
accessUsers(filter: AccessUserFilter, paged: Pagination): [AccessUser!]!
|
|
1006
1429
|
appRequestIndexes(
|
|
1007
1430
|
categories: [String!]
|
|
1008
1431
|
|
|
@@ -1011,9 +1434,14 @@ type Query {
|
|
|
1011
1434
|
"""
|
|
1012
1435
|
for: AppRequestIndexDestination
|
|
1013
1436
|
): [IndexCategory!]!
|
|
1014
|
-
appRequests(filter: AppRequestFilter): [AppRequest!]!
|
|
1437
|
+
appRequests(filter: AppRequestFilter, paged: Pagination): [AppRequest!]!
|
|
1438
|
+
|
|
1439
|
+
"""
|
|
1440
|
+
This is where you get information about the authorization system. Each grant will be associated with one of these controlGroups, one or more controls in the group, and an optional set of tags. The tags are used to limit the scope of the grant.
|
|
1441
|
+
"""
|
|
1442
|
+
controlGroups: [AccessControlGroup!]!
|
|
1443
|
+
pageInfo: PaginationResponse!
|
|
1015
1444
|
periods(filter: PeriodFilters): [Period!]!
|
|
1016
|
-
programGroups(filter: ProgramGroupFilter): [ProgramGroup!]!
|
|
1017
1445
|
programs(filter: ProgramFilters): [Program!]!
|
|
1018
1446
|
roles(filter: AccessRoleFilter): [AccessRole!]!
|
|
1019
1447
|
|
|
@@ -1021,11 +1449,6 @@ type Query {
|
|
|
1021
1449
|
A list of all possible scopes. Scopes are used to limit users when they are accessing the system through an alternate UI or login method. For instance, if you generate an authentication token to give to a third party, it may have a scope identifying that third party and limiting their access even though they are acting as you. Roles must match the token scope in order to apply permissions.
|
|
1022
1450
|
"""
|
|
1023
1451
|
scopes: [String!]!
|
|
1024
|
-
|
|
1025
|
-
"""
|
|
1026
|
-
This is where you get information about the authorization system. Each grant will be associated with one of these subjectTypes and optionally a list of subject instances. The grant will also have a set of controls, and each control will have an optional set of tags. The tags are used to limit the scope of the grant.
|
|
1027
|
-
"""
|
|
1028
|
-
subjectTypes: [AccessSubjectType!]!
|
|
1029
1452
|
}
|
|
1030
1453
|
|
|
1031
1454
|
"""
|
|
@@ -1035,17 +1458,14 @@ type RequirementPrompt {
|
|
|
1035
1458
|
"""Actions that the user can take on this prompt."""
|
|
1036
1459
|
actions: RequirementPromptActions!
|
|
1037
1460
|
|
|
1038
|
-
"""
|
|
1461
|
+
"""
|
|
1462
|
+
Whether the prompt has been answered on this request. Note that the answer may be marked invalidated, which means that even though it has been answered, the current answer can't be used and the user needs to answer it again.
|
|
1463
|
+
"""
|
|
1039
1464
|
answered: Boolean!
|
|
1040
1465
|
|
|
1041
1466
|
"""The configuration data for this prompt in the app request's period."""
|
|
1042
1467
|
configurationData: JsonData!
|
|
1043
1468
|
|
|
1044
|
-
"""
|
|
1045
|
-
All the configuration data that could be relevant for this prompt. This includes its own config, and also the config data for any requirements and programs that are related to it.
|
|
1046
|
-
"""
|
|
1047
|
-
configurationRelatedData: JsonData!
|
|
1048
|
-
|
|
1049
1469
|
"""
|
|
1050
1470
|
The data that has been gathered from the user in response to this prompt. The schema is controlled by the question's implementation.
|
|
1051
1471
|
"""
|
|
@@ -1062,7 +1482,7 @@ type RequirementPrompt {
|
|
|
1062
1482
|
description: String
|
|
1063
1483
|
|
|
1064
1484
|
"""
|
|
1065
|
-
Any data that the API needs to provide to the UI to
|
|
1485
|
+
Any data that the API needs to provide to the UI to build the prompt form properly. For instance, it could pull reference information from an external system, e.g. a student's course schedule, for display in the prompt dialog. Null if the user is not currently allowed to update the prompt.
|
|
1066
1486
|
"""
|
|
1067
1487
|
fetchedData(
|
|
1068
1488
|
"""
|
|
@@ -1070,18 +1490,33 @@ type RequirementPrompt {
|
|
|
1070
1490
|
"""
|
|
1071
1491
|
schemaVersion: String
|
|
1072
1492
|
): JsonData
|
|
1493
|
+
|
|
1494
|
+
"""
|
|
1495
|
+
Extra configuration data that is relevant for this prompt. This configuration is explicitly gathered from related requirements and prompts by the gatherConfig function in the prompt definition.
|
|
1496
|
+
"""
|
|
1497
|
+
gatheredConfigData: JsonData!
|
|
1073
1498
|
id: ID!
|
|
1074
1499
|
|
|
1075
1500
|
"""
|
|
1076
|
-
When true, this prompt has been invalidated by the answer to another prompt. The `answered` field
|
|
1501
|
+
When true, this prompt has been invalidated by the answer to another prompt. The `answered` field will remain true so be sure to check this field as well when determining whether the prompt is complete.
|
|
1077
1502
|
"""
|
|
1078
1503
|
invalidated: Boolean!
|
|
1079
1504
|
|
|
1505
|
+
"""
|
|
1506
|
+
If the prompt has been invalidated, this may contain a reason why. It should be displayed to the user.
|
|
1507
|
+
"""
|
|
1508
|
+
invalidatedReason: String
|
|
1509
|
+
|
|
1080
1510
|
"""
|
|
1081
1511
|
A human and machine readable identifier for the prompt. Will be used to match prompt data with UI and API code that handles it.
|
|
1082
1512
|
"""
|
|
1083
1513
|
key: String!
|
|
1084
1514
|
|
|
1515
|
+
"""
|
|
1516
|
+
This prompt's requirement follows a requirement that has already marked the application as ineligible. The prompt still has visibility of AVAILABLE OR REQUEST_DUPE OR APPLICATION_DUPE as normal, but should probably be shown to the user as disabled or not shown at all.
|
|
1517
|
+
"""
|
|
1518
|
+
moot: Boolean!
|
|
1519
|
+
|
|
1085
1520
|
"""
|
|
1086
1521
|
A human readable title for the prompt in the navigation. You probably want it to be shorter than the full title. If not provided, the title will be used.
|
|
1087
1522
|
"""
|
|
@@ -1170,6 +1605,11 @@ enum RequirementType {
|
|
|
1170
1605
|
A requirement that should have a non-pending status before an application may be submitted for review. Programs with a DISQUALIFYING requirement of type APPLICATION should be visible to the submitter but visually distinct as disabled/ineligible.
|
|
1171
1606
|
"""
|
|
1172
1607
|
QUALIFICATION
|
|
1608
|
+
|
|
1609
|
+
"""
|
|
1610
|
+
This requirement belongs to a workflow stage. It should only be included in a workflow stage and should not appear in the standard requirementKeys array of a program.
|
|
1611
|
+
"""
|
|
1612
|
+
WORKFLOW
|
|
1173
1613
|
}
|
|
1174
1614
|
|
|
1175
1615
|
type RoleActions {
|
|
@@ -1178,7 +1618,7 @@ type RoleActions {
|
|
|
1178
1618
|
}
|
|
1179
1619
|
|
|
1180
1620
|
type ValidatedAppRequestResponse {
|
|
1181
|
-
appRequest: AppRequest
|
|
1621
|
+
appRequest: AppRequest
|
|
1182
1622
|
messages: [MutationMessage!]!
|
|
1183
1623
|
|
|
1184
1624
|
"""
|