View schema changes
```diff
@@ -1604,8 +1604,28 @@
"""
transition: ID
}
+input ExecuteProjectTransitionInput {
+ """Any additional user notes related to this transition"""
+ notes: RichText
+
+ """The project ID to transition"""
+ project: ID!
+
+ """
+ Bypass the workflow, and go straight to this step.
+ `transition` is not required and ignored when using this.
+ """
+ step: ProjectStep
+
+ """
+ The transition `key` to execute.
+ This is required unless specifying bypassing the workflow with a `step` input.
+ """
+ transition: ID
+}
+
"""
First scripture that has been created but managed _outside_ of CORD. `hasFirst` will always be true.
"""
type ExternalFirstScripture implements FirstScripture {
@@ -2229,8 +2249,9 @@
"""The project members"""
team(input: ProjectMemberListInput = {count: 25, filter: {}, order: ASC, page: 1, sort: "createdAt"}): SecuredProjectMemberList!
type: ProjectType!
+ workflowEvents: [ProjectWorkflowEvent!]!
}
type InternshipProjectListOutput implements PaginatedList {
"""Whether the next page exists"""
@@ -2724,8 +2745,9 @@
"""The project members"""
team(input: ProjectMemberListInput = {count: 25, filter: {}, order: ASC, page: 1, sort: "createdAt"}): SecuredProjectMemberList!
type: ProjectType!
+ workflowEvents: [ProjectWorkflowEvent!]!
}
input MoveFileInput {
"""The file or directory's ID"""
@@ -2840,8 +2862,9 @@
"""The project members"""
team(input: ProjectMemberListInput = {count: 25, filter: {}, order: ASC, page: 1, sort: "createdAt"}): SecuredProjectMemberList!
type: ProjectType!
+ workflowEvents: [ProjectWorkflowEvent!]!
}
type Mutation {
"""Add a location to a language"""
@@ -3094,8 +3117,9 @@
"""
pinned: Boolean
): Boolean!
transitionProgressReport(input: ExecuteProgressReportTransitionInput!): ProgressReport!
+ transitionProject(input: ExecuteProjectTransitionInput!): Project!
"""Update a budget"""
updateBudget(input: UpdateBudgetInput!): UpdateBudgetOutput!
@@ -4416,8 +4440,9 @@
"""The project members"""
team(input: ProjectMemberListInput = {count: 25, filter: {}, order: ASC, page: 1, sort: "createdAt"}): SecuredProjectMemberList!
type: ProjectType!
+ workflowEvents: [ProjectWorkflowEvent!]!
}
type ProjectChangeRequest implements Changeset & Resource {
"""Whether the changes have been applied to live data"""
@@ -4628,11 +4653,25 @@
Suspended
Terminated
}
+"""
+A transition for the project workflow.
+
+This is not a normalized entity.
+A transition represented by its `key` can have different field values
+based on the project's state.
+"""
type ProjectStepTransition {
disabled: Boolean!
disabledReason: String
+
+ """
+ An local identifier for this transition.
+ It cannot be used to globally identify a transition.
+ It is passed to `transitionProject`.
+ """
+ key: ID!
label: String!
to: ProjectStep!
type: TransitionType!
}
@@ -4665,8 +4704,19 @@
projectTypes: [ProjectType!]!
user: ID!
}
+type ProjectWorkflowEvent {
+ at: DateTime!
+ id: ID!
+ notes: SecuredRichTextNullable!
+ to: ProjectStep!
+
+ """The transition taken, null if workflow was bypassed"""
+ transition: ProjectStepTransition
+ who: SecuredUser!
+}
+
type Prompt {
"""Whether the requesting user can delete this resource"""
canDelete: Boolean!
createdAt: DateTime!
@@ -6160,9 +6210,9 @@
"""
type SecuredProjectStep implements Secured {
"""
Is the current user allowed to bypass transitions entirely
- and change the step to any other step?
+ and change the status to any other step?
"""
canBypassTransitions: Boolean!
canEdit: Boolean!
canRead: Boolean!
@@ -6645,8 +6695,9 @@
"""The project members"""
team(input: ProjectMemberListInput = {count: 25, filter: {}, order: ASC, page: 1, sort: "createdAt"}): SecuredProjectMemberList!
type: ProjectType!
+ workflowEvents: [ProjectWorkflowEvent!]!
}
type TranslationProjectListOutput implements PaginatedList {
"""Whether the next page exists"""
```
Monday