@reqquest/ui 1.0.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 +3 -0
- package/dist/api.d.ts +595 -0
- package/dist/api.js +618 -0
- package/dist/components/ButtonLoadingIcon.svelte +27 -0
- package/dist/components/ButtonLoadingIcon.svelte.d.ts +18 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/registry.d.ts +138 -0
- package/dist/registry.js +42 -0
- package/dist/stores/IStateStore.d.ts +5 -0
- package/dist/stores/IStateStore.js +1 -0
- package/dist/typed-client/index.d.ts +25 -0
- package/dist/typed-client/index.js +23 -0
- package/dist/typed-client/runtime/batcher.d.ts +105 -0
- package/dist/typed-client/runtime/batcher.js +203 -0
- package/dist/typed-client/runtime/createClient.d.ts +17 -0
- package/dist/typed-client/runtime/createClient.js +24 -0
- package/dist/typed-client/runtime/error.d.ts +18 -0
- package/dist/typed-client/runtime/error.js +19 -0
- package/dist/typed-client/runtime/fetcher.d.ts +10 -0
- package/dist/typed-client/runtime/fetcher.js +65 -0
- package/dist/typed-client/runtime/generateGraphqlOperation.d.ts +30 -0
- package/dist/typed-client/runtime/generateGraphqlOperation.js +128 -0
- package/dist/typed-client/runtime/index.d.ts +11 -0
- package/dist/typed-client/runtime/index.js +10 -0
- package/dist/typed-client/runtime/linkTypeMap.d.ts +9 -0
- package/dist/typed-client/runtime/linkTypeMap.js +95 -0
- package/dist/typed-client/runtime/typeSelection.d.ts +28 -0
- package/dist/typed-client/runtime/typeSelection.js +3 -0
- package/dist/typed-client/runtime/types.d.ts +55 -0
- package/dist/typed-client/runtime/types.js +2 -0
- package/dist/typed-client/schema.d.ts +1483 -0
- package/dist/typed-client/schema.graphql +1217 -0
- package/dist/typed-client/schema.js +313 -0
- package/dist/typed-client/types.d.ts +540 -0
- package/dist/typed-client/types.js +1368 -0
- package/dist/util.d.ts +2 -0
- package/dist/util.js +3 -0
- package/package.json +56 -0
|
@@ -0,0 +1,1217 @@
|
|
|
1
|
+
type Access {
|
|
2
|
+
"""
|
|
3
|
+
Current user may create a new app request, either for themselves or on behalf of another user.
|
|
4
|
+
"""
|
|
5
|
+
createAppRequest: Boolean!
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
Current user is permitted to create new periods in the period management UI.
|
|
9
|
+
"""
|
|
10
|
+
createPeriod: Boolean!
|
|
11
|
+
|
|
12
|
+
"""
|
|
13
|
+
Current user is permitted to create new roles in the role management UI.
|
|
14
|
+
"""
|
|
15
|
+
createRole: Boolean!
|
|
16
|
+
|
|
17
|
+
"""Current user is permitted to view the app request list."""
|
|
18
|
+
viewAppRequestList: Boolean!
|
|
19
|
+
|
|
20
|
+
"""Current user is permitted to view the applicant dashboard."""
|
|
21
|
+
viewApplicantDashboard: Boolean!
|
|
22
|
+
|
|
23
|
+
"""Current user is permitted to view the period management UI."""
|
|
24
|
+
viewPeriodManagement: Boolean!
|
|
25
|
+
|
|
26
|
+
"""Current user is permitted to view the reviewer dashboard."""
|
|
27
|
+
viewReviewerInterface: Boolean!
|
|
28
|
+
|
|
29
|
+
"""Current user is permitted to view the role management UI."""
|
|
30
|
+
viewRoleManagement: Boolean!
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
type AccessControl {
|
|
34
|
+
description: String!
|
|
35
|
+
name: String!
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
type AccessGrantTag {
|
|
39
|
+
category: String!
|
|
40
|
+
categoryLabel: String!
|
|
41
|
+
label: String!
|
|
42
|
+
tag: String!
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
type AccessRole {
|
|
46
|
+
actions: RoleActions!
|
|
47
|
+
|
|
48
|
+
"""
|
|
49
|
+
A description of the grant. This is not used for anything, but can be useful for admins to understand what the grant was trying to do.
|
|
50
|
+
"""
|
|
51
|
+
description: String
|
|
52
|
+
grants: [AccessRoleGrant!]!
|
|
53
|
+
groups: [String!]!
|
|
54
|
+
id: ID!
|
|
55
|
+
name: String!
|
|
56
|
+
scope: String
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
input AccessRoleFilter {
|
|
60
|
+
groups: [String!]
|
|
61
|
+
ids: [ID!]
|
|
62
|
+
names: [String!]
|
|
63
|
+
scopes: [String!]
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
type AccessRoleGrant {
|
|
67
|
+
actions: AccessRoleGrantActions!
|
|
68
|
+
|
|
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\" subject type 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
|
+
allow: Boolean!
|
|
71
|
+
controls: [String!]!
|
|
72
|
+
id: ID!
|
|
73
|
+
|
|
74
|
+
"""The type of subject this grant applies to, e.g. "movie"."""
|
|
75
|
+
subjectType: AccessSubjectType!
|
|
76
|
+
tags: [AccessGrantTag!]!
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
type AccessRoleGrantActions {
|
|
80
|
+
delete: Boolean!
|
|
81
|
+
update: Boolean!
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
input AccessRoleGrantCreate {
|
|
85
|
+
allow: Boolean!
|
|
86
|
+
|
|
87
|
+
"""
|
|
88
|
+
A list of controls that are allowed or denied by this grant. Each subjectType has a list of available controls, available under Query.subjectTypes.
|
|
89
|
+
"""
|
|
90
|
+
controls: [String!]
|
|
91
|
+
subjectType: String
|
|
92
|
+
|
|
93
|
+
"""
|
|
94
|
+
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.
|
|
95
|
+
"""
|
|
96
|
+
tags: [AccessTagInput!]
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
input AccessRoleGrantUpdate {
|
|
100
|
+
allow: Boolean!
|
|
101
|
+
|
|
102
|
+
"""
|
|
103
|
+
A list of controls that are allowed or denied by this grant. Each subjectType has a list of available controls, available under Query.subjectTypes.
|
|
104
|
+
"""
|
|
105
|
+
controls: [String!]
|
|
106
|
+
subjectType: String
|
|
107
|
+
|
|
108
|
+
"""
|
|
109
|
+
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.
|
|
110
|
+
"""
|
|
111
|
+
tags: [AccessTagInput!]
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
input AccessRoleInput {
|
|
115
|
+
"""
|
|
116
|
+
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.
|
|
117
|
+
"""
|
|
118
|
+
description: String
|
|
119
|
+
|
|
120
|
+
"""A list of groups this role is associated with."""
|
|
121
|
+
groups: [String!]!
|
|
122
|
+
name: String!
|
|
123
|
+
|
|
124
|
+
"""Attach this role to a specific authentication scope, e.g. "parent"."""
|
|
125
|
+
scope: String
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
type AccessRoleValidatedResponse {
|
|
129
|
+
accessRole: AccessRole
|
|
130
|
+
messages: [MutationMessage!]!
|
|
131
|
+
|
|
132
|
+
"""
|
|
133
|
+
True if the mutation succeeded (e.g. saved data or passed validation), even if there were warnings.
|
|
134
|
+
"""
|
|
135
|
+
success: Boolean!
|
|
136
|
+
}
|
|
137
|
+
|
|
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
|
+
type AccessTag {
|
|
158
|
+
label: String!
|
|
159
|
+
value: String!
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
type AccessTagCategory {
|
|
163
|
+
category: String!
|
|
164
|
+
description: String
|
|
165
|
+
label: String!
|
|
166
|
+
listable: Boolean!
|
|
167
|
+
|
|
168
|
+
"""
|
|
169
|
+
A list of all possible tags for this category. Use this to populate the tag dropdown when creating a grant.
|
|
170
|
+
"""
|
|
171
|
+
tags: [AccessTag!]!
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
input AccessTagInput {
|
|
175
|
+
"""The category this tag belongs to, e.g. "State"."""
|
|
176
|
+
category: String!
|
|
177
|
+
|
|
178
|
+
"""The tag value, e.g. "TX"."""
|
|
179
|
+
tag: String!
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
"""A user that has or once had access to the system."""
|
|
183
|
+
type AccessUser {
|
|
184
|
+
fullname: String!
|
|
185
|
+
groups: [String!]!
|
|
186
|
+
login: ID!
|
|
187
|
+
otherIdentifiers: [AccessUserIdentifier!]!
|
|
188
|
+
|
|
189
|
+
"""
|
|
190
|
+
A JSON object containing any information about the user that the implementing application wants to store. Could be useful for constructing personalized UI.
|
|
191
|
+
"""
|
|
192
|
+
otherInfo: JsonData
|
|
193
|
+
roles: AccessRole!
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
input AccessUserFilter {
|
|
197
|
+
logins: [ID!]
|
|
198
|
+
|
|
199
|
+
"""Filter by identifiers aside from username, like an Employee ID."""
|
|
200
|
+
otherIdentifiers: [String!]
|
|
201
|
+
otherIdentifiersByLabel: [AccessUserIdentifierInput!]
|
|
202
|
+
search: String
|
|
203
|
+
|
|
204
|
+
"""If true, only return the user that is currently logged in."""
|
|
205
|
+
self: Boolean
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
"""
|
|
209
|
+
A label and ID pair for an external user unique ID. For example, { label: "Student ID", id: "123456" }
|
|
210
|
+
"""
|
|
211
|
+
type AccessUserIdentifier {
|
|
212
|
+
"""The unique ID for this identifier, e.g. "123456"."""
|
|
213
|
+
id: ID!
|
|
214
|
+
|
|
215
|
+
"""The label for this identifier, e.g. "Student ID"."""
|
|
216
|
+
label: String!
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
"""
|
|
220
|
+
A label and ID pair for an external user unique ID. For example, { label: "Student ID", id: "123456" }
|
|
221
|
+
"""
|
|
222
|
+
input AccessUserIdentifierInput {
|
|
223
|
+
id: ID!
|
|
224
|
+
label: String!
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
"""
|
|
228
|
+
Represents a group of applications all being applied for at the same time. As part of the request, multiple applications will be created and either eliminated as ineligible or submitted for approval.
|
|
229
|
+
"""
|
|
230
|
+
type AppRequest {
|
|
231
|
+
"""Actions the user can take on this app request."""
|
|
232
|
+
actions: AppRequestActions!
|
|
233
|
+
|
|
234
|
+
"""
|
|
235
|
+
The activity log for this app request. This is a list of actions taken on the app request, such as submission, updating prompts, make an offer, add a note, etc. It will be sorted by the date of the activity in descending order.
|
|
236
|
+
"""
|
|
237
|
+
activity(
|
|
238
|
+
"""
|
|
239
|
+
Filters to apply to the activity log. This can be used to filter by action type, date range, etc.
|
|
240
|
+
"""
|
|
241
|
+
filters: AppRequestActivityFilters
|
|
242
|
+
): [AppRequestActivity!]!
|
|
243
|
+
applicant: AccessUser!
|
|
244
|
+
applications: [Application!]!
|
|
245
|
+
|
|
246
|
+
"""
|
|
247
|
+
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
|
+
"""
|
|
249
|
+
closedAt: DateTime
|
|
250
|
+
createdAt: DateTime!
|
|
251
|
+
|
|
252
|
+
"""
|
|
253
|
+
All data that has been gathered from the user for this request. It is a Record whose properties are the prompt keys and values are the data gathered by the corresponding prompt dialog.
|
|
254
|
+
"""
|
|
255
|
+
data(
|
|
256
|
+
"""
|
|
257
|
+
Provide the schemaVersion at the time the UI was built. Will throw an error if the client is too old, so it knows to refresh.
|
|
258
|
+
"""
|
|
259
|
+
schemaVersion: String
|
|
260
|
+
): JsonData!
|
|
261
|
+
id: ID!
|
|
262
|
+
|
|
263
|
+
"""
|
|
264
|
+
Indexes associated with the App Request. These are pieces of data extracted from the App Request by individual prompts in the ReqQuest project. They have several uses such as filtering App Requests and enriching list views.
|
|
265
|
+
"""
|
|
266
|
+
indexCategories(
|
|
267
|
+
"""
|
|
268
|
+
Returns indexes that are flagged to appear in this destination. Also sorts for this destination.
|
|
269
|
+
"""
|
|
270
|
+
for: AppRequestIndexDestination
|
|
271
|
+
): [AppRequestIndexCategory!]!
|
|
272
|
+
|
|
273
|
+
"""The period this appRequest is associated with."""
|
|
274
|
+
period: Period!
|
|
275
|
+
|
|
276
|
+
"""
|
|
277
|
+
Retrieve a specific prompt by its ID. This is useful for the UI to get the full prompt data and configuration when trying to edit an individual prompt. We don't want to be downloading all the config data for everything up front.
|
|
278
|
+
"""
|
|
279
|
+
prompt(promptId: ID!): RequirementPrompt!
|
|
280
|
+
status: AppRequestStatus!
|
|
281
|
+
|
|
282
|
+
"""
|
|
283
|
+
The most pertinent status reason for this app request. The logic is complicated and depends on the AppRequest's status.
|
|
284
|
+
"""
|
|
285
|
+
statusReason: String
|
|
286
|
+
updatedAt: DateTime!
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
type AppRequestActions {
|
|
290
|
+
"""
|
|
291
|
+
User may cancel this app request as the owner. Separate from closing as a reviewer/admin.
|
|
292
|
+
"""
|
|
293
|
+
cancel: Boolean!
|
|
294
|
+
|
|
295
|
+
"""
|
|
296
|
+
User may close this app request as a reviewer/admin. Separate from cancelling as the app request owner.
|
|
297
|
+
"""
|
|
298
|
+
close: Boolean!
|
|
299
|
+
|
|
300
|
+
"""User may make an offer on this app request."""
|
|
301
|
+
offer: Boolean!
|
|
302
|
+
|
|
303
|
+
"""
|
|
304
|
+
User may reopen this app request, whether as the owner or as a reviewer/admin.
|
|
305
|
+
"""
|
|
306
|
+
reopen: Boolean!
|
|
307
|
+
|
|
308
|
+
"""User may return this app request to the applicant phase."""
|
|
309
|
+
return: Boolean!
|
|
310
|
+
|
|
311
|
+
"""Whether the user can view this app request as a reviewer."""
|
|
312
|
+
review: Boolean!
|
|
313
|
+
|
|
314
|
+
"""User may submit this app request either as or on behalf of the owner."""
|
|
315
|
+
submit: Boolean!
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
type AppRequestActivity {
|
|
319
|
+
action: String!
|
|
320
|
+
|
|
321
|
+
"""The app request this activity is associated with."""
|
|
322
|
+
appRequest: AppRequest!
|
|
323
|
+
|
|
324
|
+
"""The date and time when the action occurred."""
|
|
325
|
+
createdAt: DateTime!
|
|
326
|
+
|
|
327
|
+
"""
|
|
328
|
+
A JSON object containing additional data about the activity. This could be filtered but different actions would place different data here so it is not strongly typed.
|
|
329
|
+
"""
|
|
330
|
+
data: JsonData
|
|
331
|
+
|
|
332
|
+
"""
|
|
333
|
+
A detailed description of the activity. This is not meant to be filtered and could contain specific details about the action.
|
|
334
|
+
"""
|
|
335
|
+
description: String
|
|
336
|
+
id: ID!
|
|
337
|
+
|
|
338
|
+
"""
|
|
339
|
+
If this activity was performed by an impersonated user, this will be the user that did the impersonation.
|
|
340
|
+
"""
|
|
341
|
+
impersonatedBy: AccessUser
|
|
342
|
+
|
|
343
|
+
"""The user that performed the activity."""
|
|
344
|
+
user: AccessUser!
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
"""This is used to filter a list of activities."""
|
|
348
|
+
input AppRequestActivityFilters {
|
|
349
|
+
"""
|
|
350
|
+
Filter activities by action. This is a list of action names that should be matched. There are many potential action names, they are untyped.
|
|
351
|
+
"""
|
|
352
|
+
actions: [String!]
|
|
353
|
+
appRequestIds: [ID!]
|
|
354
|
+
|
|
355
|
+
"""Return activities that happened after this date."""
|
|
356
|
+
happenedAfter: DateTime
|
|
357
|
+
|
|
358
|
+
"""Return activities that happened before this date."""
|
|
359
|
+
happenedBefore: DateTime
|
|
360
|
+
|
|
361
|
+
"""
|
|
362
|
+
true -> Return activities that were performed while a user was impersonating another user. false -> Return activities that were not impersonated.
|
|
363
|
+
"""
|
|
364
|
+
impersonated: Boolean
|
|
365
|
+
|
|
366
|
+
"""
|
|
367
|
+
Return activities that were performed while one of the given logins was impersonating another user.
|
|
368
|
+
"""
|
|
369
|
+
impersonatedBy: [ID!]
|
|
370
|
+
|
|
371
|
+
"""
|
|
372
|
+
Return activities that were performed while one of the given logins was being impersonated by someone else.
|
|
373
|
+
"""
|
|
374
|
+
impersonatedUsers: [ID!]
|
|
375
|
+
|
|
376
|
+
"""Return activities that were performed by one of the given logins."""
|
|
377
|
+
users: [ID!]
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
input AppRequestFilter {
|
|
381
|
+
"""
|
|
382
|
+
true -> only return appRequests that are closed. false -> only return appRequests that are open. null -> return all appRequests.
|
|
383
|
+
"""
|
|
384
|
+
closed: Boolean
|
|
385
|
+
ids: [ID!]
|
|
386
|
+
|
|
387
|
+
"""Only return appRequests that are owned by one the given logins."""
|
|
388
|
+
logins: [ID!]
|
|
389
|
+
|
|
390
|
+
"""Only return appRequests that are owned by the current user."""
|
|
391
|
+
own: Boolean
|
|
392
|
+
periodIds: [ID!]
|
|
393
|
+
status: [AppRequestStatus!]
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
"""
|
|
397
|
+
This represents an index category attached to an app request. Its tagStrings property contains the tag values that have been extracted from the app request data.
|
|
398
|
+
"""
|
|
399
|
+
type AppRequestIndexCategory {
|
|
400
|
+
"""
|
|
401
|
+
If this is > 0, the index values should be shown on the main app request list page, sorted by this priority in descending order.
|
|
402
|
+
"""
|
|
403
|
+
appRequestListPriority: Float
|
|
404
|
+
|
|
405
|
+
"""
|
|
406
|
+
If this is > 0, the index values should be shown on the applicant dashboard, sorted by this priority in descending order.
|
|
407
|
+
"""
|
|
408
|
+
applicantDashboardPriority: Float
|
|
409
|
+
category: String!
|
|
410
|
+
categoryLabel: String!
|
|
411
|
+
|
|
412
|
+
"""
|
|
413
|
+
If this is > 0, the index values should be shown on the list filters, sorted by this priority in descending order.
|
|
414
|
+
"""
|
|
415
|
+
listFiltersPriority: Float
|
|
416
|
+
listable: Boolean!
|
|
417
|
+
|
|
418
|
+
"""
|
|
419
|
+
If this is > 0, the index values should be shown on the reviewer dashboard, sorted by this priority in descending order.
|
|
420
|
+
"""
|
|
421
|
+
reviewerDashboardPriority: Float
|
|
422
|
+
values: [IndexValue!]!
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
"""This is used to indicate where the index values should be displayed."""
|
|
426
|
+
enum AppRequestIndexDestination {
|
|
427
|
+
"""
|
|
428
|
+
Show these index values when listing App Requests on the applicant dashboard.
|
|
429
|
+
"""
|
|
430
|
+
APPLICANT_DASHBOARD
|
|
431
|
+
|
|
432
|
+
"""
|
|
433
|
+
Show these index values when listing App Requests in the main list page.
|
|
434
|
+
"""
|
|
435
|
+
APP_REQUEST_LIST
|
|
436
|
+
|
|
437
|
+
"""Allow the user to filter on these index values on the main list page."""
|
|
438
|
+
LIST_FILTERS
|
|
439
|
+
|
|
440
|
+
"""
|
|
441
|
+
Show these index values when listing App Requests on the reviewer dashboard.
|
|
442
|
+
"""
|
|
443
|
+
REVIEWER_DASHBOARD
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
"\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
|
+
enum AppRequestStatus {
|
|
448
|
+
"""
|
|
449
|
+
Reviewer has approved an offer and we are waiting for the applicant to accept. This status is unreachable if the period has no ACCEPTANCE requirements.
|
|
450
|
+
"""
|
|
451
|
+
ACCEPTANCE
|
|
452
|
+
|
|
453
|
+
"""
|
|
454
|
+
Applicant has accepted an offer on at least one application and no applications are still pending acceptance.
|
|
455
|
+
"""
|
|
456
|
+
ACCEPTED
|
|
457
|
+
|
|
458
|
+
"""
|
|
459
|
+
Applicant has submitted and any pre-approval requirements have been met. We are waiting for a reviewer to do their part.
|
|
460
|
+
"""
|
|
461
|
+
APPROVAL
|
|
462
|
+
|
|
463
|
+
"""
|
|
464
|
+
Applicant has submitted, at least one application is in an approved state, and no applications are pending.
|
|
465
|
+
"""
|
|
466
|
+
APPROVED
|
|
467
|
+
|
|
468
|
+
"""
|
|
469
|
+
Applicant cancelled the request before submitting. The applicant may be permitted to uncancel and continue, if the period is still open.
|
|
470
|
+
"""
|
|
471
|
+
CANCELLED
|
|
472
|
+
|
|
473
|
+
"""
|
|
474
|
+
Applicant has not yet submitted but ALL applications have been disqualified. Applicant may continue editing prompts until the App Request is closed.
|
|
475
|
+
"""
|
|
476
|
+
DISQUALIFIED
|
|
477
|
+
NOT_ACCEPTED
|
|
478
|
+
|
|
479
|
+
"""
|
|
480
|
+
Applicant has submitted, and ALL applications have been disqualified, no applications are pending.
|
|
481
|
+
"""
|
|
482
|
+
NOT_APPROVED
|
|
483
|
+
|
|
484
|
+
"""
|
|
485
|
+
Applicant has submitted and we are waiting for pre-approval requirements to resolve (these are automations like waiting for data to show up in an external system).
|
|
486
|
+
"""
|
|
487
|
+
PREAPPROVAL
|
|
488
|
+
|
|
489
|
+
"""
|
|
490
|
+
Applicant has completed all prompts and is ready to submit. At least one application is eligible to proceed.
|
|
491
|
+
"""
|
|
492
|
+
READY_TO_SUBMIT
|
|
493
|
+
|
|
494
|
+
"""Applicant has begun the process and has not yet submitted."""
|
|
495
|
+
STARTED
|
|
496
|
+
|
|
497
|
+
"""
|
|
498
|
+
Applicant withdrew the request after submitting. The request must be re-opened (if eligible) to be edited again.
|
|
499
|
+
"""
|
|
500
|
+
WITHDRAWN
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
"""
|
|
504
|
+
An application represents the applicant applying to a specific program. Each appRequest has multiple applications - one per program defined in the system. Some applications are mutually exclusive and/or will be eliminated early based on PREQUAL requirements, but they all technically exist in the data model - there is no concept of picking one application over another, just two applications where one dies and the other survives.
|
|
505
|
+
"""
|
|
506
|
+
type Application {
|
|
507
|
+
actions: ApplicationActions!
|
|
508
|
+
id: ID!
|
|
509
|
+
|
|
510
|
+
"""The navigation title of the program this application is for."""
|
|
511
|
+
navTitle: String!
|
|
512
|
+
requirements: [ApplicationRequirement!]!
|
|
513
|
+
status: ApplicationStatus!
|
|
514
|
+
|
|
515
|
+
"""
|
|
516
|
+
When one of the application's requirements is failing or throwing a warning, its reason will be copied here for convenience. If there is a warning and then later a failure, the failure reason will win.
|
|
517
|
+
"""
|
|
518
|
+
statusReason: String
|
|
519
|
+
|
|
520
|
+
"""The title of the program this application is for."""
|
|
521
|
+
title: String!
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
type ApplicationActions {
|
|
525
|
+
viewAsReviewer: Boolean!
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
"""
|
|
529
|
+
The specific instance of a requirement on a particular application. Stores the status of the requirement, e.g. being satisfied or not.
|
|
530
|
+
"""
|
|
531
|
+
type ApplicationRequirement {
|
|
532
|
+
application: Application!
|
|
533
|
+
|
|
534
|
+
"""
|
|
535
|
+
The configuration data for this requirement in the app request's period.
|
|
536
|
+
"""
|
|
537
|
+
configurationData: JsonData
|
|
538
|
+
|
|
539
|
+
"""
|
|
540
|
+
An internal description of the requirement. Probably not shown to users.
|
|
541
|
+
"""
|
|
542
|
+
description: String!
|
|
543
|
+
id: ID!
|
|
544
|
+
|
|
545
|
+
"""
|
|
546
|
+
A human and machine readable unique and stable identifier that we can use to add javascript logic to the evaluation of whether a requirement is satisfied. For example: "gi_ch33_must_be_post911"
|
|
547
|
+
"""
|
|
548
|
+
key: String!
|
|
549
|
+
|
|
550
|
+
"""
|
|
551
|
+
A human readable title for the requirement in the navigation. You probably want it to be shorter than the full title. If not provided, the title will be used.
|
|
552
|
+
"""
|
|
553
|
+
navTitle: String!
|
|
554
|
+
prompts: [RequirementPrompt!]!
|
|
555
|
+
|
|
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
|
+
"""
|
|
562
|
+
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
|
+
"""
|
|
564
|
+
smartTitle: String!
|
|
565
|
+
|
|
566
|
+
"""The status of the requirement. This is what will be shown to users."""
|
|
567
|
+
status: RequirementStatus!
|
|
568
|
+
|
|
569
|
+
"""
|
|
570
|
+
The reason why the requirement is in the status it is in. This will be shown to the applicant.
|
|
571
|
+
"""
|
|
572
|
+
statusReason: String
|
|
573
|
+
|
|
574
|
+
"""
|
|
575
|
+
A human readable title for the requirement. This is what will be shown to users.
|
|
576
|
+
"""
|
|
577
|
+
title: String!
|
|
578
|
+
|
|
579
|
+
"""
|
|
580
|
+
The type of requirement. This determines when the requirement is evaluated and who can see the requirement.
|
|
581
|
+
"""
|
|
582
|
+
type: RequirementType!
|
|
583
|
+
}
|
|
584
|
+
|
|
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
|
+
"""
|
|
588
|
+
The application has been approved and an offer has been submitted for applicant acceptance. This status is only possible for programs with at least one ACCEPTANCE requirement.
|
|
589
|
+
"""
|
|
590
|
+
ACCEPTANCE
|
|
591
|
+
|
|
592
|
+
"""
|
|
593
|
+
The application's benefit has been accepted by the applicant. This status is only possible for programs with at least one ACCEPTANCE requirement.
|
|
594
|
+
"""
|
|
595
|
+
ACCEPTED
|
|
596
|
+
|
|
597
|
+
"""
|
|
598
|
+
The application has been submitted, has passed preapproval, and is awaiting approval.
|
|
599
|
+
"""
|
|
600
|
+
APPROVAL
|
|
601
|
+
|
|
602
|
+
"""The application has been approved."""
|
|
603
|
+
APPROVED
|
|
604
|
+
|
|
605
|
+
"\n The appRequest (and thus the application inside it) has been cancelled by the applicant. In\n some cases, individual programs may have a requirement that the applicant agrees that they\n desire to apply. In that case the appRequest status is not CANCELLED, and neither is the application\n status. It will actually be FAILED_PREQUAL or FAILED_QUALIFICATION, and the statusReason of the\n requirement will explain that the applicant did not wish to pursue the application.\n "
|
|
606
|
+
CANCELLED
|
|
607
|
+
|
|
608
|
+
"""
|
|
609
|
+
The applicant is ineligible for the program according to the pre-qual requirements. The application/program should no longer be visible in the UI for this appRequest.
|
|
610
|
+
"""
|
|
611
|
+
FAILED_PREQUAL
|
|
612
|
+
|
|
613
|
+
"""
|
|
614
|
+
The applicant is ineligible for the program according to the qualification requirements. The application/program should remain visible in the UI and any applicable statusReason from the associated requirements should be displayed.
|
|
615
|
+
"""
|
|
616
|
+
FAILED_QUALIFICATION
|
|
617
|
+
|
|
618
|
+
"""
|
|
619
|
+
The application's benefit was rejected by the applicant. This status is only possible for programs with at least one ACCEPTANCE requirement.
|
|
620
|
+
"""
|
|
621
|
+
NOT_ACCEPTED
|
|
622
|
+
|
|
623
|
+
"""The application has not been approved."""
|
|
624
|
+
NOT_APPROVED
|
|
625
|
+
|
|
626
|
+
"""The application has been submitted and is awaiting preapproval."""
|
|
627
|
+
PREAPPROVAL
|
|
628
|
+
|
|
629
|
+
"""
|
|
630
|
+
The appRequest has not finished pre-qualification yet. This application does not quite exist yet and probably should not appear in the UI.
|
|
631
|
+
"""
|
|
632
|
+
PREQUAL
|
|
633
|
+
|
|
634
|
+
"""
|
|
635
|
+
The application has been pre-qualified and is awaiting further input from the applicant.
|
|
636
|
+
"""
|
|
637
|
+
QUALIFICATION
|
|
638
|
+
|
|
639
|
+
"""
|
|
640
|
+
All requirements have been evaluated as MET or NOT_APPLICABLE. The application is ready to be submitted.
|
|
641
|
+
"""
|
|
642
|
+
READY_TO_SUBMIT
|
|
643
|
+
|
|
644
|
+
"""
|
|
645
|
+
The appRequest (and thus the application inside it) was withdrawn after being submitted. If it is re-opened, it will re-open in submitted state.
|
|
646
|
+
"""
|
|
647
|
+
WITHDRAWN
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
type Configuration {
|
|
651
|
+
actions: ConfigurationAccess!
|
|
652
|
+
data: JsonData!
|
|
653
|
+
|
|
654
|
+
"""The key being configured. Could be a requirement or prompt key."""
|
|
655
|
+
key: String!
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
type ConfigurationAccess {
|
|
659
|
+
update: Boolean!
|
|
660
|
+
view: Boolean!
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
input ConfigurationFilters {
|
|
664
|
+
"""Return specific configurations."""
|
|
665
|
+
ids: [ID!]
|
|
666
|
+
|
|
667
|
+
"""Return configurations for these keys."""
|
|
668
|
+
keys: [String!]
|
|
669
|
+
|
|
670
|
+
"""Return configurations for these period codes."""
|
|
671
|
+
periodCodes: [String!]
|
|
672
|
+
|
|
673
|
+
"""Return configurations for these period IDs."""
|
|
674
|
+
periodIds: [ID!]
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
"""
|
|
678
|
+
Date and Time in ISO 8601 string format. JSON parser should convert to javascript Date type.
|
|
679
|
+
"""
|
|
680
|
+
scalar DateTime
|
|
681
|
+
|
|
682
|
+
"""
|
|
683
|
+
This represents an index as registered by one of the project's prompt definitions.
|
|
684
|
+
"""
|
|
685
|
+
type IndexCategory {
|
|
686
|
+
"""
|
|
687
|
+
If this is > 0, the index values should be shown on the main app request list page, sorted by this priority in descending order.
|
|
688
|
+
"""
|
|
689
|
+
appRequestListPriority: Float
|
|
690
|
+
|
|
691
|
+
"""
|
|
692
|
+
If this is > 0, the index values should be shown on the applicant dashboard, sorted by this priority in descending order.
|
|
693
|
+
"""
|
|
694
|
+
applicantDashboardPriority: Float
|
|
695
|
+
category: String!
|
|
696
|
+
categoryLabel: String!
|
|
697
|
+
|
|
698
|
+
"""
|
|
699
|
+
If this is > 0, the index values should be shown on the list filters, sorted by this priority in descending order.
|
|
700
|
+
"""
|
|
701
|
+
listFiltersPriority: Float
|
|
702
|
+
listable: Boolean!
|
|
703
|
+
|
|
704
|
+
"""
|
|
705
|
+
If this is > 0, the index values should be shown on the reviewer dashboard, sorted by this priority in descending order.
|
|
706
|
+
"""
|
|
707
|
+
reviewerDashboardPriority: Float
|
|
708
|
+
values(
|
|
709
|
+
"""
|
|
710
|
+
If true, only return tags that are currently in use by app requests. This is useful for only presenting useful filters.
|
|
711
|
+
"""
|
|
712
|
+
inUse: Boolean
|
|
713
|
+
search: String
|
|
714
|
+
): [IndexValue!]!
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
type IndexValue {
|
|
718
|
+
label: String!
|
|
719
|
+
value: String!
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
"""Unstructured JSON data."""
|
|
723
|
+
scalar JsonData
|
|
724
|
+
|
|
725
|
+
type Mutation {
|
|
726
|
+
"""Add a note to the app request."""
|
|
727
|
+
addNote(
|
|
728
|
+
content: String!
|
|
729
|
+
|
|
730
|
+
"""
|
|
731
|
+
If true, the note will be marked as internal and only visible to reviewers.
|
|
732
|
+
"""
|
|
733
|
+
internal: Boolean!
|
|
734
|
+
): ValidatedAppRequestResponse!
|
|
735
|
+
|
|
736
|
+
"""Make an offer on the app request."""
|
|
737
|
+
offerAppRequest(appRequestId: ID!): ValidatedAppRequestResponse!
|
|
738
|
+
roleAddGrant(grant: AccessRoleGrantCreate!, roleId: ID!, validateOnly: Boolean): AccessRoleValidatedResponse!
|
|
739
|
+
roleCreate(role: AccessRoleInput!, validateOnly: Boolean): AccessRoleValidatedResponse!
|
|
740
|
+
roleDelete(roleId: ID!): ValidatedResponse!
|
|
741
|
+
roleDeleteGrant(grantId: ID!): AccessRoleValidatedResponse!
|
|
742
|
+
roleUpdate(role: AccessRoleInput!, roleId: ID!, validateOnly: Boolean): AccessRoleValidatedResponse!
|
|
743
|
+
roleUpdateGrant(grant: AccessRoleGrantUpdate!, grantId: ID!, validateOnly: Boolean): AccessRoleValidatedResponse!
|
|
744
|
+
|
|
745
|
+
"""Submit the app request."""
|
|
746
|
+
submitAppRequest(appRequestId: ID!): ValidatedAppRequestResponse!
|
|
747
|
+
updateConfiguration(data: JsonData!, key: String!, periodId: String!, validateOnly: Boolean): ValidatedConfigurationResponse!
|
|
748
|
+
updatePeriod(id: String!, update: PeriodUpdate!, validateOnly: Boolean): ValidatedPeriodResponse!
|
|
749
|
+
|
|
750
|
+
"""Update the data for a prompt in this app request."""
|
|
751
|
+
updatePrompt(data: JsonData!, promptId: ID!, validateOnly: Boolean): ValidatedAppRequestResponse!
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
type MutationMessage {
|
|
755
|
+
"""
|
|
756
|
+
The path to the arg that produced the error. Dot-separated (lodash.get compatible) if it is deep inside an input type. Null if no particular arg can be blamed for the error.
|
|
757
|
+
"""
|
|
758
|
+
arg: String
|
|
759
|
+
|
|
760
|
+
"""
|
|
761
|
+
An error message to be shown to the end user, with the context of the given arg.
|
|
762
|
+
"""
|
|
763
|
+
message: String!
|
|
764
|
+
|
|
765
|
+
"""The type of error message. See the enum descriptions for more detail."""
|
|
766
|
+
type: MutationMessageType!
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
enum MutationMessageType {
|
|
770
|
+
"""This error means the mutation cannot and/or did not take place."""
|
|
771
|
+
error
|
|
772
|
+
|
|
773
|
+
"""
|
|
774
|
+
This message should be shown to the end user before submission to let them know ahead of time that one of their entries passed validation (e.g. username available or password strength high).
|
|
775
|
+
"""
|
|
776
|
+
success
|
|
777
|
+
|
|
778
|
+
"""
|
|
779
|
+
The mutation can and/or did complete, but the user should receive the warning anyway (e.g. "Your password sucks but I'll allow it.").
|
|
780
|
+
"""
|
|
781
|
+
warning
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
type Period {
|
|
785
|
+
actions: PeriodActions!
|
|
786
|
+
|
|
787
|
+
"""
|
|
788
|
+
This is useful for filtering out periods that are no longer useful. For instance, a window might close applications after 2 weeks but the reviewers could be working.
|
|
789
|
+
"""
|
|
790
|
+
archiveDate: DateTime
|
|
791
|
+
|
|
792
|
+
"""
|
|
793
|
+
Date that this period closes for applications. Some periods do not set a close date.
|
|
794
|
+
"""
|
|
795
|
+
closeDate: DateTime
|
|
796
|
+
|
|
797
|
+
"""
|
|
798
|
+
Unique identifier for this period that references an external system. Ideally human readable.
|
|
799
|
+
"""
|
|
800
|
+
code: String
|
|
801
|
+
configurations(filter: ConfigurationFilters): [Configuration!]!
|
|
802
|
+
id: ID!
|
|
803
|
+
|
|
804
|
+
"""
|
|
805
|
+
Name for this period. Will be displayed to applicants if they create an App Request while two periods are simultaneously open.
|
|
806
|
+
"""
|
|
807
|
+
name: String!
|
|
808
|
+
|
|
809
|
+
"""Date that this period opens for applications."""
|
|
810
|
+
openDate: DateTime!
|
|
811
|
+
programs: [PeriodProgram!]!
|
|
812
|
+
prompts: [PeriodPrompt!]!
|
|
813
|
+
requirements: [PeriodProgramRequirement!]!
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
type PeriodActions {
|
|
817
|
+
update: Boolean!
|
|
818
|
+
view: Boolean!
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
input PeriodFilters {
|
|
822
|
+
"""Return periods that will be archived after this date."""
|
|
823
|
+
archiveAfter: DateTime
|
|
824
|
+
|
|
825
|
+
"""Return periods that were archived before this date."""
|
|
826
|
+
archiveBefore: DateTime
|
|
827
|
+
|
|
828
|
+
"""Return periods that are open at this date or will be open after it."""
|
|
829
|
+
closesAfter: DateTime
|
|
830
|
+
|
|
831
|
+
"""
|
|
832
|
+
Return periods that closed before this date, not including that date's active period(s).
|
|
833
|
+
"""
|
|
834
|
+
closesBefore: DateTime
|
|
835
|
+
|
|
836
|
+
"""Return periods that have any of these codes."""
|
|
837
|
+
codes: [String!]
|
|
838
|
+
|
|
839
|
+
"""Return periods that have any of these IDs."""
|
|
840
|
+
ids: [ID!]
|
|
841
|
+
|
|
842
|
+
"""true -> open periods. false -> closed periods. null -> all periods."""
|
|
843
|
+
openNow: Boolean
|
|
844
|
+
|
|
845
|
+
"""
|
|
846
|
+
Return periods that open after this date, not including that date's active period(s).
|
|
847
|
+
"""
|
|
848
|
+
opensAfter: DateTime
|
|
849
|
+
|
|
850
|
+
"""Return periods that are open at this date or have been open before it."""
|
|
851
|
+
opensBefore: DateTime
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
type PeriodProgram {
|
|
855
|
+
actions: PeriodProgramActions!
|
|
856
|
+
|
|
857
|
+
"""
|
|
858
|
+
Whether the program is enabled in this period. This is set by the system administrator.
|
|
859
|
+
"""
|
|
860
|
+
enabled: Boolean!
|
|
861
|
+
group: PeriodProgramActions!
|
|
862
|
+
key: ID!
|
|
863
|
+
navTitle: String!
|
|
864
|
+
period: Period!
|
|
865
|
+
requirements: [PeriodProgramRequirement!]!
|
|
866
|
+
title: String!
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
type PeriodProgramActions {
|
|
870
|
+
configure: Boolean!
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
type PeriodProgramRequirement {
|
|
874
|
+
"""The configuration for this requirement in the period."""
|
|
875
|
+
configuration: Configuration!
|
|
876
|
+
|
|
877
|
+
"""
|
|
878
|
+
An internal description of the requirement. Probably not shown to users.
|
|
879
|
+
"""
|
|
880
|
+
description: String!
|
|
881
|
+
|
|
882
|
+
"""
|
|
883
|
+
Whether the requirement is enabled in this period. This is set by the system administrator.
|
|
884
|
+
"""
|
|
885
|
+
enabled: Boolean!
|
|
886
|
+
|
|
887
|
+
"""
|
|
888
|
+
A human and machine readable unique and stable identifier that we can use to add javascript logic to the evaluation of whether a requirement is satisfied. For example: "gi_ch33_must_be_post911"
|
|
889
|
+
"""
|
|
890
|
+
key: String!
|
|
891
|
+
|
|
892
|
+
"""
|
|
893
|
+
A human readable title for the requirement in the navigation. You probably want it to be shorter than the full title. If not provided, the title will be used.
|
|
894
|
+
"""
|
|
895
|
+
navTitle: String!
|
|
896
|
+
prompts: [PeriodPrompt!]!
|
|
897
|
+
|
|
898
|
+
"""
|
|
899
|
+
A human readable title for the requirement. This is what will be shown to users.
|
|
900
|
+
"""
|
|
901
|
+
title: String!
|
|
902
|
+
|
|
903
|
+
"""
|
|
904
|
+
The type of requirement. This determines when the requirement is evaluated and who can see the requirement.
|
|
905
|
+
"""
|
|
906
|
+
type: RequirementType!
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
type PeriodPrompt {
|
|
910
|
+
"""The configuration for this prompt in the given period."""
|
|
911
|
+
configuration: Configuration!
|
|
912
|
+
|
|
913
|
+
"""
|
|
914
|
+
A brief description of the prompt. This should be shown to administrators to help explain the full meaning of the prompt while assigning permissions or editing its configuration.
|
|
915
|
+
"""
|
|
916
|
+
description: String
|
|
917
|
+
|
|
918
|
+
"""
|
|
919
|
+
A human and machine readable identifier for the prompt. Will be used to match prompt data with UI and API code that handles it.
|
|
920
|
+
"""
|
|
921
|
+
key: String!
|
|
922
|
+
|
|
923
|
+
"""
|
|
924
|
+
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.
|
|
925
|
+
"""
|
|
926
|
+
navTitle: String!
|
|
927
|
+
periodId: String!
|
|
928
|
+
|
|
929
|
+
"""
|
|
930
|
+
A human readable title for the prompt. This is what will be shown to users.
|
|
931
|
+
"""
|
|
932
|
+
title: String!
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
input PeriodUpdate {
|
|
936
|
+
archiveDate: DateTime
|
|
937
|
+
closeDate: DateTime
|
|
938
|
+
code: String
|
|
939
|
+
name: String!
|
|
940
|
+
openDate: DateTime!
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
type Program {
|
|
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
|
+
|
|
956
|
+
"""
|
|
957
|
+
A human readable title for the program group in the navigation. You may want it to be shorter than the full title. If not provided, the title will be used.
|
|
958
|
+
"""
|
|
959
|
+
navTitle: String!
|
|
960
|
+
programs(filter: ProgramFilters): [Program!]!
|
|
961
|
+
|
|
962
|
+
"""
|
|
963
|
+
A human readable title for the program group. This will be shown to users.
|
|
964
|
+
"""
|
|
965
|
+
title: String!
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
input ProgramGroupFilter {
|
|
969
|
+
keys: [ID!]
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
"""
|
|
973
|
+
The visibility of a prompt on a request. This is used to determine whether the prompt should be shown to the user in the UI.
|
|
974
|
+
"""
|
|
975
|
+
enum PromptVisibility {
|
|
976
|
+
"""
|
|
977
|
+
This RequirementPrompt is a duplicate of a RequirementPrompt that already appears earlier in the same application (it could also be duplicated yet again in an earlier application). It should not be shown to applicants. The reviewer UI may or may not want to show these repeated dependencies.
|
|
978
|
+
"""
|
|
979
|
+
APPLICATION_DUPE
|
|
980
|
+
|
|
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
|
+
"""
|
|
987
|
+
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
|
+
"""
|
|
989
|
+
AVAILABLE
|
|
990
|
+
|
|
991
|
+
"""
|
|
992
|
+
This RequirementPrompt is a duplicate of a RequirementPrompt that already appears earlier in the same app request, but it is the first appearance in its application. It should not be shown to applicants. The reviewer UI may or may not want to show these repeated dependencies.
|
|
993
|
+
"""
|
|
994
|
+
REQUEST_DUPE
|
|
995
|
+
|
|
996
|
+
"""
|
|
997
|
+
This RequirementPrompt cannot be reached, there is a requirement or prompt in front of it that could or already has disqualified the application.
|
|
998
|
+
"""
|
|
999
|
+
UNREACHABLE
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
type Query {
|
|
1003
|
+
"\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
|
+
access: Access!
|
|
1005
|
+
accessUsers(filter: AccessUserFilter): [AccessUser!]!
|
|
1006
|
+
appRequestIndexes(
|
|
1007
|
+
categories: [String!]
|
|
1008
|
+
|
|
1009
|
+
"""
|
|
1010
|
+
Returns indexes that are flagged to appear in this destination. Also sorts for this destination.
|
|
1011
|
+
"""
|
|
1012
|
+
for: AppRequestIndexDestination
|
|
1013
|
+
): [IndexCategory!]!
|
|
1014
|
+
appRequests(filter: AppRequestFilter): [AppRequest!]!
|
|
1015
|
+
periods(filter: PeriodFilters): [Period!]!
|
|
1016
|
+
programGroups(filter: ProgramGroupFilter): [ProgramGroup!]!
|
|
1017
|
+
programs(filter: ProgramFilters): [Program!]!
|
|
1018
|
+
roles(filter: AccessRoleFilter): [AccessRole!]!
|
|
1019
|
+
|
|
1020
|
+
"""
|
|
1021
|
+
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
|
+
"""
|
|
1023
|
+
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
|
+
}
|
|
1030
|
+
|
|
1031
|
+
"""
|
|
1032
|
+
A RequestPrompt is an instance of a Prompt on a particular request. Once the user has answered the prompt, it contains the answer and the prompt status on that request.
|
|
1033
|
+
"""
|
|
1034
|
+
type RequirementPrompt {
|
|
1035
|
+
"""Actions that the user can take on this prompt."""
|
|
1036
|
+
actions: RequirementPromptActions!
|
|
1037
|
+
|
|
1038
|
+
"""Whether the prompt has been answered on this request."""
|
|
1039
|
+
answered: Boolean!
|
|
1040
|
+
|
|
1041
|
+
"""The configuration data for this prompt in the app request's period."""
|
|
1042
|
+
configurationData: JsonData!
|
|
1043
|
+
|
|
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
|
+
"""
|
|
1050
|
+
The data that has been gathered from the user in response to this prompt. The schema is controlled by the question's implementation.
|
|
1051
|
+
"""
|
|
1052
|
+
data(
|
|
1053
|
+
"""
|
|
1054
|
+
Provide the schemaVersion at the time the UI was built. Will throw an error if the client is too old, so it knows to refresh.
|
|
1055
|
+
"""
|
|
1056
|
+
schemaVersion: String
|
|
1057
|
+
): JsonData
|
|
1058
|
+
|
|
1059
|
+
"""
|
|
1060
|
+
A brief description of the prompt. This should be shown to administrators to help explain the full meaning of the prompt while assigning permissions or editing its configuration.
|
|
1061
|
+
"""
|
|
1062
|
+
description: String
|
|
1063
|
+
|
|
1064
|
+
"""
|
|
1065
|
+
Any data that the API needs to provide to the UI to display the prompt properly. For instance, if the prompt text is in the database and able to be modified by admins, the UI can't hardcode the prompt text and needs it from the API. Could also be used to pull reference information from an external system, e.g. a student's course schedule, for display in the prompt dialog.
|
|
1066
|
+
"""
|
|
1067
|
+
fetchedData(
|
|
1068
|
+
"""
|
|
1069
|
+
Provide the schemaVersion at the time the UI was built. Will throw an error if the client is too old, so it knows to refresh.
|
|
1070
|
+
"""
|
|
1071
|
+
schemaVersion: String
|
|
1072
|
+
): JsonData
|
|
1073
|
+
id: ID!
|
|
1074
|
+
|
|
1075
|
+
"""
|
|
1076
|
+
When true, this prompt has been invalidated by the answer to another prompt. The `answered` field should remain false until the user specifically answers this prompt again, regardless of the output of the definition's `complete` method.
|
|
1077
|
+
"""
|
|
1078
|
+
invalidated: Boolean!
|
|
1079
|
+
|
|
1080
|
+
"""
|
|
1081
|
+
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
|
+
"""
|
|
1083
|
+
key: String!
|
|
1084
|
+
|
|
1085
|
+
"""
|
|
1086
|
+
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
|
+
"""
|
|
1088
|
+
navTitle: String!
|
|
1089
|
+
|
|
1090
|
+
"""
|
|
1091
|
+
Preload data that has been generated according to the prompt definition. For example, a prompt might query the database for answers given in previous requests or query an external API to learn facts about the user.
|
|
1092
|
+
"""
|
|
1093
|
+
preloadData(
|
|
1094
|
+
"""
|
|
1095
|
+
Provide the schemaVersion at the time the UI was built. Will throw an error if the client is too old, so it knows to refresh.
|
|
1096
|
+
"""
|
|
1097
|
+
schemaVersion: String
|
|
1098
|
+
): JsonData
|
|
1099
|
+
|
|
1100
|
+
"""The requirement that this prompt is associated with."""
|
|
1101
|
+
requirement: ApplicationRequirement!
|
|
1102
|
+
|
|
1103
|
+
"""
|
|
1104
|
+
A human readable title for the prompt. This is what will be shown to users.
|
|
1105
|
+
"""
|
|
1106
|
+
title: String!
|
|
1107
|
+
|
|
1108
|
+
"""
|
|
1109
|
+
The visibility of the prompt on the request. This is used to determine whether the prompt should be shown to the user in the UI.
|
|
1110
|
+
"""
|
|
1111
|
+
visibility: PromptVisibility!
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
type RequirementPromptActions {
|
|
1115
|
+
update: Boolean!
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
enum RequirementStatus {
|
|
1119
|
+
"""
|
|
1120
|
+
The requirement has not been met, and it means the application is denied/ineligible.
|
|
1121
|
+
"""
|
|
1122
|
+
DISQUALIFYING
|
|
1123
|
+
|
|
1124
|
+
"""The requirement has been met."""
|
|
1125
|
+
MET
|
|
1126
|
+
|
|
1127
|
+
"""
|
|
1128
|
+
The requirement is not applicable. The application should not yet be denied, proceed to the next requirement.
|
|
1129
|
+
"""
|
|
1130
|
+
NOT_APPLICABLE
|
|
1131
|
+
|
|
1132
|
+
"""
|
|
1133
|
+
The requirement cannot be evaluated yet because one or more questions are unanswered.
|
|
1134
|
+
"""
|
|
1135
|
+
PENDING
|
|
1136
|
+
|
|
1137
|
+
"""
|
|
1138
|
+
The requirement has not been met, but the application may still be approved. The requirement should be marked in some way as not quite satisfactory. The statusReason may explain further what is wrong.
|
|
1139
|
+
"""
|
|
1140
|
+
WARNING
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
enum RequirementType {
|
|
1144
|
+
"""
|
|
1145
|
+
A requirement that should only be shown to applicants after the application has been through review and an offer has been made. The applicant can come back and fill out the requirement's prompts to accept the offer.
|
|
1146
|
+
"""
|
|
1147
|
+
ACCEPTANCE
|
|
1148
|
+
|
|
1149
|
+
"""
|
|
1150
|
+
A requirement that should only be shown to agents/reviewers and must have a non-pending status before an application is closed.
|
|
1151
|
+
"""
|
|
1152
|
+
APPROVAL
|
|
1153
|
+
|
|
1154
|
+
"""
|
|
1155
|
+
A requirement that should be shown to applicants at the end of the request process, prior to review and submission, outside the context of the individual programs. It is intended for acknowledgements like "I affirm that I have given truthful answers". It wouldn't make sense to have them affirm that their answers are truthful in one application but not in the others.
|
|
1156
|
+
"""
|
|
1157
|
+
POSTQUAL
|
|
1158
|
+
|
|
1159
|
+
"""
|
|
1160
|
+
A requirement that has no prompts and must have a non-PENDING status before an application may be reviewed. Use this for materials/data that must appear in an external system before a reviewer will be able to begin their work.
|
|
1161
|
+
"""
|
|
1162
|
+
PREAPPROVAL
|
|
1163
|
+
|
|
1164
|
+
"""
|
|
1165
|
+
A requirement that should have a non-PENDING status before the user is shown their programs. Only the applications for programs whose PREQUAL requirements are MET or NOT_APPLICABLE should be visible. The others should be entirely hidden, rather than being shown in a disabled/ineligible state.
|
|
1166
|
+
"""
|
|
1167
|
+
PREQUAL
|
|
1168
|
+
|
|
1169
|
+
"""
|
|
1170
|
+
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
|
+
"""
|
|
1172
|
+
QUALIFICATION
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
type RoleActions {
|
|
1176
|
+
delete: Boolean!
|
|
1177
|
+
update: Boolean!
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
type ValidatedAppRequestResponse {
|
|
1181
|
+
appRequest: AppRequest!
|
|
1182
|
+
messages: [MutationMessage!]!
|
|
1183
|
+
|
|
1184
|
+
"""
|
|
1185
|
+
True if the mutation succeeded (e.g. saved data or passed validation), even if there were warnings.
|
|
1186
|
+
"""
|
|
1187
|
+
success: Boolean!
|
|
1188
|
+
}
|
|
1189
|
+
|
|
1190
|
+
type ValidatedConfigurationResponse {
|
|
1191
|
+
configuration: Configuration
|
|
1192
|
+
messages: [MutationMessage!]!
|
|
1193
|
+
|
|
1194
|
+
"""
|
|
1195
|
+
True if the mutation succeeded (e.g. saved data or passed validation), even if there were warnings.
|
|
1196
|
+
"""
|
|
1197
|
+
success: Boolean!
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
type ValidatedPeriodResponse {
|
|
1201
|
+
messages: [MutationMessage!]!
|
|
1202
|
+
period: Period
|
|
1203
|
+
|
|
1204
|
+
"""
|
|
1205
|
+
True if the mutation succeeded (e.g. saved data or passed validation), even if there were warnings.
|
|
1206
|
+
"""
|
|
1207
|
+
success: Boolean!
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1210
|
+
type ValidatedResponse {
|
|
1211
|
+
messages: [MutationMessage!]!
|
|
1212
|
+
|
|
1213
|
+
"""
|
|
1214
|
+
True if the mutation succeeded (e.g. saved data or passed validation), even if there were warnings.
|
|
1215
|
+
"""
|
|
1216
|
+
success: Boolean!
|
|
1217
|
+
}
|