{"openapi":"3.0.1","info":{"title":"Tasks","description":"Bluestone TASKS API\n <b><h1>Deprecated endpoints:</h1></b><table border=\"1px;\"><tr><th style=\"text-align: center; vertical-align: middle;\"><b><h3>Uri</b></h3></th><th><b>Method</b></th><th><b><h3>Since</h3></b></th><th><b><h3>End of life</h3></b></th></tr></table>","version":"1-core"},"servers":[{"url":"api.test.bluestonepim.com/tasks"}],"tags":[{"name":"Technical","description":"To get technical information."},{"name":"Task comments","description":"To interact with task comments."},{"name":"Tasks reminders","description":"To interact with task reminders."},{"name":"Tasks","description":"To interact with tasks."},{"name":"User tasks","description":"To interact with User Tasks."}],"paths":{"/technical/version":{"get":{"tags":["Technical"],"summary":"Show service version.","operationId":"presentVersion","responses":{"200":{"description":"Show service version."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}]}},"/comments/{taskId}":{"get":{"tags":["Task comments"],"summary":"List all comments with replies for given task.","description":"Fails with the same permission-denied error whether the task does not exist or you simply lack comment access to it — the response does not distinguish the two. To add a new comment use POST /comments/{taskId}; to reply to a specific comment use POST /comments/{taskId}/{commentId}.","operationId":"listAllTaskComments","parameters":[{"name":"taskId","in":"path","description":"Id of the task to list all its comments.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Request processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskComment"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"COMMENT"},{"module":"TASKS","accessType":"COMMENT_PRIVATE"}]},"post":{"tags":["Task comments"],"summary":"Add a comment for given task","description":"Creates a new top-level comment on the task; use POST /comments/{taskId}/{commentId} instead to reply to an existing comment. Fails with the same permission-denied error whether the task does not exist or you simply lack comment access to it. Returns the created comment's id, which can be used as the commentId when replying to it.","operationId":"addTaskComment","parameters":[{"name":"taskId","in":"path","description":"Id of the task to add the comment.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddCommentRequest"}}}},"responses":{"201":{"description":"Request processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddCommentResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"COMMENT"},{"module":"TASKS","accessType":"COMMENT_PRIVATE"}]}},"/comments/{taskId}/{commentId}":{"post":{"tags":["Task comments"],"summary":"Add a comment reply for given task comment.","operationId":"addTaskCommentReply","parameters":[{"name":"taskId","in":"path","description":"Id of the task to add a comment reply.","required":true,"schema":{"type":"string"}},{"name":"commentId","in":"path","description":"Id of the comment to add reply to.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddCommentReplyRequest"}}}},"responses":{"201":{"description":"Request processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddCommentReplyResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"COMMENT"},{"module":"TASKS","accessType":"COMMENT_PRIVATE"}]}},"/tasks/reminders/task/{taskId}":{"get":{"tags":["Tasks reminders"],"summary":"Get reminders for task.","operationId":"getReminderConfig","parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Request processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskReminderListResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}]},"post":{"tags":["Tasks reminders"],"summary":"Create reminder for task (max 5 allowed per task).","operationId":"createTasksReminderConfig","parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskReminderRequest"}}},"required":true},"responses":{"201":{"description":"Request processed."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}]}},"/tasks/reminders/{reminderId}":{"put":{"tags":["Tasks reminders"],"summary":"Update reminder config.","operationId":"updateReminderConfig","parameters":[{"name":"reminderId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskReminderRequest"}}},"required":true},"responses":{"202":{"description":"Request processed."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}]},"delete":{"tags":["Tasks reminders"],"summary":"Delete reminder config.","operationId":"deleteReminderConfig","parameters":[{"name":"reminderId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Request processed."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}]}},"/tasks/{taskId}/products":{"post":{"tags":["Tasks"],"summary":"Assign products to task.","description":"Associates one or more existing products with the task so they show up in its product scope; products already associated with the task are silently skipped rather than causing an error. Fails entirely, with no partial assignment, if any requested product id does not exist in the organization's product catalog. To remove a product from the task instead, use DELETE /tasks/{taskId}/products/{productId}; to mark a product done or not done within the task without removing it, use the complete/revoke endpoints.","operationId":"assignProducts","parameters":[{"name":"taskId","in":"path","description":"Id of the task to which product is to be assigned.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignProductToTaskRequest"}}}},"responses":{"202":{"description":"Products assigned to task."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"UPDATE"},{"module":"TASKS","accessType":"UPDATE_PRIVATE"}]}},"/tasks/{taskId}/assign":{"put":{"tags":["Tasks"],"summary":"Assign task.","description":"Reassigns an existing task to a different user or user group; use POST /tasks to set the initial assignee when creating a task. Callable by the task's creator, its current assignee, or a user holding the assign permission. Fails if the target assignee (or user group) does not exist in the organization, or if the task itself does not exist.","operationId":"assignTask","parameters":[{"name":"taskId","in":"path","description":"Id of the task to assign.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignTaskRequest"}}}},"responses":{"202":{"description":"Task assigned."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"ASSIGN"},{"module":"TASKS","accessType":"ASSIGN_PRIVATE"}]}},"/tasks/{taskId}/products/{productId}/complete":{"put":{"tags":["Tasks"],"summary":"Complete product in scope of a task.","description":"Marks a product that is already assigned to the task as completed; use PUT /tasks/{taskId}/products/{productId}/revoke to undo this. Fails if the product is not currently associated with the task — assign it first via POST /tasks/{taskId}/products. Callable by the task's creator, its assignee, or a user holding the complete permission.","operationId":"completeTaskProduct","parameters":[{"name":"taskId","in":"path","description":"Id of the task to update product state.","required":true,"schema":{"type":"string"}},{"name":"productId","in":"path","description":"Id of the product to mark as completed.","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Product marked as completed in task scope."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"COMPLETE"},{"module":"TASKS","accessType":"COMPLETE_PRIVATE"}]}},"/tasks":{"get":{"tags":["Tasks"],"summary":"List all tasks for organization.","operationId":"listTasks","parameters":[{"name":"productId","in":"query","description":"Product id.","schema":{"type":"string"}},{"name":"context","in":"query","description":"Context of a task.","schema":{"type":"string"}},{"name":"sortField","in":"query","description":"Sort by field.","schema":{"type":"string","default":"TITLE","enum":["TITLE","DUE_DATE"]}},{"name":"sortDirection","in":"query","description":"Sort direction.","schema":{"type":"string","default":"ASC","enum":["ASC","DESC"]}},{"name":"page","in":"query","schema":{"title":"A number sequence representing a block of items to return as a result set.","type":"integer","format":"int32","default":0}},{"name":"pageSize","in":"query","schema":{"title":"Size of a block of items to return. It corresponds with the page parameter.","type":"integer","format":"int32","default":1000}}],"responses":{"200":{"description":"List of tasks.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListablePresentableGridTask"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"This response indicates that the requested resource could not be found on the server. It typically occurs when no resource matches the requested URI, or the resource identifier used in the request does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"READ"},{"module":"TASKS","accessType":"READ_PRIVATE"}]},"post":{"tags":["Tasks"],"summary":"Create new task.","description":"Use to create a brand-new task. To modify an existing task's title, description, due date, or context use PUT /tasks/{taskId}; to reassign it use PUT /tasks/{taskId}/assign instead.","operationId":"createTask","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskRequest"}}}},"responses":{"201":{"description":"Task created.","headers":{"Location":{"description":" Location URI (Uniform Resource Identifier). This field is the URI of the newly created resource.\n","schema":{"type":"string"}},"Resource-Id":{"description":"  Entity ID. The unique ID of the newly created resource.\n","schema":{"type":"string"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"This response indicates that the requested resource could not be found on the server. It typically occurs when no resource matches the requested URI, or the resource identifier used in the request does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"ADD"}]}},"/tasks/{taskId}/products/{productId}":{"delete":{"tags":["Tasks"],"summary":"Delete product from task scope.","description":"Removes the product-task association entirely, dropping the product out of the task's scope; use the complete/revoke endpoints instead if you only want to change its completion status without removing it. Fails if the product is not currently associated with the task, or if you are neither the task's creator nor hold the update permission — note that, unlike completing a product, the task's assignee alone cannot remove products.","operationId":"deleteTaskProduct","parameters":[{"name":"taskId","in":"path","description":"Id of the task to remove product from.","required":true,"schema":{"type":"string"}},{"name":"productId","in":"path","description":"Id of the product to remove from task.","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Product removed from scope of the task."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"UPDATE"},{"module":"TASKS","accessType":"UPDATE_PRIVATE"}]}},"/tasks/users/{userId}/{taskType}":{"get":{"tags":["Tasks"],"summary":"List all/archived/assigned/created tasks for user.","operationId":"fetchTasks","parameters":[{"name":"page","in":"query","schema":{"title":"A number sequence representing a block of items to return as a result set.","type":"integer","format":"int32","default":0}},{"name":"pageSize","in":"query","schema":{"title":"Size of a block of items to return. It corresponds with the page parameter.","type":"integer","format":"int32","default":1000}},{"name":"userId","in":"path","description":"User id","required":true,"schema":{"type":"string"}},{"name":"taskType","in":"path","required":true,"schema":{"$ref":"#/components/schemas/taskType"}}],"responses":{"200":{"description":"Request processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListablePresentableGridTask"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"READ"},{"module":"TASKS","accessType":"READ_PRIVATE"}]}},"/tasks/userGroups/{userGroupId}/{taskType}":{"get":{"tags":["Tasks"],"summary":"List all/archived/assigned tasks for user group.","operationId":"fetchTasksForUserGroup","parameters":[{"name":"page","in":"query","schema":{"title":"A number sequence representing a block of items to return as a result set.","type":"integer","format":"int32","default":0}},{"name":"pageSize","in":"query","schema":{"title":"Size of a block of items to return. It corresponds with the page parameter.","type":"integer","format":"int32","default":1000}},{"name":"userGroupId","in":"path","description":"User group id","required":true,"schema":{"type":"string"}},{"name":"taskType","in":"path","required":true,"schema":{"$ref":"#/components/schemas/taskType"}}],"responses":{"200":{"description":"Request processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListablePresentableGridTask"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"READ"},{"module":"TASKS","accessType":"READ_PRIVATE"}]}},"/tasks/{taskId}":{"get":{"tags":["Tasks"],"summary":"Get single task by id.","operationId":"getSingleTask","parameters":[{"name":"taskId","in":"path","description":"Id of the task to get.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Single task presented.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresentableTaskResponse"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"READ"},{"module":"TASKS","accessType":"READ_PRIVATE"}]},"put":{"tags":["Tasks"],"summary":"Update task data.","description":"Modifies an existing task's title, description, due date, or context. This is a partial update: any field left blank or omitted keeps its current value rather than being cleared. Fails if the task does not exist, or if you are neither its creator nor hold the update permission — the task's assignee alone cannot update it; use PUT /tasks/{taskId}/assign to reassign it, or the product/complete endpoints to progress it instead.","operationId":"updateTask","parameters":[{"name":"taskId","in":"path","description":"Id of the task to update.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTaskRequest"}}}},"responses":{"202":{"description":"Task updated."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"UPDATE"},{"module":"TASKS","accessType":"UPDATE_PRIVATE"}]}},"/tasks/archived":{"get":{"tags":["Tasks"],"summary":"List archived tasks for organization.","operationId":"listArchivedTasksV2","parameters":[{"name":"page","in":"query","schema":{"title":"A number sequence representing a block of items to return as a result set.","type":"integer","format":"int32","default":0}},{"name":"pageSize","in":"query","schema":{"title":"Size of a block of items to return. It corresponds with the page parameter.","type":"integer","format":"int32","default":1000}}],"responses":{"200":{"description":"List of archived tasks.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListablePresentableGridTask"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"READ"},{"module":"TASKS","accessType":"READ_PRIVATE"}]}},"/tasks/folders":{"get":{"tags":["Tasks"],"summary":"List folders of tasks for user.","operationId":"listFolders","responses":{"200":{"description":"List of folders of tasks.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresentableFoldersList"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"READ"},{"module":"TASKS","accessType":"READ_PRIVATE"}]}},"/tasks/{taskId}/products/{productId}/revoke":{"put":{"tags":["Tasks"],"summary":"Mark product as incomplete in scope of a task.","operationId":"revokeTaskProduct","parameters":[{"name":"taskId","in":"path","description":"Id of the task to update product state.","required":true,"schema":{"type":"string"}},{"name":"productId","in":"path","description":"Id of the product to mark as incomplete.","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Product marked as incomplete in scope of a task."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"COMPLETE"},{"module":"TASKS","accessType":"COMPLETE_PRIVATE"}]}},"/userTasks/{taskId}/complete":{"put":{"tags":["User tasks"],"summary":"Complete task by id of logged in user.","description":"Marks the entire task as done. This differs from PUT /tasks/{taskId}/products/{productId}/complete, which completes a single product within the task's scope — the task itself stays open until this endpoint is called directly, regardless of how many of its products are done. Use PUT /userTasks/{taskId}/revoke to undo. Fails if the task does not exist, or if you are neither its creator nor its assignee and lack the complete permission.","operationId":"completeUserTask","parameters":[{"name":"taskId","in":"path","description":"Id of the task to complete.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Task completed."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"COMPLETE"},{"module":"TASKS","accessType":"COMPLETE_PRIVATE"}]}},"/userTasks":{"get":{"tags":["User tasks"],"summary":"Get tasks of logged in user.","operationId":"getAllUserTasks","parameters":[{"name":"page","in":"query","schema":{"title":"A number sequence representing a block of items to return as a result set.","type":"integer","format":"int32","default":0}},{"name":"pageSize","in":"query","schema":{"title":"Size of a block of items to return. It corresponds with the page parameter.","type":"integer","format":"int32","default":1000}}],"responses":{"200":{"description":"List of tasks for logged user.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListablePresentableGridTask"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"READ"},{"module":"TASKS","accessType":"READ_PRIVATE"}]}},"/userTasks/assigned":{"get":{"tags":["User tasks"],"summary":"Get tasks assigned to logged in user.","operationId":"getAssignedUserTasks","parameters":[{"name":"page","in":"query","schema":{"title":"A number sequence representing a block of items to return as a result set.","type":"integer","format":"int32","default":0}},{"name":"pageSize","in":"query","schema":{"title":"Size of a block of items to return. It corresponds with the page parameter.","type":"integer","format":"int32","default":1000}}],"responses":{"200":{"description":"Tasks assigned to the user returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListablePresentableGridTask"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"READ"},{"module":"TASKS","accessType":"READ_PRIVATE"}]}},"/userTasks/{taskId}":{"get":{"tags":["User tasks"],"summary":"Get task by id of logged in user.","operationId":"getUserTask","parameters":[{"name":"taskId","in":"path","description":"Id of the task to show details.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"User task with given id presented.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresentableTask"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"READ"},{"module":"TASKS","accessType":"READ_PRIVATE"}]}},"/userTasks/{taskId}/important":{"put":{"tags":["User tasks"],"summary":"Set task as important by id of logged in user.","operationId":"setImportantUserTask","parameters":[{"name":"taskId","in":"path","description":"Id of the task to set important.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Task set to important."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"READ"},{"module":"TASKS","accessType":"READ_PRIVATE"}]}},"/userTasks/{taskId}/unimportant":{"put":{"tags":["User tasks"],"summary":"Set task as unimportant by id of logged in user.","operationId":"setUnimportantUserTask","parameters":[{"name":"taskId","in":"path","description":"Id of the task to set to unimportant.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Task set to unimportant."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}]}},"/userTasks/{taskId}/revoke":{"put":{"tags":["User tasks"],"summary":"Revoke task by id of logged in user.","operationId":"uncompleteUserTask","parameters":[{"name":"taskId","in":"path","description":"Id of the task to revoke.","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"Task revoked."},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oauth2":[]}],"x-bluestone-permission":[{"module":"TASKS","accessType":"COMPLETE"},{"module":"TASKS","accessType":"COMPLETE_PRIVATE"}]}}},"components":{"schemas":{"ErrorResponse":{"type":"object","properties":{"status":{"title":"Error status code.","type":"integer","format":"int32"},"error":{"title":"General error description.","type":"string"},"errorDetails":{"title":"List of errors details.","type":"array","items":{"$ref":"#/components/schemas/ErrorDetails"}},"requestId":{"title":"Request ID used for logging.","type":"string"},"timestamp":{"title":"Error timestamp.","type":"integer","format":"int64"},"quotaLimitExceededDetails":{"title":"Additional entity id list related to error","type":"array","items":{"$ref":"#/components/schemas/QuotaLimitExceededDetails"}}}},"ErrorDetails":{"type":"object","properties":{"message":{"title":"Error message.","type":"string"},"field":{"title":"Error related field.","type":"string"},"rejectedValue":{"title":"Invalid value causing error.","type":"string"}}},"QuotaLimitExceededDetails":{"type":"object","properties":{"quota":{"title":"Quota name.","type":"string"},"message":{"title":"Quota limit message.","type":"string"},"limit":{"title":"Quota limit.","type":"integer","format":"int32"}}},"AddCommentResponse":{"type":"object","properties":{"id":{"title":"Id of added comment.","type":"string"},"message":{"title":"Comment message.","type":"string"},"userId":{"title":"User id of comment author.","type":"string"},"createdAt":{"title":"Comment create epoch timestamp.","type":"integer","format":"int64"}}},"AddCommentRequest":{"type":"object","properties":{"message":{"title":"Task comment's message.","type":"string"}}},"AddCommentReplyResponse":{"type":"object","properties":{"id":{"title":"Id of added comment.","type":"string"},"parentId":{"title":"Id of added comment.","type":"string"},"message":{"title":"Comment message.","type":"string"},"userId":{"title":"User id of comment author.","type":"string"},"createdAt":{"title":"Comment create epoch timestamp.","type":"integer","format":"int64"}}},"AddCommentReplyRequest":{"type":"object","properties":{"message":{"title":"Task comment's reply message.","type":"string"}}},"CommentReply":{"title":"List of comment replies.","type":"object","properties":{"message":{"title":"Comment reply message.","type":"string"},"id":{"title":"An identifier randomly generated by service. ID is unique across all entity.","type":"string"},"userId":{"title":"User identifier.","type":"string"},"createdAt":{"title":"Comment reply created at date.","type":"integer","format":"int64"},"parentId":{"title":"Comment's parent id.","type":"string"},"updatedAt":{"title":"Comment reply updated at date.","type":"integer","format":"int64"}}},"TaskComment":{"type":"object","properties":{"message":{"title":"Task message.","type":"string"},"id":{"title":"An identifier randomly generated by service. ID is unique across all entity name.","type":"string"},"userId":{"title":"User identifier.","type":"string"},"createdAt":{"title":"Task created at date.","type":"integer","format":"int64"},"updatedAt":{"title":"Task updated at date.","type":"integer","format":"int64"},"replies":{"title":"List of comment replies.","type":"array","items":{"$ref":"#/components/schemas/CommentReply"}}}},"CreateTaskReminderRequest":{"type":"object","properties":{"remindBeforeTime":{"title":"Hours before duedate to send reminder.","minimum":1,"type":"integer","format":"int32"}}},"TaskReminderListResponse":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TaskReminderResponse"}}}},"TaskReminderResponse":{"type":"object","properties":{"id":{"title":"An identifier randomly generated by service. ID is unique across all entity.","type":"string"},"taskId":{"title":"Task identifier.","type":"string"},"reminderTime":{"title":"Task reminder time.","type":"integer","format":"int32"}}},"AssignProductToTaskRequest":{"required":["productIds"],"type":"object","properties":{"productIds":{"title":"Array of Ids of products to assign to the task.","type":"array","items":{"title":"Array of Ids of products to assign to the task.","type":"string"}}}},"AssignTaskRequest":{"type":"object","properties":{"assignee":{"title":"Id of the user (or user group, if assigneeType is 'userGroup') to assign the task to.","type":"string"},"assigneeType":{"title":"Type of the assignee id above (default: user).","type":"string","enum":["user","userGroup"]}}},"CreateTaskRequest":{"required":["assignee","dueDate","title"],"type":"object","properties":{"title":{"title":"Task title.","minLength":1,"type":"string"},"description":{"title":"Task description.","type":"string"},"assignee":{"title":"Id of the user or user group to assign the task to.","minLength":1,"type":"string"},"assigneeType":{"title":"Type of the assignee id above (default: user).","type":"string","enum":["user","userGroup"]},"dueDate":{"title":"Task due date, as an ISO-8601 offset date-time, e.g. 2026-07-06T10:00:00+02:00.","minLength":1,"type":"string"},"context":{"title":"Id of an existing organization translation context (language) to associate the task with; fails if the id does not match a known context.","type":"string"},"isPrivate":{"title":"When true, the task is visible and editable only by its creator, assignee, and users holding the *_PRIVATE permission variant, instead of the standard permission holders.","type":"boolean"},"assigneeReminderTime":{"title":"Hours before the due date to send a reminder notification to the assignee; omit for no reminder.","minimum":1,"type":"integer","format":"int32"},"creatorReminderTime":{"title":"Hours before the due date to send a reminder notification to the creator; omit for no reminder.","minimum":1,"type":"integer","format":"int32"}}},"ListablePresentableGridTask":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PresentableGridTask"}}}},"PresentableGridTask":{"type":"object","properties":{"id":{"title":"Unique task identifier.","type":"string"},"title":{"title":"Task title.","type":"string"},"status":{"title":"Task status.","type":"string"},"assignee":{"title":"Name of the user or user group assigned to task.","type":"string"},"assigneeType":{"title":"Assignee type.","type":"string"},"context":{"title":"Task context.","type":"string"},"creator":{"title":"Name of the user who created the task.","type":"string"},"dueDate":{"title":"Task due date.","type":"string"},"isPrivate":{"title":"Is task private flag.","type":"boolean"},"numberOfProducts":{"title":"Number of products in the task.","type":"integer","format":"int32"},"numberOfDoneProducts":{"title":"Number of completed products in the task.","type":"integer","format":"int32"},"importantForCurrentUser":{"title":"Flag indicating whether the task is important for the current user.","type":"boolean"}}},"taskType":{"type":"string","description":"Type of task to present: all, archived, assigned.","enum":["all","archived","assigned","created"]},"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"integer","format":"int32"},"errorMsg":{"type":"string"}}},"PresentableProductForTask":{"title":"List of products associated with the task.","type":"object","properties":{"productId":{"title":"Product identifier.","type":"string"},"isDone":{"title":"Is task done flag.","type":"boolean"}}},"PresentableTask":{"type":"object","properties":{"id":{"title":"Unique task identifier.","type":"string"},"title":{"title":"Task title.","type":"string"},"description":{"title":"Task description.","type":"string"},"status":{"title":"Task status.","type":"string"},"creator":{"title":"Name of the user who created the task.","type":"string"},"assignee":{"title":"Name of the user or user group assigned to task.","type":"string"},"assigneeType":{"title":"Assignee type.","type":"string"},"context":{"title":"Task context.","type":"string"},"productsList":{"title":"List of products associated with the task.","type":"array","items":{"$ref":"#/components/schemas/PresentableProductForTask"}},"dueDate":{"title":"Task due date.","type":"string"},"creationDate":{"title":"Task creation date.","type":"string"},"isPrivate":{"title":"Is task private flag.","type":"boolean"},"numberOfProducts":{"title":"Number of products in the task.","type":"integer","format":"int32"},"numberOfDoneProducts":{"title":"Number of completed products in the task.","type":"integer","format":"int32"},"importantForCurrentUser":{"title":"Flag indicating whether the task is important for the current user.","type":"boolean"}}},"PresentableTaskResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PresentableTask"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/ErrorMessage"}},"code":{"type":"integer","format":"int32"}}},"PresentableFoldersList":{"type":"object","properties":{"numberOfAllTasks":{"type":"integer","format":"int64"},"numberOfUserTasks":{"type":"integer","format":"int64"}}},"UpdateTaskRequest":{"type":"object","properties":{"title":{"title":"New title for the task.","type":"string"},"description":{"title":"New description for the task.","type":"string"},"dueDate":{"title":"New due date for the task, as an ISO-8601 offset date-time, e.g. 2026-07-06T10:00:00+02:00; values that fail to parse are silently ignored rather than failing the request.","type":"string"},"context":{"title":"Id of the translation context (language) to associate the task with.","type":"string"}}}},"securitySchemes":{"oauth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://idp.test.bluestonepim.com/op/token","scopes":{"openid profile systemRoles permissions organization email name nickname":"All needed scopes."}}}}}},"x-amazon-apigateway-api-key-source":"AUTHORIZER"}