diff --git a/fern/apis/v1/generators.yml b/fern/apis/v1/generators.yml
index 45f345c..466375b 100644
--- a/fern/apis/v1/generators.yml
+++ b/fern/apis/v1/generators.yml
@@ -1,7 +1,7 @@
api:
specs:
- openapi: openapi/openapi.json
- origin: https://cdn.awork.com/assets/awork-openapi-v1-develop.json?cacheBust=1789240490
+ origin: https://app.awork.com/openapi/v1
settings:
title-as-schema-name: true
type-dates-as-strings: true
diff --git a/fern/apis/v1/openapi/openapi.json b/fern/apis/v1/openapi/openapi.json
index 73c63ee..369cbf3 100644
--- a/fern/apis/v1/openapi/openapi.json
+++ b/fern/apis/v1/openapi/openapi.json
@@ -14,7 +14,7 @@
"servers": [
{
"url": "https://api.awork.com/api/v1",
- "description": "awork"
+ "description": "awork Production"
}
],
"paths": {
@@ -23,8 +23,8 @@
"tags": [
"AbsenceRegions"
],
- "summary": "Gets all absence regions.",
- "description": "The user must be admin or have `user-planning-data:write` permissions to see the users assigned to the absence regions.",
+ "summary": "Returns all absence regions.",
+ "description": "Returns all absence regions with their public holiday details.\r\n The user must be an admin or have `user-planning-data:write` permission to see users assigned to absence regions.",
"operationId": "GetAbsenceRegions",
"responses": {
"200": {
@@ -59,8 +59,8 @@
"tags": [
"AbsenceRegions"
],
- "summary": "Creates a new absence region.",
- "description": "An absence region is defined by an ISO 3166-1 alpha-2 country code and a location code.\r\n There can be multiple absence regions for a country, but only one absence region for a country and location (no duplicates).\r\n\r\nThis endpoint requires the `Standard` plan or higher.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
+ "summary": "Creates an absence region.",
+ "description": "Creates an absence region for an ISO 3166-1 alpha-2 country and location. Names must be unique. Marking the new region as default clears the previous default region. This operation requires a Standard workspace plan or higher.\r\n\r\nThis endpoint requires the `Standard` plan or higher.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
"operationId": "PostAbsenceRegion",
"requestBody": {
"description": "The model to create the absence region.",
@@ -119,8 +119,8 @@
"tags": [
"AbsenceRegions"
],
- "summary": "List of supported countries for absence regions.",
- "description": "Returns a list of supported countries for absence regions.\r\n A country is defined by an ISO 3166-1 alpha-2 country code.\r\n\r\nAny authenticated user.",
+ "summary": "Returns supported absence region countries.",
+ "description": "Returns the supported countries and their ISO 3166-1 alpha-2 codes for absence regions.\r\n\r\nAny authenticated user.",
"operationId": "GetAbsenceRegionsCountries",
"responses": {
"200": {
@@ -157,8 +157,8 @@
"tags": [
"AbsenceRegions"
],
- "summary": "List of locations for a country.",
- "description": "Returns a list of all the locations of a country, expressed as ISO 3166-2 codes.\r\n It will include the regions and subregions (sublocations) of the country if available.\r\n\r\nAny authenticated user.",
+ "summary": "Returns locations for the specified country.",
+ "description": "Returns the country's locations as ISO 3166-2 codes, including regions and subregions when available. An unsupported country code returns not found.\r\n\r\nAny authenticated user.",
"operationId": "GetAbsenceRegionsCountryLocationsByCountryCode",
"parameters": [
{
@@ -216,8 +216,8 @@
"tags": [
"AbsenceRegions"
],
- "summary": "Assign/remove current user to/from an absence region.",
- "description": "Assigns or removes the current user to/from an absence region.\r\n A user can be assigned to only one absence region.\r\n If a user is already assigned to an absence region, they will be removed from the previous one and assigned to the new one.\r\n Providing a null region id will remove the user from any absence region.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
+ "summary": "Sets the current user's absence region.",
+ "description": "Sets the current user's absence region. A user can have only one region; assigning a new region replaces the previous one. A null region id removes the current assignment.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
"operationId": "PostMeAbsenceRegionsAssign",
"requestBody": {
"description": "The model to assign or unassign the current user to/from an absence region.",
@@ -274,8 +274,8 @@
"tags": [
"AbsenceRegions"
],
- "summary": "Assign/remove current user to/from an absence region.",
- "description": "Assigns or removes the current user to/from an absence region.\r\n A user can be assigned to only one absence region.\r\n If a user is already assigned to an absence region, they will be removed from the previous one and assigned to the new one.\r\n Providing a null region id will remove the user from any absence region.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
+ "summary": "Sets the current user's absence region.",
+ "description": "Sets the current user's absence region. A user can have only one region; assigning a new region replaces the previous one. A null region id removes the current assignment.\r\n This endpoint is deprecated; use the POST endpoint instead.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
"operationId": "PutMeAbsenceRegionsAssign",
"requestBody": {
"description": "The model to assign or unassign the current user to/from an absence region.",
@@ -335,8 +335,8 @@
"tags": [
"AbsenceRegions"
],
- "summary": "Assigns or unassigns users to/from an absence region.",
- "description": "A user can be assigned to only one absence region.\r\n If a user is already assigned to an absence region, they will be removed from the previous one and assigned to the new one.\r\n Providing an empty list of user ids will remove all users from the absence region.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
+ "summary": "Sets users for an absence region.",
+ "description": "Sets the users assigned to an absence region. A user can belong to only one region, so assigning a user here removes any previous assignment. An empty user list removes all assignments.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
"operationId": "PostAbsenceRegionsUsersAssign",
"requestBody": {
"description": "The model to assign or unassign users to/from an absence region.",
@@ -393,8 +393,8 @@
"tags": [
"AbsenceRegions"
],
- "summary": "Assigns or unassigns users to/from an absence region.",
- "description": "A user can be assigned to only one absence region.\r\n If a user is already assigned to an absence region, they will be removed from the previous one and assigned to the new one.\r\n Providing an empty list of user ids will remove all users from the absence region.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
+ "summary": "Sets users for an absence region.",
+ "description": "Sets the users assigned to an absence region. A user can belong to only one region, so assigning a user here removes any previous assignment. An empty user list removes all assignments.\r\n This endpoint is deprecated; use the POST endpoint instead.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
"operationId": "PutAbsenceRegionsUsersAssign",
"requestBody": {
"description": "The model to assign or unassign users to/from an absence region.",
@@ -454,8 +454,8 @@
"tags": [
"AbsenceRegions"
],
- "summary": "Deletes an absence region.",
- "description": "Deletes an absence region by id, unassigning all users from the absence region.\r\n If there are workspace absences related to the region, they will be deleted as well.\r\n If the absence region is the default absence region, it will simply be deleted (no default absence region).\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
+ "summary": "Deletes the specified absence region.",
+ "description": "Deletes the specified absence region, unassigns its users, and deletes related workspace absences. Deleting the default region leaves the workspace without a default region.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
"operationId": "DeleteAbsenceRegionById",
"parameters": [
{
@@ -503,8 +503,8 @@
"tags": [
"AbsenceRegions"
],
- "summary": "Get an absence region by id.",
- "description": "The absence region will include the details of the public holidays for the country and location.\r\n The user must be admin or have `user-planning-data:write` permissions to see the users assigned to the absence region.",
+ "summary": "Returns the specified absence region.",
+ "description": "Returns the absence region with public holiday details for its country and location.\r\n The user must be an admin or have `user-planning-data:write` permission to see users assigned to the absence region.",
"operationId": "GetAbsenceRegionById",
"parameters": [
{
@@ -558,8 +558,8 @@
"tags": [
"AbsenceRegions"
],
- "summary": "Updates an absence region.",
- "description": "\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
+ "summary": "Updates the specified absence region.",
+ "description": "Updates the region name, country, location, or default status. Names must remain unique, and marking this region as default clears the previous default region.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
"operationId": "PutAbsenceRegionById",
"parameters": [
{
@@ -638,7 +638,7 @@
"Absences"
],
"summary": "Returns all absences.",
- "description": "Admin or user planning data permissions are required,\r\n otherwise only the absences of the current user are returned.\r\n\r\nAny authenticated user.",
+ "description": "Returns workspace absences visible to the current user.\r\n The user must be an admin or have `user-planning-data:read` permission to view other users' absences.",
"operationId": "GetAbsences",
"parameters": [
{
@@ -688,7 +688,7 @@
"Absences"
],
"summary": "Creates an absence.",
- "description": "The startOn and endOn get rounded to 00:00:00, 12:00:00, or 23:59:59 in UTC.\r\n These values can be used to set a half-day (pre or post mid-day) absence, or absences that start or end at mid-day.\r\n The end date needs to be the same or after the start date.\r\n \r\n User planning data permissions are required if the calling user is not the owner of the absence or admin.",
+ "description": "Creates an absence with dates rounded to 00:00:00, 12:00:00, or 23:59:59 UTC to support full-day and half-day periods. The end date must be the same as or later than the start date, and overlapping absences are rejected unless the provider allows them.\r\n \r\n The user must own the absence, be an admin, or have `user-planning-data:write` permission.",
"operationId": "PostAbsence",
"requestBody": {
"description": "The model to create the absence.",
@@ -753,8 +753,8 @@
"tags": [
"Absences"
],
- "summary": "Deletes the absence with the specified id.",
- "description": "User planning data permissions are required if the calling user is not the owner of the absence or admin.",
+ "summary": "Deletes the specified absence.",
+ "description": "Deletes the specified absence unless it is managed by an external provider. Web and mobile requests cannot delete externally managed absences.\r\n The user must own the absence, be an admin, or have `user-planning-data:delete` permission.",
"operationId": "DeleteAbsenceById",
"parameters": [
{
@@ -801,8 +801,8 @@
"tags": [
"Absences"
],
- "summary": "Returns the absence with the specified id.",
- "description": "User planning data permissions are required if the calling user\r\n is not the owner of the absence or admin.",
+ "summary": "Returns the specified absence.",
+ "description": "Returns the specified absence when it is visible to the current user.\r\n The user must own the absence, be an admin, or have `user-planning-data:read` permission.",
"operationId": "GetAbsenceById",
"parameters": [
{
@@ -856,8 +856,8 @@
"tags": [
"Absences"
],
- "summary": "Updates the absence with the specified id.",
- "description": "The startOn and endOn get rounded to 00:00:00, 12:00:00, or 23:59:59 in UTC.\r\n These values can be used to set a half-day (pre or post mid-day) absence, or absences that start or end at mid-day.\r\n The end date needs to be the same or after the start date.\r\n \r\n User planning data permissions are required if the calling user is not the owner of the absence or admin.",
+ "summary": "Updates the specified absence.",
+ "description": "Updates the specified absence with dates rounded to 00:00:00, 12:00:00, or 23:59:59 UTC to support full-day and half-day periods. The end date must be the same as or later than the start date, and overlapping absences are rejected unless the provider allows them.\r\n \r\n Web and mobile requests cannot update absences managed by an external provider.\r\n The user must own the absence, be an admin, or have `user-planning-data:write` permission.",
"operationId": "PutAbsenceById",
"parameters": [
{
@@ -1099,35 +1099,49 @@
"tags": [
"Accounts"
],
- "summary": "Updates the account with the specified id.",
- "description": "Updates the account with the specified id.\nDoes not update the external account of the user.\nUse the 'accounts/connectToSocialAccount' or 'accounts/disconnectToSocialAccount' endpoints instead.\nIf the email of the account is changed, the email will not be changed immediately but a verification email will be sent to the new email address.\nThe email will only be changed after the user has verified the new email address.\r\n\r\nAny authenticated user.",
- "operationId": "PutAccount",
+ "summary": "Updates the account profile and starts email verification when required.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PutAccountsByAccountId",
"parameters": [
{
"name": "accountId",
"in": "path",
- "description": "The id of the account.",
+ "description": "The accountId value.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
+ },
+ {
+ "name": "skipEmailVerification",
+ "in": "query",
+ "description": "The skipEmailVerification value.",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "name": "sendAdminInitiatedVerificationEmail",
+ "in": "query",
+ "description": "The sendAdminInitiatedVerificationEmail value.",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
}
],
"requestBody": {
- "description": "The model to update the account.",
+ "description": "The model value.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccountForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/AccountForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -1139,6 +1153,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -1156,13 +1200,104 @@
}
}
},
+ "/accounts/{email}/ispasswordvalid": {
+ "post": {
+ "tags": [
+ "Accounts"
+ ],
+ "summary": "Checks a password or passwordless token for the requested account.",
+ "description": "\r\n\r\nThe user must be an admin.",
+ "operationId": "PostAccountsIsPasswordValidByEmail",
+ "parameters": [
+ {
+ "name": "email",
+ "in": "path",
+ "description": "The email value.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "aw-internal-request",
+ "in": "header",
+ "description": "Marks this request as an internal request. Only allowed by the awork app or internally.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "default": "true"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "The password value.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/PasswordForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "boolean"
+ }
+ }
+ }
+ },
+ "204": {
+ "description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true"
+ },
+ "x-internal": true
+ }
+ },
"/agents": {
"get": {
"tags": [
"Custom Agents"
],
"summary": "Returns all custom agents.",
- "description": "Lists custom agents visible to the requesting user in the current workspace, including visible global agents.\r\n Results are ordered by name and include the user's access level for each agent.\r\n Use an agent id from this response to retrieve or update its configuration.\r\n\r\nAny authenticated user.",
+ "description": "Lists custom agents visible to the requesting user in the current workspace, including visible global agents.\r\n Results are ordered by name and include the user's access level for each agent.\r\n Use an agent id from this response to retrieve or update its shared settings.\r\n Read GET /agents/configuration for the current user's selected accounts and connection status.\r\n\r\nAny authenticated user.",
"operationId": "GetAgents",
"responses": {
"200": {
@@ -1248,6 +1383,44 @@
}
}
},
+ "/agents/configuration": {
+ "get": {
+ "tags": [
+ "Custom Agents"
+ ],
+ "summary": "Returns connection configuration for the current user's custom agents.",
+ "description": "Lists the configuration for each custom agent the user can read in the workspace.\r\n Each result contains the linked connector and skill ids, the account selected for each connector,\r\n why that account was selected, and whether it is available.\r\n Uses a saved agent choice, or the enabled awork Agent default when no choice is saved.\r\n An editor-provided account is used when the connector has specificConnection mode.\r\n API-key requests do not inherit awork Agent defaults.\r\n This read does not save or change any choices. An empty list is returned when no agents are visible.\r\n\r\nAny authenticated user.",
+ "operationId": "GetAgentsConfiguration",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/CustomAgentConfigurationResponseModel"
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
"/agents/connectors": {
"get": {
"tags": [
@@ -1304,6 +1477,17 @@
"summary": "Lists the predefined connector presets available to the workspace.",
"description": "Lists predefined connector presets and the OAuth callback URI used for connector setup.\r\n Create connectors in the awork app.\r\n The response describes setup options; it does not create a connector.\r\n\r\nAny authenticated user.",
"operationId": "GetConnectorsPresets",
+ "parameters": [
+ {
+ "name": "includeAdded",
+ "in": "query",
+ "description": "Whether to include providers already added to the workspace for metadata lookup.",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ],
"responses": {
"200": {
"description": "OK",
@@ -1908,32 +2092,36 @@
}
}
},
- "/agents/threads": {
- "post": {
+ "/agents/schedules": {
+ "get": {
"tags": [
- "AgentThreads"
+ "Agent Schedules"
],
- "summary": "Creates a conversation with the awork Agent or a custom agent.",
- "description": "Creates a conversation with the awork Agent or a custom agent and optionally submits the first message.\r\n Supply content or attachments to submit the first message and start processing.\r\n awork Agent threads can be created without a message. Custom Agent threads require text or an attachment.\r\n The response contains the thread and accepted first-message identifiers, not the agent's reply.\r\n See [GET /agents/threads/{threadId}/messages](api:GET/agents/threads/{threadId}/messages) to retrieve replies.\r\n Each request creates a new thread. Retrying after a lost response can create another thread.\r\n\r\nAny authenticated user.",
- "operationId": "PostAgentsThreads",
- "requestBody": {
- "description": "The thread creation payload.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/AiThreadCreateRequestModel"
- }
+ "summary": "Lists project schedules.",
+ "description": "Lists readable schedules directly linked to a project or linked through one of its tasks.\r\n\r\nAny authenticated user.",
+ "operationId": "GetAgentsSchedules",
+ "parameters": [
+ {
+ "name": "projectId",
+ "in": "query",
+ "description": "The required project id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
}
- },
- "required": true
- },
+ }
+ ],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/AiThreadCreatedResponseModel"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/AgentScheduleResponseModel"
+ }
}
}
}
@@ -1948,18 +2136,8 @@
}
}
},
- "401": {
- "description": "Unauthorized",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
- "404": {
- "description": "Not Found",
+ "503": {
+ "description": "Service Unavailable",
"content": {
"application/json": {
"schema": {
@@ -1967,13 +2145,41 @@
}
}
}
- },
- "503": {
- "description": "Service Unavailable",
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/agents/schedules/me": {
+ "get": {
+ "tags": [
+ "Agent Schedules"
+ ],
+ "summary": "Lists owned schedules.",
+ "description": "Lists schedules owned by the requesting user whose active agents remain readable. The overview processes the newest 1,000 owned schedules.\r\n\r\nAny authenticated user.",
+ "operationId": "GetAgentsSchedulesMe",
+ "responses": {
+ "200": {
+ "description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ErrorResponse"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/AgentScheduleResponseModel"
+ }
}
}
}
@@ -1994,24 +2200,26 @@
}
}
},
- "/agents/threads/{threadId}": {
+ "/agents/skills": {
"get": {
"tags": [
- "AgentThreads"
+ "Agent Skills"
],
- "summary": "Gets an agent thread.",
- "description": "Returns details of the specified agent conversation.\r\n Use the thread id returned when creating a conversation. Retrieve its messages separately with [GET /agents/threads/{threadId}/messages](api:GET/agents/threads/{threadId}/messages).\r\n Returns not found if the thread is missing or is not visible to the user.\r\n\r\nAny authenticated user.",
- "operationId": "GetAgentsThreadsByThreadId",
+ "summary": "Lists accessible skills.",
+ "description": "Returns one page of shared skills available to the requesting user. Pages contain at most 1000 skills. Use page and pageSize query parameters; pagination metadata is returned in aw-* headers.\r\n\r\nAny authenticated user.",
+ "operationId": "GetSkills",
"parameters": [
{
- "name": "threadId",
- "in": "path",
- "description": "The id of the thread to retrieve.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
+ "$ref": "#/components/parameters/page"
+ },
+ {
+ "$ref": "#/components/parameters/pageSize"
+ },
+ {
+ "$ref": "#/components/parameters/orderby"
+ },
+ {
+ "$ref": "#/components/parameters/filterby"
}
],
"responses": {
@@ -2020,13 +2228,16 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/AgentThreadResponseModel"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/SkillResponseModel"
+ }
}
}
}
},
- "404": {
- "description": "Not Found",
+ "400": {
+ "description": "Bad Request",
"content": {
"application/json": {
"schema": {
@@ -2049,41 +2260,48 @@
"x-access": {
"any": "true"
}
- }
- },
- "/agents/threads/{threadId}/cancel": {
+ },
"post": {
"tags": [
- "AgentThreads"
+ "Agent Skills"
],
- "summary": "Cancels the active run for the specified agent thread.",
- "description": "Cancels the active run in the specified personal-agent or custom-agent conversation and returns the thread.\r\n A successful cancellation also pauses dispatch of the next queued message.\r\n The user must have permission to contribute to the thread.",
- "operationId": "PostAgentsThreadsCancelByThreadId",
- "parameters": [
- {
- "name": "threadId",
- "in": "path",
- "description": "The thread id.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
+ "summary": "Creates a reusable skill.",
+ "description": "Creates a user-owned skill and enables it when the creator may configure the awork Agent.\r\n\r\nAny authenticated user.",
+ "operationId": "PostSkills",
+ "requestBody": {
+ "description": "The request payload.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CreateSkillRequestModel"
+ }
}
- }
- ],
+ },
+ "required": true
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/AgentThreadResponseModel"
+ "$ref": "#/components/schemas/SkillResponseModel"
}
}
}
},
- "404": {
- "description": "Not Found",
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
@@ -2108,43 +2326,69 @@
}
}
},
- "/agents/threads/{threadId}/files/{fileId}": {
- "get": {
+ "/agents/skills/import": {
+ "post": {
"tags": [
- "Agent Thread Files"
+ "Agent Skills"
],
- "summary": "Returns a file of the specified agent thread.",
- "description": "Returns file metadata for a file attached to the specified agent thread.\r\n Both the thread id and file id must match the attachment. Returns not found if the file is not attached to that thread.\r\n The user must have `read` access to the agent thread.",
- "operationId": "GetAgentsThreadsFilesByThreadIdAndFileId",
+ "summary": "Imports a skill package.",
+ "description": "Imports a skill from an agentskills.io ZIP package or standalone SKILL.md file. Pass agentId to import the skill as private to that agent; omit it to create a reusable skill.\r\n\r\nAny authenticated user.",
+ "operationId": "PostSkillsImport",
"parameters": [
{
- "name": "threadId",
- "in": "path",
- "description": "The agent thread id.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
- "in": "path",
- "description": "The file id.",
- "required": true,
+ "name": "agentId",
+ "in": "query",
+ "description": "The optional owning agent ID.",
"schema": {
"type": "string",
"format": "uuid"
}
}
],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "file": {
+ "type": "string",
+ "description": "An agentskills.io ZIP package or standalone SKILL.md file.",
+ "format": "binary"
+ },
+ "content": {
+ "type": "string",
+ "description": "Standalone SKILL.md content used by agent and MCP callers.",
+ "format": "binary"
+ },
+ "fileName": {
+ "type": "string",
+ "description": "The file name used when content is supplied, for example SKILL.md."
+ }
+ },
+ "description": "Upload either file or content. When content is used, fileName must identify the imported file."
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "$ref": "#/components/schemas/SkillResponseModel"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -2185,70 +2429,64 @@
}
}
},
- "/agents/threads/{threadId}/files/{fileId}/download": {
- "get": {
+ "/agents/skills/secretvalues": {
+ "delete": {
"tags": [
- "Agent Thread Files"
+ "Agent Skills"
],
- "summary": "Returns the content of a file from the specified agent thread.",
- "description": "Returns the binary content of a file attached to the specified agent thread.\nUse the thread id and file id from the attachment metadata. For images, width, height, and crop control resizing.\nThe user must have read access to the agent thread.",
- "operationId": "GetAgentThreadFileContent",
+ "summary": "Deletes a skill secret value.",
+ "description": "Deletes a stored skill secret value. Workspace-scoped values require admin permissions; user-scoped values affect only the requesting user.\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteSkillsSecretValues",
"parameters": [
{
- "name": "threadId",
- "in": "path",
- "description": "The agent thread id.",
+ "name": "envVarName",
+ "in": "query",
+ "description": "The env var name of the value.",
"required": true,
"schema": {
- "type": "string",
- "format": "uuid"
+ "type": "string"
}
},
{
- "name": "fileId",
- "in": "path",
- "description": "The file id.",
+ "name": "scope",
+ "in": "query",
+ "description": "The scope of the value (\"workspace\" or \"user\").",
"required": true,
"schema": {
- "type": "string",
- "format": "uuid"
+ "type": "string"
}
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No Content"
},
- {
- "name": "width",
- "in": "query",
- "description": "The optional image width.",
- "schema": {
- "type": "number",
- "format": "double"
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
}
},
- {
- "name": "height",
- "in": "query",
- "description": "The optional image height.",
- "schema": {
- "type": "number",
- "format": "double"
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
}
},
- {
- "name": "crop",
- "in": "query",
- "description": "Whether to crop the image when resizing it.",
- "schema": {
- "type": "boolean"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
+ "404": {
+ "description": "Not Found",
"content": {
"application/json": {
"schema": {
- "type": "string",
- "format": "binary"
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -2267,28 +2505,14 @@
"x-access": {
"any": "true"
}
- }
- },
- "/agents/threads/{threadId}/messages": {
+ },
"get": {
"tags": [
- "AgentThreads"
- ],
- "summary": "Lists agent thread messages.",
- "description": "Lists messages from the specified personal-agent or custom-agent conversation.\r\n Use this endpoint to retrieve replies after creating a thread or submitting a message.\r\n Returns not found if the thread is missing or the user cannot read it.\r\n\r\nAny authenticated user.",
- "operationId": "GetAgentsThreadsMessagesByThreadId",
- "parameters": [
- {
- "name": "threadId",
- "in": "path",
- "description": "The thread id.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- }
+ "Agent Skills"
],
+ "summary": "Lists skill secret statuses.",
+ "description": "Lists which secrets have saved values for the workspace or the requesting user. The secret values themselves are never returned.\r\n\r\nAny authenticated user.",
+ "operationId": "GetSkillsSecretValues",
"responses": {
"200": {
"description": "OK",
@@ -2297,14 +2521,14 @@
"schema": {
"type": "array",
"items": {
- "$ref": "#/components/schemas/AgentThreadMessageResponseModel"
+ "$ref": "#/components/schemas/SkillSecretValueStatusResponseModel"
}
}
}
}
},
- "404": {
- "description": "Not Found",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
@@ -2328,46 +2552,27 @@
"any": "true"
}
},
- "post": {
+ "put": {
"tags": [
- "AgentThreads"
- ],
- "summary": "Submits a message to an agent conversation.",
- "description": "Submits a new message to an existing agent conversation for processing.\r\n Provide text, attachments, or both. The message starts processing or enters the thread's queue.\r\n The response confirms acceptance; it does not contain the agent's reply.\r\n Read [GET /agents/threads/{threadId}/messages](api:GET/agents/threads/{threadId}/messages) to retrieve replies.\r\n Each request submits a new message. Retrying after a lost response can submit the message again.\r\n Processing is subject to the workspace's AI availability and usage limits.\r\n The user must have permission to contribute to the thread.",
- "operationId": "PostAgentsThreadsMessagesByThreadId",
- "parameters": [
- {
- "name": "threadId",
- "in": "path",
- "description": "The id of the thread to send the message in.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- }
+ "Agent Skills"
],
+ "summary": "Sets a skill secret value.",
+ "description": "Sets a skill secret value. Workspace-scoped values require admin permissions; user-scoped values are stored for the requesting user only.\r\n\r\nAny authenticated user.",
+ "operationId": "PutSkillsSecretValues",
"requestBody": {
- "description": "The model with the content to send to the agent thread.",
+ "description": "The request payload.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/AgentThreadMessageRequestModel"
+ "$ref": "#/components/schemas/SetSkillSecretValueRequestModel"
}
}
},
"required": true
},
"responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/AiThreadMessageAcceptedResponseModel"
- }
- }
- }
+ "204": {
+ "description": "No Content"
},
"400": {
"description": "Bad Request",
@@ -2379,18 +2584,8 @@
}
}
},
- "404": {
- "description": "Not Found",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
- "503": {
- "description": "Service Unavailable",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
@@ -2415,29 +2610,19 @@
}
}
},
- "/agents/threads/{threadId}/messages/{messageId}/status": {
- "get": {
+ "/agents/skills/{skillId}": {
+ "delete": {
"tags": [
- "AgentThreads"
+ "Agent Skills"
],
- "summary": "Gets agent thread message status.",
- "description": "Returns the processing status of a submitted agent thread message, including messages still in the queue.\r\n Use the accepted message id returned by the server when creating a thread or submitting a message.\r\n The response indicates whether an agent response exists and includes its id and error details when available.\r\n Retrieve reply content with [GET /agents/threads/{threadId}/messages](api:GET/agents/threads/{threadId}/messages).\r\n\r\nAny authenticated user.",
- "operationId": "GetAgentsThreadsMessagesStatusByThreadIdAndMessageId",
+ "summary": "Deletes a skill.",
+ "description": "Deletes a shared skill when the caller has manage access.\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteSkillsBySkillId",
"parameters": [
{
- "name": "threadId",
- "in": "path",
- "description": "The id of the thread that contains the message.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "messageId",
+ "name": "skillId",
"in": "path",
- "description": "The accepted message id returned by the server.",
+ "description": "The skill ID.",
"required": true,
"schema": {
"type": "string",
@@ -2446,12 +2631,15 @@
}
],
"responses": {
- "200": {
- "description": "OK",
+ "204": {
+ "description": "No Content"
+ },
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/AiThreadMessageProcessingStatusResponseModel"
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -2480,26 +2668,33 @@
"x-access": {
"any": "true"
}
- }
- },
- "/agents/{agentId}": {
+ },
"get": {
"tags": [
- "Custom Agents"
+ "Agent Skills"
],
- "summary": "Returns the custom agent's configuration.",
- "description": "Returns the specified custom agent's configuration, including the requesting user's access level.\r\n Use this response to inspect the agent's model, prompt, and linked capabilities before working with it.\r\n The user must have read access to the agent.",
- "operationId": "GetAgentsByAgentId",
+ "summary": "Gets an accessible skill.",
+ "description": "Returns one skill when the caller has read access directly or through the optional linked agent.\r\n\r\nAny authenticated user.",
+ "operationId": "GetSkillsBySkillId",
"parameters": [
{
- "name": "agentId",
+ "name": "skillId",
"in": "path",
- "description": "The agent id.",
+ "description": "The skill ID.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
+ },
+ {
+ "name": "agentId",
+ "in": "query",
+ "description": "The optional linked agent through which read access is requested.",
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
}
],
"responses": {
@@ -2508,7 +2703,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/AgentSummaryResponseModel"
+ "$ref": "#/components/schemas/SkillResponseModel"
}
}
}
@@ -2550,16 +2745,16 @@
},
"put": {
"tags": [
- "Custom Agents"
+ "Agent Skills"
],
- "summary": "Updates the custom agent's configuration.",
- "description": "Updates the custom agent's configuration and returns the saved agent.\r\n Saves a new system prompt version if the prompt changes.\r\n The user must have manage access to the agent. Changing workspace sharing also requires permission to contribute to the agent library.",
- "operationId": "PutAgentsByAgentId",
+ "summary": "Updates a skill.",
+ "description": "Updates a shared skill when the caller has manage access.\r\n\r\nAny authenticated user.",
+ "operationId": "PutSkillsBySkillId",
"parameters": [
{
- "name": "agentId",
+ "name": "skillId",
"in": "path",
- "description": "The agent id.",
+ "description": "The skill ID.",
"required": true,
"schema": {
"type": "string",
@@ -2568,11 +2763,11 @@
}
],
"requestBody": {
- "description": "The new agent configuration.",
+ "description": "The request payload.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/UpdateAgentRequestModel"
+ "$ref": "#/components/schemas/UpdateSkillRequestModel"
}
}
},
@@ -2584,7 +2779,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/AgentSummaryResponseModel"
+ "$ref": "#/components/schemas/SkillResponseModel"
}
}
}
@@ -2635,19 +2830,19 @@
}
}
},
- "/agents/{agentId}/connectors/{connectorId}": {
- "delete": {
+ "/agents/skills/{skillId}/export": {
+ "get": {
"tags": [
- "Custom Agents"
+ "Agent Skills"
],
- "summary": "Unlinks a connector from an agent.",
- "description": "Removes the connector link from the specified agent.\r\n Returns no content when the link is removed or is already absent.\r\n The user must have manage access to the agent.",
- "operationId": "DeleteConnectorsByConnectorIdAndAgentId",
+ "summary": "Exports a skill package.",
+ "description": "Exports a skill as an agentskills.io ZIP package containing SKILL.md and bundled files.\r\n\r\nAny authenticated user.",
+ "operationId": "GetSkillsExportBySkillId",
"parameters": [
{
- "name": "agentId",
+ "name": "skillId",
"in": "path",
- "description": "The agent id.",
+ "description": "The skill ID.",
"required": true,
"schema": {
"type": "string",
@@ -2655,10 +2850,9 @@
}
},
{
- "name": "connectorId",
- "in": "path",
- "description": "The connector id.",
- "required": true,
+ "name": "agentId",
+ "in": "query",
+ "description": "The optional linked agent through which read access is requested.",
"schema": {
"type": "string",
"format": "uuid"
@@ -2666,8 +2860,26 @@
}
],
"responses": {
- "204": {
- "description": "No Content"
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/zip": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
},
"401": {
"description": "Unauthorized",
@@ -2703,19 +2915,21 @@
"x-access": {
"any": "true"
}
- },
- "post": {
+ }
+ },
+ "/agents/skills/{skillId}/files": {
+ "delete": {
"tags": [
- "Custom Agents"
+ "Agent Skills"
],
- "summary": "Links a connector to an agent.",
- "description": "Links an existing connector to the specified agent and returns the linked connector.\r\n Use [GET /agents/connectors](#/AgentRuntime/GetConnectors) to find a connector id.\r\n The user must have manage access to the agent.",
- "operationId": "PostConnectorsByConnectorIdAndAgentId",
+ "summary": "Deletes a skill file.",
+ "description": "Deletes one bundled file by its path relative to the skill root.\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteSkillsFilesBySkillId",
"parameters": [
{
- "name": "agentId",
+ "name": "skillId",
"in": "path",
- "description": "The agent id.",
+ "description": "The skill ID.",
"required": true,
"schema": {
"type": "string",
@@ -2723,23 +2937,25 @@
}
},
{
- "name": "connectorId",
- "in": "path",
- "description": "The connector id.",
+ "name": "relativePath",
+ "in": "query",
+ "description": "The path of the file relative to the skill root.",
"required": true,
"schema": {
- "type": "string",
- "format": "uuid"
+ "type": "string"
}
}
],
"responses": {
- "200": {
- "description": "OK",
+ "204": {
+ "description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ConnectorResponseModel"
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -2778,52 +2994,51 @@
"x-access": {
"any": "true"
}
- }
- },
- "/agents/{agentId}/copy": {
- "post": {
+ },
+ "get": {
"tags": [
- "Custom Agents"
+ "Agent Skills"
],
- "summary": "Copies an existing custom agent.",
- "description": "Creates a copy of an existing custom agent in the current workspace.\r\n Provide the new name and optional description in the request body. The source agent supplies the initial configuration and system prompt.\r\n Returns the new agent with its own id.\r\n The user must have read access to the source agent.",
- "operationId": "PostAgentsCopyByAgentId",
+ "summary": "Lists skill files.",
+ "description": "Returns the bundled files for a skill after checking read access directly or through the optional linked agent.\r\n\r\nAny authenticated user.",
+ "operationId": "GetSkillsFilesBySkillId",
"parameters": [
{
- "name": "agentId",
+ "name": "skillId",
"in": "path",
- "description": "The source agent id.",
+ "description": "The skill ID.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
+ },
+ {
+ "name": "agentId",
+ "in": "query",
+ "description": "The optional linked agent through which read access is requested.",
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
}
],
- "requestBody": {
- "description": "The name and description for the copy.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/CopyAgentRequestModel"
- }
- }
- },
- "required": true
- },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/AgentSummaryResponseModel"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/SkillFileResponseModel"
+ }
}
}
}
},
- "400": {
- "description": "Bad Request",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
@@ -2831,65 +3046,13 @@
}
}
}
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- }
- },
- "/agents/{agentId}/files": {
- "get": {
- "tags": [
- "AgentFiles"
- ],
- "summary": "Returns all files of the agent with the specified id.",
- "description": "Returns all file metadata of the agent with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetAgentFiles",
- "parameters": [
- {
- "name": "agentId",
- "in": "path",
- "description": "The id of the agent.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "$ref": "#/components/parameters/page"
},
- {
- "$ref": "#/components/parameters/pageSize"
- },
- {
- "$ref": "#/components/parameters/orderby"
- },
- {
- "$ref": "#/components/parameters/filterby"
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
+ "404": {
+ "description": "Not Found",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/FileInfo"
- }
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -2908,34 +3071,50 @@
"x-access": {
"any": "true"
}
- }
- },
- "/agents/{agentId}/files/byuploadid": {
+ },
"post": {
"tags": [
- "FileUpload"
+ "Agent Skills"
],
- "summary": "Creates a file from an upload id.",
- "description": "After a file has been uploaded to an upload URL generated from the endpoint, this endpoint can be used to create a file agent from the uploaded file by providing the upload id.\r\n\r\nAny authenticated user.",
- "operationId": "PostUploadByUploadId",
+ "summary": "Uploads a skill file.",
+ "description": "Uploads or replaces a bundled file. The relative path defaults to the uploaded file name and can be overridden with the relativePath query parameter, for example scripts/sync.py.\r\n\r\nAny authenticated user.",
+ "operationId": "PostSkillsFilesBySkillId",
"parameters": [
{
- "name": "agentId",
+ "name": "skillId",
"in": "path",
- "description": "The id of the agent to attach the file to.",
+ "description": "The skill ID.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
+ },
+ {
+ "name": "relativePath",
+ "in": "query",
+ "description": "The optional target path relative to the skill root.",
+ "schema": {
+ "type": "string",
+ "default": ""
+ }
}
],
"requestBody": {
- "description": "The model describing the uploaded file metadata.",
"content": {
- "application/json": {
+ "multipart/form-data": {
"schema": {
- "$ref": "#/components/schemas/UploadByUploadIdForm"
+ "required": [
+ "file"
+ ],
+ "type": "object",
+ "properties": {
+ "file": {
+ "type": "string",
+ "description": "The bundled skill file to upload.",
+ "format": "binary"
+ }
+ }
}
}
},
@@ -2947,7 +3126,27 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "$ref": "#/components/schemas/SkillFileResponseModel"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -2978,19 +3177,19 @@
}
}
},
- "/agents/{agentId}/files/{fileId}": {
- "delete": {
+ "/agents/skills/{skillId}/files/download": {
+ "get": {
"tags": [
- "AgentFiles"
+ "Agent Skills"
],
- "summary": "Deletes the agent file with the specified id.",
- "description": "Deletes the metadata and the different versions of the file.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteAgentFile",
+ "summary": "Downloads a skill file.",
+ "description": "Downloads one bundled file by its path relative to the skill root after checking read access.\r\n\r\nAny authenticated user.",
+ "operationId": "GetSkillsFilesDownloadBySkillId",
"parameters": [
{
- "name": "agentId",
+ "name": "skillId",
"in": "path",
- "description": "The id of the agent.",
+ "description": "The skill ID.",
"required": true,
"schema": {
"type": "string",
@@ -2998,10 +3197,18 @@
}
},
{
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
+ "name": "relativePath",
+ "in": "query",
+ "description": "The path of the file relative to the skill root.",
"required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "agentId",
+ "in": "query",
+ "description": "The optional linked agent through which read access is requested.",
"schema": {
"type": "string",
"format": "uuid"
@@ -3009,10 +3216,48 @@
}
],
"responses": {
- "204": {
- "description": "No Content"
- }
- },
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/octet-stream": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
"security": [
{
"oauth2": [
@@ -3028,54 +3273,45 @@
}
}
},
- "/agents/{agentId}/setarchived": {
- "post": {
+ "/agents/skills/{skillId}/secrets": {
+ "get": {
"tags": [
- "Custom Agents"
+ "Agent Skills"
],
- "summary": "Archives or unarchives an agent.",
- "description": "Archives or unarchives the specified custom agent and returns its updated configuration.\r\n Set IsArchived to true to archive the agent, or false to unarchive it.\r\n The user must have manage access to the agent.",
- "operationId": "PostAgentsSetArchivedByAgentId",
+ "summary": "Lists skill secret requirements.",
+ "description": "Lists the secrets a skill needs and whether they are set for the user. Secret values are never returned.\r\n\r\nAny authenticated user.",
+ "operationId": "GetSkillsSecretsBySkillId",
"parameters": [
{
- "name": "agentId",
+ "name": "skillId",
"in": "path",
- "description": "The agent id.",
+ "description": "The skill ID.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
+ },
+ {
+ "name": "agentId",
+ "in": "query",
+ "description": "The optional linked agent through which read access is requested.",
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
}
],
- "requestBody": {
- "description": "Whether to archive or unarchive the agent.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/SetAgentArchivedRequestModel"
- }
- }
- },
- "required": true
- },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/AgentSummaryResponseModel"
- }
- }
- }
- },
- "400": {
- "description": "Bad Request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/SkillSecretRequirementResponseModel"
+ }
}
}
}
@@ -3114,21 +3350,19 @@
"x-access": {
"any": "true"
}
- }
- },
- "/agents/{agentId}/systempromptversions": {
- "get": {
+ },
+ "put": {
"tags": [
- "Custom Agents"
+ "Agent Skills"
],
- "summary": "Lists the agent's saved system prompt versions.",
- "description": "Lists the saved system prompt versions for the specified custom agent.\r\n Use a returned version id with the system prompt restore endpoint to restore an earlier prompt.\r\n The user must have read access to the agent.",
- "operationId": "GetAgentsSystemPromptVersionsByAgentId",
+ "summary": "Updates skill secret requirements.",
+ "description": "Replaces the list of secrets a skill needs and returns the resulting requirements.\r\n\r\nAny authenticated user.",
+ "operationId": "PutSkillsSecretsBySkillId",
"parameters": [
{
- "name": "agentId",
+ "name": "skillId",
"in": "path",
- "description": "The agent id.",
+ "description": "The skill ID.",
"required": true,
"schema": {
"type": "string",
@@ -3136,6 +3370,17 @@
}
}
],
+ "requestBody": {
+ "description": "The request payload.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SetSkillSecretRequirementsRequestModel"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"200": {
"description": "OK",
@@ -3144,12 +3389,22 @@
"schema": {
"type": "array",
"items": {
- "$ref": "#/components/schemas/SystemPromptVersionResponseModel"
+ "$ref": "#/components/schemas/SkillSecretRequirementResponseModel"
}
}
}
}
},
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
"401": {
"description": "Unauthorized",
"content": {
@@ -3186,29 +3441,19 @@
}
}
},
- "/agents/{agentId}/systempromptversions/{systemPromptVersionId}/restore": {
- "post": {
+ "/agents/skills/{skillId}/sharing": {
+ "get": {
"tags": [
- "Custom Agents"
+ "Agent Skills"
],
- "summary": "Restores a previous system prompt version.",
- "description": "Restores a saved system prompt version as the agent's current prompt.\r\n The restore records a new history version and returns that version. Use the system prompt versions endpoint to find a version id.\r\n The user must have manage access to the agent.",
- "operationId": "PostAgentsSystemPromptVersionRestore",
+ "summary": "Gets skill sharing.",
+ "description": "Gets the sharing configuration for a manageable, user-owned skill.\r\n\r\nAny authenticated user.",
+ "operationId": "GetSkillsSharingBySkillId",
"parameters": [
{
- "name": "agentId",
- "in": "path",
- "description": "The agent id.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "systemPromptVersionId",
+ "name": "skillId",
"in": "path",
- "description": "The prompt version id.",
+ "description": "The skill ID.",
"required": true,
"schema": {
"type": "string",
@@ -3222,7 +3467,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/SystemPromptVersionResponseModel"
+ "$ref": "#/components/schemas/SkillSharingResponseModel"
}
}
}
@@ -3261,26 +3506,74 @@
"x-access": {
"any": "true"
}
- }
- },
- "/apiusers": {
- "get": {
+ },
+ "put": {
"tags": [
- "ApiUsers"
+ "Agent Skills"
],
- "summary": "Returns all API users.",
- "description": "Returns all API users.\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
- "operationId": "GetApiUsers",
+ "summary": "Updates skill sharing.",
+ "description": "Replaces the sharing configuration for a manageable, user-owned skill.\r\n\r\nAny authenticated user.",
+ "operationId": "PutSkillsSharingBySkillId",
+ "parameters": [
+ {
+ "name": "skillId",
+ "in": "path",
+ "description": "The skill ID.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "The replacement sharing configuration.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateSkillSharingRequestModel"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ApiUser"
- }
+ "$ref": "#/components/schemas/SkillSharingResponseModel"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -3297,23 +3590,24 @@
"v1"
],
"x-access": {
- "admin": "true",
- "workspace-manage-config": "read"
+ "any": "true"
}
- },
+ }
+ },
+ "/agents/threads": {
"post": {
"tags": [
- "ApiUsers"
+ "AgentThreads"
],
- "summary": "Creates an API user.",
- "description": "Beware: API users will also be returned in the /users response when including\r\n archived users.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
- "operationId": "PostApiUser",
+ "summary": "Creates a conversation with the awork Agent or a custom agent.",
+ "description": "Creates a conversation with the awork Agent or a custom agent and optionally submits the first message.\r\n Supply content or attachments to submit the first message and start processing.\r\n awork Agent threads can be created without a message. Custom Agent threads require text or an attachment.\r\n The response contains the thread and accepted first-message identifiers, not the agent's reply.\r\n See [GET /agents/threads/{threadId}/messages](api:GET/agents/threads/{threadId}/messages) to retrieve replies.\r\n Each request creates a new thread. Retrying after a lost response can create another thread.\r\n\r\nAny authenticated user.",
+ "operationId": "PostAgentsThreads",
"requestBody": {
- "description": "The model to create the API user.",
+ "description": "The thread creation payload.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ApiUserPostForm"
+ "$ref": "#/components/schemas/AiThreadCreateRequestModel"
}
}
},
@@ -3325,7 +3619,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ApiUser"
+ "$ref": "#/components/schemas/AiThreadCreatedResponseModel"
}
}
}
@@ -3340,6 +3634,16 @@
}
}
},
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
"404": {
"description": "Not Found",
"content": {
@@ -3349,6 +3653,16 @@
}
}
}
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -3362,24 +3676,23 @@
"v1"
],
"x-access": {
- "admin": "true",
- "workspace-manage-config": "write"
+ "any": "true"
}
}
},
- "/apiusers/{apiUserId}": {
- "delete": {
+ "/agents/threads/{threadId}": {
+ "get": {
"tags": [
- "ApiUsers"
+ "AgentThreads"
],
- "summary": "Deletes the API user with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
- "operationId": "DeleteApiUserById",
+ "summary": "Gets an agent thread.",
+ "description": "Returns details of the specified agent conversation.\r\n Use the thread id returned when creating a conversation. Retrieve its messages separately with [GET /agents/threads/{threadId}/messages](api:GET/agents/threads/{threadId}/messages).\r\n Returns not found if the thread is missing or is not visible to the user.\r\n\r\nAny authenticated user.",
+ "operationId": "GetAgentsThreadsByThreadId",
"parameters": [
{
- "name": "apiUserId",
+ "name": "threadId",
"in": "path",
- "description": "The id of the API user to delete.",
+ "description": "The id of the thread to retrieve.",
"required": true,
"schema": {
"type": "string",
@@ -3388,8 +3701,15 @@
}
],
"responses": {
- "204": {
- "description": "No Content"
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AgentThreadResponseModel"
+ }
+ }
+ }
},
"404": {
"description": "Not Found",
@@ -3413,22 +3733,23 @@
"v1"
],
"x-access": {
- "admin": "true",
- "workspace-manage-config": "write"
+ "any": "true"
}
- },
- "get": {
+ }
+ },
+ "/agents/threads/{threadId}/cancel": {
+ "post": {
"tags": [
- "ApiUsers"
+ "AgentThreads"
],
- "summary": "Returns the API user with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
- "operationId": "GetApiUserById",
+ "summary": "Cancels the active run for the specified agent thread.",
+ "description": "Cancels the active run in the specified personal-agent or custom-agent conversation and returns the thread.\r\n A successful cancellation also pauses dispatch of the next queued message.\r\n The user must have permission to contribute to the thread.",
+ "operationId": "PostAgentsThreadsCancelByThreadId",
"parameters": [
{
- "name": "apiUserId",
+ "name": "threadId",
"in": "path",
- "description": "The id of the API user.",
+ "description": "The thread id.",
"required": true,
"schema": {
"type": "string",
@@ -3442,7 +3763,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ApiUser"
+ "$ref": "#/components/schemas/AgentThreadResponseModel"
}
}
}
@@ -3469,22 +3790,33 @@
"v1"
],
"x-access": {
- "admin": "true",
- "workspace-manage-config": "read"
+ "any": "true"
}
- },
- "put": {
+ }
+ },
+ "/agents/threads/{threadId}/files/{fileId}": {
+ "get": {
"tags": [
- "ApiUsers"
+ "Agent Thread Files"
],
- "summary": "Updates the API user with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
- "operationId": "PutApiUserById",
+ "summary": "Returns a file of the specified agent thread.",
+ "description": "Returns file metadata for a file attached to the specified agent thread.\r\n Both the thread id and file id must match the attachment. Returns not found if the file is not attached to that thread.\r\n The user must have `read` access to the agent thread.",
+ "operationId": "GetAgentsThreadsFilesByThreadIdAndFileId",
"parameters": [
{
- "name": "apiUserId",
+ "name": "threadId",
"in": "path",
- "description": "The id of the API user to update.",
+ "description": "The agent thread id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "description": "The file id.",
"required": true,
"schema": {
"type": "string",
@@ -3492,30 +3824,19 @@
}
}
],
- "requestBody": {
- "description": "The model to update the API user.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ApiUserForm"
- }
- }
- },
- "required": true
- },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ApiUser"
+ "$ref": "#/components/schemas/FileInfo"
}
}
}
},
- "400": {
- "description": "Bad Request",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
@@ -3546,26 +3867,104 @@
"v1"
],
"x-access": {
- "admin": "true",
- "workspace-manage-config": "write"
+ "any": "true"
}
}
},
- "/automations/catalog": {
+ "/agents/threads/{threadId}/files/{fileId}/download": {
"get": {
"tags": [
- "Project Automations"
+ "Agent Thread Files"
+ ],
+ "summary": "Returns content from a file attached to the specified agent thread.",
+ "description": "Returns the binary content of a file attached to the specified agent thread.\r\n Use the thread id and file id from the attachment metadata. For images, width, height, and crop control resizing.\r\n The user must have read access to the agent thread.",
+ "operationId": "GetAgentsThreadsFilesDownloadByThreadIdAndFileId",
+ "parameters": [
+ {
+ "name": "threadId",
+ "in": "path",
+ "description": "The agent thread id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "description": "The file id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "width",
+ "in": "query",
+ "description": "The optional image width.",
+ "schema": {
+ "type": "number",
+ "format": "double"
+ }
+ },
+ {
+ "name": "height",
+ "in": "query",
+ "description": "The optional image height.",
+ "schema": {
+ "type": "number",
+ "format": "double"
+ }
+ },
+ {
+ "name": "crop",
+ "in": "query",
+ "description": "Whether to crop the image when resizing it.",
+ "schema": {
+ "type": "boolean"
+ }
+ }
],
- "summary": "Returns all supported automation trigger and action types.",
- "description": "\r\n\r\nAny authenticated user.",
- "operationId": "GetAutomationsCatalog",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/AutomationCatalogModel"
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -3586,14 +3985,26 @@
}
}
},
- "/autopilot/availablealerts": {
+ "/agents/threads/{threadId}/messages": {
"get": {
"tags": [
- "Autopilot"
+ "AgentThreads"
+ ],
+ "summary": "Lists agent thread messages.",
+ "description": "Lists messages from the specified personal-agent or custom-agent conversation.\r\n Use this endpoint to retrieve replies after creating a thread or submitting a message.\r\n Returns not found if the thread is missing or the user cannot read it.\r\n\r\nAny authenticated user.",
+ "operationId": "GetAgentsThreadsMessagesByThreadId",
+ "parameters": [
+ {
+ "name": "threadId",
+ "in": "path",
+ "description": "The thread id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
],
- "summary": "Returns all available alerts for autopilots.",
- "description": "\r\n\r\nAny authenticated user.",
- "operationId": "GetAutopilotAvailableAlerts",
"responses": {
"200": {
"description": "OK",
@@ -3602,13 +4013,19 @@
"schema": {
"type": "array",
"items": {
- "type": "string"
+ "$ref": "#/components/schemas/AgentThreadMessageResponseModel"
}
- },
- "example": [
- "behind_schedule",
- "overdue"
- ]
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
}
}
}
@@ -3626,21 +4043,19 @@
"x-access": {
"any": "true"
}
- }
- },
- "/autopilot/{autopilotId}": {
- "get": {
+ },
+ "post": {
"tags": [
- "Autopilot"
+ "AgentThreads"
],
- "summary": "Returns the autopilot with the specified id.",
- "description": "Returns the autopilot including its alerts.\r\n To get the autopilot data the user needs to be the owner of the project or 'read' permissions\r\n of the feature 'project-master-data' globally or in their project role.\r\n\r\nAny authenticated user.",
- "operationId": "GetAutopilotByAutopilotId",
+ "summary": "Submits a message to an agent conversation.",
+ "description": "Submits a new message to an existing agent conversation for processing.\r\n Provide text, attachments, or both. The message starts processing or enters the thread's queue.\r\n The response confirms acceptance; it does not contain the agent's reply.\r\n Read [GET /agents/threads/{threadId}/messages](api:GET/agents/threads/{threadId}/messages) to retrieve replies.\r\n Each request submits a new message. Retrying after a lost response can submit the message again.\r\n Processing is subject to the workspace's AI availability and usage limits.\r\n The user must have permission to contribute to the thread.",
+ "operationId": "PostAgentsThreadsMessagesByThreadId",
"parameters": [
{
- "name": "autopilotId",
+ "name": "threadId",
"in": "path",
- "description": "The id of the autopilot.",
+ "description": "The id of the thread to send the message in.",
"required": true,
"schema": {
"type": "string",
@@ -3648,51 +4063,54 @@
}
}
],
+ "requestBody": {
+ "description": "The model with the content to send to the agent thread.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AgentThreadMessageRequestModel"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Autopilot"
+ "$ref": "#/components/schemas/AiThreadMessageAcceptedResponseModel"
}
}
}
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- }
- },
- "/clientapplications": {
- "get": {
- "tags": [
- "Client Applications"
- ],
- "summary": "Returns all client applications.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
- "operationId": "GetClientApplications",
- "responses": {
- "200": {
- "description": "OK",
+ },
+ "400": {
+ "description": "Bad Request",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ClientApplication"
- }
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -3709,41 +4127,53 @@
"v1"
],
"x-access": {
- "admin": "true",
- "workspace-manage-config": "read"
+ "any": "true"
}
- },
- "post": {
+ }
+ },
+ "/agents/threads/{threadId}/messages/{messageId}/status": {
+ "get": {
"tags": [
- "Client Applications"
+ "AgentThreads"
],
- "summary": "Registers a new client application.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
- "operationId": "PostClientApplications",
- "requestBody": {
- "description": "The client application model.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ClientApplicationCreateForm"
- }
+ "summary": "Gets agent thread message status.",
+ "description": "Returns the processing status of a submitted agent thread message, including messages still in the queue.\r\n Use the accepted message id returned by the server when creating a thread or submitting a message.\r\n The response indicates whether an agent response exists and includes its id and error details when available.\r\n Retrieve reply content with [GET /agents/threads/{threadId}/messages](api:GET/agents/threads/{threadId}/messages).\r\n\r\nAny authenticated user.",
+ "operationId": "GetAgentsThreadsMessagesStatusByThreadIdAndMessageId",
+ "parameters": [
+ {
+ "name": "threadId",
+ "in": "path",
+ "description": "The id of the thread that contains the message.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
}
},
- "required": true
- },
+ {
+ "name": "messageId",
+ "in": "path",
+ "description": "The accepted message id returned by the server.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ClientApplicationCreateResponse"
+ "$ref": "#/components/schemas/AiThreadMessageProcessingStatusResponseModel"
}
}
}
},
- "400": {
- "description": "Bad Request",
+ "404": {
+ "description": "Not Found",
"content": {
"application/json": {
"schema": {
@@ -3764,43 +4194,53 @@
"v1"
],
"x-access": {
- "admin": "true",
- "workspace-manage-config": "write"
+ "any": "true"
}
}
},
- "/clientapplications/register": {
- "post": {
+ "/agents/{agentId}": {
+ "get": {
"tags": [
- "Client Applications"
+ "Custom Agents"
],
- "summary": "Dynamically registers a new OAuth 2.0 client according to RFC 7591.",
- "description": "\r\n\r\nAllows unauthenticated access.",
- "operationId": "PostClientApplicationsRegister",
- "requestBody": {
- "description": "The dynamic client registration request.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/DynamicClientRegistrationEndpointRequest"
+ "summary": "Returns the custom agent's configuration.",
+ "description": "Returns the agent's shared settings, including the requesting user's access level.\r\n Use this response to inspect the agent's model, prompt, and linked capabilities.\r\n Read GET /agents/{agentId}/configuration for the current user's selected accounts and connection status.\r\n The user must have read access to the agent.",
+ "operationId": "GetAgentsByAgentId",
+ "parameters": [
+ {
+ "name": "agentId",
+ "in": "path",
+ "description": "The agent id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AgentSummaryResponseModel"
+ }
}
}
},
- "required": true
- },
- "responses": {
- "201": {
- "description": "Created",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/DynamicClientRegistrationResponse"
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
- "400": {
- "description": "Bad Request",
+ "404": {
+ "description": "Not Found",
"content": {
"application/json": {
"schema": {
@@ -3821,32 +4261,49 @@
"v1"
],
"x-access": {
- "anonymous": "true"
+ "any": "true"
}
- }
- },
- "/clientapplications/{clientId}": {
- "delete": {
+ },
+ "put": {
"tags": [
- "Client Applications"
+ "Custom Agents"
],
- "summary": "Deletes the specified client application.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
- "operationId": "DeleteClientApplicationsByClientId",
+ "summary": "Updates the custom agent's configuration.",
+ "description": "Updates the custom agent's configuration and returns the saved agent.\r\n Saves a new system prompt version if the prompt changes.\r\n The user must have manage access to the agent. Changing workspace sharing also requires permission to contribute to the agent library.",
+ "operationId": "PutAgentsByAgentId",
"parameters": [
{
- "name": "clientId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the client application.",
+ "description": "The agent id.",
"required": true,
"schema": {
- "type": "string"
+ "type": "string",
+ "format": "uuid"
}
}
],
+ "requestBody": {
+ "description": "The new agent configuration.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UpdateAgentRequestModel"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
- "204": {
- "description": "No Content"
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AgentSummaryResponseModel"
+ }
+ }
+ }
},
"400": {
"description": "Bad Request",
@@ -3858,6 +4315,16 @@
}
}
},
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
"404": {
"description": "Not Found",
"content": {
@@ -3880,25 +4347,27 @@
"v1"
],
"x-access": {
- "admin": "true",
- "workspace-manage-config": "write"
+ "any": "true"
}
- },
+ }
+ },
+ "/agents/{agentId}/configuration": {
"get": {
"tags": [
- "Client Applications"
+ "Custom Agents"
],
- "summary": "Returns the client application with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
- "operationId": "GetClientApplicationsByClientId",
+ "summary": "Returns a custom agent's connection configuration for the current user.",
+ "description": "Returns the linked connector and skill ids, the account selected for each connector,\r\n why that account was selected, and whether it is available.\r\n Uses a saved agent choice, or the enabled awork Agent default when no choice is saved.\r\n An editor-provided account is used when the connector has specificConnection mode.\r\n API-key requests do not inherit awork Agent defaults.\r\n This read does not save or change any choices.\r\n The user must have read access to the agent.",
+ "operationId": "GetAgentsConfigurationByAgentId",
"parameters": [
{
- "name": "clientId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the client application.",
+ "description": "The agent id.",
"required": true,
"schema": {
- "type": "string"
+ "type": "string",
+ "format": "uuid"
}
}
],
@@ -3908,7 +4377,17 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ClientApplication"
+ "$ref": "#/components/schemas/CustomAgentConfigurationResponseModel"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -3935,52 +4414,46 @@
"v1"
],
"x-access": {
- "admin": "true",
- "workspace-manage-config": "read"
+ "any": "true"
}
- },
- "put": {
+ }
+ },
+ "/agents/{agentId}/connectors/{connectorId}": {
+ "delete": {
"tags": [
- "Client Applications"
+ "Custom Agents"
],
- "summary": "Updates the client application with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
- "operationId": "PutClientApplicationsByClientId",
+ "summary": "Unlinks a connector from an agent.",
+ "description": "Removes the connector link from the specified agent.\r\n Returns no content when the link is removed or is already absent.\r\n The user must have manage access to the agent.",
+ "operationId": "DeleteConnectorsByConnectorIdAndAgentId",
"parameters": [
{
- "name": "clientId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the client application.",
+ "description": "The agent id.",
"required": true,
"schema": {
- "type": "string"
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "connectorId",
+ "in": "path",
+ "description": "The connector id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
}
}
],
- "requestBody": {
- "description": "The client application model.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ClientApplicationUpdateForm"
- }
- }
- },
- "required": true
- },
"responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ClientApplication"
- }
- }
- }
+ "204": {
+ "description": "No Content"
},
- "400": {
- "description": "Bad Request",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
@@ -4011,54 +4484,51 @@
"v1"
],
"x-access": {
- "admin": "true",
- "workspace-manage-config": "write"
+ "any": "true"
}
- }
- },
- "/clientapplications/{clientId}/generateapikey": {
+ },
"post": {
"tags": [
- "Client Applications"
+ "Custom Agents"
],
- "summary": "Generates an API key for the specified client application.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
- "operationId": "PostClientApplicationsGenerateApiKeyByClientId",
+ "summary": "Links a connector to an agent.",
+ "description": "Links an existing connector to the specified agent and returns the linked connector.\r\n Use [GET /agents/connectors](#/AgentRuntime/GetConnectors) to find a connector id.\r\n The user must have manage access to the agent.",
+ "operationId": "PostConnectorsByConnectorIdAndAgentId",
"parameters": [
{
- "name": "clientId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the client application.",
+ "description": "The agent id.",
"required": true,
"schema": {
- "type": "string"
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "connectorId",
+ "in": "path",
+ "description": "The connector id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
}
}
],
- "requestBody": {
- "description": "The model to generate an API key.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ClientApplicationApiKeyForm"
- }
- }
- },
- "required": true
- },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/TokenResponse"
+ "$ref": "#/components/schemas/ConnectorResponseModel"
}
}
}
},
- "400": {
- "description": "Bad Request",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
@@ -4089,37 +4559,48 @@
"v1"
],
"x-access": {
- "admin": "true",
- "workspace-manage-config": "read"
+ "any": "true"
}
}
},
- "/clientapplications/{clientId}/generatesecret": {
+ "/agents/{agentId}/copy": {
"post": {
"tags": [
- "Client Applications"
+ "Custom Agents"
],
- "summary": "Generates a new secret for the specified client application.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
- "operationId": "PostClientApplicationsGenerateSecretByClientId",
+ "summary": "Copies an existing custom agent.",
+ "description": "Creates a copy of an existing custom agent in the current workspace.\r\n Provide the new name and optional description in the request body. The source agent supplies the initial configuration and system prompt.\r\n Returns the new agent with its own id.\r\n The user must have read access to the source agent.",
+ "operationId": "PostAgentsCopyByAgentId",
"parameters": [
{
- "name": "clientId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the client application.",
+ "description": "The source agent id.",
"required": true,
"schema": {
- "type": "string"
+ "type": "string",
+ "format": "uuid"
}
}
],
+ "requestBody": {
+ "description": "The name and description for the copy.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CopyAgentRequestModel"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ClientApplicationGeneratePasswordResponse"
+ "$ref": "#/components/schemas/AgentSummaryResponseModel"
}
}
}
@@ -4133,16 +4614,6 @@
}
}
}
- },
- "404": {
- "description": "Not Found",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
}
},
"security": [
@@ -4156,20 +4627,28 @@
"v1"
],
"x-access": {
- "admin": "true",
- "workspace-manage-config": "write"
+ "any": "true"
}
}
},
- "/companies": {
+ "/agents/{agentId}/files": {
"get": {
"tags": [
- "Companies"
+ "Agent Files"
],
- "summary": "Returns all companies.",
- "description": "\r\n\r\nThe user must be an admin or have `company-master-data:read` permissions.",
- "operationId": "GetCompanies",
+ "summary": "Returns all files of the specified agent.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesByAgentNameAndAgentId",
"parameters": [
+ {
+ "name": "agentId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
{
"$ref": "#/components/parameters/page"
},
@@ -4191,11 +4670,31 @@
"schema": {
"type": "array",
"items": {
- "$ref": "#/components/schemas/Company"
+ "$ref": "#/components/schemas/FileInfo"
}
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -4209,23 +4708,36 @@
"v1"
],
"x-access": {
- "admin": "true",
- "company-master-data": "read"
+ "any": "true"
}
- },
+ }
+ },
+ "/agents/{agentId}/files/byuploadid": {
"post": {
"tags": [
- "Companies"
+ "FileUpload"
+ ],
+ "summary": "Creates a file from an upload id.",
+ "description": "After a file has been uploaded to an upload URL generated from the endpoint, this endpoint can be used to create a file agent from the uploaded file by providing the upload id.\r\n\r\nAny authenticated user.",
+ "operationId": "PostUploadByUploadId",
+ "parameters": [
+ {
+ "name": "agentId",
+ "in": "path",
+ "description": "The id of the agent to attach the file to.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
],
- "summary": "Creates a new company.",
- "description": "\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
- "operationId": "PostCompany",
"requestBody": {
- "description": "The company to create.",
+ "description": "The model describing the uploaded file metadata.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CompanyForm"
+ "$ref": "#/components/schemas/UploadByUploadIdForm"
}
}
},
@@ -4237,13 +4749,13 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Company"
+ "$ref": "#/components/schemas/FileInfo"
}
}
}
},
- "400": {
- "description": "Bad Request",
+ "404": {
+ "description": "Not Found",
"content": {
"application/json": {
"schema": {
@@ -4264,30 +4776,40 @@
"v1"
],
"x-access": {
- "admin": "true",
- "company-master-data": "write"
+ "any": "true"
}
}
},
- "/companies/deletetags": {
- "post": {
+ "/agents/{agentId}/files/{fileId}": {
+ "delete": {
"tags": [
- "CompanyTags"
+ "Agent Files"
],
- "summary": "Removes a tag from all companies.",
- "description": "\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
- "operationId": "PostCompaniesDeleteTags",
- "requestBody": {
- "description": "The model with the tag to be removed.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/DeleteTagForm"
- }
+ "summary": "Deletes the specified agent file and its versions.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByAgentNameAndAgentIdAndFileId",
+ "parameters": [
+ {
+ "name": "agentId",
+ "in": "path",
+ "description": "The agent id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
}
},
- "required": true
- },
+ {
+ "name": "fileId",
+ "in": "path",
+ "description": "The file id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
"responses": {
"204": {
"description": "No Content"
@@ -4311,6 +4833,16 @@
}
}
}
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -4324,58 +4856,30 @@
"v1"
],
"x-access": {
- "admin": "true",
- "company-master-data": "write"
+ "any": "true"
}
}
},
- "/companies/industries": {
+ "/agents/{agentId}/schedules": {
"get": {
"tags": [
- "Companies"
+ "Agent Schedules"
],
- "summary": "Returns all company industries that are currently in use.",
- "description": "\r\n\r\nThe user must be an admin or have `company-master-data:read` permissions.",
- "operationId": "GetCompaniesIndustries",
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- }
- }
- }
- },
- "security": [
+ "summary": "Lists agent schedules.",
+ "description": "Lists the schedules configured for an agent after checking the caller's read access.\r\n\r\nAny authenticated user.",
+ "operationId": "GetSchedulesByAgentId",
+ "parameters": [
{
- "oauth2": [
- "full_access"
- ]
+ "name": "agentId",
+ "in": "path",
+ "description": "The agent id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
}
],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "admin": "true",
- "company-master-data": "read"
- }
- }
- },
- "/companies/tags": {
- "get": {
- "tags": [
- "CompanyTags"
- ],
- "summary": "Returns all tags that are currently in use by companies.",
- "description": "Returns all tags that are currently in use by companies ordered by count.\r\n\r\nAny authenticated user.",
- "operationId": "GetCompanyTags",
"responses": {
"200": {
"description": "OK",
@@ -4384,50 +4888,11 @@
"schema": {
"type": "array",
"items": {
- "$ref": "#/components/schemas/BaseTagModel"
+ "$ref": "#/components/schemas/AgentScheduleResponseModel"
}
}
}
}
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- }
- },
- "/companies/updatetags": {
- "post": {
- "tags": [
- "CompanyTags"
- ],
- "summary": "Updates a tag globally for all companies.",
- "description": "\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
- "operationId": "PostCompaniesUpdateTags",
- "requestBody": {
- "description": "The model containing the tag updates.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/TagUpdateForm"
- }
- }
- },
- "required": true
- },
- "responses": {
- "204": {
- "description": "No Content"
},
"401": {
"description": "Unauthorized",
@@ -4438,54 +4903,6 @@
}
}
}
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "admin": "true",
- "company-master-data": "write"
- }
- }
- },
- "/companies/{companyId}": {
- "get": {
- "tags": [
- "Companies"
- ],
- "summary": "Returns the company with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `company-master-data:read` permissions.",
- "operationId": "GetCompanyById",
- "parameters": [
- {
- "name": "companyId",
- "in": "path",
- "description": "The id of the company.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/Company"
- }
- }
- }
},
"404": {
"description": "Not Found",
@@ -4509,22 +4926,21 @@
"v1"
],
"x-access": {
- "admin": "true",
- "company-master-data": "read"
+ "any": "true"
}
},
- "put": {
+ "post": {
"tags": [
- "Companies"
+ "Agent Schedules"
],
- "summary": "Updates the company with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
- "operationId": "PutCompanyById",
+ "summary": "Creates an agent schedule.",
+ "description": "Creates a schedule for an agent after validating its cadence, timezone, and optional project or task context.\r\n\r\nAny authenticated user.",
+ "operationId": "PostSchedulesByAgentId",
"parameters": [
{
- "name": "companyId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the company to update.",
+ "description": "The agent id.",
"required": true,
"schema": {
"type": "string",
@@ -4533,11 +4949,11 @@
}
],
"requestBody": {
- "description": "The model with updated company data.",
+ "description": "The schedule payload.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CompanyForm"
+ "$ref": "#/components/schemas/CreateAgentScheduleRequestModel"
}
}
},
@@ -4549,7 +4965,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Company"
+ "$ref": "#/components/schemas/AgentScheduleResponseModel"
}
}
}
@@ -4563,6 +4979,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -4576,24 +5012,23 @@
"v1"
],
"x-access": {
- "admin": "true",
- "company-master-data": "write"
+ "any": "true"
}
}
},
- "/companies/{companyId}/addtags": {
+ "/agents/{agentId}/schedules/nextoccurrence": {
"post": {
"tags": [
- "CompanyTags"
+ "Agent Schedules"
],
- "summary": "Adds a batch of new tags to the company with the specified id.",
- "description": "The request fails if one of the tags is invalid (e.g. empty or duplicate).\r\n To add tags to a company the user must have `company-master-data:write` permissions on the specified company.",
- "operationId": "PostCompanyAddTagsByCompanyId",
+ "summary": "Previews a schedule occurrence.",
+ "description": "Calculates the next occurrence for the supplied cadence without changing the schedule.\r\n\r\nAny authenticated user.",
+ "operationId": "PostSchedulesNextOccurrenceByAgentId",
"parameters": [
{
- "name": "companyId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the company to add tags to.",
+ "description": "The agent id.",
"required": true,
"schema": {
"type": "string",
@@ -4602,14 +5037,11 @@
}
],
"requestBody": {
- "description": "The model containing the tags to be added.",
+ "description": "The cadence preview request.",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/TagForm"
- }
+ "$ref": "#/components/schemas/AgentScheduleNextOccurrenceRequestModel"
}
}
},
@@ -4621,10 +5053,7 @@
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/BaseTagModel"
- }
+ "$ref": "#/components/schemas/AgentScheduleNextOccurrenceResponseModel"
}
}
}
@@ -4648,6 +5077,26 @@
}
}
}
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "503": {
+ "description": "Service Unavailable",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -4665,19 +5114,19 @@
}
}
},
- "/companies/{companyId}/contactinfo": {
- "get": {
+ "/agents/{agentId}/schedules/{scheduleId}": {
+ "delete": {
"tags": [
- "Companies"
+ "Agent Schedules"
],
- "summary": "Returns the contact infos of the company with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `company-master-data:read` permissions.",
- "operationId": "GetCompanyContactInfoByCompanyId",
+ "summary": "Deletes an agent schedule.",
+ "description": "Deletes a schedule configured for an agent after checking the caller's access.\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteSchedulesByScheduleIdAndAgentId",
"parameters": [
{
- "name": "companyId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The agent id.",
"required": true,
"schema": {
"type": "string",
@@ -4685,28 +5134,46 @@
}
},
{
- "$ref": "#/components/parameters/page"
- },
- {
- "$ref": "#/components/parameters/pageSize"
- },
- {
- "$ref": "#/components/parameters/orderby"
- },
- {
- "$ref": "#/components/parameters/filterby"
+ "name": "scheduleId",
+ "in": "path",
+ "description": "The schedule id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
}
],
"responses": {
- "200": {
- "description": "OK",
+ "204": {
+ "description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ContactInfoForCompanies"
- }
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -4723,22 +5190,31 @@
"v1"
],
"x-access": {
- "admin": "true",
- "company-master-data": "read"
+ "any": "true"
}
},
- "post": {
+ "put": {
"tags": [
- "Companies"
+ "Agent Schedules"
],
- "summary": "Creates a new contact info for the company with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
- "operationId": "PostCompanyContactInfoByCompanyId",
+ "summary": "Updates an agent schedule.",
+ "description": "Updates a schedule configured for an agent after validating its cadence, timezone, and optional context.\r\n\r\nAny authenticated user.",
+ "operationId": "PutSchedulesByScheduleIdAndAgentId",
"parameters": [
{
- "name": "companyId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The agent id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "scheduleId",
+ "in": "path",
+ "description": "The schedule id.",
"required": true,
"schema": {
"type": "string",
@@ -4747,11 +5223,11 @@
}
],
"requestBody": {
- "description": "The contact info to create.",
+ "description": "The updated schedule payload.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ContactInfoForm"
+ "$ref": "#/components/schemas/UpdateAgentScheduleRequestModel"
}
}
},
@@ -4763,7 +5239,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ContactInfoForCompanies"
+ "$ref": "#/components/schemas/AgentScheduleResponseModel"
}
}
}
@@ -4777,6 +5253,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -4790,24 +5286,23 @@
"v1"
],
"x-access": {
- "admin": "true",
- "company-master-data": "write"
+ "any": "true"
}
}
},
- "/companies/{companyId}/contactinfo/{contactInfoId}": {
- "delete": {
+ "/agents/{agentId}/schedules/{scheduleId}/run": {
+ "post": {
"tags": [
- "Companies"
+ "Agent Schedules"
],
- "summary": "Deletes the contact info of the company with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
- "operationId": "DeleteCompanyContactInfoByCompanyIdAndContactInfoId",
+ "summary": "Runs an agent schedule.",
+ "description": "Immediately starts a new agent session for the selected schedule.\r\n\r\nAny authenticated user.",
+ "operationId": "PostSchedulesRunByScheduleIdAndAgentId",
"parameters": [
{
- "name": "companyId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The agent id.",
"required": true,
"schema": {
"type": "string",
@@ -4815,9 +5310,9 @@
}
},
{
- "name": "contactInfoId",
+ "name": "scheduleId",
"in": "path",
- "description": "The id of the contact info.",
+ "description": "The schedule id.",
"required": true,
"schema": {
"type": "string",
@@ -4826,8 +5321,15 @@
}
],
"responses": {
- "204": {
- "description": "No Content"
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AiThreadCreatedResponseModel"
+ }
+ }
+ }
},
"400": {
"description": "Bad Request",
@@ -4839,6 +5341,16 @@
}
}
},
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
"404": {
"description": "Not Found",
"content": {
@@ -4861,22 +5373,23 @@
"v1"
],
"x-access": {
- "admin": "true",
- "company-master-data": "write"
+ "any": "true"
}
- },
- "get": {
+ }
+ },
+ "/agents/{agentId}/schedules/{scheduleId}/setenabled": {
+ "post": {
"tags": [
- "Companies"
+ "Agent Schedules"
],
- "summary": "Returns the specified contact info of the company with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `company-master-data:read` permissions.",
- "operationId": "GetCompanyContactInfoByCompanyIdAndContactInfoId",
+ "summary": "Changes schedule state.",
+ "description": "Enables or disables the selected agent schedule and returns the updated schedule.\r\n\r\nAny authenticated user.",
+ "operationId": "PostSchedulesSetEnabledByScheduleIdAndAgentId",
"parameters": [
{
- "name": "companyId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The agent id.",
"required": true,
"schema": {
"type": "string",
@@ -4884,35 +5397,34 @@
}
},
{
- "name": "contactInfoId",
+ "name": "scheduleId",
"in": "path",
- "description": "The id of the contact info.",
+ "description": "The schedule id.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
- },
- {
- "$ref": "#/components/parameters/page"
- },
- {
- "$ref": "#/components/parameters/pageSize"
- },
- {
- "$ref": "#/components/parameters/orderby"
- },
- {
- "$ref": "#/components/parameters/filterby"
}
],
+ "requestBody": {
+ "description": "The requested enabled state.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SetAgentScheduleEnabledRequestModel"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ContactInfoForCompanies"
+ "$ref": "#/components/schemas/AgentScheduleResponseModel"
}
}
}
@@ -4927,6 +5439,16 @@
}
}
},
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
"404": {
"description": "Not Found",
"content": {
@@ -4949,32 +5471,23 @@
"v1"
],
"x-access": {
- "admin": "true",
- "company-master-data": "read"
+ "any": "true"
}
- },
- "put": {
+ }
+ },
+ "/agents/{agentId}/setarchived": {
+ "post": {
"tags": [
- "Companies"
+ "Custom Agents"
],
- "summary": "Updates the contact info for the company with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
- "operationId": "PutCompanyContactInfoByCompanyIdAndContactInfoId",
+ "summary": "Archives or unarchives an agent.",
+ "description": "Archives or unarchives the specified custom agent and returns its updated configuration.\r\n Set IsArchived to true to archive the agent, or false to unarchive it.\r\n The user must have manage access to the agent.",
+ "operationId": "PostAgentsSetArchivedByAgentId",
"parameters": [
{
- "name": "companyId",
- "in": "path",
- "description": "The id of the company.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "contactInfoId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the contact info.",
+ "description": "The agent id.",
"required": true,
"schema": {
"type": "string",
@@ -4983,11 +5496,11 @@
}
],
"requestBody": {
- "description": "The updated contact info data.",
+ "description": "Whether to archive or unarchive the agent.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ContactInfoForm"
+ "$ref": "#/components/schemas/SetAgentArchivedRequestModel"
}
}
},
@@ -4999,7 +5512,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ContactInfoForCompanies"
+ "$ref": "#/components/schemas/AgentSummaryResponseModel"
}
}
}
@@ -5014,6 +5527,16 @@
}
}
},
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
"404": {
"description": "Not Found",
"content": {
@@ -5036,24 +5559,23 @@
"v1"
],
"x-access": {
- "admin": "true",
- "company-master-data": "write"
+ "any": "true"
}
}
},
- "/companies/{companyId}/delete": {
- "post": {
+ "/agents/{agentId}/skills": {
+ "get": {
"tags": [
- "Companies"
+ "Custom Agents"
],
- "summary": "Deletes the company with the specified id.",
- "description": "There are several ways to delete a company.\r\n Look into the property description of the post model to get detailed information.\r\n
If the post is executed without a model, the default process 'delete-only-company' will be executed.\r\n
For the operation 'delete-all-without-timeentries' project-master-data write permissions are required on all projects of the company.\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
- "operationId": "PostCompanyDeleteByCompanyId",
+ "summary": "Lists agent skills.",
+ "description": "Returns the skills linked to an agent after checking read access to the agent.\r\n\r\nAny authenticated user.",
+ "operationId": "GetSkillsByAgentId",
"parameters": [
{
- "name": "companyId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The agent id.",
"required": true,
"schema": {
"type": "string",
@@ -5061,27 +5583,16 @@
}
}
],
- "requestBody": {
- "description": "The model describing how to delete the company.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/CompanyDeleteForm"
- }
- }
- },
- "required": true
- },
"responses": {
- "204": {
- "description": "No Content"
- },
- "400": {
- "description": "Bad Request",
+ "200": {
+ "description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ErrorResponse"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/SkillResponseModel"
+ }
}
}
}
@@ -5118,24 +5629,21 @@
"v1"
],
"x-access": {
- "admin": "true",
- "company-master-data": "write"
+ "any": "true"
}
- }
- },
- "/companies/{companyId}/deletetags": {
+ },
"post": {
"tags": [
- "CompanyTags"
+ "Custom Agents"
],
- "summary": "Removes tags from the company with the specified id.",
- "description": "Removes tags from the company with the specified id.\r\n \r\n Returns 204 NoContent if all tags have been removed successfully.\r\n Returns 207 MultiStatus if at least one tag could not be removed, including the reasons.\r\n \r\n To remove tags from a company the user must have `company-master-data:write` permissions on the specified company.",
- "operationId": "PostCompanyDeleteTagsByCompanyId",
+ "summary": "Creates a private skill for an agent.",
+ "description": "Creates a private skill owned by the agent and links the new skill to that agent.\r\n\r\nAny authenticated user.",
+ "operationId": "PostSkillsByAgentId",
"parameters": [
{
- "name": "companyId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The owning agent id.",
"required": true,
"schema": {
"type": "string",
@@ -5144,25 +5652,26 @@
}
],
"requestBody": {
- "description": "The tags to remove.",
+ "description": "The name and content of the new skill.",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/DeleteTagForm"
- }
+ "$ref": "#/components/schemas/CreateSkillRequestModel"
}
}
},
"required": true
},
"responses": {
- "204": {
- "description": "No Content"
- },
- "207": {
- "description": "Multi-Status"
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SkillResponseModel"
+ }
+ }
+ }
},
"400": {
"description": "Bad Request",
@@ -5183,6 +5692,16 @@
}
}
}
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -5200,14 +5719,3626 @@
}
}
},
- "/companies/{companyId}/externalfiles": {
- "post": {
+ "/agents/{agentId}/skills/{skillId}": {
+ "delete": {
"tags": [
- "CompanyFiles"
+ "Custom Agents"
],
- "summary": "Endpoint to batch create external files without uploading.",
- "description": "Endpoint to create file infos with batch operation.\nCreated file infos don't have a version.\r\n\r\nAny authenticated user.",
- "operationId": "CreateExternalFiles",
+ "summary": "Removes a skill from an agent.",
+ "description": "Also deletes the skill if it is private to the agent.\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteSkillsBySkillIdAndAgentId",
+ "parameters": [
+ {
+ "name": "agentId",
+ "in": "path",
+ "description": "The agent id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "skillId",
+ "in": "path",
+ "description": "The skill id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/agents/{agentId}/skills/{skillId}/link": {
+ "post": {
+ "tags": [
+ "Custom Agents"
+ ],
+ "summary": "Links a skill to an agent.",
+ "description": "Links a shared skill to an agent when the caller can manage the agent and read the skill.\r\n\r\nAny authenticated user.",
+ "operationId": "PostSkillsLinkBySkillIdAndAgentId",
+ "parameters": [
+ {
+ "name": "agentId",
+ "in": "path",
+ "description": "The agent id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "skillId",
+ "in": "path",
+ "description": "The skill id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AgentSkillLinkResponseModel"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/agents/{agentId}/systempromptversions": {
+ "get": {
+ "tags": [
+ "Custom Agents"
+ ],
+ "summary": "Lists the agent's saved system prompt versions.",
+ "description": "Lists the saved system prompt versions for the specified custom agent.\r\n Use a returned version id with the system prompt restore endpoint to restore an earlier prompt.\r\n The user must have read access to the agent.",
+ "operationId": "GetAgentsSystemPromptVersionsByAgentId",
+ "parameters": [
+ {
+ "name": "agentId",
+ "in": "path",
+ "description": "The agent id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/SystemPromptVersionResponseModel"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/agents/{agentId}/systempromptversions/{systemPromptVersionId}/restore": {
+ "post": {
+ "tags": [
+ "Custom Agents"
+ ],
+ "summary": "Restores a previous system prompt version.",
+ "description": "Restores a saved system prompt version as the agent's current prompt.\r\n The restore records a new history version and returns that version. Use the system prompt versions endpoint to find a version id.\r\n The user must have manage access to the agent.",
+ "operationId": "PostAgentsSystemPromptVersionRestore",
+ "parameters": [
+ {
+ "name": "agentId",
+ "in": "path",
+ "description": "The agent id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "systemPromptVersionId",
+ "in": "path",
+ "description": "The prompt version id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SystemPromptVersionResponseModel"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/apiusers": {
+ "get": {
+ "tags": [
+ "ApiUsers"
+ ],
+ "summary": "Returns all API users.",
+ "description": "Returns API users configured in the workspace.\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
+ "operationId": "GetApiUsers",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ApiUser"
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "workspace-manage-config": "read"
+ }
+ },
+ "post": {
+ "tags": [
+ "ApiUsers"
+ ],
+ "summary": "Creates an API user.",
+ "description": "Creates an archived API user for the specified client application. The client application must exist, the name must be unique, and the selected role must be active and non-guest. If no role is supplied, the active admin role is used.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "operationId": "PostApiUser",
+ "requestBody": {
+ "description": "The model to create the API user.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ApiUserPostForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ApiUser"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "workspace-manage-config": "write"
+ }
+ }
+ },
+ "/apiusers/{apiUserId}": {
+ "delete": {
+ "tags": [
+ "ApiUsers"
+ ],
+ "summary": "Deletes the specified API user.",
+ "description": "Deletes the specified API user and revokes its access.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "operationId": "DeleteApiUserById",
+ "parameters": [
+ {
+ "name": "apiUserId",
+ "in": "path",
+ "description": "The id of the API user to delete.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "workspace-manage-config": "write"
+ }
+ },
+ "get": {
+ "tags": [
+ "ApiUsers"
+ ],
+ "summary": "Returns the specified API user.",
+ "description": "Returns the specified API user and its configured role.\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
+ "operationId": "GetApiUserById",
+ "parameters": [
+ {
+ "name": "apiUserId",
+ "in": "path",
+ "description": "The id of the API user.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ApiUser"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "workspace-manage-config": "read"
+ }
+ },
+ "put": {
+ "tags": [
+ "ApiUsers"
+ ],
+ "summary": "Updates the specified API user.",
+ "description": "Updates the specified API user's name or role. Names must remain unique, and the target role must be active and non-guest.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "operationId": "PutApiUserById",
+ "parameters": [
+ {
+ "name": "apiUserId",
+ "in": "path",
+ "description": "The id of the API user to update.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "The model to update the API user.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ApiUserForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ApiUser"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "workspace-manage-config": "write"
+ }
+ }
+ },
+ "/automations/catalog": {
+ "get": {
+ "tags": [
+ "Project Automations"
+ ],
+ "summary": "Returns all supported automation trigger and action types.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetAutomationsCatalog",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/AutomationCatalogModel"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/autopilot/availablealerts": {
+ "get": {
+ "tags": [
+ "Autopilot"
+ ],
+ "summary": "Returns all available alerts for autopilots.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetAutopilotAvailableAlerts",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "example": [
+ "behind_schedule",
+ "overdue"
+ ]
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/autopilot/{autopilotId}": {
+ "get": {
+ "tags": [
+ "Autopilot"
+ ],
+ "summary": "Returns the autopilot with the specified id.",
+ "description": "Returns the autopilot including its alerts.\r\n To get the autopilot data the user needs to be the owner of the project or 'read' permissions\r\n of the feature 'project-master-data' globally or in their project role.\r\n\r\nAny authenticated user.",
+ "operationId": "GetAutopilotByAutopilotId",
+ "parameters": [
+ {
+ "name": "autopilotId",
+ "in": "path",
+ "description": "The id of the autopilot.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Autopilot"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/clientapplications": {
+ "get": {
+ "tags": [
+ "Client Applications"
+ ],
+ "summary": "Returns all client applications.",
+ "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
+ "operationId": "GetClientApplications",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ClientApplication"
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "workspace-manage-config": "read"
+ }
+ },
+ "post": {
+ "tags": [
+ "Client Applications"
+ ],
+ "summary": "Registers a new client application.",
+ "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "operationId": "PostClientApplications",
+ "requestBody": {
+ "description": "The client application model.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientApplicationCreateForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientApplicationCreateResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "workspace-manage-config": "write"
+ }
+ }
+ },
+ "/clientapplications/register": {
+ "post": {
+ "tags": [
+ "Client Applications"
+ ],
+ "summary": "Dynamically registers a new OAuth 2.0 client according to RFC 7591.",
+ "description": "\r\n\r\nAllows unauthenticated access.",
+ "operationId": "PostClientApplicationsRegister",
+ "requestBody": {
+ "description": "The dynamic client registration request.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/DynamicClientRegistrationEndpointRequest"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "201": {
+ "description": "Created",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/DynamicClientRegistrationResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "anonymous": "true"
+ }
+ }
+ },
+ "/clientapplications/{clientId}": {
+ "delete": {
+ "tags": [
+ "Client Applications"
+ ],
+ "summary": "Deletes the specified client application.",
+ "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "operationId": "DeleteClientApplicationsByClientId",
+ "parameters": [
+ {
+ "name": "clientId",
+ "in": "path",
+ "description": "The id of the client application.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "workspace-manage-config": "write"
+ }
+ },
+ "get": {
+ "tags": [
+ "Client Applications"
+ ],
+ "summary": "Returns the client application with the specified id.",
+ "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
+ "operationId": "GetClientApplicationsByClientId",
+ "parameters": [
+ {
+ "name": "clientId",
+ "in": "path",
+ "description": "The id of the client application.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientApplication"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "workspace-manage-config": "read"
+ }
+ },
+ "put": {
+ "tags": [
+ "Client Applications"
+ ],
+ "summary": "Updates the client application with the specified id.",
+ "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "operationId": "PutClientApplicationsByClientId",
+ "parameters": [
+ {
+ "name": "clientId",
+ "in": "path",
+ "description": "The id of the client application.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "The client application model.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientApplicationUpdateForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientApplication"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "workspace-manage-config": "write"
+ }
+ }
+ },
+ "/clientapplications/{clientId}/generateapikey": {
+ "post": {
+ "tags": [
+ "Client Applications"
+ ],
+ "summary": "Generates an API key for the specified client application.",
+ "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
+ "operationId": "PostClientApplicationsGenerateApiKeyByClientId",
+ "parameters": [
+ {
+ "name": "clientId",
+ "in": "path",
+ "description": "The id of the client application.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "The model to generate an API key.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientApplicationApiKeyForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TokenResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "workspace-manage-config": "read"
+ }
+ }
+ },
+ "/clientapplications/{clientId}/generatesecret": {
+ "post": {
+ "tags": [
+ "Client Applications"
+ ],
+ "summary": "Generates a new secret for the specified client application.",
+ "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "operationId": "PostClientApplicationsGenerateSecretByClientId",
+ "parameters": [
+ {
+ "name": "clientId",
+ "in": "path",
+ "description": "The id of the client application.",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ClientApplicationGeneratePasswordResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "workspace-manage-config": "write"
+ }
+ }
+ },
+ "/companies": {
+ "get": {
+ "tags": [
+ "Companies"
+ ],
+ "summary": "Returns all companies.",
+ "description": "Returns all companies in the workspace.\r\n\r\nThe user must be an admin or have `company-master-data:read` permissions.",
+ "operationId": "GetCompanies",
+ "parameters": [
+ {
+ "$ref": "#/components/parameters/page"
+ },
+ {
+ "$ref": "#/components/parameters/pageSize"
+ },
+ {
+ "$ref": "#/components/parameters/orderby"
+ },
+ {
+ "$ref": "#/components/parameters/filterby"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Company"
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "company-master-data": "read"
+ }
+ },
+ "post": {
+ "tags": [
+ "Companies"
+ ],
+ "summary": "Creates a company.",
+ "description": "Creates a company and returns the created company.\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
+ "operationId": "PostCompany",
+ "requestBody": {
+ "description": "The company to create.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CompanyForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Company"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "company-master-data": "write"
+ }
+ }
+ },
+ "/companies/deletetags": {
+ "post": {
+ "tags": [
+ "CompanyTags"
+ ],
+ "summary": "Removes a tag from all companies.",
+ "description": "Removes the specified tag from every company in the workspace.\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
+ "operationId": "PostCompaniesDeleteTags",
+ "requestBody": {
+ "description": "The model with the tag to be removed.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/DeleteTagForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "company-master-data": "write"
+ }
+ }
+ },
+ "/companies/industries": {
+ "get": {
+ "tags": [
+ "Companies"
+ ],
+ "summary": "Returns all company industries in use.",
+ "description": "Returns the distinct company industries currently used in the workspace.\r\n\r\nThe user must be an admin or have `company-master-data:read` permissions.",
+ "operationId": "GetCompaniesIndustries",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "company-master-data": "read"
+ }
+ }
+ },
+ "/companies/tags": {
+ "get": {
+ "tags": [
+ "CompanyTags"
+ ],
+ "summary": "Returns company tags in use.",
+ "description": "Returns all tags currently used by companies.\r\n\r\nAny authenticated user.",
+ "operationId": "GetCompanyTags",
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/BaseTagModel"
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/updatetags": {
+ "post": {
+ "tags": [
+ "CompanyTags"
+ ],
+ "summary": "Updates a tag for all companies.",
+ "description": "Updates a tag across all companies. The tag can be renamed or merged with an existing tag according to the submitted options.\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
+ "operationId": "PostCompaniesUpdateTags",
+ "requestBody": {
+ "description": "The model containing the tag updates.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/TagUpdateForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "company-master-data": "write"
+ }
+ }
+ },
+ "/companies/{companyId}": {
+ "get": {
+ "tags": [
+ "Companies"
+ ],
+ "summary": "Returns the specified company.",
+ "description": "Returns the specified company. External companies omit contact information, tags, project counts, descriptions, and industries.\r\n\r\nThe user must be an admin or have `company-master-data:read` permissions.",
+ "operationId": "GetCompanyById",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "description": "The id of the company.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Company"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "company-master-data": "read"
+ }
+ },
+ "put": {
+ "tags": [
+ "Companies"
+ ],
+ "summary": "Updates the specified company.",
+ "description": "Updates the specified company's name, description, and industry.\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
+ "operationId": "PutCompanyById",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "description": "The id of the company to update.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "The model with updated company data.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CompanyForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Company"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "company-master-data": "write"
+ }
+ }
+ },
+ "/companies/{companyId}/addtags": {
+ "post": {
+ "tags": [
+ "CompanyTags"
+ ],
+ "summary": "Adds tags to the specified company.",
+ "description": "Adds the submitted tags and returns the tags assigned to the specified company.\r\n The user must have `company-master-data:write` permission for the specified company.",
+ "operationId": "PostCompanyAddTagsByCompanyId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "description": "The id of the company to add tags to.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "The model containing the tags to be added.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/TagForm"
+ }
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/BaseTagModel"
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/{companyId}/contactinfo": {
+ "get": {
+ "tags": [
+ "Companies"
+ ],
+ "summary": "Returns the company's contact information.",
+ "description": "Returns all contact information stored for the specified company.\r\n\r\nThe user must be an admin or have `company-master-data:read` permissions.",
+ "operationId": "GetCompanyContactInfoByCompanyId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "description": "The id of the company.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ },
+ {
+ "$ref": "#/components/parameters/pageSize"
+ },
+ {
+ "$ref": "#/components/parameters/orderby"
+ },
+ {
+ "$ref": "#/components/parameters/filterby"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ContactInfoForCompanies"
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "company-master-data": "read"
+ }
+ },
+ "post": {
+ "tags": [
+ "Companies"
+ ],
+ "summary": "Creates company contact information.",
+ "description": "Creates contact information for the specified company and refreshes its address data when needed.\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
+ "operationId": "PostCompanyContactInfoByCompanyId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "description": "The id of the company.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "The contact info to create.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContactInfoForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContactInfoForCompanies"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "company-master-data": "write"
+ }
+ }
+ },
+ "/companies/{companyId}/contactinfo/{contactInfoId}": {
+ "delete": {
+ "tags": [
+ "Companies"
+ ],
+ "summary": "Deletes company contact information.",
+ "description": "Deletes the specified contact information from the company and refreshes its address data when needed. The contact information must belong to the specified company.\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
+ "operationId": "DeleteCompanyContactInfoByCompanyIdAndContactInfoId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "description": "The id of the company.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "contactInfoId",
+ "in": "path",
+ "description": "The id of the contact info.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "company-master-data": "write"
+ }
+ },
+ "get": {
+ "tags": [
+ "Companies"
+ ],
+ "summary": "Returns specified company contact information.",
+ "description": "Returns the specified company contact information. The contact information must belong to the specified company.\r\n\r\nThe user must be an admin or have `company-master-data:read` permissions.",
+ "operationId": "GetCompanyContactInfoByCompanyIdAndContactInfoId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "description": "The id of the company.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "contactInfoId",
+ "in": "path",
+ "description": "The id of the contact info.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ },
+ {
+ "$ref": "#/components/parameters/pageSize"
+ },
+ {
+ "$ref": "#/components/parameters/orderby"
+ },
+ {
+ "$ref": "#/components/parameters/filterby"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContactInfoForCompanies"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "company-master-data": "read"
+ }
+ },
+ "put": {
+ "tags": [
+ "Companies"
+ ],
+ "summary": "Updates company contact information.",
+ "description": "Updates the specified company contact information and refreshes the company's address data when needed. The contact information must belong to the specified company.\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
+ "operationId": "PutCompanyContactInfoByCompanyIdAndContactInfoId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "description": "The id of the company.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "contactInfoId",
+ "in": "path",
+ "description": "The id of the contact info.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "The updated contact info data.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContactInfoForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContactInfoForCompanies"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "company-master-data": "write"
+ }
+ }
+ },
+ "/companies/{companyId}/delete": {
+ "post": {
+ "tags": [
+ "Companies"
+ ],
+ "summary": "Deletes the specified company.",
+ "description": "Deletes the specified company using the selected delete operation. Linked projects can be detached, moved to another company, or deleted with related work.\r\n\r\nThe user must be an admin or have `company-master-data:write` permissions.",
+ "operationId": "PostCompanyDeleteByCompanyId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "description": "The id of the company.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "The model describing how to delete the company.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CompanyDeleteForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "company-master-data": "write"
+ }
+ }
+ },
+ "/companies/{companyId}/deletetags": {
+ "post": {
+ "tags": [
+ "CompanyTags"
+ ],
+ "summary": "Removes tags from the specified company.",
+ "description": "Removes the submitted tags from the specified company. A partial failure returns a multi-status response with the reason for each tag that could not be removed.\r\n The user must have `company-master-data:write` permission for the specified company.",
+ "operationId": "PostCompanyDeleteTagsByCompanyId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "description": "The id of the company.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "The tags to remove.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/DeleteTagForm"
+ }
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "207": {
+ "description": "Multi-Status"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/{companyId}/externalfiles": {
+ "post": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Creates external file references for the specified company.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostExternalFilesByCompanyNameAndCompanyId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ExternalFileForm"
+ }
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/{companyId}/files": {
+ "delete": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Deletes all files and versions for the specified company.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByCompanyNameAndCompanyId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "description": "The company id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ },
+ "post": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Uploads a file for the specified company.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByCompanyNameAndCompanyId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "$ref": "#/components/schemas/FileUploadModel"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/{companyId}/files/byurl": {
+ "post": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Uploads a file from a public URL for the specified company.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByUrlByCompanyNameAndCompanyId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FilePostForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/{companyId}/files/{fileId}": {
+ "delete": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Deletes the specified company file and its versions.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByCompanyNameAndCompanyIdAndFileId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "description": "The company id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "description": "The file id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ },
+ "get": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Returns the file with the specified id of the company with the specified id.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesByCompanyNameAndCompanyIdAndFileId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "description": "The id of the company.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "description": "The id of the file.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ },
+ "put": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Updates metadata for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PutFilesByCompanyNameAndCompanyIdAndFileId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileInfoUpdateForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/{companyId}/files/{fileId}/changeentity": {
+ "post": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Changes the company that owns the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesChangeCompanyByCompanyNameAndCompanyIdAndFileId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileEntityForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/{companyId}/files/{fileId}/copy": {
+ "post": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Copies the specified file to another company.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesCopyByCompanyNameAndCompanyIdAndFileId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileCopyForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/{companyId}/files/{fileId}/download": {
+ "get": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Returns the latest content of the specified company file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesDownloadByCompanyNameAndCompanyIdAndFileId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "width",
+ "in": "query",
+ "schema": {
+ "type": "number",
+ "format": "double"
+ }
+ },
+ {
+ "name": "height",
+ "in": "query",
+ "schema": {
+ "type": "number",
+ "format": "double"
+ }
+ },
+ {
+ "name": "crop",
+ "in": "query",
+ "schema": {
+ "type": "boolean"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/{companyId}/files/{fileId}/pdf": {
+ "get": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Returns the specified company file as PDF.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesPdfByCompanyNameAndCompanyIdAndFileId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "inline",
+ "in": "query",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/{companyId}/files/{fileId}/shareurl": {
+ "get": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Returns a public URL for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesShareUrlByCompanyNameAndCompanyIdAndFileId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/{companyId}/files/{fileId}/versions": {
+ "get": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Returns all versions of the specified company file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsByCompanyNameAndCompanyIdAndFileId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ },
+ {
+ "$ref": "#/components/parameters/pageSize"
+ },
+ {
+ "$ref": "#/components/parameters/orderby"
+ },
+ {
+ "$ref": "#/components/parameters/filterby"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileVersion"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ },
+ "post": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Uploads a new version of the specified company file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesVersionsByCompanyNameAndCompanyIdAndFileId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "$ref": "#/components/schemas/FileUploadModel"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileVersion"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/{companyId}/files/{fileId}/versions/{versionId}": {
+ "get": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Returns the company file version with the specified id.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsByCompanyNameAndCompanyIdAndFileIdAndVersionId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "description": "The id of the company.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "description": "The id of the file.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "versionId",
+ "in": "path",
+ "description": "The id of the file version.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileVersion"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/{companyId}/files/{fileId}/versions/{versionId}/download": {
+ "get": {
+ "tags": [
+ "Company Files"
+ ],
+ "summary": "Returns the content of the specified company file version.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsDownloadByCompanyNameAndCompanyIdAndFileIdAndVersionId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "versionId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/companies/{companyId}/tags": {
+ "get": {
+ "tags": [
+ "CompanyTags"
+ ],
+ "summary": "Returns tags for the specified company.",
+ "description": "Returns the tags assigned to the specified company.\r\n The user must have `company-master-data:read` permission for the specified company.",
+ "operationId": "GetCompanyTagsByCompanyId",
"parameters": [
{
"name": "companyId",
@@ -5220,34 +9351,75 @@
}
}
],
- "requestBody": {
- "description": "List of file forms.",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ExternalFileForm"
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/BaseTagModel"
+ }
}
}
- },
- "application/*+json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ExternalFileForm"
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
},
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/customfielddefinitions": {
+ "get": {
+ "tags": [
+ "CustomFields"
+ ],
+ "summary": "Returns all custom field definitions.",
+ "description": "Returns all custom field definitions in the workspace. Set `includeLinkedProjectIds` to include the projects linked to each definition.\r\n\r\nAny authenticated user.",
+ "operationId": "GetCustomFieldDefinitions",
+ "parameters": [
+ {
+ "name": "includeLinkedProjectIds",
+ "in": "query",
+ "description": "Whether to include linked project Ids in the response.",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/CustomFieldDefinitionWithSelectionOptionsAndLinkedProjectIds"
+ }
}
}
}
@@ -5266,21 +9438,76 @@
"x-access": {
"any": "true"
}
+ },
+ "post": {
+ "tags": [
+ "CustomFields"
+ ],
+ "summary": "Creates a custom field definition.",
+ "description": "Creates a custom field definition that can be linked to project templates, projects, or tasks according to its entity type.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "operationId": "PostCustomFieldDefinition",
+ "requestBody": {
+ "description": "The model containing the details for creating a new custom field definition.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CustomFieldDefinitionPostForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CustomFieldDefinitionWithSelectionOptions"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "project-manage-config": "write"
+ }
}
},
- "/companies/{companyId}/files": {
+ "/customfielddefinitions/{customFieldDefinitionId}": {
"delete": {
"tags": [
- "CompanyFiles"
+ "CustomFields"
],
- "summary": "Deletes the files of the specified company.",
- "description": "Deletes the metadata and the different versions of the files.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteCompanyFiles",
+ "summary": "Deletes the specified custom field definition.",
+ "description": "Deletes the specified custom field definition, its selection options, its links, and all dependent task and task-template values.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "operationId": "DeleteCustomFieldDefinitionById",
"parameters": [
{
- "name": "companyId",
+ "name": "customFieldDefinitionId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The id of the custom field definition to delete.",
"required": true,
"schema": {
"type": "string",
@@ -5291,6 +9518,16 @@
"responses": {
"204": {
"description": "No Content"
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -5304,21 +9541,22 @@
"v1"
],
"x-access": {
- "any": "true"
+ "admin": "true",
+ "project-manage-config": "write"
}
},
- "post": {
+ "put": {
"tags": [
- "CompanyFiles"
+ "CustomFields"
],
- "summary": "Creates a new company file for the company with the specified id..",
- "description": "Uploads a new company file for the company with the specified id.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateCompanyFile",
+ "summary": "Updates the specified custom field definition.",
+ "description": "Updates the definition's name, type, or order. Type changes are limited to compatible date and date-time types or select and colored-select types.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "operationId": "PutCustomFieldDefinitionById",
"parameters": [
{
- "name": "companyId",
+ "name": "customFieldDefinitionId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The id of the custom field definition to update.",
"required": true,
"schema": {
"type": "string",
@@ -5327,27 +9565,15 @@
}
],
"requestBody": {
+ "description": "The model to change the custom field definition.",
"content": {
- "multipart/form-data": {
+ "application/json": {
"schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
+ "$ref": "#/components/schemas/CustomFieldDefinitionPutForm"
}
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -5355,13 +9581,30 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "$ref": "#/components/schemas/CustomFieldDefinition"
}
}
}
},
"400": {
- "description": "Bad Request"
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -5375,23 +9618,24 @@
"v1"
],
"x-access": {
- "any": "true"
+ "admin": "true",
+ "project-manage-config": "write"
}
}
},
- "/companies/{companyId}/files/byurl": {
+ "/customfielddefinitions/{customFieldDefinitionId}/selectionoptions": {
"post": {
"tags": [
- "CompanyFiles"
+ "CustomFields"
],
- "summary": "Uploads a new file by providing an url.",
- "description": "The file needs to be a public available url.\nThe file size must not exceed 100MB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateCompanyFileByUrl",
+ "summary": "Creates an option for a custom field.",
+ "description": "Creates a selection option for the specified custom field definition and places it at the requested order.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "operationId": "PostCustomFieldDefinitionSelectionOptionsByCustomFieldDefinitionId",
"parameters": [
{
- "name": "companyId",
+ "name": "customFieldDefinitionId",
"in": "path",
- "description": "The id of the company the file is linked to.",
+ "description": "The id of the custom field definition to add a selection option to.",
"required": true,
"schema": {
"type": "string",
@@ -5400,19 +9644,15 @@
}
],
"requestBody": {
- "description": "The url, name and description of the file.",
+ "description": "The model describing the selection option to create.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FilePostForm"
- }
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FilePostForm"
+ "$ref": "#/components/schemas/CustomFieldSelectionOptionsForm"
}
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -5420,7 +9660,17 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "$ref": "#/components/schemas/CustomFieldSelectionOption"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -5437,23 +9687,24 @@
"v1"
],
"x-access": {
- "any": "true"
+ "admin": "true",
+ "project-manage-config": "write"
}
}
},
- "/companies/{companyId}/files/{fileId}": {
+ "/customfielddefinitions/{customFieldDefinitionId}/selectionoptions/{selectionOptionId}": {
"delete": {
"tags": [
- "CompanyFiles"
+ "CustomFields"
],
- "summary": "Deletes the company file with the specified id.",
- "description": "Deletes the metadata and the different versions of the file.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteCompanyFile",
+ "summary": "Deletes a custom field selection option.",
+ "description": "Deletes the specified selection option from the custom field definition and clears references to that option from existing custom field values.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "operationId": "DeleteCustomFieldDefinitionSelectionOptionByCustomFieldDefinitionIdAndSelectionOptionId",
"parameters": [
{
- "name": "companyId",
+ "name": "customFieldDefinitionId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The id of the custom field definition containing the selection option.",
"required": true,
"schema": {
"type": "string",
@@ -5461,19 +9712,269 @@
}
},
{
- "name": "fileId",
+ "name": "selectionOptionId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the selection option to delete.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "project-manage-config": "write"
+ }
+ },
+ "put": {
+ "tags": [
+ "CustomFields"
+ ],
+ "summary": "Updates a custom field selection option.",
+ "description": "Updates the specified selection option's value, color, and order within its custom field definition.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "operationId": "PutCustomFieldDefinitionSelectionOptionByCustomFieldDefinitionIdAndSelectionOptionId",
+ "parameters": [
+ {
+ "name": "customFieldDefinitionId",
+ "in": "path",
+ "description": "The id of the custom field definition containing the selection option.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "selectionOptionId",
+ "in": "path",
+ "description": "The id of the selection option to update.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "The model describing the updated selection option.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CustomFieldSelectionOptionsForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CustomFieldSelectionOption"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "project-manage-config": "write"
+ }
+ }
+ },
+ "/documents": {
+ "get": {
+ "tags": [
+ "Documents"
+ ],
+ "summary": "Returns all documents.",
+ "description": "Returns documents visible to the current user. Set `includeTrashedDocuments` to include documents in the trash.\r\n The user must have at least `read` permission for each returned document.",
+ "operationId": "GetDocuments",
+ "parameters": [
+ {
+ "name": "includeTrashedDocuments",
+ "in": "query",
+ "description": "Whether to include trashed documents in the result.",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ },
+ {
+ "$ref": "#/components/parameters/pageSize"
+ },
+ {
+ "$ref": "#/components/parameters/orderby"
+ },
+ {
+ "$ref": "#/components/parameters/filterby"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/DocumentModel"
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ },
+ "post": {
+ "tags": [
+ "Documents"
+ ],
+ "summary": "Creates a document.",
+ "description": "Creates a document with optional HTML or Markdown content. Set `contentFormat` to `html` or `markdown`; HTML is the default. Canonical awork Markdown preserves safe editor structures during re-import.\r\n\r\nAny authenticated user.",
+ "operationId": "PostDocument",
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "$ref": "#/components/schemas/DocumentPostForm"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/DocumentModel"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/documents/trash/{documentId}/restore": {
+ "post": {
+ "tags": [
+ "Documents"
+ ],
+ "summary": "Restores the specified document.",
+ "description": "Restores the specified document from the trash. Related versions, content, and child documents are restored asynchronously. Restoring an already active document has no effect.\r\n The user must have at least `write` permission for the specified document.",
+ "operationId": "PostDocumentsTrashRestoreByDocumentId",
+ "parameters": [
+ {
+ "name": "documentId",
+ "in": "path",
+ "description": "The id of the document to restore.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
+ },
+ {
+ "name": "alsoRestoreChildren",
+ "in": "query",
+ "description": "Whether to also restore children documents.",
+ "schema": {
+ "type": "boolean",
+ "default": true
+ }
}
],
"responses": {
"204": {
"description": "No Content"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -5489,19 +9990,21 @@
"x-access": {
"any": "true"
}
- },
- "get": {
+ }
+ },
+ "/documents/{documentId}": {
+ "delete": {
"tags": [
- "Company Files"
+ "Documents"
],
- "summary": "Returns the file with the specified id of the company with the specified id.",
- "description": "\r\n\r\nAny authenticated user.",
- "operationId": "GetFilesByCompanyNameAndCompanyIdAndFileId",
+ "summary": "Deletes the specified document.",
+ "description": "Moves the specified document to the trash. The document is moved synchronously; child documents and related entities are moved asynchronously. Set `alsoDeleteChildren` to control whether child documents are included.\r\n The user must have at least `manage` permission for the specified document.",
+ "operationId": "DeleteDocumentById",
"parameters": [
{
- "name": "companyId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The id of the document to delete.",
"required": true,
"schema": {
"type": "string",
@@ -5509,26 +10012,18 @@
}
},
{
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
- "required": true,
+ "name": "alsoDeleteChildren",
+ "in": "query",
+ "description": "Whether to also delete children documents. If false, the children's parent references are updated to point to the deleted document's parent.",
"schema": {
- "type": "string",
- "format": "uuid"
+ "type": "boolean",
+ "default": true
}
}
],
"responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/FileInfo"
- }
- }
- }
+ "204": {
+ "description": "No Content"
},
"401": {
"description": "Unauthorized",
@@ -5565,28 +10060,18 @@
"any": "true"
}
},
- "put": {
+ "get": {
"tags": [
- "CompanyFiles"
+ "Documents"
],
- "summary": "Updates the metadata of the company file with the specified id.",
- "description": "Updates the metadata of the company file with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "UpdateCompanyFile",
+ "summary": "Returns the specified document.",
+ "description": "Returns the specified document when it is visible to the current user.\r\n The user must have at least `read` permission for the specified document.",
+ "operationId": "GetDocumentById",
"parameters": [
{
- "name": "companyId",
- "in": "path",
- "description": "The id of the company.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the document to retrieve.",
"required": true,
"schema": {
"type": "string",
@@ -5594,28 +10079,33 @@
}
}
],
- "requestBody": {
- "description": "The model to update the file with the specified id.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/FileInfoUpdateForm"
- }
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileInfoUpdateForm"
- }
- }
- }
- },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "$ref": "#/components/schemas/DocumentModel"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -5634,31 +10124,19 @@
"x-access": {
"any": "true"
}
- }
- },
- "/companies/{companyId}/files/{fileId}/changeentity": {
- "post": {
+ },
+ "put": {
"tags": [
- "CompanyFiles"
+ "Documents"
],
- "summary": "Changes the company this file belongs to.",
- "description": "Changes the company this file belongs to.\nSwitch to the specified company or to a global file\nif the 'EntityId' of the model is set to null.\r\n\r\nAny authenticated user.",
- "operationId": "ChangeCompany",
+ "summary": "Updates the specified document.",
+ "description": "Updates the specified document's content, location, sharing, or display properties. Moving a document can change its access rules and may be restricted by the workspace plan.\r\n The user must have at least `write` permission for the specified document.",
+ "operationId": "PutDocumentById",
"parameters": [
{
- "name": "companyId",
- "in": "path",
- "description": "The id of the company.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the document to update.",
"required": true,
"schema": {
"type": "string",
@@ -5667,19 +10145,15 @@
}
],
"requestBody": {
- "description": "The model to change the entity information of the file.",
+ "description": "The document form data with the updated information.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileEntityForm"
- }
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileEntityForm"
+ "$ref": "#/components/schemas/DocumentForm"
}
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -5687,7 +10161,37 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "$ref": "#/components/schemas/DocumentModel"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -5708,29 +10212,19 @@
}
}
},
- "/companies/{companyId}/files/{fileId}/copy": {
- "post": {
+ "/documents/{documentId}/comments": {
+ "delete": {
"tags": [
- "CompanyFiles"
+ "DocumentComments"
],
- "summary": "Copies the file to a new company.",
- "description": "Copies the file to a new company (meta and content).\r\n\r\nAny authenticated user.",
- "operationId": "CopyToCompany",
+ "summary": "Deletes all comments of the specified document.",
+ "description": "Deletes all comments of the specified document.\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteCommentsByDocumentNameAndDocumentId",
"parameters": [
{
- "name": "companyId",
- "in": "path",
- "description": "The id of the company.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -5738,28 +10232,16 @@
}
}
],
- "requestBody": {
- "description": "The model to change the entity information of the file.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/FileCopyForm"
- }
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileCopyForm"
- }
- }
- }
- },
"responses": {
- "200": {
- "description": "OK",
+ "204": {
+ "description": "No Content"
+ },
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -5778,21 +10260,19 @@
"x-access": {
"any": "true"
}
- }
- },
- "/companies/{companyId}/files/{fileId}/download": {
+ },
"get": {
"tags": [
- "CompanyFiles"
+ "DocumentComments"
],
- "summary": "Returns the content of the company file with the specified id.",
- "description": "Returns the content of the company file. Uses the latest file version.\nIf the company file is an image and the width and height are set,\nthe image will be resized before it is returned.\r\n\r\nAny authenticated user.",
- "operationId": "GetCompanyFileContent",
+ "summary": "Returns all comments of the document with the specified id.",
+ "description": "Returns all comments of the document with the specified id. The user needs read permissions on the document.\r\n\r\nAny authenticated user.",
+ "operationId": "GetCommentsByDocumentNameAndDocumentId",
"parameters": [
{
- "name": "companyId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -5800,40 +10280,16 @@
}
},
{
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
+ "$ref": "#/components/parameters/page"
},
{
- "name": "width",
- "in": "query",
- "description": "Set width to resize.",
- "schema": {
- "type": "number",
- "format": "double"
- }
+ "$ref": "#/components/parameters/pageSize"
},
{
- "name": "height",
- "in": "query",
- "description": "Set height to resize.",
- "schema": {
- "type": "number",
- "format": "double"
- }
+ "$ref": "#/components/parameters/orderby"
},
{
- "name": "crop",
- "in": "query",
- "description": "Whether to crop the image when resizing it.",
- "schema": {
- "type": "boolean"
- }
+ "$ref": "#/components/parameters/filterby"
}
],
"responses": {
@@ -5842,75 +10298,30 @@
"content": {
"application/json": {
"schema": {
- "type": "string",
- "format": "binary"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/Comment"
+ }
}
}
}
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- }
- },
- "/companies/{companyId}/files/{fileId}/pdf": {
- "get": {
- "tags": [
- "CompanyFiles"
- ],
- "summary": "Returns the content of the file with the specified id as pdf.\ntype or conversion not possible.",
- "description": "Returns the content of the company file. Uses the latest file version.\r\n\r\nAny authenticated user.",
- "operationId": "GetCompanyFileContent",
- "parameters": [
- {
- "name": "companyId",
- "in": "path",
- "description": "The id of the company.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
},
- {
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
}
},
- {
- "name": "inline",
- "in": "query",
- "description": "If inline is false, content-disposition header is attachment.",
- "schema": {
- "type": "boolean",
- "default": false
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
- "type": "string",
- "format": "binary"
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -5929,31 +10340,19 @@
"x-access": {
"any": "true"
}
- }
- },
- "/companies/{companyId}/files/{fileId}/shareurl": {
- "get": {
+ },
+ "post": {
"tags": [
- "CompanyFiles"
+ "DocumentComments"
],
- "summary": "Returns an url to share the file.",
- "description": "Returns a url to share the file.\r\n\r\nAny authenticated user.",
- "operationId": "GetPublicToken",
+ "summary": "Creates a new comment on the document with the specified id.",
+ "description": "Creates a new comment on the document with the specified id.\r\n A user can only create a comment for him/herself, except for admins and api users.\r\n \r\n To create a comment the user must have at least `read` permissions on the specified document.",
+ "operationId": "PostCommentsByDocumentNameAndDocumentId",
"parameters": [
{
- "name": "companyId",
- "in": "path",
- "description": "The id of the company.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the document to create the comment for.",
"required": true,
"schema": {
"type": "string",
@@ -5961,13 +10360,54 @@
}
}
],
+ "requestBody": {
+ "description": "The model to create the comment.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CommentForm"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "type": "string"
+ "$ref": "#/components/schemas/Comment"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -5988,19 +10428,19 @@
}
}
},
- "/companies/{companyId}/files/{fileId}/versions": {
- "get": {
+ "/documents/{documentId}/comments/{commentId}": {
+ "delete": {
"tags": [
- "CompanyFiles"
+ "DocumentComments"
],
- "summary": "Returns all file versions of the specified company file.",
- "description": "Returns all file versions of the specified company file.\r\n\r\nAny authenticated user.",
- "operationId": "GetCompanyFileVersions",
+ "summary": "Deletes the comment with the specified id on the document with the specified id.",
+ "description": "Deletes the comment with the specified id on the document with the specified id.\r\n The delete includes the reactions of the comment.\r\n If there are any replies to the comment, they will be deleted as well.\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteCommentByDocumentNameAndDocumentIdAndCommentId",
"parameters": [
{
- "name": "companyId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -6008,38 +10448,36 @@
}
},
{
- "name": "fileId",
+ "name": "commentId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the comment.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
- },
- {
- "$ref": "#/components/parameters/page"
- },
- {
- "$ref": "#/components/parameters/pageSize"
- },
- {
- "$ref": "#/components/parameters/orderby"
- },
- {
- "$ref": "#/components/parameters/filterby"
}
],
"responses": {
- "200": {
- "description": "OK",
+ "204": {
+ "description": "No Content"
+ },
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/FileVersion"
- }
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -6059,18 +10497,18 @@
"any": "true"
}
},
- "post": {
+ "get": {
"tags": [
- "CompanyFiles"
+ "DocumentComments"
],
- "summary": "Uploads a new version of the company file with the specified id.",
- "description": "Uploads a new version of an company file.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateCompanyFileVersion",
+ "summary": "Returns the comment with the specified id of the document with the specified id.",
+ "description": "Returns the comment with the specified id of the document with the specified id.\r\n\r\nAny authenticated user.",
+ "operationId": "GetCommentByDocumentNameAndDocumentIdAndCommentId",
"parameters": [
{
- "name": "companyId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -6078,9 +10516,9 @@
}
},
{
- "name": "fileId",
+ "name": "commentId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the comment.",
"required": true,
"schema": {
"type": "string",
@@ -6088,42 +10526,26 @@
}
}
],
- "requestBody": {
- "content": {
- "multipart/form-data": {
- "schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
- }
- }
- }
- },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileVersion"
+ "$ref": "#/components/schemas/Comment"
}
}
}
},
- "400": {
- "description": "Bad Request"
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -6139,21 +10561,19 @@
"x-access": {
"any": "true"
}
- }
- },
- "/companies/{companyId}/files/{fileId}/versions/{versionId}": {
- "get": {
+ },
+ "put": {
"tags": [
- "Company Files"
+ "DocumentComments"
],
- "summary": "Returns the company file version with the specified id.",
- "description": "\r\n\r\nAny authenticated user.",
- "operationId": "GetFilesVersionsByCompanyNameAndCompanyIdAndFileIdAndVersionId",
+ "summary": "Updates the comment with the specified id on the document with the specified id.",
+ "description": "To update a comment the user must either have at least `read` permissions on the specified document, be the creator of the comment or be admin.",
+ "operationId": "PutCommentByDocumentNameAndDocumentIdAndCommentId",
"parameters": [
{
- "name": "companyId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -6161,33 +10581,34 @@
}
},
{
- "name": "fileId",
+ "name": "commentId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the comment.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
- },
- {
- "name": "versionId",
- "in": "path",
- "description": "The id of the file version.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
+ }
+ ],
+ "requestBody": {
+ "description": "The model with the updated comment information.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/CommentPutForm"
+ }
}
- }
- ],
+ },
+ "required": true
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileVersion"
+ "$ref": "#/components/schemas/Comment"
}
}
}
@@ -6228,29 +10649,19 @@
}
}
},
- "/companies/{companyId}/files/{fileId}/versions/{versionId}/download": {
- "get": {
+ "/documents/{documentId}/comments/{commentId}/react": {
+ "post": {
"tags": [
- "CompanyFiles"
+ "DocumentComments"
],
- "summary": "Returns the content of the company file version with the specified id.",
- "description": "Returns the content of the company file version with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetCompanyFileVersionContent",
+ "summary": "Updates the reactions of the comment with the specified id on the document with the specified id.",
+ "description": "To update a reaction of a comment the user must have at least `read` permissions on the specified document.",
+ "operationId": "PostCommentReactByDocumentNameAndDocumentIdAndCommentId",
"parameters": [
{
- "name": "companyId",
- "in": "path",
- "description": "The id of the company.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -6258,9 +10669,9 @@
}
},
{
- "name": "versionId",
+ "name": "commentId",
"in": "path",
- "description": "The id of the file version.",
+ "description": "The id of the comment.",
"required": true,
"schema": {
"type": "string",
@@ -6268,14 +10679,37 @@
}
}
],
+ "requestBody": {
+ "description": "The model used to update the reactions of the comment with the specified id.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ReactionForm"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
- "200": {
- "description": "OK",
+ "204": {
+ "description": "No Content"
+ },
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
- "type": "string",
- "format": "binary"
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -6296,19 +10730,29 @@
}
}
},
- "/companies/{companyId}/tags": {
- "get": {
+ "/documents/{documentId}/comments/{commentId}/setresolved": {
+ "post": {
"tags": [
- "CompanyTags"
+ "DocumentComments"
],
- "summary": "Returns the tags of the company with the specified id.",
- "description": "Returns the tags of the company with the specified id ordered by name.\r\n To read tags of a company the user must have `company-master-data:read` permissions on the specified company.",
- "operationId": "GetCompanyTagsByCompanyId",
+ "summary": "Sets the resolved status of a comment.",
+ "description": "Sets the resolved status of a comment. Users need write permissions on the document to resolve/unresolve comments.\r\n Currently, the IsResolved property is only available for document comments.\r\n\r\nAny authenticated user.",
+ "operationId": "PostCommentSetResolvedByDocumentNameAndDocumentIdAndCommentId",
"parameters": [
{
- "name": "companyId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the company.",
+ "description": "The id of the document.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "commentId",
+ "in": "path",
+ "description": "The id of the comment.",
"required": true,
"schema": {
"type": "string",
@@ -6316,16 +10760,24 @@
}
}
],
+ "requestBody": {
+ "description": "The resolved status.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/SetResolvedForm"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/BaseTagModel"
- }
+ "$ref": "#/components/schemas/Comment"
}
}
}
@@ -6339,6 +10791,16 @@
}
}
}
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -6356,23 +10818,42 @@
}
}
},
- "/customfielddefinitions": {
+ "/documents/{documentId}/content": {
"get": {
"tags": [
- "CustomFields"
+ "Documents"
],
- "summary": "Returns all custom field definitions.",
- "description": "The 'linkedProjectIds' are the project Ids that are linked to the custom field definition.\r\n The 'linkedProjectIds' property will only be included when the 'includeLinkedProjectIds' parameter is set to 'true'.\r\n\r\nAny authenticated user.",
- "operationId": "GetCustomFieldDefinitions",
+ "summary": "Returns the current document content.",
+ "description": "Returns the current version as HTML by default. Use `format=markdown` for canonical Markdown, or `streamAsFile` to receive file content.\r\n The user must have at least `read` permission for the specified document.",
+ "operationId": "GetDocumentContentByDocumentId",
"parameters": [
{
- "name": "includeLinkedProjectIds",
+ "name": "documentId",
+ "in": "path",
+ "description": "The id of the document.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "streamAsFile",
"in": "query",
- "description": "Whether to include linked project Ids in the response.",
+ "description": "Whether to stream the content as a file. By default, the document's content is returned in a model containing a property `Content` holding the content as a string.",
"schema": {
"type": "boolean",
"default": false
}
+ },
+ {
+ "name": "format",
+ "in": "query",
+ "description": "The response format. Supported values are `html` and `markdown`.",
+ "schema": {
+ "type": "string",
+ "default": "html"
+ }
}
],
"responses": {
@@ -6381,60 +10862,26 @@
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/CustomFieldDefinitionWithSelectionOptionsAndLinkedProjectIds"
- }
+ "type": "string"
}
}
}
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- },
- "post": {
- "tags": [
- "CustomFields"
- ],
- "summary": "Creates a new custom field definition.",
- "description": "Creates a new custom field definition. This custom field definition can then be linked to project templates and to tasks.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
- "operationId": "PostCustomFieldDefinition",
- "requestBody": {
- "description": "The model containing the details for creating a new custom field definition.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/CustomFieldDefinitionPostForm"
- }
- }
},
- "required": true
- },
- "responses": {
- "200": {
- "description": "OK",
+ "204": {
+ "description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CustomFieldDefinitionWithSelectionOptions"
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
- "400": {
- "description": "Bad Request",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
@@ -6442,47 +10889,6 @@
}
}
}
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "admin": "true",
- "project-manage-config": "write"
- }
- }
- },
- "/customfielddefinitions/{customFieldDefinitionId}": {
- "delete": {
- "tags": [
- "CustomFields"
- ],
- "summary": "Deletes the custom field definition with the specified Id.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
- "operationId": "DeleteCustomFieldDefinitionById",
- "parameters": [
- {
- "name": "customFieldDefinitionId",
- "in": "path",
- "description": "The id of the custom field definition to delete.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- }
- ],
- "responses": {
- "204": {
- "description": "No Content"
},
"404": {
"description": "Not Found",
@@ -6506,22 +10912,21 @@
"v1"
],
"x-access": {
- "admin": "true",
- "project-manage-config": "write"
+ "any": "true"
}
},
"put": {
"tags": [
- "CustomFields"
+ "Documents"
],
- "summary": "Updates the custom field definition with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
- "operationId": "PutCustomFieldDefinitionById",
+ "summary": "Updates the specified document content.",
+ "description": "Updates document content using UTF-8 HTML or Markdown. Set `contentFormat` to `html` or `markdown`; HTML is the default. Canonical awork Markdown preserves safe editor structures during re-import.\r\n The user must have at least `write` permission for the specified document.",
+ "operationId": "PutDocumentContentByDocumentId",
"parameters": [
{
- "name": "customFieldDefinitionId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the custom field definition to update.",
+ "description": "The id of the document to update.",
"required": true,
"schema": {
"type": "string",
@@ -6530,15 +10935,13 @@
}
],
"requestBody": {
- "description": "The model to change the custom field definition.",
"content": {
- "application/json": {
+ "multipart/form-data": {
"schema": {
- "$ref": "#/components/schemas/CustomFieldDefinitionPutForm"
+ "$ref": "#/components/schemas/DocumentContentForm"
}
}
- },
- "required": true
+ }
},
"responses": {
"200": {
@@ -6546,7 +10949,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CustomFieldDefinition"
+ "$ref": "#/components/schemas/DocumentModel"
}
}
}
@@ -6560,16 +10963,6 @@
}
}
}
- },
- "404": {
- "description": "Not Found",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
}
},
"security": [
@@ -6583,24 +10976,23 @@
"v1"
],
"x-access": {
- "admin": "true",
- "project-manage-config": "write"
+ "any": "true"
}
}
},
- "/customfielddefinitions/{customFieldDefinitionId}/selectionoptions": {
+ "/documents/{documentId}/contributors": {
"post": {
"tags": [
- "CustomFields"
+ "Documents"
],
- "summary": "Creates a custom field selection option for an existing custom field definition.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
- "operationId": "PostCustomFieldDefinitionSelectionOptionsByCustomFieldDefinitionId",
+ "summary": "Adds contributors to the specified document.",
+ "description": "Adds contributors and grants them access to the document. Access for related entities is recalculated asynchronously.\r\n The user must have at least `write` permission for the specified document.",
+ "operationId": "PostDocumentContributorsByDocumentId",
"parameters": [
{
- "name": "customFieldDefinitionId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the custom field definition to add a selection option to.",
+ "description": "The id of the document to add contributors to.",
"required": true,
"schema": {
"type": "string",
@@ -6609,11 +11001,14 @@
}
],
"requestBody": {
- "description": "The model describing the selection option to create.",
+ "description": "The model used to add the document contributors.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CustomFieldSelectionOptionsForm"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ContributorPostForm"
+ }
}
}
},
@@ -6625,7 +11020,30 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CustomFieldSelectionOption"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/MinimalContributorModel"
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -6652,24 +11070,23 @@
"v1"
],
"x-access": {
- "admin": "true",
- "project-manage-config": "write"
+ "any": "true"
}
}
},
- "/customfielddefinitions/{customFieldDefinitionId}/selectionoptions/{selectionOptionId}": {
+ "/documents/{documentId}/contributors/{documentContributorId}": {
"delete": {
"tags": [
- "CustomFields"
+ "Documents"
],
- "summary": "Deletes a custom field selection option for an existing custom field definition.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
- "operationId": "DeleteCustomFieldDefinitionSelectionOptionByCustomFieldDefinitionIdAndSelectionOptionId",
+ "summary": "Deletes a contributor from the specified document.",
+ "description": "Deletes only explicit contributors; inherited contributors cannot be removed. Access for related entities is recalculated asynchronously.\r\n The user must have at least `write` permission for the specified document.",
+ "operationId": "DeleteDocumentContributorByDocumentIdAndDocumentContributorId",
"parameters": [
{
- "name": "customFieldDefinitionId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the custom field definition containing the selection option.",
+ "description": "The id of the document to delete the contributor from.",
"required": true,
"schema": {
"type": "string",
@@ -6677,9 +11094,9 @@
}
},
{
- "name": "selectionOptionId",
+ "name": "documentContributorId",
"in": "path",
- "description": "The id of the selection option to delete.",
+ "description": "The id of the document contributor to delete.",
"required": true,
"schema": {
"type": "string",
@@ -6691,6 +11108,26 @@
"204": {
"description": "No Content"
},
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
"404": {
"description": "Not Found",
"content": {
@@ -6713,22 +11150,21 @@
"v1"
],
"x-access": {
- "admin": "true",
- "project-manage-config": "write"
+ "any": "true"
}
},
"put": {
"tags": [
- "CustomFields"
+ "Documents"
],
- "summary": "Updates a custom field selection option for an existing custom field definition.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
- "operationId": "PutCustomFieldDefinitionSelectionOptionByCustomFieldDefinitionIdAndSelectionOptionId",
+ "summary": "Updates a document contributor's access.",
+ "description": "Updates the specified contributor's access to the document. Access for related entities is recalculated asynchronously.\r\n The user must have at least `write` permission for the specified document.",
+ "operationId": "PutDocumentContributorByDocumentIdAndDocumentContributorId",
"parameters": [
{
- "name": "customFieldDefinitionId",
+ "name": "documentId",
"in": "path",
- "description": "The id of the custom field definition containing the selection option.",
+ "description": "The id of the document to update.",
"required": true,
"schema": {
"type": "string",
@@ -6736,9 +11172,9 @@
}
},
{
- "name": "selectionOptionId",
+ "name": "documentContributorId",
"in": "path",
- "description": "The id of the selection option to update.",
+ "description": "The id of the document contributor to update.",
"required": true,
"schema": {
"type": "string",
@@ -6747,11 +11183,11 @@
}
],
"requestBody": {
- "description": "The model describing the updated selection option.",
+ "description": "The model used to update the document contributor's access.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CustomFieldSelectionOptionsForm"
+ "$ref": "#/components/schemas/ContributorForm"
}
}
},
@@ -6763,7 +11199,27 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CustomFieldSelectionOption"
+ "$ref": "#/components/schemas/MinimalContributorModel"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -6790,40 +11246,28 @@
"v1"
],
"x-access": {
- "admin": "true",
- "project-manage-config": "write"
+ "any": "true"
}
}
},
- "/documents": {
- "get": {
+ "/documents/{documentId}/duplicate": {
+ "post": {
"tags": [
"Documents"
],
- "summary": "Returns all documents.",
- "description": "The user must have at least `read` permissions to see a document.",
- "operationId": "GetDocuments",
+ "summary": "Duplicates the specified document.",
+ "description": "Duplicates the document's content, permissions, and child documents. Child duplication may complete asynchronously.\r\n The user must have at least `read` permission for the specified document.",
+ "operationId": "PostDocumentDuplicateByDocumentId",
"parameters": [
{
- "name": "includeTrashedDocuments",
- "in": "query",
- "description": "Whether to include trashed documents in the result.",
+ "name": "documentId",
+ "in": "path",
+ "description": "The id of the document to duplicate.",
+ "required": true,
"schema": {
- "type": "boolean",
- "default": false
+ "type": "string",
+ "format": "uuid"
}
- },
- {
- "$ref": "#/components/parameters/page"
- },
- {
- "$ref": "#/components/parameters/pageSize"
- },
- {
- "$ref": "#/components/parameters/orderby"
- },
- {
- "$ref": "#/components/parameters/filterby"
}
],
"responses": {
@@ -6832,10 +11276,37 @@
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/DocumentModel"
- }
+ "$ref": "#/components/schemas/DocumentModel"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -6854,22 +11325,39 @@
"x-access": {
"any": "true"
}
- },
+ }
+ },
+ "/documents/{documentId}/externalfiles": {
"post": {
"tags": [
- "Documents"
+ "Document Files"
+ ],
+ "summary": "Creates external file references for the specified document.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostExternalFilesByDocumentNameAndDocumentId",
+ "parameters": [
+ {
+ "name": "documentId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
],
- "summary": "Creates a new document with optional HTML or Markdown content.",
- "description": "When content is provided, set `contentFormat` to `html` or `markdown`. HTML is the default. Canonical awork Markdown preserves safe editor structures during re-import.\r\n\r\nAny authenticated user.",
- "operationId": "PostDocument",
"requestBody": {
"content": {
- "multipart/form-data": {
+ "application/json": {
"schema": {
- "$ref": "#/components/schemas/DocumentPostForm"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ExternalFileForm"
+ }
}
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -6877,7 +11365,30 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/DocumentModel"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -6898,39 +11409,40 @@
}
}
},
- "/documents/trash/{documentId}/restore": {
- "post": {
+ "/documents/{documentId}/files": {
+ "delete": {
"tags": [
- "Documents"
+ "Document Files"
],
- "summary": "Restores the document with the specified id from the trash.",
- "description": "Please note that restoring a document using this method will asynchronously and eventually update or recreate the document and the related entities such as document versions or its content.\r\n This operation is idempotent, if applied to an already restored document, it will return a NoContent result.\r\n \r\n The user must have at least `write` permissions for the specified document.",
- "operationId": "PostDocumentsTrashRestoreByDocumentId",
+ "summary": "Deletes all files and versions for the specified document.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByDocumentNameAndDocumentId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document to restore.",
+ "description": "The document id.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
- },
- {
- "name": "alsoRestoreChildren",
- "in": "query",
- "description": "Whether to also restore children documents.",
- "schema": {
- "type": "boolean",
- "default": true
- }
}
],
"responses": {
"204": {
"description": "No Content"
},
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
"401": {
"description": "Unauthorized",
"content": {
@@ -6940,6 +11452,16 @@
}
}
}
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -6955,21 +11477,18 @@
"x-access": {
"any": "true"
}
- }
- },
- "/documents/{documentId}": {
- "delete": {
+ },
+ "get": {
"tags": [
- "Documents"
+ "Document Files"
],
- "summary": "Deletes the document with the specified id.",
- "description": "This operation moves the document to the trash.\r\n The document itself is moved to the trash synchronously, while its children and related entities will be moved to the trash asynchronously.\r\n \r\n The user must have at least `manage` permissions for the specified document.",
- "operationId": "DeleteDocumentById",
+ "summary": "Returns all files of the specified document.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesByDocumentNameAndDocumentId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document to delete.",
"required": true,
"schema": {
"type": "string",
@@ -6977,18 +11496,31 @@
}
},
{
- "name": "alsoDeleteChildren",
- "in": "query",
- "description": "Whether to also delete children documents. If false, the children's parent references are updated to point to the deleted document's parent.",
- "schema": {
- "type": "boolean",
- "default": true
- }
+ "$ref": "#/components/parameters/page"
+ },
+ {
+ "$ref": "#/components/parameters/pageSize"
+ },
+ {
+ "$ref": "#/components/parameters/orderby"
+ },
+ {
+ "$ref": "#/components/parameters/filterby"
}
],
"responses": {
- "204": {
- "description": "No Content"
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ }
},
"401": {
"description": "Unauthorized",
@@ -7025,18 +11557,17 @@
"any": "true"
}
},
- "get": {
+ "post": {
"tags": [
- "Documents"
+ "Document Files"
],
- "summary": "Returns the document with the specified id.",
- "description": "The user must have at least `read` permissions for the specified document.",
- "operationId": "GetDocumentById",
+ "summary": "Uploads a file for the specified document.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByDocumentNameAndDocumentId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document to retrieve.",
"required": true,
"schema": {
"type": "string",
@@ -7044,19 +11575,28 @@
}
}
],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "$ref": "#/components/schemas/FileUploadModel"
+ }
+ }
+ }
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/DocumentModel"
+ "$ref": "#/components/schemas/FileInfo"
}
}
}
},
- "401": {
- "description": "Unauthorized",
+ "400": {
+ "description": "Bad Request",
"content": {
"application/json": {
"schema": {
@@ -7065,8 +11605,8 @@
}
}
},
- "404": {
- "description": "Not Found",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
@@ -7089,19 +11629,21 @@
"x-access": {
"any": "true"
}
- },
- "put": {
+ }
+ },
+ "/documents/{documentId}/files/byuploadid": {
+ "post": {
"tags": [
- "Documents"
+ "FileUpload"
],
- "summary": "Updates the document with the specified id.",
- "description": "The user must have at least `write` permissions for the specified document.",
- "operationId": "PutDocumentById",
+ "summary": "Creates a file from an upload id.",
+ "description": "After a file has been uploaded to an upload URL generated from the endpoint, this endpoint can be used to create a file document from the uploaded file by providing the upload id.\r\n\r\nAny authenticated user.",
+ "operationId": "PostUploadByUploadId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document to update.",
+ "description": "The id of the document to attach the file to.",
"required": true,
"schema": {
"type": "string",
@@ -7110,11 +11652,11 @@
}
],
"requestBody": {
- "description": "The document form data with the updated information.",
+ "description": "The model describing the uploaded file metadata.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/DocumentForm"
+ "$ref": "#/components/schemas/UploadByUploadIdForm"
}
}
},
@@ -7126,13 +11668,13 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/DocumentModel"
+ "$ref": "#/components/schemas/FileInfo"
}
}
}
},
- "400": {
- "description": "Bad Request",
+ "404": {
+ "description": "Not Found",
"content": {
"application/json": {
"schema": {
@@ -7140,9 +11682,65 @@
}
}
}
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/documents/{documentId}/files/byurl": {
+ "post": {
+ "tags": [
+ "Document Files"
+ ],
+ "summary": "Uploads a file from a public URL for the specified document.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByUrlByDocumentNameAndDocumentId",
+ "parameters": [
+ {
+ "name": "documentId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FilePostForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
},
- "401": {
- "description": "Unauthorized",
+ "400": {
+ "description": "Bad Request",
"content": {
"application/json": {
"schema": {
@@ -7151,8 +11749,8 @@
}
}
},
- "404": {
- "description": "Not Found",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
@@ -7177,19 +11775,29 @@
}
}
},
- "/documents/{documentId}/comments": {
+ "/documents/{documentId}/files/{fileId}": {
"delete": {
"tags": [
- "DocumentComments"
+ "Document Files"
],
- "summary": "Deletes all comments of the specified document.",
- "description": "Deletes all comments of the specified document.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteCommentsByDocumentNameAndDocumentId",
+ "summary": "Deletes the specified document file and its versions.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByDocumentNameAndDocumentIdAndFileId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document.",
+ "description": "The document id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "description": "The file id.",
"required": true,
"schema": {
"type": "string",
@@ -7201,6 +11809,16 @@
"204": {
"description": "No Content"
},
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
"401": {
"description": "Unauthorized",
"content": {
@@ -7210,6 +11828,16 @@
}
}
}
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -7228,11 +11856,11 @@
},
"get": {
"tags": [
- "DocumentComments"
+ "Document Files"
],
- "summary": "Returns all comments of the document with the specified id.",
- "description": "Returns all comments of the document with the specified id. The user needs read permissions on the document.\r\n\r\nAny authenticated user.",
- "operationId": "GetCommentsByDocumentNameAndDocumentId",
+ "summary": "Returns the file with the specified id of the document with the specified id.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesByDocumentNameAndDocumentIdAndFileId",
"parameters": [
{
"name": "documentId",
@@ -7245,16 +11873,14 @@
}
},
{
- "$ref": "#/components/parameters/page"
- },
- {
- "$ref": "#/components/parameters/pageSize"
- },
- {
- "$ref": "#/components/parameters/orderby"
- },
- {
- "$ref": "#/components/parameters/filterby"
+ "name": "fileId",
+ "in": "path",
+ "description": "The id of the file.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
}
],
"responses": {
@@ -7263,16 +11889,13 @@
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/Comment"
- }
+ "$ref": "#/components/schemas/FileInfo"
}
}
}
},
- "400": {
- "description": "Bad Request",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
@@ -7281,8 +11904,8 @@
}
}
},
- "401": {
- "description": "Unauthorized",
+ "404": {
+ "description": "Not Found",
"content": {
"application/json": {
"schema": {
@@ -7306,18 +11929,26 @@
"any": "true"
}
},
- "post": {
+ "put": {
"tags": [
- "DocumentComments"
+ "Document Files"
],
- "summary": "Creates a new comment on the document with the specified id.",
- "description": "Creates a new comment on the document with the specified id.\r\n A user can only create a comment for him/herself, except for admins and api users.\r\n \r\n To create a comment the user must have at least `read` permissions on the specified document.",
- "operationId": "PostCommentsByDocumentNameAndDocumentId",
+ "summary": "Updates metadata for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PutFilesByDocumentNameAndDocumentIdAndFileId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document to create the comment for.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
"required": true,
"schema": {
"type": "string",
@@ -7326,11 +11957,10 @@
}
],
"requestBody": {
- "description": "The model to create the comment.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/CommentForm"
+ "$ref": "#/components/schemas/FileInfoUpdateForm"
}
}
},
@@ -7342,7 +11972,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Comment"
+ "$ref": "#/components/schemas/FileInfo"
}
}
}
@@ -7393,19 +12023,18 @@
}
}
},
- "/documents/{documentId}/comments/{commentId}": {
- "delete": {
+ "/documents/{documentId}/files/{fileId}/copy": {
+ "post": {
"tags": [
- "DocumentComments"
+ "Document Files"
],
- "summary": "Deletes the comment with the specified id on the document with the specified id.",
- "description": "Deletes the comment with the specified id on the document with the specified id.\r\n The delete includes the reactions of the comment.\r\n If there are any replies to the comment, they will be deleted as well.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteCommentByDocumentNameAndDocumentIdAndCommentId",
+ "summary": "Copies the specified file to another document.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesCopyByDocumentNameAndDocumentIdAndFileId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -7413,9 +12042,8 @@
}
},
{
- "name": "commentId",
+ "name": "fileId",
"in": "path",
- "description": "The id of the comment.",
"required": true,
"schema": {
"type": "string",
@@ -7423,9 +12051,36 @@
}
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileCopyForm"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
- "204": {
- "description": "No Content"
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
},
"401": {
"description": "Unauthorized",
@@ -7461,19 +12116,20 @@
"x-access": {
"any": "true"
}
- },
+ }
+ },
+ "/documents/{documentId}/files/{fileId}/download": {
"get": {
"tags": [
- "DocumentComments"
+ "Document Files"
],
- "summary": "Returns the comment with the specified id of the document with the specified id.",
- "description": "Returns the comment with the specified id of the document with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetCommentByDocumentNameAndDocumentIdAndCommentId",
+ "summary": "Returns the latest content of the specified document file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesDownloadByDocumentNameAndDocumentIdAndFileId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -7481,14 +12137,36 @@
}
},
{
- "name": "commentId",
+ "name": "fileId",
"in": "path",
- "description": "The id of the comment.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
+ },
+ {
+ "name": "width",
+ "in": "query",
+ "schema": {
+ "type": "number",
+ "format": "double"
+ }
+ },
+ {
+ "name": "height",
+ "in": "query",
+ "schema": {
+ "type": "number",
+ "format": "double"
+ }
+ },
+ {
+ "name": "crop",
+ "in": "query",
+ "schema": {
+ "type": "boolean"
+ }
}
],
"responses": {
@@ -7497,7 +12175,18 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Comment"
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -7511,6 +12200,16 @@
}
}
}
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -7526,19 +12225,20 @@
"x-access": {
"any": "true"
}
- },
- "put": {
+ }
+ },
+ "/documents/{documentId}/files/{fileId}/shareurl": {
+ "get": {
"tags": [
- "DocumentComments"
+ "Document Files"
],
- "summary": "Updates the comment with the specified id on the document with the specified id.",
- "description": "To update a comment the user must either have at least `read` permissions on the specified document, be the creator of the comment or be admin.",
- "operationId": "PutCommentByDocumentNameAndDocumentIdAndCommentId",
+ "summary": "Returns a public URL for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesShareUrlByDocumentNameAndDocumentIdAndFileId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -7546,9 +12246,8 @@
}
},
{
- "name": "commentId",
+ "name": "fileId",
"in": "path",
- "description": "The id of the comment.",
"required": true,
"schema": {
"type": "string",
@@ -7556,24 +12255,13 @@
}
}
],
- "requestBody": {
- "description": "The model with the updated comment information.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/CommentPutForm"
- }
- }
- },
- "required": true
- },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Comment"
+ "type": "string"
}
}
}
@@ -7614,19 +12302,18 @@
}
}
},
- "/documents/{documentId}/comments/{commentId}/react": {
- "post": {
+ "/documents/{documentId}/files/{fileId}/versions": {
+ "get": {
"tags": [
- "DocumentComments"
+ "Document Files"
],
- "summary": "Updates the reactions of the comment with the specified id on the document with the specified id.",
- "description": "To update a reaction of a comment the user must have at least `read` permissions on the specified document.",
- "operationId": "PostCommentReactByDocumentNameAndDocumentIdAndCommentId",
+ "summary": "Returns all versions of the specified document file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsByDocumentNameAndDocumentIdAndFileId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -7634,31 +12321,41 @@
}
},
{
- "name": "commentId",
+ "name": "fileId",
"in": "path",
- "description": "The id of the comment.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ },
+ {
+ "$ref": "#/components/parameters/pageSize"
+ },
+ {
+ "$ref": "#/components/parameters/orderby"
+ },
+ {
+ "$ref": "#/components/parameters/filterby"
}
],
- "requestBody": {
- "description": "The model used to update the reactions of the comment with the specified id.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ReactionForm"
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileVersion"
+ }
+ }
}
}
},
- "required": true
- },
- "responses": {
- "204": {
- "description": "No Content"
- },
"401": {
"description": "Unauthorized",
"content": {
@@ -7693,21 +12390,18 @@
"x-access": {
"any": "true"
}
- }
- },
- "/documents/{documentId}/comments/{commentId}/setresolved": {
+ },
"post": {
"tags": [
- "DocumentComments"
+ "Document Files"
],
- "summary": "Sets the resolved status of a comment.",
- "description": "Sets the resolved status of a comment. Users need write permissions on the document to resolve/unresolve comments.\r\n Currently, the IsResolved property is only available for document comments.\r\n\r\nAny authenticated user.",
- "operationId": "PostCommentSetResolvedByDocumentNameAndDocumentIdAndCommentId",
+ "summary": "Uploads a new version of the specified document file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesVersionsByDocumentNameAndDocumentIdAndFileId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -7715,9 +12409,8 @@
}
},
{
- "name": "commentId",
+ "name": "fileId",
"in": "path",
- "description": "The id of the comment.",
"required": true,
"schema": {
"type": "string",
@@ -7726,15 +12419,13 @@
}
],
"requestBody": {
- "description": "The resolved status.",
"content": {
- "application/json": {
+ "multipart/form-data": {
"schema": {
- "$ref": "#/components/schemas/SetResolvedForm"
+ "$ref": "#/components/schemas/FileUploadModel"
}
}
- },
- "required": true
+ }
},
"responses": {
"200": {
@@ -7742,7 +12433,17 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/Comment"
+ "$ref": "#/components/schemas/FileVersion"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -7783,14 +12484,14 @@
}
}
},
- "/documents/{documentId}/content": {
+ "/documents/{documentId}/files/{fileId}/versions/{versionId}": {
"get": {
"tags": [
- "Documents"
+ "Document Files"
],
- "summary": "Returns the content of the current version of the document with the specified id.",
- "description": "The user must have at least `read` permissions for the specified document.",
- "operationId": "GetDocumentContentByDocumentId",
+ "summary": "Returns the document file version with the specified id.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsByDocumentNameAndDocumentIdAndFileIdAndVersionId",
"parameters": [
{
"name": "documentId",
@@ -7803,21 +12504,23 @@
}
},
{
- "name": "streamAsFile",
- "in": "query",
- "description": "Whether to stream the content as a file. By default, the document's content is returned in a model containing a property `Content` holding the content as a string.",
+ "name": "fileId",
+ "in": "path",
+ "description": "The id of the file.",
+ "required": true,
"schema": {
- "type": "boolean",
- "default": false
+ "type": "string",
+ "format": "uuid"
}
},
{
- "name": "format",
- "in": "query",
- "description": "The response format. Supported values are `html` and `markdown`.",
+ "name": "versionId",
+ "in": "path",
+ "description": "The id of the file version.",
+ "required": true,
"schema": {
"type": "string",
- "default": "html"
+ "format": "uuid"
}
}
],
@@ -7827,20 +12530,7 @@
"content": {
"application/json": {
"schema": {
- "type": "string"
- }
- }
- }
- },
- "204": {
- "description": "No Content"
- },
- "400": {
- "description": "Bad Request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
+ "$ref": "#/components/schemas/FileVersion"
}
}
}
@@ -7879,48 +12569,69 @@
"x-access": {
"any": "true"
}
- },
- "put": {
+ }
+ },
+ "/documents/{documentId}/files/{fileId}/versions/{versionId}/download": {
+ "get": {
"tags": [
- "Documents"
+ "Document Files"
],
- "summary": "Updates document content using UTF-8 HTML or Markdown.",
- "description": "Set `contentFormat` to `html` or `markdown`. HTML is the default. Canonical awork Markdown preserves safe editor structures during re-import.\r\n \r\n The user must have at least `write` permissions for the specified document.",
- "operationId": "PutDocumentContentByDocumentId",
+ "summary": "Returns the content of the specified document file version.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsDownloadByDocumentNameAndDocumentIdAndFileIdAndVersionId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document to update.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
- }
- ],
- "requestBody": {
- "content": {
- "multipart/form-data": {
- "schema": {
- "$ref": "#/components/schemas/DocumentContentForm"
- }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "versionId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
}
}
- },
+ ],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/DocumentModel"
+ "type": "string",
+ "format": "binary"
}
}
}
},
- "400": {
- "description": "Bad Request",
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
"content": {
"application/json": {
"schema": {
@@ -7945,19 +12656,19 @@
}
}
},
- "/documents/{documentId}/contributors": {
+ "/documents/{documentId}/teams": {
"post": {
"tags": [
"Documents"
],
- "summary": "Adds a list of document contributors to the document with the specified id.",
- "description": "Adding document contributors will grant them access to the document.\r\n There will be a recalculation of permissions for related entities considering the updated document contributor.\r\n \r\n The user must have at least `write` permissions for this document.",
- "operationId": "PostDocumentContributorsByDocumentId",
+ "summary": "Adds teams to the specified document.",
+ "description": "Adds teams and changes their access to the document. Access for related entities is recalculated asynchronously.\r\n The user must have at least `write` permission for the specified document.",
+ "operationId": "PostDocumentTeamsByDocumentId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document to add contributors to.",
+ "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -7966,13 +12677,13 @@
}
],
"requestBody": {
- "description": "The model used to add the document contributors.",
+ "description": "The model used to add document teams to the document.",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
- "$ref": "#/components/schemas/ContributorPostForm"
+ "$ref": "#/components/schemas/EntityToTeamPostForm"
}
}
}
@@ -7987,7 +12698,7 @@
"schema": {
"type": "array",
"items": {
- "$ref": "#/components/schemas/MinimalContributorModel"
+ "$ref": "#/components/schemas/MinimalEntityToTeamModel"
}
}
}
@@ -8039,19 +12750,19 @@
}
}
},
- "/documents/{documentId}/contributors/{documentContributorId}": {
+ "/documents/{documentId}/teams/{documentToTeamId}": {
"delete": {
"tags": [
"Documents"
],
- "summary": "Deletes the document contributor with the specified id from a document.",
- "description": "This operation cannot be performed on inherited document contributors, only explicit ones.\r\n There will be recalculation of permissions for related entities considering the deleted document contributor.\r\n \r\n The user must have at least `write` permissions for the specified document.",
- "operationId": "DeleteDocumentContributorByDocumentIdAndDocumentContributorId",
+ "summary": "Deletes a team from the specified document.",
+ "description": "Deletes only explicit document teams; inherited teams cannot be removed. Access for related entities is recalculated asynchronously.\r\n The user must have at least `write` permission for the specified document.",
+ "operationId": "DeleteDocumentTeamByDocumentIdAndDocumentToTeamId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document to delete the contributor from.",
+ "description": "The id of the document to delete the team from.",
"required": true,
"schema": {
"type": "string",
@@ -8059,9 +12770,9 @@
}
},
{
- "name": "documentContributorId",
+ "name": "documentToTeamId",
"in": "path",
- "description": "The id of the document contributor to delete.",
+ "description": "The id of the document to team connection.",
"required": true,
"schema": {
"type": "string",
@@ -8122,14 +12833,14 @@
"tags": [
"Documents"
],
- "summary": "Updates the access of a document contributor with the specified id to a document.",
- "description": "Updating a document contributor will affect their access to the document.\r\n There will be a recalculation of permissions for related entities considering the updated document contributor.\r\n \r\n The user must have at least `write` permissions for the specified document.",
- "operationId": "PutDocumentContributorByDocumentIdAndDocumentContributorId",
+ "summary": "Updates a document team's access.",
+ "description": "Updates the specified team's access to the document. Access for related entities is recalculated asynchronously.\r\n The user must have at least `write` permission for the specified document.",
+ "operationId": "PutDocumentTeamByDocumentIdAndDocumentToTeamId",
"parameters": [
{
"name": "documentId",
"in": "path",
- "description": "The id of the document to update.",
+ "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -8137,9 +12848,9 @@
}
},
{
- "name": "documentContributorId",
+ "name": "documentToTeamId",
"in": "path",
- "description": "The id of the document contributor to update.",
+ "description": "The id of the document to team connection to update.",
"required": true,
"schema": {
"type": "string",
@@ -8148,11 +12859,11 @@
}
],
"requestBody": {
- "description": "The model used to update the document contributor's access.",
+ "description": "The model used to update document teams of a document.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/ContributorForm"
+ "$ref": "#/components/schemas/EntityToTeamForm"
}
}
},
@@ -8164,7 +12875,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/MinimalContributorModel"
+ "$ref": "#/components/schemas/MinimalEntityToTeamModel"
}
}
}
@@ -8215,24 +12926,26 @@
}
}
},
- "/documents/{documentId}/duplicate": {
- "post": {
+ "/documentspaces": {
+ "get": {
"tags": [
- "Documents"
+ "DocumentSpaces"
],
- "summary": "Duplicates the document with the specified id.",
- "description": "Duplicates the document content, permissions and children documents.\r\n \r\n The user has at least `read` permissions for the specified document.",
- "operationId": "PostDocumentDuplicateByDocumentId",
+ "summary": "Returns all document spaces.",
+ "description": "Returns document spaces visible to the current user.\r\n The user must have at least `read` permission for each returned document space.",
+ "operationId": "GetDocumentSpaces",
"parameters": [
{
- "name": "documentId",
- "in": "path",
- "description": "The id of the document to duplicate.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
+ "$ref": "#/components/parameters/page"
+ },
+ {
+ "$ref": "#/components/parameters/pageSize"
+ },
+ {
+ "$ref": "#/components/parameters/orderby"
+ },
+ {
+ "$ref": "#/components/parameters/filterby"
}
],
"responses": {
@@ -8241,37 +12954,10 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/DocumentModel"
- }
- }
- }
- },
- "400": {
- "description": "Bad Request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
- "401": {
- "description": "Unauthorized",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
- "404": {
- "description": "Not Found",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/DocumentSpaceModel"
+ }
}
}
}
@@ -8290,48 +12976,24 @@
"x-access": {
"any": "true"
}
- }
- },
- "/documents/{documentId}/externalfiles": {
+ },
"post": {
"tags": [
- "DocumentFiles"
- ],
- "summary": "Endpoint to batch create external files without uploading.",
- "description": "Endpoint to create file infos with batch operation.\nCreated file infos don't have a version.\r\n\r\nAny authenticated user.",
- "operationId": "CreateExternalFiles",
- "parameters": [
- {
- "name": "documentId",
- "in": "path",
- "description": "The id of the document.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- }
+ "DocumentSpaces"
],
+ "summary": "Creates a document space.",
+ "description": "Creates a document space and assigns the requested workspace access level. The space is inserted into the workspace order.\r\n\r\nThe user must be an admin.",
+ "operationId": "PostDocumentSpace",
"requestBody": {
- "description": "List of file forms.",
+ "description": "The model used to create the document space.",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ExternalFileForm"
- }
- }
- },
- "application/*+json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ExternalFileForm"
- }
+ "$ref": "#/components/schemas/DocumentSpaceForm"
}
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -8339,50 +13001,30 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "$ref": "#/components/schemas/DocumentSpaceModel"
}
}
}
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- }
- },
- "/documents/{documentId}/files": {
- "delete": {
- "tags": [
- "DocumentFiles"
- ],
- "summary": "Deletes the files of the specified document.",
- "description": "Deletes the metadata and the different versions of the files.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteDocumentFiles",
- "parameters": [
- {
- "name": "documentId",
- "in": "path",
- "description": "The id of the document.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
}
- }
- ],
- "responses": {
- "204": {
- "description": "No Content"
}
},
"security": [
@@ -8396,50 +13038,50 @@
"v1"
],
"x-access": {
- "any": "true"
+ "admin": "true"
}
- },
- "get": {
+ }
+ },
+ "/documentspaces/{documentSpaceId}": {
+ "delete": {
"tags": [
- "DocumentFiles"
+ "DocumentSpaces"
],
- "summary": "Returns all files of the document with the specified id.",
- "description": "Returns all file metadata of the document with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetDocumentFiles",
+ "summary": "Deletes the specified document space.",
+ "description": "Deletes the specified document space. Documents in the space and related entities, such as comments, are permanently deleted asynchronously.\r\n\r\nThe user must be an admin.",
+ "operationId": "DeleteDocumentSpaceById",
"parameters": [
{
- "name": "documentId",
+ "name": "documentSpaceId",
"in": "path",
- "description": "The id of the document.",
+ "description": "The id of the document space to delete.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
- },
- {
- "$ref": "#/components/parameters/page"
- },
- {
- "$ref": "#/components/parameters/pageSize"
- },
- {
- "$ref": "#/components/parameters/orderby"
- },
- {
- "$ref": "#/components/parameters/filterby"
}
],
"responses": {
- "200": {
- "description": "OK",
+ "204": {
+ "description": "No Content"
+ },
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/FileInfo"
- }
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -8456,21 +13098,21 @@
"v1"
],
"x-access": {
- "any": "true"
+ "admin": "true"
}
},
- "post": {
+ "get": {
"tags": [
- "DocumentFiles"
+ "DocumentSpaces"
],
- "summary": "Creates a new document file for the document with the specified id..",
- "description": "Uploads a new document file for the document with the specified id.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateDocumentFile",
+ "summary": "Returns the specified document space.",
+ "description": "Returns the specified document space when it is visible to the current user.\r\n The user must have at least `read` permission for the specified document space.",
+ "operationId": "GetDocumentSpaceById",
"parameters": [
{
- "name": "documentId",
+ "name": "documentSpaceId",
"in": "path",
- "description": "The id of the document.",
+ "description": "The id of the document space to retrieve.",
"required": true,
"schema": {
"type": "string",
@@ -8478,42 +13120,36 @@
}
}
],
- "requestBody": {
- "content": {
- "multipart/form-data": {
- "schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
- }
- }
- }
- },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "$ref": "#/components/schemas/DocumentModel"
}
}
}
},
- "400": {
- "description": "Bad Request"
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -8529,21 +13165,19 @@
"x-access": {
"any": "true"
}
- }
- },
- "/documents/{documentId}/files/byuploadid": {
- "post": {
+ },
+ "put": {
"tags": [
- "FileUpload"
+ "DocumentSpaces"
],
- "summary": "Creates a file from an upload id.",
- "description": "After a file has been uploaded to an upload URL generated from the endpoint, this endpoint can be used to create a file document from the uploaded file by providing the upload id.\r\n\r\nAny authenticated user.",
- "operationId": "PostUploadByUploadId",
+ "summary": "Updates the specified document space.",
+ "description": "Updates the space name, icon, color, order, or workspace access level and reapplies its position in the workspace order.\r\n\r\nThe user must be an admin.",
+ "operationId": "PutDocumentSpaceById",
"parameters": [
{
- "name": "documentId",
+ "name": "documentSpaceId",
"in": "path",
- "description": "The id of the document to attach the file to.",
+ "description": "The id of the document space.",
"required": true,
"schema": {
"type": "string",
@@ -8552,11 +13186,11 @@
}
],
"requestBody": {
- "description": "The model describing the uploaded file metadata.",
+ "description": "The model used to update the document space.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/UploadByUploadIdForm"
+ "$ref": "#/components/schemas/DocumentSpaceForm"
}
}
},
@@ -8568,7 +13202,17 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "$ref": "#/components/schemas/DocumentSpaceModel"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -8595,23 +13239,23 @@
"v1"
],
"x-access": {
- "any": "true"
+ "admin": "true"
}
}
},
- "/documents/{documentId}/files/byurl": {
+ "/documentspaces/{documentSpaceId}/contributors": {
"post": {
"tags": [
- "DocumentFiles"
+ "DocumentSpaces"
],
- "summary": "Uploads a new file by providing an url.",
- "description": "The file needs to be a public available url.\nThe file size must not exceed 100MB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateDocumentFileByUrl",
+ "summary": "Adds contributors to the specified document space.",
+ "description": "Adds contributors and changes their access to the document space and its documents.\r\n\r\nThe user must be an admin.",
+ "operationId": "PostDocumentSpaceContributorsByDocumentSpaceId",
"parameters": [
{
- "name": "documentId",
+ "name": "documentSpaceId",
"in": "path",
- "description": "The id of the document the file is linked to.",
+ "description": "The id of the document space.",
"required": true,
"schema": {
"type": "string",
@@ -8620,19 +13264,18 @@
}
],
"requestBody": {
- "description": "The url, name and description of the file.",
+ "description": "The model with the list of contributors to add.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FilePostForm"
- }
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FilePostForm"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/ContributorPostForm"
+ }
}
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -8640,7 +13283,37 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "$ref": "#/components/schemas/MinimalContributorModel"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -8657,23 +13330,23 @@
"v1"
],
"x-access": {
- "any": "true"
+ "admin": "true"
}
}
},
- "/documents/{documentId}/files/{fileId}": {
+ "/documentspaces/{documentSpaceId}/contributors/{documentSpaceContributorId}": {
"delete": {
"tags": [
- "DocumentFiles"
+ "DocumentSpaces"
],
- "summary": "Deletes the document file with the specified id.",
- "description": "Deletes the metadata and the different versions of the file.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteDocumentFile",
+ "summary": "Deletes a document space contributor.",
+ "description": "Deletes the specified contributor and removes their access to the document space and its documents.\r\n\r\nThe user must be an admin.",
+ "operationId": "DeleteDocumentSpaceContributorByDocumentSpaceIdAndDocumentSpaceContributorId",
"parameters": [
{
- "name": "documentId",
+ "name": "documentSpaceId",
"in": "path",
- "description": "The id of the document.",
+ "description": "The id of the document space.",
"required": true,
"schema": {
"type": "string",
@@ -8681,9 +13354,9 @@
}
},
{
- "name": "fileId",
+ "name": "documentSpaceContributorId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the document space contributor to delete.",
"required": true,
"schema": {
"type": "string",
@@ -8694,6 +13367,36 @@
"responses": {
"204": {
"description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -8707,21 +13410,21 @@
"v1"
],
"x-access": {
- "any": "true"
+ "admin": "true"
}
},
- "get": {
+ "put": {
"tags": [
- "Document Files"
+ "DocumentSpaces"
],
- "summary": "Returns the file with the specified id of the document with the specified id.",
- "description": "\r\n\r\nAny authenticated user.",
- "operationId": "GetFilesByDocumentNameAndDocumentIdAndFileId",
+ "summary": "Updates a document space contributor's access.",
+ "description": "Updates the specified contributor's access to the document space and its documents.\r\n\r\nThe user must be an admin.",
+ "operationId": "PutDocumentSpaceContributorByDocumentSpaceIdAndDocumentSpaceContributorId",
"parameters": [
{
- "name": "documentId",
+ "name": "documentSpaceId",
"in": "path",
- "description": "The id of the document.",
+ "description": "The id of the document space.",
"required": true,
"schema": {
"type": "string",
@@ -8729,9 +13432,9 @@
}
},
{
- "name": "fileId",
+ "name": "documentSpaceContributorId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the document space contributor.",
"required": true,
"schema": {
"type": "string",
@@ -8739,13 +13442,34 @@
}
}
],
+ "requestBody": {
+ "description": "The model with the updated contributor data.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ContributorForm"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "$ref": "#/components/schemas/MinimalContributorModel"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -8782,21 +13506,23 @@
"v1"
],
"x-access": {
- "any": "true"
+ "admin": "true"
}
- },
- "put": {
+ }
+ },
+ "/documentspaces/{documentSpaceId}/documents": {
+ "get": {
"tags": [
- "DocumentFiles"
+ "Documents"
],
- "summary": "Updates the metadata of the document file with the specified id.",
- "description": "Updates the metadata of the document file with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "UpdateDocumentFile",
+ "summary": "Returns documents in the specified document space.",
+ "description": "Returns non-trashed documents visible in the specified document space.\r\n The user must have at least `read` permission for the specified document space.",
+ "operationId": "GetDocumentSpaceDocumentsByDocumentSpaceId",
"parameters": [
{
- "name": "documentId",
+ "name": "documentSpaceId",
"in": "path",
- "description": "The id of the document.",
+ "description": "The id of the document space to retrieve documents from.",
"required": true,
"schema": {
"type": "string",
@@ -8804,38 +13530,28 @@
}
},
{
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
+ "$ref": "#/components/parameters/page"
+ },
+ {
+ "$ref": "#/components/parameters/pageSize"
+ },
+ {
+ "$ref": "#/components/parameters/orderby"
+ },
+ {
+ "$ref": "#/components/parameters/filterby"
}
],
- "requestBody": {
- "description": "The model to update the file with the specified id.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/FileInfoUpdateForm"
- }
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileInfoUpdateForm"
- }
- }
- }
- },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/DocumentModel"
+ }
}
}
}
@@ -8856,19 +13572,19 @@
}
}
},
- "/documents/{documentId}/files/{fileId}/copy": {
- "post": {
+ "/documentspaces/{documentSpaceId}/documents/trash": {
+ "get": {
"tags": [
- "DocumentFiles"
+ "Documents"
],
- "summary": "Copies the file to a new document.",
- "description": "Copies the file to a new document (meta and content).\r\n\r\nAny authenticated user.",
- "operationId": "CopyToDocument",
+ "summary": "Returns trashed documents in a document space.",
+ "description": "Returns deleted documents visible in the specified document space.\r\n The user must have at least `read` permission for the specified document space.",
+ "operationId": "GetDocumentSpaceDocumentsTrashByDocumentSpaceId",
"parameters": [
{
- "name": "documentId",
+ "name": "documentSpaceId",
"in": "path",
- "description": "The id of the document.",
+ "description": "The id of the document space to retrieve trashed documents from.",
"required": true,
"schema": {
"type": "string",
@@ -8876,9 +13592,61 @@
}
},
{
- "name": "fileId",
+ "$ref": "#/components/parameters/page"
+ },
+ {
+ "$ref": "#/components/parameters/pageSize"
+ },
+ {
+ "$ref": "#/components/parameters/orderby"
+ },
+ {
+ "$ref": "#/components/parameters/filterby"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/DocumentModel"
+ }
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/documentspaces/{documentSpaceId}/teams": {
+ "post": {
+ "tags": [
+ "DocumentSpaces"
+ ],
+ "summary": "Adds teams to the specified document space.",
+ "description": "Adds teams and changes their access to the document space and its documents.\r\n\r\nThe user must be an admin.",
+ "operationId": "PostDocumentSpaceTeamsByDocumentSpaceId",
+ "parameters": [
+ {
+ "name": "documentSpaceId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the document space.",
"required": true,
"schema": {
"type": "string",
@@ -8887,19 +13655,18 @@
}
],
"requestBody": {
- "description": "The model to change the entity information of the file.",
+ "description": "The model with the list of teams to add.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileCopyForm"
- }
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileCopyForm"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/EntityToTeamPostForm"
+ }
}
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -8907,7 +13674,37 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "$ref": "#/components/schemas/MinimalEntityToTeamModel"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -8924,23 +13721,23 @@
"v1"
],
"x-access": {
- "any": "true"
+ "admin": "true"
}
}
},
- "/documents/{documentId}/files/{fileId}/download": {
- "get": {
+ "/documentspaces/{documentSpaceId}/teams/{documentSpaceToTeamId}": {
+ "delete": {
"tags": [
- "DocumentFiles"
+ "DocumentSpaces"
],
- "summary": "Returns the content of the document file with the specified id.",
- "description": "Returns the content of the document file. Uses the latest file version.\nIf the document file is an image and the width and height are set,\nthe image will be resized before it is returned.\r\n\r\nAny authenticated user.",
- "operationId": "GetDocumentFileContent",
+ "summary": "Deletes a team from the specified document space.",
+ "description": "Deletes the specified team and removes its access to the document space and its documents.\r\n\r\nThe user must be an admin.",
+ "operationId": "DeleteDocumentSpaceTeamByDocumentSpaceIdAndDocumentSpaceToTeamId",
"parameters": [
{
- "name": "documentId",
+ "name": "documentSpaceId",
"in": "path",
- "description": "The id of the document.",
+ "description": "The id of the document space.",
"required": true,
"schema": {
"type": "string",
@@ -8948,50 +13745,46 @@
}
},
{
- "name": "fileId",
+ "name": "documentSpaceToTeamId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the document space to team connection.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No Content"
},
- {
- "name": "width",
- "in": "query",
- "description": "Set width to resize.",
- "schema": {
- "type": "number",
- "format": "double"
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
}
},
- {
- "name": "height",
- "in": "query",
- "description": "Set height to resize.",
- "schema": {
- "type": "number",
- "format": "double"
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
}
},
- {
- "name": "crop",
- "in": "query",
- "description": "Whether to crop the image when resizing it.",
- "schema": {
- "type": "boolean"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
+ "404": {
+ "description": "Not Found",
"content": {
"application/json": {
"schema": {
- "type": "string",
- "format": "binary"
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -9008,23 +13801,21 @@
"v1"
],
"x-access": {
- "any": "true"
+ "admin": "true"
}
- }
- },
- "/documents/{documentId}/files/{fileId}/shareurl": {
- "get": {
+ },
+ "put": {
"tags": [
- "DocumentFiles"
+ "DocumentSpaces"
],
- "summary": "Returns an url to share the file.",
- "description": "Returns a url to share the file.\r\n\r\nAny authenticated user.",
- "operationId": "GetPublicToken",
+ "summary": "Updates a document space team's access.",
+ "description": "Updates the specified team's access to the document space and its documents.\r\n\r\nThe user must be an admin.",
+ "operationId": "PutDocumentSpaceTeamByDocumentSpaceIdAndDocumentSpaceToTeamId",
"parameters": [
{
- "name": "documentId",
+ "name": "documentSpaceId",
"in": "path",
- "description": "The id of the document.",
+ "description": "The id of the document space.",
"required": true,
"schema": {
"type": "string",
@@ -9032,9 +13823,9 @@
}
},
{
- "name": "fileId",
+ "name": "documentSpaceToTeamId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the document space to team connection.",
"required": true,
"schema": {
"type": "string",
@@ -9042,13 +13833,54 @@
}
}
],
+ "requestBody": {
+ "description": "The model with the updated team access.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/EntityToTeamForm"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "type": "string"
+ "$ref": "#/components/schemas/MinimalEntityToTeamModel"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -9065,62 +13897,25 @@
"v1"
],
"x-access": {
- "any": "true"
+ "admin": "true"
}
}
},
- "/documents/{documentId}/files/{fileId}/versions": {
- "get": {
+ "/files/generateuploadurl": {
+ "post": {
"tags": [
- "DocumentFiles"
- ],
- "summary": "Returns all file versions of the specified document file.",
- "description": "Returns all file versions of the specified document file.\r\n\r\nAny authenticated user.",
- "operationId": "GetDocumentFileVersions",
- "parameters": [
- {
- "name": "documentId",
- "in": "path",
- "description": "The id of the document.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "$ref": "#/components/parameters/page"
- },
- {
- "$ref": "#/components/parameters/pageSize"
- },
- {
- "$ref": "#/components/parameters/orderby"
- },
- {
- "$ref": "#/components/parameters/filterby"
- }
+ "FileUpload"
],
+ "summary": "Generates a URL to upload a file to.",
+ "description": "Generates a URL that can be used to upload a file. Use the returned upload id to create a file entry. See for more information.\r\n\r\nAny authenticated user.",
+ "operationId": "PostGenerateUploadURL",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/FileVersion"
- }
+ "$ref": "#/components/schemas/GenerateUploadUrlResponseModel"
}
}
}
@@ -9139,29 +13934,20 @@
"x-access": {
"any": "true"
}
- },
- "post": {
+ }
+ },
+ "/files/images/agents/{agentId}": {
+ "delete": {
"tags": [
- "DocumentFiles"
+ "Images"
],
- "summary": "Uploads a new version of the document file with the specified id.",
- "description": "Uploads a new version of an document file.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateDocumentFileVersion",
+ "summary": "Deletes the profile image of the agent with the specified id.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesImagesByAgentNameAndAgentId",
"parameters": [
{
- "name": "documentId",
- "in": "path",
- "description": "The id of the document.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -9169,42 +13955,29 @@
}
}
],
- "requestBody": {
- "content": {
- "multipart/form-data": {
- "schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
- }
- },
- "responses": {
- "200": {
- "description": "OK",
+ },
+ "404": {
+ "description": "Not Found",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileVersion"
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
- },
- "400": {
- "description": "Bad Request"
}
},
"security": [
@@ -9220,21 +13993,18 @@
"x-access": {
"any": "true"
}
- }
- },
- "/documents/{documentId}/files/{fileId}/versions/{versionId}": {
+ },
"get": {
"tags": [
- "Document Files"
+ "Images"
],
- "summary": "Returns the document file version with the specified id.",
- "description": "\r\n\r\nAny authenticated user.",
- "operationId": "GetFilesVersionsByDocumentNameAndDocumentIdAndFileIdAndVersionId",
+ "summary": "Returns the image of the agent with the specified id.",
+ "description": "\r\n\r\nAllows unauthenticated access.",
+ "operationId": "GetFilesImagesByAgentNameAndAgentId",
"parameters": [
{
- "name": "documentId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -9242,23 +14012,26 @@
}
},
{
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
- "required": true,
+ "name": "width",
+ "in": "query",
"schema": {
- "type": "string",
- "format": "uuid"
+ "type": "number",
+ "format": "double"
}
},
{
- "name": "versionId",
- "in": "path",
- "description": "The id of the file version.",
- "required": true,
+ "name": "height",
+ "in": "query",
"schema": {
- "type": "string",
- "format": "uuid"
+ "type": "number",
+ "format": "double"
+ }
+ },
+ {
+ "name": "crop",
+ "in": "query",
+ "schema": {
+ "type": "boolean"
}
}
],
@@ -9268,7 +14041,28 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileVersion"
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "304": {
+ "description": "Not Modified",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -9305,43 +14099,20 @@
"v1"
],
"x-access": {
- "any": "true"
+ "anonymous": "true"
}
- }
- },
- "/documents/{documentId}/files/{fileId}/versions/{versionId}/download": {
- "get": {
+ },
+ "post": {
"tags": [
- "DocumentFiles"
+ "Images"
],
- "summary": "Returns the content of the document file version with the specified id.",
- "description": "Returns the content of the document file version with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetDocumentFileVersionContent",
+ "summary": "Uploads a new profile image.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesImagesByAgentNameAndAgentId",
"parameters": [
{
- "name": "documentId",
- "in": "path",
- "description": "The id of the document.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "versionId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the file version.",
"required": true,
"schema": {
"type": "string",
@@ -9349,14 +14120,42 @@
}
}
],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "$ref": "#/components/schemas/FileUploadModel"
+ }
+ }
+ }
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "type": "string",
- "format": "binary"
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -9377,19 +14176,18 @@
}
}
},
- "/documents/{documentId}/teams": {
+ "/files/images/agents/{agentId}/byuploadid": {
"post": {
"tags": [
- "Documents"
+ "Images"
],
- "summary": "Adds a list of document teams to a document with the specified id.",
- "description": "Adding document teams will affect their access to the document.\r\n Recalculation of permissions for related entities considering the new document teams\r\n will be done in the background asynchronously.\r\n \r\n The user must have at least `write` permissions for the specified document.",
- "operationId": "PostDocumentTeamsByDocumentId",
+ "summary": "Sets a profile image from a previously uploaded file.",
+ "description": "After an image has been uploaded to an upload URL generated by the /files/generateuploadurl endpoint, this endpoint sets the uploaded image as the profile image of the agent by providing the upload id.\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesImagesByUploadIdByAgentNameAndAgentId",
"parameters": [
{
- "name": "documentId",
+ "name": "agentId",
"in": "path",
- "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -9398,14 +14196,10 @@
}
],
"requestBody": {
- "description": "The model used to add document teams to the document.",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/EntityToTeamPostForm"
- }
+ "$ref": "#/components/schemas/UploadByUploadIdForm"
}
}
},
@@ -9417,10 +14211,7 @@
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/MinimalEntityToTeamModel"
- }
+ "$ref": "#/components/schemas/FileInfo"
}
}
}
@@ -9444,16 +14235,6 @@
}
}
}
- },
- "404": {
- "description": "Not Found",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
}
},
"security": [
@@ -9471,29 +14252,18 @@
}
}
},
- "/documents/{documentId}/teams/{documentToTeamId}": {
+ "/files/images/companies/{companyId}": {
"delete": {
"tags": [
- "Documents"
+ "Images"
],
- "summary": "Deletes the document team with the specified id from a document.",
- "description": "Deletes the specific document team from a document. Deleting a document team will affect their access to the document.\r\n This operation cannot be performed on inherited document teams, only explicit ones.\r\n There will be recalculation of permissions for related entities considering the deleted document team.\r\n \r\n The user must have at least `write` permissions for the specified document.",
- "operationId": "DeleteDocumentTeamByDocumentIdAndDocumentToTeamId",
+ "summary": "Deletes the profile image of the company with the specified id.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesImagesByCompanyNameAndCompanyId",
"parameters": [
{
- "name": "documentId",
- "in": "path",
- "description": "The id of the document to delete the team from.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "documentToTeamId",
+ "name": "companyId",
"in": "path",
- "description": "The id of the document to team connection.",
"required": true,
"schema": {
"type": "string",
@@ -9505,16 +14275,6 @@
"204": {
"description": "No Content"
},
- "400": {
- "description": "Bad Request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
"401": {
"description": "Unauthorized",
"content": {
@@ -9550,18 +14310,17 @@
"any": "true"
}
},
- "put": {
+ "get": {
"tags": [
- "Documents"
+ "Images"
],
- "summary": "Updates the document team with the specified id.",
- "description": "Updates the specific document team of a document. Updating a document team will affect their access to the document.\r\n There will be recalculation of permissions for related entities considering the updated document team.\r\n \r\n The user must have at least `write` permissions for this document.",
- "operationId": "PutDocumentTeamByDocumentIdAndDocumentToTeamId",
+ "summary": "Returns the image of the company with the specified id.",
+ "description": "\r\n\r\nAllows unauthenticated access.",
+ "operationId": "GetFilesImagesByCompanyNameAndCompanyId",
"parameters": [
{
- "name": "documentId",
+ "name": "companyId",
"in": "path",
- "description": "The id of the document.",
"required": true,
"schema": {
"type": "string",
@@ -9569,34 +14328,47 @@
}
},
{
- "name": "documentToTeamId",
- "in": "path",
- "description": "The id of the document to team connection to update.",
- "required": true,
+ "name": "width",
+ "in": "query",
"schema": {
- "type": "string",
- "format": "uuid"
+ "type": "number",
+ "format": "double"
}
- }
- ],
- "requestBody": {
- "description": "The model used to update document teams of a document.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/EntityToTeamForm"
- }
+ },
+ {
+ "name": "height",
+ "in": "query",
+ "schema": {
+ "type": "number",
+ "format": "double"
}
},
- "required": true
- },
+ {
+ "name": "crop",
+ "in": "query",
+ "schema": {
+ "type": "boolean"
+ }
+ }
+ ],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/MinimalEntityToTeamModel"
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "304": {
+ "description": "Not Modified",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -9643,42 +14415,63 @@
"v1"
],
"x-access": {
- "any": "true"
+ "anonymous": "true"
}
- }
- },
- "/documentspaces": {
- "get": {
+ },
+ "post": {
"tags": [
- "DocumentSpaces"
+ "Images"
],
- "summary": "Returns all document spaces.",
- "description": "The user must have at least `read` permissions to see a document space.",
- "operationId": "GetDocumentSpaces",
+ "summary": "Uploads a new profile image.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesImagesByCompanyNameAndCompanyId",
"parameters": [
{
- "$ref": "#/components/parameters/page"
- },
- {
- "$ref": "#/components/parameters/pageSize"
- },
- {
- "$ref": "#/components/parameters/orderby"
- },
- {
- "$ref": "#/components/parameters/filterby"
+ "name": "companyId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
}
],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "$ref": "#/components/schemas/FileUploadModel"
+ }
+ }
+ }
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/DocumentSpaceModel"
- }
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -9697,20 +14490,32 @@
"x-access": {
"any": "true"
}
- },
+ }
+ },
+ "/files/images/companies/{companyId}/byuploadid": {
"post": {
"tags": [
- "DocumentSpaces"
+ "Images"
+ ],
+ "summary": "Sets a profile image from a previously uploaded file.",
+ "description": "After an image has been uploaded to an upload URL generated by the /files/generateuploadurl endpoint, this endpoint sets the uploaded image as the profile image of the company by providing the upload id.\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesImagesByUploadIdByCompanyNameAndCompanyId",
+ "parameters": [
+ {
+ "name": "companyId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
],
- "summary": "Creates a new document space.",
- "description": "\r\n\r\nThe user must be an admin.",
- "operationId": "PostDocumentSpace",
"requestBody": {
- "description": "The model used to create the document space.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/DocumentSpaceForm"
+ "$ref": "#/components/schemas/UploadByUploadIdForm"
}
}
},
@@ -9722,7 +14527,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/DocumentSpaceModel"
+ "$ref": "#/components/schemas/FileInfo"
}
}
}
@@ -9759,23 +14564,22 @@
"v1"
],
"x-access": {
- "admin": "true"
+ "any": "true"
}
}
},
- "/documentspaces/{documentSpaceId}": {
+ "/files/images/projects/{projectId}": {
"delete": {
"tags": [
- "DocumentSpaces"
+ "Images"
],
- "summary": "Deletes the document space with the specified id.",
- "description": "The documents in this space and their related entities (comments, etc.) will be unrecoverably deleted in the background asynchronously.\r\n\r\nThe user must be an admin.",
- "operationId": "DeleteDocumentSpaceById",
+ "summary": "Deletes the profile image of the project with the specified id.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesImagesByProjectNameAndProjectId",
"parameters": [
{
- "name": "documentSpaceId",
+ "name": "projectId",
"in": "path",
- "description": "The id of the document space to delete.",
"required": true,
"schema": {
"type": "string",
@@ -9819,25 +14623,47 @@
"v1"
],
"x-access": {
- "admin": "true"
+ "any": "true"
}
},
"get": {
"tags": [
- "DocumentSpaces"
+ "Images"
],
- "summary": "Returns the document space with the specified id.",
- "description": "The user must have at least `read` permissions for the specified document space.",
- "operationId": "GetDocumentSpaceById",
+ "summary": "Returns the image of the project with the specified id.",
+ "description": "\r\n\r\nAllows unauthenticated access.",
+ "operationId": "GetFilesImagesByProjectNameAndProjectId",
"parameters": [
{
- "name": "documentSpaceId",
- "in": "path",
- "description": "The id of the document space to retrieve.",
- "required": true,
+ "name": "projectId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "width",
+ "in": "query",
+ "schema": {
+ "type": "number",
+ "format": "double"
+ }
+ },
+ {
+ "name": "height",
+ "in": "query",
"schema": {
- "type": "string",
- "format": "uuid"
+ "type": "number",
+ "format": "double"
+ }
+ },
+ {
+ "name": "crop",
+ "in": "query",
+ "schema": {
+ "type": "boolean"
}
}
],
@@ -9847,7 +14673,28 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/DocumentModel"
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "304": {
+ "description": "Not Modified",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -9884,21 +14731,20 @@
"v1"
],
"x-access": {
- "any": "true"
+ "anonymous": "true"
}
},
- "put": {
+ "post": {
"tags": [
- "DocumentSpaces"
+ "Images"
],
- "summary": "Updates the document space with the specified id.",
- "description": "\r\n\r\nThe user must be an admin.",
- "operationId": "PutDocumentSpaceById",
+ "summary": "Uploads a new profile image.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesImagesByProjectNameAndProjectId",
"parameters": [
{
- "name": "documentSpaceId",
+ "name": "projectId",
"in": "path",
- "description": "The id of the document space.",
"required": true,
"schema": {
"type": "string",
@@ -9907,15 +14753,13 @@
}
],
"requestBody": {
- "description": "The model used to update the document space.",
"content": {
- "application/json": {
+ "multipart/form-data": {
"schema": {
- "$ref": "#/components/schemas/DocumentSpaceForm"
+ "$ref": "#/components/schemas/FileUploadModel"
}
}
- },
- "required": true
+ }
},
"responses": {
"200": {
@@ -9923,13 +14767,13 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/DocumentSpaceModel"
+ "$ref": "#/components/schemas/FileInfo"
}
}
}
},
- "401": {
- "description": "Unauthorized",
+ "400": {
+ "description": "Bad Request",
"content": {
"application/json": {
"schema": {
@@ -9938,8 +14782,8 @@
}
}
},
- "404": {
- "description": "Not Found",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
@@ -9960,23 +14804,22 @@
"v1"
],
"x-access": {
- "admin": "true"
+ "any": "true"
}
}
},
- "/documentspaces/{documentSpaceId}/contributors": {
+ "/files/images/projects/{projectId}/byuploadid": {
"post": {
"tags": [
- "DocumentSpaces"
+ "Images"
],
- "summary": "Adds a list of document space contributors to a document space.",
- "description": "Adding document space contributors will affect their access to the document space and documents within that space.\r\n\r\nThe user must be an admin.",
- "operationId": "PostDocumentSpaceContributorsByDocumentSpaceId",
+ "summary": "Sets a profile image from a previously uploaded file.",
+ "description": "After an image has been uploaded to an upload URL generated by the /files/generateuploadurl endpoint, this endpoint sets the uploaded image as the profile image of the project by providing the upload id.\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesImagesByUploadIdByProjectNameAndProjectId",
"parameters": [
{
- "name": "documentSpaceId",
+ "name": "projectId",
"in": "path",
- "description": "The id of the document space.",
"required": true,
"schema": {
"type": "string",
@@ -9985,14 +14828,10 @@
}
],
"requestBody": {
- "description": "The model with the list of contributors to add.",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ContributorPostForm"
- }
+ "$ref": "#/components/schemas/UploadByUploadIdForm"
}
}
},
@@ -10004,7 +14843,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/MinimalContributorModel"
+ "$ref": "#/components/schemas/FileInfo"
}
}
}
@@ -10028,16 +14867,6 @@
}
}
}
- },
- "404": {
- "description": "Not Found",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
}
},
"security": [
@@ -10051,33 +14880,22 @@
"v1"
],
"x-access": {
- "admin": "true"
+ "any": "true"
}
}
},
- "/documentspaces/{documentSpaceId}/contributors/{documentSpaceContributorId}": {
+ "/files/images/projecttemplates/{projecttemplateId}": {
"delete": {
"tags": [
- "DocumentSpaces"
+ "Images"
],
- "summary": "Deletes the document space contributor with the specified id from a document space.",
- "description": "Deletes the specified document space contributor from a document space.\r\n Deleting a document space contributor will affect their access to the document space and the documents within that space.\r\n\r\nThe user must be an admin.",
- "operationId": "DeleteDocumentSpaceContributorByDocumentSpaceIdAndDocumentSpaceContributorId",
+ "summary": "Deletes the profile image of the projecttemplate with the specified id.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesImagesByProjectTemplateNameAndProjectTemplateId",
"parameters": [
{
- "name": "documentSpaceId",
- "in": "path",
- "description": "The id of the document space.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "documentSpaceContributorId",
+ "name": "projecttemplateId",
"in": "path",
- "description": "The id of the document space contributor to delete.",
"required": true,
"schema": {
"type": "string",
@@ -10089,16 +14907,6 @@
"204": {
"description": "No Content"
},
- "400": {
- "description": "Bad Request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
"401": {
"description": "Unauthorized",
"content": {
@@ -10131,21 +14939,20 @@
"v1"
],
"x-access": {
- "admin": "true"
+ "any": "true"
}
},
- "put": {
+ "get": {
"tags": [
- "DocumentSpaces"
+ "Images"
],
- "summary": "Updates the access of a document space contributor to the document space with the specified id.",
- "description": "Updates the access of the specified document space contributor to the specified document space.\r\n Updating a document space contributor will affect their access to the document space and documents within that space.\r\n\r\nThe user must be an admin.",
- "operationId": "PutDocumentSpaceContributorByDocumentSpaceIdAndDocumentSpaceContributorId",
+ "summary": "Returns the image of the projecttemplate with the specified id.",
+ "description": "\r\n\r\nAllows unauthenticated access.",
+ "operationId": "GetFilesImagesByProjectTemplateNameAndProjectTemplateId",
"parameters": [
{
- "name": "documentSpaceId",
+ "name": "projecttemplateId",
"in": "path",
- "description": "The id of the document space.",
"required": true,
"schema": {
"type": "string",
@@ -10153,34 +14960,47 @@
}
},
{
- "name": "documentSpaceContributorId",
- "in": "path",
- "description": "The id of the document space contributor.",
- "required": true,
+ "name": "width",
+ "in": "query",
"schema": {
- "type": "string",
- "format": "uuid"
+ "type": "number",
+ "format": "double"
}
- }
- ],
- "requestBody": {
- "description": "The model with the updated contributor data.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ContributorForm"
- }
+ },
+ {
+ "name": "height",
+ "in": "query",
+ "schema": {
+ "type": "number",
+ "format": "double"
}
},
- "required": true
- },
+ {
+ "name": "crop",
+ "in": "query",
+ "schema": {
+ "type": "boolean"
+ }
+ }
+ ],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/MinimalContributorModel"
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "304": {
+ "description": "Not Modified",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -10227,114 +15047,63 @@
"v1"
],
"x-access": {
- "admin": "true"
+ "anonymous": "true"
}
- }
- },
- "/documentspaces/{documentSpaceId}/documents": {
- "get": {
+ },
+ "post": {
"tags": [
- "Documents"
+ "Images"
],
- "summary": "Returns all documents that belong to the document space with the specified id.",
- "description": "The user must have at least `read` permissions for the specified document space.",
- "operationId": "GetDocumentSpaceDocumentsByDocumentSpaceId",
+ "summary": "Uploads a new profile image.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesImagesByProjectTemplateNameAndProjectTemplateId",
"parameters": [
{
- "name": "documentSpaceId",
+ "name": "projecttemplateId",
"in": "path",
- "description": "The id of the document space to retrieve documents from.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
- },
- {
- "$ref": "#/components/parameters/page"
- },
- {
- "$ref": "#/components/parameters/pageSize"
- },
- {
- "$ref": "#/components/parameters/orderby"
- },
- {
- "$ref": "#/components/parameters/filterby"
}
],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "$ref": "#/components/schemas/FileUploadModel"
+ }
+ }
+ }
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/DocumentModel"
- }
+ "$ref": "#/components/schemas/FileInfo"
}
}
}
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- }
- },
- "/documentspaces/{documentSpaceId}/documents/trash": {
- "get": {
- "tags": [
- "Documents"
- ],
- "summary": "Returns all deleted documents of the document space with the specified id.",
- "description": "\r\n\r\nAny authenticated user.",
- "operationId": "GetDocumentSpaceDocumentsTrashByDocumentSpaceId",
- "parameters": [
- {
- "name": "documentSpaceId",
- "in": "path",
- "description": "The id of the document space to retrieve trashed documents from.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "$ref": "#/components/parameters/page"
},
- {
- "$ref": "#/components/parameters/pageSize"
- },
- {
- "$ref": "#/components/parameters/orderby"
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
},
- {
- "$ref": "#/components/parameters/filterby"
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/DocumentModel"
- }
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -10355,19 +15124,18 @@
}
}
},
- "/documentspaces/{documentSpaceId}/teams": {
+ "/files/images/projecttemplates/{projecttemplateId}/byuploadid": {
"post": {
"tags": [
- "DocumentSpaces"
+ "Images"
],
- "summary": "Adds teams to the document space with the specified id.",
- "description": "Adding teams to a document space will affect their access to the document space and documents within that space.\r\n\r\nThe user must be an admin.",
- "operationId": "PostDocumentSpaceTeamsByDocumentSpaceId",
+ "summary": "Sets a profile image from a previously uploaded file.",
+ "description": "After an image has been uploaded to an upload URL generated by the /files/generateuploadurl endpoint, this endpoint sets the uploaded image as the profile image of the projecttemplate by providing the upload id.\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesImagesByUploadIdByProjectTemplateNameAndProjectTemplateId",
"parameters": [
{
- "name": "documentSpaceId",
+ "name": "projecttemplateId",
"in": "path",
- "description": "The id of the document space.",
"required": true,
"schema": {
"type": "string",
@@ -10376,14 +15144,10 @@
}
],
"requestBody": {
- "description": "The model with the list of teams to add.",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/EntityToTeamPostForm"
- }
+ "$ref": "#/components/schemas/UploadByUploadIdForm"
}
}
},
@@ -10395,7 +15159,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/MinimalEntityToTeamModel"
+ "$ref": "#/components/schemas/FileInfo"
}
}
}
@@ -10419,16 +15183,6 @@
}
}
}
- },
- "404": {
- "description": "Not Found",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
}
},
"security": [
@@ -10442,33 +15196,22 @@
"v1"
],
"x-access": {
- "admin": "true"
+ "any": "true"
}
}
},
- "/documentspaces/{documentSpaceId}/teams/{documentSpaceToTeamId}": {
+ "/files/images/users/{userId}": {
"delete": {
"tags": [
- "DocumentSpaces"
+ "Images"
],
- "summary": "Deletes the team with the specified id from a document space.",
- "description": "Deletes the specified team from a document space.\r\n Deleting a team from a document space will affect their access to the document space and the documents within that space.\r\n\r\nThe user must be an admin.",
- "operationId": "DeleteDocumentSpaceTeamByDocumentSpaceIdAndDocumentSpaceToTeamId",
+ "summary": "Deletes the profile image of the user with the specified id.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesImagesByUserNameAndUserId",
"parameters": [
{
- "name": "documentSpaceId",
- "in": "path",
- "description": "The id of the document space.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "documentSpaceToTeamId",
+ "name": "userId",
"in": "path",
- "description": "The id of the document space to team connection.",
"required": true,
"schema": {
"type": "string",
@@ -10480,16 +15223,6 @@
"204": {
"description": "No Content"
},
- "400": {
- "description": "Bad Request",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/ErrorResponse"
- }
- }
- }
- },
"401": {
"description": "Unauthorized",
"content": {
@@ -10522,21 +15255,20 @@
"v1"
],
"x-access": {
- "admin": "true"
+ "any": "true"
}
},
- "put": {
+ "get": {
"tags": [
- "DocumentSpaces"
+ "Images"
],
- "summary": "Updates the access of a team to the document space with the specified id.",
- "description": "Updates the specified document space to team connection of a document space.\r\n Updating a document space team will affect their access to the document space and documents within that space.\r\n\r\nThe user must be an admin.",
- "operationId": "PutDocumentSpaceTeamByDocumentSpaceIdAndDocumentSpaceToTeamId",
+ "summary": "Returns the image of the user with the specified id.",
+ "description": "\r\n\r\nAllows unauthenticated access.",
+ "operationId": "GetFilesImagesByUserNameAndUserId",
"parameters": [
{
- "name": "documentSpaceId",
+ "name": "userId",
"in": "path",
- "description": "The id of the document space.",
"required": true,
"schema": {
"type": "string",
@@ -10544,34 +15276,47 @@
}
},
{
- "name": "documentSpaceToTeamId",
- "in": "path",
- "description": "The id of the document space to team connection.",
- "required": true,
+ "name": "width",
+ "in": "query",
"schema": {
- "type": "string",
- "format": "uuid"
+ "type": "number",
+ "format": "double"
}
- }
- ],
- "requestBody": {
- "description": "The model with the updated team access.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/EntityToTeamForm"
- }
+ },
+ {
+ "name": "height",
+ "in": "query",
+ "schema": {
+ "type": "number",
+ "format": "double"
}
},
- "required": true
- },
+ {
+ "name": "crop",
+ "in": "query",
+ "schema": {
+ "type": "boolean"
+ }
+ }
+ ],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/MinimalEntityToTeamModel"
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "304": {
+ "description": "Not Modified",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -10618,25 +15363,63 @@
"v1"
],
"x-access": {
- "admin": "true"
+ "anonymous": "true"
}
- }
- },
- "/files/generateuploadurl": {
+ },
"post": {
"tags": [
- "FileUpload"
+ "Images"
],
- "summary": "Generates a URL to upload a file to.",
- "description": "Generates a URL that can be used to upload a file. Use the returned upload id to create a file entry. See for more information.\r\n\r\nAny authenticated user.",
- "operationId": "PostGenerateUploadURL",
+ "summary": "Uploads a new profile image.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesImagesByUserNameAndUserId",
+ "parameters": [
+ {
+ "name": "userId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "$ref": "#/components/schemas/FileUploadModel"
+ }
+ }
+ }
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/GenerateUploadUrlResponseModel"
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -10657,26 +15440,17 @@
}
}
},
- "/files/images/{entityName}/{entityId}": {
- "delete": {
+ "/files/images/users/{userId}/byuploadid": {
+ "post": {
"tags": [
"Images"
],
- "summary": "Deletes the profile image of the entity with the specified id.",
- "description": "\r\n\r\nAny authenticated user.",
- "operationId": "DeleteFilesImagesByEntityNameAndEntityId",
+ "summary": "Sets a profile image from a previously uploaded file.",
+ "description": "After an image has been uploaded to an upload URL generated by the /files/generateuploadurl endpoint, this endpoint sets the uploaded image as the profile image of the user by providing the upload id.\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesImagesByUploadIdByUserNameAndUserId",
"parameters": [
{
- "name": "entityName",
- "in": "path",
- "required": true,
- "schema": {
- "pattern": "^[A-Za-z]*$",
- "type": "string"
- }
- },
- {
- "name": "entityId",
+ "name": "userId",
"in": "path",
"required": true,
"schema": {
@@ -10685,12 +15459,29 @@
}
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UploadByUploadIdForm"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
- "204": {
- "description": "No Content"
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
},
- "401": {
- "description": "Unauthorized",
+ "400": {
+ "description": "Bad Request",
"content": {
"application/json": {
"schema": {
@@ -10699,8 +15490,8 @@
}
}
},
- "404": {
- "description": "Not Found",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
@@ -10723,26 +15514,76 @@
"x-access": {
"any": "true"
}
- },
- "get": {
+ }
+ },
+ "/files/images/workspaces/{workspaceId}": {
+ "delete": {
"tags": [
"Images"
],
- "summary": "Returns the image of the entity with the specified id.",
- "description": "\r\n\r\nAllows unauthenticated access.",
- "operationId": "GetFilesImagesByEntityNameAndEntityId",
+ "summary": "Deletes the profile image of the workspace with the specified id.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesImagesByWorkspaceNameAndWorkspaceId",
"parameters": [
{
- "name": "entityName",
+ "name": "workspaceId",
"in": "path",
"required": true,
"schema": {
- "pattern": "^[A-Za-z]*$",
- "type": "string"
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
}
},
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ },
+ "get": {
+ "tags": [
+ "Images"
+ ],
+ "summary": "Returns the image of the workspace with the specified id.",
+ "description": "\r\n\r\nAllows unauthenticated access.",
+ "operationId": "GetFilesImagesByWorkspaceNameAndWorkspaceId",
+ "parameters": [
{
- "name": "entityId",
+ "name": "workspaceId",
"in": "path",
"required": true,
"schema": {
@@ -10847,19 +15688,10 @@
],
"summary": "Uploads a new profile image.",
"description": "\r\n\r\nAny authenticated user.",
- "operationId": "PostFilesImagesByEntityNameAndEntityId",
+ "operationId": "PostFilesImagesByWorkspaceNameAndWorkspaceId",
"parameters": [
{
- "name": "entityName",
- "in": "path",
- "required": true,
- "schema": {
- "pattern": "^[A-Za-z]*$",
- "type": "string"
- }
- },
- {
- "name": "entityId",
+ "name": "workspaceId",
"in": "path",
"required": true,
"schema": {
@@ -10924,26 +15756,17 @@
}
}
},
- "/files/images/{entityName}/{entityId}/byuploadid": {
+ "/files/images/workspaces/{workspaceId}/byuploadid": {
"post": {
"tags": [
"Images"
],
"summary": "Sets a profile image from a previously uploaded file.",
- "description": "After an image has been uploaded to an upload URL generated by the /files/generateuploadurl endpoint, this endpoint sets the uploaded image as the profile image of the entity by providing the upload id.\r\n\r\nAny authenticated user.",
- "operationId": "PostFilesImagesByUploadIdByEntityNameAndEntityId",
+ "description": "After an image has been uploaded to an upload URL generated by the /files/generateuploadurl endpoint, this endpoint sets the uploaded image as the profile image of the workspace by providing the upload id.\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesImagesByUploadIdByWorkspaceNameAndWorkspaceId",
"parameters": [
{
- "name": "entityName",
- "in": "path",
- "required": true,
- "schema": {
- "pattern": "^[A-Za-z]*$",
- "type": "string"
- }
- },
- {
- "name": "entityId",
+ "name": "workspaceId",
"in": "path",
"required": true,
"schema": {
@@ -11082,14 +15905,13 @@
"tags": [
"Files"
],
- "summary": "Returns the content of the file with the specified id.",
- "description": "Returns the content of the latest file version.\nIf the file is an image and the width and height are set,\nthe image will resized before it is returned.\nThe get the content it is necessary to have the 'read' permissions on the\nentity the file is related to.\r\n\r\nAny authenticated user.",
- "operationId": "GetFile",
+ "summary": "Returns the latest content of the specified file and supports range requests.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesDownloadByFileId",
"parameters": [
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -11099,7 +15921,6 @@
{
"name": "width",
"in": "query",
- "description": "Set width to resize.",
"schema": {
"type": "number",
"format": "double"
@@ -11108,7 +15929,6 @@
{
"name": "height",
"in": "query",
- "description": "Set height to resize.",
"schema": {
"type": "number",
"format": "double"
@@ -11117,7 +15937,6 @@
{
"name": "crop",
"in": "query",
- "description": "Whether to crop the image when resizing it.",
"schema": {
"type": "boolean"
}
@@ -11125,7 +15944,6 @@
{
"name": "enlarge",
"in": "query",
- "description": "Whether to enlarge the image if the width/height are bigger than the original image.",
"schema": {
"type": "boolean",
"default": true
@@ -11134,7 +15952,6 @@
{
"name": "inline",
"in": "query",
- "description": "If inline is true, content-disposition header is inline, else it is attachment.",
"schema": {
"type": "boolean",
"default": false
@@ -11164,8 +15981,45 @@
}
}
},
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
"416": {
- "description": "Range Not Satisfiable"
+ "description": "Range Not Satisfiable",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -11188,14 +16042,13 @@
"tags": [
"Files"
],
- "summary": "Returns the content of the file with the specified id as pdf.",
- "description": "Returns the content of the latest file version as pdf.\nAll kinds of MS Office document types are supported.\nTo get the content you must have the 'read' permissions on the\nentity the file is related to.\r\n\r\nAny authenticated user.",
- "operationId": "GetPdf",
+ "summary": "Returns the latest version of the specified file as PDF.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesPdfByFileId",
"parameters": [
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -11205,7 +16058,6 @@
{
"name": "inline",
"in": "query",
- "description": "If inline is true, content-disposition header is inline, else it is attachment.",
"schema": {
"type": "boolean",
"default": false
@@ -11223,6 +16075,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -12003,6 +16885,70 @@
"x-access": {
"anonymous": "true"
}
+ },
+ "post": {
+ "tags": [
+ "Invitations"
+ ],
+ "summary": "Invites a user to a workspace.",
+ "description": "\r\n\r\nAllows unauthenticated access.",
+ "operationId": "PostInvitations",
+ "requestBody": {
+ "description": "The invitation details.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Invitation"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/InvitationResponse"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "anonymous": "true"
+ }
}
},
"/invitations/accept": {
@@ -12010,26 +16956,36 @@
"tags": [
"Invitations"
],
- "summary": "Accepts the invitation with the invitation code.",
- "operationId": "Accept",
+ "summary": "Accepts an invitation using its invitation code.",
+ "description": "\r\n\r\nAllows unauthenticated access.",
+ "operationId": "PostInvitationsAccept",
"requestBody": {
- "description": "The invitation code received when creating the invitation.",
+ "description": "The invitation code and optional referral code.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AcceptInvitation"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/AcceptInvitation"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
"description": "OK"
+ },
+ "204": {
+ "description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -12041,7 +16997,10 @@
],
"x-api-versions": [
"v1"
- ]
+ ],
+ "x-access": {
+ "anonymous": "true"
+ }
}
},
"/me": {
@@ -12049,8 +17008,8 @@
"tags": [
"Users"
],
- "summary": "Returns the currently logged-in user and workspace.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns the current user and workspace.",
+ "description": "Returns the current user's profile together with the selected workspace.\r\n\r\nAny authenticated user.",
"operationId": "GetMe",
"responses": {
"200": {
@@ -12094,8 +17053,8 @@
"tags": [
"AssignedTasks"
],
- "summary": "Returns all tasks the current user is allowed to see.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns tasks visible to the current user.",
+ "description": "Returns tasks available to the current user and removes time details when the user lacks the related time-tracking access.\r\n The user must have at least `read` permission for each returned task.",
"operationId": "GetMeAllAvailableTasks",
"parameters": [
{
@@ -12146,8 +17105,8 @@
"tags": [
"AssignedTasks"
],
- "summary": "Returns all tasks assigned to the current user.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns tasks assigned to the current user.",
+ "description": "Returns tasks assigned to the current user. Use the assignment date range or `inProgress` to narrow the result.\r\n The user must have permission to view each returned task.",
"operationId": "GetMeAssignedTasks",
"parameters": [
{
@@ -12235,8 +17194,8 @@
"tags": [
"AssignedTasks"
],
- "summary": "Returns the assigned task with the specified id of the current user.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns an assigned task for the current user.",
+ "description": "Returns the specified task when it is assigned to the current user. Time-tracking details are included only when permitted.\r\n The user must have permission to view the assigned task.",
"operationId": "GetMeAssignedTaskByTaskId",
"parameters": [
{
@@ -12292,8 +17251,8 @@
"tags": [
"Dashboards"
],
- "summary": "Returns the dashboards of the current user.",
- "description": "Returns the dashboards of the current user.\r\n\r\nThe user must be the creator.",
+ "summary": "Returns dashboards for the current user.",
+ "description": "Returns dashboards for the current user. Set `includeWidgets` to include widget details. A default dashboard is created when none exists.\r\n\r\nThe user must be the creator.",
"operationId": "GetMeDashboards",
"parameters": [
{
@@ -13000,8 +17959,8 @@
"tags": [
"PrivateTasks"
],
- "summary": "Returns all private tasks that the current user created and assigned to someone else.",
- "description": "Private tasks are always created for the current user but can be reassigned to other users afterwards.\r\n This endpoint returns all private tasks that were originally created by the user but were reassigned to someone else.\r\n\r\nAny authenticated user.",
+ "summary": "Returns reassigned private tasks.",
+ "description": "Returns private tasks originally created by the current user and later assigned to someone else.\r\n\r\nAny authenticated user.",
"operationId": "GetMeOtherPrivateTasks",
"parameters": [
{
@@ -13072,8 +18031,8 @@
"tags": [
"PrivateTasks"
],
- "summary": "Returns a private task that the current user created and assigned to someone else.",
- "description": "Private tasks are always created for the current user but can be reassigned to other users afterwards.\r\n This endpoint returns a private task that was originally created by the user but was reassigned to someone else.\r\n\r\nAny authenticated user.",
+ "summary": "Returns a reassigned private task.",
+ "description": "Returns the specified private task when it was created by the current user and assigned to someone else.\r\n\r\nAny authenticated user.",
"operationId": "GetMeOtherPrivateTaskByTaskId",
"parameters": [
{
@@ -13139,8 +18098,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Returns the checklist items for a private task with the specified id.",
- "description": "The user must be the creator of the task.",
+ "summary": "Returns the checklist items for a private task.",
+ "description": "Returns the checklist items for a private task. The checklist belongs to the specified private task. The user must be the creator of the task.",
"operationId": "GetMyOtherPrivateTaskChecklistItemsByUserIdAndTaskId",
"parameters": [
{
@@ -13218,8 +18177,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Returns a checklist item for a private task with the specified id.",
- "description": "The user must be the creator of the task.",
+ "summary": "Returns a checklist item for a private task.",
+ "description": "Returns a checklist item for a private task. The checklist belongs to the specified private task. The user must be the creator of the task.",
"operationId": "GetMyOtherPrivateTaskChecklistItemByUserIdAndTaskIdAndChecklistItemId",
"parameters": [
{
@@ -13304,8 +18263,8 @@
"tags": [
"Permissions"
],
- "summary": "Returns the permissions of the currently logged-in user.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns permissions for the current user.",
+ "description": "Returns the current user's permissions for the selected workspace.\r\n\r\nAny authenticated user.",
"operationId": "GetMePermissions",
"responses": {
"200": {
@@ -13349,8 +18308,8 @@
"tags": [
"Documents"
],
- "summary": "Returns the requesting user's private documents.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns private documents for the current user.",
+ "description": "Returns private documents owned by the current user.\r\n\r\nAny authenticated user.",
"operationId": "GetMePrivateDocuments",
"parameters": [
{
@@ -13401,8 +18360,8 @@
"tags": [
"Documents"
],
- "summary": "Returns the requesting user's private trashed documents.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns trashed private documents.",
+ "description": "Returns private documents owned by the current user that are in the trash.\r\n\r\nAny authenticated user.",
"operationId": "GetMePrivateDocumentsTrash",
"parameters": [
{
@@ -13453,8 +18412,8 @@
"tags": [
"PrivateTasks"
],
- "summary": "Returns all private tasks of the current user.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns private tasks for the current user.",
+ "description": "Returns all private tasks owned by the current user.\r\n\r\nAny authenticated user.",
"operationId": "GetMePrivateTasks",
"parameters": [
{
@@ -13525,8 +18484,8 @@
"tags": [
"TaskTags"
],
- "summary": "Removes a tag from all private tasks.",
- "description": "Removes a tag from all private tasks of the current user.\r\n\r\nAny authenticated user.",
+ "summary": "Removes a tag from private tasks.",
+ "description": "Removes the submitted tag from the current user's private tasks.\r\n The user must have permission to edit the affected private tasks.",
"operationId": "PostMePrivateTasksDeleteTags",
"requestBody": {
"description": "The model to remove the tag from all private tasks.",
@@ -13584,8 +18543,8 @@
"tags": [
"TaskTags"
],
- "summary": "Returns all tags of the private tasks of the current user.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns tags for the user's private tasks.",
+ "description": "Returns tags assigned to the current user's private tasks, including their usage counts.\r\n The user must have permission to view the affected private tasks.",
"operationId": "GetMePrivateTasksTags",
"responses": {
"200": {
@@ -13683,8 +18642,8 @@
"tags": [
"TaskTags"
],
- "summary": "Updates a tag for all private tasks.",
- "description": "Updates a tag for all private tasks of the current user.\r\n\r\nAny authenticated user.",
+ "summary": "Updates a tag for private tasks.",
+ "description": "Updates the submitted tag across the current user's private tasks.\r\n The user must have permission to edit the affected private tasks.",
"operationId": "PostMePrivateTasksUpdateTags",
"requestBody": {
"description": "The model to update the tag including the old and new tag names.",
@@ -13735,8 +18694,8 @@
"tags": [
"PrivateTasks"
],
- "summary": "Returns the private task with the specified id for the current user.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns a private task for the current user.",
+ "description": "Returns the specified private task when it belongs to the current user.\r\n\r\nAny authenticated user.",
"operationId": "GetMePrivateTaskByTaskId",
"parameters": [
{
@@ -13802,8 +18761,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Returns the checklist for a private task with the specified id.",
- "description": "The user must be be assigned to the task.",
+ "summary": "Returns the checklist for a private task.",
+ "description": "Returns the checklist for a private task. The checklist belongs to the specified private task. The user must be be assigned to the task.",
"operationId": "GetMyPrivateTaskChecklistItemsByUserIdAndTaskId",
"parameters": [
{
@@ -13881,8 +18840,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Retrieves a checklist item from a private task.",
- "description": "The user must be assigned to the task.",
+ "summary": "Returns a checklist item from a private task.",
+ "description": "Returns a checklist item from a private task. The checklist belongs to the specified private task. The user must be assigned to the task.",
"operationId": "GetMyPrivateTaskChecklistItemByUserIdAndTaskIdAndChecklistItemId",
"parameters": [
{
@@ -13967,8 +18926,8 @@
"tags": [
"ProjectTasks"
],
- "summary": "Returns all project tasks that the current user can see.",
- "description": "The user must have `project-planning-data:read` permissions, otherwise only assigned tasks will be returned.",
+ "summary": "Returns project tasks for the current user.",
+ "description": "Returns project tasks visible to the current user.\r\n The user must have `project-planning-data:read` permission; otherwise only assigned tasks are returned.",
"operationId": "GetMeProjectTasks",
"parameters": [
{
@@ -14019,8 +18978,8 @@
"tags": [
"Documents"
],
- "summary": "Returns all documents that were shared with the requesting user.",
- "description": "Returns documents where the user has been explicitly granted document-level permissions\r\n (direct user permissions, team permissions, or workspace permissions on the document).\r\n Excludes the user's own private documents.\r\n Note: Also includes documents the user can access through their project or space memberships.\r\n\r\nAny authenticated user.",
+ "summary": "Returns documents shared with the current user.",
+ "description": "Returns documents shared directly or through project or document-space membership. Private documents are excluded.\r\n The user must have at least `read` permission for each returned document.",
"operationId": "GetMeSharedDocuments",
"parameters": [
{
@@ -14204,8 +19163,8 @@
"tags": [
"AssignedTasks"
],
- "summary": "Returns all task tags the current user is allowed to see.",
- "description": "The tags can be filtered by the properties of the task model.\r\n\r\nAny authenticated user.",
+ "summary": "Returns tags for tasks visible to the user.",
+ "description": "Returns tags assigned to tasks visible to the current user. Tags can be filtered by task properties.\r\n The user must have permission to view the affected tasks.",
"operationId": "GetMeTasksTags",
"responses": {
"200": {
@@ -14507,8 +19466,8 @@
"tags": [
"Permissions"
],
- "summary": "Returns all available features.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns available workspace features.",
+ "description": "Returns feature keys available in the selected workspace, including AI features when available to the workspace.\r\n\r\nAny authenticated user.",
"operationId": "GetPermissionsFeatures",
"responses": {
"200": {
@@ -14548,8 +19507,8 @@
"tags": [
"Permissions"
],
- "summary": "Returns all available project features.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns available project features.",
+ "description": "Returns project feature keys available in the selected workspace, including AI features when available to the workspace.\r\n\r\nAny authenticated user.",
"operationId": "GetPermissionsProjectFeatures",
"responses": {
"200": {
@@ -14589,8 +19548,8 @@
"tags": [
"ProjectMilestones"
],
- "summary": "Retrieves all project milestones.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns visible project milestones.",
+ "description": "Returns project milestones visible to the current user.\r\n The user must have `project-planning-data:read` permission for each returned project.",
"operationId": "GetProjectMilestones",
"parameters": [
{
@@ -14639,8 +19598,8 @@
"tags": [
"ProjectMilestones"
],
- "summary": "Creates a new project milestone.",
- "description": "The user must either be admin, have 'project-planning-data:write' permissions on the project or be the creator.",
+ "summary": "Creates a project milestone.",
+ "description": "Creates a milestone in the specified project.\r\n The user must be the project creator or have `project-planning-data:write` permission for the project.",
"operationId": "PostProjectMilestone",
"requestBody": {
"description": "The model containing milestone details.",
@@ -14696,7 +19655,7 @@
"ProjectMilestones"
],
"summary": "Returns the specified project milestone.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Returns the specified milestone when its project is visible to the current user.\r\n The user must have `project-planning-data:read` permission for the project.",
"operationId": "GetProjectMilestoneByMilestoneId",
"parameters": [
{
@@ -14762,8 +19721,8 @@
"tags": [
"ProjectMilestones"
],
- "summary": "Deletes a project milestone.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Deletes the specified project milestone.",
+ "description": "Deletes the specified milestone from its project.\r\n The user must be the project creator or have `project-planning-data:write` permission for the project.",
"operationId": "DeleteProjectMilestoneById",
"parameters": [
{
@@ -14820,8 +19779,8 @@
"tags": [
"ProjectMilestones"
],
- "summary": "Updates an existing project milestone.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Updates the specified project milestone.",
+ "description": "Updates the specified milestone in its project.\r\n The user must be the project creator or have `project-planning-data:write` permission for the project.",
"operationId": "PutProjectMilestoneById",
"parameters": [
{
@@ -14898,8 +19857,8 @@
"tags": [
"ProjectRoles"
],
- "summary": "Returns all project roles.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns project roles in the workspace.",
+ "description": "Returns project roles in the workspace. Set `includeMembers` to include each role's members.\r\n\r\nAny authenticated user.",
"operationId": "GetProjectRoles",
"parameters": [
{
@@ -14957,8 +19916,8 @@
"tags": [
"ProjectRoles"
],
- "summary": "Creates a new project role.",
- "description": "\r\n\r\nThis endpoint requires the `Standard` plan or higher.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "summary": "Creates a project role.",
+ "description": "Creates a project role with the submitted name and settings.\r\n\r\nThis endpoint requires the `Standard` plan or higher.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
"operationId": "PostProjectRole",
"requestBody": {
"description": "The model to create the project role.",
@@ -15017,8 +19976,8 @@
"tags": [
"ProjectRoles"
],
- "summary": "Returns all project roles assigned to the specified user.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns roles assigned to the specified user.",
+ "description": "Returns project roles assigned to the specified user in the workspace.\r\n\r\nAny authenticated user.",
"operationId": "GetProjectRolesByUserIdByUserId",
"parameters": [
{
@@ -15077,8 +20036,8 @@
"tags": [
"ProjectRoles"
],
- "summary": "Returns a project role by its id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns the specified project role.",
+ "description": "Returns the project role with the specified id.\r\n\r\nAny authenticated user.",
"operationId": "GetProjectRoleById",
"parameters": [
{
@@ -15132,8 +20091,8 @@
"tags": [
"ProjectRoles"
],
- "summary": "Updates an existing project role.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "summary": "Updates the specified project role.",
+ "description": "Updates the specified role's name or default status. Changing the default role updates the previous default role.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
"operationId": "PutProjectRoleById",
"parameters": [
{
@@ -15211,8 +20170,8 @@
"tags": [
"ProjectRoles"
],
- "summary": "Deletes a project role and migrates its members to a new role.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "summary": "Deletes a project role and migrates members.",
+ "description": "Deletes the specified project role and moves its members to the role selected in the request.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
"operationId": "PostProjectRoleDeleteByProjectRoleId",
"parameters": [
{
@@ -15283,8 +20242,8 @@
"tags": [
"ProjectRoles"
],
- "summary": "Returns all permissions assigned to a project role.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns permissions for the specified project role.",
+ "description": "Returns permissions assigned to the specified project role. AI role permissions are included only when available to the workspace.\r\n\r\nAny authenticated user.",
"operationId": "GetProjectRolePermissionsByProjectRoleId",
"parameters": [
{
@@ -15353,8 +20312,8 @@
"tags": [
"ProjectRoles"
],
- "summary": "Creates or updates a permission for a project role.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Updates a permission for a project role.",
+ "description": "Creates, updates, or removes the submitted permission for the specified project role. AI role permissions require an eligible workspace plan.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectRolePermissionsByProjectRoleId",
"parameters": [
{
@@ -15432,8 +20391,8 @@
"tags": [
"Projects"
],
- "summary": "Returns all projects.",
- "description": "Returns all projects the user has `read` permissions for.",
+ "summary": "Returns projects visible to the current user.",
+ "description": "Returns projects visible to the current user.\r\n The user must have `read` permission for each returned project.",
"operationId": "GetProjects",
"parameters": [
{
@@ -15482,8 +20441,8 @@
"tags": [
"Projects"
],
- "summary": "Creates a new project.",
- "description": "Creates a new project.\r\n\r\nThe user must be an admin or have `project-create:write` permissions.",
+ "summary": "Creates a project.",
+ "description": "Creates a project in the selected workspace and returns it.\r\n\r\nThe user must be an admin or have `project-create:write` permissions.",
"operationId": "PostProject",
"requestBody": {
"description": "The model to create the project.",
@@ -15539,8 +20498,8 @@
"tags": [
"Projects"
],
- "summary": "Edits multiple projects using the specified operation.",
- "description": "Returns MultiStatus including the list of successful and failed projects.\r\n \r\n Supported operations:\r\n
\r\n - changeprojectstatus: changes the status of all selected projects.
\r\n - changeprojecttype: changes the type of all selected projects.
\r\n - linkworkflow: links a workflow to all selected projects.
\r\n - setclient: sets the client for all selected projects.
\r\n - setprojectlead: changes the responsible project member for all selected projects.
\r\n - addteams: adds teams to all selected projects.
\r\n - removeteams: removes teams from all selected projects.
\r\n - setdates: sets or removes project start and due dates.
\r\n - adjustdates: offsets project start and due dates by the specified amount of days.
\r\n - addtags: adds tags to all selected projects.
\r\n - removetags: removes tags from all selected projects.
\r\n - delete: deletes all selected projects.
\r\n
The user must have `write` permissions on all projects as well as related entities modified by the operation.",
+ "summary": "Applies an operation to selected projects.",
+ "description": "Applies the selected operation to each project and returns successful and failed results. Supported operations include changing status or type, linking workflows, updating clients, leads, dates, teams, and tags, and deleting projects.\r\n The user must have `write` permission for all projects and related entities modified by the operation.",
"operationId": "PostProjectsBatchByOperation",
"parameters": [
{
@@ -15617,7 +20576,7 @@
"ProjectTags"
],
"summary": "Removes a tag from all projects.",
- "description": "\r\n\r\nThe user must be an admin or have `project-master-data:write` permissions.",
+ "description": "Removes the submitted tag from every project in the workspace.\r\n\r\nThe user must be an admin or have `project-master-data:write` permissions.",
"operationId": "PostProjectsDeleteTags",
"requestBody": {
"description": "The model to remove the tag from all projects.",
@@ -15677,7 +20636,7 @@
"Projects"
],
"summary": "Returns the project with the specified key.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Returns the project matching the specified key after normalizing its case and surrounding spaces.\r\n The user must have `project-master-data:read` permission for the project.",
"operationId": "GetProjectsKeyByProjectKey",
"parameters": [
{
@@ -15752,8 +20711,8 @@
"tags": [
"ProjectTasks"
],
- "summary": "Returns all tags of the project tasks.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns tags for project tasks.",
+ "description": "Returns tags currently assigned to tasks in projects visible to the current user.\r\n\r\nAny authenticated user.",
"operationId": "GetProjectsProjectTasksTags",
"parameters": [
{
@@ -15801,8 +20760,8 @@
"tags": [
"ProjectTags"
],
- "summary": "Returns all tags currently in use by projects.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns tags used by projects.",
+ "description": "Returns tags currently assigned to projects.\r\n\r\nAny authenticated user.",
"operationId": "GetProjectsTags",
"responses": {
"200": {
@@ -15859,8 +20818,8 @@
"tags": [
"ProjectTags"
],
- "summary": "Updates a tag globally for all projects.",
- "description": "\r\n\r\nThe user must be an admin or have `project-master-data:write` permissions.",
+ "summary": "Updates a tag for all projects.",
+ "description": "Updates a tag across all projects. The submitted options can rename or merge the tag.\r\n\r\nThe user must be an admin or have `project-master-data:write` permissions.",
"operationId": "PostProjectsUpdateTags",
"requestBody": {
"description": "The model containing the tag updates.",
@@ -15919,8 +20878,8 @@
"tags": [
"Projects"
],
- "summary": "Returns the project with the specified id.",
- "description": "The user must either be admin, have `project-master-data:read` permissions or be the creator of the project.",
+ "summary": "Returns the specified project.",
+ "description": "Returns the specified project's details and applies the user's visibility rules.\r\n The user must be the project creator or have `project-master-data:read` permission.",
"operationId": "GetProjectById",
"parameters": [
{
@@ -15984,8 +20943,8 @@
"tags": [
"Projects"
],
- "summary": "Updates the project with the specified id.",
- "description": "Updates the project with the specified id.\r\n Special handling for retainer projects:\r\n If the project has at least one Retainer, the IsRetainer flag is automatically set to true.\r\n For retainer projects, the TimeBudget cannot be set. Instead the TimeBudget is the sum of all retainer budgets.\r\n \r\n The user has to be the creator of the project or needs `write` permissions of the feature `project-master-data`.",
+ "summary": "Updates the specified project.",
+ "description": "Updates the specified project's details. Retainer projects derive their time budget from retainer budgets, and changing the description can clear its live-editing document.\r\n \r\n The user must be the project creator or have `project-master-data:write` permission.",
"operationId": "PutProjectById",
"parameters": [
{
@@ -16164,8 +21123,8 @@
"tags": [
"ProjectMembers"
],
- "summary": "Adds a project member to the project with the specified id.",
- "description": "Adds a project member to the project with the specified id.\r\n The new project member can also be set as a responsible project member, but only if no other member of this project is responsible.\r\n It is necessary that the project role is available in this project, otherwise the member cannot be added.\r\n A project role is available when they are connected to the specified project type of the project.\r\n A user can only be added to the project once.\r\n \r\n The user has to be the creator or needs `project-master-data:manage` permissions on the project.",
+ "summary": "Adds a member to the specified project.",
+ "description": "Adds a member to the specified project. The member can be responsible when no other responsible member exists, and the selected role must be available for the project's type.\r\n The user must be the project creator or have `project-master-data:manage` permission for the project.",
"operationId": "PostProjectAddProjectMemberByProjectId",
"parameters": [
{
@@ -16222,8 +21181,8 @@
"tags": [
"ProjectTags"
],
- "summary": "Adds a batch of tags to the project with the specified id.",
- "description": "To add tags to a project the user must have `project-master-data:write` permissions on the specified project.",
+ "summary": "Adds tags to the specified project.",
+ "description": "Adds the submitted tags and returns the tags assigned to the specified project.\r\n The user must have `project-master-data:write` permission for the specified project.",
"operationId": "PostProjectAddTagsByProjectId",
"parameters": [
{
@@ -16316,8 +21275,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Adds a task bundle to a project.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Adds a task bundle to the specified project.",
+ "description": "Adds the submitted task bundle and its tasks to the specified project.\r\n The user must have `project-planning-data:write` permission for the project.",
"operationId": "PostProjectAddTaskBundleByProjectId",
"parameters": [
{
@@ -16395,16 +21354,15 @@
"/projects/{projectId}/allfiles": {
"get": {
"tags": [
- "ProjectFiles"
+ "Entity Files"
],
- "summary": "Returns all files of the project with the specified id.",
- "description": "Returns all files of the project including the ones of tasks linked to that project, with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetAllProjectFiles",
+ "summary": "Returns project files and files of tasks linked to the project.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetProjectsAllFilesByProjectId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the entity.",
"required": true,
"schema": {
"type": "string",
@@ -16437,6 +21395,16 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -17495,8 +22463,8 @@
"tags": [
"Projects"
],
- "summary": "Changes the project type of the project with the specified id.",
- "description": "Changes the project type of the project with the specified id.\r\n \r\n The user has to be the creator of the project or needs `write` permissions of the feature `project-master-data`.",
+ "summary": "Changes the specified project's type.",
+ "description": "Changes the specified project's type and applies the new type settings.\r\n The user must be the project creator or have `project-master-data:write` permission.",
"operationId": "PostProjectChangeProjectTypeByProjectId",
"parameters": [
{
@@ -17576,8 +22544,8 @@
"tags": [
"Projects"
],
- "summary": "Changes the status of the project with the specified id.",
- "description": "Changes the status of the project with the specified id.\r\n The project status must be associated with the project type used by the project.\r\n This potentially adds task bundles to the project and informs the project members about the status change.\r\n If the project is already in the specified status, nothing happens.\r\n \r\n The user has to be the creator of the project or needs `write` permissions of the feature `project-master-data`.",
+ "summary": "Changes the specified project's status.",
+ "description": "Changes the specified project's status. The status must belong to the project's type; changing status can add task bundles and notify project members. Repeating the current status has no effect.\r\n The user must be the project creator or have `project-master-data:write` permission.",
"operationId": "PostProjectChangeStatusByProjectId",
"parameters": [
{
@@ -18165,8 +23133,8 @@
"tags": [
"CustomFields"
],
- "summary": "Returns all custom field definitions linked to the specified project, including definitions linked via a workflow.",
- "description": "The user must have either `project-master-data:read` permissions or access to at least one task in the project.",
+ "summary": "Returns custom fields for the specified project.",
+ "description": "Returns definitions linked directly to the project or through a workflow.\r\n The user must have `project-master-data:read` permission or access to at least one task in the project.",
"operationId": "GetProjectCustomFieldDefinitionsByProjectId",
"parameters": [
{
@@ -18235,8 +23203,8 @@
"tags": [
"CustomFields"
],
- "summary": "Updates the order of a custom field definition linked to the specified project.",
- "description": "The user must have `project-master-data:write` permissions or `write` permissions on the specified project.",
+ "summary": "Updates custom field order in a project.",
+ "description": "Updates the order of a custom field definition linked to the specified project.\r\n The user must have `project-master-data:write` permission or `write` permission on the specified project.",
"operationId": "PutProjectCustomFieldDefinitionByProjectIdAndCustomFieldDefinitionId",
"parameters": [
{
@@ -18323,8 +23291,8 @@
"tags": [
"Projects"
],
- "summary": "Deletes the project with the specified id.",
- "description": "Deletes the project with the specified id.\r\n In the default case the related tasks of this project will also be deleted and the related time entries of this project and all tasks loose the relation to the deleted project and tasks.\r\n To delete the time entries as well, you can set the `deleteTimeTrackings` property of the request to `true`.\r\n \r\n The user has to be the creator of the project or needs `write` permissions of the feature `project-master-data`.",
+ "summary": "Deletes the specified project.",
+ "description": "Deletes the specified project. Related tasks are deleted by default, while related time entries lose their project and task links. Set `deleteTimeTrackings` to delete those time entries as well.\r\n \r\n The user must be the project creator or have `project-master-data:write` permission.",
"operationId": "PostProjectDeleteByProjectId",
"parameters": [
{
@@ -18394,8 +23362,8 @@
"tags": [
"ProjectTags"
],
- "summary": "Removes tags from the project with the specified id.",
- "description": "To remove tags from a project the user must have `project-master-data:write` permissions on the specified project.",
+ "summary": "Removes tags from the specified project.",
+ "description": "Removes the submitted tags from the specified project.\r\n The user must have `project-master-data:write` permission for the specified project.",
"operationId": "PostProjectDeleteTagsByProjectId",
"parameters": [
{
@@ -18481,8 +23449,8 @@
"tags": [
"Documents"
],
- "summary": "Retrieves all documents for a project.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns documents in the specified project.",
+ "description": "Returns non-trashed documents visible in the specified project.\r\n The user must have permission to view the returned documents.",
"operationId": "GetProjectDocumentsByProjectId",
"parameters": [
{
@@ -18543,8 +23511,8 @@
"tags": [
"Documents"
],
- "summary": "Retrieves all trashed documents for a project.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns trashed documents in the specified project.",
+ "description": "Returns deleted documents visible in the specified project.\r\n The user must have permission to view the returned documents.",
"operationId": "GetProjectDocumentsTrashByProjectId",
"parameters": [
{
@@ -18603,16 +23571,15 @@
"/projects/{projectId}/externalfiles": {
"post": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Endpoint to batch create external files without uploading.",
- "description": "Endpoint to create file infos with batch operation.\nCreated file infos don't have a version.\r\n\r\nAny authenticated user.",
- "operationId": "CreateExternalFiles",
+ "summary": "Creates external file references for the specified project.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostExternalFilesByProjectNameAndProjectId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project.",
"required": true,
"schema": {
"type": "string",
@@ -18621,7 +23588,6 @@
}
],
"requestBody": {
- "description": "List of file forms.",
"content": {
"application/json": {
"schema": {
@@ -18630,16 +23596,9 @@
"$ref": "#/components/schemas/ExternalFileForm"
}
}
- },
- "application/*+json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ExternalFileForm"
- }
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -18647,7 +23606,30 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -18671,16 +23653,16 @@
"/projects/{projectId}/files": {
"delete": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Deletes the files of the specified project.",
- "description": "Deletes the metadata and the different versions of the files.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteProjectFiles",
+ "summary": "Deletes all files and versions for the specified project.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByProjectNameAndProjectId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project.",
+ "description": "The project id.",
"required": true,
"schema": {
"type": "string",
@@ -18691,6 +23673,36 @@
"responses": {
"204": {
"description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -18709,16 +23721,15 @@
},
"get": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Returns all files of the project with the specified id.",
- "description": "Returns all file metadata of the project with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetProjectFiles",
+ "summary": "Returns all files of the specified project.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesByProjectNameAndProjectId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project.",
"required": true,
"schema": {
"type": "string",
@@ -18751,6 +23762,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -18769,16 +23800,15 @@
},
"post": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Creates a new project file for the project with the specified id..",
- "description": "Uploads a new project file for the project with the specified id.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateProjectFile",
+ "summary": "Uploads a file for the specified project.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByProjectNameAndProjectId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project.",
"required": true,
"schema": {
"type": "string",
@@ -18790,21 +23820,7 @@
"content": {
"multipart/form-data": {
"schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
+ "$ref": "#/components/schemas/FileUploadModel"
}
}
}
@@ -18821,7 +23837,24 @@
}
},
"400": {
- "description": "Bad Request"
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -18910,16 +23943,15 @@
"/projects/{projectId}/files/byurl": {
"post": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Uploads a new file by providing an url.",
- "description": "The file needs to be a public available url.\nThe file size must not exceed 100MB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateProjectFileByUrl",
+ "summary": "Uploads a file from a public URL for the specified project.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByUrlByProjectNameAndProjectId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project the file is linked to.",
"required": true,
"schema": {
"type": "string",
@@ -18928,19 +23960,14 @@
}
],
"requestBody": {
- "description": "The url, name and description of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FilePostForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FilePostForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -18952,6 +23979,26 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -18972,16 +24019,16 @@
"/projects/{projectId}/files/{fileId}": {
"delete": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Deletes the project file with the specified id.",
- "description": "Deletes the metadata and the different versions of the file.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteProjectFile",
+ "summary": "Deletes the specified project file and its versions.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByProjectNameAndProjectIdAndFileId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project.",
+ "description": "The project id.",
"required": true,
"schema": {
"type": "string",
@@ -18991,7 +24038,7 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The file id.",
"required": true,
"schema": {
"type": "string",
@@ -19002,6 +24049,36 @@
"responses": {
"204": {
"description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -19095,16 +24172,15 @@
},
"put": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Updates the metadata of the project file with the specified id.",
- "description": "Updates the metadata of the project file with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "UpdateProjectFile",
+ "summary": "Updates metadata for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PutFilesByProjectNameAndProjectIdAndFileId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project.",
"required": true,
"schema": {
"type": "string",
@@ -19114,7 +24190,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -19123,19 +24198,14 @@
}
],
"requestBody": {
- "description": "The model to update the file with the specified id.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileInfoUpdateForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileInfoUpdateForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -19147,6 +24217,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -19167,16 +24267,15 @@
"/projects/{projectId}/files/{fileId}/changeentity": {
"post": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Changes the project this file belongs to.",
- "description": "Changes the project this file belongs to.\nSwitch to the specified project or to a global file\nif the 'EntityId' of the model is set to null.\r\n\r\nAny authenticated user.",
- "operationId": "ChangeProject",
+ "summary": "Changes the project that owns the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesChangeProjectByProjectNameAndProjectIdAndFileId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project.",
"required": true,
"schema": {
"type": "string",
@@ -19186,7 +24285,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -19195,19 +24293,14 @@
}
],
"requestBody": {
- "description": "The model to change the entity information of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileEntityForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileEntityForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -19219,6 +24312,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -19239,16 +24362,15 @@
"/projects/{projectId}/files/{fileId}/copy": {
"post": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Copies the file to a new project.",
- "description": "Copies the file to a new project (meta and content).\r\n\r\nAny authenticated user.",
- "operationId": "CopyToProject",
+ "summary": "Copies the specified file to another project.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesCopyByProjectNameAndProjectIdAndFileId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project.",
"required": true,
"schema": {
"type": "string",
@@ -19258,7 +24380,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -19267,19 +24388,14 @@
}
],
"requestBody": {
- "description": "The model to change the entity information of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileCopyForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileCopyForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -19291,6 +24407,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -19311,16 +24457,15 @@
"/projects/{projectId}/files/{fileId}/download": {
"get": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Returns the content of the project file with the specified id.",
- "description": "Returns the content of the project file. Uses the latest file version.\nIf the project file is an image and the width and height are set,\nthe image will be resized before it is returned.\r\n\r\nAny authenticated user.",
- "operationId": "GetProjectFileContent",
+ "summary": "Returns the latest content of the specified project file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesDownloadByProjectNameAndProjectIdAndFileId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project.",
"required": true,
"schema": {
"type": "string",
@@ -19330,7 +24475,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -19340,7 +24484,6 @@
{
"name": "width",
"in": "query",
- "description": "Set width to resize.",
"schema": {
"type": "number",
"format": "double"
@@ -19349,7 +24492,6 @@
{
"name": "height",
"in": "query",
- "description": "Set height to resize.",
"schema": {
"type": "number",
"format": "double"
@@ -19358,7 +24500,6 @@
{
"name": "crop",
"in": "query",
- "description": "Whether to crop the image when resizing it.",
"schema": {
"type": "boolean"
}
@@ -19375,6 +24516,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -19395,16 +24566,15 @@
"/projects/{projectId}/files/{fileId}/pdf": {
"get": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Returns the content of the file with the specified id as pdf.\ntype or conversion not possible.",
- "description": "Returns the content of the project file. Uses the latest file version.\r\n\r\nAny authenticated user.",
- "operationId": "GetProjectFileContent",
+ "summary": "Returns the specified project file as PDF.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesPdfByProjectNameAndProjectIdAndFileId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project.",
"required": true,
"schema": {
"type": "string",
@@ -19414,7 +24584,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -19424,7 +24593,6 @@
{
"name": "inline",
"in": "query",
- "description": "If inline is false, content-disposition header is attachment.",
"schema": {
"type": "boolean",
"default": false
@@ -19442,6 +24610,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -19462,16 +24660,15 @@
"/projects/{projectId}/files/{fileId}/shareurl": {
"get": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Returns an url to share the file.",
- "description": "Returns a url to share the file.\r\n\r\nAny authenticated user.",
- "operationId": "GetPublicToken",
+ "summary": "Returns a public URL for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesShareUrlByProjectNameAndProjectIdAndFileId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project.",
"required": true,
"schema": {
"type": "string",
@@ -19481,7 +24678,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -19499,6 +24695,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -19519,16 +24735,15 @@
"/projects/{projectId}/files/{fileId}/versions": {
"get": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Returns all file versions of the specified project file.",
- "description": "Returns all file versions of the specified project file.\r\n\r\nAny authenticated user.",
- "operationId": "GetProjectFileVersions",
+ "summary": "Returns all versions of the specified project file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsByProjectNameAndProjectIdAndFileId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project.",
"required": true,
"schema": {
"type": "string",
@@ -19538,7 +24753,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -19571,6 +24785,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -19589,16 +24823,15 @@
},
"post": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Uploads a new version of the project file with the specified id.",
- "description": "Uploads a new version of an project file.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateProjectFileVersion",
+ "summary": "Uploads a new version of the specified project file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesVersionsByProjectNameAndProjectIdAndFileId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project.",
"required": true,
"schema": {
"type": "string",
@@ -19608,7 +24841,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -19620,21 +24852,7 @@
"content": {
"multipart/form-data": {
"schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
+ "$ref": "#/components/schemas/FileUploadModel"
}
}
}
@@ -19651,7 +24869,34 @@
}
},
"400": {
- "description": "Bad Request"
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -19759,16 +25004,15 @@
"/projects/{projectId}/files/{fileId}/versions/{versionId}/download": {
"get": {
"tags": [
- "ProjectFiles"
+ "Project Files"
],
- "summary": "Returns the content of the project file version with the specified id.",
- "description": "Returns the content of the project file version with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetProjectFileVersionContent",
+ "summary": "Returns the content of the specified project file version.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsDownloadByProjectNameAndProjectIdAndFileIdAndVersionId",
"parameters": [
{
"name": "projectId",
"in": "path",
- "description": "The id of the project.",
"required": true,
"schema": {
"type": "string",
@@ -19778,7 +25022,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -19788,7 +25031,6 @@
{
"name": "versionId",
"in": "path",
- "description": "The id of the file version.",
"required": true,
"schema": {
"type": "string",
@@ -19807,6 +25049,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -19829,8 +25091,8 @@
"tags": [
"CustomFields"
],
- "summary": "Links a custom field definition to the specified project.",
- "description": "The user must have `project-master-data:write` permissions or `write` permissions on the specified project.",
+ "summary": "Links a custom field to the specified project.",
+ "description": "Links the specified custom field definition to the project.\r\n The user must have `project-master-data:write` permission or `write` permission on the specified project.",
"operationId": "PostProjectLinkCustomFieldDefinitionByProjectId",
"parameters": [
{
@@ -19910,8 +25172,8 @@
"tags": [
"Workflows"
],
- "summary": "Links a workflow to a project.",
- "description": "Links the specified workflow to the project, migrating existing statuses\r\n using the provided mapping. If the project has no existing statuses,\r\n workflow statuses are automatically assigned.\r\n If the project is already linked to a workflow, switching to a new workflow\r\n is supported when proper status mappings are provided.\r\n To link a workflow to a project the user must have `project-master-data:write` permissions on the specified project or be the project creator.",
+ "summary": "Links a workflow to the specified project.",
+ "description": "Links the specified workflow to the project and migrates existing statuses using the provided mapping. If the project has no statuses, workflow statuses are assigned automatically. Switching workflows requires mappings for existing statuses.\r\n The user must be the project creator or have `project-master-data:write` permission for the project.",
"operationId": "PostProjectLinkWorkflowByProjectId",
"parameters": [
{
@@ -19998,8 +25260,8 @@
"tags": [
"Projects"
],
- "summary": "Returns the project members of the project with the specified id.",
- "description": "Returns the project members of the project with the specified id.\r\n \r\n The user has to be the creator of the project or needs `read` permissions of the feature `project-master-data`.",
+ "summary": "Returns members of the specified project.",
+ "description": "Returns members assigned to the specified project.\r\n The user must be the project creator or have `project-master-data:read` permission.",
"operationId": "GetProjectMembersByProjectId",
"parameters": [
{
@@ -20068,8 +25330,8 @@
"tags": [
"ProjectMilestones"
],
- "summary": "Returns all project milestones of the specified project.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns milestones for the specified project.",
+ "description": "Returns milestones assigned to the specified project.\r\n The user must have `project-planning-data:read` permission for the project.",
"operationId": "GetProjectMilestonesByProjectId",
"parameters": [
{
@@ -20128,8 +25390,8 @@
"tags": [
"ProjectStatuses"
],
- "summary": "Returns all project statuses of the project with the specified id.",
- "description": "Returns all project statuses relevant to the project with the specified id. If the project is linked to a workflow, the workflow's project statuses are returned.\r\n The user must either be admin, have `project-master-data:read` permissions or be the creator of the project.",
+ "summary": "Returns statuses for the specified project.",
+ "description": "Returns statuses relevant to the specified project. If the project is linked to a workflow, the workflow's statuses are returned.\r\n The user must be the project creator or have `project-master-data:read` permission.",
"operationId": "GetProjectProjectStatusesByProjectId",
"parameters": [
{
@@ -20207,8 +25469,8 @@
"tags": [
"ProjectStatuses"
],
- "summary": "Creates a project status for a project.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Creates a status for the specified project.",
+ "description": "Creates a project status. Projects linked to a workflow must manage statuses through that workflow.\r\n The user must be the project owner or have `project-manage-config:write` permission.",
"operationId": "PostProjectProjectStatusesByProjectId",
"parameters": [
{
@@ -20295,8 +25557,8 @@
"tags": [
"ProjectTasks"
],
- "summary": "Returns all project tasks of the project with the specified id.",
- "description": "The user must have `project-planning-data:read` permissions, otherwise only assigned tasks will be returned.",
+ "summary": "Returns tasks for the specified project.",
+ "description": "Returns project tasks visible to the current user.\r\n The user must have `project-planning-data:read` permission; otherwise only assigned tasks are returned.",
"operationId": "GetProjectProjectTasksByProjectId",
"parameters": [
{
@@ -20367,8 +25629,8 @@
"tags": [
"ProjectTasks"
],
- "summary": "Returns the project task with the specified id.",
- "description": "The user must have either `project-planning-data:read` permissions or be assigned to the project task.",
+ "summary": "Returns the specified project task.",
+ "description": "Returns the specified task when it belongs to the project.\r\n The user must have `project-planning-data:read` permission or be assigned to the task.",
"operationId": "GetProjectProjectTaskByProjectIdAndTaskId",
"parameters": [
{
@@ -20444,8 +25706,8 @@
"tags": [
"ProjectTasks"
],
- "summary": "Changes the project of the task with the specified id.",
- "description": "Changes the project of the task with the specified id.\r\n This call also moves all subtasks of the task to the new project.\r\n This also changes the tracked time sum of the new project and the previous project.\r\n The related time entries of this task will also be moved to the new project.\r\n The user must have `project-planning-data:write` permissions on both projects.",
+ "summary": "Moves a task to another project.",
+ "description": "Moves the specified task and its subtasks, related time entries, and tracked-time totals to another project.\r\n The user must have `project-planning-data:write` permission on both projects.",
"operationId": "PostProjectProjectTaskChangeProjectByProjectIdAndTaskId",
"parameters": [
{
@@ -20535,8 +25797,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Returns the checklist items for a project task with the specified id.",
- "description": "The user must have either `project-planning-data:read` permissions or be assigned to the project task.",
+ "summary": "Returns checklist items for a project task.",
+ "description": "Returns checklist items for the specified project task.\r\n The user must have `project-planning-data:read` permission or be assigned to the task.",
"operationId": "GetProjectProjectTaskChecklistItemsByProjectIdAndTaskId",
"parameters": [
{
@@ -20615,8 +25877,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Retrieves a checklist item from a project task.",
- "description": "The user must have either `project-planning-data:read` permissions or be assigned to the project task.",
+ "summary": "Returns a checklist item for a project task.",
+ "description": "Returns the specified checklist item for the project task.\r\n The user must have `project-planning-data:read` permission or be assigned to the task.",
"operationId": "GetProjectProjectTaskChecklistItemByProjectIdAndTaskIdAndChecklistItemId",
"parameters": [
{
@@ -20702,8 +25964,8 @@
"tags": [
"Projects"
],
- "summary": "Removes a project member from the project with the specified id.",
- "description": "Removes a project member from the project with the specified id.\r\n \r\n The user has to be the creator of the project or needs `manage` permissions of the feature `project-master-data`.",
+ "summary": "Removes a member from the specified project.",
+ "description": "Removes the specified member from the project.\r\n The user must be the project creator or have `project-master-data:manage` permission.",
"operationId": "PostProjectRemoveProjectMemberByProjectId",
"parameters": [
{
@@ -20783,8 +26045,8 @@
"tags": [
"Retainers"
],
- "summary": "Endpoint to get all retainers for a project.",
- "description": "The user must have the ProjectMasterData read permission for the project to access this endpoint.\r\n\r\nAny authenticated user.",
+ "summary": "Returns retainers for the specified project.",
+ "description": "Returns retainers associated with the specified project.\r\n The user must have `project-master-data:read` permission for the project.",
"operationId": "GetProjectRetainersByProjectId",
"parameters": [
{
@@ -20843,8 +26105,8 @@
"tags": [
"Retainers"
],
- "summary": "Endpoint to create a new retainer for a project.",
- "description": "As soon as a retainer is created for a project, the project will be marked as a retainer project.\r\n Based on the Start and End dates of the retainer, the retainer budgets will be created automatically.\r\n Retainers cannot overlap. There can only be one active retainer per project at a time (no end date and/or including the current date).\r\n \r\n The user needs to have the ProjectMasterData write permission for the project to access this endpoint.\r\n\r\nAny authenticated user.",
+ "summary": "Creates a retainer for the specified project.",
+ "description": "Creates a retainer and marks the project as a retainer project. Retainer budgets are created from its dates. Retainers cannot overlap, and only one active retainer is allowed per project.\r\n The user must have `project-master-data:write` permission for the project.",
"operationId": "PostProjectRetainersByProjectId",
"parameters": [
{
@@ -20921,8 +26183,8 @@
"tags": [
"Retainers"
],
- "summary": "Endpoint to delete a retainer for a project. Deletes all related retainer budgets.",
- "description": "The user must have the ProjectMasterData write permission for the project to access this endpoint.\r\n\r\nAny authenticated user.",
+ "summary": "Deletes a retainer from the specified project.",
+ "description": "Deletes the specified retainer and its related budgets.\r\n The user must have `project-master-data:write` permission for the project.",
"operationId": "DeleteProjectRetainerByProjectIdAndRetainerId",
"parameters": [
{
@@ -20989,8 +26251,8 @@
"tags": [
"Retainers"
],
- "summary": "Endpoint to get a retainer for a project by id.",
- "description": "The user must have the ProjectMasterData read permission for the project to access this endpoint.\r\n\r\nAny authenticated user.",
+ "summary": "Returns the specified project retainer.",
+ "description": "Returns the specified retainer for the project.\r\n The user must have `project-master-data:read` permission for the project.",
"operationId": "GetProjectRetainerByProjectIdAndRetainerId",
"parameters": [
{
@@ -21054,8 +26316,8 @@
"tags": [
"Retainers"
],
- "summary": "Endpoint to update the retainer for a project.",
- "description": "Date changes must not overlap another retainer for the project. The retainer period cannot be changed.\r\n \r\n The user needs to have the ProjectMasterData write permission for the project to access this endpoint.\r\n\r\nAny authenticated user.",
+ "summary": "Updates the specified project retainer.",
+ "description": "Updates the retainer settings. Date changes cannot overlap another retainer, and the retainer period cannot be changed.\r\n The user must have `project-master-data:write` permission for the project.",
"operationId": "PutProjectRetainerByProjectIdAndRetainerId",
"parameters": [
{
@@ -21143,7 +26405,7 @@
"CustomFields"
],
"summary": "Sets custom field values for a project.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Sets the submitted custom field values on the specified project.\r\n The user must have `project-master-data:write` permission for the project.",
"operationId": "PostProjectSetCustomFieldsByProjectId",
"parameters": [
{
@@ -21226,8 +26488,8 @@
"tags": [
"Projects"
],
- "summary": "Updates the project key for the specified project and all associated task identifiers.",
- "description": "The project key must be unique within the workspace and follow these rules:\r\n - Only uppercase letters (A-Z), numbers (0-9), and dashes (-)\r\n - Between 1 and 32 characters\r\n - Not already in use by another active project in the workspace\r\n \r\n This operation will also update all task identifiers for tasks in this project\r\n (e.g., OLDKEY-123 becomes NEWKEY-123). Task identifiers are updated in batches\r\n to ensure audit logs and websocket events are triggered properly.\r\n \r\n Note: The project key update is now transactional with automatic retry on race conditions.\r\n If multiple concurrent requests try to update the same project key, the service will\r\n retry with exponential backoff (100ms, 200ms, 400ms) for up to 3 attempts.\r\n Task identifier updates are processed in batches as a background operation.\r\n \r\n Note: User-provided keys are not subject to profanity filtering. Users can set any key they choose.\r\n\r\nThe user must be an admin or have `project-master-data:write` permissions.",
+ "summary": "Updates the specified project's key.",
+ "description": "Updates the project key and the identifiers of tasks in that project. The key must be unique in the workspace and use uppercase letters, numbers, or dashes.\r\n\r\nThe user must be an admin or have `project-master-data:write` permissions.",
"operationId": "PostProjectSetProjectKeyByProjectId",
"parameters": [
{
@@ -21304,8 +26566,8 @@
"tags": [
"ProjectTags"
],
- "summary": "Returns the tags of the project with the specified id.",
- "description": "To get the tags of a project the user must have `project-master-data:read` permissions on the specified project.",
+ "summary": "Returns tags for the specified project.",
+ "description": "Returns tags assigned to the specified project.\r\n The user must have `project-master-data:read` permission for the specified project.",
"operationId": "GetProjectTagsByProjectId",
"parameters": [
{
@@ -21396,8 +26658,8 @@
"tags": [
"TaskDependencies"
],
- "summary": "Returns all task dependencies for a specific project.",
- "description": "To get all dependencies of a project, the user needs project planning permissions on that project.",
+ "summary": "Returns task dependencies for a project.",
+ "description": "Returns dependencies involving tasks in the specified project.\r\n The user must have `project-planning-data:read` permission for the project.",
"operationId": "GetProjectTaskdependenciesByProjectId",
"parameters": [
{
@@ -21456,8 +26718,8 @@
"tags": [
"TaskLists"
],
- "summary": "Returns all task lists of the project with the specified id.",
- "description": "The permission check in this function is dynamically based on the entity name.\r\n In the cases where the user tries to get the project task lists,\r\n the user needs read permissions on the project-planning-data feature.\r\n\r\nAny authenticated user.",
+ "summary": "Returns task lists for the specified project.",
+ "description": "Returns task lists visible in the specified project.\r\n The user must have `project-planning-data:read` permission for the project.",
"operationId": "GetProjectTaskListsByProjectId",
"parameters": [
{
@@ -21535,8 +26797,8 @@
"tags": [
"TaskLists"
],
- "summary": "Creates a new task list.",
- "description": "To create a new project task list, the user needs manage permissions on the project-planning-data feature.\r\n\r\nAny authenticated user.",
+ "summary": "Creates a task list in the specified project.",
+ "description": "Creates a task list in the specified project.\r\n The user must have `project-planning-data:manage` permission for the project.",
"operationId": "PostProjectTaskListsByProjectId",
"parameters": [
{
@@ -21623,8 +26885,8 @@
"tags": [
"TaskLists"
],
- "summary": "Returns the task list with the specified id.",
- "description": "The permission check in this function is dynamically based on the entity name.\r\n In the cases where the user tries to get the project task lists,\r\n the user needs read permissions on the project-planning-data feature.\r\n\r\nAny authenticated user.",
+ "summary": "Returns the specified task list.",
+ "description": "Returns the specified task list when it is visible in the project.\r\n The user must have `project-planning-data:read` permission for the project.",
"operationId": "GetProjectTaskListByProjectIdAndTaskListId",
"parameters": [
{
@@ -21678,8 +26940,8 @@
"tags": [
"TaskLists"
],
- "summary": "Updates the task list with the specified id.",
- "description": "To update a project task list, the user needs manage permissions on the project-planning-data feature.\r\n\r\nAny authenticated user.",
+ "summary": "Updates the specified task list.",
+ "description": "Updates the specified task list's name and settings.\r\n The user must have `project-planning-data:manage` permission for the project.",
"operationId": "PutProjectTaskListByProjectIdAndTaskListId",
"parameters": [
{
@@ -21766,8 +27028,8 @@
"tags": [
"TaskLists"
],
- "summary": "Adds the tasks to the task list with the specified id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Adds tasks to the specified task list.",
+ "description": "Adds the submitted tasks to the specified task list and returns their resulting order.\r\n The user must have `project-planning-data:write` permission for the project and tasks.",
"operationId": "PostProjectTaskListAddTasksByProjectIdAndTaskListId",
"parameters": [
{
@@ -21850,8 +27112,8 @@
"tags": [
"TaskLists"
],
- "summary": "Changes the project of the task list with the specified id.",
- "description": "This endpoint also moves all tasks and time entries to the new project.\r\n This will also change the tracked time sum of the old and new projects.\r\n The task status mapping will move all tasks of a certain status to the new provided status on the mapping.\r\n\r\nAny authenticated user.",
+ "summary": "Moves a task list to another project.",
+ "description": "Moves the task list, its tasks, and related time entries to another project. A status mapping can move tasks to replacement statuses.\r\n The user must have `project-planning-data:write` permission on both projects.",
"operationId": "PostProjectTaskListChangeProjectByProjectIdAndTaskListId",
"parameters": [
{
@@ -21911,8 +27173,8 @@
"tags": [
"TaskLists"
],
- "summary": "Creates a copy of the task list.",
- "description": "A new task list will be created with the same name as the original one.\r\n All tasks and subtasks will also be copied in this operation.\r\n Comments, files and activity logs are not copied.\r\n To copy a task list, the user needs to have 'ProjectPlanning'\r\n permissions in general or in the project the task list belongs to.\r\n\r\nAny authenticated user.",
+ "summary": "Copies the specified task list.",
+ "description": "Creates a task list with the same name and copies its tasks and subtasks. Comments, files, and activity logs are not copied.\r\n The user must have `project-planning-data:write` permission for the project.",
"operationId": "PostProjectTaskListCopyByProjectIdAndTaskListId",
"parameters": [
{
@@ -21988,8 +27250,8 @@
"tags": [
"TaskLists"
],
- "summary": "Deletes the task list with the specified id.",
- "description": "To delete project task list, the user needs manage permissions on the project-planning-data feature.\r\n\r\nAny authenticated user.",
+ "summary": "Deletes the specified task list.",
+ "description": "Deletes the specified task list and removes its task assignments.\r\n The user must have `project-planning-data:manage` permission for the project.",
"operationId": "PostProjectTaskListDeleteByProjectIdAndTaskListId",
"parameters": [
{
@@ -22069,8 +27331,8 @@
"tags": [
"TaskLists"
],
- "summary": "Removes the tasks from the task list with the specified id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Removes tasks from the specified task list.",
+ "description": "Removes the submitted tasks from the specified task list.\r\n The user must have `project-planning-data:write` permission for the project and tasks.",
"operationId": "PostProjectTaskListRemoveTasksByProjectIdAndTaskListId",
"parameters": [
{
@@ -22134,8 +27396,8 @@
"tags": [
"TaskLists"
],
- "summary": "Archives or unarchives the task list with the specified id.",
- "description": "Archives or unarchives the task list with the specified id.\r\n An archived task list still exists but is not editable anymore.\r\n\r\nAny authenticated user.",
+ "summary": "Archives or restores the specified task list.",
+ "description": "Archives or restores the specified task list. An archived task list remains available but cannot be edited.\r\n The user must have `project-planning-data:manage` permission for the project.",
"operationId": "PostProjectTaskListSetArchivedByProjectIdAndTaskListId",
"parameters": [
{
@@ -22232,8 +27494,8 @@
"tags": [
"TaskLists"
],
- "summary": "Returns the task with the specified id in the task list with the specified id.",
- "description": "To get a task in a project task list, the user needs read permissions on the project-planning-data feature.\r\n\r\nAny authenticated user.",
+ "summary": "Returns a task in the specified task list.",
+ "description": "Returns the specified task when it belongs to the task list.\r\n The user must have `project-planning-data:read` permission for the project.",
"operationId": "GetProjectTaskListTaskByProjectIdAndTaskListIdAndTaskId",
"parameters": [
{
@@ -22329,8 +27591,8 @@
"tags": [
"TaskLists"
],
- "summary": "Updates the order of a task in a task list.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Updates a task's order in a task list.",
+ "description": "Updates the specified task's position in the task list.\r\n The user must have `project-planning-data:write` permission for the project and task.",
"operationId": "PostProjectTaskListTaskUpdateOrderByProjectIdAndTaskListIdAndTaskId",
"parameters": [
{
@@ -22430,8 +27692,8 @@
"tags": [
"TaskLists"
],
- "summary": "Updates the order of the task list with the specified id.",
- "description": "To update the order of a project task list, the user needs manage permissions on the project-planning-data feature.\r\n\r\nAny authenticated user.",
+ "summary": "Updates the order of the specified task list.",
+ "description": "Updates the specified task list's position within the project.\r\n The user must have `project-planning-data:manage` permission for the project.",
"operationId": "PostProjectTaskListUpdateOrderByProjectIdAndTaskListId",
"parameters": [
{
@@ -22511,8 +27773,8 @@
"tags": [
"TaskStatuses"
],
- "summary": "Returns all task statuses of the project with the specified id.",
- "description": "Returns all task statuses relevant to the project with the specified id. If the project is linked to a workflow, the workflow's task statuses are returned.\r\n The user must have either `project-master-data:read` permissions or be assigned to a task on the specified project.",
+ "summary": "Returns task statuses for the specified project.",
+ "description": "Returns statuses relevant to the specified project. If the project is linked to a workflow, the workflow's statuses are returned.\r\n The user must have `project-master-data:read` permission or be assigned to a task on the project.",
"operationId": "GetProjectTaskStatusesByProjectId",
"parameters": [
{
@@ -22591,8 +27853,8 @@
"tags": [
"TaskStatuses"
],
- "summary": "Creates a new task status for the specified project.",
- "description": "The user must either have `project-planning-data:write` permissions or be creator of the project.",
+ "summary": "Creates a task status for the specified project.",
+ "description": "Creates a task status for the specified project.\r\n The user must be the project creator or have `project-planning-data:write` permission.",
"operationId": "PostProjectTaskStatusesByProjectId",
"parameters": [
{
@@ -22679,8 +27941,8 @@
"tags": [
"TaskStatuses"
],
- "summary": "Returns the specified task status of a project.",
- "description": "The user must either have 'project-master-data:write' permissions or be the owner of the project.",
+ "summary": "Returns the specified project task status.",
+ "description": "Returns the specified status for the project.\r\n The user must have `project-master-data:read` permission or be the project creator.",
"operationId": "GetProjectTaskStatusByProjectIdAndTaskStatusId",
"parameters": [
{
@@ -22755,7 +28017,7 @@
"TaskStatuses"
],
"summary": "Updates a task status for the specified project.",
- "description": "The status type cannot be changed if it is the last status of type 'todo' or 'done'.\r\n \r\n The user must either have `project-planning-data:write` permissions or be creator of the project.",
+ "description": "Updates the specified status. Its type cannot change when it is the last `todo` or `done` status in the project.\r\n The user must be the project creator or have `project-planning-data:write` permission.",
"operationId": "PutProjectTaskStatusByProjectIdAndTaskStatusId",
"parameters": [
{
@@ -22852,8 +28114,8 @@
"tags": [
"TaskStatuses"
],
- "summary": "Deletes the task status with the specified id.",
- "description": "If the status to delete is still used by tasks, another task status to move the tasks to must be provided.\r\n The last status of type 'todo' or 'done' cannot be deleted.\r\n The user must either have `project-planning-data:write` permissions or must be creator of the project.",
+ "summary": "Deletes the specified project task status.",
+ "description": "Deletes the specified status. If tasks still use it, provide another status to receive those tasks. The last `todo` or `done` status cannot be deleted.\r\n The user must be the project creator or have `project-planning-data:write` permission.",
"operationId": "PostProjectTaskStatusDeleteByProjectIdAndTaskStatusId",
"parameters": [
{
@@ -23005,8 +28267,8 @@
"tags": [
"ProjectTasks"
],
- "summary": "Returns the type of work for the project with the specified id.",
- "description": "The project can be a connected or a workspace project.\r\n User must have at least 'read' permissions on the 'project-planning-data' feature.\r\n\r\nAny authenticated user.",
+ "summary": "Returns types of work for the specified project.",
+ "description": "Returns types of work for connected or workspace projects.\r\n The user must have `project-planning-data:read` permission for the project.",
"operationId": "GetProjectTypesOfWorkByProjectId",
"parameters": [
{
@@ -23075,8 +28337,8 @@
"tags": [
"CustomFields"
],
- "summary": "Unlinks a custom field definition from the specified project.",
- "description": "When the definition is unlinked from a project, all values of the custom field will be removed from the tasks within that project.\r\n \r\n The user must have `project-master-data:write` permissions or `write` permissions on the specified project.",
+ "summary": "Unlinks a custom field from the specified project.",
+ "description": "Unlinking the definition removes its values from tasks in the project.\r\n The user must have `project-master-data:write` permission or `write` permission on the specified project.",
"operationId": "PostProjectUnlinkCustomFieldDefinitionByProjectId",
"parameters": [
{
@@ -23156,8 +28418,8 @@
"tags": [
"Workflows"
],
- "summary": "Unlinks a workflow from a project.",
- "description": "Unlinks the workflow from the project, cloning workflow statuses\r\n to local project-specific statuses. Custom fields and automations\r\n remain but become editable (no longer synced with workflow).\r\n To unlink a workflow from a project the user must have `project-master-data:write` permissions on the specified project or be the project creator.",
+ "summary": "Unlinks a workflow from the specified project.",
+ "description": "Unlinks the workflow and clones its statuses into project-specific statuses. Custom fields and automations remain but are no longer synchronized with the workflow.\r\n The user must be the project creator or have `project-master-data:write` permission for the project.",
"operationId": "PostProjectUnlinkWorkflowByProjectId",
"parameters": [
{
@@ -23233,8 +28495,8 @@
"tags": [
"ProjectMembers"
],
- "summary": "Updates the role of a project member of the project with the specified id.",
- "description": "Changes the role of a project member.\r\n The project member can also be set as a responsible project member, but only if no other member of this project is\r\n responsible.\r\n It is necessary that the project role is available in this project, otherwise the member cannot be updated.\r\n A project role is available when they are connected to the specified project type of the project.\r\n \r\n The user has to be the creator or needs `project-master-data:manage` permissions on the project.",
+ "summary": "Updates a member of the specified project.",
+ "description": "Changes the member's role or responsible status. The selected role must be available for the project's type, and only one responsible member is allowed.\r\n The user must be the project creator or have `project-master-data:manage` permission for the project.",
"operationId": "PostProjectUpdateProjectMemberByProjectId",
"parameters": [
{
@@ -23291,8 +28553,8 @@
"tags": [
"Projects"
],
- "summary": "Updates the order of a project status.",
- "description": "Updates the order of a project status.\r\n\r\nAny authenticated user.",
+ "summary": "Updates a project's status order.",
+ "description": "Updates the order of statuses for the specified project.\r\n The user must be the project owner or have `project-manage-config:write` permission.",
"operationId": "PostProjectUpdateProjectStatusOrderByProjectId",
"parameters": [
{
@@ -23362,8 +28624,8 @@
"tags": [
"ProjectStatuses"
],
- "summary": "Returns all project statuses.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns project statuses in the workspace.",
+ "description": "Returns active project statuses by default. Set `showArchived` to include archived statuses visible to the current user.\r\n The user must have access to each returned project status.",
"operationId": "GetProjectStatuses",
"parameters": [
{
@@ -23443,8 +28705,8 @@
"tags": [
"ProjectStatuses"
],
- "summary": "Returns the project status with the specified id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns the specified project status.",
+ "description": "Returns the project status with the specified id.\r\n\r\nAny authenticated user.",
"operationId": "GetProjectStatusById",
"parameters": [
{
@@ -23518,8 +28780,8 @@
"tags": [
"ProjectStatuses"
],
- "summary": "Updates an existing project status.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Updates the specified project status.",
+ "description": "Updates the specified project status and returns the saved status.\r\n The user must be the project creator or have `project-master-data:write` permission.",
"operationId": "PutProjectStatusById",
"parameters": [
{
@@ -23606,8 +28868,8 @@
"tags": [
"ProjectStatuses"
],
- "summary": "Deletes a project status.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Deletes the specified project status.",
+ "description": "Deletes the specified status. Project statuses in use must be replaced, and workflow statuses must be managed through the workflow.\r\n The user must be the project owner or have `project-manage-config:write` permission for the project.",
"operationId": "PostProjectStatusDeleteByProjectStatusId",
"parameters": [
{
@@ -23688,7 +28950,7 @@
"ProjectStatuses"
],
"summary": "Sets the archived flag for a project status.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Sets the archived flag for a project status. Archived statuses remain available for existing projects. The user must have permission to access the requested resource.",
"operationId": "PostProjectStatusSetArchivedByProjectStatusId",
"parameters": [
{
@@ -23775,8 +29037,8 @@
"tags": [
"ProjectTemplates"
],
- "summary": "Retrieves all project templates.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns project templates.",
+ "description": "Returns project templates. Each template includes its configured project defaults. The user must have permission to access the requested resource.",
"operationId": "GetProjectTemplates",
"parameters": [
{
@@ -23826,7 +29088,7 @@
"ProjectTemplates"
],
"summary": "Creates a new project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "description": "Creates a new project template. The new template supplies defaults for future projects.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTemplate",
"requestBody": {
"description": "The model to create the project template.",
@@ -23882,8 +29144,8 @@
"tags": [
"ProjectTemplateTags"
],
- "summary": "Removes a tag from all project templates.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Removes a tag from project templates.",
+ "description": "Removes a tag from project templates. The submitted tags are applied to the template.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTemplatesDeleteTags",
"requestBody": {
"description": "The model to remove the tag from all project templates.",
@@ -23942,8 +29204,8 @@
"tags": [
"ProjectTemplateTags"
],
- "summary": "Returns all tags currently in use by project templates.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns tags in use by project templates.",
+ "description": "Returns tags in use by project templates. The result includes tags shared by project templates. The user must have permission to access the requested resource.",
"operationId": "GetProjectTemplatesTags",
"responses": {
"200": {
@@ -23990,8 +29252,8 @@
"tags": [
"ProjectTemplateTags"
],
- "summary": "Updates a tag globally for all project templates.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Updates a tag globally for project templates.",
+ "description": "Updates a tag globally for project templates. The submitted tags are applied to the template.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTemplateUpdateTags",
"requestBody": {
"description": "The model containing the tag updates.",
@@ -24051,7 +29313,7 @@
"ProjectTemplates"
],
"summary": "Deletes a project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "description": "Deletes a project template. Projects already created from the template are not changed.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "DeleteProjectTemplateById",
"parameters": [
{
@@ -24089,8 +29351,8 @@
"tags": [
"ProjectTemplates"
],
- "summary": "Retrieves a specific project template.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns a specific project template.",
+ "description": "Returns a specific project template. The response includes the template's project configuration. The user must have permission to access the requested resource.",
"operationId": "GetProjectTemplateById",
"parameters": [
{
@@ -24144,8 +29406,8 @@
"tags": [
"ProjectTemplates"
],
- "summary": "Updates an existing project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Updates project template.",
+ "description": "Updates project template. The template defaults are changed for future projects.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PutProjectTemplateById",
"parameters": [
{
@@ -24223,8 +29485,8 @@
"tags": [
"ProjectTemplateTags"
],
- "summary": "Adds a batch of tags to the project template with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Adds a batch of tags to the project template.",
+ "description": "Adds a batch of tags to the project template. The submitted tags are applied to the template.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTemplateAddTagsByProjectTemplateId",
"parameters": [
{
@@ -25130,8 +30392,8 @@
"tags": [
"CustomFields"
],
- "summary": "Returns all custom field definitions linked to the specified project template, including definitions linked via a workflow.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns custom fields.",
+ "description": "Returns custom fields. The result includes fields linked directly or through its workflow. The user must have permission to access the requested resource.",
"operationId": "GetProjectTemplateCustomFieldDefinitionsByProjectTemplateId",
"parameters": [
{
@@ -25190,8 +30452,8 @@
"tags": [
"CustomFields"
],
- "summary": "Updates the order of a custom field definition for the specified project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Updates custom field order in a template.",
+ "description": "Updates custom field order in a template. The custom field order is stored for the template.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PutProjectTemplateCustomFieldDefinitionByProjectTemplateIdAndCustomFieldDefinitionId",
"parameters": [
{
@@ -25269,8 +30531,8 @@
"tags": [
"ProjectTemplateTags"
],
- "summary": "Removes tags from the project template with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Removes tags from the project template.",
+ "description": "Removes tags from the project template. The submitted tags are applied to the template.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTemplateDeleteTagsByProjectTemplateId",
"parameters": [
{
@@ -25357,8 +30619,8 @@
"tags": [
"CustomFields"
],
- "summary": "Links a custom field definition to the specified project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Links a custom field definition to the template.",
+ "description": "Links a custom field definition to the template. The custom field is available on tasks created from the template.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTemplateLinkCustomFieldDefinitionByProjectTemplateId",
"parameters": [
{
@@ -25429,8 +30691,8 @@
"tags": [
"ProjectMilestoneTemplates"
],
- "summary": "Returns all milestone templates of the given project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:read` permissions.",
+ "summary": "Returns milestone templates of the given template.",
+ "description": "Returns milestone templates of the given template. Each milestone template belongs to the selected project template.\r\n\r\nThe user must be an admin or have `project-manage-config:read` permissions.",
"operationId": "GetProjectTemplateMilestonesByProjectTemplateId",
"parameters": [
{
@@ -25490,8 +30752,8 @@
"tags": [
"ProjectMilestoneTemplates"
],
- "summary": "Creates a new milestone template for the given project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Creates milestone template for the template.",
+ "description": "Creates milestone template for the template. Projects created from the template can use this milestone.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTemplateMilestonesByProjectTemplateId",
"parameters": [
{
@@ -25549,8 +30811,8 @@
"tags": [
"ProjectMilestoneTemplates"
],
- "summary": "Deletes a milestone for the given project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Deletes a milestone for the project template.",
+ "description": "Deletes a milestone for the project template. The milestone is removed from the template.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "DeleteProjectTemplateMilestoneByProjectTemplateIdAndMilestoneId",
"parameters": [
{
@@ -25598,8 +30860,8 @@
"tags": [
"ProjectMilestoneTemplates"
],
- "summary": "Returns a milestone by id for the given project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:read` permissions.",
+ "summary": "Returns a milestone by id for the project template.",
+ "description": "Returns a milestone by id for the project template. The response includes the milestone's dates and status.\r\n\r\nThe user must be an admin or have `project-manage-config:read` permissions.",
"operationId": "GetProjectTemplateMilestoneByProjectTemplateIdAndMilestoneId",
"parameters": [
{
@@ -25654,8 +30916,8 @@
"tags": [
"ProjectMilestoneTemplates"
],
- "summary": "Updates a milestone template for the given project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Updates a milestone template for the template.",
+ "description": "Updates a milestone template for the template. The submitted dates and status replace the existing values.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PutProjectTemplateMilestoneByProjectTemplateIdAndMilestoneId",
"parameters": [
{
@@ -25723,8 +30985,8 @@
"tags": [
"ProjectTemplates"
],
- "summary": "Retrieves all project statuses of a project template.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns project statuses of a project template.",
+ "description": "Returns project statuses of a project template. The result includes statuses available to the template. The user must have permission to access the requested resource.",
"operationId": "GetProjectTemplateProjectStatusesByProjectTemplateId",
"parameters": [
{
@@ -25782,7 +31044,7 @@
"ProjectTemplates"
],
"summary": "Adds a project status to a project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "description": "Adds a project status to a project template. Projects created from the template can use this status.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTemplateProjectStatusesByProjectTemplateId",
"parameters": [
{
@@ -25871,7 +31133,7 @@
"CustomFields"
],
"summary": "Sets the custom fields for a project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "description": "Sets the custom fields for a project template. The custom fields become available to tasks created from the template.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTemplateSetCustomFieldsByProjectTemplateId",
"parameters": [
{
@@ -25925,8 +31187,8 @@
"tags": [
"ProjectTemplateTags"
],
- "summary": "Returns the tags of the project template with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:read` permissions.",
+ "summary": "Returns the tags of the project template.",
+ "description": "Returns the tags of the project template. The result includes tags currently used by that template.\r\n\r\nThe user must be an admin or have `project-manage-config:read` permissions.",
"operationId": "GetProjectTemplateTagsByProjectTemplateId",
"parameters": [
{
@@ -26008,8 +31270,8 @@
"tags": [
"ProjectTemplates"
],
- "summary": "Retrieves the task bundle associated with a project template.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns the bundle associated with a template.",
+ "description": "Returns the bundle associated with a template. The response includes the task bundle linked to the template. The user must have permission to access the requested resource.",
"operationId": "GetProjectTemplateTaskBundleByProjectTemplateId",
"parameters": [
{
@@ -26065,8 +31327,8 @@
"tags": [
"ProjectTemplates"
],
- "summary": "Returns all task statuses of the project template with the specified id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns task statuses of the project template.",
+ "description": "Returns task statuses of the project template. The result includes statuses available to the template. The user must have permission to access the requested resource.",
"operationId": "GetProjectTemplateTaskStatusesByProjectTemplateId",
"parameters": [
{
@@ -26135,8 +31397,8 @@
"tags": [
"ProjectTemplates"
],
- "summary": "Creates a new task status for the specified project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Creates a task status for the template.",
+ "description": "Creates a task status for the template. Tasks created from the template can use this status.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTemplateTaskStatusesByProjectTemplateId",
"parameters": [
{
@@ -26214,8 +31476,8 @@
"tags": [
"ProjectTemplates"
],
- "summary": "Deletes the task status of the project template with the specified id.",
- "description": "The last status of type 'todo' or 'done' cannot be deleted.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Deletes the task status of the project template.",
+ "description": "Deletes the task status of the project template. The last status of type 'todo' or 'done' cannot be deleted.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "DeleteProjectTemplateTaskStatusByProjectTemplateIdAndTaskStatusId",
"parameters": [
{
@@ -26283,8 +31545,8 @@
"tags": [
"ProjectTemplates"
],
- "summary": "Returns the task status of the project template with the specified id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns the task status of the project template.",
+ "description": "Returns the task status of the project template. The result includes statuses available to the template. The user must have permission to access the requested resource.",
"operationId": "GetProjectTemplateTaskStatusByProjectTemplateIdAndTaskStatusId",
"parameters": [
{
@@ -26348,8 +31610,8 @@
"tags": [
"ProjectTemplates"
],
- "summary": "Updates a task status for the specified project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Updates a task status for the template.",
+ "description": "Updates a task status for the template. The template uses the submitted status settings.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PutProjectTemplateTaskStatusByProjectTemplateIdAndTaskStatusId",
"parameters": [
{
@@ -26437,8 +31699,8 @@
"tags": [
"CustomFields"
],
- "summary": "Unlinks a custom field definition from the specified project template.",
- "description": "When the definition is unlinked from a project template, all values of the custom field will be removed from the task templates within that project template.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Unlinks a custom field from a template.",
+ "description": "Unlinks a custom field from a template. When the definition is unlinked from a project template, all values of the custom field will be removed from the task templates within that project template.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTemplateUnlinkCustomFieldDefinitionByProjectTemplateId",
"parameters": [
{
@@ -26510,7 +31772,7 @@
"Workflows"
],
"summary": "Unlinks a workflow from a project template.",
- "description": "Unlinks the workflow from the project template, cloning workflow statuses\r\n to local template-specific statuses. Custom fields and automations\r\n remain but become editable (no longer synced with workflow).\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "description": "Unlinks a workflow from a project template. Custom fields and automations remain but become editable (no longer synced with workflow).\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTemplateUnlinkWorkflowByProjectTemplateId",
"parameters": [
{
@@ -26577,8 +31839,8 @@
"tags": [
"ProjectTemplates"
],
- "summary": "Updates the order of a project status within a project template.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Updates project status order in a template.",
+ "description": "Updates project status order in a template. The selected status is moved within the template configuration.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTemplateUpdateProjectStatusOrderByProjectTemplateId",
"parameters": [
{
@@ -26647,16 +31909,15 @@
"/projecttemplates/{projecttemplateId}/externalfiles": {
"post": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Endpoint to batch create external files without uploading.",
- "description": "Endpoint to create file infos with batch operation.\nCreated file infos don't have a version.\r\n\r\nAny authenticated user.",
- "operationId": "CreateExternalFiles",
+ "summary": "Creates external file references for the specified projecttemplate.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostExternalFilesByProjectTemplateNameAndProjectTemplateId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate.",
"required": true,
"schema": {
"type": "string",
@@ -26665,7 +31926,6 @@
}
],
"requestBody": {
- "description": "List of file forms.",
"content": {
"application/json": {
"schema": {
@@ -26674,16 +31934,9 @@
"$ref": "#/components/schemas/ExternalFileForm"
}
}
- },
- "application/*+json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ExternalFileForm"
- }
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -26691,7 +31944,30 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -26715,16 +31991,16 @@
"/projecttemplates/{projecttemplateId}/files": {
"delete": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Deletes the files of the specified projecttemplate.",
- "description": "Deletes the metadata and the different versions of the files.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteProjectTemplateFiles",
+ "summary": "Deletes all files and versions for the specified projecttemplate.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByProjectTemplateNameAndProjectTemplateId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate.",
+ "description": "The projecttemplate id.",
"required": true,
"schema": {
"type": "string",
@@ -26735,6 +32011,36 @@
"responses": {
"204": {
"description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -26753,16 +32059,15 @@
},
"get": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Returns all files of the projecttemplate with the specified id.",
- "description": "Returns all file metadata of the projecttemplate with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetProjectTemplateFiles",
+ "summary": "Returns all files of the specified projecttemplate.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesByProjectTemplateNameAndProjectTemplateId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate.",
"required": true,
"schema": {
"type": "string",
@@ -26795,6 +32100,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -26813,16 +32138,15 @@
},
"post": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Creates a new projecttemplate file for the projecttemplate with the specified id..",
- "description": "Uploads a new projecttemplate file for the projecttemplate with the specified id.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateProjectTemplateFile",
+ "summary": "Uploads a file for the specified projecttemplate.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByProjectTemplateNameAndProjectTemplateId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate.",
"required": true,
"schema": {
"type": "string",
@@ -26834,21 +32158,7 @@
"content": {
"multipart/form-data": {
"schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
+ "$ref": "#/components/schemas/FileUploadModel"
}
}
}
@@ -26865,7 +32175,24 @@
}
},
"400": {
- "description": "Bad Request"
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -26886,16 +32213,15 @@
"/projecttemplates/{projecttemplateId}/files/byurl": {
"post": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Uploads a new file by providing an url.",
- "description": "The file needs to be a public available url.\nThe file size must not exceed 100MB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateProjectTemplateFileByUrl",
+ "summary": "Uploads a file from a public URL for the specified projecttemplate.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByUrlByProjectTemplateNameAndProjectTemplateId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate the file is linked to.",
"required": true,
"schema": {
"type": "string",
@@ -26904,19 +32230,14 @@
}
],
"requestBody": {
- "description": "The url, name and description of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FilePostForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FilePostForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -26928,6 +32249,26 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -26948,16 +32289,16 @@
"/projecttemplates/{projecttemplateId}/files/{fileId}": {
"delete": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Deletes the projecttemplate file with the specified id.",
- "description": "Deletes the metadata and the different versions of the file.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteProjectTemplateFile",
+ "summary": "Deletes the specified projecttemplate file and its versions.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByProjectTemplateNameAndProjectTemplateIdAndFileId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate.",
+ "description": "The projecttemplate id.",
"required": true,
"schema": {
"type": "string",
@@ -26967,7 +32308,7 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The file id.",
"required": true,
"schema": {
"type": "string",
@@ -26978,6 +32319,36 @@
"responses": {
"204": {
"description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -27071,16 +32442,15 @@
},
"put": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Updates the metadata of the projecttemplate file with the specified id.",
- "description": "Updates the metadata of the projecttemplate file with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "UpdateProjectTemplateFile",
+ "summary": "Updates metadata for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PutFilesByProjectTemplateNameAndProjectTemplateIdAndFileId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate.",
"required": true,
"schema": {
"type": "string",
@@ -27090,7 +32460,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -27099,19 +32468,14 @@
}
],
"requestBody": {
- "description": "The model to update the file with the specified id.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileInfoUpdateForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileInfoUpdateForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -27123,6 +32487,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -27143,16 +32537,15 @@
"/projecttemplates/{projecttemplateId}/files/{fileId}/changeentity": {
"post": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Changes the projecttemplate this file belongs to.",
- "description": "Changes the projecttemplate this file belongs to.\nSwitch to the specified projecttemplate or to a global file\nif the 'EntityId' of the model is set to null.\r\n\r\nAny authenticated user.",
- "operationId": "ChangeProjectTemplate",
+ "summary": "Changes the projecttemplate that owns the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesChangeProjectTemplateByProjectTemplateNameAndProjectTemplateIdAndFileId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate.",
"required": true,
"schema": {
"type": "string",
@@ -27162,7 +32555,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -27171,19 +32563,14 @@
}
],
"requestBody": {
- "description": "The model to change the entity information of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileEntityForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileEntityForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -27195,6 +32582,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -27215,16 +32632,15 @@
"/projecttemplates/{projecttemplateId}/files/{fileId}/copy": {
"post": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Copies the file to a new projecttemplate.",
- "description": "Copies the file to a new projecttemplate (meta and content).\r\n\r\nAny authenticated user.",
- "operationId": "CopyToProjectTemplate",
+ "summary": "Copies the specified file to another projecttemplate.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesCopyByProjectTemplateNameAndProjectTemplateIdAndFileId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate.",
"required": true,
"schema": {
"type": "string",
@@ -27234,7 +32650,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -27243,19 +32658,14 @@
}
],
"requestBody": {
- "description": "The model to change the entity information of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileCopyForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileCopyForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -27267,6 +32677,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -27287,16 +32727,15 @@
"/projecttemplates/{projecttemplateId}/files/{fileId}/download": {
"get": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Returns the content of the projecttemplate file with the specified id.",
- "description": "Returns the content of the projecttemplate file. Uses the latest file version.\nIf the projecttemplate file is an image and the width and height are set,\nthe image will be resized before it is returned.\r\n\r\nAny authenticated user.",
- "operationId": "GetProjectTemplateFileContent",
+ "summary": "Returns the latest content of the specified projecttemplate file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesDownloadByProjectTemplateNameAndProjectTemplateIdAndFileId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate.",
"required": true,
"schema": {
"type": "string",
@@ -27306,7 +32745,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -27316,7 +32754,6 @@
{
"name": "width",
"in": "query",
- "description": "Set width to resize.",
"schema": {
"type": "number",
"format": "double"
@@ -27325,7 +32762,6 @@
{
"name": "height",
"in": "query",
- "description": "Set height to resize.",
"schema": {
"type": "number",
"format": "double"
@@ -27334,7 +32770,6 @@
{
"name": "crop",
"in": "query",
- "description": "Whether to crop the image when resizing it.",
"schema": {
"type": "boolean"
}
@@ -27351,6 +32786,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -27371,16 +32836,15 @@
"/projecttemplates/{projecttemplateId}/files/{fileId}/pdf": {
"get": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Returns the content of the file with the specified id as pdf.\ntype or conversion not possible.",
- "description": "Returns the content of the projecttemplate file. Uses the latest file version.\r\n\r\nAny authenticated user.",
- "operationId": "GetProjectTemplateFileContent",
+ "summary": "Returns the specified projecttemplate file as PDF.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesPdfByProjectTemplateNameAndProjectTemplateIdAndFileId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate.",
"required": true,
"schema": {
"type": "string",
@@ -27390,7 +32854,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -27400,7 +32863,6 @@
{
"name": "inline",
"in": "query",
- "description": "If inline is false, content-disposition header is attachment.",
"schema": {
"type": "boolean",
"default": false
@@ -27418,6 +32880,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -27438,16 +32930,15 @@
"/projecttemplates/{projecttemplateId}/files/{fileId}/shareurl": {
"get": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Returns an url to share the file.",
- "description": "Returns a url to share the file.\r\n\r\nAny authenticated user.",
- "operationId": "GetPublicToken",
+ "summary": "Returns a public URL for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesShareUrlByProjectTemplateNameAndProjectTemplateIdAndFileId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate.",
"required": true,
"schema": {
"type": "string",
@@ -27457,7 +32948,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -27475,6 +32965,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -27495,16 +33005,15 @@
"/projecttemplates/{projecttemplateId}/files/{fileId}/versions": {
"get": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Returns all file versions of the specified projecttemplate file.",
- "description": "Returns all file versions of the specified projecttemplate file.\r\n\r\nAny authenticated user.",
- "operationId": "GetProjectTemplateFileVersions",
+ "summary": "Returns all versions of the specified projecttemplate file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsByProjectTemplateNameAndProjectTemplateIdAndFileId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate.",
"required": true,
"schema": {
"type": "string",
@@ -27514,7 +33023,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -27547,6 +33055,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -27565,16 +33093,15 @@
},
"post": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Uploads a new version of the projecttemplate file with the specified id.",
- "description": "Uploads a new version of an projecttemplate file.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateProjectTemplateFileVersion",
+ "summary": "Uploads a new version of the specified projecttemplate file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesVersionsByProjectTemplateNameAndProjectTemplateIdAndFileId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate.",
"required": true,
"schema": {
"type": "string",
@@ -27584,7 +33111,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -27596,21 +33122,7 @@
"content": {
"multipart/form-data": {
"schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
+ "$ref": "#/components/schemas/FileUploadModel"
}
}
}
@@ -27627,7 +33139,34 @@
}
},
"400": {
- "description": "Bad Request"
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -27735,16 +33274,15 @@
"/projecttemplates/{projecttemplateId}/files/{fileId}/versions/{versionId}/download": {
"get": {
"tags": [
- "ProjectTemplateFiles"
+ "ProjectTemplate Files"
],
- "summary": "Returns the content of the projecttemplate file version with the specified id.",
- "description": "Returns the content of the projecttemplate file version with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetProjectTemplateFileVersionContent",
+ "summary": "Returns the content of the specified projecttemplate file version.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsDownloadByProjectTemplateNameAndProjectTemplateIdAndFileIdAndVersionId",
"parameters": [
{
"name": "projecttemplateId",
"in": "path",
- "description": "The id of the projecttemplate.",
"required": true,
"schema": {
"type": "string",
@@ -27754,7 +33292,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -27764,7 +33301,6 @@
{
"name": "versionId",
"in": "path",
- "description": "The id of the file version.",
"required": true,
"schema": {
"type": "string",
@@ -27783,6 +33319,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -27806,7 +33362,7 @@
"TimeBookings"
],
"summary": "Returns a list of time bookings.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Returns a list of time bookings. Each booking includes its project, user, and tracked duration. The user must have permission to access the requested resource.",
"operationId": "GetProjectTimeBookings",
"parameters": [
{
@@ -27855,8 +33411,8 @@
"tags": [
"TimeBookings"
],
- "summary": "Creates a new time booking for a given project and user.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Creates a time booking for a project and user.",
+ "description": "Creates a time booking for a project and user. The booking records time for the submitted project and user. The user must have permission to access the requested resource.",
"operationId": "PostProjectTimeBooking",
"requestBody": {
"description": "The model to create the time booking.",
@@ -27922,7 +33478,7 @@
"TimeBookings"
],
"summary": "Deletes a time booking by id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Deletes a time booking by id. The booking is removed from the selected project. The user must have permission to access the requested resource.",
"operationId": "DeleteProjectTimeBooking",
"parameters": [
{
@@ -27980,7 +33536,7 @@
"TimeBookings"
],
"summary": "Updates a given time booking.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Updates a given time booking. The saved booking reflects the submitted duration and assignment. The user must have permission to access the requested resource.",
"operationId": "PutProjectTimeBooking",
"parameters": [
{
@@ -28057,8 +33613,8 @@
"tags": [
"ProjectTypes"
],
- "summary": "Returns all existing project types.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns existing project types.",
+ "description": "Returns existing project types. Each type includes its name, icon, and archived state. The user must have permission to access the requested resource.",
"operationId": "GetProjectTypes",
"parameters": [
{
@@ -28117,7 +33673,7 @@
"ProjectTypes"
],
"summary": "Creates a new project type.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "description": "Creates a new project type. The new type can be selected when projects are created.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectType",
"requestBody": {
"content": {
@@ -28162,8 +33718,8 @@
"tags": [
"ProjectTypes"
],
- "summary": "Retrieves all available project type icons.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns available project type icons.",
+ "description": "Returns available project type icons. These icons can be assigned to project types. The user must have permission to access the requested resource.",
"operationId": "GetProjectTypesIcons",
"responses": {
"200": {
@@ -28200,8 +33756,8 @@
"tags": [
"ProjectTypes"
],
- "summary": "Retrieves a project type by its ID.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns a project type by its ID.",
+ "description": "Returns a project type by its ID. The response includes the type's name, icon, and settings. The user must have permission to access the requested resource.",
"operationId": "GetProjectTypeById",
"parameters": [
{
@@ -28255,8 +33811,8 @@
"tags": [
"ProjectTypes"
],
- "summary": "Updates an existing project type.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Updates project type.",
+ "description": "Updates project type. The submitted name, icon, and settings replace the existing values.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PutProjectTypeById",
"parameters": [
{
@@ -28334,8 +33890,8 @@
"tags": [
"ProjectTypes"
],
- "summary": "Deletes a project type and reassigns related projects and templates.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Deletes project types.",
+ "description": "Deletes project types. Projects using the type are reassigned before it is removed.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTypeDeleteByProjectTypeId",
"parameters": [
{
@@ -28406,8 +33962,8 @@
"tags": [
"ProjectTypes"
],
- "summary": "Archives or unarchives the project type with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Archives or unarchives the project type.",
+ "description": "Archives or unarchives the project type. Archived types remain available for existing projects.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostProjectTypeSetArchivedByProjectTypeId",
"parameters": [
{
@@ -28464,8 +34020,8 @@
"tags": [
"Roles"
],
- "summary": "Returns all roles of the workspace.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
+ "summary": "Returns roles of the workspace.",
+ "description": "Returns roles of the workspace. Each role includes its name and status.\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
"operationId": "GetRoles",
"parameters": [
{
@@ -28512,8 +34068,8 @@
"tags": [
"Roles"
],
- "summary": "Creates a new role with specified permissions.",
- "description": "\r\n\r\nThis endpoint requires the `Standard` plan or higher.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "summary": "Creates a workspace role.",
+ "description": "Creates a workspace role. The role starts with the submitted settings.\r\n\r\nThis endpoint requires the `Standard` plan or higher.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
"operationId": "PostRole",
"requestBody": {
"description": "The role form payload.",
@@ -28572,8 +34128,8 @@
"tags": [
"Roles"
],
- "summary": "Moves a user from their current role to another role.",
- "description": "Moves a user from their current role to another role.\r\n At least one user needs to remain in the admin role.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "summary": "Moves a user to another role.",
+ "description": "Moves a user to another role. The user keeps workspace access under the new role.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
"operationId": "PostRolesMoveUser",
"requestBody": {
"description": "The move user in role payload.",
@@ -28696,8 +34252,8 @@
"tags": [
"Roles"
],
- "summary": "Returns the role with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
+ "summary": "Returns the role.",
+ "description": "Returns the role. The returned role includes its workspace settings.\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
"operationId": "GetRoleById",
"parameters": [
{
@@ -28752,8 +34308,8 @@
"tags": [
"Roles"
],
- "summary": "Updates the role with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "summary": "Updates the role.",
+ "description": "Updates the role. The submitted settings replace the existing values.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
"operationId": "PutRoleById",
"parameters": [
{
@@ -28831,8 +34387,8 @@
"tags": [
"Roles"
],
- "summary": "Adds the user to the role with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "summary": "Adds the user to the role.",
+ "description": "Adds the user to the role. The user is added to the role membership.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
"operationId": "PostRoleAddUserByRoleId",
"parameters": [
{
@@ -28913,8 +34469,8 @@
"tags": [
"Roles"
],
- "summary": "Returns all deactivated menu items for the specified role.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
+ "summary": "Returns deactivated menu items for the role.",
+ "description": "Returns deactivated menu items for the role. The result lists menu items disabled for the role.\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
"operationId": "GetRoleDeactivatedMenuItemsByRoleId",
"parameters": [
{
@@ -28975,8 +34531,8 @@
"tags": [
"Roles"
],
- "summary": "Creates or updates the deactivated menu items for the specified role.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "summary": "Updates deactivated menu items for a role.",
+ "description": "Updates deactivated menu items for a role. The submitted menu settings replace the role's disabled items.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
"operationId": "PostRoleDeactivatedMenuItemsByRoleId",
"parameters": [
{
@@ -29050,8 +34606,8 @@
"tags": [
"Roles"
],
- "summary": "Deletes the role with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "summary": "Deletes the role.",
+ "description": "Deletes the role. Users assigned to the role must be moved before it is removed.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
"operationId": "PostRoleDeleteByRoleId",
"parameters": [
{
@@ -29132,8 +34688,8 @@
"tags": [
"Roles"
],
- "summary": "Returns all permissions of the specified role.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
+ "summary": "Returns permissions of the specified role.",
+ "description": "Returns permissions of the specified role. The result lists permissions assigned to the role.\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
"operationId": "GetRolePermissionsByRoleId",
"parameters": [
{
@@ -29203,8 +34759,8 @@
"tags": [
"Roles"
],
- "summary": "Creates, updates or deletes a permission of the specified role.",
- "description": "Creates, updates or deletes a permission of the role.\r\n If the permission already exist, and the 'AccessLevels' property of the model is not empty,\r\n the permission will be updated. If the 'AccessLevels' property of the model is empty,\r\n the permission will be deleted.\r\n The permission will be created if it does not exist.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Updates permissions for a role.",
+ "description": "Updates permissions for a role. The submitted permission is added, changed, or removed for the role.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostRolePermissionsByRoleId",
"parameters": [
{
@@ -29285,8 +34841,8 @@
"tags": [
"Roles"
],
- "summary": "Archives or unarchives the role with the specified id.",
- "description": "Archives or unarchives the role with the specified id.\r\n An archived role still exists for all users currently using it,\r\n but users can no longer be assigned to this role.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Archives or unarchives the role.",
+ "description": "Archives or unarchives the role. An archived role still exists for all users currently using it, but users can no longer be assigned to this role.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostRoleSetArchivedByRoleId",
"parameters": [
{
@@ -29364,8 +34920,8 @@
"tags": [
"Roles"
],
- "summary": "Returns all users of the specified role.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
+ "summary": "Returns users of the specified role.",
+ "description": "Returns users of the specified role. The result lists users assigned to the role.\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
"operationId": "GetRoleUsersByRoleId",
"parameters": [
{
@@ -29446,8 +35002,8 @@
"tags": [
"Roles"
],
- "summary": "Activates the user with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "summary": "Activates the user.",
+ "description": "Activates the user. The user's sign-in status changes for the workspace.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
"operationId": "PostRoleUserActivateByRoleIdAndUserId",
"parameters": [
{
@@ -29517,8 +35073,8 @@
"tags": [
"Roles"
],
- "summary": "Deactivates the user with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "summary": "Deactivates the user.",
+ "description": "Deactivates the user. The user's sign-in status changes for the workspace.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
"operationId": "PostRoleUserDeactivateByRoleIdAndUserId",
"parameters": [
{
@@ -29588,8 +35144,8 @@
"tags": [
"Roles"
],
- "summary": "Returns the role with the specified name.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
+ "summary": "Returns the role for the name.",
+ "description": "Returns the role for the name. The name match is evaluated within the current workspace.\r\n\r\nThe user must be an admin or have `workspace-manage-config:read` permissions.",
"operationId": "GetRoleByRoleName",
"parameters": [
{
@@ -29668,7 +35224,7 @@
{
"name": "top",
"in": "query",
- "description": "Count of top results. Default: 20.",
+ "description": "Count of top results. Default: 20. Must be between 1 and the configured maximum (SearchMaximumResults).",
"schema": {
"type": "integer",
"format": "int32"
@@ -29794,8 +35350,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Lists task bundles.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns task bundles.",
+ "description": "Returns task bundles. Each bundle includes its task and list templates. The user must have permission to access the requested resource.",
"operationId": "GetTaskBundles",
"parameters": [
{
@@ -29845,7 +35401,7 @@
"TaskBundles"
],
"summary": "Creates a task bundle.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "description": "Creates a task bundle. It groups reusable task and list templates.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskBundle",
"requestBody": {
"description": "The task bundle form payload.",
@@ -29902,7 +35458,7 @@
"TaskBundles"
],
"summary": "Creates a task bundle from a project.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "description": "Creates a task bundle from a project. The bundle is created from the selected project.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskBundlesFromProjectByProjectId",
"parameters": [
{
@@ -29971,7 +35527,7 @@
"TaskBundles"
],
"summary": "Creates a task bundle from a task list.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "description": "Creates a task bundle from a task list. The bundle is created from the selected task list.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskBundlesFromTaskListByTaskListId",
"parameters": [
{
@@ -30039,8 +35595,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Lists available task bundle icons.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns available task bundle icons.",
+ "description": "Returns available task bundle icons. These icons can be assigned to task bundles. The user must have permission to access the requested resource.",
"operationId": "GetTaskBundlesIcons",
"responses": {
"200": {
@@ -30078,7 +35634,7 @@
"TaskBundles"
],
"summary": "Deletes a task bundle.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "description": "Deletes a task bundle. The bundle is removed with its task templates.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "DeleteTaskBundleById",
"parameters": [
{
@@ -30116,8 +35672,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Gets a task bundle by id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns a task bundle by id.",
+ "description": "Returns a task bundle by id. The response includes the bundle's configuration. The user must have permission to access the requested resource.",
"operationId": "GetTaskBundleById",
"parameters": [
{
@@ -30172,7 +35728,7 @@
"TaskBundles"
],
"summary": "Updates a task bundle.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "description": "Updates a task bundle. The submitted templates and settings replace the existing values.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PutTaskBundleById",
"parameters": [
{
@@ -30240,8 +35796,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Creates a copy of an existing task bundle.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Creates a copy of a task bundle.",
+ "description": "Creates a copy of a task bundle. The copy receives a new identity and keeps the bundle configuration.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskBundleCopyByTaskBundleId",
"parameters": [
{
@@ -30309,8 +35865,8 @@
"tags": [
"TaskDependencyTemplates"
],
- "summary": "Returns all task dependency templates for a given task bundle.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:read` permissions.",
+ "summary": "Returns dependency templates for a task bundle.",
+ "description": "Returns dependency templates for a task bundle. Each entry identifies a predecessor and successor task template.\r\n\r\nThe user must be an admin or have `task-manage-config:read` permissions.",
"operationId": "GetTaskBundleTaskDependencyTemplatesByTaskBundleId",
"parameters": [
{
@@ -30388,8 +35944,8 @@
"tags": [
"TaskDependencyTemplates"
],
- "summary": "Creates a task dependency template for two task templates of the given task bundle.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Creates a dependency template for a bundle.",
+ "description": "Creates a dependency template for a bundle. The result describes dependencies configured for the bundle.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskBundleTaskDependencyTemplatesByTaskBundleId",
"parameters": [
{
@@ -30477,8 +36033,8 @@
"tags": [
"TaskDependencyTemplates"
],
- "summary": "Deletes the task dependency template from the task bundle.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Deletes a dependency template from a bundle.",
+ "description": "Deletes a dependency template from a bundle. The result describes dependencies configured for the bundle.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "DeleteTaskBundleTaskDependencyTemplateByTaskBundleIdAndTaskDependencyTemplateId",
"parameters": [
{
@@ -30546,8 +36102,8 @@
"tags": [
"TaskDependencyTemplates"
],
- "summary": "Returns a task dependency template by id for a given task bundle.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:read` permissions.",
+ "summary": "Returns a dependency template from a bundle.",
+ "description": "Returns a dependency template from a bundle. The result describes dependencies configured for the bundle.\r\n\r\nThe user must be an admin or have `task-manage-config:read` permissions.",
"operationId": "GetTaskBundleTaskDependencyTemplateByTaskBundleIdAndTaskDependencyTemplateId",
"parameters": [
{
@@ -30634,8 +36190,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Lists task list templates for a task bundle.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns task list templates for a task bundle.",
+ "description": "Returns task list templates for a task bundle. The response includes the list template configuration. The user must have permission to access the requested resource.",
"operationId": "GetTaskBundleTaskListTemplatesByTaskBundleId",
"parameters": [
{
@@ -30705,7 +36261,7 @@
"TaskBundles"
],
"summary": "Creates a task list template for a bundle.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "description": "Creates a task list template for a bundle. It is included when the bundle is applied.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskBundleTaskListTemplatesByTaskBundleId",
"parameters": [
{
@@ -30774,7 +36330,7 @@
"TaskBundles"
],
"summary": "Deletes a task list template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "description": "Deletes a task list template. The response includes the list template configuration.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "DeleteTaskBundleTaskListTemplateByTaskBundleIdAndTaskListTemplateId",
"parameters": [
{
@@ -30832,8 +36388,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Gets a task list template.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns a task list template.",
+ "description": "Returns a task list template. The response includes the list template configuration. The user must have permission to access the requested resource.",
"operationId": "GetTaskBundleTaskListTemplateByTaskBundleIdAndTaskListTemplateId",
"parameters": [
{
@@ -30898,7 +36454,7 @@
"TaskBundles"
],
"summary": "Updates a task list template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "description": "Updates a task list template.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PutTaskBundleTaskListTemplateByTaskBundleIdAndTaskListTemplateId",
"parameters": [
{
@@ -30977,7 +36533,7 @@
"TaskBundles"
],
"summary": "Adds task templates to a task list template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "description": "Adds task templates to a task list template. The listed task templates are added to the bundle list.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskBundleTaskListTemplateAddTaskTemplatesByTaskBundleIdAndTaskListTemplateId",
"parameters": [
{
@@ -31072,7 +36628,7 @@
"TaskBundles"
],
"summary": "Removes task templates from a task list template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "description": "Removes task templates from a task list template. The listed task templates are removed from the bundle list.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskBundleTaskListTemplateRemoveTaskTemplatesByTaskBundleIdAndTaskListTemplateId",
"parameters": [
{
@@ -31157,8 +36713,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Lists task templates inside a task list template.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns task templates inside a task list template.",
+ "description": "Returns task templates inside a task list template. The response includes task templates assigned to the list. The user must have permission to access the requested resource.",
"operationId": "GetTaskBundleTaskListTemplateTaskTemplatesByTaskBundleIdAndTaskListTemplateId",
"parameters": [
{
@@ -31227,8 +36783,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Gets a task template inside a task list template.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns a task template from a list.",
+ "description": "Returns a task template from a list. The response includes task templates assigned to the list. The user must have permission to access the requested resource.",
"operationId": "GetTaskBundleTaskListTemplateTaskTemplateByTaskBundleIdAndTaskListTemplateIdAndTaskTemplateId",
"parameters": [
{
@@ -31304,8 +36860,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Updates the order of a task template inside a task list template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Updates task template order in a list.",
+ "description": "Updates task template order in a list. The selected task template is moved within the list.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskBundleTaskListTemplateTaskTemplateUpdateOrderByTaskBundleIdAndTaskListTemplateIdAndTaskTemplateId",
"parameters": [
{
@@ -31396,8 +36952,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Updates the order of task templates in a task list template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Updates task template order in a list.",
+ "description": "Updates task template order in a list. The task list template order is stored on the bundle.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskBundleTaskListTemplateUpdateOrderByTaskBundleIdAndTaskListTemplateId",
"parameters": [
{
@@ -31468,8 +37024,8 @@
"tags": [
"TaskTemplates"
],
- "summary": "Returns all task templates of the task bundle with the specified id.",
- "description": "Returns all task templates of the task bundle with the specified id.\r\n\r\nAny authenticated user.",
+ "summary": "Returns task templates of the task bundle.",
+ "description": "Returns task templates of the task bundle. The response includes the task template configuration. The user must have permission to access the requested resource.",
"operationId": "GetTaskBundleTaskTemplatesByTaskBundleId",
"parameters": [
{
@@ -31538,8 +37094,8 @@
"tags": [
"TaskTemplates"
],
- "summary": "Creates a new task template for the task bundle with the specified id.",
- "description": "Creates a new task template for the task bundle with the specified id.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Creates a task template for the task bundle.",
+ "description": "Creates a task template for the task bundle. It is included when the bundle is applied.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskBundleTaskTemplatesByTaskBundleId",
"parameters": [
{
@@ -31617,8 +37173,8 @@
"tags": [
"TaskTemplates"
],
- "summary": "Deletes the task template for the task bundle with the specified id.",
- "description": "Deletes the task template for the task bundle with the specified id.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Deletes the task template for the task bundle.",
+ "description": "Deletes the task template for the task bundle. The task template is removed from the bundle.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "DeleteTaskBundleTaskTemplateByTaskBundleIdAndTaskTemplateId",
"parameters": [
{
@@ -31676,8 +37232,8 @@
"tags": [
"TaskTemplates"
],
- "summary": "Returns the task template of the task bundle with the specified id.",
- "description": "Returns the task template of the task bundle with the specified id.\r\n\r\nAny authenticated user.",
+ "summary": "Returns the task template of the task bundle.",
+ "description": "Returns the task template of the task bundle. The response includes the task template configuration. The user must have permission to access the requested resource.",
"operationId": "GetTaskBundleTaskTemplateByTaskBundleIdAndTaskTemplateId",
"parameters": [
{
@@ -31741,8 +37297,8 @@
"tags": [
"TaskTemplates"
],
- "summary": "Updates the task template for the task bundle with the specified id.",
- "description": "Updates the task template for the task bundle with the specified id.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Updates the task template for the task bundle.",
+ "description": "Updates the task template for the task bundle. The updated task template is stored in the bundle.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PutTaskBundleTaskTemplateByTaskBundleIdAndTaskTemplateId",
"parameters": [
{
@@ -31821,7 +37377,7 @@
"TaskTemplates"
],
"summary": "Assigns a list of users to task templates.",
- "description": "Users that are not passed and are already assigned will be removed.\r\n Removes existing task template assignments and adds the new assignment.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "description": "Assigns a list of users to task templates. Users that are not passed and are already assigned will be removed. Removes existing task template assignments and adds the new assignment.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskBundlesTaskTemplatesSetAssigneesByTaskBundleIdAndTaskTemplateId",
"parameters": [
{
@@ -31886,8 +37442,8 @@
"tags": [
"TaskDependencies"
],
- "summary": "Creates a new task dependency.",
- "description": "To create a task dependency, the user needs to be the assignee of both tasks or have `ProjectPlanning`\r\n permissions in general or in the project the tasks are related to.",
+ "summary": "Creates task dependency.",
+ "description": "Creates task dependency. The dependency links the selected tasks. To create a task dependency, the user needs to be the assignee of both tasks or have `ProjectPlanning`\r\n permissions in general or in the project the tasks are related to.",
"operationId": "PostTaskDependency",
"requestBody": {
"description": "The task Dependency form payload.",
@@ -31953,7 +37509,7 @@
"TaskDependencies"
],
"summary": "Deletes a task dependency.",
- "description": "To delete a task dependency, the User needs to be the assignee of both tasks or have 'ProjectPlanning'\r\n permissions in general or in the project the task are related to.",
+ "description": "Deletes a task dependency. The dependency is removed from both related tasks. To delete a task dependency, the User needs to be the assignee of both tasks or have 'ProjectPlanning'\r\n permissions in general or in the project the task are related to.",
"operationId": "DeleteTaskdependencyByTaskDependencyId",
"parameters": [
{
@@ -32012,8 +37568,8 @@
"tags": [
"Tasks"
],
- "summary": "Creates a new project or private task.",
- "description": "The user mast either have `project-planning-data:write` permissions, be assigned to the parent task (if a parent task is specified) or create a private task.",
+ "summary": "Creates a project or private task.",
+ "description": "Creates a project or private task. The created task is returned with its project or private-task scope. The user mast either have `project-planning-data:write` permissions, be assigned to the parent task (if a parent task is specified) or create a private task.",
"operationId": "PostTask",
"requestBody": {
"description": "The general Task Post form payload.",
@@ -32079,7 +37635,7 @@
"Tasks"
],
"summary": "Invites a user by email and assigns them to a task.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Invites a user by email and assigns them to a task. The invited user is added to the task's assignees. The user must have permission to access the requested resource.",
"operationId": "PostTasksAssignUserByEmail",
"requestBody": {
"description": "The assign By Email form payload.",
@@ -32137,8 +37693,8 @@
"tags": [
"Tasks"
],
- "summary": "Edits multiple tasks using the specified operation.",
- "description": "Returns MultiStatus including the list of successful and failed tasks.\r\n \r\n Supported Operations:\r\n >\r\n - movetoproject: Moves all tasks to a new project.
- movetotasklist: Moves all tasks to a new task list inside the same project.
- moveundertask: Moves every selected task (and their subtasks) under the specified parent task, validating project boundaries.
- setdates: Sets the due and optionally start date for all tasks.
- adjustdates: Offsets start and due dates by the specified number of days while respecting the user's timezone.
- addtags: Adds a list of tags to all tasks in the list that don't already have the tag.
- delete: Deletes all tasks. Optional including time trackings.
- changetypeofwork: Changes the type of work for a list of tasks. Optionally also for the related timetrackings.
- assignusers: Assigns a list of users to a list of tasks.
- unassignusers: Unassigns a list of users from a list of tasks. If the UserIds are not provided, all users are unassigned.
- setprio: Sets the prio flag for a list of tasks.
- changetaskstatus: Sets the task status for a list of tasks.
- copy: Creates copies of all specified tasks (including subtasks) and reorders them to maintain hierarchy.
- plannerbatch: Multiple operations to a single task. Used in the planner.
The user must have `write` permissions on all tasks as well as related entities modified by the operation.",
+ "summary": "Updates multiple tasks with the selected operation.",
+ "description": "Updates multiple tasks with the selected operation. Supported operations move tasks, change dates, manage tags, change status or type, assign users, copy tasks, and delete tasks.\r\n The user must have `write` permission for the requested tasks and related entities.",
"operationId": "PostTasksBatchByOperation",
"parameters": [
{
@@ -32214,8 +37770,8 @@
"tags": [
"Tasks"
],
- "summary": "Changes the base type for multiple tasks.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Updates the base type for multiple tasks.",
+ "description": "Updates the base type for multiple tasks. The task becomes available with the selected base type. The user must have permission to access the requested resource.",
"operationId": "PostTasksChangeBaseTypes",
"requestBody": {
"description": "The tasks Change Base Types form payload.",
@@ -32266,8 +37822,8 @@
"tags": [
"Tasks"
],
- "summary": "Changes the lists of tasks.",
- "description": "Adds tasks to lists, removes them and reorders tasks within lists.\r\n\r\nAny authenticated user.",
+ "summary": "Updates the task lists of tasks.",
+ "description": "Updates the task lists of tasks. The listed tasks are assigned to the selected lists. The user must have permission to access the requested resource.",
"operationId": "PostTasksChangeLists",
"requestBody": {
"description": "The change Task List forms.",
@@ -32328,8 +37884,8 @@
"tags": [
"Tasks"
],
- "summary": "Changes statuses of tasks.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Updates the statuses of tasks.",
+ "description": "Updates the statuses of tasks. The selected status is applied to the listed tasks. The user must have permission to access the requested resource.",
"operationId": "PostTasksChangeStatuses",
"requestBody": {
"description": "The change Status form list.",
@@ -32383,8 +37939,8 @@
"tags": [
"Tasks"
],
- "summary": "Changes the parent task and the order of subtasks.",
- "description": "Changes parent task and order of subtasks. If the parent task of a subtask changed, its lists, base type and entity\r\n will change to match the parent ones.\r\n It is not possible to change a task to subtask if the task already has subtasks.\r\n\r\nAny authenticated user.",
+ "summary": "Updates task hierarchy and subtask order.",
+ "description": "Updates task hierarchy and subtask order. A moved subtask adopts the parent task's list and type, and tasks with subtasks cannot become subtasks. The user must have permission to access the requested resource.",
"operationId": "PostTasksChangeSubtasks",
"requestBody": {
"description": "The subtask Changes model.",
@@ -32435,8 +37991,8 @@
"tags": [
"Tasks"
],
- "summary": "Convert subtasks to a parent task.",
- "description": "Convert subtasks to a parent task. If list ids are not provided it will keep the same lists as the old parent task,\r\n placing the task as last item in the lists.\r\n If multiple list ids are provided per task, the lists will be overwritten with the lists provided. In this case, if an\r\n order is not provided, it will be put as the last item in the list.\r\n\r\nAny authenticated user.",
+ "summary": "Converts subtasks to a parent task.",
+ "description": "Converts subtasks to a parent task. Convert subtasks to a parent task. If list ids are not provided it will keep the same lists as the old parent task, placing the task as last item in the lists. If multiple list ids are provided per task, the lists will be overwritten with the lists provided. In this case, if an order is not provided, it will be put as the last item in the list. The user must have permission to access the requested resource.",
"operationId": "PostTasksChangeSubtasksToParent",
"requestBody": {
"description": "The change Subtasks To Parent Post form list.",
@@ -32487,8 +38043,8 @@
"tags": [
"Tasks"
],
- "summary": "Changes the type of work for a batch of tasks.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Updates the type of work for multiple tasks.",
+ "description": "Updates the type of work for multiple tasks. The selected work type is applied to the listed tasks. The user must have permission to access the requested resource.",
"operationId": "PostTasksChangeTypeOfWork",
"requestBody": {
"description": "The tasks Change Types form payload.",
@@ -32540,7 +38096,7 @@
"Tasks"
],
"summary": "Deletes tasks and optionally related time entries.",
- "description": "Returns 207 MultiStatus when individual deletions fail.\r\n\r\nAny authenticated user.",
+ "description": "Deletes tasks and optionally related time entries. Related time entries are removed when requested. The user must have permission to access the requested resource.",
"operationId": "PostTasksDelete",
"requestBody": {
"description": "The model describing the task deletion request.",
@@ -32591,8 +38147,8 @@
"tags": [
"TaskTags"
],
- "summary": "Removes a tag from all project tasks.",
- "description": "Removes a tag from all project tasks.\r\n\r\nThe user must be an admin or have `project-planning-data:write` permissions.",
+ "summary": "Removes a tag from project tasks.",
+ "description": "Removes a tag from project tasks. The tag is removed from matching project tasks.\r\n\r\nThe user must be an admin or have `project-planning-data:write` permissions.",
"operationId": "PostTasksDeleteTags",
"requestBody": {
"description": "The model to delete the tag from all tasks.",
@@ -32651,8 +38207,8 @@
"tags": [
"Tasks"
],
- "summary": "Returns the task with the specified key.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns the task for the key.",
+ "description": "Returns the task for the key. The key is matched within the current workspace. The user must have permission to access the requested resource.",
"operationId": "GetTasksKeyByTaskIdentifier",
"parameters": [
{
@@ -32728,7 +38284,7 @@
"Tasks"
],
"summary": "Sets the priority flag for a task.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Sets the priority flag for a task. The task priority flag is stored on the task. The user must have permission to access the requested resource.",
"operationId": "PostTasksSetTaskPriority",
"requestBody": {
"description": "The task Set Prio form payload.",
@@ -32786,8 +38342,8 @@
"tags": [
"TaskTags"
],
- "summary": "Returns all task tags that are currently in use by tasks.",
- "description": "Returns all task tags that are currently in use by tasks ordered by count.\r\n\r\nAny authenticated user.",
+ "summary": "Returns task tags that are in use by tasks.",
+ "description": "Returns task tags that are in use by tasks. The result includes tags used by visible tasks. The user must have permission to access the requested resource.",
"operationId": "GetTasksTags",
"responses": {
"200": {
@@ -32834,8 +38390,8 @@
"tags": [
"TaskTags"
],
- "summary": "Updates a tag globally for all project tasks.",
- "description": "Updates a tag for all project tasks.\r\n\r\nThe user must be an admin or have `project-planning-data:write` permissions.",
+ "summary": "Updates a tag globally for project tasks.",
+ "description": "Updates a tag globally for project tasks. The renamed or merged tag is applied to matching project tasks.\r\n\r\nThe user must be an admin or have `project-planning-data:write` permissions.",
"operationId": "PostTasksUpdateTags",
"requestBody": {
"description": "The model to update the tag including the old and new tag names.",
@@ -32887,8 +38443,8 @@
"tags": [
"Tasks"
],
- "summary": "Returns the task with the specified id.",
- "description": "The required permissions depend on the base type of the task.\r\n If the task is a project task, 'read' permissions on the 'project-planning-data' feature are required.\r\n For a user's private task, no special permissions are required.\r\n\r\nAny authenticated user.",
+ "summary": "Returns the specified task.",
+ "description": "Returns the specified task. The response includes the task's current assignments and status. The user must have permission to access the requested resource.",
"operationId": "GetTaskById",
"parameters": [
{
@@ -32952,8 +38508,8 @@
"tags": [
"Tasks"
],
- "summary": "Updates the task with the specified id.",
- "description": "To update the task, the user needs to be the assignee of the task or 'ProjectPlanning'\r\n permissions in general or in the project the task is related to.\r\n\r\nAny authenticated user.",
+ "summary": "Updates the task.",
+ "description": "Updates the task. The updated task is returned with its changed fields. The user must have permission to access the requested resource.",
"operationId": "PutTaskById",
"parameters": [
{
@@ -33132,8 +38688,8 @@
"tags": [
"TaskTags"
],
- "summary": "Adds a batch of tags to the task with the specified id.",
- "description": "The request fails if one of the tags is invalid (e.g. empty or duplicate).\r\n To add tags to a task the user must have `write` permissions on the specified task.",
+ "summary": "Adds a batch of tags to the task.",
+ "description": "Adds a batch of tags to the task. The request fails if one of the tags is invalid (e.g. empty or duplicate). To add tags to a task the user must have `write` permissions on the specified task.",
"operationId": "PostTaskAddTagsByTaskId",
"parameters": [
{
@@ -33216,8 +38772,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Returns the checklist items for the task with the specified id.",
- "description": "The user must have at least `read` permissions on the specified task.",
+ "summary": "Returns the checklist items for the task.",
+ "description": "Returns the checklist items for the task. The checklist belongs to the specified task. The user must have at least `read` permissions on the specified task.",
"operationId": "GetTaskChecklistItemsByTaskId",
"parameters": [
{
@@ -33284,8 +38840,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Creates a checklist item for a task with the specified id.",
- "description": "The required permissions depend on the base type of the task. If the task is a project task, the user must have either `project-master-data:write` permissions or be assigned to the task. For a user's private task, no special permissions are required.",
+ "summary": "Creates a checklist item for a task.",
+ "description": "Creates a checklist item for a task. The new item is added to the task checklist. The required permissions depend on the base type of the task. If the task is a project task, the user must have either `project-master-data:write` permissions or be assigned to the task. For a user's private task, no special permissions are required.",
"operationId": "PostTaskChecklistItemsByTaskId",
"parameters": [
{
@@ -33362,8 +38918,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Converts all checklist items of the specified task to subtasks.",
- "description": "The user must have at least `write` permissions on the specified task.",
+ "summary": "Converts checklist items of the task to subtasks.",
+ "description": "Converts checklist items of the task to subtasks. Each checklist item becomes a subtask of the task. The user must have at least `write` permissions on the specified task.",
"operationId": "PostTaskChecklistItemsToSubtasksByTaskId",
"parameters": [
{
@@ -33443,7 +38999,7 @@
"ChecklistItems"
],
"summary": "Deletes a checklist item from a task.",
- "description": "The user must have at least `write` permissions on the specified task.",
+ "description": "Deletes a checklist item from a task. The selected checklist item is removed from the task. The user must have at least `write` permissions on the specified task.",
"operationId": "DeleteTaskChecklistItemByTaskIdAndChecklistItemId",
"parameters": [
{
@@ -33510,8 +39066,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Returns the checklist item with the specified id for a task.",
- "description": "The user must have at least `read` permissions on the specified task.",
+ "summary": "Returns the checklist item for a task.",
+ "description": "Returns the checklist item for a task. The checklist belongs to the specified task. The user must have at least `read` permissions on the specified task.",
"operationId": "GetTaskChecklistItemByTaskIdAndChecklistItemId",
"parameters": [
{
@@ -33585,8 +39141,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Updates a checklist item for a task with the specified id.",
- "description": "The required permissions depend on the base type of the task. If the task is a project task, the user must have either `project-master-data:write` permissions or be assigned to the task. For a user's private task, no special permissions are required.",
+ "summary": "Updates a checklist item for a task.",
+ "description": "Updates a checklist item for a task. The submitted item fields are stored on the checklist item. The required permissions depend on the base type of the task. If the task is a project task, the user must have either `project-master-data:write` permissions or be assigned to the task. For a user's private task, no special permissions are required.",
"operationId": "PutTaskChecklistItemByTaskIdAndChecklistItemId",
"parameters": [
{
@@ -34192,7 +39748,7 @@
"Tasks"
],
"summary": "Creates a copy of the specified task.",
- "description": "Comments, files and activity logs are not copied.\r\n To copy a task, the user needs to be the assignee of the task or 'ProjectPlanning'\r\n permissions in general or in the project the task is related to.\r\n If the task is a parent task, it will also copy its subtasks.\r\n\r\nAny authenticated user.",
+ "description": "Creates a copy of the specified task. Comments, files and activity logs are not copied. If the task is a parent task, it will also copy its subtasks. The user must have permission to access the requested resource.",
"operationId": "PostTaskCopyByTaskId",
"parameters": [
{
@@ -34259,7 +39815,7 @@
"Tasks"
],
"summary": "Deletes the recurrence rule for a task.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Deletes the recurrence rule for a task. The task no longer repeats after the rule is removed. The user must have permission to access the requested resource.",
"operationId": "PostTaskDeleteRecurrencyByTaskId",
"parameters": [
{
@@ -34318,8 +39874,8 @@
"tags": [
"TaskTags"
],
- "summary": "Removes tags from the task with the specified id.",
- "description": "Returns 204 NoContent if all tags have been removed successfully.\r\n Returns 207 MultiStatus if at least one tag could not be removed, including the reasons.\r\n \r\n To remove tags from a task the user must have `write` permissions on the specified task.",
+ "summary": "Removes tags from the task.",
+ "description": "Removes tags from the task. Returns 207 MultiStatus if at least one tag could not be removed, including the reasons. To remove tags from a task the user must have `write` permissions on the specified task.",
"operationId": "PostTaskDeleteTagsByTaskId",
"parameters": [
{
@@ -34393,16 +39949,15 @@
"/tasks/{taskId}/externalfiles": {
"post": {
"tags": [
- "TaskFiles"
+ "Task Files"
],
- "summary": "Endpoint to batch create external files without uploading.",
- "description": "Endpoint to create file infos with batch operation.\nCreated file infos don't have a version.\r\n\r\nAny authenticated user.",
- "operationId": "CreateExternalFiles",
+ "summary": "Creates external file references for the specified task.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostExternalFilesByTaskNameAndTaskId",
"parameters": [
{
"name": "taskId",
"in": "path",
- "description": "The id of the task.",
"required": true,
"schema": {
"type": "string",
@@ -34411,7 +39966,6 @@
}
],
"requestBody": {
- "description": "List of file forms.",
"content": {
"application/json": {
"schema": {
@@ -34420,16 +39974,9 @@
"$ref": "#/components/schemas/ExternalFileForm"
}
}
- },
- "application/*+json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ExternalFileForm"
- }
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -34437,7 +39984,30 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -34461,16 +40031,16 @@
"/tasks/{taskId}/files": {
"delete": {
"tags": [
- "TaskFiles"
+ "Task Files"
],
- "summary": "Deletes the files of the specified task.",
- "description": "Deletes the metadata and the different versions of the files.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteTaskFiles",
+ "summary": "Deletes all files and versions for the specified task.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByTaskNameAndTaskId",
"parameters": [
{
"name": "taskId",
"in": "path",
- "description": "The id of the task.",
+ "description": "The task id.",
"required": true,
"schema": {
"type": "string",
@@ -34481,6 +40051,36 @@
"responses": {
"204": {
"description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -34499,16 +40099,15 @@
},
"get": {
"tags": [
- "TaskFiles"
+ "Task Files"
],
- "summary": "Returns all files of the task with the specified id.",
- "description": "Returns all file metadata of the task with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetTaskFiles",
+ "summary": "Returns all files of the specified task.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesByTaskNameAndTaskId",
"parameters": [
{
"name": "taskId",
"in": "path",
- "description": "The id of the task.",
"required": true,
"schema": {
"type": "string",
@@ -34534,10 +40133,327 @@
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/FileInfo"
- }
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ },
+ "post": {
+ "tags": [
+ "Task Files"
+ ],
+ "summary": "Uploads a file for the specified task.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByTaskNameAndTaskId",
+ "parameters": [
+ {
+ "name": "taskId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "$ref": "#/components/schemas/FileUploadModel"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/tasks/{taskId}/files/byuploadid": {
+ "post": {
+ "tags": [
+ "FileUpload"
+ ],
+ "summary": "Creates a file from an upload id.",
+ "description": "After a file has been uploaded to an upload URL generated from the endpoint, this endpoint can be used to create a file task from the uploaded file by providing the upload id.\r\n\r\nAny authenticated user.",
+ "operationId": "PostUploadByUploadId",
+ "parameters": [
+ {
+ "name": "taskId",
+ "in": "path",
+ "description": "The id of the task to attach the file to.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "The model describing the uploaded file metadata.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/UploadByUploadIdForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/tasks/{taskId}/files/byurl": {
+ "post": {
+ "tags": [
+ "Task Files"
+ ],
+ "summary": "Uploads a file from a public URL for the specified task.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByUrlByTaskNameAndTaskId",
+ "parameters": [
+ {
+ "name": "taskId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FilePostForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/tasks/{taskId}/files/{fileId}": {
+ "delete": {
+ "tags": [
+ "Task Files"
+ ],
+ "summary": "Deletes the specified task file and its versions.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByTaskNameAndTaskIdAndFileId",
+ "parameters": [
+ {
+ "name": "taskId",
+ "in": "path",
+ "description": "The task id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "description": "The file id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -34557,13 +40473,13 @@
"any": "true"
}
},
- "post": {
+ "get": {
"tags": [
- "TaskFiles"
+ "Task Files"
],
- "summary": "Creates a new task file for the task with the specified id..",
- "description": "Uploads a new task file for the task with the specified id.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateTaskFile",
+ "summary": "Returns the file with the specified id of the task with the specified id.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesByTaskNameAndTaskIdAndFileId",
"parameters": [
{
"name": "taskId",
@@ -34574,31 +40490,18 @@
"type": "string",
"format": "uuid"
}
- }
- ],
- "requestBody": {
- "content": {
- "multipart/form-data": {
- "schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
- }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "description": "The id of the file.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
}
}
- },
+ ],
"responses": {
"200": {
"description": "OK",
@@ -34610,8 +40513,25 @@
}
}
},
- "400": {
- "description": "Bad Request"
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -34627,21 +40547,27 @@
"x-access": {
"any": "true"
}
- }
- },
- "/tasks/{taskId}/files/byuploadid": {
- "post": {
+ },
+ "put": {
"tags": [
- "FileUpload"
+ "Task Files"
],
- "summary": "Creates a file from an upload id.",
- "description": "After a file has been uploaded to an upload URL generated from the endpoint, this endpoint can be used to create a file task from the uploaded file by providing the upload id.\r\n\r\nAny authenticated user.",
- "operationId": "PostUploadByUploadId",
+ "summary": "Updates metadata for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PutFilesByTaskNameAndTaskIdAndFileId",
"parameters": [
{
"name": "taskId",
"in": "path",
- "description": "The id of the task to attach the file to.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
"required": true,
"schema": {
"type": "string",
@@ -34650,11 +40576,10 @@
}
],
"requestBody": {
- "description": "The model describing the uploaded file metadata.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/UploadByUploadIdForm"
+ "$ref": "#/components/schemas/FileInfoUpdateForm"
}
}
},
@@ -34671,6 +40596,26 @@
}
}
},
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
"404": {
"description": "Not Found",
"content": {
@@ -34697,19 +40642,27 @@
}
}
},
- "/tasks/{taskId}/files/byurl": {
+ "/tasks/{taskId}/files/{fileId}/changeentity": {
"post": {
"tags": [
- "TaskFiles"
+ "Task Files"
],
- "summary": "Uploads a new file by providing an url.",
- "description": "The file needs to be a public available url.\nThe file size must not exceed 100MB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateTaskFileByUrl",
+ "summary": "Changes the task that owns the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesChangeTaskByTaskNameAndTaskIdAndFileId",
"parameters": [
{
"name": "taskId",
"in": "path",
- "description": "The id of the task the file is linked to.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
"required": true,
"schema": {
"type": "string",
@@ -34718,19 +40671,14 @@
}
],
"requestBody": {
- "description": "The url, name and description of the file.",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FilePostForm"
- }
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FilePostForm"
+ "$ref": "#/components/schemas/FileEntityForm"
}
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -34742,6 +40690,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -34759,19 +40737,18 @@
}
}
},
- "/tasks/{taskId}/files/{fileId}": {
- "delete": {
+ "/tasks/{taskId}/files/{fileId}/copy": {
+ "post": {
"tags": [
- "TaskFiles"
+ "Task Files"
],
- "summary": "Deletes the task file with the specified id.",
- "description": "Deletes the metadata and the different versions of the file.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteTaskFile",
+ "summary": "Copies the specified file to another task.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesCopyByTaskNameAndTaskIdAndFileId",
"parameters": [
{
"name": "taskId",
"in": "path",
- "description": "The id of the task.",
"required": true,
"schema": {
"type": "string",
@@ -34781,7 +40758,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -34789,9 +40765,56 @@
}
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileCopyForm"
+ }
+ }
+ },
+ "required": true
+ },
"responses": {
- "204": {
- "description": "No Content"
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -34807,19 +40830,20 @@
"x-access": {
"any": "true"
}
- },
+ }
+ },
+ "/tasks/{taskId}/files/{fileId}/download": {
"get": {
"tags": [
"Task Files"
],
- "summary": "Returns the file with the specified id of the task with the specified id.",
+ "summary": "Returns the latest content of the specified task file.",
"description": "\r\n\r\nAny authenticated user.",
- "operationId": "GetFilesByTaskNameAndTaskIdAndFileId",
+ "operationId": "GetFilesDownloadByTaskNameAndTaskIdAndFileId",
"parameters": [
{
"name": "taskId",
"in": "path",
- "description": "The id of the task.",
"required": true,
"schema": {
"type": "string",
@@ -34829,12 +40853,34 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
+ },
+ {
+ "name": "width",
+ "in": "query",
+ "schema": {
+ "type": "number",
+ "format": "double"
+ }
+ },
+ {
+ "name": "height",
+ "in": "query",
+ "schema": {
+ "type": "number",
+ "format": "double"
+ }
+ },
+ {
+ "name": "crop",
+ "in": "query",
+ "schema": {
+ "type": "boolean"
+ }
}
],
"responses": {
@@ -34843,7 +40889,18 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -34882,19 +40939,20 @@
"x-access": {
"any": "true"
}
- },
- "put": {
+ }
+ },
+ "/tasks/{taskId}/files/{fileId}/pdf": {
+ "get": {
"tags": [
- "TaskFiles"
+ "Task Files"
],
- "summary": "Updates the metadata of the task file with the specified id.",
- "description": "Updates the metadata of the task file with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "UpdateTaskFile",
+ "summary": "Returns the specified task file as PDF.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesPdfByTaskNameAndTaskIdAndFileId",
"parameters": [
{
"name": "taskId",
"in": "path",
- "description": "The id of the task.",
"required": true,
"schema": {
"type": "string",
@@ -34904,36 +40962,59 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
- }
- ],
- "requestBody": {
- "description": "The model to update the file with the specified id.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/FileInfoUpdateForm"
- }
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileInfoUpdateForm"
- }
+ },
+ {
+ "name": "inline",
+ "in": "query",
+ "schema": {
+ "type": "boolean",
+ "default": false
}
}
- },
+ ],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -34954,19 +41035,18 @@
}
}
},
- "/tasks/{taskId}/files/{fileId}/changeentity": {
- "post": {
+ "/tasks/{taskId}/files/{fileId}/shareurl": {
+ "get": {
"tags": [
- "TaskFiles"
+ "Task Files"
],
- "summary": "Changes the task this file belongs to.",
- "description": "Changes the task this file belongs to.\nSwitch to the specified task or to a global file\nif the 'EntityId' of the model is set to null.\r\n\r\nAny authenticated user.",
- "operationId": "ChangeTask",
+ "summary": "Returns a public URL for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesShareUrlByTaskNameAndTaskIdAndFileId",
"parameters": [
{
"name": "taskId",
"in": "path",
- "description": "The id of the task.",
"required": true,
"schema": {
"type": "string",
@@ -34976,7 +41056,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -34984,28 +41063,33 @@
}
}
],
- "requestBody": {
- "description": "The model to change the entity information of the file.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/FileEntityForm"
- }
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileEntityForm"
- }
- }
- }
- },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "type": "string"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -35026,19 +41110,18 @@
}
}
},
- "/tasks/{taskId}/files/{fileId}/copy": {
- "post": {
+ "/tasks/{taskId}/files/{fileId}/versions": {
+ "get": {
"tags": [
- "TaskFiles"
+ "Task Files"
],
- "summary": "Copies the file to a new task.",
- "description": "Copies the file to a new task (meta and content).\r\n\r\nAny authenticated user.",
- "operationId": "CopyToTask",
+ "summary": "Returns all versions of the specified task file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsByTaskNameAndTaskIdAndFileId",
"parameters": [
{
"name": "taskId",
"in": "path",
- "description": "The id of the task.",
"required": true,
"schema": {
"type": "string",
@@ -35048,36 +41131,55 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
+ },
+ {
+ "$ref": "#/components/parameters/page"
+ },
+ {
+ "$ref": "#/components/parameters/pageSize"
+ },
+ {
+ "$ref": "#/components/parameters/orderby"
+ },
+ {
+ "$ref": "#/components/parameters/filterby"
}
],
- "requestBody": {
- "description": "The model to change the entity information of the file.",
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/FileCopyForm"
- }
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileCopyForm"
- }
- }
- }
- },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileVersion"
+ }
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -35096,21 +41198,18 @@
"x-access": {
"any": "true"
}
- }
- },
- "/tasks/{taskId}/files/{fileId}/download": {
- "get": {
+ },
+ "post": {
"tags": [
- "TaskFiles"
+ "Task Files"
],
- "summary": "Returns the content of the task file with the specified id.",
- "description": "Returns the content of the task file. Uses the latest file version.\nIf the task file is an image and the width and height are set,\nthe image will be resized before it is returned.\r\n\r\nAny authenticated user.",
- "operationId": "GetTaskFileContent",
+ "summary": "Uploads a new version of the specified task file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesVersionsByTaskNameAndTaskIdAndFileId",
"parameters": [
{
"name": "taskId",
"in": "path",
- "description": "The id of the task.",
"required": true,
"schema": {
"type": "string",
@@ -35120,48 +41219,59 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
- },
- {
- "name": "width",
- "in": "query",
- "description": "Set width to resize.",
- "schema": {
- "type": "number",
- "format": "double"
- }
- },
- {
- "name": "height",
- "in": "query",
- "description": "Set height to resize.",
- "schema": {
- "type": "number",
- "format": "double"
- }
- },
- {
- "name": "crop",
- "in": "query",
- "description": "Whether to crop the image when resizing it.",
- "schema": {
- "type": "boolean"
- }
}
],
+ "requestBody": {
+ "content": {
+ "multipart/form-data": {
+ "schema": {
+ "$ref": "#/components/schemas/FileUploadModel"
+ }
+ }
+ }
+ },
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
- "type": "string",
- "format": "binary"
+ "$ref": "#/components/schemas/FileVersion"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -35182,14 +41292,14 @@
}
}
},
- "/tasks/{taskId}/files/{fileId}/pdf": {
+ "/tasks/{taskId}/files/{fileId}/versions/{versionId}": {
"get": {
"tags": [
- "TaskFiles"
+ "Task Files"
],
- "summary": "Returns the content of the file with the specified id as pdf.\ntype or conversion not possible.",
- "description": "Returns the content of the task file. Uses the latest file version.\r\n\r\nAny authenticated user.",
- "operationId": "GetTaskFileContent",
+ "summary": "Returns the task file version with the specified id.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsByTaskNameAndTaskIdAndFileIdAndVersionId",
"parameters": [
{
"name": "taskId",
@@ -35212,66 +41322,9 @@
}
},
{
- "name": "inline",
- "in": "query",
- "description": "If inline is false, content-disposition header is attachment.",
- "schema": {
- "type": "boolean",
- "default": false
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- }
- },
- "/tasks/{taskId}/files/{fileId}/shareurl": {
- "get": {
- "tags": [
- "TaskFiles"
- ],
- "summary": "Returns an url to share the file.",
- "description": "Returns a url to share the file.\r\n\r\nAny authenticated user.",
- "operationId": "GetPublicToken",
- "parameters": [
- {
- "name": "taskId",
- "in": "path",
- "description": "The id of the task.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
+ "name": "versionId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The id of the file version.",
"required": true,
"schema": {
"type": "string",
@@ -35285,163 +41338,30 @@
"content": {
"application/json": {
"schema": {
- "type": "string"
+ "$ref": "#/components/schemas/FileVersion"
}
}
}
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- }
- },
- "/tasks/{taskId}/files/{fileId}/versions": {
- "get": {
- "tags": [
- "TaskFiles"
- ],
- "summary": "Returns all file versions of the specified task file.",
- "description": "Returns all file versions of the specified task file.\r\n\r\nAny authenticated user.",
- "operationId": "GetTaskFileVersions",
- "parameters": [
- {
- "name": "taskId",
- "in": "path",
- "description": "The id of the task.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "$ref": "#/components/parameters/page"
},
- {
- "$ref": "#/components/parameters/pageSize"
- },
- {
- "$ref": "#/components/parameters/orderby"
- },
- {
- "$ref": "#/components/parameters/filterby"
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
+ "401": {
+ "description": "Unauthorized",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/FileVersion"
- }
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- },
- "post": {
- "tags": [
- "TaskFiles"
- ],
- "summary": "Uploads a new version of the task file with the specified id.",
- "description": "Uploads a new version of an task file.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateTaskFileVersion",
- "parameters": [
- {
- "name": "taskId",
- "in": "path",
- "description": "The id of the task.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
},
- {
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- }
- ],
- "requestBody": {
- "content": {
- "multipart/form-data": {
- "schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
- }
- }
- }
- },
- "responses": {
- "200": {
- "description": "OK",
+ "404": {
+ "description": "Not Found",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileVersion"
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
- },
- "400": {
- "description": "Bad Request"
}
},
"security": [
@@ -35459,19 +41379,18 @@
}
}
},
- "/tasks/{taskId}/files/{fileId}/versions/{versionId}": {
+ "/tasks/{taskId}/files/{fileId}/versions/{versionId}/download": {
"get": {
"tags": [
"Task Files"
],
- "summary": "Returns the task file version with the specified id.",
+ "summary": "Returns the content of the specified task file version.",
"description": "\r\n\r\nAny authenticated user.",
- "operationId": "GetFilesVersionsByTaskNameAndTaskIdAndFileIdAndVersionId",
+ "operationId": "GetFilesVersionsDownloadByTaskNameAndTaskIdAndFileIdAndVersionId",
"parameters": [
{
"name": "taskId",
"in": "path",
- "description": "The id of the task.",
"required": true,
"schema": {
"type": "string",
@@ -35481,7 +41400,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -35491,7 +41409,6 @@
{
"name": "versionId",
"in": "path",
- "description": "The id of the file version.",
"required": true,
"schema": {
"type": "string",
@@ -35505,7 +41422,8 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileVersion"
+ "type": "string",
+ "format": "binary"
}
}
}
@@ -35546,81 +41464,13 @@
}
}
},
- "/tasks/{taskId}/files/{fileId}/versions/{versionId}/download": {
- "get": {
- "tags": [
- "TaskFiles"
- ],
- "summary": "Returns the content of the task file version with the specified id.",
- "description": "Returns the content of the task file version with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetTaskFileVersionContent",
- "parameters": [
- {
- "name": "taskId",
- "in": "path",
- "description": "The id of the task.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "versionId",
- "in": "path",
- "description": "The id of the file version.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- }
- },
"/tasks/{taskId}/recurrency": {
"get": {
"tags": [
"Tasks"
],
- "summary": "Gets the recurrence rule of a task.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns the recurrence rule of a task.",
+ "description": "Returns the recurrence rule of a task. The response includes the task's recurrence settings. The user must have permission to access the requested resource.",
"operationId": "GetTaskRecurrencyByTaskId",
"parameters": [
{
@@ -35687,7 +41537,7 @@
"Tasks"
],
"summary": "Assigns a list of users to a task.",
- "description": "Replaces existing assignments with the provided list.\r\n\r\nAny authenticated user.",
+ "description": "Assigns a list of users to a task. Replaces existing assignments with the provided list. The user must have permission to access the requested resource.",
"operationId": "PostTaskSetAssigneesByTaskId",
"parameters": [
{
@@ -35772,7 +41622,7 @@
"CustomFields"
],
"summary": "Sets the custom fields for a task.",
- "description": "The required properties depend on the type of the custom field.\r\n \r\n The user must have at least `write` permissions on the specified task.",
+ "description": "Sets the custom fields for a task. The required properties depend on the type of the custom field. The user must have at least `write` permissions on the specified task.",
"operationId": "PostTaskSetCustomFieldsByTaskId",
"parameters": [
{
@@ -35855,8 +41705,8 @@
"tags": [
"Tasks"
],
- "summary": "Modifies planned efforts for the given task assignments.",
- "description": "Only the provided assignments are updated; missing assignments remain unchanged.\r\n\r\nAny authenticated user.",
+ "summary": "Modifies planned efforts for the task assignments.",
+ "description": "Modifies planned efforts for the task assignments. Only the provided assignments are updated; missing assignments remain unchanged. The user must have permission to access the requested resource.",
"operationId": "PostTaskSetPlannedEffortsByTaskId",
"parameters": [
{
@@ -35940,7 +41790,7 @@
"Tasks"
],
"summary": "Adds or updates a recurrence rule for a task.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Adds or updates a recurrence rule for a task. The recurrence rule is stored on the task. The user must have permission to access the requested resource.",
"operationId": "PostTaskSetRecurrencyByTaskId",
"parameters": [
{
@@ -36020,8 +41870,8 @@
"tags": [
"TaskTags"
],
- "summary": "Returns the tags of the task with the specified id.",
- "description": "Returns the tags of the task with the specified id ordered by name.\r\n\r\nAny authenticated user.",
+ "summary": "Returns the tags of the task.",
+ "description": "Returns the tags of the task. The result includes tags assigned to the task. The user must have permission to access the requested resource.",
"operationId": "GetTaskTagsByTaskId",
"parameters": [
{
@@ -36080,8 +41930,8 @@
"tags": [
"TaskDependencies"
],
- "summary": "Returns all task dependencies for a specific task.",
- "description": "To get all dependencies of a task, the user needs project planning permissions on that project or be assigned to that task.",
+ "summary": "Returns task dependencies for a specific task.",
+ "description": "Returns task dependencies for a specific task. The result includes dependencies linked to the task. To get all dependencies of a task, the user needs project planning permissions on that project or be assigned to that task.",
"operationId": "GetTaskTaskdependenciesByTaskId",
"parameters": [
{
@@ -36203,7 +42053,7 @@
"Tasks"
],
"summary": "Updates the order of a task within its list.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Updates the order of a task within its list. The task is repositioned within its list. The user must have permission to access the requested resource.",
"operationId": "PostTaskUpdateOrderByTaskId",
"parameters": [
{
@@ -36294,7 +42144,7 @@
"TaskSchedules"
],
"summary": "Returns a list of task schedules.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Returns a list of task schedules. Each result includes its task and timing settings. The user must have permission to access the requested resource.",
"operationId": "GetTaskSchedules",
"responses": {
"200": {
@@ -36339,8 +42189,8 @@
"tags": [
"TaskSchedules"
],
- "summary": "Creates a new task schedule for a given task and a given user.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Creates a schedule for a task.",
+ "description": "Creates a schedule for a task. The schedule controls planned work for the task. The user must have permission to access the requested resource.",
"operationId": "PostTaskSchedule",
"requestBody": {
"description": "The model to create the task schedule.",
@@ -36416,7 +42266,7 @@
"TaskSchedules"
],
"summary": "Creates task schedules from a task by id.",
- "description": "Creates task schedules from a task by id. The task must have start and due date and at least one assignee.\r\n If more than one user is assigned to the task, then the user needs to opt in to create task schedules for all assignees\r\n by setting the\r\n 'createSchedulesForAllAssignees' query param to true. This requires admin or feature permissions.\r\n\r\nAny authenticated user.",
+ "description": "Creates task schedules from a task by id. If more than one user is assigned to the task, then the user needs to opt in to create task schedules for all assignees by setting the 'createSchedulesForAllAssignees' query param to true. The user must have permission to access the requested resource.",
"operationId": "PostTaskSchedulesByTaskIdByTaskId",
"parameters": [
{
@@ -36495,7 +42345,7 @@
"TaskSchedules"
],
"summary": "Deletes a task schedule by id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Deletes a task schedule by id. The schedule is removed from the task. The user must have permission to access the requested resource.",
"operationId": "DeleteTaskScheduleById",
"parameters": [
{
@@ -36543,7 +42393,7 @@
"TaskSchedules"
],
"summary": "Returns a task schedule by id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Returns a task schedule by id. The response includes the schedule's task and timing settings. The user must have permission to access the requested resource.",
"operationId": "GetTaskScheduleById",
"parameters": [
{
@@ -36608,7 +42458,7 @@
"TaskSchedules"
],
"summary": "Updates a given task schedule.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Updates a given task schedule. The saved schedule reflects the submitted timing. The user must have permission to access the requested resource.",
"operationId": "PutTaskScheduleById",
"parameters": [
{
@@ -36685,8 +42535,8 @@
"tags": [
"TaskTemplateTags"
],
- "summary": "Removes a tag from all task templates.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Removes a tag from task templates.",
+ "description": "Removes a tag from task templates. The tag is removed from matching task templates.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostDeleteTagForAllTaskTemplates",
"requestBody": {
"description": "The model to remove the tag from all task templates.",
@@ -36745,8 +42595,8 @@
"tags": [
"TaskTemplateTags"
],
- "summary": "Returns all tags that are currently in use by task templates.",
- "description": "Returns all tags that are currently in use by task templates ordered by count.\r\n\r\nAny authenticated user.",
+ "summary": "Returns tags that are in use by task templates.",
+ "description": "Returns tags that are in use by task templates. The result includes tags assigned to the task template. The user must have permission to access the requested resource.",
"operationId": "GetTaskTemplateTags",
"responses": {
"200": {
@@ -36783,8 +42633,8 @@
"tags": [
"TaskTemplateTags"
],
- "summary": "Updates a tag globally for all task templates.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Updates a tag globally for task templates.",
+ "description": "Updates a tag globally for task templates. The renamed or merged tag is applied to matching task templates.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskTemplatesUpdateTags",
"requestBody": {
"description": "The model containing the tag updates.",
@@ -36843,8 +42693,8 @@
"tags": [
"TaskTemplates"
],
- "summary": "Returns the task template with the specified id.",
- "description": "Returns the task template with the specified id.\r\n\r\nAny authenticated user.",
+ "summary": "Returns the task template.",
+ "description": "Returns the task template. The response includes the task template configuration. The user must have permission to access the requested resource.",
"operationId": "GetTaskTemplateById",
"parameters": [
{
@@ -36900,8 +42750,8 @@
"tags": [
"TaskTemplateTags"
],
- "summary": "Adds a batch of tags to the task template with the specified id.",
- "description": "The request fails if one of the tags is invalid (e.g. empty or duplicate).\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Adds a batch of tags to the task template.",
+ "description": "Adds a batch of tags to the task template. The request fails if one of the tags is invalid (e.g. empty or duplicate).\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostCreateTaskTemplateTag",
"parameters": [
{
@@ -36985,8 +42835,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Lists checklist item templates for a task template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:read` permissions.",
+ "summary": "Returns checklist items for a task template.",
+ "description": "Returns checklist items for a task template. The result lists checklist templates defined for the task template.\r\n\r\nThe user must be an admin or have `task-manage-config:read` permissions.",
"operationId": "GetTaskTemplateChecklistItemTemplatesByTaskTemplateId",
"parameters": [
{
@@ -37045,7 +42895,7 @@
"TaskBundles"
],
"summary": "Creates a checklist item template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "description": "Creates a checklist item template. It can be used when creating checklist items from the task template.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskTemplateChecklistItemTemplatesByTaskTemplateId",
"parameters": [
{
@@ -37124,7 +42974,7 @@
"TaskBundles"
],
"summary": "Deletes a checklist item template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "description": "Deletes a checklist item template. The checklist template is removed from the task template.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "DeleteTaskTemplateChecklistItemTemplateByTaskTemplateIdAndChecklistItemTemplateId",
"parameters": [
{
@@ -37182,8 +43032,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Gets a checklist item template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:read` permissions.",
+ "summary": "Returns a checklist item template.",
+ "description": "Returns a checklist item template. The response includes the checklist template's label and completion settings.\r\n\r\nThe user must be an admin or have `task-manage-config:read` permissions.",
"operationId": "GetTaskTemplateChecklistItemTemplateByTaskTemplateIdAndChecklistItemTemplateId",
"parameters": [
{
@@ -37249,7 +43099,7 @@
"TaskBundles"
],
"summary": "Updates a checklist item template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "description": "Updates a checklist item template. The submitted checklist template fields are stored.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PutTaskTemplateChecklistItemTemplateByTaskTemplateIdAndChecklistItemTemplateId",
"parameters": [
{
@@ -37337,8 +43187,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Deletes recurrence information from a task template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Deletes a task template recurrence rule.",
+ "description": "Deletes a task template recurrence rule. The recurrence rule is removed from the template.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskTemplateDeleteRecurrencyByTaskTemplateId",
"parameters": [
{
@@ -37388,8 +43238,8 @@
"tags": [
"TaskTemplateTags"
],
- "summary": "Removes tags from the task template with the specified id.",
- "description": "Returns 204 NoContent if all tags have been removed successfully.\r\n Returns 207 MultiStatus if at least one tag could not be removed, including the reasons.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Removes tags from the task template.",
+ "description": "Removes tags from the task template. Returns 207 MultiStatus if at least one tag could not be removed, including the reasons.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostDeleteTaskTemplatesTags",
"parameters": [
{
@@ -37466,8 +43316,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Gets recurrency details for a task template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:read` permissions.",
+ "summary": "Returns recurrency details for a task template.",
+ "description": "Returns recurrency details for a task template. The response includes the template's recurrence settings.\r\n\r\nThe user must be an admin or have `task-manage-config:read` permissions.",
"operationId": "GetTaskTemplateRecurrencyByTaskTemplateId",
"parameters": [
{
@@ -37524,8 +43374,8 @@
"tags": [
"CustomFields"
],
- "summary": "Sets the custom fields for the specified task template.",
- "description": "The required properties depend on the type of the custom field. Only task templates which are linked to a project template may have custom fields set.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Sets the custom fields for the task template.",
+ "description": "Sets the custom fields for the task template. The required properties depend on the type of the custom field. Only task templates which are linked to a project template may have custom fields set.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostTaskTemplateSetCustomFieldsByTaskTemplateId",
"parameters": [
{
@@ -37599,8 +43449,8 @@
"tags": [
"TaskBundles"
],
- "summary": "Adds or updates a recurrence rule for a task template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Updates a task template recurrence rule.",
+ "description": "Updates a task template recurrence rule. The template uses the submitted recurrence rule.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTaskTemplateSetRecurrencyByTaskTemplateId",
"parameters": [
{
@@ -37661,8 +43511,8 @@
"tags": [
"TaskTemplateTags"
],
- "summary": "Returns the tags of the task template with the specified id.",
- "description": "Returns the tags of the task template with the specified id ordered by name.\r\n\r\nAny authenticated user.",
+ "summary": "Returns the tags of the task template.",
+ "description": "Returns the tags of the task template. The result includes tags assigned to the task template. The user must have permission to access the requested resource.",
"operationId": "GetTagsByTaskTemplateId",
"parameters": [
{
@@ -37711,8 +43561,8 @@
"tags": [
"TaskDependencyTemplates"
],
- "summary": "Returns the task dependency templates for a given task template.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:read` permissions.",
+ "summary": "Returns dependency templates for a task template.",
+ "description": "Returns dependency templates for a task template. The result lists dependencies defined for the task template.\r\n\r\nThe user must be an admin or have `task-manage-config:read` permissions.",
"operationId": "GetTaskTemplateTaskDependencyTemplatesByTaskTemplateId",
"parameters": [
{
@@ -37780,16 +43630,15 @@
"/tasktemplates/{tasktemplateId}/externalfiles": {
"post": {
"tags": [
- "TaskTemplateFiles"
+ "TaskTemplate Files"
],
- "summary": "Endpoint to batch create external files without uploading.",
- "description": "Endpoint to create file infos with batch operation.\nCreated file infos don't have a version.\r\n\r\nAny authenticated user.",
- "operationId": "CreateExternalFiles",
+ "summary": "Creates external file references for the specified tasktemplate.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostExternalFilesByTaskTemplateNameAndTaskTemplateId",
"parameters": [
{
"name": "tasktemplateId",
"in": "path",
- "description": "The id of the tasktemplate.",
"required": true,
"schema": {
"type": "string",
@@ -37798,7 +43647,6 @@
}
],
"requestBody": {
- "description": "List of file forms.",
"content": {
"application/json": {
"schema": {
@@ -37807,16 +43655,9 @@
"$ref": "#/components/schemas/ExternalFileForm"
}
}
- },
- "application/*+json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ExternalFileForm"
- }
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -37824,7 +43665,30 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -37848,16 +43712,16 @@
"/tasktemplates/{tasktemplateId}/files": {
"delete": {
"tags": [
- "TaskTemplateFiles"
+ "TaskTemplate Files"
],
- "summary": "Deletes the files of the specified tasktemplate.",
- "description": "Deletes the metadata and the different versions of the files.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteTaskTemplateFiles",
+ "summary": "Deletes all files and versions for the specified tasktemplate.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByTaskTemplateNameAndTaskTemplateId",
"parameters": [
{
"name": "tasktemplateId",
"in": "path",
- "description": "The id of the tasktemplate.",
+ "description": "The tasktemplate id.",
"required": true,
"schema": {
"type": "string",
@@ -37868,6 +43732,36 @@
"responses": {
"204": {
"description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -37886,16 +43780,15 @@
},
"get": {
"tags": [
- "TaskTemplateFiles"
+ "TaskTemplate Files"
],
- "summary": "Returns all files of the tasktemplate with the specified id.",
- "description": "Returns all file metadata of the tasktemplate with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetTaskTemplateFiles",
+ "summary": "Returns all files of the specified tasktemplate.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesByTaskTemplateNameAndTaskTemplateId",
"parameters": [
{
"name": "tasktemplateId",
"in": "path",
- "description": "The id of the tasktemplate.",
"required": true,
"schema": {
"type": "string",
@@ -37928,6 +43821,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -37946,16 +43859,15 @@
},
"post": {
"tags": [
- "TaskTemplateFiles"
+ "TaskTemplate Files"
],
- "summary": "Creates a new tasktemplate file for the tasktemplate with the specified id..",
- "description": "Uploads a new tasktemplate file for the tasktemplate with the specified id.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateTaskTemplateFile",
+ "summary": "Uploads a file for the specified tasktemplate.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByTaskTemplateNameAndTaskTemplateId",
"parameters": [
{
"name": "tasktemplateId",
"in": "path",
- "description": "The id of the tasktemplate.",
"required": true,
"schema": {
"type": "string",
@@ -37967,21 +43879,7 @@
"content": {
"multipart/form-data": {
"schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
+ "$ref": "#/components/schemas/FileUploadModel"
}
}
}
@@ -37998,7 +43896,24 @@
}
},
"400": {
- "description": "Bad Request"
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -38087,16 +44002,15 @@
"/tasktemplates/{tasktemplateId}/files/byurl": {
"post": {
"tags": [
- "TaskTemplateFiles"
+ "TaskTemplate Files"
],
- "summary": "Uploads a new file by providing an url.",
- "description": "The file needs to be a public available url.\nThe file size must not exceed 100MB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateTaskTemplateFileByUrl",
+ "summary": "Uploads a file from a public URL for the specified tasktemplate.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByUrlByTaskTemplateNameAndTaskTemplateId",
"parameters": [
{
"name": "tasktemplateId",
"in": "path",
- "description": "The id of the tasktemplate the file is linked to.",
"required": true,
"schema": {
"type": "string",
@@ -38105,19 +44019,14 @@
}
],
"requestBody": {
- "description": "The url, name and description of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FilePostForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FilePostForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -38129,6 +44038,26 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -38149,16 +44078,16 @@
"/tasktemplates/{tasktemplateId}/files/{fileId}": {
"delete": {
"tags": [
- "TaskTemplateFiles"
+ "TaskTemplate Files"
],
- "summary": "Deletes the tasktemplate file with the specified id.",
- "description": "Deletes the metadata and the different versions of the file.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteTaskTemplateFile",
+ "summary": "Deletes the specified tasktemplate file and its versions.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByTaskTemplateNameAndTaskTemplateIdAndFileId",
"parameters": [
{
"name": "tasktemplateId",
"in": "path",
- "description": "The id of the tasktemplate.",
+ "description": "The tasktemplate id.",
"required": true,
"schema": {
"type": "string",
@@ -38168,7 +44097,7 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The file id.",
"required": true,
"schema": {
"type": "string",
@@ -38179,6 +44108,36 @@
"responses": {
"204": {
"description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -38272,16 +44231,15 @@
},
"put": {
"tags": [
- "TaskTemplateFiles"
+ "TaskTemplate Files"
],
- "summary": "Updates the metadata of the tasktemplate file with the specified id.",
- "description": "Updates the metadata of the tasktemplate file with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "UpdateTaskTemplateFile",
+ "summary": "Updates metadata for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PutFilesByTaskTemplateNameAndTaskTemplateIdAndFileId",
"parameters": [
{
"name": "tasktemplateId",
"in": "path",
- "description": "The id of the tasktemplate.",
"required": true,
"schema": {
"type": "string",
@@ -38291,7 +44249,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -38300,19 +44257,14 @@
}
],
"requestBody": {
- "description": "The model to update the file with the specified id.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileInfoUpdateForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileInfoUpdateForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -38324,6 +44276,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -38344,16 +44326,15 @@
"/tasktemplates/{tasktemplateId}/files/{fileId}/changeentity": {
"post": {
"tags": [
- "TaskTemplateFiles"
+ "TaskTemplate Files"
],
- "summary": "Changes the tasktemplate this file belongs to.",
- "description": "Changes the tasktemplate this file belongs to.\nSwitch to the specified tasktemplate or to a global file\nif the 'EntityId' of the model is set to null.\r\n\r\nAny authenticated user.",
- "operationId": "ChangeTaskTemplate",
+ "summary": "Changes the tasktemplate that owns the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesChangeTaskTemplateByTaskTemplateNameAndTaskTemplateIdAndFileId",
"parameters": [
{
"name": "tasktemplateId",
"in": "path",
- "description": "The id of the tasktemplate.",
"required": true,
"schema": {
"type": "string",
@@ -38363,7 +44344,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -38372,19 +44352,14 @@
}
],
"requestBody": {
- "description": "The model to change the entity information of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileEntityForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileEntityForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -38396,6 +44371,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -38416,16 +44421,15 @@
"/tasktemplates/{tasktemplateId}/files/{fileId}/copy": {
"post": {
"tags": [
- "TaskTemplateFiles"
+ "TaskTemplate Files"
],
- "summary": "Copies the file to a new tasktemplate.",
- "description": "Copies the file to a new tasktemplate (meta and content).\r\n\r\nAny authenticated user.",
- "operationId": "CopyToTaskTemplate",
+ "summary": "Copies the specified file to another tasktemplate.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesCopyByTaskTemplateNameAndTaskTemplateIdAndFileId",
"parameters": [
{
"name": "tasktemplateId",
"in": "path",
- "description": "The id of the tasktemplate.",
"required": true,
"schema": {
"type": "string",
@@ -38435,7 +44439,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -38444,19 +44447,14 @@
}
],
"requestBody": {
- "description": "The model to change the entity information of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileCopyForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileCopyForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -38468,6 +44466,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -38488,16 +44516,15 @@
"/tasktemplates/{tasktemplateId}/files/{fileId}/download": {
"get": {
"tags": [
- "TaskTemplateFiles"
+ "TaskTemplate Files"
],
- "summary": "Returns the content of the tasktemplate file with the specified id.",
- "description": "Returns the content of the tasktemplate file. Uses the latest file version.\nIf the tasktemplate file is an image and the width and height are set,\nthe image will be resized before it is returned.\r\n\r\nAny authenticated user.",
- "operationId": "GetTaskTemplateFileContent",
+ "summary": "Returns the latest content of the specified tasktemplate file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesDownloadByTaskTemplateNameAndTaskTemplateIdAndFileId",
"parameters": [
{
"name": "tasktemplateId",
"in": "path",
- "description": "The id of the tasktemplate.",
"required": true,
"schema": {
"type": "string",
@@ -38507,7 +44534,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -38517,7 +44543,6 @@
{
"name": "width",
"in": "query",
- "description": "Set width to resize.",
"schema": {
"type": "number",
"format": "double"
@@ -38526,7 +44551,6 @@
{
"name": "height",
"in": "query",
- "description": "Set height to resize.",
"schema": {
"type": "number",
"format": "double"
@@ -38535,7 +44559,6 @@
{
"name": "crop",
"in": "query",
- "description": "Whether to crop the image when resizing it.",
"schema": {
"type": "boolean"
}
@@ -38549,130 +44572,205 @@
"schema": {
"type": "string",
"format": "binary"
- }
- }
- }
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- }
- },
- "/tasktemplates/{tasktemplateId}/files/{fileId}/pdf": {
- "get": {
- "tags": [
- "TaskTemplateFiles"
- ],
- "summary": "Returns the content of the file with the specified id as pdf.\ntype or conversion not possible.",
- "description": "Returns the content of the tasktemplate file. Uses the latest file version.\r\n\r\nAny authenticated user.",
- "operationId": "GetTaskTemplateFileContent",
- "parameters": [
- {
- "name": "tasktemplateId",
- "in": "path",
- "description": "The id of the tasktemplate.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "inline",
- "in": "query",
- "description": "If inline is false, content-disposition header is attachment.",
- "schema": {
- "type": "boolean",
- "default": false
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- }
- },
- "/tasktemplates/{tasktemplateId}/files/{fileId}/shareurl": {
- "get": {
- "tags": [
- "TaskTemplateFiles"
- ],
- "summary": "Returns an url to share the file.",
- "description": "Returns a url to share the file.\r\n\r\nAny authenticated user.",
- "operationId": "GetPublicToken",
- "parameters": [
- {
- "name": "tasktemplateId",
- "in": "path",
- "description": "The id of the tasktemplate.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "string"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/tasktemplates/{tasktemplateId}/files/{fileId}/pdf": {
+ "get": {
+ "tags": [
+ "TaskTemplate Files"
+ ],
+ "summary": "Returns the specified tasktemplate file as PDF.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesPdfByTaskTemplateNameAndTaskTemplateIdAndFileId",
+ "parameters": [
+ {
+ "name": "tasktemplateId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "inline",
+ "in": "query",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/tasktemplates/{tasktemplateId}/files/{fileId}/shareurl": {
+ "get": {
+ "tags": [
+ "TaskTemplate Files"
+ ],
+ "summary": "Returns a public URL for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesShareUrlByTaskTemplateNameAndTaskTemplateIdAndFileId",
+ "parameters": [
+ {
+ "name": "tasktemplateId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -38696,16 +44794,15 @@
"/tasktemplates/{tasktemplateId}/files/{fileId}/versions": {
"get": {
"tags": [
- "TaskTemplateFiles"
+ "TaskTemplate Files"
],
- "summary": "Returns all file versions of the specified tasktemplate file.",
- "description": "Returns all file versions of the specified tasktemplate file.\r\n\r\nAny authenticated user.",
- "operationId": "GetTaskTemplateFileVersions",
+ "summary": "Returns all versions of the specified tasktemplate file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsByTaskTemplateNameAndTaskTemplateIdAndFileId",
"parameters": [
{
"name": "tasktemplateId",
"in": "path",
- "description": "The id of the tasktemplate.",
"required": true,
"schema": {
"type": "string",
@@ -38715,7 +44812,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -38748,6 +44844,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -38766,16 +44882,15 @@
},
"post": {
"tags": [
- "TaskTemplateFiles"
+ "TaskTemplate Files"
],
- "summary": "Uploads a new version of the tasktemplate file with the specified id.",
- "description": "Uploads a new version of an tasktemplate file.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateTaskTemplateFileVersion",
+ "summary": "Uploads a new version of the specified tasktemplate file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesVersionsByTaskTemplateNameAndTaskTemplateIdAndFileId",
"parameters": [
{
"name": "tasktemplateId",
"in": "path",
- "description": "The id of the tasktemplate.",
"required": true,
"schema": {
"type": "string",
@@ -38785,7 +44900,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -38797,21 +44911,7 @@
"content": {
"multipart/form-data": {
"schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
+ "$ref": "#/components/schemas/FileUploadModel"
}
}
}
@@ -38828,7 +44928,34 @@
}
},
"400": {
- "description": "Bad Request"
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -38936,16 +45063,15 @@
"/tasktemplates/{tasktemplateId}/files/{fileId}/versions/{versionId}/download": {
"get": {
"tags": [
- "TaskTemplateFiles"
+ "TaskTemplate Files"
],
- "summary": "Returns the content of the tasktemplate file version with the specified id.",
- "description": "Returns the content of the tasktemplate file version with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetTaskTemplateFileVersionContent",
+ "summary": "Returns the content of the specified tasktemplate file version.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsDownloadByTaskTemplateNameAndTaskTemplateIdAndFileIdAndVersionId",
"parameters": [
{
"name": "tasktemplateId",
"in": "path",
- "description": "The id of the tasktemplate.",
"required": true,
"schema": {
"type": "string",
@@ -38955,7 +45081,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -38965,7 +45090,6 @@
{
"name": "versionId",
"in": "path",
- "description": "The id of the file version.",
"required": true,
"schema": {
"type": "string",
@@ -38984,6 +45108,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -39006,8 +45150,8 @@
"tags": [
"Teams"
],
- "summary": "Returns all teams.",
- "description": "When team restrictions are applied for the workspace, the user must either be an admin or member of the team to retrieve it.",
+ "summary": "Returns teams in the workspace.",
+ "description": "Returns teams in the workspace. The result follows the workspace's team visibility restrictions. When team restrictions are applied for the workspace, the user must either be an admin or member of the team to retrieve it.",
"operationId": "GetTeams",
"parameters": [
{
@@ -39074,8 +45218,8 @@
"tags": [
"Teams"
],
- "summary": "Creates a new team.",
- "description": "\r\n\r\nThis endpoint requires the `Standard` plan or higher.\r\n\r\nThe user must be an admin.",
+ "summary": "Creates a team.",
+ "description": "Creates a team. It can then be assigned to users and projects.\r\n\r\nThis endpoint requires the `Standard` plan or higher.\r\n\r\nThe user must be an admin.",
"operationId": "PostTeam",
"requestBody": {
"description": "The model used to create the team.",
@@ -39123,8 +45267,8 @@
"tags": [
"Teams"
],
- "summary": "Deletes the team with the specified id.",
- "description": "\r\n\r\nThe user must be an admin.",
+ "summary": "Deletes the team.",
+ "description": "Deletes the team. The team is removed from workspace membership and project grouping.\r\n\r\nThe user must be an admin.",
"operationId": "DeleteTeamById",
"parameters": [
{
@@ -39171,8 +45315,8 @@
"tags": [
"Teams"
],
- "summary": "Returns the team with the specified id.",
- "description": "When team restrictions are applied for the workspace, the user must either be an admin or member of the team to retrieve it.",
+ "summary": "Returns the team.",
+ "description": "Returns the team. The response includes the team's members and projects. When team restrictions are applied for the workspace, the user must either be an admin or member of the team to retrieve it.",
"operationId": "GetTeamById",
"parameters": [
{
@@ -39254,8 +45398,8 @@
"tags": [
"Teams"
],
- "summary": "Updates the team with the specified id.",
- "description": "\r\n\r\nThe user must be an admin.",
+ "summary": "Updates the team.",
+ "description": "Updates the team. The submitted settings replace the existing values.\r\n\r\nThe user must be an admin.",
"operationId": "PutTeamById",
"parameters": [
{
@@ -39341,7 +45485,7 @@
"Teams"
],
"summary": "Adds projects to the specified team.",
- "description": "The user must have `project-master-data:write` permissions or be the owner of the projects.",
+ "description": "Adds projects to the specified team. The listed projects become associated with the team. The user must have `project-master-data:write` permissions or be the owner of the projects.",
"operationId": "PostTeamAddProjectsByTeamId",
"parameters": [
{
@@ -39426,7 +45570,7 @@
"Teams"
],
"summary": "Adds users to the specified team.",
- "description": "\r\n\r\nThe user must be an admin.",
+ "description": "Adds users to the specified team. The listed users become members of the team.\r\n\r\nThe user must be an admin.",
"operationId": "PostTeamAddUsersByTeamId",
"parameters": [
{
@@ -39511,7 +45655,7 @@
"Teams"
],
"summary": "Removes projects from the specified team.",
- "description": "The user must have `project-master-data:write` permissions or be the owner of the projects.",
+ "description": "Removes projects from the specified team. The listed projects stop being associated with the team. The user must have `project-master-data:write` permissions or be the owner of the projects.",
"operationId": "PostTeamRemoveProjectsByTeamId",
"parameters": [
{
@@ -39586,7 +45730,7 @@
"Teams"
],
"summary": "Removes users from the specified team.",
- "description": "\r\n\r\nThe user must be an admin.",
+ "description": "Removes users from the specified team. The listed users stop being members of the team.\r\n\r\nThe user must be an admin.",
"operationId": "PostTeamRemoveUsersByTeamId",
"parameters": [
{
@@ -40034,7 +46178,7 @@
"TimeBookings"
],
"summary": "Returns a list of time bookings.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Returns a list of time bookings. Each booking includes its project, user, and tracked duration. The user must have permission to access the requested resource.",
"operationId": "GetTimeBookings",
"parameters": [
{
@@ -40083,8 +46227,8 @@
"tags": [
"TimeBookings"
],
- "summary": "Creates a new time booking for a given project and user.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Creates a time booking for a project and user.",
+ "description": "Creates a time booking for a project and user. The booking records time for the submitted project and user. The user must have permission to access the requested resource.",
"operationId": "PostTimeBooking",
"requestBody": {
"description": "The model to create the time booking.",
@@ -40150,7 +46294,7 @@
"TimeBookings"
],
"summary": "Deletes a time booking by id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Deletes a time booking by id. The booking is removed from the selected project. The user must have permission to access the requested resource.",
"operationId": "DeleteTimeBookingById",
"parameters": [
{
@@ -40208,7 +46352,7 @@
"TimeBookings"
],
"summary": "Updates a given time booking.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Updates a given time booking. The saved booking reflects the submitted duration and assignment. The user must have permission to access the requested resource.",
"operationId": "PutTimeBookingById",
"parameters": [
{
@@ -40285,8 +46429,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Returns all time entries.",
- "description": "Returns all time entries.\r\n Depending on the time entry, the calling users has to have several permissions to get the time entry.\r\n No permissions are required if the calling user is owner of this time entry (this includes external timetrackings from connected projects).\r\n If the calling user is not the creator of the time entry and the time entry is connected to a project, 'write'\r\n permissions on the 'project-timetracking' feature are necessary (this does NOT include external timetrackings from connected projects).\r\n\r\nAny authenticated user.",
+ "summary": "Returns time entries in the workspace.",
+ "description": "Returns time entries in the workspace. The result includes entries the current user is allowed to view.\r\n The user must own the time entry or have `project-timetracking:read` permission for connected project entries.",
"operationId": "GetTimeEntries",
"parameters": [
{
@@ -40344,8 +46488,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Creates a new time entry.",
- "description": "Creates a new time entry.\r\n Depending on the time entry, the calling users has to have several permissions to create the time entry.\r\n No permissions are required if the calling user is owner of this time entry.\r\n If the calling user is not the creator of the time entry and the time entry is connected to a project, 'write'\r\n permissions\r\n on the 'project-timetracking' feature are necessary.\r\n If the time entry is connected to a task, the user needs to be assignee of this task or the user needs permissions on:\r\n 'project-planning-data' if it is a project task.\r\n\r\nAny authenticated user.",
+ "summary": "Creates a time entry.",
+ "description": "Creates a time entry. The entry records the submitted project, task, user, and duration. The user must have permission to access the requested resource.",
"operationId": "PostTimeEntry",
"requestBody": {
"description": "The time entry data.",
@@ -40410,8 +46554,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Edits multiple time entries using the specified operation.",
- "description": "The user is only allowed to edit time entries they have permissions for.\r\n Returns MultiStatus. Includes the list of successfully changed, not found, unauthorized, and invalid time entry ids.\r\n Returns BadRequest if the validation of the form fails, f.e. the new type of work cannot be found.\r\n Returns NotFound if the operation route value is not supported.\r\n \r\n Supported Operations:\r\n \r\n - \r\n delete: Deletes all time entries. Only admins can delete already billed time entries.
\r\n - \r\n setTypeOfWork: Changes the type of work for a list of time entries.
\r\n - \r\n setIsBillable: Changes the billability for a list of time entries. Already billed time entries can only be changed to\r\n being unbillable by admins. In this case, the IsBilled flag is also set to false.
\r\n - \r\n setIsBilled: Changes the billing status for a list of time entries. Only admins can change the billing status back to\r\n unbilled for already billed time entries.
\r\n - \r\n setProject: Changes the project for a list of time entries. Only admins can change the project for already billed time\r\n entries. Setting the project unsets the previous project and task.
\r\n - \r\n setTask: Changes the task for a list of time entries. Only admins can change the task for already billed time entries.\r\n Setting the task automatically sets the project if that task is a project task.
\r\n - \r\n setUser: Changes the user for a list of time entries. Only admins can change the user for already billed time entries.
\r\n
\r\n\r\nAny authenticated user.",
+ "summary": "Updates multiple time entries using the operation.",
+ "description": "Updates multiple time entries using the operation. Each requested change is reported separately.\r\n The user must have permission to access the requested time entries.",
"operationId": "PostTimeEntriesBatchByOperation",
"parameters": [
{
@@ -40487,8 +46631,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Deletes the time entry with the specified ids.",
- "description": "This endpoint is deprecated, please use the batch endpoint POST /timeentries/batch/delete instead.\r\n \r\n Deletes the time entries with the specified ids.\r\n Depending on the time entry, the calling users has to have several permissions to delete the time entries.\r\n No permissions are required if the calling user is owner of this time entry.\r\n If the calling user is not the creator of the time entry and the time entry is connected to a project, 'write'\r\n permissions\r\n on the 'project-timetracking' feature are necessary.\r\n If the time entry is connected to a task, the user needs to be assignee of this task or the user needs permissions on:\r\n 'project-planning-data' if it is a project task.\r\n If the time entry is billed, Admin permissions are required.\r\n\r\nAny authenticated user.",
+ "summary": "Deletes the time entry for the ids.",
+ "description": "Deletes the time entry for the ids. This endpoint is deprecated, please use the batch endpoint POST /timeentries/batch/delete instead. Deletes the time entries with the specified ids. The user must have permission to access the requested resource.",
"operationId": "PostTimeEntriesDelete",
"requestBody": {
"description": "The time entry ids to delete.",
@@ -40537,8 +46681,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Sets the time entries with the specified ids to billable.",
- "description": "Depending on the time entry, the calling users has to have several permissions to edit the time entries.\r\n No permissions are required if the calling user is owner of this time entry.\r\n If the calling user is not the creator of the time entry and the time entry is connected to a project, 'write'\r\n permissions\r\n on the 'project-timetracking' feature are necessary.\r\n If the time entry is connected to a task, the user needs to be assignee of this task or the user must have 'write'\r\n permissions on:\r\n 'project-timetracking' if it is a project task.\r\n\r\nAny authenticated user.",
+ "summary": "Sets the time entries for the ids to billable.",
+ "description": "Sets the time entries for the ids to billable. The selected billing state is applied to the time entries. The user must have permission to access the requested resource.",
"operationId": "PostTimeEntriesSetBillable",
"requestBody": {
"description": "The time entry ids and billable flag.",
@@ -40607,8 +46751,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Sets the time entries with the specified ids to billed.",
- "description": "Depending on the time entry, the calling users has to have several permissions to edit the time entries.\r\n No permissions are required if the calling user is owner of this time entry.\r\n If the calling user is not the creator of the time entry and the time entry is connected to a project, 'write'\r\n permissions\r\n on the 'project-timetracking' feature are necessary.\r\n If the time entry is connected to a task, the user needs to be assignee of this task or the user needs permissions on:\r\n 'project-planning-data' if it is a project task.\r\n If the time entry is billed, the permissions can be ignored because there is no change.\r\n\r\nAny authenticated user.",
+ "summary": "Sets the time entries for the ids to billed.",
+ "description": "Sets the time entries for the ids to billed. The selected billing state is applied to the time entries. The user must have permission to access the requested resource.",
"operationId": "PostTimeEntriesSetBilled",
"requestBody": {
"description": "The time entry ids and billed flag.",
@@ -40678,7 +46822,7 @@
"TimeEntries"
],
"summary": "Sets the type of work of the specified timeentries.",
- "description": "Depending on the time entry, the calling users has to have several permissions to edit the time entries.\r\n No permissions are required if the calling user is owner of this time entry.\r\n If the calling user is not the creator of the time entry and the time entry is connected to a project, 'write'\r\n permissions\r\n on the 'project-timetracking' feature are necessary.\r\n If the time entry is connected to a task, the user needs to be assignee of this task or the user needs permissions on:\r\n 'project-planning-data' if it is a project task.\r\n\r\nAny authenticated user.",
+ "description": "Sets the type of work of the specified timeentries. The selected work type is applied to the time entries. The user must have permission to access the requested resource.",
"operationId": "PostTimeEntriesSetTypeOfWork",
"requestBody": {
"description": "The time entry ids and type of work.",
@@ -40747,8 +46891,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Sets the time entries with the specified ids to unbillable.",
- "description": "Already billed time entries cannot be set to unbillable -> Badrequest\r\n Depending on the time entry, the calling users has to have several permissions to edit the time entries.\r\n No permissions are required if the calling user is owner of this time entry.\r\n If the calling user is not the creator of the time entry and the time entry is connected to a project, 'write'\r\n permissions\r\n on the 'project-timetracking' feature are necessary.\r\n If the time entry is connected to a task, the user needs to be assignee of this task or the user needs write\r\n permissions on:\r\n 'project-timetracking' if it is a project task.\r\n\r\nAny authenticated user.",
+ "summary": "Sets the time entries for the ids to unbillable.",
+ "description": "Sets the time entries for the ids to unbillable. Billed entries also become unbilled when an administrator changes them.\r\n The user must be an administrator to change a billed entry. For other entries, the user must own the entry or have applicable `user-timetracking:write`, `project-timetracking:write`, or project-role write permission. Team restrictions also apply.",
"operationId": "PostTimeEntriesSetUnbillable",
"requestBody": {
"description": "The time entry ids and billable flag.",
@@ -40817,8 +46961,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Sets the time entries with the specified ids to unbilled.",
- "description": "For setting already billed time entries to unbilled, the user needs to have admin permissions.\r\n\r\nAny authenticated user.",
+ "summary": "Sets the time entries for the ids to unbilled.",
+ "description": "Sets the time entries for the ids to unbilled. The selected billing state is applied to the time entries. The user must have permission to access the requested resource.",
"operationId": "PostTimeEntriesSetUnBilled",
"requestBody": {
"description": "The time entry ids and billed flag.",
@@ -40867,8 +47011,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Retrieves all time entries with a simplified model based on the grouping parameter.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns simplified time entries.",
+ "description": "Returns simplified time entries grouped by the requested property when one is supplied.\r\n The user must have permission to view the returned time entries.",
"operationId": "GetTimeEntriesSimplified",
"parameters": [
{
@@ -40927,8 +47071,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Deletes the time entry with the specified id.",
- "description": "Deletes the time entry with the specified id.\r\n Depending on the time entry, the calling users has to have several permissions to delete the time entry.\r\n No permissions are required if the calling user is owner of this time entry.\r\n If the calling user is not the creator of the time entry and the time entry is connected to a project, 'write'\r\n permissions\r\n on the 'project-timetracking' feature are necessary.\r\n If the time entry is billed, Admin permissions are required.\r\n\r\nAny authenticated user.",
+ "summary": "Deletes the time entry.",
+ "description": "Deletes the time entry. The time entry is removed from the selected project or task. The user must have permission to access the requested resource.",
"operationId": "DeleteTimeEntryById",
"parameters": [
{
@@ -40985,8 +47129,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Get a time entry by id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns the specified time entry.",
+ "description": "Returns the specified time entry when it is visible to the current user.\r\n The user must own the time entry or have permission to view it.",
"operationId": "GetTimeEntryById",
"parameters": [
{
@@ -41030,8 +47174,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Updates the time entry with the specified id.",
- "description": "Updates the time entry with the specified id.\r\n Depending on the time entry, the calling users has to have several permissions to update the time entry:\r\n No permissions are required if the calling user is owner of this time entry.\r\n If the calling user is not the creator of the time entry and the time entry is connected to a project, 'write'\r\n permissions\r\n on the 'project-timetracking' feature are necessary.\r\n If the time entry is connected to a task, the user needs to be assignee of this task or the user needs permissions on:\r\n 'project-planning-data' if it is a project task.\r\n The break duration of the time entry is kept the same. The break duration cannot be smaller than the duration of the\r\n time entry. To remove the breaks, use the endpoint POST /timeentries/{id}/removeBreaks.\r\n Following combination of times and duration are allowed for already completed time entries:\r\n - start time (local or utc) and end time (local or utc) (this option always takes precedence)\r\n - start time (local or utc) and duration\r\n - end time (local or utc) and duration\r\n For running time entries, you can only update the start time (local or utc) while the duration stays 0.\r\n\r\nAny authenticated user.",
+ "summary": "Updates the time entry.",
+ "description": "Updates the time entry. The break duration of the time entry is kept the same. The break duration cannot be smaller than the duration of the time entry. To remove the breaks, use the endpoint POST /timeentries/{id}/removeBreaks. Following combination of times and duration are allowed for already completed time entries: - start time (local or utc) and end time (local or utc) (this option always takes precedence) - start time (local or utc) and duration - end time (local or utc) and duration For running time entries, you can only update the start time (local or utc) while the duration stays 0. The user must have permission to access the requested resource.",
"operationId": "PutTimeEntryById",
"parameters": [
{
@@ -41118,8 +47262,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Handles removing all breaks from a time entry, effectively resuming the timer.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Removes breaks from the specified time entry.",
+ "description": "Removes all breaks from the specified time entry and resumes its timer.\r\n The user must have permission to edit the time entry.",
"operationId": "PostTimeEntryRemoveBreaks",
"parameters": [
{
@@ -41165,8 +47309,8 @@
"tags": [
"TimeReports"
],
- "summary": "Returns all time reports of a user.",
- "description": "Returns time reports the user created as well as the shared time reports of\r\n other users.\r\n\r\nAny authenticated user.",
+ "summary": "Returns time reports of a user.",
+ "description": "Returns time reports of a user. The response includes details for the selected time range. The user must have permission to access the requested resource.",
"operationId": "GetTimeReports",
"responses": {
"200": {
@@ -41204,7 +47348,7 @@
"TimeTrackingSettings"
],
"summary": "Returns the global timetracking settings.",
- "description": "\r\n\r\nAny authenticated user.",
+ "description": "Returns the global timetracking settings. The response contains the workspace's time-tracking defaults. The user must have permission to access the requested resource.",
"operationId": "GetTimeTrackingSettings",
"responses": {
"200": {
@@ -41241,8 +47385,8 @@
"tags": [
"TypeOfWork"
],
- "summary": "Gets all types of work.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns types of work.",
+ "description": "Returns types of work. Each type includes its billing and color settings. The user must have permission to access the requested resource.",
"operationId": "GetTypesOfWork",
"parameters": [
{
@@ -41300,8 +47444,8 @@
"tags": [
"TypeOfWork"
],
- "summary": "Creates a new type of work.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Creates a type of work.",
+ "description": "Creates a type of work. It can then be selected on time entries.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PostTypesOfWork",
"requestBody": {
"description": "The type Of Work form payload.",
@@ -41357,8 +47501,8 @@
"tags": [
"TypeOfWork"
],
- "summary": "Gets all possible icons for type of work.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns possible icons for type of work.",
+ "description": "Returns possible icons for type of work. These icons can be assigned to work types. The user must have permission to access the requested resource.",
"operationId": "GetTypesOfWorkIcons",
"responses": {
"200": {
@@ -41395,8 +47539,8 @@
"tags": [
"TypeOfWork"
],
- "summary": "Gets the type of work with the specified id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns the type of work.",
+ "description": "Returns the type of work. The response includes the type's label, color, and billing settings. The user must have permission to access the requested resource.",
"operationId": "GetTypeOfWorkById",
"parameters": [
{
@@ -41450,8 +47594,8 @@
"tags": [
"TypeOfWork"
],
- "summary": "Changes the properties of an existing type of work.",
- "description": "\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
+ "summary": "Changes the properties of a type of work.",
+ "description": "Changes the properties of a type of work. Future entries use the submitted billing and color settings.\r\n\r\nThe user must be an admin or have `task-manage-config:write` permissions.",
"operationId": "PutTypeOfWorkById",
"parameters": [
{
@@ -41529,8 +47673,8 @@
"tags": [
"TypeOfWork"
],
- "summary": "Deletes the type of work with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "summary": "Deletes the type of work.",
+ "description": "Deletes the type of work. The type of work is removed from the workspace.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
"operationId": "PostTypeOfWorkDeleteByTypeOfWorkId",
"parameters": [
{
@@ -41601,8 +47745,8 @@
"tags": [
"TypeOfWork"
],
- "summary": "Archives or unarchives the type of work with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "summary": "Archives or unarchives the type of work.",
+ "description": "Archives or unarchives the type of work. Archived types remain available for existing time entries.\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
"operationId": "PostTypeOfWorkSetArchivedByTypeOfWorkId",
"parameters": [
{
@@ -41680,8 +47824,8 @@
"tags": [
"Users"
],
- "summary": "Returns all users with their details.",
- "description": "Returns all users with their details like status, contact info and more.\r\n Returns all users if the user has read permissions on the feature\r\n user-master-data, otherwise returns only his own user.\r\n Archived users are excluded by default. You can include them by setting the 'showArchived' query parameter.\r\n If the permissions have UserTeamsData Feature, the filter for teams is applied.\r\n Beware that this will also include API users in the response.\r\n\r\nAny authenticated user.",
+ "summary": "Returns users with their details.",
+ "description": "Returns users with their details. Archived users are excluded by default; set 'showArchived' to include them. API users are included in the response. The user must have `user-master-data:read` permission to see all workspace users. Without it, the response contains only the requesting user. If team restrictions apply, the response is limited to users in the user's teams.",
"operationId": "GetUsers",
"parameters": [
{
@@ -41741,8 +47885,8 @@
"tags": [
"Users"
],
- "summary": "Tries to retrieve user name and gender for the specified email.",
- "description": "Returns the first name, last name and gender of the given email address.\r\n\r\nAny authenticated user.",
+ "summary": "Returns user name and gender for the email.",
+ "description": "Returns user name and gender for the email. The response contains the matching name and gender fields. The user must have permission to access the requested resource.",
"operationId": "GetUsersAutofillByEmail",
"parameters": [
{
@@ -41790,8 +47934,8 @@
"tags": [
"UserTags"
],
- "summary": "Removes a tag from all users.",
- "description": "\r\n\r\nThe user must be an admin or have `user-master-data:write` permissions.",
+ "summary": "Removes a tag from users.",
+ "description": "Removes a tag from users. The selected tag is removed from matching users.\r\n\r\nThe user must be an admin or have `user-master-data:write` permissions.",
"operationId": "PostUsersDeleteTags",
"requestBody": {
"description": "The model with the tag to be removed.",
@@ -41830,8 +47974,8 @@
"tags": [
"Users"
],
- "summary": "Returns the currently logged-in user and workspace.",
- "description": "This is an alternate URL for the /me endpoint.\r\n\r\nAny authenticated user.",
+ "summary": "Returns the logged-in user and workspace.",
+ "description": "Returns the logged-in user and workspace. This is an alternate URL for the /me endpoint. The user must have permission to access the requested resource.",
"operationId": "GetUsersMe",
"responses": {
"200": {
@@ -41875,8 +48019,8 @@
"tags": [
"TimeBookings"
],
- "summary": "Returns the time bookings in a specified time range for a list of users.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns time bookings for users.",
+ "description": "Returns time bookings for users. Each booking includes its project, user, and tracked duration. The user must have permission to access the requested resource.",
"operationId": "GetProjectTimeBookingsForUsers",
"parameters": [
{
@@ -41966,8 +48110,8 @@
"tags": [
"UserTags"
],
- "summary": "Returns all tags that are currently in use.",
- "description": "Returns all tags that are currently in use ordered by count.\r\n\r\nAny authenticated user.",
+ "summary": "Returns tags that are in use.",
+ "description": "Returns tags that are in use. The result includes tags used by users in the workspace. The user must have permission to access the requested resource.",
"operationId": "GetUsersTags",
"responses": {
"200": {
@@ -42004,8 +48148,8 @@
"tags": [
"TimeBookings"
],
- "summary": "Returns the time bookings in a specified time range for a list of users.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns time bookings for users.",
+ "description": "Returns time bookings for users. Each booking includes its project, user, and tracked duration. The user must have permission to access the requested resource.",
"operationId": "GetUsersTimeBookings",
"parameters": [
{
@@ -42095,8 +48239,8 @@
"tags": [
"UserTags"
],
- "summary": "Updates a tag globally for all users.",
- "description": "\r\n\r\nThe user must be an admin or have `user-master-data:write` permissions.",
+ "summary": "Updates a tag globally for users.",
+ "description": "Updates a tag globally for users. The renamed or merged tag is applied to matching users.\r\n\r\nThe user must be an admin or have `user-master-data:write` permissions.",
"operationId": "PostUsersUpdateTags",
"requestBody": {
"content": {
@@ -42155,7 +48299,7 @@
"Workload"
],
"summary": "Returns the users' workloads per day.",
- "description": "Returns the users' workloads per day for projects, tasks, task schedules and calendar events\r\n that have an overlap with the interval specified by intervalStart and intervalEnd.\r\n Takes into consideration weekly availability, absences, user capacity, planned efforts, as well as project budget.\r\n\r\nThe user must be an admin or have `user-planning-data:read` permissions.",
+ "description": "Returns the users' workloads per day. Takes into consideration weekly availability, absences, user capacity, planned efforts, as well as project budget.\r\n\r\nThe user must be an admin or have `user-planning-data:read` permissions.",
"operationId": "GetUsersWorkload",
"parameters": [
{
@@ -42274,7 +48418,7 @@
"tags": [
"Users"
],
- "summary": "Deletes the user with the specified id.",
+ "summary": "Deletes the user.",
"description": "\r\n\r\nThe user must be an admin or have `user-manage-config:delete` permissions.",
"operationId": "DeleteUserById",
"parameters": [
@@ -42333,7 +48477,7 @@
"tags": [
"Users"
],
- "summary": "Returns the user with the specified id.",
+ "summary": "Returns the user.",
"description": "\r\n\r\nAny authenticated user.",
"operationId": "GetUserById",
"parameters": [
@@ -42398,7 +48542,7 @@
"tags": [
"Users"
],
- "summary": "Updates the user with the specified id.",
+ "summary": "Updates the user.",
"description": "\r\n\r\nThe user must be an admin or the creator or have `user-master-data:write` permissions.",
"operationId": "PutUserById",
"parameters": [
@@ -42468,8 +48612,8 @@
"tags": [
"Users"
],
- "summary": "Activates the user with the specified id.",
- "description": "The user is then allowed to sign in again and will be notified via email.\r\n\r\nThe user must be an admin or have `user-manage-config:write` permissions.",
+ "summary": "Activates the user.",
+ "description": "Activates the user. The user is then allowed to sign in again and will be notified via email.\r\n\r\nThe user must be an admin or have `user-manage-config:write` permissions.",
"operationId": "PostUserActivateByUserId",
"parameters": [
{
@@ -42539,8 +48683,8 @@
"tags": [
"UserTags"
],
- "summary": "Adds a batch of tags to the user with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `user-master-data:write` permissions.",
+ "summary": "Adds a batch of tags to the user.",
+ "description": "Adds a batch of tags to the user. The selected tags are added to the user.\r\n\r\nThe user must be an admin or have `user-master-data:write` permissions.",
"operationId": "PostUserAddTagsByUserId",
"parameters": [
{
@@ -42624,7 +48768,7 @@
"tags": [
"AssignedTasks"
],
- "summary": "Returns all tasks the specified user is allowed to see.",
+ "summary": "Returns tasks the specified user is allowed to see.",
"description": "\r\n\r\nAny authenticated user.",
"operationId": "GetUserAllAvailableTasksByUserId",
"parameters": [
@@ -42686,8 +48830,8 @@
"tags": [
"AssignedTasks"
],
- "summary": "Returns all tasks assigned to the specified user.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns tasks assigned to the specified user.",
+ "description": "Returns tasks assigned to the specified user. The result includes tasks assigned to that user. The user must have permission to access the requested resource.",
"operationId": "GetUserAssignedTasksByUserId",
"parameters": [
{
@@ -42775,8 +48919,8 @@
"tags": [
"AssignedTasks"
],
- "summary": "Returns the assigned task with the specified id of a specified user.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns the assigned task of a specified user.",
+ "description": "Returns the assigned task of a specified user. The result includes tasks assigned to that user. The user must have permission to access the requested resource.",
"operationId": "GetUserAssignedTaskByUserIdAndTaskId",
"parameters": [
{
@@ -42853,7 +48997,7 @@
"UserCapacities"
],
"summary": "Returns the capacity of the specified user.",
- "description": "Returns the capacity of the specified user.\r\n User planning data or admin permissions are required if the capacity of the specified user\r\n does not belong to the calling user.\r\n\r\nAny authenticated user.",
+ "description": "Returns the capacity of the specified user. The response includes the user's planning capacity. The user must have permission to access the requested resource.",
"operationId": "GetUserCapacityByUserId",
"parameters": [
{
@@ -42908,7 +49052,7 @@
"UserCapacities"
],
"summary": "Updates the capacity of the specified user.",
- "description": "Updates the capacity of the user with the specified id.\r\n User planning data or admin permissions are required if the capacity of the specified user\r\n does not belong to the calling user.\r\n\r\nAny authenticated user.",
+ "description": "Updates the capacity of the specified user. The capacity is stored for the user's planning. The user must have permission to access the requested resource.",
"operationId": "PutUserCapacityByUserId",
"parameters": [
{
@@ -42975,7 +49119,7 @@
"tags": [
"Users"
],
- "summary": "Returns the contact infos of the user with the specified id.",
+ "summary": "Returns the contact infos of the user.",
"description": "\r\n\r\nThe user must be an admin or the creator or have `user-master-data:read` permissions.",
"operationId": "GetUserContactInfoByUserId",
"parameters": [
@@ -43047,7 +49191,7 @@
"tags": [
"Users"
],
- "summary": "Creates a new contact info for the user with the specified id.",
+ "summary": "Creates contact info for the user.",
"description": "\r\n\r\nThe user must be an admin or the creator or have `user-master-data:write` permissions.",
"operationId": "PostUserContactInfoByUserId",
"parameters": [
@@ -43117,7 +49261,7 @@
"tags": [
"Users"
],
- "summary": "Deletes the contact info of the user with the specified id.",
+ "summary": "Deletes the contact info of the user.",
"description": "\r\n\r\nThe user must be an admin or the creator or have `user-master-data:write` permissions.",
"operationId": "DeleteUserContactInfoByUserIdAndContactInfoId",
"parameters": [
@@ -43187,7 +49331,7 @@
"tags": [
"Users"
],
- "summary": "Returns the contact info of the user with the specified id.",
+ "summary": "Returns the contact info of the user.",
"description": "\r\n\r\nThe user must be an admin or the creator or have `user-master-data:read` permissions.",
"operationId": "GetUserContactInfoByUserIdAndContactInfoId",
"parameters": [
@@ -43254,7 +49398,7 @@
"tags": [
"Users"
],
- "summary": "Updates the contact info of the user with the specified id.",
+ "summary": "Updates the contact info of the user.",
"description": "\r\n\r\nThe user must be an admin or the creator or have `user-master-data:write` permissions.",
"operationId": "PutUserContactInfoByUserIdAndContactInfoId",
"parameters": [
@@ -43344,8 +49488,8 @@
"tags": [
"Users"
],
- "summary": "Deactivates the user with the specified id.",
- "description": "A deactivated user can no longer sign in.\r\n This is only possible if the user is not the last admin user.\r\n\r\nThe user must be an admin or have `user-manage-config:write` permissions.",
+ "summary": "Deactivates the user.",
+ "description": "Deactivates the user. A deactivated user can no longer sign in. This is only possible if the user is not the last admin user.\r\n\r\nThe user must be an admin or have `user-manage-config:write` permissions.",
"operationId": "PostUserDeactivateByUserId",
"parameters": [
{
@@ -43434,8 +49578,8 @@
"tags": [
"UserTags"
],
- "summary": "Removes tags from the user with the specified id.",
- "description": "\r\n\r\nThe user must be an admin or have `user-master-data:write` permissions.",
+ "summary": "Removes tags from the user.",
+ "description": "Removes tags from the user. The selected tags are removed from the user.\r\n\r\nThe user must be an admin or have `user-master-data:write` permissions.",
"operationId": "PostUserDeleteTagsByUserId",
"parameters": [
{
@@ -43490,16 +49634,15 @@
"/users/{userId}/externalfiles": {
"post": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Endpoint to batch create external files without uploading.",
- "description": "Endpoint to create file infos with batch operation.\nCreated file infos don't have a version.\r\n\r\nAny authenticated user.",
- "operationId": "CreateExternalFiles",
+ "summary": "Creates external file references for the specified user.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostExternalFilesByUserNameAndUserId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user.",
"required": true,
"schema": {
"type": "string",
@@ -43508,7 +49651,6 @@
}
],
"requestBody": {
- "description": "List of file forms.",
"content": {
"application/json": {
"schema": {
@@ -43517,16 +49659,9 @@
"$ref": "#/components/schemas/ExternalFileForm"
}
}
- },
- "application/*+json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ExternalFileForm"
- }
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -43534,7 +49669,30 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -43558,16 +49716,16 @@
"/users/{userId}/files": {
"delete": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Deletes the files of the specified user.",
- "description": "Deletes the metadata and the different versions of the files.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteUserFiles",
+ "summary": "Deletes all files and versions for the specified user.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByUserNameAndUserId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user.",
+ "description": "The user id.",
"required": true,
"schema": {
"type": "string",
@@ -43578,6 +49736,36 @@
"responses": {
"204": {
"description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -43596,16 +49784,15 @@
},
"get": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Returns all files of the user with the specified id.",
- "description": "Returns all file metadata of the user with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetUserFiles",
+ "summary": "Returns all files of the specified user.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesByUserNameAndUserId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user.",
"required": true,
"schema": {
"type": "string",
@@ -43638,6 +49825,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -43656,16 +49863,15 @@
},
"post": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Creates a new user file for the user with the specified id..",
- "description": "Uploads a new user file for the user with the specified id.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateUserFile",
+ "summary": "Uploads a file for the specified user.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByUserNameAndUserId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user.",
"required": true,
"schema": {
"type": "string",
@@ -43677,21 +49883,7 @@
"content": {
"multipart/form-data": {
"schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
+ "$ref": "#/components/schemas/FileUploadModel"
}
}
}
@@ -43708,7 +49900,24 @@
}
},
"400": {
- "description": "Bad Request"
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -43729,16 +49938,15 @@
"/users/{userId}/files/byurl": {
"post": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Uploads a new file by providing an url.",
- "description": "The file needs to be a public available url.\nThe file size must not exceed 100MB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateUserFileByUrl",
+ "summary": "Uploads a file from a public URL for the specified user.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByUrlByUserNameAndUserId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user the file is linked to.",
"required": true,
"schema": {
"type": "string",
@@ -43747,19 +49955,14 @@
}
],
"requestBody": {
- "description": "The url, name and description of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FilePostForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FilePostForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -43771,6 +49974,26 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -43791,16 +50014,16 @@
"/users/{userId}/files/{fileId}": {
"delete": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Deletes the user file with the specified id.",
- "description": "Deletes the metadata and the different versions of the file.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteUserFile",
+ "summary": "Deletes the specified user file and its versions.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByUserNameAndUserIdAndFileId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user.",
+ "description": "The user id.",
"required": true,
"schema": {
"type": "string",
@@ -43810,7 +50033,7 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The file id.",
"required": true,
"schema": {
"type": "string",
@@ -43821,6 +50044,36 @@
"responses": {
"204": {
"description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -43914,16 +50167,15 @@
},
"put": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Updates the metadata of the user file with the specified id.",
- "description": "Updates the metadata of the user file with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "UpdateUserFile",
+ "summary": "Updates metadata for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PutFilesByUserNameAndUserIdAndFileId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user.",
"required": true,
"schema": {
"type": "string",
@@ -43933,7 +50185,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -43942,19 +50193,14 @@
}
],
"requestBody": {
- "description": "The model to update the file with the specified id.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileInfoUpdateForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileInfoUpdateForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -43966,6 +50212,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -43986,16 +50262,15 @@
"/users/{userId}/files/{fileId}/changeentity": {
"post": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Changes the user this file belongs to.",
- "description": "Changes the user this file belongs to.\nSwitch to the specified user or to a global file\nif the 'EntityId' of the model is set to null.\r\n\r\nAny authenticated user.",
- "operationId": "ChangeUser",
+ "summary": "Changes the user that owns the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesChangeUserByUserNameAndUserIdAndFileId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user.",
"required": true,
"schema": {
"type": "string",
@@ -44005,7 +50280,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -44014,19 +50288,14 @@
}
],
"requestBody": {
- "description": "The model to change the entity information of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileEntityForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileEntityForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -44038,6 +50307,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -44058,16 +50357,15 @@
"/users/{userId}/files/{fileId}/copy": {
"post": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Copies the file to a new user.",
- "description": "Copies the file to a new user (meta and content).\r\n\r\nAny authenticated user.",
- "operationId": "CopyToUser",
+ "summary": "Copies the specified file to another user.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesCopyByUserNameAndUserIdAndFileId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user.",
"required": true,
"schema": {
"type": "string",
@@ -44077,7 +50375,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -44086,19 +50383,14 @@
}
],
"requestBody": {
- "description": "The model to change the entity information of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileCopyForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileCopyForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -44110,6 +50402,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -44130,16 +50452,15 @@
"/users/{userId}/files/{fileId}/download": {
"get": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Returns the content of the user file with the specified id.",
- "description": "Returns the content of the user file. Uses the latest file version.\nIf the user file is an image and the width and height are set,\nthe image will be resized before it is returned.\r\n\r\nAny authenticated user.",
- "operationId": "GetUserFileContent",
+ "summary": "Returns the latest content of the specified user file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesDownloadByUserNameAndUserIdAndFileId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user.",
"required": true,
"schema": {
"type": "string",
@@ -44149,7 +50470,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -44159,7 +50479,6 @@
{
"name": "width",
"in": "query",
- "description": "Set width to resize.",
"schema": {
"type": "number",
"format": "double"
@@ -44168,7 +50487,6 @@
{
"name": "height",
"in": "query",
- "description": "Set height to resize.",
"schema": {
"type": "number",
"format": "double"
@@ -44177,7 +50495,6 @@
{
"name": "crop",
"in": "query",
- "description": "Whether to crop the image when resizing it.",
"schema": {
"type": "boolean"
}
@@ -44194,6 +50511,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -44214,16 +50561,15 @@
"/users/{userId}/files/{fileId}/pdf": {
"get": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Returns the content of the file with the specified id as pdf.\ntype or conversion not possible.",
- "description": "Returns the content of the user file. Uses the latest file version.\r\n\r\nAny authenticated user.",
- "operationId": "GetUserFileContent",
+ "summary": "Returns the specified user file as PDF.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesPdfByUserNameAndUserIdAndFileId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user.",
"required": true,
"schema": {
"type": "string",
@@ -44233,7 +50579,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -44243,7 +50588,6 @@
{
"name": "inline",
"in": "query",
- "description": "If inline is false, content-disposition header is attachment.",
"schema": {
"type": "boolean",
"default": false
@@ -44261,6 +50605,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -44281,16 +50655,15 @@
"/users/{userId}/files/{fileId}/shareurl": {
"get": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Returns an url to share the file.",
- "description": "Returns a url to share the file.\r\n\r\nAny authenticated user.",
- "operationId": "GetPublicToken",
+ "summary": "Returns a public URL for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesShareUrlByUserNameAndUserIdAndFileId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user.",
"required": true,
"schema": {
"type": "string",
@@ -44300,7 +50673,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -44318,6 +50690,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -44338,16 +50730,15 @@
"/users/{userId}/files/{fileId}/versions": {
"get": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Returns all file versions of the specified user file.",
- "description": "Returns all file versions of the specified user file.\r\n\r\nAny authenticated user.",
- "operationId": "GetUserFileVersions",
+ "summary": "Returns all versions of the specified user file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsByUserNameAndUserIdAndFileId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user.",
"required": true,
"schema": {
"type": "string",
@@ -44357,7 +50748,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -44390,6 +50780,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -44408,16 +50818,15 @@
},
"post": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Uploads a new version of the user file with the specified id.",
- "description": "Uploads a new version of an user file.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateUserFileVersion",
+ "summary": "Uploads a new version of the specified user file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesVersionsByUserNameAndUserIdAndFileId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user.",
"required": true,
"schema": {
"type": "string",
@@ -44427,7 +50836,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -44439,21 +50847,7 @@
"content": {
"multipart/form-data": {
"schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
+ "$ref": "#/components/schemas/FileUploadModel"
}
}
}
@@ -44470,7 +50864,34 @@
}
},
"400": {
- "description": "Bad Request"
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -44578,16 +50999,15 @@
"/users/{userId}/files/{fileId}/versions/{versionId}/download": {
"get": {
"tags": [
- "UserFiles"
+ "User Files"
],
- "summary": "Returns the content of the user file version with the specified id.",
- "description": "Returns the content of the user file version with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetUserFileVersionContent",
+ "summary": "Returns the content of the specified user file version.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsDownloadByUserNameAndUserIdAndFileIdAndVersionId",
"parameters": [
{
"name": "userId",
"in": "path",
- "description": "The id of the user.",
"required": true,
"schema": {
"type": "string",
@@ -44597,7 +51017,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -44607,7 +51026,6 @@
{
"name": "versionId",
"in": "path",
- "description": "The id of the file version.",
"required": true,
"schema": {
"type": "string",
@@ -44626,6 +51044,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -44648,8 +51086,8 @@
"tags": [
"PrivateTasks"
],
- "summary": "Returns all private tasks that a user created and assigned to someone else.",
- "description": "Private tasks are always created for the current user but can be reassigned to other users afterwards.\r\n This endpoint returns all private tasks that were originally created by the user but were reassigned to someone else.\r\n\r\nAny authenticated user.",
+ "summary": "Returns private tasks reassigned by the user.",
+ "description": "Returns private tasks reassigned by the user. Private tasks are always created for the current user but can be reassigned to other users afterwards. This endpoint returns all private tasks that were originally created by the user but were reassigned to someone else. The user must have permission to access the requested resource.",
"operationId": "GetUserOtherPrivateTasksByUserId",
"parameters": [
{
@@ -44730,8 +51168,8 @@
"tags": [
"PrivateTasks"
],
- "summary": "Returns a private task that a user created and assigned to someone else.",
- "description": "Private tasks are always created for the current user but can be reassigned to other users afterwards.\r\n This endpoint returns a private task that was originally created by the user but was reassigned to someone else.\r\n\r\nAny authenticated user.",
+ "summary": "Returns a private task reassigned by the user.",
+ "description": "Returns a private task reassigned by the user. Private tasks are always created for the current user but can be reassigned to other users afterwards. This endpoint returns a private task that was originally created by the user but was reassigned to someone else. The user must have permission to access the requested resource.",
"operationId": "GetUserOtherPrivateTaskByUserIdAndTaskId",
"parameters": [
{
@@ -44807,8 +51245,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Returns the checklist items for a private task with the specified id.",
- "description": "The user must be the creator of the task.",
+ "summary": "Returns the checklist items for a private task.",
+ "description": "Returns the checklist items for a private task. The checklist belongs to the specified private task. The user must be the creator of the task.",
"operationId": "GetUserOtherPrivateTaskChecklistItemsByUserIdAndTaskId",
"parameters": [
{
@@ -44887,8 +51325,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Returns a checklist item for a private task with the specified id.",
- "description": "The user must be the creator of the task.",
+ "summary": "Returns a checklist item for a private task.",
+ "description": "Returns a checklist item for a private task. The checklist belongs to the specified private task. The user must be the creator of the task.",
"operationId": "GetUserOtherPrivateTaskChecklistItemByUserIdAndTaskIdAndChecklistItemId",
"parameters": [
{
@@ -44974,8 +51412,8 @@
"tags": [
"PrivateTasks"
],
- "summary": "Returns all private tasks of the user with the specified id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns private tasks of the user.",
+ "description": "Returns private tasks of the user. The result includes tasks owned by that user. The user must have permission to access the requested resource.",
"operationId": "GetUserPrivateTasksByUserId",
"parameters": [
{
@@ -45118,8 +51556,8 @@
"tags": [
"PrivateTasks"
],
- "summary": "Returns the private task of a user with the specified id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns the private task of a user.",
+ "description": "Returns the private task of a user. The result includes tasks owned by that user. The user must have permission to access the requested resource.",
"operationId": "GetUserPrivateTaskByUserIdAndTaskId",
"parameters": [
{
@@ -45195,8 +51633,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Returns the checklist for a private task with the specified id.",
- "description": "The user must be be assigned to the task.",
+ "summary": "Returns the checklist for a private task.",
+ "description": "Returns the checklist for a private task. The checklist belongs to the specified private task. The user must be be assigned to the task.",
"operationId": "GetUserPrivateTaskChecklistItemsByUserIdAndTaskId",
"parameters": [
{
@@ -45275,8 +51713,8 @@
"tags": [
"ChecklistItems"
],
- "summary": "Retrieves a checklist item from a private task.",
- "description": "The user must be assigned to the task.",
+ "summary": "Returns a checklist item from a private task.",
+ "description": "Returns a checklist item from a private task. The checklist belongs to the specified private task. The user must be assigned to the task.",
"operationId": "GetUserPrivateTaskChecklistItemByUserIdAndTaskIdAndChecklistItemId",
"parameters": [
{
@@ -45362,8 +51800,8 @@
"tags": [
"Users"
],
- "summary": "Archives or unarchives the user with the specified id.",
- "description": "Archived objects can not be used any longer but still exist for being referenced by other entities.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Archives or unarchives the user.",
+ "description": "Archives or unarchives the user. Archived objects can not be used any longer but still exist for being referenced by other entities.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostUserSetArchivedByUserId",
"parameters": [
{
@@ -45441,8 +51879,8 @@
"tags": [
"UserTags"
],
- "summary": "Returns the tags of the users with the specified id.",
- "description": "Returns the tags of the user with the specified id ordered by name.\r\n \r\n To read the tags of a user the user must have 'read' permissions on the specified user.",
+ "summary": "Returns the tags of the users.",
+ "description": "Returns the tags of the users. The result includes tags assigned to that user. To read the tags of a user the user must have 'read' permissions on the specified user.",
"operationId": "GetUserTagsByUserId",
"parameters": [
{
@@ -45511,8 +51949,8 @@
"tags": [
"AssignedTasks"
],
- "summary": "Returns all task tags the specified user is allowed to see.",
- "description": "The tags can be filtered by the properties of the task model.\r\n\r\nAny authenticated user.",
+ "summary": "Returns task tags the user is allowed to see.",
+ "description": "Returns task tags the user is allowed to see. The tags can be filtered by the properties of the task model. The user must have permission to access the requested resource.",
"operationId": "GetUserTasksTagsByUserId",
"parameters": [
{
@@ -46266,8 +52704,8 @@
"tags": [
"Workflows"
],
- "summary": "Retrieves all workflows.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns workflows.",
+ "description": "Returns workflows. Each workflow includes its linked statuses and custom fields. The user must have permission to access the requested resource.",
"operationId": "GetWorkflows",
"parameters": [
{
@@ -46325,7 +52763,7 @@
"Workflows"
],
"summary": "Creates a new workflow.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "description": "Creates a new workflow. It can then be linked to projects.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostWorkflow",
"requestBody": {
"content": {
@@ -46429,8 +52867,8 @@
"tags": [
"Workflows"
],
- "summary": "Retrieves a specified workflow.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns a specified workflow.",
+ "description": "Returns a specified workflow. Linked statuses and custom fields are included. The user must have permission to access the requested resource.",
"operationId": "GetWorkflowById",
"parameters": [
{
@@ -46484,7 +52922,7 @@
"Workflows"
],
"summary": "Updates a workflow.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "description": "Updates a workflow. Linked projects use its submitted status and field settings.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PutWorkflowById",
"parameters": [
{
@@ -47357,8 +53795,8 @@
"tags": [
"Workflows"
],
- "summary": "Creates a copy of an existing workflow.",
- "description": "Creates a new workflow with the same properties as the original.\r\n The new workflow will have a unique name with \" (Copy)\" appended.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Creates a copy of a workflow.",
+ "description": "Creates a copy of a workflow. The new workflow will have a unique name with \" (Copy)\" appended.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostWorkflowCopyByWorkflowId",
"parameters": [
{
@@ -47414,8 +53852,8 @@
"tags": [
"CustomFields"
],
- "summary": "Returns all custom field definitions linked to a workflow.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns custom fields linked to a workflow.",
+ "description": "Returns custom fields linked to a workflow. The result includes fields linked to the workflow. The user must have permission to access the requested resource.",
"operationId": "GetWorkflowCustomFieldDefinitionsByWorkflowId",
"parameters": [
{
@@ -47474,8 +53912,8 @@
"tags": [
"CustomFields"
],
- "summary": "Updates the order of a custom field definition linked to a workflow.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Updates custom fields.",
+ "description": "Updates custom fields. The custom field order is stored for the workflow.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PutWorkflowCustomFieldDefinitionByWorkflowIdAndCustomFieldDefinitionId",
"parameters": [
{
@@ -47554,7 +53992,7 @@
"Workflows"
],
"summary": "Deletes a workflow.",
- "description": "If the workflow is linked to projects or project templates they can either be unlinked\r\n or migrated to another workflow before the workflow is deleted.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "description": "Deletes a workflow. If the workflow is linked to projects or project templates they can either be unlinked or migrated to another workflow before the workflow is deleted.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostWorkflowDeleteByWorkflowId",
"parameters": [
{
@@ -47624,7 +54062,7 @@
"CustomFields"
],
"summary": "Links a custom field definition to a workflow.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "description": "Links a custom field definition to a workflow. The custom field is available on the workflow.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostWorkflowLinkCustomFieldDefinitionByWorkflowId",
"parameters": [
{
@@ -47693,8 +54131,8 @@
"tags": [
"Workflows"
],
- "summary": "Returns all project statuses of the workflow with the specified id.",
- "description": "The user must either have `project-master-data:read` permissions for a linked project, be assigned to a non-deleted task in a linked project, be allowed to see the external workflow, or have admin / `project-manage-config:read` permissions.",
+ "summary": "Returns project statuses of the workflow.",
+ "description": "Returns project statuses of the workflow. The result includes statuses configured for the workflow. The user must either have `project-master-data:read` permissions for a linked project, be assigned to a non-deleted task in a linked project, be allowed to see the external workflow, or have admin / `project-manage-config:read` permissions.",
"operationId": "GetWorkflowProjectStatusesByWorkflowId",
"parameters": [
{
@@ -47772,8 +54210,8 @@
"tags": [
"Workflows"
],
- "summary": "Creates a new project status for the specified workflow.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Creates a project status in a workflow.",
+ "description": "Creates a project status in a workflow. Linked projects can use this status.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostWorkflowProjectStatusesByWorkflowId",
"parameters": [
{
@@ -47849,8 +54287,8 @@
"tags": [
"Workflows"
],
- "summary": "Returns the project status of the workflow with the specified id.",
- "description": "The user must either have `project-master-data:read` permissions for a linked project, be assigned to a non-deleted task in a linked project, be allowed to see the external workflow, or have admin / `project-manage-config:read` permissions.",
+ "summary": "Returns the project status of the workflow.",
+ "description": "Returns the project status of the workflow. The result includes statuses configured for the workflow. The user must either have `project-master-data:read` permissions for a linked project, be assigned to a non-deleted task in a linked project, be allowed to see the external workflow, or have admin / `project-manage-config:read` permissions.",
"operationId": "GetWorkflowProjectStatusByWorkflowIdAndProjectStatusId",
"parameters": [
{
@@ -47922,8 +54360,8 @@
"tags": [
"Workflows"
],
- "summary": "Updates a project status for the specified workflow.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Updates a project status for the workflow.",
+ "description": "Updates a project status for the workflow. Linked projects use the submitted status settings.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PutWorkflowProjectStatusByWorkflowIdAndProjectStatusId",
"parameters": [
{
@@ -48009,7 +54447,7 @@
"Workflows"
],
"summary": "Deletes a project status from the workflow.",
- "description": "A workflow must always have at least one project status to ensure projects\r\n using this workflow have a valid status. If you attempt to delete the last\r\n remaining project status, this endpoint will return a BadRequest error.\r\n \r\n If any projects are currently using this status, you must provide a\r\n NewProjectStatusId in the request body to migrate those projects to a\r\n different status within the same workflow.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "description": "Deletes a project status from the workflow. A workflow must always have at least one project status to ensure projects using this workflow have a valid status. If you attempt to delete the last remaining project status, this endpoint will return a BadRequest error. If any projects are currently using this status, you must provide a NewProjectStatusId in the request body to migrate those projects to a different status within the same workflow.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostWorkflowProjectStatusDeleteByWorkflowIdAndProjectStatusId",
"parameters": [
{
@@ -48091,7 +54529,7 @@
"Workflows"
],
"summary": "Sets the archived status of a workflow.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "description": "Sets the archived status of a workflow. Archived workflows remain available for existing links.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostWorkflowSetArchivedByWorkflowId",
"parameters": [
{
@@ -48167,8 +54605,8 @@
"tags": [
"Workflows"
],
- "summary": "Returns all task statuses of the workflow with the specified id.",
- "description": "The user must either have `project-master-data:read` permissions for a linked project, be assigned to a non-deleted task in a linked project, be allowed to see the external workflow, or have admin / `project-manage-config:read` permissions.",
+ "summary": "Returns task statuses of the workflow.",
+ "description": "Returns task statuses of the workflow. The result includes statuses configured for the workflow. The user must either have `project-master-data:read` permissions for a linked project, be assigned to a non-deleted task in a linked project, be allowed to see the external workflow, or have admin / `project-manage-config:read` permissions.",
"operationId": "GetWorkflowTaskStatusesByWorkflowId",
"parameters": [
{
@@ -48246,8 +54684,8 @@
"tags": [
"Workflows"
],
- "summary": "Creates a new task status for the specified workflow.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Creates a task status for the specified workflow.",
+ "description": "Creates a task status for the specified workflow. Linked projects can use this status.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostWorkflowTaskStatusesByWorkflowId",
"parameters": [
{
@@ -48323,8 +54761,8 @@
"tags": [
"Workflows"
],
- "summary": "Returns the task status of the workflow with the specified id.",
- "description": "The user must either have `project-master-data:read` permissions for a linked project, be assigned to a non-deleted task in a linked project, be allowed to see the external workflow, or have admin / `project-manage-config:read` permissions.",
+ "summary": "Returns the task status of the workflow.",
+ "description": "Returns the task status of the workflow. The result includes statuses configured for the workflow. The user must either have `project-master-data:read` permissions for a linked project, be assigned to a non-deleted task in a linked project, be allowed to see the external workflow, or have admin / `project-manage-config:read` permissions.",
"operationId": "GetWorkflowTaskStatusByWorkflowIdAndTaskStatusId",
"parameters": [
{
@@ -48397,7 +54835,7 @@
"Workflows"
],
"summary": "Updates a task status for the specified workflow.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "description": "Updates a task status for the specified workflow. Linked projects use the submitted status settings.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PutWorkflowTaskStatusByWorkflowIdAndTaskStatusId",
"parameters": [
{
@@ -48482,8 +54920,8 @@
"tags": [
"Workflows"
],
- "summary": "Deletes the task status of the workflow with the specified id.",
- "description": "A workflow must always have at least one task status of type 'todo' and one\r\n of type 'done'. If you attempt to delete the last status of either type,\r\n this endpoint will return a BadRequest error.\r\n \r\n If any tasks are currently using this status, you must provide a\r\n NewTaskStatusId in the request body to migrate those tasks to a\r\n different status within the same workflow.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Deletes the task status of the workflow.",
+ "description": "Deletes the task status of the workflow. A workflow must always have at least one task status of type 'todo' and one of type 'done'. If you attempt to delete the last status of either type, this endpoint will return a BadRequest error. If any tasks are currently using this status, you must provide a NewTaskStatusId in the request body to migrate those tasks to a different status within the same workflow.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostWorkflowTaskStatusDeleteByWorkflowIdAndTaskStatusId",
"parameters": [
{
@@ -48564,8 +55002,8 @@
"tags": [
"CustomFields"
],
- "summary": "Unlinks a custom field definition from a workflow.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Unlinks a custom field from a workflow.",
+ "description": "Unlinks a custom field from a workflow. The custom field is no longer linked to the workflow.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostWorkflowUnlinkCustomFieldDefinitionByWorkflowId",
"parameters": [
{
@@ -48634,8 +55072,8 @@
"tags": [
"Workflows"
],
- "summary": "Updates the order of a project status in the workflow.",
- "description": "\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
+ "summary": "Updates project status order in a workflow.",
+ "description": "Updates project status order in a workflow. The selected status is moved within the workflow configuration.\r\n\r\nThe user must be an admin or have `project-manage-config:write` permissions.",
"operationId": "PostWorkflowUpdateProjectStatusOrderByWorkflowId",
"parameters": [
{
@@ -48704,8 +55142,8 @@
"tags": [
"WorkspaceAbsences"
],
- "summary": "Gets all workspace absences.",
- "description": "Gets all workspace absences. The result can be filtered, sorted, and paged.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
+ "summary": "Returns workspace absences.",
+ "description": "Returns workspace absences. Gets all workspace absences.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
"operationId": "GetWorkspaceAbsences",
"parameters": [
{
@@ -48756,7 +55194,7 @@
"WorkspaceAbsences"
],
"summary": "Creates a new workspace absence.",
- "description": "Creates a new workspace absence.\r\n A workspace absence is a kind of absence that is applied to all users in a workspace.\r\n It can be used to define special holidays (e.g: company offsite) that apply to all users in a workspace.\r\n It can be limited to a specific absence region, in which case only users in that region will be affected.\r\n\r\nThis endpoint requires the `Standard` plan or higher.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
+ "description": "Creates a new workspace absence. A workspace absence is a kind of absence that is applied to all users in a workspace. It can be used to define special holidays (e.g: company offsite) that apply to all users in a workspace. It can be limited to a specific absence region, in which case only users in that region will be affected.\r\n\r\nThis endpoint requires the `Standard` plan or higher.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
"operationId": "PostWorkspaceAbsence",
"requestBody": {
"description": "Workspace absence details including start date, end date, description, and optional region.",
@@ -48816,7 +55254,7 @@
"WorkspaceAbsences"
],
"summary": "Deletes a workspace absence.",
- "description": "Deletes a workspace absence.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
+ "description": "Deletes a workspace absence. The absence is removed from the workspace.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
"operationId": "DeleteWorkspaceAbsenceById",
"parameters": [
{
@@ -48865,7 +55303,7 @@
"WorkspaceAbsences"
],
"summary": "Updates a workspace absence.",
- "description": "Updates a workspace absence.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
+ "description": "Updates a workspace absence. The submitted dates and region determine when it applies.\r\n\r\nThe user must be an admin or have `user-planning-data:write` permissions.",
"operationId": "PutWorkspaceAbsenceById",
"parameters": [
{
@@ -49031,21 +55469,107 @@
"x-access": {
"any": "true"
}
+ },
+ "put": {
+ "tags": [
+ "Workspaces"
+ ],
+ "summary": "Updates the workspace with the specified id.",
+ "description": "\r\n\r\nThe user must be an admin or have `workspace-manage-config:write` permissions.",
+ "operationId": "PutWorkspacesByWorkspaceId",
+ "parameters": [
+ {
+ "name": "workspaceId",
+ "in": "path",
+ "description": "The workspace id.",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "requestBody": {
+ "description": "The new workspace values.",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/WorkspacePutForm"
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Workspace"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "admin": "true",
+ "workspace-manage-config": "write"
+ }
}
},
"/workspaces/{workspaceId}/externalfiles": {
"post": {
"tags": [
- "WorkspaceFiles"
+ "Workspace Files"
],
- "summary": "Endpoint to batch create external files without uploading.",
- "description": "Endpoint to create file infos with batch operation.\nCreated file infos don't have a version.\r\n\r\nAny authenticated user.",
- "operationId": "CreateExternalFiles",
+ "summary": "Creates external file references for the specified workspace.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostExternalFilesByWorkspaceNameAndWorkspaceId",
"parameters": [
{
"name": "workspaceId",
"in": "path",
- "description": "The id of the workspace.",
"required": true,
"schema": {
"type": "string",
@@ -49054,7 +55578,6 @@
}
],
"requestBody": {
- "description": "List of file forms.",
"content": {
"application/json": {
"schema": {
@@ -49063,16 +55586,9 @@
"$ref": "#/components/schemas/ExternalFileForm"
}
}
- },
- "application/*+json": {
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/ExternalFileForm"
- }
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -49080,7 +55596,30 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/FileInfo"
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/FileInfo"
+ }
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -49104,16 +55643,16 @@
"/workspaces/{workspaceId}/files": {
"delete": {
"tags": [
- "WorkspaceFiles"
+ "Workspace Files"
],
- "summary": "Deletes the files of the specified workspace.",
- "description": "Deletes the metadata and the different versions of the files.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteWorkspaceFiles",
+ "summary": "Deletes all files and versions for the specified workspace.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByWorkspaceNameAndWorkspaceId",
"parameters": [
{
"name": "workspaceId",
"in": "path",
- "description": "The id of the workspace.",
+ "description": "The workspace id.",
"required": true,
"schema": {
"type": "string",
@@ -49124,6 +55663,36 @@
"responses": {
"204": {
"description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -49142,16 +55711,15 @@
},
"get": {
"tags": [
- "WorkspaceFiles"
+ "Workspace Files"
],
- "summary": "Returns all files of the workspace with the specified id.",
- "description": "Returns all file metadata of the workspace with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetWorkspaceFiles",
+ "summary": "Returns all files of the specified workspace.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesByWorkspaceNameAndWorkspaceId",
"parameters": [
{
"name": "workspaceId",
"in": "path",
- "description": "The id of the workspace.",
"required": true,
"schema": {
"type": "string",
@@ -49184,6 +55752,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -49202,16 +55790,15 @@
},
"post": {
"tags": [
- "WorkspaceFiles"
+ "Workspace Files"
],
- "summary": "Creates a new workspace file for the workspace with the specified id..",
- "description": "Uploads a new workspace file for the workspace with the specified id.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateWorkspaceFile",
+ "summary": "Uploads a file for the specified workspace.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByWorkspaceNameAndWorkspaceId",
"parameters": [
{
"name": "workspaceId",
"in": "path",
- "description": "The id of the workspace.",
"required": true,
"schema": {
"type": "string",
@@ -49223,21 +55810,7 @@
"content": {
"multipart/form-data": {
"schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
+ "$ref": "#/components/schemas/FileUploadModel"
}
}
}
@@ -49254,7 +55827,24 @@
}
},
"400": {
- "description": "Bad Request"
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -49275,16 +55865,15 @@
"/workspaces/{workspaceId}/files/byurl": {
"post": {
"tags": [
- "WorkspaceFiles"
+ "Workspace Files"
],
- "summary": "Uploads a new file by providing an url.",
- "description": "The file needs to be a public available url.\nThe file size must not exceed 100MB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateWorkspaceFileByUrl",
+ "summary": "Uploads a file from a public URL for the specified workspace.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesByUrlByWorkspaceNameAndWorkspaceId",
"parameters": [
{
"name": "workspaceId",
"in": "path",
- "description": "The id of the workspace the file is linked to.",
"required": true,
"schema": {
"type": "string",
@@ -49293,19 +55882,14 @@
}
],
"requestBody": {
- "description": "The url, name and description of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FilePostForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FilePostForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -49317,6 +55901,26 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -49337,16 +55941,16 @@
"/workspaces/{workspaceId}/files/{fileId}": {
"delete": {
"tags": [
- "WorkspaceFiles"
+ "Workspace Files"
],
- "summary": "Deletes the workspace file with the specified id.",
- "description": "Deletes the metadata and the different versions of the file.\r\n\r\nAny authenticated user.",
- "operationId": "DeleteWorkspaceFile",
+ "summary": "Deletes the specified workspace file and its versions.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "DeleteFilesByWorkspaceNameAndWorkspaceIdAndFileId",
"parameters": [
{
"name": "workspaceId",
"in": "path",
- "description": "The id of the workspace.",
+ "description": "The workspace id.",
"required": true,
"schema": {
"type": "string",
@@ -49356,7 +55960,7 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
+ "description": "The file id.",
"required": true,
"schema": {
"type": "string",
@@ -49367,6 +55971,36 @@
"responses": {
"204": {
"description": "No Content"
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -49460,16 +56094,15 @@
},
"put": {
"tags": [
- "WorkspaceFiles"
+ "Workspace Files"
],
- "summary": "Updates the metadata of the workspace file with the specified id.",
- "description": "Updates the metadata of the workspace file with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "UpdateWorkspaceFile",
+ "summary": "Updates metadata for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PutFilesByWorkspaceNameAndWorkspaceIdAndFileId",
"parameters": [
{
"name": "workspaceId",
"in": "path",
- "description": "The id of the workspace.",
"required": true,
"schema": {
"type": "string",
@@ -49479,7 +56112,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -49488,19 +56120,14 @@
}
],
"requestBody": {
- "description": "The model to update the file with the specified id.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileInfoUpdateForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileInfoUpdateForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -49512,6 +56139,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -49532,16 +56189,15 @@
"/workspaces/{workspaceId}/files/{fileId}/changeentity": {
"post": {
"tags": [
- "WorkspaceFiles"
+ "Workspace Files"
],
- "summary": "Changes the workspace this file belongs to.",
- "description": "Changes the workspace this file belongs to.\nSwitch to the specified workspace or to a global file\nif the 'EntityId' of the model is set to null.\r\n\r\nAny authenticated user.",
- "operationId": "ChangeWorkspace",
+ "summary": "Changes the workspace that owns the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesChangeWorkspaceByWorkspaceNameAndWorkspaceIdAndFileId",
"parameters": [
{
"name": "workspaceId",
"in": "path",
- "description": "The id of the workspace.",
"required": true,
"schema": {
"type": "string",
@@ -49551,7 +56207,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -49560,19 +56215,14 @@
}
],
"requestBody": {
- "description": "The model to change the entity information of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileEntityForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileEntityForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -49584,6 +56234,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -49604,16 +56284,15 @@
"/workspaces/{workspaceId}/files/{fileId}/copy": {
"post": {
"tags": [
- "WorkspaceFiles"
+ "Workspace Files"
],
- "summary": "Copies the file to a new workspace.",
- "description": "Copies the file to a new workspace (meta and content).\r\n\r\nAny authenticated user.",
- "operationId": "CopyToWorkspace",
+ "summary": "Copies the specified file to another workspace.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesCopyByWorkspaceNameAndWorkspaceIdAndFileId",
"parameters": [
{
"name": "workspaceId",
"in": "path",
- "description": "The id of the workspace.",
"required": true,
"schema": {
"type": "string",
@@ -49623,7 +56302,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -49632,19 +56310,14 @@
}
],
"requestBody": {
- "description": "The model to change the entity information of the file.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileCopyForm"
}
- },
- "application/*+json": {
- "schema": {
- "$ref": "#/components/schemas/FileCopyForm"
- }
}
- }
+ },
+ "required": true
},
"responses": {
"200": {
@@ -49656,6 +56329,36 @@
}
}
}
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -49676,16 +56379,15 @@
"/workspaces/{workspaceId}/files/{fileId}/download": {
"get": {
"tags": [
- "WorkspaceFiles"
+ "Workspace Files"
],
- "summary": "Returns the content of the workspace file with the specified id.",
- "description": "Returns the content of the workspace file. Uses the latest file version.\nIf the workspace file is an image and the width and height are set,\nthe image will be resized before it is returned.\r\n\r\nAny authenticated user.",
- "operationId": "GetWorkspaceFileContent",
+ "summary": "Returns the latest content of the specified workspace file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesDownloadByWorkspaceNameAndWorkspaceIdAndFileId",
"parameters": [
{
"name": "workspaceId",
"in": "path",
- "description": "The id of the workspace.",
"required": true,
"schema": {
"type": "string",
@@ -49695,7 +56397,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -49705,7 +56406,6 @@
{
"name": "width",
"in": "query",
- "description": "Set width to resize.",
"schema": {
"type": "number",
"format": "double"
@@ -49714,7 +56414,6 @@
{
"name": "height",
"in": "query",
- "description": "Set height to resize.",
"schema": {
"type": "number",
"format": "double"
@@ -49723,7 +56422,6 @@
{
"name": "crop",
"in": "query",
- "description": "Whether to crop the image when resizing it.",
"schema": {
"type": "boolean"
}
@@ -49737,130 +56435,205 @@
"schema": {
"type": "string",
"format": "binary"
- }
- }
- }
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- }
- },
- "/workspaces/{workspaceId}/files/{fileId}/pdf": {
- "get": {
- "tags": [
- "WorkspaceFiles"
- ],
- "summary": "Returns the content of the file with the specified id as pdf.\ntype or conversion not possible.",
- "description": "Returns the content of the workspace file. Uses the latest file version.\r\n\r\nAny authenticated user.",
- "operationId": "GetWorkspaceFileContent",
- "parameters": [
- {
- "name": "workspaceId",
- "in": "path",
- "description": "The id of the workspace.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "inline",
- "in": "query",
- "description": "If inline is false, content-disposition header is attachment.",
- "schema": {
- "type": "boolean",
- "default": false
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "string",
- "format": "binary"
- }
- }
- }
- }
- },
- "security": [
- {
- "oauth2": [
- "full_access"
- ]
- }
- ],
- "x-api-versions": [
- "v1"
- ],
- "x-access": {
- "any": "true"
- }
- }
- },
- "/workspaces/{workspaceId}/files/{fileId}/shareurl": {
- "get": {
- "tags": [
- "WorkspaceFiles"
- ],
- "summary": "Returns an url to share the file.",
- "description": "Returns a url to share the file.\r\n\r\nAny authenticated user.",
- "operationId": "GetPublicToken",
- "parameters": [
- {
- "name": "workspaceId",
- "in": "path",
- "description": "The id of the workspace.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- },
- {
- "name": "fileId",
- "in": "path",
- "description": "The id of the file.",
- "required": true,
- "schema": {
- "type": "string",
- "format": "uuid"
- }
- }
- ],
- "responses": {
- "200": {
- "description": "OK",
- "content": {
- "application/json": {
- "schema": {
- "type": "string"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/workspaces/{workspaceId}/files/{fileId}/pdf": {
+ "get": {
+ "tags": [
+ "Workspace Files"
+ ],
+ "summary": "Returns the specified workspace file as PDF.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesPdfByWorkspaceNameAndWorkspaceIdAndFileId",
+ "parameters": [
+ {
+ "name": "workspaceId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "inline",
+ "in": "query",
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string",
+ "format": "binary"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "oauth2": [
+ "full_access"
+ ]
+ }
+ ],
+ "x-api-versions": [
+ "v1"
+ ],
+ "x-access": {
+ "any": "true"
+ }
+ }
+ },
+ "/workspaces/{workspaceId}/files/{fileId}/shareurl": {
+ "get": {
+ "tags": [
+ "Workspace Files"
+ ],
+ "summary": "Returns a public URL for the specified file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesShareUrlByWorkspaceNameAndWorkspaceIdAndFileId",
+ "parameters": [
+ {
+ "name": "workspaceId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "fileId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
}
}
}
@@ -49884,16 +56657,15 @@
"/workspaces/{workspaceId}/files/{fileId}/versions": {
"get": {
"tags": [
- "WorkspaceFiles"
+ "Workspace Files"
],
- "summary": "Returns all file versions of the specified workspace file.",
- "description": "Returns all file versions of the specified workspace file.\r\n\r\nAny authenticated user.",
- "operationId": "GetWorkspaceFileVersions",
+ "summary": "Returns all versions of the specified workspace file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsByWorkspaceNameAndWorkspaceIdAndFileId",
"parameters": [
{
"name": "workspaceId",
"in": "path",
- "description": "The id of the workspace.",
"required": true,
"schema": {
"type": "string",
@@ -49903,7 +56675,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -49936,6 +56707,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -49954,16 +56745,15 @@
},
"post": {
"tags": [
- "WorkspaceFiles"
+ "Workspace Files"
],
- "summary": "Uploads a new version of the workspace file with the specified id.",
- "description": "Uploads a new version of an workspace file.\nUse this to upload a file as a form value along with the basic file meta data.\nThe file size must not exceed 1GB.\r\n\r\nAny authenticated user.",
- "operationId": "CreateWorkspaceFileVersion",
+ "summary": "Uploads a new version of the specified workspace file.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "PostFilesVersionsByWorkspaceNameAndWorkspaceIdAndFileId",
"parameters": [
{
"name": "workspaceId",
"in": "path",
- "description": "The id of the workspace.",
"required": true,
"schema": {
"type": "string",
@@ -49973,7 +56763,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -49985,21 +56774,7 @@
"content": {
"multipart/form-data": {
"schema": {
- "required": [
- "File"
- ],
- "type": "object",
- "properties": {
- "File": {
- "type": "string",
- "format": "binary"
- }
- }
- },
- "encoding": {
- "File": {
- "style": "form"
- }
+ "$ref": "#/components/schemas/FileUploadModel"
}
}
}
@@ -50016,7 +56791,34 @@
}
},
"400": {
- "description": "Bad Request"
+ "description": "Bad Request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -50124,16 +56926,15 @@
"/workspaces/{workspaceId}/files/{fileId}/versions/{versionId}/download": {
"get": {
"tags": [
- "WorkspaceFiles"
+ "Workspace Files"
],
- "summary": "Returns the content of the workspace file version with the specified id.",
- "description": "Returns the content of the workspace file version with the specified id.\r\n\r\nAny authenticated user.",
- "operationId": "GetWorkspaceFileVersionContent",
+ "summary": "Returns the content of the specified workspace file version.",
+ "description": "\r\n\r\nAny authenticated user.",
+ "operationId": "GetFilesVersionsDownloadByWorkspaceNameAndWorkspaceIdAndFileIdAndVersionId",
"parameters": [
{
"name": "workspaceId",
"in": "path",
- "description": "The id of the workspace.",
"required": true,
"schema": {
"type": "string",
@@ -50143,7 +56944,6 @@
{
"name": "fileId",
"in": "path",
- "description": "The id of the file.",
"required": true,
"schema": {
"type": "string",
@@ -50153,7 +56953,6 @@
{
"name": "versionId",
"in": "path",
- "description": "The id of the file version.",
"required": true,
"schema": {
"type": "string",
@@ -50172,6 +56971,26 @@
}
}
}
+ },
+ "401": {
+ "description": "Unauthorized",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Not Found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ErrorResponse"
+ }
+ }
+ }
}
},
"security": [
@@ -50234,6 +57053,44 @@
"additionalProperties": false,
"description": "Configures an agent's connector connection."
},
+ "AgentConnectorLinkResponseModel": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The linked connector identifier.",
+ "format": "uuid",
+ "example": "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
+ },
+ "name": {
+ "type": "string",
+ "description": "The connector name.",
+ "nullable": true,
+ "example": "Google Drive"
+ },
+ "status": {
+ "type": "string",
+ "description": "Always pending in this shared response. It does not indicate whether an account is connected.\nRead the agent's configuration endpoint for the current user's connection status.",
+ "nullable": true,
+ "example": "pending"
+ },
+ "connectionMode": {
+ "type": "string",
+ "description": "How the agent chooses an account: actingUser lets each user supply their own;\nspecificConnection uses the editor-provided account for everyone.",
+ "nullable": true,
+ "example": "specificConnection"
+ },
+ "connectionId": {
+ "type": "string",
+ "description": "The editor-provided account id in specificConnection mode; otherwise null.",
+ "format": "uuid",
+ "nullable": true,
+ "example": "6ba7b811-9dad-11d1-80b4-00c04fd430c8"
+ }
+ },
+ "additionalProperties": false,
+ "description": "A connector linked to a custom agent, with settings shared by everyone who uses the agent."
+ },
"AgentConnectorUserConnectionRequestModel": {
"required": [
"connectionId"
@@ -51505,7 +58362,7 @@
"connectors": {
"type": "array",
"items": {
- "$ref": "#/components/schemas/ConnectorResponseModel"
+ "$ref": "#/components/schemas/AgentConnectorLinkResponseModel"
},
"description": "The linked connectors.",
"nullable": true
@@ -51606,7 +58463,7 @@
"type": "string",
"description": "The workspace-wide access level.",
"nullable": true,
- "example": "manage"
+ "example": null
},
"accessLevel": {
"enum": [
@@ -51761,7 +58618,7 @@
"items": {
"$ref": "#/components/schemas/AgentThreadAttachmentRequestModel"
},
- "description": "Up to 20 distinct files attached to this message. Upload new files before submitting their identifiers.",
+ "description": "Up to 20 distinct files attached to this message. Each file can contain up to 20 MiB.\nUpload new files before submitting their identifiers.",
"nullable": true
},
"modelProvider": {
@@ -53403,7 +60260,7 @@
"items": {
"$ref": "#/components/schemas/AgentThreadAttachmentRequestModel"
},
- "description": "Up to 20 distinct files attached to this message. Upload new files before submitting their identifiers.",
+ "description": "Up to 20 distinct files attached to this message. Each file can contain up to 20 MiB.\nUpload new files before submitting their identifiers.",
"nullable": true
},
"modelProvider": {
@@ -53842,7 +60699,7 @@
"items": {
"$ref": "#/components/schemas/AgentThreadAttachmentRequestModel"
},
- "description": "Up to 20 distinct files attached to this message. Upload new files before submitting their identifiers.",
+ "description": "Up to 20 distinct files attached to this message. Each file can contain up to 20 MiB.\nUpload new files before submitting their identifiers.",
"nullable": true
},
"modelProvider": {
@@ -53970,6 +60827,12 @@
"description": "The serialized tool result.",
"nullable": true,
"example": "{\"status\":\"completed\"}"
+ },
+ "chartBlock": {
+ "type": "string",
+ "description": "The serialized native chart block produced by code mode, when present.",
+ "nullable": true,
+ "example": "{\"type\":\"chart\",\"version\":1,\"spec\":{\"style\":\"bar\",\"series\":[{\"name\":\"Revenue\",\"values\":[1,2]}]}}"
}
},
"additionalProperties": false,
@@ -54429,6 +61292,21 @@
"ConnectionResponseModel": {
"type": "object",
"properties": {
+ "canUse": {
+ "type": "boolean",
+ "description": "Whether normal ownership or sharing grants use of this connection and its owner is not suspended.\nAdministrator status does not grant use.",
+ "example": true
+ },
+ "canDelete": {
+ "type": "boolean",
+ "description": "Whether the requesting user can delete this connection.",
+ "example": true
+ },
+ "isSuspended": {
+ "type": "boolean",
+ "description": "Whether this connection is suspended because its owner is inactive.",
+ "example": false
+ },
"id": {
"type": "string",
"description": "The connection identifier.",
@@ -54706,6 +61584,12 @@
"ConnectorPresetResponseModel": {
"type": "object",
"properties": {
+ "hasConfiguration": {
+ "type": "boolean",
+ "description": "Whether setup accepts endpoint values or custom OAuth client settings.",
+ "readOnly": true,
+ "example": false
+ },
"key": {
"type": "string",
"description": "The stable connector preset key.",
@@ -54825,6 +61709,18 @@
"format": "uuid",
"example": "3d844c62-7410-4df9-a5b2-78805c0ee260"
},
+ "ownerUserId": {
+ "type": "string",
+ "description": "The connector owner, or null for a preset without configuration. CreatedBy remains audit history.",
+ "format": "uuid",
+ "nullable": true,
+ "example": "9ad63972-4396-4b0b-9e7d-40b852cdebf8"
+ },
+ "canDelete": {
+ "type": "boolean",
+ "description": "Whether the requesting user can delete the connector and all its connections.",
+ "example": true
+ },
"name": {
"type": "string",
"description": "The connector display name.",
@@ -55079,12 +61975,15 @@
"description": "Represents a request to store a new agent memory."
},
"CreateAgentRequestModel": {
+ "required": [
+ "name"
+ ],
"type": "object",
"properties": {
"name": {
+ "minLength": 1,
"type": "string",
"description": "The name shown to users.",
- "nullable": true,
"example": "Client Status Reporter"
},
"description": {
@@ -55380,7 +62279,8 @@
},
"isSharedWithWorkspace": {
"type": "boolean",
- "description": "Whether the connector is shared with the workspace.",
+ "description": "Whether the connector is shared with the workspace. When omitted, the user's contribution permission sets the default.",
+ "nullable": true,
"example": true
}
},
@@ -55394,11 +62294,13 @@
"type": "object",
"properties": {
"key": {
+ "maxLength": 100,
"type": "string",
"description": "The stable key used to reference the skill.",
"nullable": true
},
"name": {
+ "maxLength": 255,
"type": "string",
"description": "The name shown in the skill library.",
"nullable": true
@@ -55427,19 +62329,101 @@
"additionalProperties": false,
"description": "Configures a new reusable skill."
},
+ "CustomAgentConfigurationResponseModel": {
+ "type": "object",
+ "properties": {
+ "agentId": {
+ "type": "string",
+ "description": "The custom agent identifier.",
+ "format": "uuid",
+ "example": "23e68187-91d6-4f7e-8d31-e3f2c60d7427"
+ },
+ "enabledConnectorIds": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "format": "uuid"
+ },
+ "description": "The ids of connectors linked to this agent. A linked connector may still need a working account.",
+ "nullable": true
+ },
+ "enabledSkillIds": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "format": "uuid"
+ },
+ "description": "The ids of skills linked to this agent.",
+ "nullable": true
+ },
+ "connectorConnections": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/CustomAgentConnectorConfigurationModel"
+ },
+ "description": "One entry per linked connector, with this user's account choice, its source, and its availability.",
+ "nullable": true
+ }
+ },
+ "additionalProperties": false,
+ "description": "The current user's configuration for one custom agent: linked capabilities and an account choice for each connector.\nReading this response does not save any choices."
+ },
+ "CustomAgentConnectorConfigurationModel": {
+ "type": "object",
+ "properties": {
+ "connectorId": {
+ "type": "string",
+ "description": "The linked connector identifier.",
+ "format": "uuid",
+ "example": "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
+ },
+ "selectedConnectionId": {
+ "type": "string",
+ "description": "The account this user explicitly chose for this agent and connector; null when no choice is saved.",
+ "format": "uuid",
+ "nullable": true,
+ "example": "6ba7b811-9dad-11d1-80b4-00c04fd430c8"
+ },
+ "defaultConnectionId": {
+ "type": "string",
+ "description": "The account the agent would try to use after applying the selection rules; null when none is selected.\nThis may be a saved choice, an awork Agent default, or an editor-provided account.\nCheck Status before treating the account as available.",
+ "format": "uuid",
+ "nullable": true,
+ "example": "6ba7b811-9dad-11d1-80b4-00c04fd430c8"
+ },
+ "connectionSource": {
+ "type": "string",
+ "description": "Why the account was selected: userSelection is this user's saved agent choice;\npersonalDefault is their enabled awork Agent default; specificConnection is the editor-provided account;\nnone means no account was selected.",
+ "nullable": true,
+ "example": "userSelection"
+ },
+ "status": {
+ "type": "string",
+ "description": "The account's availability: pending, connected, authRequired, error, or suspended.\nMissing means no account could be selected. Inaccessible means the user cannot use the connector or account.",
+ "nullable": true,
+ "example": "connected"
+ }
+ },
+ "additionalProperties": false,
+ "description": "The account one connector would use for the current user, and whether that account is available."
+ },
"DisableModelsRequestModel": {
+ "required": [
+ "resourceKey",
+ "resourceType"
+ ],
"type": "object",
"properties": {
"resourceType": {
+ "minLength": 1,
"type": "string",
"description": "The resource type: model, vendor, or region.",
- "nullable": true,
"example": "model"
},
"resourceKey": {
+ "minLength": 1,
"type": "string",
"description": "The resource key.",
- "nullable": true,
"example": "openai:gpt-5.6-terra"
},
"replacements": {
@@ -56397,6 +63381,32 @@
"additionalProperties": false,
"description": "Sets the language and description for an agent preset."
},
+ "PublishSkillPresetDefinitionRequestModel": {
+ "required": [
+ "detailedDescription",
+ "language"
+ ],
+ "type": "object",
+ "properties": {
+ "language": {
+ "minLength": 1,
+ "enum": [
+ "en",
+ "de"
+ ],
+ "type": "string",
+ "description": "The language to assign to the published content."
+ },
+ "detailedDescription": {
+ "maxLength": 25000,
+ "minLength": 1,
+ "type": "string",
+ "description": "The detailed catalog description in Markdown."
+ }
+ },
+ "additionalProperties": false,
+ "description": "Defines the preset metadata for one source skill publication."
+ },
"RememberAgentSessionMessageRequestModel": {
"type": "object",
"properties": {
@@ -56410,6 +63420,9 @@
"description": "Represents a request to remember an existing session message."
},
"SetAgentArchivedRequestModel": {
+ "required": [
+ "isArchived"
+ ],
"type": "object",
"properties": {
"isArchived": {
@@ -56436,6 +63449,9 @@
"description": "Represents a request to enable or disable an agent schedule."
},
"SetModelAutoEnableRequestModel": {
+ "required": [
+ "enabled"
+ ],
"type": "object",
"properties": {
"enabled": {
@@ -56448,6 +63464,9 @@
"description": "Represents a workspace automatic-enablement change."
},
"SetModelPresetRequestModel": {
+ "required": [
+ "isAuto"
+ ],
"type": "object",
"properties": {
"isAuto": {
@@ -56497,6 +63516,7 @@
"type": "object",
"properties": {
"envVarName": {
+ "maxLength": 100,
"minLength": 1,
"type": "string",
"description": "The environment variable name the value belongs to."
@@ -56614,6 +63634,152 @@
"additionalProperties": false,
"description": "Represents a bundled skill file in API responses."
},
+ "SkillPresetCatalogResponseModel": {
+ "type": "object",
+ "properties": {
+ "sourceSkillId": {
+ "type": "string",
+ "description": "The source skill ID that identifies the preset across releases.",
+ "format": "uuid",
+ "example": "123e4567-e89b-12d3-a456-426614174000"
+ },
+ "versionNumber": {
+ "type": "integer",
+ "description": "The release number available for import.",
+ "format": "int32"
+ },
+ "language": {
+ "type": "string",
+ "description": "The language of the published content.",
+ "nullable": true
+ },
+ "name": {
+ "type": "string",
+ "description": "The skill name shown in the preset catalog.",
+ "nullable": true
+ },
+ "description": {
+ "type": "string",
+ "description": "The short description shown in preset summaries.",
+ "nullable": true
+ },
+ "detailedDescription": {
+ "type": "string",
+ "description": "The detailed catalog description in Markdown.",
+ "nullable": true
+ }
+ },
+ "additionalProperties": false,
+ "description": "Represents the customer-safe description of a published skill preset."
+ },
+ "SkillPresetDefinitionResponseModel": {
+ "type": "object",
+ "properties": {
+ "sourceSkillId": {
+ "type": "string",
+ "description": "The source skill, which also identifies the preset.",
+ "format": "uuid",
+ "example": "123e4567-e89b-12d3-a456-426614174000"
+ },
+ "sourceSkillName": {
+ "type": "string",
+ "description": "The source skill name from the published snapshot.",
+ "nullable": true
+ },
+ "language": {
+ "type": "string",
+ "description": "The published language.",
+ "nullable": true
+ },
+ "detailedDescription": {
+ "type": "string",
+ "description": "The detailed catalog description.",
+ "nullable": true
+ },
+ "isPublished": {
+ "type": "boolean",
+ "description": "Whether the preset is currently visible to customers."
+ },
+ "latestPublishedVersionNumber": {
+ "type": "integer",
+ "description": "The latest product-facing version number.",
+ "format": "int32"
+ },
+ "nextVersionNumber": {
+ "type": "integer",
+ "description": "The version number assigned by the next publication.",
+ "format": "int32"
+ },
+ "versions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/components/schemas/SkillPresetVersionSummaryResponseModel"
+ },
+ "description": "The bounded product-facing release history.",
+ "nullable": true
+ }
+ },
+ "additionalProperties": false,
+ "description": "Represents one preset in the internal authoring catalog."
+ },
+ "SkillPresetSourceSkillResponseModel": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the skill used to publish this preset.",
+ "format": "uuid",
+ "example": "123e4567-e89b-12d3-a456-426614174000"
+ },
+ "name": {
+ "type": "string",
+ "description": "The current source skill name.",
+ "nullable": true
+ },
+ "key": {
+ "type": "string",
+ "description": "The current source skill runtime key.",
+ "nullable": true
+ },
+ "description": {
+ "type": "string",
+ "description": "The current source skill description.",
+ "nullable": true
+ },
+ "instructions": {
+ "type": "string",
+ "description": "The current source skill instructions.",
+ "nullable": true
+ }
+ },
+ "additionalProperties": false,
+ "description": "Represents a reusable skill that is available for preset publication."
+ },
+ "SkillPresetVersionSummaryResponseModel": {
+ "type": "object",
+ "properties": {
+ "versionNumber": {
+ "type": "integer",
+ "description": "The product-facing version number.",
+ "format": "int32"
+ },
+ "publishedOn": {
+ "type": "string",
+ "description": "When this version was published.",
+ "format": "date-time"
+ },
+ "isPublished": {
+ "type": "boolean",
+ "description": "Whether this version remains published."
+ },
+ "isActive": {
+ "type": "boolean",
+ "description": "Whether this version is the active customer-facing version."
+ }
+ },
+ "additionalProperties": false,
+ "description": "Represents one product release marker in UIC."
+ },
"SkillResponseModel": {
"type": "object",
"properties": {
@@ -56742,11 +63908,13 @@
"type": "object",
"properties": {
"envVarName": {
+ "maxLength": 100,
"minLength": 1,
"type": "string",
"description": "The environment variable name the secret is injected as."
},
"description": {
+ "maxLength": 500,
"type": "string",
"description": "The description shown to users when providing the secret.",
"nullable": true
@@ -57209,7 +64377,7 @@
],
"type": "string",
"description": "The access level granted to every member of the workspace.",
- "example": "manage"
+ "example": "none"
},
"modelProvider": {
"type": "string",
@@ -57429,11 +64597,13 @@
"type": "object",
"properties": {
"key": {
+ "maxLength": 100,
"type": "string",
"description": "The stable key used to reference the skill.",
"nullable": true
},
"name": {
+ "maxLength": 255,
"type": "string",
"description": "The name shown in the skill library.",
"nullable": true
@@ -58964,6 +66134,18 @@
},
"additionalProperties": false
},
+ "PasswordForm": {
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string",
+ "description": "The password to validate.",
+ "nullable": true,
+ "example": "AC0mplexP@ssw0rd"
+ }
+ },
+ "additionalProperties": false
+ },
"PasswordResetModel": {
"type": "object",
"properties": {
@@ -76405,6 +83587,12 @@
"UserPermission": {
"type": "object",
"properties": {
+ "aku": {
+ "type": "string",
+ "format": "uuid",
+ "nullable": true,
+ "example": "123e4567-e89b-12d3-a456-426614174000"
+ },
"uid": {
"type": "string",
"format": "uuid",
@@ -80033,21 +87221,21 @@
"plannedDuration": {
"type": "integer",
"description": "The planned duration of this project in seconds",
- "format": "int32",
+ "format": "int64",
"nullable": true,
"example": 28800
},
"timeBudget": {
"type": "integer",
"description": "The remaining time budget for this project",
- "format": "int32",
+ "format": "int64",
"nullable": true,
"example": 14400
},
"trackedDuration": {
"type": "integer",
"description": "The total time tracked for this project (in seconds)",
- "format": "int32",
+ "format": "int64",
"nullable": true,
"example": 14400
},
@@ -80143,12 +87331,12 @@
},
"trackedDuration": {
"type": "integer",
- "format": "int32",
+ "format": "int64",
"nullable": true
},
"plannedDuration": {
"type": "integer",
- "format": "int32",
+ "format": "int64",
"nullable": true
},
"startOn": {
@@ -84393,6 +91581,14 @@
}
],
"tags": [
+ {
+ "name": "Agent Schedules",
+ "description": "Create, manage, preview, and run schedules for accessible agents."
+ },
+ {
+ "name": "Agent Skills",
+ "description": "Create and manage reusable skills, sharing, support files, access requirements, and secret values."
+ },
{
"name": "AgentRuntime",
"description": "Sandbox-backed generic agent runtime endpoints."
@@ -84623,23 +91819,21 @@
"description": "Use those endpoints to define workspace wide absences. A WorkspaceAbsence is an absence that is applied to all the users of the workspace. \n It is useful for defining company specific events/holidays, for example."
},
{
- "name": "Agent Thread Files",
- "description": "Endpoints for files attached to agent threads."
+ "name": "Agent Files"
},
{
- "name": "AgentFiles"
+ "name": "Agent Thread Files",
+ "description": "Endpoints for files attached to agent threads."
},
{
"name": "Company Files"
},
- {
- "name": "CompanyFiles"
- },
{
"name": "Document Files"
},
{
- "name": "DocumentFiles"
+ "name": "Entity Files",
+ "description": "Endpoints for files attached to entities."
},
{
"name": "FileUpload",
@@ -84656,15 +91850,9 @@
{
"name": "Project Files"
},
- {
- "name": "ProjectFiles"
- },
{
"name": "ProjectTemplate Files"
},
- {
- "name": "ProjectTemplateFiles"
- },
{
"name": "SharedFiles",
"description": "These file endpoints are used to get shared files and public profile images."
@@ -84672,15 +91860,9 @@
{
"name": "Task Files"
},
- {
- "name": "TaskFiles"
- },
{
"name": "TaskTemplate Files"
},
- {
- "name": "TaskTemplateFiles"
- },
{
"name": "Temporary Files",
"description": "The temporary file endpoints allow you to upload and update files\n that do not have a connection to any entity. The files can be linked to an entity later.\n They don't show up in awork before they are either linked to a file or marked as a global file.\n Only the user who uploaded the file has access to the temporary file."
@@ -84688,15 +91870,9 @@
{
"name": "User Files"
},
- {
- "name": "UserFiles"
- },
{
"name": "Workspace Files"
},
- {
- "name": "WorkspaceFiles"
- },
{
"name": "Project Automations",
"description": "Endpoints to manage automations and actions scoped to projects."
diff --git a/fern/apis/v2/openapi/openapi.json b/fern/apis/v2/openapi/openapi.json
index 37910e8..58cd5c2 100644
--- a/fern/apis/v2/openapi/openapi.json
+++ b/fern/apis/v2/openapi/openapi.json
@@ -412,8 +412,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Returns all time entries.",
- "description": "Returns all time entries.\r\n Depending on the time entry, the calling users has to have several permissions to get the time entry.\r\n No permissions are required if the calling user is owner of this time entry (this includes external timetrackings from connected projects).\r\n If the calling user is not the creator of the time entry and the time entry is connected to a project, 'write'\r\n permissions on the 'project-timetracking' feature are necessary (this does NOT include external timetrackings from connected projects).\r\n\r\nAny authenticated user.",
+ "summary": "Returns time entries in the workspace.",
+ "description": "Returns time entries in the workspace. The result includes entries the current user is allowed to view.\r\n The user must own the time entry or have `project-timetracking:read` permission for connected project entries.",
"operationId": "GetTimeEntriesV2",
"parameters": [
{
@@ -537,8 +537,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Retrieves all time entries with a simplified model based on the grouping parameter.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns simplified time entries.",
+ "description": "Returns simplified time entries grouped by the requested property when one is supplied.\r\n The user must have permission to view the returned time entries.",
"operationId": "GetTimeEntriesSimplifiedV2",
"parameters": [
{
@@ -597,8 +597,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Get a time entry by id.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Returns the specified time entry.",
+ "description": "Returns the specified time entry when it is visible to the current user.\r\n The user must own the time entry or have permission to view it.",
"operationId": "GetTimeEntryByIdV2",
"parameters": [
{
@@ -730,8 +730,8 @@
"tags": [
"TimeEntries"
],
- "summary": "Handles removing all breaks from a time entry, effectively resuming the timer.",
- "description": "\r\n\r\nAny authenticated user.",
+ "summary": "Removes breaks from the specified time entry.",
+ "description": "Removes all breaks from the specified time entry and resumes its timer.\r\n The user must have permission to edit the time entry.",
"operationId": "PostTimeEntryRemoveBreaksV2",
"parameters": [
{
diff --git a/fern/docs.yml b/fern/docs.yml
index 5b07412..705b3a8 100644
--- a/fern/docs.yml
+++ b/fern/docs.yml
@@ -65,6 +65,8 @@ navigation:
icon: robot
- custom agents
- agent files
+ - agent skills
+ - agent schedules
- agent threads
- agent thread files
- agent runtime