Copy a folder
Changed onCreates a new folder by copying a source folder (template_id) into a target project. By default only the folder shell is copied; enable the copy_* flags to duplicate its task lists, tasks, and their details.
Required: name, template_id (the source folder), and project_id.
Copy flags
Copying cascades through levels: enable copy_task_lists to bring over the folder's task lists, then copy_open_tasks / copy_closed_tasks to bring over their tasks, then the per-task flags to bring over task details. All copy_* flags default to false.
| Flag(s) | Prerequisite | Notes |
|---|---|---|
| copy_task_lists | — | The "task lists" gate |
| copy_open_tasks, copy_closed_tasks | copy_task_lists | The "tasks" gate |
| copy_task_comments, copy_task_description, copy_task_subscribers, copy_task_attachments | copy_open_tasks or copy_closed_tasks | — |
| copy_task_open_todos, copy_task_closed_todos | copy_open_tasks or copy_closed_tasks | — |
| copy_task_open_subtasks, copy_task_closed_subtasks | copy_open_tasks or copy_closed_tasks | — |
| copy_task_dependencies | copy_open_tasks or copy_closed_tasks | — |
| copy_assignees, copy_tags, copy_date, copy_repeat, copy_estimate | copy_open_tasks or copy_closed_tasks | — |
| copy_custom_fields | copy_open_tasks or copy_closed_tasks | Task custom field values |
Enabling tasks without copy_task_lists returns 422 (task_lists_required); enabling any per-task flag without a tasks gate returns 422 (tasks_required).
Minimal copy (shell only)
{
"data": {
"type": "folders",
"attributes": {
"name": "Design (copy)",
"template_id": 88440,
"project_id": 31002
}
}
}
Full copy with task lists and tasks
{
"data": {
"type": "folders",
"attributes": {
"name": "Design (copy)",
"template_id": 88440,
"project_id": 31002,
"copy_task_lists": true,
"copy_open_tasks": true,
"copy_task_comments": true,
"copy_task_description": true,
"copy_task_subscribers": true,
"copy_task_attachments": true,
"copy_task_open_todos": true,
"copy_task_open_subtasks": true,
"copy_task_dependencies": true,
"copy_assignees": true,
"copy_tags": true,
"copy_date": true,
"copy_repeat": true,
"copy_estimate": true,
"copy_custom_fields": true
}
}
}
Request
- Base URLhttps://developer.productive.io (the document declares no server; this is the origin it was published from)
- URLhttps://developer.productive.io/api/v2/folders/copy
- Authnone declared
Request body
Example request
{
"data": {
"type": "folders",
"attributes": {
"name": "Design (copy)",
"template_id": 88440,
"project_id": 31002
}
}
}Response
A single folder resource response.
Example response
{
"data": {
"id": "5522",
"type": "folders",
"attributes": {
"name": "Features",
"position": 1,
"placement": 1000000,
"archived_at": null,
"hidden": false
},
"relationships": {
"project": {
"data": {
"type": "projects",
"id": "6899"
}
}
}
},
"included": []
}Changes
- warning
added the new
bad_decimal_formatenum value to the//response property for the response status - warning
added the new
non_finite_numberenum value to the//response property for the response status - warning
added the new
null_bytes_in_paramsenum value to the//response property for the response status - info
added the non-success response with the status
- info
added the non-success response with the status
- info
added the non-success response with the status
- info
added the non-success response with the status
- info
added the non-success response with the status
- info
added the non-success response with the status
- info
added the non-success response with the status
- info
added the non-success response with the status
- info
added the non-success response with the status
- warning
- breaking
the
//response's property type changed fromstringto no type, and format fromdate-timeto no format for status - breaking
the
//response's property type changed fromintegerto no type for status - breaking
the
//response's property type changed fromintegerto no type for status - warning
deleted the
headerrequest parameterX-Organization-Id - info
added to the
//response propertyanyOflist for the response status - info
added to the
//response propertyanyOflist for the response status - info
added
subschema #2to the//response propertyanyOflist for the response status - info
added
subschema #2to the//response propertyanyOflist for the response status - info
added
subschema #2to the//response propertyanyOflist for the response status - info
removed
subschema #1: Single datafrom the//response propertyanyOflist for the response status - info
removed
subschema #1: Single datafrom the//response propertyanyOflist for the response status - info
the response property
////became required for the status - info
the response property
/////became required for the status - info
the response property
////became required for the status - info
the response property
/////became required for the status
This list may be incomplete.
- breaking