diff --git a/docs/apis-tools/tasklist-api/assets/tasklist.graphqls b/docs/apis-tools/tasklist-api/assets/tasklist.graphqls deleted file mode 100644 index 3442bfa677..0000000000 --- a/docs/apis-tools/tasklist-api/assets/tasklist.graphqls +++ /dev/null @@ -1,203 +0,0 @@ -scalar DateTime - -# Describes the User task. -type Task { - # The unique identifier of the task - id: ID! - # Name of the task - name: String! - # Task Definition ID (node BPMN id) of the process - taskDefinitionId: String! - # Name of the process - processName: String! - # When was the task created - creationTime: String! - # When was the task completed - completionTime: String - # Username/id of who is assigned to the task - assignee: String - # Variables associated to the task - variables: [Variable!] - # State of the task - taskState: TaskState! - # Array of values to be copied into `TaskQuery` to request for next or previous page of tasks. - sortValues: [String!] - # Flag to show that the task is first in current filter - isFirst: Boolean - # Reference to the task form - formKey: String - #Reference to process definition - processDefinitionId: String - #Reference to processInstance definition - processInstanceId: String - #Candidate groups - candidateGroups: [String!] - #Follow-up Date for Task - followUpDate: DateTime - #Due date for Task - dueDate: DateTime - #Candidate users - candidateUsers: [String!] -} - -#Describes task embedded form -type Form { - #The unique identifier of the embedded form within one process - id: String! - #Reference to process definition - processDefinitionId: String! - #Form content - schema: String! -} - -type Process { - id: String! - name: String - processDefinitionId: String - version: Int -} - -input DateFilter { - from: DateTime! - to: DateTime! -} - -#Task query - query to get one page of tasks. -input TaskQuery { - # State of the tasks - state: TaskState - # Are the tasks assigned? - assigned: Boolean - # Who is assigned to the tasks? - assignee: String - # given group is in candidate groups list - candidateGroup: String - # given user is in candidate users list - candidateUser: String - # process definition id - processDefinitionId: String - # process instance id - processInstanceId: String - #Size of tasks page (default: 50). - pageSize: Int - # Task definition ID - what's the BPMN flow node? - taskDefinitionId: String - #Array of values copied from `sortValues` of one of the tasks, query will return page of tasks going directly after this values plus same sort values. - searchAfter: [String!] - #Array of values copied from `sortValues` of one of the tasks, query will return page of tasks going directly after this values. - searchAfterOrEqual: [String!] - #Array of values copied from `sortValues` of one of the tasks, query will return page of tasks going directly before this values plus same sort values. - searchBefore: [String!] - #Array of values copied from `sortValues` of one of the tasks, query will return page of tasks going directly before this values. - searchBeforeOrEqual: [String!] - #Follow-up Date for Task - followUpDate: DateFilter - #Due Date for Task - dueDate: DateFilter - #order - sort: [TaskOrderBy] -} - -input TaskOrderBy { - field: TaskSortFields! - order: Sort! -} - -enum Sort { - ASC - DESC -} - -enum TaskSortFields { - creationTime - completionTime - followUpDate - dueDate -} - -# State of the task. -enum TaskState { - CREATED - COMPLETED - CANCELED -} - -# Variable used in task. -type Variable { - id: ID! - name: String! - # full variable value - value: String! - # value preview (limited in size) - previewValue: String! - # shows, whether previewValue contains truncated value or full value - isValueTruncated: Boolean! -} -# Change or add a variable with name and value. -input VariableInput { - # Name of the variable. - name: String! - # Value of the variable. Complex values, e.g. a list of objects, must be serialized as JSON. - value: String! -} - -type ProcessInstance { - id: ID! -} - -type C8AppLink { - name: String! - link: String! -} -# Describes the user. -type User { - userId: ID! - displayName: String - permissions: [String!] - roles: [String] - salesPlanType: String - c8Links: [C8AppLink] -} -# What can be searched for. -type Query { - # Get list of tasks based on `TaskQuery`. - tasks(query: TaskQuery!): [Task!]! - # Get one task by id. Returns task or error when task does not exist. - task(id: String!): Task! - # Get currently logged in user. - currentUser: User! - # Get task form by id and processDefinitionId - form(id: String!, processDefinitionId: String!): Form - # Get a collection of Variables by name - variables(taskId: String!, variableNames: [String!]!): [Variable!]! - # Get the variables by variable id - variable(id: String!): Variable! - # Get the processes - processes(search: String): [Process!]! -} -# What can be changed. -type Mutation { - # Complete a task with taskId and optional variables. Returns the task. - completeTask(taskId: String!, variables: [VariableInput!]!): Task! - """ - Claim a task with `taskId` to `assignee`. Returns the task. - - When using Graphql API with JWT authentication token following parameters may be used: - * `assignee`. When using a JWT token, the assignee parameter is NOT optional when called directly from the API. - The system will not be able to detect the assignee from the JWT token, therefore the assignee parameter needs to be - explicitly passed in this instance. - * `allowOverrideAssignment`. When `true` the task that is already assigned may be claimed again. Otherwise the task - must be first unclaimed and only then claimed again. (Default: `true`) - """ - claimTask( - taskId: String! - assignee: String - allowOverrideAssignment: Boolean - ): Task! - # Unclaim a task with taskId. Returns the task. - unclaimTask(taskId: String!): Task! - # Delete process instance by given processInstanceId. Returns true if process instance could be deleted. - deleteProcessInstance(processInstanceId: String!): Boolean! - # start a Process from tasklist - startProcess(processDefinitionId: String!): ProcessInstance! -} diff --git a/docs/apis-tools/tasklist-api/directives/_category_.yml b/docs/apis-tools/tasklist-api/directives/_category_.yml deleted file mode 100644 index 309996eee2..0000000000 --- a/docs/apis-tools/tasklist-api/directives/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -label: "Directives" diff --git a/docs/apis-tools/tasklist-api/directives/deprecated.mdx b/docs/apis-tools/tasklist-api/directives/deprecated.mdx deleted file mode 100644 index 34223694e6..0000000000 --- a/docs/apis-tools/tasklist-api/directives/deprecated.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -id: deprecated -title: deprecated -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Marks the field or enum value as deprecated - -```graphql -directive @deprecated( - reason: String = "No longer supported" -) -``` - -### Arguments - -#### [deprecated.reason](#)[`String`](../scalars/string.mdx) - -> The reason for the deprecation diff --git a/docs/apis-tools/tasklist-api/directives/include.mdx b/docs/apis-tools/tasklist-api/directives/include.mdx deleted file mode 100644 index 1e10ec91b5..0000000000 --- a/docs/apis-tools/tasklist-api/directives/include.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -id: include -title: include -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Directs the executor to include this field or fragment only when the `if` argument is true - -```graphql -directive @include( - if: Boolean! -) -``` - -### Arguments - -#### [include.if](#)[`Boolean!`](../scalars/boolean.mdx) - -> Included when true. diff --git a/docs/apis-tools/tasklist-api/directives/skip.mdx b/docs/apis-tools/tasklist-api/directives/skip.mdx deleted file mode 100644 index 05326f76d4..0000000000 --- a/docs/apis-tools/tasklist-api/directives/skip.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -id: skip -title: skip -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Directs the executor to skip this field or fragment when the `if`'argument is true. - -```graphql -directive @skip( - if: Boolean! -) -``` - -### Arguments - -#### [skip.if](#)[`Boolean!`](../scalars/boolean.mdx) - -> Skipped when true. diff --git a/docs/apis-tools/tasklist-api/directives/specified-by.mdx b/docs/apis-tools/tasklist-api/directives/specified-by.mdx deleted file mode 100644 index ac0d0adb08..0000000000 --- a/docs/apis-tools/tasklist-api/directives/specified-by.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -id: specified-by -title: specifiedBy -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Exposes a URL that specifies the behaviour of this scalar. - -```graphql -directive @specifiedBy( - url: String! -) -``` - -### Arguments - -#### [specifiedBy.url](#)[`String!`](../scalars/string.mdx) - -> The URL that specifies the behaviour of this scalar. diff --git a/docs/apis-tools/tasklist-api/enums/_category_.yml b/docs/apis-tools/tasklist-api/enums/_category_.yml deleted file mode 100644 index a91f30b39a..0000000000 --- a/docs/apis-tools/tasklist-api/enums/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -label: "Enums" diff --git a/docs/apis-tools/tasklist-api/enums/sort.mdx b/docs/apis-tools/tasklist-api/enums/sort.mdx deleted file mode 100644 index 435dd21ce0..0000000000 --- a/docs/apis-tools/tasklist-api/enums/sort.mdx +++ /dev/null @@ -1,63 +0,0 @@ ---- -id: sort -title: Sort -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -State of the task. - -```graphql -enum Sort { - ASC - DESC -} -``` - -### Values - -#### [Sort.ASC](#) - -> Ascending - -#### [Sort.DESC](#) - -> Descending - -### Member of - -[`TaskQuery`](/docs/apis-tools/tasklist-api/inputs/task-query.mdx) diff --git a/docs/apis-tools/tasklist-api/enums/task-sort-fields.mdx b/docs/apis-tools/tasklist-api/enums/task-sort-fields.mdx deleted file mode 100644 index 11105070a2..0000000000 --- a/docs/apis-tools/tasklist-api/enums/task-sort-fields.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -id: task-sort-fields -title: TaskSortFields -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -State of the task. - -```graphql -enum TaskSortFields { - creationTime - completionTime - followUpDate - dueDate -} -``` - -### Values - -#### [TaskSortFields.creationTime](#) - -> Use the field creationTime for sorting - -#### [TaskSortFields.completionTime](#) - -> Use the field completionTime for sorting - -#### [TaskSortFields.followUpDate](#) - -> Use the field followUpDate for sorting - -#### [TaskSortFields.dueDate](#) - -> Use the field dueDate for sorting - -### Member of - -[`TaskQuery`](/docs/apis-tools/tasklist-api/inputs/task-query.mdx) diff --git a/docs/apis-tools/tasklist-api/enums/task-state.mdx b/docs/apis-tools/tasklist-api/enums/task-state.mdx deleted file mode 100644 index 736495f669..0000000000 --- a/docs/apis-tools/tasklist-api/enums/task-state.mdx +++ /dev/null @@ -1,68 +0,0 @@ ---- -id: task-state -title: TaskState -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -State of the task. - -```graphql -enum TaskState { - CREATED - COMPLETED - CANCELED -} -``` - -### Values - -#### [TaskState.CREATED](#) - -> - -#### [TaskState.COMPLETED](#) - -> - -#### [TaskState.CANCELED](#) - -> - -### Member of - -[`Task`](../objects/task.mdx) [`TaskQuery`](../inputs/task-query.mdx) diff --git a/docs/apis-tools/tasklist-api/generated.md b/docs/apis-tools/tasklist-api/generated.md deleted file mode 100644 index 72b93fb4bf..0000000000 --- a/docs/apis-tools/tasklist-api/generated.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -id: schema -slug: /apis-tools/tasklist-api -title: Schema Documentation -sidebar_position: 1 -hide_table_of_contents: true -pagination_next: null -pagination_prev: null -sidebar_class_name: navbar__toggle ---- - -This documentation has been automatically generated from the GraphQL schema. -GraphQL schema file to download: [tasklist.graphqls](./assets/tasklist.graphqls) - -Use the docs in the sidebar to find out how to use the schema: - -- **Allowed operations**: queries and mutations. -- **Schema-defined types**: scalars, objects, enums, interfaces, unions, and input objects. - -Generated on 11/11/2022, 11:24:49 AM. diff --git a/docs/apis-tools/tasklist-api/inputs/_category_.yml b/docs/apis-tools/tasklist-api/inputs/_category_.yml deleted file mode 100644 index 170f758fc2..0000000000 --- a/docs/apis-tools/tasklist-api/inputs/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -label: "Inputs" diff --git a/docs/apis-tools/tasklist-api/inputs/date-filter-input.mdx b/docs/apis-tools/tasklist-api/inputs/date-filter-input.mdx deleted file mode 100644 index 076db907a0..0000000000 --- a/docs/apis-tools/tasklist-api/inputs/date-filter-input.mdx +++ /dev/null @@ -1,59 +0,0 @@ ---- -id: date-filter-input -title: DateFilter -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Filter using a date range - -```graphql -input DateFilter { - from: DateTime! - to: DateTime! -} -``` - -### Fields - -#### [DateFilter.from](#)[`DateTime!`](/docs/apis-tools/tasklist-api/scalars/DateTime.mdx) - -> Start date range to search from - -#### [DateFilter.to](#)[`DateTime!`](/docs/apis-tools/tasklist-api/scalars/DateTime.mdx) - -> End date range to search to diff --git a/docs/apis-tools/tasklist-api/inputs/task-order-by.mdx b/docs/apis-tools/tasklist-api/inputs/task-order-by.mdx deleted file mode 100644 index 2451b8d2a5..0000000000 --- a/docs/apis-tools/tasklist-api/inputs/task-order-by.mdx +++ /dev/null @@ -1,59 +0,0 @@ ---- -id: task-order-by -title: TaskOrderBy -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Filter using a date range - -```graphql -input TaskOrderBy { - field: TaskSortFields! - order: Sort! -} -``` - -### Fields - -#### [TaskOrderBy.field](#)[`TaskSortFields!`](/docs/apis-tools/tasklist-api/enums/task-sort-fields.mdx) - -> Allowed fields to sort by - -#### [TaskOrderBy.order](#)[`Sort!`](/docs/apis-tools/tasklist-api/enums/sort.mdx) - -> Define if sorting is Ascending or Descending diff --git a/docs/apis-tools/tasklist-api/inputs/task-query.mdx b/docs/apis-tools/tasklist-api/inputs/task-query.mdx deleted file mode 100644 index b19a391a76..0000000000 --- a/docs/apis-tools/tasklist-api/inputs/task-query.mdx +++ /dev/null @@ -1,133 +0,0 @@ ---- -id: task-query -title: TaskQuery -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Task query - query to get one page of tasks. - -```graphql -input TaskQuery { - state: TaskState - assigned: Boolean - assignee: String - candidateGroup: String - candidateUser: String - processDefinitionId: String - processInstanceId: String - followUpDate: DateFilter - dueDate: DateFilter - pageSize: Int - taskDefinitionId: String - searchAfter: [String!] - searchAfterOrEqual: [String!] - searchBefore: [String!] - searchBeforeOrEqual: [String!] - sort: [TaskOrderBy] -} -``` - -### Fields - -#### [TaskQuery.state](#)[`TaskState`](/docs/apis-tools/tasklist-api/enums/task-state.mdx) - -> State of the tasks - -#### [TaskQuery.assigned](#)[`Boolean`](/docs/apis-tools/tasklist-api/scalars/boolean.mdx) - -> Are the tasks assigned? - -#### [TaskQuery.assignee](#)[`String`](/docs/apis-tools/tasklist-api/scalars/string.mdx) - -> Who is assigned to the tasks? - -#### [TaskQuery.candidateGroup](#)[`String`](/docs/apis-tools/tasklist-api/scalars/string.mdx) - -> given group is in candidate groups list - -#### [TaskQuery.candidateUser](#)[`String`](/docs/apis-tools/tasklist-api/scalars/string.mdx) - -> given group is in candidate user list - -#### [TaskQuery.processDefinitionId](#)[`String`](/docs/apis-tools/tasklist-api/scalars/string.mdx) - -> Reference to process definition - -#### [TaskQuery.processInstanceId](#)[`String`](/docs/apis-tools/tasklist-api/scalars/string.mdx) - -> Reference to process instance - -#### [TaskQuery.followUpDateDate](#)[`DateFilter`](/docs/apis-tools/tasklist-api/inputs/date-filter-input.mdx) - -> Follow-up date for the task - -#### [TaskQuery.dueDate](#)[`DateFilter`](/docs/apis-tools/tasklist-api/inputs/date-filter-input.mdx) - -> Due date for the task - -#### [TaskQuery.pageSize](#)[`Int`](/docs/apis-tools/tasklist-api/scalars/int.mdx) - -> Size of tasks page (default: 50). - -#### [TaskQuery.taskDefinitionId](#)[`String`](/docs/apis-tools/tasklist-api/scalars/string.mdx) - -> Task definition ID - what's the BPMN flow node? - -#### [TaskQuery.searchAfter](#)[`[String!]`](/docs/apis-tools/tasklist-api/scalars/string.mdx) - -> Array of values copied from `sortValues` of one of the tasks, query will return page of tasks going directly after this values plus same sort values. - -#### [TaskQuery.searchAfterOrEqual](#)[`[String!]`](/docs/apis-tools/tasklist-api/scalars/string.mdx) - -> Array of values copied from `sortValues` of one of the tasks, query will return page of tasks going directly after this values. - -#### [TaskQuery.searchBefore](#)[`[String!]`](/docs/apis-tools/tasklist-api/scalars/string.mdx) - -> Array of values copied from `sortValues` of one of the tasks, query will return page of tasks going directly before this values plus same sort values. - -#### [TaskQuery.searchBeforeOrEqual](#)[`[String!]`](/docs/apis-tools/tasklist-api/scalars/string.mdx) - -> Array of values copied from `sortValues` of one of the tasks, query will return page of tasks going directly before this values. - -#### [TaskQuery.sort](#)[`[TaskOrderBy]`](/docs/apis-tools/tasklist-api/inputs/task-order-by.mdx) - -> Array of values copied from `sortValues` of one of the tasks, query will return page of tasks going directly before this values. - -### Member of - -[`tasks`](/apis-tools/tasklist-api/queries/tasks.mdx) diff --git a/docs/apis-tools/tasklist-api/inputs/variable-input.mdx b/docs/apis-tools/tasklist-api/inputs/variable-input.mdx deleted file mode 100644 index d3958e4825..0000000000 --- a/docs/apis-tools/tasklist-api/inputs/variable-input.mdx +++ /dev/null @@ -1,63 +0,0 @@ ---- -id: variable-input -title: VariableInput -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Change or add a variable with name and value. - -```graphql -input VariableInput { - name: String! - value: String! -} -``` - -### Fields - -#### [VariableInput.name](#)[`String!`](../scalars/string.mdx) - -> Name of the variable. - -#### [VariableInput.value](#)[`String!`](../scalars/string.mdx) - -> Value of the variable. Complex values, e.g. a list of objects, must be serialized as JSON. - -### Member of - -[`completeTask`](../mutations/complete-task.mdx) diff --git a/docs/apis-tools/tasklist-api/interfaces/_category_.yml b/docs/apis-tools/tasklist-api/interfaces/_category_.yml deleted file mode 100644 index 2adeef08a8..0000000000 --- a/docs/apis-tools/tasklist-api/interfaces/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -label: "Interfaces" diff --git a/docs/apis-tools/tasklist-api/mutations/_category_.yml b/docs/apis-tools/tasklist-api/mutations/_category_.yml deleted file mode 100644 index 4896c1e5d3..0000000000 --- a/docs/apis-tools/tasklist-api/mutations/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -label: "Mutations" diff --git a/docs/apis-tools/tasklist-api/mutations/claim-task.mdx b/docs/apis-tools/tasklist-api/mutations/claim-task.mdx deleted file mode 100644 index 5c2b84857d..0000000000 --- a/docs/apis-tools/tasklist-api/mutations/claim-task.mdx +++ /dev/null @@ -1,78 +0,0 @@ ---- -id: claim-task -title: claimTask -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Claim a task with `taskId` to `assignee`. Returns the task. - -When using Graphql API with JWT authentication token following parameters may be used: - -- `assignee`. When using a JWT token, the assignee parameter is NOT optional when called directly from the API. - The system will not be able to detect the assignee from the JWT token, therefore the assignee parameter needs to be - explicitly passed in this instance. -- `allowOverrideAssignment`. When `true` the task that is already assigned may be claimed again. Otherwise the task - must be first unclaimed and only then claimed again. (Default: `true`) - -```graphql -claimTask( - taskId: String! - assignee: String - allowOverrideAssignment: Boolean -): Task! -``` - -### Arguments - -#### [claimTask.taskId](#)[`String!`](../scalars/string.mdx) - -> - -#### [claimTask.assignee](#)[`String`](../scalars/string.mdx) - -> - -#### [claimTask.allowOverrideAssignment](#)[`Boolean`](../scalars/boolean.mdx) - -> - -### Type - -#### [`Task`](../objects/task.mdx) - -> Describes the User task. diff --git a/docs/apis-tools/tasklist-api/mutations/complete-task.mdx b/docs/apis-tools/tasklist-api/mutations/complete-task.mdx deleted file mode 100644 index 1c713a2a5f..0000000000 --- a/docs/apis-tools/tasklist-api/mutations/complete-task.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -id: complete-task -title: completeTask -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Complete a task with taskId and optional variables. Returns the task. - -```graphql -completeTask( - taskId: String! - variables: [VariableInput!]! -): Task! -``` - -### Arguments - -#### [completeTask.taskId](#)[`String!`](../scalars/string.mdx) - -> - -#### [completeTask.variables](#)[`[VariableInput!]!`](../inputs/variable-input.mdx) - -> - -### Type - -#### [`Task`](../objects/task.mdx) - -> Describes the User task. diff --git a/docs/apis-tools/tasklist-api/mutations/delete-process-instance.mdx b/docs/apis-tools/tasklist-api/mutations/delete-process-instance.mdx deleted file mode 100644 index d71c392e7a..0000000000 --- a/docs/apis-tools/tasklist-api/mutations/delete-process-instance.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -id: delete-process-instance -title: deleteProcessInstance -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Delete process instance by given processInstanceId. Returns true if process instance could be deleted. - -```graphql -deleteProcessInstance( - processInstanceId: String! -): Boolean! -``` - -### Arguments - -#### [deleteProcessInstance.processInstanceId](#)[`String!`](../scalars/string.mdx) - -> - -### Type - -#### [`Boolean`](../scalars/boolean.mdx) - -> The `Boolean` scalar type represents `true` or `false`. diff --git a/docs/apis-tools/tasklist-api/mutations/unclaim-task.mdx b/docs/apis-tools/tasklist-api/mutations/unclaim-task.mdx deleted file mode 100644 index e00f4659f5..0000000000 --- a/docs/apis-tools/tasklist-api/mutations/unclaim-task.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -id: unclaim-task -title: unclaimTask -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Unclaim a task with taskId. Returns the task. - -```graphql -unclaimTask( - taskId: String! -): Task! -``` - -### Arguments - -#### [unclaimTask.taskId](#)[`String!`](../scalars/string.mdx) - -> - -### Type - -#### [`Task`](../objects/task.mdx) - -> Describes the User task. diff --git a/docs/apis-tools/tasklist-api/objects/_category_.yml b/docs/apis-tools/tasklist-api/objects/_category_.yml deleted file mode 100644 index f56c1499f3..0000000000 --- a/docs/apis-tools/tasklist-api/objects/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -label: "Objects" diff --git a/docs/apis-tools/tasklist-api/objects/form.mdx b/docs/apis-tools/tasklist-api/objects/form.mdx deleted file mode 100644 index 19a5a47f74..0000000000 --- a/docs/apis-tools/tasklist-api/objects/form.mdx +++ /dev/null @@ -1,68 +0,0 @@ ---- -id: form -title: Form -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Describes task embedded form - -```graphql -type Form { - id: String! - processDefinitionId: String! - schema: String! -} -``` - -### Fields - -#### [Form.id](#)[`String!`](../scalars/string.mdx) - -> The unique identifier of the embedded form within one process - -#### [Form.processDefinitionId](#)[`String!`](../scalars/string.mdx) - -> Reference to process definition - -#### [Form.schema](#)[`String!`](../scalars/string.mdx) - -> Form content - -### Returned by - -[`form`](../queries/form.mdx) diff --git a/docs/apis-tools/tasklist-api/objects/task.mdx b/docs/apis-tools/tasklist-api/objects/task.mdx deleted file mode 100644 index 800fec6ebc..0000000000 --- a/docs/apis-tools/tasklist-api/objects/task.mdx +++ /dev/null @@ -1,144 +0,0 @@ ---- -id: task -title: Task -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Describes the User task. - -```graphql -type Task { - id: ID! - name: String! - taskDefinitionId: String! - processName: String! - creationTime: String! - completionTime: String - assignee: String - variables: [Variable!] - taskState: TaskState! - sortValues: [String!] - isFirst: Boolean - formKey: String - processDefinitionId: String - processInstanceId: String - candidateGroups: [String!] - candidateUsers: [String!] - followUpDate: DateTime - #Due date for Task - dueDate: DateTime -} -``` - -### Fields - -#### [Task.id](#)[`ID!`](../scalars/id.mdx) - -> The unique identifier of the task - -#### [Task.name](#)[`String!`](../scalars/string.mdx) - -> Name of the task - -#### [Task.taskDefinitionId](#)[`String!`](../scalars/string.mdx) - -> Task Definition ID (node BPMN id) of the process - -#### [Task.processName](#)[`String!`](../scalars/string.mdx) - -> Name of the process - -#### [Task.creationTime](#)[`String!`](../scalars/string.mdx) - -> When was the task created - -#### [Task.completionTime](#)[`String`](../scalars/string.mdx) - -> When was the task completed - -#### [Task.assignee](#)[`String`](../scalars/string.mdx) - -> Username/id of who is assigned to the task - -#### [Task.variables](#)[`[Variable!]`](../objects/variable.mdx) - -> Variables associated to the task - -#### [Task.taskState](#)[`TaskState!`](../enums/task-state.mdx) - -> State of the task - -#### [Task.sortValues](#)[`[String!]`](../scalars/string.mdx) - -> Array of values to be copied into `TaskQuery` to request for next or previous page of tasks. - -#### [Task.isFirst](#)[`Boolean`](../scalars/boolean.mdx) - -> Flag to show that the task is first in current filter - -#### [Task.formKey](#)[`String`](../scalars/string.mdx) - -> Reference to the task form - -#### [Task.processDefinitionId](#)[`String`](../scalars/string.mdx) - -> Reference to process definition - -#### [Task.processInstanceId](#)[`String`](../scalars/string.mdx) - -> Reference to process instance id - -#### [Task.candidateGroups](#)[`[String!]`](../scalars/string.mdx) - -> Candidate groups - -#### [Task.candidateUsers](#)[`[String!]`](../scalars/string.mdx) - -> Candidate users - -#### [Task.followUpDate](#)[`[String!]`](../scalars/DateTime.mdx) - -> Follow-up date for the task - -#### [Task.dueDate](#)[`[String!]`](../scalars/DateTime.mdx) - -> Due date for the task - -### Returned by - -[`claimTask`](../mutations/claim-task.mdx) [`completeTask`](../mutations/complete-task.mdx) [`task`](../queries/task.mdx) [`tasks`](../queries/tasks.mdx) [`unclaimTask`](../mutations/unclaim-task.mdx) diff --git a/docs/apis-tools/tasklist-api/objects/user.mdx b/docs/apis-tools/tasklist-api/objects/user.mdx deleted file mode 100644 index cc9bcaa35a..0000000000 --- a/docs/apis-tools/tasklist-api/objects/user.mdx +++ /dev/null @@ -1,78 +0,0 @@ ---- -id: user -title: User -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Describes the user. - -```graphql -type User { - userId: ID! - displayName: String - permissions: [String!] - roles: [String] - salesPlanType: String -} -``` - -### Fields - -#### [User.userId](#)[`ID!`](../scalars/id.mdx) - -> - -#### [User.displayName](#)[`String`](../scalars/string.mdx) - -> - -#### [User.permissions](#)[`[String!]`](../scalars/string.mdx) - -> - -#### [User.roles](#)[`[String]`](../scalars/string.mdx) - -> - -#### [User.salesPlanType](#)[`String`](../scalars/string.mdx) - -> - -### Returned by - -[`currentUser`](../queries/current-user.mdx) diff --git a/docs/apis-tools/tasklist-api/objects/variable.mdx b/docs/apis-tools/tasklist-api/objects/variable.mdx deleted file mode 100644 index 99555238c1..0000000000 --- a/docs/apis-tools/tasklist-api/objects/variable.mdx +++ /dev/null @@ -1,82 +0,0 @@ ---- -id: variable -title: Variable -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Variable used in task. - -```graphql -type Variable { - id: ID! - name: String! - value: String! - previewValue: String! - isValueTruncated: Boolean! -} -``` - -### Fields - -#### [Variable.id](#)[`ID!`](../scalars/id.mdx) - -> - -#### [Variable.name](#)[`String!`](../scalars/string.mdx) - -> - -#### [Variable.value](#)[`String!`](../scalars/string.mdx) - -> full variable value - -#### [Variable.previewValue](#)[`String!`](../scalars/string.mdx) - -> value preview (limited in size) - -#### [Variable.isValueTruncated](#)[`Boolean!`](../scalars/boolean.mdx) - -> shows, whether previewValue contains truncated value or full value - -### Returned by - -[`variable`](../queries/variable.mdx) [`variables`](../queries/variables.mdx) - -### Member of - -[`Task`](../objects/task.mdx) diff --git a/docs/apis-tools/tasklist-api/queries/_category_.yml b/docs/apis-tools/tasklist-api/queries/_category_.yml deleted file mode 100644 index 529a48de85..0000000000 --- a/docs/apis-tools/tasklist-api/queries/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -label: "Queries" diff --git a/docs/apis-tools/tasklist-api/queries/current-user.mdx b/docs/apis-tools/tasklist-api/queries/current-user.mdx deleted file mode 100644 index 997da3571a..0000000000 --- a/docs/apis-tools/tasklist-api/queries/current-user.mdx +++ /dev/null @@ -1,52 +0,0 @@ ---- -id: current-user -title: currentUser -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Get currently logged in user. - -```graphql -currentUser: User! -``` - -### Type - -#### [`User`](../objects/user.mdx) - -> Describes the user. diff --git a/docs/apis-tools/tasklist-api/queries/form.mdx b/docs/apis-tools/tasklist-api/queries/form.mdx deleted file mode 100644 index a4d110d93d..0000000000 --- a/docs/apis-tools/tasklist-api/queries/form.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -id: form -title: form -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Get task form by id and processDefinitionId - -```graphql -form( - id: String! - processDefinitionId: String! -): Form -``` - -### Arguments - -#### [form.id](#)[`String!`](../scalars/string.mdx) - -> - -#### [form.processDefinitionId](#)[`String!`](../scalars/string.mdx) - -> - -### Type - -#### [`Form`](../objects/form.mdx) - -> Describes task embedded form diff --git a/docs/apis-tools/tasklist-api/queries/task.mdx b/docs/apis-tools/tasklist-api/queries/task.mdx deleted file mode 100644 index f3f7e23e70..0000000000 --- a/docs/apis-tools/tasklist-api/queries/task.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -id: task -title: task -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Get one task by id. Returns task or error when task does not exist. - -```graphql -task( - id: String! -): Task! -``` - -### Arguments - -#### [task.id](#)[`String!`](../scalars/string.mdx) - -> - -### Type - -#### [`Task`](../objects/task.mdx) - -> Describes the User task. diff --git a/docs/apis-tools/tasklist-api/queries/tasks.mdx b/docs/apis-tools/tasklist-api/queries/tasks.mdx deleted file mode 100644 index 2073800499..0000000000 --- a/docs/apis-tools/tasklist-api/queries/tasks.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -id: tasks -title: tasks -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Get list of tasks based on `TaskQuery`. - -```graphql -tasks( - query: TaskQuery! -): [Task!]! -``` - -### Arguments - -#### [tasks.query](#)[`TaskQuery!`](../inputs/task-query.mdx) - -> - -### Type - -#### [`Task`](../objects/task.mdx) - -> Describes the User task. diff --git a/docs/apis-tools/tasklist-api/queries/variable.mdx b/docs/apis-tools/tasklist-api/queries/variable.mdx deleted file mode 100644 index df3c0de059..0000000000 --- a/docs/apis-tools/tasklist-api/queries/variable.mdx +++ /dev/null @@ -1,60 +0,0 @@ ---- -id: variable -title: variable -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Get the variables by variable id - -```graphql -variable( - id: String! -): Variable! -``` - -### Arguments - -#### [variable.id](#)[`String!`](../scalars/string.mdx) - -> - -### Type - -#### [`Variable`](../objects/variable.mdx) - -> Variable used in task. diff --git a/docs/apis-tools/tasklist-api/queries/variables.mdx b/docs/apis-tools/tasklist-api/queries/variables.mdx deleted file mode 100644 index 9654f63c84..0000000000 --- a/docs/apis-tools/tasklist-api/queries/variables.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -id: variables -title: variables -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -Get a collection of Variables by name - -```graphql -variables( - taskId: String! - variableNames: [String!]! -): [Variable!]! -``` - -### Arguments - -#### [variables.taskId](#)[`String!`](../scalars/string.mdx) - -> - -#### [variables.variableNames](#)[`[String!]!`](../scalars/string.mdx) - -> - -### Type - -#### [`Variable`](../objects/variable.mdx) - -> Variable used in task. diff --git a/docs/apis-tools/tasklist-api/scalars/DateTime.mdx b/docs/apis-tools/tasklist-api/scalars/DateTime.mdx deleted file mode 100644 index 9f5272a3fc..0000000000 --- a/docs/apis-tools/tasklist-api/scalars/DateTime.mdx +++ /dev/null @@ -1,50 +0,0 @@ ---- -id: datetime -title: DateTime -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -The `DateTime` scalar type represents date and time data and is compliant with the date-time format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. - -```graphql -scalar DateTime -``` - -### Member of - -[`Task`](/docs/apis-tools/tasklist-api/inputs/task-query.mdx) diff --git a/docs/apis-tools/tasklist-api/scalars/_category_.yml b/docs/apis-tools/tasklist-api/scalars/_category_.yml deleted file mode 100644 index 882b071de4..0000000000 --- a/docs/apis-tools/tasklist-api/scalars/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -label: "Scalars" diff --git a/docs/apis-tools/tasklist-api/scalars/boolean.mdx b/docs/apis-tools/tasklist-api/scalars/boolean.mdx deleted file mode 100644 index 7d445378c9..0000000000 --- a/docs/apis-tools/tasklist-api/scalars/boolean.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -id: boolean -title: Boolean -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -The `Boolean` scalar type represents `true` or `false`. - -```graphql -scalar Boolean -``` - -### Returned by - -[`deleteProcessInstance`](../mutations/delete-process-instance.mdx) - -### Member of - -[`claimTask`](../mutations/claim-task.mdx) [`include`](../directives/include.mdx) [`skip`](../directives/skip.mdx) [`Task`](../objects/task.mdx) [`TaskQuery`](../inputs/task-query.mdx) [`Variable`](../objects/variable.mdx) diff --git a/docs/apis-tools/tasklist-api/scalars/id.mdx b/docs/apis-tools/tasklist-api/scalars/id.mdx deleted file mode 100644 index 7504beac02..0000000000 --- a/docs/apis-tools/tasklist-api/scalars/id.mdx +++ /dev/null @@ -1,50 +0,0 @@ ---- -id: id -title: ID -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID. - -```graphql -scalar ID -``` - -### Member of - -[`Task`](../objects/task.mdx) [`User`](../objects/user.mdx) [`Variable`](../objects/variable.mdx) diff --git a/docs/apis-tools/tasklist-api/scalars/int.mdx b/docs/apis-tools/tasklist-api/scalars/int.mdx deleted file mode 100644 index e85fdb3c00..0000000000 --- a/docs/apis-tools/tasklist-api/scalars/int.mdx +++ /dev/null @@ -1,50 +0,0 @@ ---- -id: int -title: Int -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1. - -```graphql -scalar Int -``` - -### Member of - -[`TaskQuery`](../inputs/task-query.mdx) diff --git a/docs/apis-tools/tasklist-api/scalars/string.mdx b/docs/apis-tools/tasklist-api/scalars/string.mdx deleted file mode 100644 index 818899c478..0000000000 --- a/docs/apis-tools/tasklist-api/scalars/string.mdx +++ /dev/null @@ -1,50 +0,0 @@ ---- -id: string -title: String -hide_table_of_contents: false ---- - -export const Bullet = () => ( - <> - -  ●  - - -); - -export const SpecifiedBy = (props) => ( - <> - Specification - - ⎘ - - -); - -export const Badge = (props) => ( - <> - {props.text} - -); - -The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text. - -```graphql -scalar String -``` - -### Member of - -[`claimTask`](../mutations/claim-task.mdx) [`completeTask`](../mutations/complete-task.mdx) [`deleteProcessInstance`](../mutations/delete-process-instance.mdx) [`deprecated`](../directives/deprecated.mdx) [`Form`](../objects/form.mdx) [`form`](../queries/form.mdx) [`specifiedBy`](../directives/specified-by.mdx) [`Task`](../objects/task.mdx) [`task`](../queries/task.mdx) [`TaskQuery`](../inputs/task-query.mdx) [`unclaimTask`](../mutations/unclaim-task.mdx) [`User`](../objects/user.mdx) [`Variable`](../objects/variable.mdx) [`variable`](../queries/variable.mdx) [`VariableInput`](../inputs/variable-input.mdx) [`variables`](../queries/variables.mdx) diff --git a/docs/apis-tools/tasklist-api/sidebar-schema.js b/docs/apis-tools/tasklist-api/sidebar-schema.js deleted file mode 100644 index 82b59566af..0000000000 --- a/docs/apis-tools/tasklist-api/sidebar-schema.js +++ /dev/null @@ -1,10 +0,0 @@ -/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ - -module.exports = { - "Tasklist API (GraphQL)": [ - { - type: "autogenerated", - dirName: "apis-tools/tasklist-api", - }, - ], -}; diff --git a/docs/apis-tools/tasklist-api/tasklist-api-authentication.md b/docs/apis-tools/tasklist-api/tasklist-api-authentication.md deleted file mode 100644 index 2cd6c2d4a5..0000000000 --- a/docs/apis-tools/tasklist-api/tasklist-api-authentication.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -id: tasklist-api-authentication -title: Authentication -slug: /apis-tools/tasklist-api/tasklist-api-authentication -sidebar_position: 2 -description: "Build apps powered by BPMN that require human interaction, and make requests." ---- - -Authenticate to access the Tasklist API. - -## Authentication in the cloud - -To access the API endpoint, you need an access token. - -Your client must send a header in each request: - -`Authorization: Bearer ` - -For example, send a request using _curl_: - -```shell -curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer " -d '{"query": "{tasks(query:{}){name}}"}' http://localhost:8080/graphql -``` - -### How to obtain the access token - -You must obtain a token to use the Tasklist API. When you create a Tasklist [client](/guides/setup-client-connection-credentials.md), you get all the information needed to connect to Tasklist. - -Refer to our guide on [building your own client](/apis-tools/build-your-own-client.md). - -The following settings are needed: - -| Name | Description | Default value | -| ------------------------ | ----------------------------------------------- | --------------------- | -| client id | Name of your registered client | - | -| client secret | Password for your registered client | - | -| audience | Permission name; if not given use default value | `tasklist.camunda.io` | -| authorization server url | Token issuer server | - | - -Send a token issue _POST_ request to the authorization server with the following content: - -```json -{ - "client_id": "", - "client_secret": "", - "audience": "", - "grant_type": "client_credentials" -} -``` - -Refer to the following example with _curl_: - -```shell -curl -X POST --header 'content-type: application/json' --data '{"client_id": "", "client_secret":"","audience":"","grant_type":"client_credentials"}' https:// -``` - -If the authentication is successful, the authorization server sends back the access token, when it expires, scope, and type: - -```json -{ - "access_token": "ey...", - "scope": "...", - "expires_in": 86400, - "token_type": "Bearer" -} -``` - -## Authentication for Self-Managed cluster - -### Authentication via Identity JWT access token - -The authentication is described in [Tasklist Configuration - Authentication](/self-managed/tasklist-deployment/tasklist-authentication.md#identity). - -### Authentication via cookie - -:::note -When authenticating via cookie, note that Cross-Site Request Forgery (CSRF) protection must be disabled to allow this method of authentication. In a Camunda Self-Managed cluster, set the configuration property `camunda.tasklist.csrfPreventionEnabled` to `false`. -::: - -Another way to access the Tasklist API in a Self-Managed cluster is to send cookie headers in each request. The cookie can be obtained by using the API endpoint `/api/login`. Take the following steps: - -1. Log in as user 'demo' and store the cookie in the file `cookie.txt`: - -```shell -curl -c cookie.txt -X POST 'http://localhost:8080/api/login?username=demo&password=demo' -``` - -2. Send the cookie (as a header) in each API request. In this case, request all process definitions: - -```shell -curl -b cookie.txt -X POST 'http://localhost:8080/v1/process-definitions/search' -H 'Content-Type: application/json' -d '{}' -``` diff --git a/docs/apis-tools/tasklist-api/tasklist-api-graphql-to-rest-migration.md b/docs/apis-tools/tasklist-api/tasklist-api-graphql-to-rest-migration.md deleted file mode 100644 index 3b17a3ad4f..0000000000 --- a/docs/apis-tools/tasklist-api/tasklist-api-graphql-to-rest-migration.md +++ /dev/null @@ -1,216 +0,0 @@ ---- -id: tasklist-api-graphql-to-rest-migration -title: GraphQL to REST API migration -slug: /apis-tools/tasklist-api/tasklist-api-graphql-to-rest-migration -sidebar_position: 3 -description: "This article provides a guide for developers to migrate from GraphQL to REST API seamlessly." ---- - -We want to provide you with the information you need to successfully migrate from our GraphQL API -to our new REST API version. In this document, we'll explain the differences between the two APIs -and provide guidance on how to make the switch. - -GraphQL has been a popular and valuable tool for many of our customers, but we recognize that there are -certain advantages to using a RESTful architecture. Our new REST API version provides a more structured -and predictable way of accessing our data, which can improve performance and greater reliability. - -It's worth noting that all of our other APIs use REST, so moving to a RESTful architecture will align this API -with the rest of our ecosystem. This will make it easier to maintain and enhance our APIs over time, -as well as providing a more consistent experience for API customers. - -## GraphQL operation to REST API endpoint mapping - -### Queries - -#### Task - -Instead of [task](../tasklist-api/queries/task.mdx) GraphQL query: - -```graphql -# Get one task by id. Returns task or error when task does not exist. -task(id: String!): Task! -``` - -Use the following [get task](../tasklist-api-rest/controllers/tasklist-api-rest-task-controller.md#get-task) endpoint: - -```bash -curl -X 'GET' \ - 'http://{host}/v1/tasks/{taskId}' \ - -H 'accept: application/json' - -H 'Cookie: TASKLIST-SESSION={tasklistSessionId}' -``` - -:::note - -The following fields in REST API response were renamed compared to the equivalent GraphQL response: - -- [`Task.creationTime`](docs/apis-tools/tasklist-api/objects/task.mdx#code-style-fontweight-normal-taskbcreationtimebcodestring--) ⇒ [`TaskResponse.creationDate`](docs/apis-tools/tasklist-api-rest/schemas/responses/task-response.mdx#code-style-fontweight-normal-taskresponsebcreationdatebcodestring-) -- [`Task.completionTime`](docs/apis-tools/tasklist-api/objects/task.mdx#code-style-fontweight-normal-taskbcompletiontimebcodestring-) ⇒ [`TaskResponse.completionDate`](docs/apis-tools/tasklist-api-rest/schemas/responses/task-response.mdx#code-style-fontweight-normal-taskresponsebcompletiondatebcodestring) -- [`Task.processDefinitionId`](docs/apis-tools/tasklist-api/objects/task.mdx#code-style-fontweight-normal-taskbprocessdefinitionidbcodestring-) ⇒ [`TaskResponse.processDefinitionKey`](docs/apis-tools/tasklist-api-rest/schemas/responses/task-response.mdx#code-style-fontweight-normal-taskresponsebprocessdefinitionkeybcodestring) -- [`Task.processInstanceId`](docs/apis-tools/tasklist-api/objects/task.mdx#code-style-fontweight-normal-taskbprocessinstanceidbcodestring-) ⇒ [`TaskResponse.processInstanceKey`](docs/apis-tools/tasklist-api-rest/schemas/responses/task-response.mdx#code-style-fontweight-normal-taskresponsebprocessinstancekeybcodestring) - -::: - -#### Tasks - -Instead of [tasks](../tasklist-api/queries/tasks.mdx) GraphQL query: - -```graphql -# Get list of tasks based on `TaskQuery`. -tasks(query: TaskQuery!): [Task!]! -``` - -Use the following [search tasks](../tasklist-api-rest/controllers/tasklist-api-rest-task-controller.md#search-tasks) endpoint: - -```bash -curl -X 'POST' \ - 'http://{host}/v1/tasks/search' \ - -H 'accept: application/json' \ - -H 'Content-Type: application/json' \ - -H 'Cookie: TASKLIST-SESSION={tasklistSessionId}' \ - -d '{ - "state": "CREATED", - "assigned": true -}' -``` - -:::note - -Please note that several field names in request body and response were changed in REST API comparing to the equivalent GraphQL input/response models, in order to improve the consistency and clarity of our API: - -- in request body: - - - [`TaskQuery.processDefinitionId`](docs/apis-tools/tasklist-api/inputs/task-query.mdx#code-style-fontweight-normal-taskquerybprocessdefinitionidbcodestring-) ⇒ [`TaskSearchRequest.processDefinitionKey`](docs/apis-tools/tasklist-api-rest/schemas/requests/task-search-request.mdx#code-style-fontweight-normal-tasksearchrequestbprocessdefinitionkeybcodestring) - - [`TaskQuery.processInstanceId`](docs/apis-tools/tasklist-api/inputs/task-query.mdx#code-style-fontweight-normal-taskquerybprocessinstanceidbcodestring-) ⇒ [`TaskSearchRequest.processInstanceKey`](docs/apis-tools/tasklist-api-rest/schemas/requests/task-search-request.mdx#code-style-fontweight-normal-tasksearchrequestbprocessinstancekeybcodestring) - -- in response: - - [`Task.creationTime`](docs/apis-tools/tasklist-api/objects/task.mdx#code-style-fontweight-normal-taskbcreationtimebcodestring--) ⇒ [`TaskSearchResponse.creationDate`](docs/apis-tools/tasklist-api-rest/schemas/responses/task-search-response.mdx#code-style-fontweight-normal-tasksearchresponsebcreationdatebcodestring-) - - [`Task.completionTime`](docs/apis-tools/tasklist-api/objects/task.mdx#code-style-fontweight-normal-taskbcompletiontimebcodestring-) ⇒ [`TaskSearchResponse.completionDate`](docs/apis-tools/tasklist-api-rest/schemas/responses/task-search-response.mdx#code-style-fontweight-normal-tasksearchresponsebcompletiondatebcodestring) - - [`Task.processDefinitionId`](docs/apis-tools/tasklist-api/objects/task.mdx#code-style-fontweight-normal-taskbprocessdefinitionidbcodestring-) ⇒ [`TaskSearchResponse.processDefinitionKey`](docs/apis-tools/tasklist-api-rest/schemas/responses/task-search-response.mdx#code-style-fontweight-normal-tasksearchresponsebprocessdefinitionkeybcodestring) - - [`Task.processInstanceId`](docs/apis-tools/tasklist-api/objects/task.mdx#code-style-fontweight-normal-taskbprocessinstanceidbcodestring-) ⇒ [`TaskSearchResponse.processInstanceKey`](docs/apis-tools/tasklist-api-rest/schemas/responses/task-search-response.mdx#code-style-fontweight-normal-tasksearchresponsebprocessinstancekeybcodestring) - -::: - -#### Variable - -Instead of [variable](../tasklist-api/queries/variable.mdx) GraphQL query: - -```graphql -# Get the variables by variable id -variable(id: String!): Variable! -``` - -Use the following [get variable](../tasklist-api-rest/controllers/tasklist-api-rest-variables-controller.md#get-variable) endpoint: - -```bash -curl -X 'GET' \ - 'http://{host}/v1/variables/{variableId}' \ - -H 'accept: application/json' \ - -H 'Cookie: TASKLIST-SESSION={tasklistSessionId}' -``` - -#### Variables - -Instead of [variables](../tasklist-api/queries/variables.mdx) GraphQL query: - -```graphql -# Get a collection of Variables by name -variables(taskId: String!, variableNames: [String!]!): [Variable!]! -``` - -Use the following [search task variables](../tasklist-api-rest/controllers/tasklist-api-rest-task-controller.md#search-task-variables) endpoint: - -```bash -curl -X 'POST' \ - 'http://{host}/v1/tasks/{taskId}/variables/search' \ - -H 'accept: application/json' \ - -H 'Cookie: TASKLIST-SESSION={tasklistSessionId}' \ - -d '{ - "variableNames": [ - "varA", "varB" - ] - }' -``` - -#### Form - -Instead of [form](../tasklist-api/queries/form.mdx) GraphQL query: - -```graphql -# Get task form by formId and processDefinitionId -form(id: String!, processDefinitionId: String!): Form -``` - -Use the following [get form](../tasklist-api-rest/controllers/tasklist-api-rest-form-controller.md#get-form) endpoint: - -```bash -curl -X 'GET' \ - 'http://{host}/v1/forms/{formId}?processDefinitionKey={processDefinitionKey}' \ - -H 'accept: application/json' \ - -H 'Cookie: TASKLIST-SESSION={tasklistSessionId}' -``` - -:::note - -Note that `processDefinitionKey` query parameter in HTTP request represents the same value as [`form.processDefinitionId`](docs/apis-tools/tasklist-api/queries/form.mdx#code-style-fontweight-normal-formbprocessdefinitionidbcodestring--), -and in REST API response [`FormResponse.processDefinitionKey`](docs/apis-tools/tasklist-api-rest/schemas/responses/form-response.mdx#code-style-fontweight-normal-formresponsebprocessdefinitionkeybcodestring-) field -is the renamed equivalent of [`Form.processDefinitionId`](docs/apis-tools/tasklist-api/objects/form.mdx#code-style-fontweight-normal-formbprocessdefinitionidbcodestring--). - -::: - -### Mutations - -#### Claim task - -Instead of [claimTasks](../tasklist-api/mutations/claim-task.mdx) GraphQL mutation: - -```graphql -# Claim a task with `taskId` to `assignee`. Returns the task. -claimTask(taskId: String!, assignee: String, allowOverrideAssignment: Boolean): Task! -``` - -Use the following [assign task](../tasklist-api-rest/controllers/tasklist-api-rest-task-controller.md#assign-task) endpoint: - -```bash -curl -X 'PATCH' \ - 'http://{host}/v1/tasks/{taskId}/assign' \ - -H 'accept: application/json' \ - -H 'Content-Type: application/json' \ - -H 'Cookie: TASKLIST-SESSION={tasklistSessionId}' -``` - -#### Unclaim task - -Instead of [unclaimTasks](../tasklist-api/mutations/unclaim-task.mdx) GraphQL mutation: - -```graphql -# Unclaim a task with taskId. Returns the task. -unclaimTask(taskId: String!): Task! -``` - -Use the following [unassign task](../tasklist-api-rest/controllers/tasklist-api-rest-task-controller.md#unassign-task) endpoint: - -```bash -curl -X 'PATCH' \ - 'http://{host}/v1/tasks/{taskId}/unassign' \ - -H 'accept: application/json' \ - -H 'Cookie: TASKLIST-SESSION={tasklistSessionId}' -``` - -#### Complete task - -Instead of [completeTasks](../tasklist-api/mutations/complete-task.mdx) GraphQL mutation: - -```graphql -# Complete a task with taskId and optional variables. Returns the task. -completeTask(taskId: String!, variables: [VariableInput!]!): Task! -``` - -Use the following [complete task](../tasklist-api-rest/controllers/tasklist-api-rest-task-controller.md#complete-task) endpoint: - -```bash -curl -X 'PATCH' \ - 'http://{host}/v1/tasks/{taskId}/complete' \ - -H 'accept: application/json' \ - -H 'Cookie: TASKLIST-SESSION={tasklistSessionId}' -``` diff --git a/docs/apis-tools/tasklist-api/tasklist-api-overview.md b/docs/apis-tools/tasklist-api/tasklist-api-overview.md deleted file mode 100644 index 7f3eaf0586..0000000000 --- a/docs/apis-tools/tasklist-api/tasklist-api-overview.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -id: tasklist-api-overview -title: Overview -slug: /apis-tools/tasklist-api/tasklist-api-overview -sidebar_position: 1 -description: "Build apps powered by BPMN that require human interaction, and make requests." ---- - -Learn the basics on how to consume the Tasklist GraphQL API. Read more about how to build a real world application [here](../tasklist-api-tutorial). Be sure to [authenticate to use the Tasklist API](./tasklist-api-authentication.md). - -:::info -The GraphQL API is deprecated. To ensure a smooth transition, we'll continue to support our GraphQL API for a period of time, giving you an opportunity to migrate to the new REST API version at your own pace. - -Review the [Tasklist REST API](../tasklist-api-rest/tasklist-api-rest-overview.md). The REST API offers more functionality than the GraphQL API, and a more streamlined and efficient way of interacting with our service. -::: - -## Endpoint - -Tasklist provides a GraphQL API at endpoint `/graphql`. - -From Camunda 8 the endpoint is `${base-url}/graphql`. - -For SaaS: `https://${REGION}.tasklist.camunda.io:443/${CLUSTER_ID}/graphql`, and for Self-Managed installations: `http://localhost:8080/graphql`. - -## Obtaining the Tasklist schema - -To obtain the Tasklist GraphQL schema, visit the API collection in [GitHub](https://github.com/camunda-community-hub/camunda-8-api-postman-collection), which is fully functioning in [Postman](https://www.postman.com/camundateam/workspace/camunda-8-postman/collection/20317927-6394943f-b57c-4c04-acf9-391a8614103b?action=share&creator=11465105). - -Alternatively, send a request to the endpoint with a GraphQL introspection query as described [here](https://graphql.org/learn/introspection/), or use the [generated API documentation](/apis-tools/tasklist-api/generated.md). - -There are also several [tools to explore GraphQL APIs](https://altair.sirmuel.design). - -For example, you want to know about provided types: - -```graphql -query { - __schema { - queryType { - fields { - name - type { - kind - ofType { - kind - name - } - } - } - } - } -} -``` - -## Example requests and responses - -### Get all task names - -_Request:_ - -```graphql -{ - tasks(query: {}) { - name - } -} -``` - -_Response:_ - -```json -{ - "data": { - "tasks": [ - { - "name": "Check payment" - }, - { - "name": "Register the passenger" - } - ] - } -} -``` - -### Get all tasks completed with id, name, and state - -_Request:_ - -```graphql -{ - tasks(query: { state: COMPLETED }) { - id - name - taskState - } -} -``` - -_Response:_ - -```json -{ - "data": { - "tasks": [ - { - "id": "2251799813685728", - "name": "Check payment", - "taskState": "COMPLETED" - } - ] - } -} -``` diff --git a/docs/apis-tools/tasklist-api/tasklist-api-tutorial.md b/docs/apis-tools/tasklist-api/tasklist-api-tutorial.md deleted file mode 100644 index 3dad8bb79c..0000000000 --- a/docs/apis-tools/tasklist-api/tasklist-api-tutorial.md +++ /dev/null @@ -1,342 +0,0 @@ ---- -id: tasklist-api-tutorial -title: Tutorial -slug: /apis-tools/tasklist-api/tasklist-api-tutorial -sidebar_position: 2 -description: "Let's implement an application using the Tasklist API." ---- - -## Building an application using the Tasklist API and NestJS - -The Tasklist API provides a simple way for you to build apps powered by BPMN that require human interaction. - -With this example, we'll use NestJS (one of the most popular Node.js backend frameworks) to a build a loan request review application. - -## Getting started - -For this tutorial we'll need: - -- Node v14+ -- The [NestJS CLI](https://docs.nestjs.com/cli/overview) tool. Install it by running `npm install -g @nestjs/cli`. -- [A cluster on Camunda 8](../../components/console/manage-clusters/create-cluster.md) -- [A set of API credentials; remember to check the Tasklist option when creating them](../../components/console/manage-clusters/manage-api-clients.md). Don't forget to save these, we'll need them later. -- [A clone of this repo](https://github.com/camunda-community-hub/camunda-cloud-tasklist-api-nestjs) - -## Before moving forward - -If you have all the prerequisites from the getting started section above, you will have cloned a repo with the complete demo application we're going to build over this tutorial. The default branch in this repo has the complete application, so we need to `checkout` to the branch `0-getting-started` before proceeding. - -Inside the repo folder, you'll find some files and two folders, one of these folders is called `demo-data/` and the other `frontend/`. As it might be evident inside each of these folders, there are two different projects. - -The former will be responsible by deploying the demo process into Zeebe and generating instances for that process. The latter is a front-end application that will consume our API; this project is bootstrapped with [Vite](https://vitejs.dev), [bulma](https://bulma.io) for styling, and [react-query](https://react-query.tanstack.com) - -## Creating a new NestJS application - -Now let's bootstrap our NestJS app. Take the following steps: - -1. Open your terminal and go to the cloned repository folder. -2. Run `nest new api`. -3. Pick `yarn` as a package manager. - -This will create the NestJS project for us inside the `api/` folder. We can clean up the project a bit and remove the files `api/app.controller.spec.ts`, `api/app.controller.ts`, and `api/app.service.ts`. - -We can also remove the references from the deleted files in `api/app.module.ts`. The file should look like this: - -```ts -import { Module } from "@nestjs/common"; - -@Module({ - imports: [], - controllers: [], - providers: [], -}) -export class AppModule {} -``` - -To check if everything is working as expected, run `yarn workspace api run start:dev` from the root folder on your terminal. You will observe a message similar to the one below: - -```sh -[00:00:00 AM] Starting compilation in watch mode... -[00:00:00 AM] Found 0 errors. Watching for file changes. -[Nest] 46621 - 00/00/0000, 00:00:00 AM LOG [NestFactory] Starting Nest application... -[Nest] 46621 - 00/00/0000, 00:00:00 AM LOG [InstanceLoader] AppModule dependencies initialized +12ms -[Nest] 46621 - 00/00/0000, 00:00:00 AM LOG [NestApplication] Nest application successfully started +3ms -``` - -## Generating the Tasklist service - -Inside the `api/` folder we'll need to generate a service that will be responsible for accessing the Tasklist API. Take the following steps: - -1. Run `nest g service`. -2. You'll be prompted to pick a name for the service, let's pick `tasklist`. -3. Run `yarn add @nestjs/axios`. - -A folder called `tasklist/` will be created with the service definition and test; you can delete the tests if you wish. We also installed the package `@nestjs/axios`, so we can make requests to the Tasklist API. -To make HTTP requests we need to inject the module into the service, like below: - -```ts -import { Injectable } from "@nestjs/common"; -import { HttpService } from "@nestjs/axios"; - -@Injectable() -export class TasklistService { - constructor(private readonly http: HttpService) {} -} -``` - -Now, we're ready to make requests to the API. First, let's define a Data Transfer Object (DTO) with the shape of the tasks we're going to request. For that, we can create a file in `tasklist/dto/task.dto.ts`. There, we can define the DTO as follows: - -```ts -type Variable = { - name: string; - value: string; -}; - -export class TaskDto { - id: string; - name: string; - processName: string; - creationTime: string; - completionTime: string | null; - assignee: string | null; - variables: Variable[]; - taskState: "CREATED" | "COMPLETED" | "CANCELED"; - sortValues: [string, string]; - isFirst: boolean | null; - formKey: string | null; - processDefinitionId: string; - taskDefinitionId: string; -} -``` - -We can implement the requests. For this, we need to define the Tasklist API query and define the methods on the service: - -```ts -import { HttpService } from "@nestjs/axios"; -import { Injectable } from "@nestjs/common"; -import { firstValueFrom } from "rxjs"; -import { TaskDto } from "./dto/task.dto"; - -const getTasksQuery = ` - query GetTasks($state: TaskState $pageSize: Int $searchAfter: [String!] $searchBefore: [String!] $taskDefinitionId: String!) { - tasks(query: { state: $state pageSize: $pageSize searchAfter: $searchAfter searchBefore: $searchBefore taskDefinitionId: $taskDefinitionId }) { - id - creationTime - variables { - value - name - } - taskState - isFirst - sortValues - } - } -`; - -type QueryVariables = { - pageSize?: number; - searchAfter?: [string, string]; - searchBefore?: [string, string]; - state?: "CREATED" | "COMPLETED"; - taskDefinitionId?: string; -}; - -@Injectable() -export class TasklistService { - constructor(private readonly http: HttpService) {} - - async getTasks(variables: QueryVariables): Promise { - const { http } = this; - const { errors, data } = ( - await firstValueFrom( - http.post("/", { - /* - for simplicity we just used Axios here, but since the Tasklist API is a GraphQL API - a package like `graphql-request` might be better suited for this - */ - query: getTasksQuery, - variables, - }) - ) - ).data; - - if (errors) { - // handle error - } - - return data.tasks; - } -} -``` - -To keep things concise, we have one query and one method here. To observe the complete implementation, review [this file](https://github.com/camunda-community-hub/camunda-cloud-tasklist-api-nestjs/blob/2-generating-tasklist-service/api/src/tasklist/tasklist.service.ts). - -## Handling the Tasklist API authentication - -We have the implementation of our service, but we still can't make requests to the Tasklist API because we're not providing any credentials to the API. - -To achieve this, we need to rename the file `.env.example` to `.env` (the file needs to be on the root because we'll reuse it to generate the demo data), and the content of this file must look like this: - -```sh -ZEEBE_ADDRESS=".bru-2.zeebe.camunda.io:443" -ZEEBE_CLIENT_ID="k2FKt_PNMrRUFQO-QOR9MtCygvGsT.sm" -ZEEBE_CLIENT_SECRET="C-o5WFhvoZKv4-oQGHWg~d2MObjdr-GUv3cdqRS3~6fCoHaLleEEwnOqRToQvWda" -ZEEBE_AUTHORIZATION_SERVER_URL="https://login.cloud.camunda.io/oauth/token" -TASKLIST_API_ADDRESS="https://bru-2.tasklist.camunda.io//graphql" -ZEEBE_AUTHORIZATION_AUDIENCE="tasklist.camunda.io" -``` - -You can find all this information on the **API** tab of the cluster page. The client id and secret must be on the file you downloaded in the getting started section. - -Now that we have our credentials, we can authenticate and inject the JWT token into every request we make into Tasklist API. - -For this, we need to turn our Tasklist service into part of a module. Run `nest g module` and name it `tasklist`, the same we named the service. This will generate the module file and update `app.module.ts`. -We need to edit the `app.module.ts` file to use only the module: - -```ts -import { Module } from "@nestjs/common"; -import { TasklistModule } from "./tasklist/tasklist.module"; - -@Module({ - imports: [TasklistModule], - controllers: [], - providers: [], -}) -export class AppModule {} -``` - -We can install the package `@nestjs/config` and finally implement the authentication: - -```ts -import { Logger, Module, OnModuleInit } from "@nestjs/common"; -import { ConfigModule, ConfigService } from "@nestjs/config"; -import { HttpModule, HttpService } from "@nestjs/axios"; -import { TasklistService } from "./tasklist.service"; -import { firstValueFrom, map } from "rxjs"; - -type AuthResponse = { - access_token: string; - scope: string; - expires_in: number; - token_type: string; -}; - -@Module({ - imports: [ - HttpModule, - ConfigModule.forRoot({ - envFilePath: "../.env", - }), - ], - providers: [TasklistService], - exports: [TasklistService, HttpModule, ConfigModule], -}) -export class TasklistModule implements OnModuleInit { - logger = new Logger(TasklistModule.name); - - constructor( - private readonly http: HttpService, - private readonly config: ConfigService - ) {} - - public async onModuleInit() { - const { - http: { axiosRef }, - config, - logger, - } = this; - const credentials = await this.fetchCredentials(); - - logger.log("Tasklist credentials fetched"); - - axiosRef.defaults.baseURL = config.get("TASKLIST_API_ADDRESS"); - axiosRef.defaults.headers[ - "Authorization" - ] = `Bearer ${credentials.access_token}`; - axiosRef.defaults.headers["Content-Type"] = "application/json"; - setTimeout(this.onModuleInit.bind(this), credentials.expires_in * 1000); // we need convert minutes to milliseconds - } - - private async fetchCredentials() { - const { http, config } = this; - - return firstValueFrom( - http - .post(config.get("ZEEBE_AUTHORIZATION_SERVER_URL"), { - client_id: config.get("ZEEBE_CLIENT_ID"), - client_secret: config.get("ZEEBE_CLIENT_SECRET"), - audience: config.get("ZEEBE_AUTHORIZATION_AUDIENCE"), - grant_type: "client_credentials", - }) - .pipe(map((response) => response.data)) - ); - } -} -``` - -When this module is initialized, we can read the credentials using the `@nestjs/config` package, authenticate into the API, and inject the JWT into Axios. We also set a timeout to request a new token when the first one expires. - -## Creating your application API - -We're now able to implement our actual business logic, but first we need to install some packages to create our custom GraphQL API. - -Run `yarn add @nestjs/graphql graphql apollo-server-express`. - -We'll have to generate a module, a service, and a resource. To achieve this, run the following commands: - -```sh -nest g module -nest g service -nest g resource -``` - -Use the name `loanRequests` for all options. For the resource generation, select the option `GraphQL (code first)` and you don't have to generate the CRUD entry points. - -We can now change our `app.module.ts` file to its final form: - -```ts -import { Module } from "@nestjs/common"; -import { GraphQLModule } from "@nestjs/graphql"; -import { LoanRequestsModule } from "./loan-requests/loan-requests.module"; - -@Module({ - imports: [ - GraphQLModule.forRoot({ - autoSchemaFile: true, - playground: true, - }), - LoanRequestsModule, - ], -}) -export class AppModule {} -``` - -And the `loan-requests/loan-requests.module.ts` to: - -```ts -import { Module } from "@nestjs/common"; -import { LoanRequestsService } from "./loan-requests.service"; -import { TasklistModule } from "src/tasklist/tasklist.module"; -import { LoanRequestsResolver } from "./loan-requests.resolver"; - -@Module({ - imports: [TasklistModule], - providers: [LoanRequestsResolver, LoanRequestsService], - exports: [LoanRequestsService, TasklistModule], -}) -export class LoanRequestsModule {} -``` - -We just need to implement the service, which will have three methods (one to get all requests, one to get a single request, and one to make a decision.) - -We will also have four resolvers for the GraphQL API (two mutations and two queries). - -Find the full implementation [here](https://github.com/camunda-community-hub/camunda-cloud-tasklist-api-nestjs/tree/4-application/api/src/loan-requests). - -You can run `yarn start:dev` inside the `api/` folder and the NestJS app should start without errors. - -To test your API, you can access `localhost:3000/graphl` on your browser and should refer to our custom GraphQL API playground. - -## Demo data generation and sample frontend - -To test our app with a real frontend, we can change the port inside `api/main.ts` to `6000`. Then, run from the root folder `yarn start:demo-data` to start the backend, frontend, and demo data generation, or just `yarn start` if you don't need any new data. diff --git a/docs/apis-tools/tasklist-api/unions/_category_.yml b/docs/apis-tools/tasklist-api/unions/_category_.yml deleted file mode 100644 index f6c8705b50..0000000000 --- a/docs/apis-tools/tasklist-api/unions/_category_.yml +++ /dev/null @@ -1 +0,0 @@ -label: "Unions" diff --git a/docs/reference/announcements.md b/docs/reference/announcements.md index adbeb28643..3ec50b84fd 100644 --- a/docs/reference/announcements.md +++ b/docs/reference/announcements.md @@ -10,6 +10,10 @@ Release date: TBD End of maintenance: TBD +### Tasklist GraphQL API removal + +The deprecated Tasklist GraphQL API was removed. Customers who did not yet migrate can use [Camunda 8 REST API](/apis-tools/camunda-api-rest/camunda-api-rest-overview.md) for User Task interactions (both management and querying). + ### Southeast Asia now available for SaaS customers SaaS customers can now create orchestration clusters in the [Singapore (asia-southeast1) region](/reference/regions.md), ensuring lower latency and improved processing speed for organizations operating in southeast Asian countries. diff --git a/sidebars.js b/sidebars.js index b11ff2ab3c..ed5c8c5d96 100644 --- a/sidebars.js +++ b/sidebars.js @@ -805,7 +805,6 @@ module.exports = { require("./docs/apis-tools/zeebe-api/sidebar-schema"), { Deprecated: [ - require("./docs/apis-tools/tasklist-api/sidebar-schema"), require("./docs/apis-tools/zeebe-api-rest/sidebar-schema"), ], },