diff --git a/articles/LCPublicAPI/api/Public-API.v1.json b/articles/LCPublicAPI/api/Public-API.v1.json index fbb31b0..8c89a52 100644 --- a/articles/LCPublicAPI/api/Public-API.v1.json +++ b/articles/LCPublicAPI/api/Public-API.v1.json @@ -4,7 +4,12 @@ "title": "Trados Cloud Platform API", "description": "The Trados Cloud Platform API", "version": "1.0", - "contact": {} + "contact": {}, + "x-extensions": { + "x-default-field": { + "description": "When true, this property is included in the response by default — even when the `fields` query parameter is omitted. Properties without this annotation are only returned when explicitly requested via `fields`. The `id` property is always returned regardless." + } + } }, "servers": [ { @@ -93,6 +98,10 @@ "name": "Quote", "description": "Quote" }, + { + "name": "Quote Template", + "description": "Quote Template" + }, { "name": "Rate Limits", "description": "Rate Limits" @@ -169,6 +178,10 @@ "name": "User", "description": "User" }, + { + "name": "Vendor", + "description": "Vendor." + }, { "name": "Workflow", "description": "Workflow" @@ -1322,6 +1335,9 @@ }, { "$ref": "#/components/parameters/fields" + }, + { + "$ref": "#/components/parameters/resourceType" } ], "tags": [ @@ -11086,13 +11102,13 @@ "operationId": "CreateProjectTemplate" } }, - "/rate-limits": { + "/quote-templates": { "get": { "tags": [ - "Rate Limits" + "Quote Template" ], - "summary": "List Rate Limits", - "description": "Retrieves a list of all rate limits applicable for an account.", + "summary": "List Quote Templates", + "description": "Retrieves a list of all the quote templates in an account.", "parameters": [ { "$ref": "#/components/parameters/Authorization" @@ -11105,6 +11121,18 @@ }, { "$ref": "#/components/parameters/skip" + }, + { + "$ref": "#/components/parameters/location" + }, + { + "$ref": "#/components/parameters/location-strategy" + }, + { + "$ref": "#/components/parameters/sort" + }, + { + "$ref": "#/components/parameters/fields" } ], "responses": { @@ -11113,7 +11141,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/list-rate-limits-response" + "$ref": "#/components/schemas/list-quote-templates-response" } } }, @@ -11124,22 +11152,7 @@ } }, "400": { - "description": "Error codes:\n* “invalid”: Invalid input in the query parameter mentioned in the “name” field on the error response.", - "headers": { - "X-LC-TraceId": { - "$ref": "#/components/headers/X-LC-TraceId" - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/error-response" - } - } - } - }, - "401": { - "description": "The user could not be identified.", + "description": "Error codes:\n* \"invalid\": Invalid input in the query parameter mentioned in the \"name\" field on the error response.", "content": { "application/json": { "schema": { @@ -11152,42 +11165,13 @@ "$ref": "#/components/headers/X-LC-TraceId" } } - } - }, - "operationId": "ListRateLimits" - } - }, - "/roles": { - "get": { - "tags": [ - "Role and Permission" - ], - "summary": "List Roles", - "description": "Retrieves a list of all roles available for the account.", - "parameters": [ - { - "$ref": "#/components/parameters/Authorization" - }, - { - "$ref": "#/components/parameters/X-LC-Tenant" - }, - { - "$ref": "#/components/parameters/fields" }, - { - "$ref": "#/components/parameters/top" - }, - { - "$ref": "#/components/parameters/skip" - } - ], - "responses": { - "200": { - "description": "", + "401": { + "description": "The user could not be identified.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/list-roles-response" + "$ref": "#/components/schemas/error-response" } } }, @@ -11197,8 +11181,8 @@ } } }, - "401": { - "description": "The user could not be identified.", + "416": { + "description": "Error codes:\n* \"requestedRangeNotSatisfiable\": The requested entity or one of its dependencies attempted to retrieve data outside the allowed range. Skip+Top might be outside the supported range.", "content": { "application/json": { "schema": { @@ -11213,14 +11197,16 @@ } } }, - "operationId": "ListRoles" - }, - "post": { + "operationId": "ListQuoteTemplates" + } + }, + "/quote-templates/{quoteTemplateId}": { + "get": { "tags": [ - "Role and Permission" + "Quote Template" ], - "summary": "Create Role", - "description": "Creates a custom role.\n\nSee [List Permissions](#/operations/ListPermissions) for available permission names.", + "summary": "Get Quote Template", + "description": "Retrieves a quote template by identifier.", "parameters": [ { "$ref": "#/components/parameters/Authorization" @@ -11232,22 +11218,13 @@ "$ref": "#/components/parameters/fields" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/role-create-request" - } - } - } - }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/role" + "$ref": "#/components/schemas/project-quote-template" } } }, @@ -11258,7 +11235,7 @@ } }, "400": { - "description": "Error codes:\n* “invalid”: Invalid input in the request mentioned in the “name” field on the error response.\n* \"minSize\": Minimum size exceeded for the value mentioned in the \"name\" field on the error response.\n* \"maxSize\": Maximum size exceeded for the value mentioned in the \"name\" field on the error response.\n* \"missing\": Missing required field for the value mentioned in the \"name\" field on the error response.", + "description": "Error codes:\n* \"invalid\": Invalid input in the query parameter mentioned in the \"name\" field on the error response.", "content": { "application/json": { "schema": { @@ -11288,17 +11265,22 @@ } }, "403": { - "description": "Error codes: \n* \"forbidden\": the authenticated user is not allowed to create the resource.", + "description": "Error codes:\n* \"forbidden\": The authenticated user is not allowed to read the quote template.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error-response" } } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } } }, - "409": { - "description": "Error codes:\n* “duplicate”: Role with the same name already exists.", + "404": { + "description": "Error codes:\n* \"notFound\": The resource could not be found by identifier.", "content": { "application/json": { "schema": { @@ -11313,24 +11295,27 @@ } } }, - "operationId": "CreateRole" - } - }, - "/roles/{roleId}": { + "operationId": "GetQuoteTemplate" + }, "parameters": [ { + "name": "quoteTemplateId", + "in": "path", + "required": true, "schema": { "type": "string" }, - "name": "roleId", - "in": "path", - "required": true, - "description": "The role identifier." + "description": "The identifier of the quote template." } - ], + ] + }, + "/rate-limits": { "get": { - "summary": "Get Role", - "description": "Retrieves a role by identifier.", + "tags": [ + "Rate Limits" + ], + "summary": "List Rate Limits", + "description": "Retrieves a list of all rate limits applicable for an account.", "parameters": [ { "$ref": "#/components/parameters/Authorization" @@ -11339,16 +11324,19 @@ "$ref": "#/components/parameters/X-LC-Tenant" }, { - "$ref": "#/components/parameters/fields" + "$ref": "#/components/parameters/top" + }, + { + "$ref": "#/components/parameters/skip" } ], "responses": { "200": { - "description": "OK", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/role" + "$ref": "#/components/schemas/list-rate-limits-response" } } }, @@ -11359,18 +11347,18 @@ } }, "400": { - "description": "Error codes:\n* “invalid”: Invalid input in the query parameter mentioned in the “name” field on the error response.\n* “empty”: Empty input for the “roleId” path parameter variable.", + "description": "Error codes:\n* “invalid”: Invalid input in the query parameter mentioned in the “name” field on the error response.", + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error-response" } } - }, - "headers": { - "X-LC-TraceId": { - "$ref": "#/components/headers/X-LC-TraceId" - } } }, "401": { @@ -11387,13 +11375,42 @@ "$ref": "#/components/headers/X-LC-TraceId" } } + } + }, + "operationId": "ListRateLimits" + } + }, + "/roles": { + "get": { + "tags": [ + "Role and Permission" + ], + "summary": "List Roles", + "description": "Retrieves a list of all roles available for the account.", + "parameters": [ + { + "$ref": "#/components/parameters/Authorization" }, - "403": { - "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to read the role.", + { + "$ref": "#/components/parameters/X-LC-Tenant" + }, + { + "$ref": "#/components/parameters/fields" + }, + { + "$ref": "#/components/parameters/top" + }, + { + "$ref": "#/components/parameters/skip" + } + ], + "responses": { + "200": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/error-response" + "$ref": "#/components/schemas/list-roles-response" } } }, @@ -11403,8 +11420,8 @@ } } }, - "404": { - "description": "Error codes:\n* \"notFound\": the role could not be found by identifier.", + "401": { + "description": "The user could not be identified.", "content": { "application/json": { "schema": { @@ -11419,46 +11436,41 @@ } } }, - "operationId": "GetRole", + "operationId": "ListRoles" + }, + "post": { "tags": [ "Role and Permission" - ] - }, - "put": { - "summary": "Update Role", - "description": "Updates a role by identifier. Pay special attention to how [updating](../docs/Updating-data-with-PUT.html) works.\n\nSee [List Permissions](#/operations/ListPermissions) for available permission names.\n\n> Note: Only custom roles can be updated. Provisioned roles cannot be modified.", + ], + "summary": "Create Role", + "description": "Creates a custom role.\n\nSee [List Permissions](#/operations/ListPermissions) for available permission names.", "parameters": [ { "$ref": "#/components/parameters/Authorization" }, { "$ref": "#/components/parameters/X-LC-Tenant" + }, + { + "$ref": "#/components/parameters/fields" } ], "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/role-update-request" + "$ref": "#/components/schemas/role-create-request" } } } }, "responses": { - "204": { - "description": "No Content", - "headers": { - "X-LC-TraceId": { - "$ref": "#/components/headers/X-LC-TraceId" - } - } - }, - "400": { - "description": "Error codes:\n* \"invalid\": Invalid input in the query parameter mentioned in the \"name\" field on the error response, or provisioned roles cannot be updated.\n* \"empty\": Empty input for the \"roleId\" path parameter variable.\n* \"minSize\": Minimum size exceeded for the value mentioned in the \"name\" field on the error response.\n* \"maxSize\": Maximum size exceeded for the value mentioned in the \"name\" field on the error response.\n* \"missing\": Missing required field for the value mentioned in the \"name\" field on the error response.", + "200": { + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/error-response" + "$ref": "#/components/schemas/role" } } }, @@ -11468,8 +11480,8 @@ } } }, - "401": { - "description": "The user could not be identified.", + "400": { + "description": "Error codes:\n* “invalid”: Invalid input in the request mentioned in the “name” field on the error response.\n* \"minSize\": Minimum size exceeded for the value mentioned in the \"name\" field on the error response.\n* \"maxSize\": Maximum size exceeded for the value mentioned in the \"name\" field on the error response.\n* \"missing\": Missing required field for the value mentioned in the \"name\" field on the error response.", "content": { "application/json": { "schema": { @@ -11483,8 +11495,8 @@ } } }, - "403": { - "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to update the role.", + "401": { + "description": "The user could not be identified.", "content": { "application/json": { "schema": { @@ -11498,23 +11510,18 @@ } } }, - "404": { - "description": "Error codes:\n* \"notFound\": the role could not be found by identifier.", + "403": { + "description": "Error codes: \n* \"forbidden\": the authenticated user is not allowed to create the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/error-response" } } - }, - "headers": { - "X-LC-TraceId": { - "$ref": "#/components/headers/X-LC-TraceId" - } } }, "409": { - "description": "Error codes:\n* \"duplicate\" Role with the same name already exists.", + "description": "Error codes:\n* “duplicate”: Role with the same name already exists.", "content": { "application/json": { "schema": { @@ -11529,25 +11536,45 @@ } } }, - "operationId": "UpdateRole", - "tags": [ - "Role and Permission" - ] - }, - "delete": { - "summary": "Delete Role", - "description": "Deletes a role by identifier.\n\n> Note: Only custom roles can be deleted. Provisioned roles cannot be removed.", + "operationId": "CreateRole" + } + }, + "/roles/{roleId}": { + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "roleId", + "in": "path", + "required": true, + "description": "The role identifier." + } + ], + "get": { + "summary": "Get Role", + "description": "Retrieves a role by identifier.", "parameters": [ { "$ref": "#/components/parameters/Authorization" }, { "$ref": "#/components/parameters/X-LC-Tenant" + }, + { + "$ref": "#/components/parameters/fields" } ], "responses": { - "204": { - "description": "No Content", + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/role" + } + } + }, "headers": { "X-LC-TraceId": { "$ref": "#/components/headers/X-LC-TraceId" @@ -11555,7 +11582,203 @@ } }, "400": { - "description": "Error codes:\n* \"invalid\": Invalid input in the query parameter mentioned in the \"name\" field on the error response, or provisioned roles cannot be deleted.\n* \"empty\": Empty input for the \"roleId\" path parameter variable.", + "description": "Error codes:\n* “invalid”: Invalid input in the query parameter mentioned in the “name” field on the error response.\n* “empty”: Empty input for the “roleId” path parameter variable.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "401": { + "description": "The user could not be identified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "403": { + "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to read the role.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "404": { + "description": "Error codes:\n* \"notFound\": the role could not be found by identifier.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + } + }, + "operationId": "GetRole", + "tags": [ + "Role and Permission" + ] + }, + "put": { + "summary": "Update Role", + "description": "Updates a role by identifier. Pay special attention to how [updating](../docs/Updating-data-with-PUT.html) works.\n\nSee [List Permissions](#/operations/ListPermissions) for available permission names.\n\n> Note: Only custom roles can be updated. Provisioned roles cannot be modified.", + "parameters": [ + { + "$ref": "#/components/parameters/Authorization" + }, + { + "$ref": "#/components/parameters/X-LC-Tenant" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/role-update-request" + } + } + } + }, + "responses": { + "204": { + "description": "No Content", + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "400": { + "description": "Error codes:\n* \"invalid\": Invalid input in the query parameter mentioned in the \"name\" field on the error response, or provisioned roles cannot be updated.\n* \"empty\": Empty input for the \"roleId\" path parameter variable.\n* \"minSize\": Minimum size exceeded for the value mentioned in the \"name\" field on the error response.\n* \"maxSize\": Maximum size exceeded for the value mentioned in the \"name\" field on the error response.\n* \"missing\": Missing required field for the value mentioned in the \"name\" field on the error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "401": { + "description": "The user could not be identified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "403": { + "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to update the role.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "404": { + "description": "Error codes:\n* \"notFound\": the role could not be found by identifier.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "409": { + "description": "Error codes:\n* \"duplicate\" Role with the same name already exists.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + } + }, + "operationId": "UpdateRole", + "tags": [ + "Role and Permission" + ] + }, + "delete": { + "summary": "Delete Role", + "description": "Deletes a role by identifier.\n\n> Note: Only custom roles can be deleted. Provisioned roles cannot be removed.", + "parameters": [ + { + "$ref": "#/components/parameters/Authorization" + }, + { + "$ref": "#/components/parameters/X-LC-Tenant" + } + ], + "responses": { + "204": { + "description": "No Content", + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "400": { + "description": "Error codes:\n* \"invalid\": Invalid input in the query parameter mentioned in the \"name\" field on the error response, or provisioned roles cannot be deleted.\n* \"empty\": Empty input for the \"roleId\" path parameter variable.", "content": { "application/json": { "schema": { @@ -19094,6 +19317,9 @@ }, { "$ref": "#/components/parameters/fields" + }, + { + "$ref": "#/components/parameters/email" } ], "responses": { @@ -19656,19 +19882,29 @@ } ] }, - "/workflows/{workflowId}": { + "/vendors": { "get": { + "operationId": "ListVendors", + "summary": "List Vendors", + "description": "Retrieves a list of all the vendors in an account.", "tags": [ - "Workflow" + "Vendor" ], - "summary": "Get Workflow", - "description": "Retrieves a workflow by identifier.", "parameters": [ + { + "$ref": "#/components/parameters/X-LC-Tenant" + }, { "$ref": "#/components/parameters/Authorization" }, { - "$ref": "#/components/parameters/X-LC-Tenant" + "$ref": "#/components/parameters/top" + }, + { + "$ref": "#/components/parameters/skip" + }, + { + "$ref": "#/components/parameters/sort" }, { "$ref": "#/components/parameters/fields" @@ -19680,7 +19916,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/workflow" + "$ref": "#/components/schemas/list-vendors-response" } } }, @@ -19691,7 +19927,7 @@ } }, "400": { - "description": "Error codes:\n* “invalid”: Invalid input in the query parameter mentioned in the “name” field on the error response.", + "description": "Error codes:\n* \"invalid\": Invalid input in the query parameter mentioned in the \"name\" field on the error response.", "content": { "application/json": { "schema": { @@ -19720,18 +19956,8 @@ } } }, - "403": { - "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to read the workflow.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/error-response" - } - } - } - }, - "404": { - "description": "Error codes:\n* \"notFound\": the resource could not be found by identifier.", + "416": { + "description": "Error codes:\n* \"requestedRangeNotSatisfiable\": The requested entity or one of its dependencies attempted to retrieve data outside the allowed range. Skip+Top might be outside the supported range.", "content": { "application/json": { "schema": { @@ -19745,44 +19971,73 @@ } } } - }, - "operationId": "GetWorkflow" + } }, - "put": { + "post": { + "operationId": "CreateVendor", + "summary": "Create Vendor", + "description": "Creates a new vendor organization. A vendor represents an external LSP that can be assigned translation tasks. The key contact provided will become the primary point of contact for the vendor.\n\nCreating a vendor automatically provisions a dedicated folder and a `VendorProjectManager` group within the account hierarchy.\n\n**Managing vendor members:** Users can be added to a vendor by inviting them via the [Create User](#/operations/CreateUser) endpoint, specifying the auto-created `VendorProjectManager` group as one of the `groups` in the request. Users can be removed from the vendor by removing them from that group using the [Update Group](#/operations/UpdateGroup) or [Update User](#/operations/UpdateUser) endpoints.", "tags": [ - "Workflow" + "Vendor" ], - "summary": "Update Workflow", - "description": "Updates the workflow in terms of: name, description, task configuration (and its details), and task type configuration values (`configurationValues`). Observe the rules of [JSON Merge Patch Semantics](https://tools.ietf.org/html/rfc7386).", "parameters": [ + { + "$ref": "#/components/parameters/X-LC-Tenant" + }, { "$ref": "#/components/parameters/Authorization" }, { - "$ref": "#/components/parameters/X-LC-Tenant" + "$ref": "#/components/parameters/fields" } ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/workflow-update-request" + "$ref": "#/components/schemas/vendor-create-request" + }, + "examples": { + "selfManagedVendor": { + "summary": "Self-managed vendor with quote template and custom fields", + "value": { + "name": "Lionbridge", + "description": "Leading global LSP specializing in translation and localization.", + "keyContact": { + "firstName": "John", + "lastName": "Doe", + "email": "john.doe@lionbridge.com" + }, + "selfManaged": true, + "quoteTemplateId": "ab49e078-8ea1-45fc-b469-475c38a1d20b", + "customFields": [ + { + "key": "vendor_tier", + "value": "premium" + } + ] + } + }, + "managedVendorMinimal": { + "summary": "Externally managed vendor, no quote template", + "value": { + "name": "TransPerfect", + "keyContact": { + "firstName": "Jane", + "lastName": "Smith", + "email": "jane.smith@transperfect.com" + }, + "selfManaged": false + } + } } } - }, - "required": true + } }, "responses": { - "204": { - "description": "No Content", - "headers": { - "X-LC-TraceId": { - "$ref": "#/components/headers/X-LC-TraceId" - } - } - }, - "400": { - "description": "Error codes:\n* “invalid”: Invalid input in the body parameter mentioned in the “name” field on the error response.\n* \"empty\": Empty input in the body parameter mentioned in the \"name\" field on the error response.\n* \"limit.exceeded\": a maximum number of users per task was assigned\n", + "201": { + "description": "Vendor created successfully.", "headers": { "X-LC-TraceId": { "$ref": "#/components/headers/X-LC-TraceId" @@ -19791,30 +20046,96 @@ "content": { "application/json": { "schema": { - "type": "object", - "$ref": "#/components/schemas/error-response" + "$ref": "#/components/schemas/vendor" + }, + "examples": { + "selfManagedVendor": { + "summary": "Self-managed vendor with quote template", + "value": { + "id": "69e693d00000000000000000", + "name": "Lionbridge", + "description": "Leading global LSP specializing in translation and localization.", + "keyContact": { + "id": "69e693d00000000000000001", + "firstName": "John", + "lastName": "Doe", + "email": "john.doe@lionbridge.com" + }, + "vendorFolder": { + "id": "a91ec1bdc70be40ad55bfb34d76c0026", + "name": "vendors" + }, + "groups": [ + { + "id": "69e693d00000000000000002", + "name": "VendorProjectManager" + } + ], + "selfManaged": true, + "quoteTemplate": { + "id": "ab49e078-8ea1-45fc-b469-475c38a1d20b", + "name": "Standard Quote Template" + } + } + }, + "managedVendorMinimal": { + "summary": "Externally managed vendor, no quote template", + "value": { + "id": "69e693d00000000000000003", + "name": "TransPerfect", + "keyContact": { + "id": "69e693d00000000000000004", + "firstName": "Jane", + "lastName": "Smith", + "email": "jane.smith@transperfect.com" + }, + "vendorFolder": { + "id": "b82fd2cec81cf51be66agc45e87d1137", + "name": "vendors" + }, + "groups": [ + { + "id": "69e693d00000000000000005", + "name": "VendorProjectManager" + } + ], + "selfManaged": false + } + } } } + }, + "links": { + "GetVendorById": { + "operationId": "GetVendor", + "parameters": { + "vendorId": "$response.body#/id" + }, + "description": "Use the returned vendor `id` to retrieve the full vendor resource." + }, + "CreateVendorOrderTemplate": { + "operationId": "CreateVendorOrderTemplate", + "description": "Associate this vendor with a vendor order template to enable task assignment." + } } }, - "401": { - "description": "The user could not be identified.", - "headers": { - "X-LC-TraceId": { - "$ref": "#/components/headers/X-LC-TraceId" - } - }, + "400": { + "description": "Error codes:\n* \"invalid\": Invalid input in the field mentioned in the \"name\" field on the error response.\n* \"empty\": Empty input in the body parameter mentioned in the \"name\" field on the error response.\n* \"minSize\": Minimum size exceeded for the value mentioned in the \"name\" field on the error response.\n* \"maxSize\": Maximum size exceeded for the value mentioned in the \"name\" field on the error response.\n* \"missing\": Missing required field for the value mentioned in the \"name\" field on the error response.", "content": { "application/json": { "schema": { - "type": "object", "$ref": "#/components/schemas/error-response" } } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } } }, - "403": { - "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to update the Workflow.", + "401": { + "description": "The user could not be identified.", "content": { "application/json": { "schema": { @@ -19828,8 +20149,8 @@ } } }, - "404": { - "description": "Error codes:\n* \"notFound\": the Workflow could not be found by identifier.", + "403": { + "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to create vendor order templates.", "content": { "application/json": { "schema": { @@ -19844,58 +20165,37 @@ } }, "409": { - "description": "Error codes:\r\n* \"projectPlanChanged\": The associated project has already been changed at the level of `projectPlan.taskConfigurations`. Updating the workflow is no longer possible; the project should be updated to set the relevant `projectPlan.taskConfigurations` fields. \r\n", - "headers": { - "X-LC-TraceId": { - "$ref": "#/components/headers/X-LC-TraceId" - } - }, + "description": "Error codes:\n* “duplicate”: duplicate value for the field mentioned in the error details.", "content": { "application/json": { "schema": { - "type": "object", "$ref": "#/components/schemas/error-response" } } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } } } - }, - "operationId": "UpdateWorkflow" - }, - "parameters": [ - { - "$ref": "#/components/parameters/workflowId" } - ] + } }, - "/workflows": { + "/vendors/{vendorId}": { "get": { + "operationId": "GetVendor", + "summary": "Get Vendor", + "description": "Retrieves a vendor by identifier.\n\nUse the `fields` query parameter to include optional nested resources such as `members`. The `members` field returns the users in the vendor's `VendorProjectManager` group. To manage vendor members, use the [Create User](#/operations/CreateUser), [Update User](#/operations/UpdateUser), or [Update Group](#/operations/UpdateGroup) endpoints.", "tags": [ - "Workflow" + "Vendor" ], - "summary": "List Workflows", - "description": "Retrieves all the workflows in an account.", "parameters": [ - { - "$ref": "#/components/parameters/Authorization" - }, { "$ref": "#/components/parameters/X-LC-Tenant" }, { - "$ref": "#/components/parameters/top" - }, - { - "$ref": "#/components/parameters/skip" - }, - { - "$ref": "#/components/parameters/location" - }, - { - "$ref": "#/components/parameters/location-strategy" - }, - { - "$ref": "#/components/parameters/sort" + "$ref": "#/components/parameters/Authorization" }, { "$ref": "#/components/parameters/fields" @@ -19907,7 +20207,70 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/list-workflows-response" + "$ref": "#/components/schemas/vendor" + }, + "examples": { + "selfManagedVendor": { + "summary": "Self-managed vendor with quote template and members", + "value": { + "id": "69e693d00000000000000000", + "name": "Lionbridge", + "description": "Leading global LSP specializing in translation and localization.", + "keyContact": { + "id": "69e693d00000000000000001", + "firstName": "John", + "lastName": "Doe", + "email": "john.doe@lionbridge.com" + }, + "vendorFolder": { + "id": "a91ec1bdc70be40ad55bfb34d76c0026", + "name": "vendors" + }, + "groups": [ + { + "id": "69e693d00000000000000002", + "name": "VendorProjectManager" + } + ], + "selfManaged": true, + "quoteTemplate": { + "id": "ab49e078-8ea1-45fc-b469-475c38a1d20b", + "name": "Standard Quote Template" + }, + "members": [ + { + "id": "69e693d00000000000000010", + "firstName": "Alice", + "lastName": "Translator", + "email": "alice@lionbridge.com" + } + ] + } + }, + "externallyManagedVendor": { + "summary": "Externally managed vendor, no quote template", + "value": { + "id": "69e693d00000000000000003", + "name": "TransPerfect", + "keyContact": { + "id": "69e693d00000000000000004", + "firstName": "Jane", + "lastName": "Smith", + "email": "jane.smith@transperfect.com" + }, + "vendorFolder": { + "id": "b82fd2cec81cf51be66agc45e87d1137", + "name": "vendors" + }, + "groups": [ + { + "id": "69e693d00000000000000005", + "name": "VendorProjectManager" + } + ], + "selfManaged": false + } + } } } }, @@ -19918,7 +20281,1142 @@ } }, "400": { - "description": "Error codes:\n* “invalid”: Invalid input in the query parameter mentioned in the “name” field on the error response.", + "description": "Error codes:\n* \"invalid\": Invalid input in the query parameter mentioned in the \"name\" field on the error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "401": { + "description": "The user could not be identified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "403": { + "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to read the vendor.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "404": { + "description": "Error codes:\n* \"notFound\": the vendor could not be found by identifier.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + } + } + }, + "put": { + "operationId": "UpdateVendor", + "summary": "Update Vendor", + "description": "Updates a vendor by identifier. Only fields included in the request body are updated. We recommend reading [Updating data with PUT](../docs/Updating-data-with-PUT.html) before using this endpoint.\n\n**Member management is not part of this endpoint.** To add a user to a vendor, invite them via the [Create User](#/operations/CreateUser) endpoint specifying the vendor's `VendorProjectManager` group. To remove a user from the vendor, remove them from that group using the [Update Group](#/operations/UpdateGroup) or [Update User](#/operations/UpdateUser) endpoints.", + "tags": [ + "Vendor" + ], + "parameters": [ + { + "$ref": "#/components/parameters/X-LC-Tenant" + }, + { + "$ref": "#/components/parameters/Authorization" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/vendor-update-request" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "400": { + "description": "Error codes:\n* \"invalid\": Invalid input in the field mentioned in the \"name\" field on the error response.\n* \"maxSize\": Maximum size exceeded for the value mentioned in the \"name\" field on the error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "401": { + "description": "The user could not be identified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "403": { + "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to update the vendor.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "404": { + "description": "Error codes:\n* \"notFound\": the vendor could not be found by identifier.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "409": { + "description": "Error codes:\n* \"duplicate\": duplicate value for the field mentioned in the error details.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + } + } + } + }, + "delete": { + "operationId": "DeleteVendor", + "summary": "Delete Vendor", + "description": "Deletes a vendor by identifier.", + "tags": [ + "Vendor" + ], + "parameters": [ + { + "$ref": "#/components/parameters/X-LC-Tenant" + }, + { + "$ref": "#/components/parameters/Authorization" + } + ], + "responses": { + "204": { + "description": "No Content", + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "401": { + "description": "The user could not be identified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "403": { + "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to delete the vendor.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "404": { + "description": "Error codes:\n* \"notFound\": the vendor could not be found by identifier.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "409": { + "description": "Error codes:\n* \"conflict\": the vendor cannot be deleted because its folder contains resources that must be removed first. The error details describe which resources are blocking deletion.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + } + } + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vendorId", + "in": "path", + "required": true, + "description": "The vendor identifier." + } + ] + }, + "/vendors/{vendorId}/order-templates": { + "get": { + "operationId": "ListVendorOrderTemplates", + "summary": "List Vendor Order Templates", + "description": "Retrieves a list of vendor order templates for the specified vendor.", + "tags": [ + "Vendor" + ], + "parameters": [ + { + "$ref": "#/components/parameters/X-LC-Tenant" + }, + { + "$ref": "#/components/parameters/Authorization" + }, + { + "$ref": "#/components/parameters/top" + }, + { + "$ref": "#/components/parameters/skip" + }, + { + "$ref": "#/components/parameters/sort" + }, + { + "$ref": "#/components/parameters/fields" + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/list-vendor-order-templates-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "400": { + "description": "Error codes:\n* \"invalid\": Invalid input in the query parameter mentioned in the \"name\" field on the error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "401": { + "description": "The user could not be identified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "403": { + "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to list vendor order templates for this vendor.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "404": { + "description": "Error codes:\n* \"notFound\": the vendor could not be found by identifier.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "416": { + "description": "Error codes:\n* \"requestedRangeNotSatisfiable\": The requested entity or one of its dependencies attempted to retrieve data outside the allowed range. Skip+Top might be outside the supported range.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + } + } + }, + "post": { + "operationId": "CreateVendorOrderTemplate", + "summary": "Create Vendor Order Template", + "description": "Creates a new vendor order template for the specified vendor.\n\nFor more information on creating vendor order templates, see [Creating order templates for vendors](https://docs.rws.com/en-US/trados-enterprise-accelerate-791595/creating-order-templates-for-vendors-708439).", + "tags": [ + "Vendor" + ], + "parameters": [ + { + "$ref": "#/components/parameters/X-LC-Tenant" + }, + { + "$ref": "#/components/parameters/Authorization" + }, + { + "$ref": "#/components/parameters/fields" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/vendor-order-template-create-request" + }, + "examples": { + "singleLanguagePair": { + "summary": "Single language pair, with one manager and one assignee, wait for all files (default delay)", + "value": { + "name": "EN-FR Translation", + "pricingModelId": "pm-abc123", + "quoteConfiguration": { "behaviour": "waitForAllFiles" }, + "languagePairs": [ + { "source": "en-US", "target": "fr-FR" } + ], + "assignments": [ + { + "languagePair": { "source": "en-US", "target": "fr-FR" }, + "managers": [ { "type": "user", "id": "69e693d00000000000000010" } ], + "assignees": [ { "type": "user", "id": "69e693d00000000000000011" } ] + } + ] + } + }, + "multipleLanguagePairs": { + "summary": "Multiple language pairs with group assignees and wait for all files with custom holding delay", + "value": { + "name": "Multilingual Package", + "description": "Template covering EN to DE and FR with a group-based assignee.", + "pricingModelId": "pm-def456", + "quoteConfiguration": { "behaviour": "waitForAllFiles", "holdingDelay": 120 }, + "allowQuoteEditing": true, + "serviceTypes": [ "st-translation-001" ], + "languagePairs": [ + { "source": "en-US", "target": "de-DE" }, + { "source": "en-US", "target": "fr-FR" } + ], + "assignments": [ + { + "languagePair": { "source": "en-US", "target": "de-DE" }, + "managers": [ { "type": "user", "id": "69e693d00000000000000010" } ], + "assignees": [ { "type": "group", "id": "69e693d00000000000000002" } ] + }, + { + "languagePair": { "source": "en-US", "target": "fr-FR" }, + "managers": [ { "type": "user", "id": "69e693d00000000000000010" } ], + "assignees": [ { "type": "user", "id": "69e693d00000000000000011" } ] + } + ] + } + } + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Vendor Order Template created successfully.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/vendor-order-template-response" + }, + "examples": { + "singleLanguagePair": { + "summary": "Single language pair template", + "value": { + "id": "vot-abc123", + "name": "EN-FR Translation", + "quoteConfiguration": { "behaviour": "waitForAllFiles" }, + "allowQuoteEditing": false, + "pricingModel": { "id": "pm-abc123", "name": "Standard Rate" }, + "languagePairs": [ + { "source": "en-US", "target": "fr-FR" } + ], + "assignments": [ + { + "languagePair": { "source": "en-US", "target": "fr-FR" }, + "managers": [ { "type": "user", "id": "69e693d00000000000000010" } ], + "assignees": [ { "type": "user", "id": "69e693d00000000000000011" } ] + } + ] + } + } + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "400": { + "description": "Error codes:\n* \"invalid\": Invalid input in the field mentioned in the \"name\" field on the error response.\n* \"empty\": Empty input in the body parameter mentioned in the \"name\" field on the error response.\n* \"minSize\": Minimum size exceeded for the value mentioned in the \"name\" field on the error response.\n* \"maxSize\": Maximum size exceeded for the value mentioned in the \"name\" field on the error response. \n", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "401": { + "description": "The user could not be identified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "403": { + "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to create vendor order templates.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "404": { + "description": "Error codes:\n* \"notFound\": the vendor could not be found by identifier.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + } + } + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vendorId", + "in": "path", + "required": true, + "description": "The vendor identifier." + } + ] + }, + "/vendors/{vendorId}/order-templates/{orderTemplateId}": { + "get": { + "operationId": "GetVendorOrderTemplate", + "summary": "Get Vendor Order Template", + "description": "Retrieves a vendor order template by identifier.", + "tags": [ + "Vendor" + ], + "parameters": [ + { + "$ref": "#/components/parameters/X-LC-Tenant" + }, + { + "$ref": "#/components/parameters/Authorization" + }, + { + "$ref": "#/components/parameters/fields" + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/vendor-order-template-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "400": { + "description": "Error codes:\n* \"invalid\": Invalid input in the field mentioned in the \"name\" field on the error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "401": { + "description": "The user could not be identified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "403": { + "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to read the vendor order template.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "404": { + "description": "Error codes:\n* \"notFound\": the vendor order template could not be found by identifier.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + } + } + }, + "put": { + "operationId": "UpdateVendorOrderTemplate", + "summary": "Update Vendor Order Template", + "description": "Updates a vendor order template by identifier. Only fields included in the request body are updated. We recommend reading [Updating data with PUT](../docs/Updating-data-with-PUT.html) before using this endpoint.", + "tags": [ + "Vendor" + ], + "parameters": [ + { + "$ref": "#/components/parameters/X-LC-Tenant" + }, + { + "$ref": "#/components/parameters/Authorization" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/vendor-order-template-update-request" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "400": { + "description": "Error codes:\n* \"invalid\": Invalid input in the field mentioned in the \"name\" field on the error response.\n* \"empty\": Empty input in the body parameter mentioned in the \"name\" field on the error response.\n* \"minSize\": Minimum size exceeded for the value mentioned in the \"name\" field on the error response.\n* \"maxSize\": Maximum size exceeded for the value mentioned in the \"name\" field on the error response. \n", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "401": { + "description": "The user could not be identified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "403": { + "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to update the vendor order template.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "404": { + "description": "Error codes:\n* \"notFound\": the vendor order template could not be found by identifier.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + } + } + }, + "delete": { + "operationId": "DeleteVendorOrderTemplate", + "summary": "Delete Vendor Order Template", + "description": "Deletes a vendor order template by identifier.", + "tags": [ + "Vendor" + ], + "parameters": [ + { + "$ref": "#/components/parameters/X-LC-Tenant" + }, + { + "$ref": "#/components/parameters/Authorization" + } + ], + "responses": { + "204": { + "description": "No Content", + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "400": { + "description": "Error codes:\n* \"invalid\": Invalid input in the field mentioned in the \"name\" field on the error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "401": { + "description": "The user could not be identified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "403": { + "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to delete the vendor order template.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "404": { + "description": "Error codes:\n* \"notFound\": the vendor order template could not be found by identifier.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + } + } + }, + "parameters": [ + { + "schema": { + "type": "string" + }, + "name": "vendorId", + "in": "path", + "required": true, + "description": "The vendor identifier." + }, + { + "schema": { + "type": "string" + }, + "name": "orderTemplateId", + "in": "path", + "required": true, + "description": "The vendor order template identifier." + } + ] + }, + "/workflows/{workflowId}": { + "get": { + "tags": [ + "Workflow" + ], + "summary": "Get Workflow", + "description": "Retrieves a workflow by identifier.", + "parameters": [ + { + "$ref": "#/components/parameters/Authorization" + }, + { + "$ref": "#/components/parameters/X-LC-Tenant" + }, + { + "$ref": "#/components/parameters/fields" + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/workflow" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "400": { + "description": "Error codes:\n* “invalid”: Invalid input in the query parameter mentioned in the “name” field on the error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "401": { + "description": "The user could not be identified.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "403": { + "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to read the workflow.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + } + }, + "404": { + "description": "Error codes:\n* \"notFound\": the resource could not be found by identifier.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + } + }, + "operationId": "GetWorkflow" + }, + "put": { + "tags": [ + "Workflow" + ], + "summary": "Update Workflow", + "description": "Updates the workflow in terms of: name, description, task configuration (and its details), and task type configuration values (`configurationValues`). Observe the rules of [JSON Merge Patch Semantics](https://tools.ietf.org/html/rfc7386).", + "parameters": [ + { + "$ref": "#/components/parameters/Authorization" + }, + { + "$ref": "#/components/parameters/X-LC-Tenant" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/workflow-update-request" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "400": { + "description": "Error codes:\n* “invalid”: Invalid input in the body parameter mentioned in the “name” field on the error response.\n* \"empty\": Empty input in the body parameter mentioned in the \"name\" field on the error response.\n* \"limit.exceeded\": a maximum number of users per task was assigned\n", + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "$ref": "#/components/schemas/error-response" + } + } + } + }, + "401": { + "description": "The user could not be identified.", + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "$ref": "#/components/schemas/error-response" + } + } + } + }, + "403": { + "description": "Error codes:\n* \"forbidden\": the authenticated user is not allowed to update the Workflow.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "404": { + "description": "Error codes:\n* \"notFound\": the Workflow could not be found by identifier.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/error-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "409": { + "description": "Error codes:\r\n* \"projectPlanChanged\": The associated project has already been changed at the level of `projectPlan.taskConfigurations`. Updating the workflow is no longer possible; the project should be updated to set the relevant `projectPlan.taskConfigurations` fields. \r\n", + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "$ref": "#/components/schemas/error-response" + } + } + } + } + }, + "operationId": "UpdateWorkflow" + }, + "parameters": [ + { + "$ref": "#/components/parameters/workflowId" + } + ] + }, + "/workflows": { + "get": { + "tags": [ + "Workflow" + ], + "summary": "List Workflows", + "description": "Retrieves all the workflows in an account.", + "parameters": [ + { + "$ref": "#/components/parameters/Authorization" + }, + { + "$ref": "#/components/parameters/X-LC-Tenant" + }, + { + "$ref": "#/components/parameters/top" + }, + { + "$ref": "#/components/parameters/skip" + }, + { + "$ref": "#/components/parameters/location" + }, + { + "$ref": "#/components/parameters/location-strategy" + }, + { + "$ref": "#/components/parameters/sort" + }, + { + "$ref": "#/components/parameters/fields" + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/list-workflows-response" + } + } + }, + "headers": { + "X-LC-TraceId": { + "$ref": "#/components/headers/X-LC-TraceId" + } + } + }, + "400": { + "description": "Error codes:\n* “invalid”: Invalid input in the query parameter mentioned in the “name” field on the error response.", "content": { "application/json": { "schema": { @@ -22319,6 +23817,44 @@ ], "description": "A response for the List Customers endpoint." }, + "list-vendors-response": { + "title": "List Vendors Response", + "type": "object", + "properties": { + "items": { + "type": "array", + "description": "The list of vendors.", + "items": { + "$ref": "#/components/schemas/vendor" + } + }, + "itemCount": { + "type": "integer", + "description": "The number of items returned in this response." + } + }, + "required": ["items", "itemCount"], + "description": "A response for the List Vendors endpoint." + }, + "list-quote-templates-response": { + "title": "List Quote Templates Response", + "type": "object", + "properties": { + "itemCount": { + "type": "integer", + "description": "The total number of quote templates matching the query." + }, + "items": { + "type": "array", + "description": "The list of quote templates.", + "items": { + "$ref": "#/components/schemas/project-quote-template" + } + } + }, + "required": ["itemCount", "items"], + "description": "A response for the List Quote Templates endpoint." + }, "list-custom-field-definitions-response": { "title": "List Custom Field Definitions Response", "type": "object", @@ -24572,6 +26108,28 @@ } } }, + "project-batch-tasks-settings": { + "title": "Project Batch Tasks Settings", + "type": "object", + "description": "Project Batch Tasks Settings", + "properties": { + "preProcessing": { + "$ref": "#/components/schemas/project-batch-pre-processing-settings", + "description": "Pre-Processing Settings" + } + } + }, + "project-batch-pre-processing-settings": { + "title": "Project Batch Pre-Processing Settings", + "type": "object", + "properties": { + "reportCrossFileRepetition": { + "type": "boolean", + "default": true, + "description": "