{"note":"OpenAPI conversion -- returning structured metadata","name":"xtrf-eu","description":"XTRF Home Portal API","version":"2.0","base_url":"https://presentation.s.xtrf.eu/home-api","endpoints":341,"raw":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api XTRF Home Portal API\n@base https://presentation.s.xtrf.eu/home-api\n@version 2.0\n@auth ApiKey X-AUTH-ACCESS-TOKEN in header\n@endpoints 341\n@hint download_for_search\n@toc browser(26), accounting(29), customers(38), files(1), license(2), macros(1), confidential-groups(9), projectGroups(9), providers(16), reports(7), services(2), settings(1), subscription(4), system(4), users(10), dictionaries(12), jobs(27), projects(67), quotes(61), tasks(15)\n\n@group browser\n@endpoint GET /browser/csv\n@desc Searches for data (ie. customer, task, etc) and returns it in a CSV form.\n@optional {viewId: int(int64) # view's identifier, separator: str # csv field separator, secondarySeparator: str # secondary csv field separator, additionalOrder: str}\n\n@endpoint GET /browser\n@desc Searches for data (ie. customer, task, etc) and returns it in a tabular form.\n@optional {viewId: int(int64) # view's identifier, page: int(int32)=0, additionalOrder: str, useDeferredColumns: str, maxRows: int(int32)=0 # overrides view's default rows limit, supported values 10 to 1000}\n\n@endpoint GET /browser/views/for/{className}\n@desc Returns views' brief.\n@required {className: str # views' class name}\n@optional {placeName: str=default # place name (denotes specific place in system with the table)}\n\n@endpoint POST /browser/views/for/{className}\n@desc Creates view for given class.\n@required {className: str # view's class name}\n\n@endpoint GET /browser/views/{viewId}\n@desc Returns all view's information.\n@required {viewId: int(int64) # view's identifier}\n\n@endpoint PUT /browser/views/{viewId}\n@desc Updates all view's information.\n@required {viewId: int(int64) # view's identifier}\n\n@endpoint DELETE /browser/views/{viewId}\n@desc Removes a view.\n@required {viewId: int(int64) # view's internal identifier}\n@returns(204) Success\n\n@endpoint DELETE /browser/views/{viewId}/columns/{columnName}\n@desc Deletes a single column from view.\n@required {viewId: int(int64) # view's identifier, columnName: str # column's name}\n\n@endpoint GET /browser/views/{viewId}/columns/{columnName}/settings\n@desc Returns column's specific settings.\n@required {viewId: int(int64) # view's identifier, columnName: str # column's name}\n\n@endpoint PUT /browser/views/{viewId}/columns/{columnName}/settings\n@desc Updates column's specific settings.\n@required {viewId: int(int64) # view's identifier, columnName: str # column's name}\n@example_request \"/home-api/assets/examples/browsers/views/updateColumnSettings.json#requestBody\"\n\n@endpoint GET /browser/views/{viewId}/columns\n@desc Returns columns defined in view.\n@required {viewId: int(int64) # view's identifier}\n\n@endpoint PUT /browser/views/{viewId}/columns\n@desc Updates columns in view.\n@required {viewId: int(int64) # view's identifier}\n\n@endpoint GET /browser/views/details/for/{className}\n@desc Returns current view's detailed information, suitable for browser.\n@required {className: str # views' class name}\n@optional {placeName: str=default # place name (denotes specific place in system with the table)}\n\n@endpoint GET /browser/views/{viewId}/filter\n@desc Returns view's filter.\n@required {viewId: int(int64) # view's identifier}\n\n@endpoint PUT /browser/views/{viewId}/filter\n@desc Updates view's filter.\n@required {viewId: int(int64) # view's identifier}\n\n@endpoint GET /browser/views/{viewId}/settings/local\n@desc Returns view's local settings (for current user).\n@required {viewId: int(int64) # view's identifier}\n\n@endpoint PUT /browser/views/{viewId}/settings/local\n@desc Updates view's local settings (for current user).\n@required {viewId: int(int64) # view's identifier}\n@optional {maxRows: int(int32), maxLinesInRow: int(int32)}\n@example_request \"/home-api/assets/examples/browsers/views/updateLocalSettings.json#requestBody\"\n\n@endpoint GET /browser/views/{viewId}/order\n@desc Returns view's order settings.\n@required {viewId: int(int64) # view's identifier}\n\n@endpoint PUT /browser/views/{viewId}/order\n@desc Updates view's order settings.\n@required {viewId: int(int64) # view's identifier}\n\n@endpoint GET /browser/views/{viewId}/permissions\n@desc Returns view's permissions.\n@required {viewId: int(int64) # view's identifier}\n\n@endpoint PUT /browser/views/{viewId}/permissions\n@desc Updates view's permissions.\n@required {viewId: int(int64) # view's identifier}\n@optional {sharedGroups: [int(int64)]}\n@example_request \"/home-api/assets/examples/browsers/views/updatePermissions.json#requestBody\"\n\n@endpoint GET /browser/views/{viewId}/settings\n@desc Returns view's settings.\n@required {viewId: int(int64) # view's identifier}\n\n@endpoint PUT /browser/views/{viewId}/settings\n@desc Updates view's settings.\n@required {viewId: int(int64) # view's identifier}\n@optional {name: str, local: map{maxRows: int(int32), maxLinesInRow: int(int32)}}\n@example_request \"/home-api/assets/examples/browsers/views/updateSettings.json#requestBody\"\n\n@endpoint GET /browser/views/details/for/{className}/{viewId}\n@desc Returns view's detailed information, suitable for browser.\n@required {className: str # views' class name, viewId: int(int64)}\n@optional {placeName: str=default # place name (denotes specific place in system with the table)}\n\n@endpoint POST /browser/views/details/for/{className}/{viewId}\n@desc Selects given view as current and returns its detailed information, suitable for browser.\n@required {className: str # views' class name, viewId: int(int64)}\n@optional {place name (denotes specific place in system with the table): str=default}\n\n@endpoint PUT /browser/views/{viewId}/filter/{filterProperty}\n@desc Updates view's filter property.\n@required {viewId: int(int64) # view's identifier, filterProperty: str # view's filter property name}\n@optional {name: str, type: str, settings: map, settingsPresent: bool}\n@example_request \"/home-api/assets/examples/browsers/views/updateFilterProperty.json#requestBody\"\n\n@endgroup\n\n@group accounting\n@endpoint GET /accounting/customers/invoices\n@desc Lists all client invoices in all statuses (including not ready and drafts) that have been updated since a specific date.\n@optional {updatedSince: int(int64) # only client invoices modified since this timestamp}\n\n@endpoint POST /accounting/customers/invoices\n@desc Creates a new invoice.\n\n@endpoint GET /accounting/customers/invoices/{invoiceId}/payments\n@desc Returns all payments for the client invoice.\n@required {invoiceId: int(int64) # client invoice's internal identifier}\n\n@endpoint POST /accounting/customers/invoices/{invoiceId}/payments\n@desc Adds a new payment to the client invoice. The invoice payment status (Not Paid, Partially Paid, Fully Paid) is automatically recalculated.\n@required {invoiceId: int(int64) # client invoice's internal identifier}\n@returns(204) Success\n\n@endpoint GET /accounting/customers/invoices/{invoiceId}\n@desc Returns client invoice details.\n@required {invoiceId: int(int64) # client invoice's internal identifier}\n@optional {embed: str # list of adittional fields which should be embedded in the response (ie. tasks)}\n\n@endpoint DELETE /accounting/customers/invoices/{invoiceId}\n@desc Removes a client invoice.\n@required {invoiceId: int(int64) # client invoice's internal identifier}\n@returns(204) Success\n\n@endpoint POST /accounting/customers/invoices/documents\n@desc Allows for downloading multiple client invoice documents.\n\n@endpoint POST /accounting/customers/invoices/xmlDocuments\n@desc Allows for downloading multiple client invoice xml documents.\n\n@endpoint POST /accounting/customers/invoices/{invoiceId}/duplicate\n@desc Duplicate client invoice.\n@required {invoiceId: int(int64) # client invoice's internal identifier}\n\n@endpoint POST /accounting/customers/invoices/{invoiceId}/duplicate/proForma\n@desc Duplicate client invoice as pro forma.\n@required {invoiceId: int(int64) # client invoice's internal identifier}\n\n@endpoint GET /accounting/customers/invoices/ids\n@desc Returns client invoices' internal identifiers.\n@optional {updatedSince: int(int64) # only client invoices modified since this timestamp}\n\n@endpoint GET /accounting/customers/invoices/{invoiceId}/dates\n@desc Returns dates of a given client invoice.\n@required {invoiceId: int(int64) # client invoice's internal identifier}\n\n@endpoint GET /accounting/customers/invoices/{invoiceId}/document\n@desc Allows for downloading a given client invoice document.\n@required {invoiceId: int(int64) # client invoice's internal identifier}\n\n@endpoint GET /accounting/customers/invoices/{invoiceId}/paymentTerms\n@desc Returns payment terms of a given client invoice.\n@required {invoiceId: int(int64) # client invoice's internal identifier}\n\n@endpoint GET /accounting/customers/invoices/{invoiceId}/xmlDocument\n@desc Allows for downloading a given client invoice xml document.\n@required {invoiceId: int(int64) # client invoice's internal identifier}\n\n@endpoint POST /accounting/customers/invoices/{invoiceId}/sendReminder\n@desc Sends reminder.\n@required {invoiceId: int(int64) # client invoice's internal identifier}\n@returns(204) Success\n\n@endpoint POST /accounting/customers/invoices/sendReminders\n@desc Sends reminders. Returns number of sent e-mails.\n\n@endpoint DELETE /accounting/customers/payments/{paymentId}\n@desc Removes a customer payment.\n@required {paymentId: int(int64) # customer payment's internal identifier}\n@returns(204) Success\n\n@endgroup\n\n@group customers\n@endpoint POST /customers/persons\n@desc Creates a new person.\n\n@endpoint GET /customers/persons/{personId}\n@desc Returns person details.\n@required {personId: int(int64) # person's internal identifier}\n\n@endpoint PUT /customers/persons/{personId}\n@desc Updates an existing person.\n@required {personId: int(int64) # person's internal identifier}\n\n@endpoint DELETE /customers/persons/{personId}\n@desc Removes a person.\n@required {personId: int(int64) # person's internal identifier}\n@returns(204) Success\n\n@endpoint POST /customers/persons/accessToken\n@desc Generates a single use sign-in token.\n\n@endpoint GET /customers/persons/ids\n@desc Returns persons' internal identifiers.\n@optional {updatedSince: int(int64) # only persons modified since this timestamp}\n\n@endpoint GET /customers/persons/{personId}/contact\n@desc Returns contact of a given person.\n@required {personId: int(int64) # person's internal identifier}\n\n@endpoint PUT /customers/persons/{personId}/contact\n@desc Updates contact of a given person.\n@required {personId: int(int64) # person's internal identifier}\n\n@endpoint GET /customers/persons/{personId}/customFields\n@desc Returns custom fields of a given person.\n@required {personId: int(int64) # person's internal identifier}\n\n@endpoint PUT /customers/persons/{personId}/customFields\n@desc Updates custom fields of a given person.\n@required {personId: int(int64) # person's internal identifier}\n\n@endpoint DELETE /customers/priceLists/{priceListId}\n@desc Removes a customer price list.\n@required {priceListId: int(int64) # customer price list's internal identifier}\n@returns(204) Success\n\n@endpoint GET /customers\n@desc Returns list of simple clients representations\n@optional {updatedSince: int(int64) # only clients modified since this timestamp, excludeErased: bool # filter out erased clients; default: false}\n\n@endpoint POST /customers\n@desc Creates a new client.\n@optional {id: int(int64), idNumber: str, name: str, fullName: str, notes: str, peppolIdScheme: str, peppolIdCode: str, peppolId: str, billingAddress: map{sameAsBillingAddress: bool, addressLine1: str, addressLine2: str, city: str, postalCode: str, provinceId: int(int64), countryId: int(int64)}, correspondenceAddress: map{sameAsBillingAddress: bool, addressLine1: str, addressLine2: str, city: str, postalCode: str, provinceId: int(int64), countryId: int(int64)}, contact: map{phones: [str], sms: str, fax: str, emails: map, websites: [str]}, branchId: int(int64), leadSourceId: int(int64), customFields: [map{type: str, name: str, key: str, value: map}], status: str(ACTIVE/INACTIVE/POTENTIAL), responsiblePersons: map{projectManagerId!: int(int64), salesPersonId!: int(int64), accountManagerId: int(int64), projectCoordinatorId: int(int64)}, accounting: map{taxNumbers: [map]}, contractNumber: str, salesNotes: str, accountOnCustomerServer: str, clientFirstProjectDate: str(date-time), clientFirstQuoteDate: str(date-time), clientLastProjectDate: str(date-time), clientLastQuoteDate: str(date-time), clientNumberOfProjects: int(int32), clientNumberOfQuotes: int(int32), persons: [map{id: int(int64), name: str, lastName: str, contact: map, positionId: int(int64), gender: str, active: bool, motherTonguesIds: [int(int64)], customFields: [map], customerId: int(int64), firstProjectDate: str(date-time), firstQuoteDate: str(date-time), lastProjectDate: str(date-time), lastQuoteDate: str(date-time), numberOfProjects: int(int32), numberOfQuotes: int(int32)}], categoriesIds: [int(int64)], industriesIds: [int(int64)], limitAccessToPeopleResponsible: bool}\n@example_request \"/home-api/assets/examples/customers/create.json#requestBody\"\n\n@endpoint GET /customers/{customerId}\n@desc Returns client details.\n@required {customerId: int(int64) # client's internal identifier}\n@optional {embed: str # list of additional fields which should be embedded in the response (available options: persons)}\n\n@endpoint PUT /customers/{customerId}\n@desc Updates an existing client.\n@required {customerId: int(int64) # client's internal identifier}\n@optional {id: int(int64), idNumber: str, name: str, fullName: str, notes: str, peppolIdScheme: str, peppolIdCode: str, peppolId: str, billingAddress: map{sameAsBillingAddress: bool, addressLine1: str, addressLine2: str, city: str, postalCode: str, provinceId: int(int64), countryId: int(int64)}, correspondenceAddress: map{sameAsBillingAddress: bool, addressLine1: str, addressLine2: str, city: str, postalCode: str, provinceId: int(int64), countryId: int(int64)}, contact: map{phones: [str], sms: str, fax: str, emails: map, websites: [str]}, branchId: int(int64), leadSourceId: int(int64), customFields: [map{type: str, name: str, key: str, value: map}], status: str(ACTIVE/INACTIVE/POTENTIAL), responsiblePersons: map{projectManagerId!: int(int64), salesPersonId!: int(int64), accountManagerId: int(int64), projectCoordinatorId: int(int64)}, accounting: map{taxNumbers: [map]}, contractNumber: str, salesNotes: str, accountOnCustomerServer: str, clientFirstProjectDate: str(date-time), clientFirstQuoteDate: str(date-time), clientLastProjectDate: str(date-time), clientLastQuoteDate: str(date-time), clientNumberOfProjects: int(int32), clientNumberOfQuotes: int(int32), persons: [map{id: int(int64), name: str, lastName: str, contact: map, positionId: int(int64), gender: str, active: bool, motherTonguesIds: [int(int64)], customFields: [map], customerId: int(int64), firstProjectDate: str(date-time), firstQuoteDate: str(date-time), lastProjectDate: str(date-time), lastQuoteDate: str(date-time), numberOfProjects: int(int32), numberOfQuotes: int(int32)}], categoriesIds: [int(int64)], industriesIds: [int(int64)], limitAccessToPeopleResponsible: bool}\n@example_request \"/home-api/assets/examples/customers/update.json#requestBody\"\n\n@endpoint DELETE /customers/{customerId}\n@desc Removes a client.\n@required {customerId: int(int64) # client's internal identifier}\n@returns(204) Success\n\n@endpoint GET /customers/{customerId}/priceProfiles/active\n@desc Returns list of active price profiles for a client.\n@required {customerId: int(int64) # client's internal identifier}\n\n@endpoint GET /customers/{customerId}/address\n@desc Returns address of a given client.\n@required {customerId: int(int64) # client's internal identifier}\n\n@endpoint PUT /customers/{customerId}/address\n@desc Updates address of a given client.\n@required {customerId: int(int64) # client's internal identifier}\n@optional {sameAsBillingAddress: bool # should billing address be used instead of this one, addressLine1: str # first line of address, addressLine2: str # second line of address, city: str # city, postalCode: str # postal code, provinceId: int(int64) # province, countryId: int(int64) # country}\n@example_request \"/home-api/assets/examples/customers/address/updateAddress.json#requestBody\"\n\n@endpoint GET /customers/ids\n@desc Returns clients' internal identifiers.\n@optional {updatedSince: int(int64) # only clients modified since this timestamp, nameEquals: str # exact name of client, emailEquals: str # exact email of client}\n\n@endpoint GET /customers/{customerId}/budgetCodes\n@desc Returns list of available budget codes for a client.\n@required {customerId: int(int64) # client's internal identifier}\n\n@endpoint GET /customers/byAlias\n@desc Returns client details.\n@optional {externalSystemId: int(int64), customerAlias: str}\n\n@endpoint GET /customers/{customerId}/categories\n@desc Returns categories of a given client.\n@required {customerId: int(int64) # client's internal identifier}\n\n@endpoint PUT /customers/{customerId}/categories\n@desc Updates categories of a given client.\n@required {customerId: int(int64) # client's internal identifier}\n@optional {empty: bool}\n@example_request \"/home-api/assets/examples/customers/updateCategories.json#requestBody\"\n\n@endpoint GET /customers/{customerId}/contact\n@desc Returns contact of a given client.\n@required {customerId: int(int64) # client's internal identifier}\n\n@endpoint PUT /customers/{customerId}/contact\n@desc Updates contact of a given client.\n@required {customerId: int(int64) # client's internal identifier}\n@optional {phones: [str] # phones' numbers, sms: str # mobile phone for which SMS notifications will be sent (if configured), fax: str # fax number, emails: map{primary!: str, cc: [str], additional: [str]} # emails, websites: [str] # websites}\n@example_request \"/home-api/assets/examples/customers/updateContact.json#requestBody\"\n\n@endpoint GET /customers/{customerId}/correspondenceAddress\n@desc Returns correspondence address of a given client.\n@required {customerId: int(int64) # client's internal identifier}\n\n@endpoint PUT /customers/{customerId}/correspondenceAddress\n@desc Updates correspondence address of a given client.\n@required {customerId: int(int64) # client's internal identifier}\n@optional {sameAsBillingAddress: bool # should billing address be used instead of this one, addressLine1: str # first line of address, addressLine2: str # second line of address, city: str # city, postalCode: str # postal code, provinceId: int(int64) # province, countryId: int(int64) # country}\n@example_request \"/home-api/assets/examples/customers/address/updateCorrespondenceAddress.json#requestBody\"\n\n@endpoint GET /customers/{customerId}/customFields/{customFieldKey}\n@desc Returns custom field of a given client.\n@required {customerId: int(int64) # client's internal identifier, customFieldKey: str # custom field's key}\n\n@endpoint PUT /customers/{customerId}/customFields/{customFieldKey}\n@desc Updates given custom field of a given client.\n@required {customerId: int(int64) # client's internal identifier, customFieldKey: str # custom field's key}\n@optional {type: str(TEXT/DATE/DATE_AND_TIME/NUMBER/CHECKBOX/SELECTION/MULTI_SELECTION), name: str, key: str, value: map}\n@example_request \"/home-api/assets/examples/customers/updateCustomField.json#requestBody\"\n\n@endpoint GET /customers/{customerId}/customFields\n@desc Returns custom fields of a given client.\n@required {customerId: int(int64) # client's internal identifier}\n\n@endpoint PUT /customers/{customerId}/customFields\n@desc Updates custom fields of a given client.\n@required {customerId: int(int64) # client's internal identifier}\n@optional {customFields: [map{type: str, name: str, key: str, value: map}], empty: bool}\n@example_request \"/home-api/assets/examples/customers/updateCustomFields.json#requestBody\"\n\n@endpoint GET /customers/{customerId}/settings/specializations\n@desc Returns specializations available for a given client in the Client Portal.\n@required {customerId: int(int64) # client's internal identifier}\n\n@endpoint GET /customers/{customerId}/industries\n@desc Returns industries of a given client.\n@required {customerId: int(int64) # client's internal identifier}\n\n@endpoint PUT /customers/{customerId}/industries\n@desc Updates industries of a given client.\n@required {customerId: int(int64) # client's internal identifier}\n@optional {empty: bool}\n@example_request \"/home-api/assets/examples/customers/updateIndustries.json#requestBody\"\n\n@endpoint GET /customers/{customerId}/settings/languages\n@desc Returns languages available for a given client in the Client Portal.\n@required {customerId: int(int64) # client's internal identifier}\n\n@endpoint GET /customers/{customerId}/offices\n@desc Returns list of offices in the office structure in which the client is located.\n@required {customerId: int(int64) # client's internal identifier}\n\n@endpoint GET /customers/{customerId}/services\n@desc Returns list of available services for a client.\n@required {customerId: int(int64) # client's internal identifier}\n\n@endgroup\n\n@group files\n@endpoint POST /files\n@desc Uploads a temporary file (ie. for XML import). Returns token which can be used in other API calls.\n\n@endgroup\n\n@group license\n@endpoint GET /license\n@desc Returns license content.\n@returns(200) Success\n\n@endpoint POST /license/refresh\n@desc Refreshes license content.\n@returns(204) Success\n\n@endgroup\n\n@group macros\n@endpoint POST /macros/{macroId}/run\n@desc Executes a macro.\n@required {macroId: int(int64) # macro internal identifier}\n\n@endgroup\n\n@group confidential-groups\n@endpoint POST /confidential-groups/sensitiveClients/client\n@desc Adds client to sensitive clients list.\n@optional {value: int(int64), text: str}\n@example_request \"/home-api/assets/examples/partnersGroups/sensitiveClients/addClient_valueFix.json#requestBody\"\n\n@endpoint GET /confidential-groups/sensitiveClients\n@desc Returns sensitive clients list.\n\n@endpoint PUT /confidential-groups/sensitiveClients\n@desc Updates sensitive clients list.\n@example_request \"/home-api/assets/examples/partnersGroups/sensitiveClients/put.json#requestBody\"\n\n@endpoint GET /confidential-groups/sensitiveClients/isSensitive/{clientId}\n@desc Check if client is sensitive.\n@required {clientId: int(int64), clientId: int(int64)}\n\n@endpoint DELETE /confidential-groups/sensitiveClients/client/{sensitiveClientId}\n@desc Removes sensitive client from sensitive clients list.\n@required {sensitiveClientId: int(int64), sensitiveClientId: int(int64)}\n\n@endpoint POST /confidential-groups/trustedVendors/vendor\n@desc Adds vendor to trusted vendors list.\n@optional {value: int(int64), text: str}\n@example_request \"/home-api/assets/examples/partnersGroups/trustedVendors/addVendor_valueFix.json#requestBody\"\n\n@endpoint GET /confidential-groups/trustedVendors\n@desc Returns trusted vendors list.\n\n@endpoint PUT /confidential-groups/trustedVendors\n@desc Updates trusted vendors list.\n@example_request \"/home-api/assets/examples/partnersGroups/trustedVendors/put.json#requestBody\"\n\n@endpoint DELETE /confidential-groups/trustedVendors/vendor/{trustedVendorId}\n@desc Removes trusted vendor from trusted vendors list.\n@required {trustedVendorId: int(int64), trustedVendorId: int(int64)}\n\n@endgroup\n\n@group projectGroups\n@endpoint GET /projectGroups\n@desc Returns all project groups.\n\n@endpoint POST /projectGroups\n@desc Creates a new Project Groups.\n@optional {name: str, customerIds: [int(int64)]}\n@example_request \"/home-api/assets/examples/projectGroups/addProjectGroup.json#requestBody\"\n\n@endpoint GET /projectGroups/{projectGroupId}\n@desc Returns project group details.\n@required {projectGroupId: int(int64) # project group's internal identifier}\n\n@endpoint PUT /projectGroups/{projectGroupId}\n@desc Update project group details.\n@required {projectGroupId: int(int64) # project group's internal identifier}\n@optional {currencyId: int(int64), budgetValue: num, name: str, status: str(opened/closed), notes: str, categoriesIds: [int(int64)], customersIds: [int(int64)]}\n@example_request \"/home-api/assets/examples/projectGroups/updateProjectGroup.json#requestBody\"\n\n@endpoint DELETE /projectGroups/{projectGroupId}\n@desc Removes a project group.\n@required {projectGroupId: int(int64) # project group's internal identifier}\n@returns(204) Success\n\n@endpoint PUT /projectGroups/{projectGroupId}/linkProjects\n@desc Add projects to project group.\n@required {projectGroupId: int(int64) # project group's internal identifier}\n@optional {projectIds: [int(int64)], smartProjectIds: [str]}\n@example_request \"/home-api/assets/examples/projectGroups/linkProjects.json#requestBody\"\n\n@endpoint PUT /projectGroups/{projectGroupId}/linkQuotes\n@desc Add quotes to project group.\n@required {projectGroupId: int(int64) # project group's internal identifier}\n@optional {quoteIds: [int(int64)], smartQuoteIds: [str]}\n@example_request \"/home-api/assets/examples/projectGroups/linkQuotes.json#requestBody\"\n\n@endpoint PUT /projectGroups/{projectGroupId}/unlinkProjects\n@desc Remove projects from project group.\n@required {projectGroupId: int(int64) # project group's internal identifier}\n@optional {projectIds: [int(int64)], smartProjectIds: [str]}\n@example_request \"/home-api/assets/examples/projectGroups/unlinkProjects.json#requestBody\"\n\n@endpoint PUT /projectGroups/{projectGroupId}/unlinkQuotes\n@desc Remove quotes from project group.\n@required {projectGroupId: int(int64) # project group's internal identifier}\n@optional {quoteIds: [int(int64)], smartQuoteIds: [str]}\n@example_request \"/home-api/assets/examples/projectGroups/unlinkQuotes.json#requestBody\"\n\n@endgroup\n\n@group accounting\n@endpoint GET /accounting/providers/invoices\n@desc Lists all vendor invoices in all statuses (including not ready and drafts) that have been updated since a specific date.\n@optional {updatedSince: int(int64) # only vendor invoices modified since this timestamp}\n\n@endpoint POST /accounting/providers/invoices\n@desc Creates a new invoice.\n@optional {jobsIds: [int(int64)]}\n@returns(200) Success\n@example_request \"/home-api/assets/examples/accounting/providers/invoices/createSingleFromJobs.json#requestBody\"\n\n@endpoint GET /accounting/providers/invoices/{invoiceId}/payments\n@desc Returns all payments for the vendor invoice.\n@required {invoiceId: int(int64) # vendor invoice's internal identifier}\n\n@endpoint POST /accounting/providers/invoices/{invoiceId}/payments\n@desc Creates a new payment on the vendor account and assigns the payment to the invoice.\n@required {invoiceId: int(int64) # vendor invoice's internal identifier}\n@returns(204) Success\n\n@endpoint GET /accounting/providers/invoices/{invoiceId}\n@desc Returns provider invoice details.\n@required {invoiceId: int(int64) # provider invoice's internal identifier}\n\n@endpoint DELETE /accounting/providers/invoices/{invoiceId}\n@desc Removes a provider invoice.\n@required {invoiceId: int(int64) # provider invoice's internal identifier}\n@returns(204) Success\n\n@endpoint GET /accounting/providers/invoices/ids\n@desc Returns vendor invoices' internal identifiers.\n@optional {updatedSince: int(int64) # only vendor invoices modified since this timestamp}\n\n@endpoint GET /accounting/providers/invoices/{invoiceId}/document\n@desc Generates provider invoice document (PDF).\n@required {invoiceId: int(int64) # provider invoice's internal identifier}\n\n@endpoint POST /accounting/providers/invoices/{invoiceId}/send\n@desc Sends a provider invoice.\n@required {invoiceId: int(int64) # provider invoice's internal identifier}\n@returns(204) Success\n\n@endpoint POST /accounting/providers/invoices/{invoiceId}/status\n@desc Changes invoice status to given status.\n@required {invoiceId: int(int64) # provider invoice's internal identifier}\n@optional {status: str(POSTPONED/TO_BE_SENT/SENT/CONFIRMED/BILL_CREATED)}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/accounting/providers/invoices/setStatus.json#requestBody\"\n\n@endpoint DELETE /accounting/providers/payments/{paymentId}\n@desc Removes a provider payment.\n@required {paymentId: int(int64) # provider payment's internal identifier}\n@returns(204) Success\n\n@endgroup\n\n@group providers\n@endpoint GET /providers/persons/{personId}\n@desc Returns person details.\n@required {personId: int(int64) # person's internal identifier}\n\n@endpoint DELETE /providers/persons/{personId}\n@desc Removes a person.\n@required {personId: int(int64) # person's internal identifier}\n@returns(204) Success\n\n@endpoint GET /providers/persons/ids\n@desc Returns persons' internal identifiers.\n@optional {updatedSince: int(int64) # only persons modified since this timestamp}\n\n@endpoint GET /providers/persons/{personId}/contact\n@desc Returns contact of a given person.\n@required {personId: int(int64) # person's internal identifier}\n\n@endpoint GET /providers/persons/{personId}/customFields\n@desc Returns custom fields of a given person.\n@required {personId: int(int64) # person's internal identifier}\n\n@endpoint POST /providers/persons/{personId}/notification/invitation\n@desc Sends invitation to Vendor Portal.\n@required {personId: int(int64) # person's internal identifier}\n\n@endpoint DELETE /providers/priceLists/{priceListId}\n@desc Removes a provider price list.\n@required {priceListId: int(int64) # provider price list's internal identifier}\n@returns(204) Success\n\n@endpoint GET /providers/{providerId}\n@desc Returns provider details.\n@required {providerId: int(int64) # provider's internal identifier}\n@optional {embed: str # list of adittional fields which should be embedded in the response (ie. persons)}\n\n@endpoint DELETE /providers/{providerId}\n@desc Removes a provider.\n@required {providerId: int(int64) # provider's internal identifier}\n@returns(204) Success\n\n@endpoint GET /providers/{providerId}/address\n@desc Returns address of a given provider.\n@required {providerId: int(int64) # provider's internal identifier}\n\n@endpoint GET /providers/ids\n@desc Returns providers' internal identifiers.\n@optional {updatedSince: int(int64) # only providers modified since this timestamp}\n\n@endpoint GET /providers/{providerId}/competencies\n@desc Returns competencies of a given provider.\n@required {providerId: int(int64) # provider's internal identifier}\n\n@endpoint GET /providers/{providerId}/contact\n@desc Returns contact of a given provider.\n@required {providerId: int(int64) # provider's internal identifier}\n\n@endpoint GET /providers/{providerId}/correspondenceAddress\n@desc Returns correspondence address of a given provider.\n@required {providerId: int(int64) # provider's internal identifier}\n\n@endpoint GET /providers/{providerId}/customFields\n@desc Returns custom fields of a given provider.\n@required {providerId: int(int64) # provider's internal identifier}\n\n@endpoint POST /providers/{providerId}/notification/invitation\n@desc Sends invitations to Vendor Portal.\n@required {providerId: int(int64) # provider's internal identifier}\n\n@endgroup\n\n@group reports\n@endpoint DELETE /reports/{reportId}\n@desc Removes a report.\n@required {reportId: int(int64) # report's internal identifier}\n@returns(204) Success\n\n@endpoint POST /reports/{reportId}/duplicate\n@desc Duplicates a report.\n@required {reportId: int(int64) # report's internal identifier}\n@returns(204) Success\n\n@endpoint POST /reports/export/xml\n@desc Exports reports definition to XML.\n\n@endpoint GET /reports/{reportId}/result/csv\n@desc Generates CSV content for a report.\n@required {reportId: int(int64) # report's internal identifier}\n\n@endpoint GET /reports/{reportId}/result/printerFriendly\n@desc Generates printer friendly content for a report.\n@required {reportId: int(int64) # report's internal identifier}\n\n@endpoint POST /reports/import/xml\n@desc Imports reports definition from XML.\n\n@endpoint PUT /reports/{reportId}/preferred\n@desc Marks report as preferred or not.\n@required {reportId: int(int64) # report's internal identifier}\n@returns(204) Success\n\n@endgroup\n\n@group services\n@endpoint GET /services/all\n@desc Returns services list\n@optional {nameEquals: str # exact name of entity}\n\n@endpoint GET /services/active\n@desc Returns active services list\n@optional {nameEquals: str # exact name of entity}\n\n@endgroup\n\n@group settings\n@endpoint GET /settings/customFields\n@desc Returns Custom Fields configuration.\n@optional {scope: [str] # Custom Field scopes to filter by (available options: CONTACT_PERSON, CUSTOMER, PROVIDER, USER, PROJECT, QUOTE, ACTIVITY, TASK)}\n@returns(200) Success\n\n@endgroup\n\n@group subscription\n@endpoint GET /subscription/supports\n@desc This method can be used to determine if hooks are supported.\n\n@endpoint GET /subscription\n@desc Returns all subscriptions\n\n@endpoint POST /subscription\n@desc Subscribe to event\n@returns(201) Success\n@errors {409: Success}\n\n@endpoint DELETE /subscription/{subscriptionId}\n@desc Unsubscribe from event\n@required {subscriptionId: str}\n@returns(200) Success\n\n@endgroup\n\n@group system\n@endpoint GET /system/configuration/email\n@desc Get email configuration\n@returns(200) Email configuration retrieved successfully\n\n@endpoint GET /system/configuration/ftp\n@desc Get FTP configuration\n@returns(200) FTP configuration retrieved successfully\n\n@endpoint GET /system/configuration\n@desc Get basic system configuration\n@returns(200) System configuration retrieved successfully\n\n@endpoint GET /system/timeZone\n@desc Get system timezone information\n@returns(200) Timezone information retrieved successfully\n\n@endgroup\n\n@group users\n@endpoint PUT /users/{userId}/password\n@desc Sets user's password to a new value.\n@required {userId: int(int64) # user's internal identifier}\n@returns(204) Success\n\n@endpoint GET /users\n@desc Returns list of simple users representations\n\n@endpoint GET /users/{userId}\n@desc Returns user details.\n@required {userId: int(int64) # user's internal identifier}\n\n@endpoint PUT /users/{userId}\n@desc Updates an existing user.\n@required {userId: int(int64) # user's internal identifier}\n@optional {id: int(int64), firstName: str, lastName: str, login: str, email: str, userGroupName: str, mobilePhone: str, gender: str, timeZoneId: str, positionName: str, phone: str, customFields: [map{type: str, name: str, key: str, value: map}]}\n@example_request \"/home-api/assets/examples/users/update2.json#requestBody\"\n\n@endpoint GET /users/{userId}/customFields/{customFieldKey}\n@desc Returns custom field of a given user.\n@required {userId: int(int64) # user's internal identifier, customFieldKey: str # custom field's key}\n\n@endpoint PUT /users/{userId}/customFields/{customFieldKey}\n@desc Updates given custom field of a given user.\n@required {userId: int(int64) # user's internal identifier, customFieldKey: str # custom field's key}\n@optional {type: str(TEXT/DATE/DATE_AND_TIME/NUMBER/CHECKBOX/SELECTION/MULTI_SELECTION), name: str, key: str, value: map}\n@example_request \"/home-api/assets/examples/users/updateCustomField.json#requestBody\"\n\n@endpoint GET /users/{userId}/customFields\n@desc Returns custom fields of a given user.\n@required {userId: int(int64) # user's internal identifier}\n\n@endpoint PUT /users/{userId}/customFields\n@desc Updates custom fields of a given user.\n@required {userId: int(int64) # user's internal identifier}\n@optional {customFields: [map{type: str, name: str, key: str, value: map}], empty: bool}\n@example_request \"/home-api/assets/examples/users/updateCustomFields.json#requestBody\"\n\n@endpoint GET /users/me\n@desc Returns currently signed in user details.\n\n@endpoint GET /users/me/timeZone\n@desc Returns time zone preferred by user currently signed in.\n\n@endgroup\n\n@group dictionaries\n@endpoint GET /dictionaries/active\n@desc Returns active dictionary entities for all types.\n\n@endpoint GET /dictionaries/{type}/active\n@desc Returns active values from a given dictionary.\n@required {type: str # dictionary type}\n@optional {nameEquals: str # exact name of entity}\n\n@endpoint GET /dictionaries/all\n@desc Returns dictionary entities for all types. Both active and not active ones.\n\n@endpoint GET /dictionaries/{type}/all\n@desc Returns all values (both active and not active) from a given dictionary.\n@required {type: str # dictionary type}\n@optional {nameEquals: str # exact name of entity}\n\n@endpoint GET /dictionaries/{type}/{id}\n@desc Returns specific value from a given dictionary.\n@required {type: str # dictionary type, id: int(int64) # dictionary value identifier}\n\n@endpoint GET /dictionaries/{type}/all/default\n@desc Returns a default value from a given dictionary.\n@required {type: str # dictionary type}\n\n@endpoint GET /dictionaries/currency/{isoCode}/exchangeRate\n@desc Returns currency exchange rates.\n@required {isoCode: str # iso code, https://www.xe.com/iso4217.php}\n\n@endpoint POST /dictionaries/currency/{isoCode}/exchangeRate\n@desc Adding currency exchange rates.\n@required {isoCode: str # iso code, https://www.xe.com/iso4217.php}\n@optional {exchangeRate: str, dateFrom: map{value: int(int64)}, originDetails: str, publicationDate: map{value: int(int64)}, lastModification: map{value: int(int64)}}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/dictionaries/currency/createExchangeRate.json#requestBody\"\n\n@endgroup\n\n@group jobs\n@endpoint POST /jobs/{jobId}/files/output\n@required {jobId: str # job's internal identifier}\n\n@endpoint PUT /jobs/{jobId}/vendor\n@desc Assigns vendor to a job in a project.\n@required {jobId: str # job's internal identifier}\n@optional {vendorPriceProfileId: int(int64), recalculateRates: bool}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v1/jobs/assignVendor.json#requestBody\"\n\n@endpoint PUT /jobs/{jobId}/status\n@desc Changes job status if possible (400 Bad Request is returned otherwise).\n@required {jobId: str # job's internal identifier}\n@optional {externalId: str, bundleFrom: int(int64), status: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v1/jobs/changeStatus.json#requestBody\"\n\n@endpoint GET /jobs/{jobId}\n@desc Returns job details by jobId.\n@required {jobId: str # job's internal identifier}\n\n@endpoint GET /jobs/{jobId}/files\n@desc Returns list of input and output files of a job.\n@required {jobId: str # job's internal identifier}\n@returns(200) Success\n\n@endpoint GET /jobs/{jobId}/files/{fileId}\n@desc Returns file metadata.\n@required {jobId: str # job's internal identifier, fileId: int(int64) # file's internal identifier}\n@returns(200) Success\n\n@endpoint PUT /jobs/{jobId}/dates\n@desc Updates dates of a given job.\n@required {jobId: str # job's internal identifier}\n@optional {startDate: int(int64), deadline: int(int64), actualStartDate: int(int64), actualEndDate: int(int64)}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v1/jobs/updateDates.json#requestBody\"\n\n@endpoint PUT /jobs/{jobId}/instructions\n@desc Updates instructions for a job.\n@required {jobId: str # job's internal identifier}\n@optional {fromCustomer: str, forProvider: str, internal: str, paymentNoteForCustomer: str, paymentNoteForVendor: str, notes: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v1/jobs/updateInstructionsForJob.json#requestBody\"\n\n@endgroup\n\n@group projects\n@endpoint POST /projects\n@desc Creates a new Classic Project.\n\n@endpoint POST /projects/{projectId}/languageCombinations\n@desc Creates a new language combination for a given project without creating a task.\n@required {projectId: str # project's internal identifier}\n@optional {sourceLanguageId: int(int64), targetLanguageId: int(int64)}\n@example_request \"/home-api/assets/examples/v1/projects/createLanguageCombination.json#requestBody\"\n\n@endpoint POST /projects/{projectId}/finance/payables\n@desc Adds a payable to a project.\n@required {projectId: str # project's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, jobId: map, catLogFile: map{name: str, url: str, content: str, token: str}}\n@example_request \"/home-api/assets/examples/v1/projects/createPayable.json#requestBody\"\n\n@endpoint POST /projects/{projectId}/finance/receivables\n@desc Adds a receivable to a project.\n@required {projectId: str # project's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, taskId: int(int64), catLogFile: map{name: str, url: str, content: str, token: str}}\n@example_request \"/home-api/assets/examples/v1/projects/createReceivable.json#requestBody\"\n\n@endpoint POST /projects/{projectId}/tasks\n@desc Creates a new task for a given project.\n@required {projectId: str # project's internal identifier}\n@optional {name: str # name, clientTaskPONumber: str # client task PO number, languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)} # language combination (ie. PL -> EN), dates: map{startDate: map, deadline: map, actualStartDate: map, actualDeliveryDate: map}, people: map{responsiblePersons: map, customerContacts: map} # people, instructions: map{fromCustomer: str, forProvider: str, internal: str, paymentNoteForCustomer: str, paymentNoteForVendor: str, notes: str}, specializationId: int(int64) # specialization, workflowId: int(int64) # workflow, files: [map{name: str, url: str, content: str, token: str, category: str}] # files}\n@example_request \"/home-api/assets/examples/v1/projects/createTask.json#requestBody\"\n\n@endpoint GET /projects/{projectId}\n@desc Returns project details.\n@required {projectId: str # project's internal identifier}\n@optional {embed: str # list of additional fields which should be embedded in the response (available options: tasks)}\n\n@endpoint DELETE /projects/{projectId}\n@desc Removes a project.\n@required {projectId: str # project's internal identifier}\n@returns(204) Success\n\n@endpoint PUT /projects/{projectId}/finance/payables/{payableId}\n@desc Updates a simple payable.\n@required {projectId: str # project's internal identifier, payableId: int(int64) # payable's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, jobId: map}\n@example_request \"/home-api/assets/examples/v1/projects/updatePayable.json#requestBody\"\n\n@endpoint DELETE /projects/{projectId}/finance/payables/{payableId}\n@desc Deletes a payable.\n@required {projectId: str # project's internal identifier, payableId: int(int64) # payable's internal identifier}\n@returns(204) Success\n\n@endpoint PUT /projects/{projectId}/finance/receivables/{receivableId}\n@desc Updates a simple receivable.\n@required {projectId: str # project's internal identifier, receivableId: int(int64) # receivable's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, taskId: int(int64)}\n@example_request \"/home-api/assets/examples/v1/projects/updateReceivable.json#requestBody\"\n\n@endpoint DELETE /projects/{projectId}/finance/receivables/{receivableId}\n@desc Deletes a receivable.\n@required {projectId: str # project's internal identifier, receivableId: int(int64) # receivable's internal identifier}\n@returns(204) Success\n\n@endpoint GET /projects/ids\n@desc Returns projects' internal identifiers.\n@optional {updatedSince: int(int64) # only projects modified since this timestamp}\n\n@endpoint GET /projects/{projectId}/contacts\n@desc Returns contacts of a given project.\n@required {projectId: str # project's internal identifier}\n\n@endpoint PUT /projects/{projectId}/contacts\n@desc Updates contacts of a given project.\n@required {projectId: str # project's internal identifier}\n@optional {primaryId: int(int64), sendBackToId: int(int64), additionalIds: [int(int64)]}\n@example_request \"/home-api/assets/examples/v1/projects/updateContacts.json#requestBody\"\n\n@endpoint GET /projects/{projectId}/customFields\n@desc Returns custom fields of a given project.\n@required {projectId: str # project's internal identifier}\n\n@endpoint PUT /projects/{projectId}/customFields\n@desc Updates custom fields of a given project.\n@required {projectId: str # project's internal identifier}\n@optional {customFields: [map{type: str, name: str, key: str, value: map}], empty: bool}\n@example_request \"/home-api/assets/examples/v1/projects/updateCustomFields.json#requestBody\"\n\n@endpoint GET /projects/{projectId}/dates\n@desc Returns dates of a given project.\n@required {projectId: str # project's internal identifier}\n\n@endpoint PUT /projects/{projectId}/dates\n@desc Updates dates of a given project.\n@required {projectId: str # project's internal identifier}\n@optional {startDate: map{value: int(int64)}, deadline: map{value: int(int64)}, actualStartDate: map{value: int(int64)}, actualDeliveryDate: map{value: int(int64)}}\n@example_request \"/home-api/assets/examples/v1/projects/updateDates.json#requestBody\"\n\n@endpoint GET /projects/files/{fileId}/download\n@desc Downloads a file.\n@required {fileId: str # file's internal identifier}\n\n@endpoint GET /projects/{projectId}/finance\n@desc Returns finance of a given project.\n@required {projectId: str # project's internal identifier}\n\n@endpoint GET /projects/{projectId}/instructions\n@desc Returns instructions of a given project.\n@required {projectId: str # project's internal identifier}\n\n@endpoint PUT /projects/{projectId}/instructions\n@desc Updates instructions of a given project.\n@required {projectId: str # project's internal identifier}\n@optional {fromCustomer: str, forProvider: str, internal: str, paymentNoteForCustomer: str, paymentNoteForVendor: str, notes: str}\n@example_request \"/home-api/assets/examples/v1/projects/updateInstructions.json#requestBody\"\n\n@endgroup\n\n@group quotes\n@endpoint POST /quotes/{quoteId}/languageCombinations\n@desc Creates a new language combination for a given quote without creating a task.\n@required {quoteId: str # quote's internal identifier}\n@optional {sourceLanguageId: int(int64), targetLanguageId: int(int64)}\n@example_request \"/home-api/assets/examples/v1/quotes/createLanguageCombination.json#requestBody\"\n\n@endpoint POST /quotes/{quoteId}/finance/payables\n@desc Adds a payable.\n@required {quoteId: str # quote's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, jobId: map, catLogFile: map{name: str, url: str, content: str, token: str}}\n@example_request \"/home-api/assets/examples/v1/quotes/createCATPayable.json#requestBody\"\n\n@endpoint POST /quotes/{quoteId}/finance/receivables\n@desc Adds a receivable.\n@required {quoteId: str # quote's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, taskId: int(int64), catLogFile: map{name: str, url: str, content: str, token: str}}\n@example_request \"/home-api/assets/examples/v1/quotes/createReceivable.json#requestBody\"\n\n@endpoint POST /quotes/{quoteId}/tasks\n@desc Creates a new task for a given quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {id: int(int64) # internal identifier, idNumber: str # identifier, projectId: int(int64) # project's internal identifier, quoteId: int(int64) # quote's internal identifier, name: str # name, clientTaskPONumber: str # client task PO number, languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)} # language combination (ie. PL -> EN), dates: map{startDate: map, deadline: map, actualStartDate: map, actualDeliveryDate: map}, people: map{responsiblePersons: map, customerContacts: map} # people, instructions: map{fromCustomer: str, forProvider: str, internal: str, paymentNoteForCustomer: str, paymentNoteForVendor: str, notes: str}, customFields: [map{type: str, name: str, key: str, value: map}], finance: map{invoiceable: bool} # finance, jobs: map{jobCount: int(int32), jobIds: [int(int64)]}}\n@example_request \"/home-api/assets/examples/v1/quotes/createTask.json#requestBody\"\n\n@endpoint GET /quotes/{quoteId}\n@desc Returns quote details.\n@required {quoteId: str # quote's internal identifier}\n@optional {embed: str # list of adittional fields which should be embedded in the response (ie. tasks)}\n\n@endpoint DELETE /quotes/{quoteId}\n@desc Removes a quote.\n@required {quoteId: str # quote's internal identifier}\n@returns(204) Success\n\n@endpoint PUT /quotes/{quoteId}/finance/payables/{payableId}\n@desc Updates a simple payable.\n@required {quoteId: str # quote's internal identifier, payableId: int(int64) # payable's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, jobId: map}\n@example_request \"/home-api/assets/examples/v1/quotes/updatePayable.json#requestBody\"\n\n@endpoint DELETE /quotes/{quoteId}/finance/payables/{payableId}\n@desc Deletes a payable.\n@required {quoteId: str # quoteId's internal identifier, payableId: int(int64) # payable's internal identifier}\n@returns(204) Success\n\n@endpoint PUT /quotes/{quoteId}/finance/receivables/{receivableId}\n@desc Updates a simple receivable.\n@required {quoteId: str # quote's internal identifier, receivableId: int(int64) # receivable's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, taskId: int(int64)}\n@example_request \"/home-api/assets/examples/v1/quotes/updateReceivable.json#requestBody\"\n\n@endpoint DELETE /quotes/{quoteId}/finance/receivables/{receivableId}\n@desc Deletes a receivable.\n@required {quoteId: str # quoteId's internal identifier, receivableId: int(int64) # receivable's internal identifier}\n@returns(204) Success\n\n@endpoint GET /quotes/ids\n@desc Returns quotes' internal identifiers.\n@optional {updatedSince: int(int64) # only quotes modified since this timestamp}\n\n@endpoint GET /quotes/{quoteId}/customFields\n@desc Returns custom fields of a given quote.\n@required {quoteId: str # quote's internal identifier}\n\n@endpoint PUT /quotes/{quoteId}/customFields\n@desc Updates custom fields of a given quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {customFields: [map{type: str, name: str, key: str, value: map}], empty: bool}\n@example_request \"/home-api/assets/examples/v1/quotes/updateCustomFields.json#requestBody\"\n\n@endpoint GET /quotes/{quoteId}/dates\n@desc Returns dates of a given quote.\n@required {quoteId: str # quote's internal identifier}\n\n@endpoint GET /quotes/{quoteId}/finance\n@desc Returns finance of a given quote.\n@required {quoteId: str # quote's internal identifier}\n\n@endpoint GET /quotes/{quoteId}/instructions\n@desc Returns instructions of a given quote.\n@required {quoteId: str # quote's internal identifier}\n\n@endpoint PUT /quotes/{quoteId}/instructions\n@desc Updates instructions of a given quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {fromCustomer: str, forProvider: str, internal: str, paymentNoteForCustomer: str, paymentNoteForVendor: str, notes: str}\n@example_request \"/home-api/assets/examples/v1/quotes/updateInstructions.json#requestBody\"\n\n@endpoint POST /quotes/{quoteId}/confirmation/send\n@desc Sends a quote for customer confirmation.\n@required {quoteId: str # quote's internal identifier}\n@returns(204) Success\n\n@endpoint POST /quotes/{quoteId}/start\n@desc Starts a quote.\n@required {quoteId: str # quote's internal identifier}\n@returns(204) Success\n\n@endgroup\n\n@group tasks\n@endpoint POST /tasks/{taskId}/files/input\n@desc Adds files to a given task.\n@required {taskId: str # task's internal identifier}\n@optional {name: str, url: str, content: str, token: str, category: str(WORKFILE/TM/DICTIONARY/REF/LOG_FILE) # file category}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v1/tasks/addFile.json#requestBody\"\n\n@endpoint DELETE /tasks/{taskId}\n@desc Removes a task.\n@required {taskId: str # task's internal identifier}\n@optional {removeFilesFromDisc: bool # remove files from disc, removeExternalProjects: bool # remove external projects (ie. from CAT Tool), forceJobsRemoval: bool # force jobs removal (ie. started or ready)}\n@returns(204) Success\n\n@endpoint GET /tasks/{taskId}/contacts\n@desc Returns contacts of a given task.\n@required {taskId: str # task's internal identifier}\n@returns(200) Success\n\n@endpoint PUT /tasks/{taskId}/contacts\n@desc Updates contacts of a given task.\n@required {taskId: str # task's internal identifier}\n@optional {primaryId: int(int64), sendBackToId: int(int64), additionalIds: [int(int64)]}\n@returns(200) Success\n@example_request \"/home-api/assets/examples/v1/tasks/updateContacts.json#requestBody\"\n\n@endpoint GET /tasks/{taskId}/customFields\n@desc Returns custom fields of a given task.\n@required {taskId: str # task's internal identifier}\n@returns(200) Success\n\n@endpoint PUT /tasks/{taskId}/customFields\n@desc Updates custom fields of a given task.\n@required {taskId: str # task's internal identifier}\n@optional {customFields: [map{type: str, name: str, key: str, value: map}], empty: bool}\n@returns(200) Success\n@example_request \"/home-api/assets/examples/v1/tasks/updateCustomFields.json#requestBody\"\n\n@endpoint GET /tasks/{taskId}/dates\n@desc Returns dates of a given task.\n@required {taskId: str # task's internal identifier}\n@returns(200) Success\n\n@endpoint PUT /tasks/{taskId}/dates\n@desc Updates dates of a given task.\n@required {taskId: str # task's internal identifier}\n@optional {startDate: map{value: int(int64)}, deadline: map{value: int(int64)}, actualStartDate: map{value: int(int64)}, actualDeliveryDate: map{value: int(int64)}}\n@returns(200) Success\n@example_request \"/home-api/assets/examples/v1/tasks/updateDates.json#requestBody\"\n\n@endpoint GET /tasks/{taskId}/instructions\n@desc Returns instructions of a given task.\n@required {taskId: str # task's internal identifier}\n@returns(200) Success\n\n@endpoint PUT /tasks/{taskId}/instructions\n@desc Updates instructions of a given task.\n@required {taskId: str # task's internal identifier}\n@optional {fromCustomer: str, forProvider: str, internal: str, paymentNoteForCustomer: str, paymentNoteForVendor: str, notes: str}\n@returns(200) Success\n@example_request \"/home-api/assets/examples/v1/tasks/updateInstructions.json#requestBody\"\n\n@endpoint GET /tasks/{taskId}/progress\n@desc Returns progress of a given task.\n@required {taskId: str # task's internal identifier}\n@returns(200) Success\n\n@endpoint GET /tasks/{taskId}/files\n@desc Returns lists of files of a given task.\n@required {taskId: str # task's internal identifier}\n@returns(200) Success\n\n@endpoint POST /tasks/{taskId}/start\n@desc Starts a task.\n@required {taskId: str # task's internal identifier}\n@returns(204) Success\n\n@endpoint PUT /tasks/{taskId}/clientTaskPONumber\n@desc Updates Client Task PO Number of a given task.\n@required {taskId: str # task's internal identifier}\n@optional {value: str}\n@returns(200) Success\n@example_request \"/home-api/assets/examples/v1/tasks/updateClientTaskPONumber.json#requestBody\"\n\n@endpoint PUT /tasks/{taskId}/name\n@desc Updates name of a given task.\n@required {taskId: str # task's internal identifier}\n@optional {value: str}\n@returns(200) Success\n@example_request \"/home-api/assets/examples/v1/tasks/updateName.json#requestBody\"\n\n@endgroup\n\n@group dictionaries\n@endpoint POST /v2/dictionaries/language\n@optional {id: int(int64) # internal identifier, name: str # localised name (formatted in the current user's locale), active: bool # should this value be available on the XTRF selection lists, preferred: bool # should this value be available on the top of XTRF selection lists, in the Preferred section, symbol: str # specific symbol or abbreviation, iso6391: str # ISO 639-1 code, iso6392: str # ISO 639-2 code, default: bool # should this value be set by default in XTRF selection lists}\n\n@endpoint PATCH /v2/dictionaries/language/{languageId}\n@required {languageId: int(int64)}\n@optional {active: bool}\n\n@endpoint POST /v2/dictionaries/specialization\n@optional {id: int(int64) # internal identifier, name: str # localised name (formatted in the current user's locale), active: bool # should this value be available on the XTRF selection lists, preferred: bool # should this value be available on the top of XTRF selection lists, in the Preferred section, default: bool # should this value be set by default in XTRF selection lists}\n\n@endpoint PATCH /v2/dictionaries/specialization/{specializationId}\n@required {specializationId: int(int64)}\n@optional {active: bool}\n\n@endgroup\n\n@group jobs\n@endpoint POST /v2/jobs/{jobId}/files/addExternalLink\n@required {jobId: str # job's internal identifier}\n@optional {category: str, languageIds: [int(int64)], languageCombinationIds: [map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}], url: str, filename: str, externalInfo: map}\n\n@endpoint POST /v2/jobs/{jobId}/files/delivered/addLink\n@desc Adds file link to the project as a link delivered in the job.\n@required {jobId: str # job's internal identifier}\n@optional {fileLinks: [map{category: str, languageIds: [int(int64)], languageCombinationIds: [map], url: str, filename: str, externalInfo: map, toBeGenerated: bool}]}\n@example_request \"/home-api/assets/examples/v2/jobs/addFileLinksToJob.json#requestBody\"\n\n@endpoint PUT /v2/jobs/{jobId}/files/delivered/add\n@desc Adds files to the project as delivered in the job.\n@required {jobId: str # job's internal identifier}\n@optional {files: [map{category: str, languageIds: [int(int64)], languageCombinationIds: [map], fileId: str}], duplicateFileAction: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/jobs/addFiles.json#requestBody\"\n\n@endpoint PUT /v2/jobs/{jobId}/vendor\n@desc Assigns vendor to a job in a project.\n@required {jobId: str # job's internal identifier}\n@optional {allowLSPAssignment: bool, vendorPriceProfileId: int(int64)}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/jobs/assignVendor.json#requestBody\"\n\n@endpoint PUT /v2/jobs/{jobId}/dates\n@desc Updates dates of a given job.\n@required {jobId: str # job's internal identifier}\n@optional {startDate: int(int64), deadline: int(int64), actualStartDate: int(int64), actualEndDate: int(int64)}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/jobs/changeDates.json#requestBody\"\n\n@endpoint PUT /v2/jobs/{jobId}/status\n@desc Changes job status if possible (400 Bad Request is returned otherwise).\n@required {jobId: str # job's internal identifier}\n@optional {externalId: str, bundleFrom: int(int64), status: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/jobs/changeStatus.json#requestBody\"\n\n@endpoint GET /v2/jobs/{jobId}\n@desc Returns details for a job.\n@required {jobId: str # job's internal identifier}\n\n@endpoint DELETE /v2/jobs/{jobId}\n@desc Deletes a job.\n@required {jobId: str # job's internal identifier}\n@returns(204) Success\n\n@endpoint GET /v2/jobs/for-external-id\n@optional {externalProjectId: str # job's externalProjectId, externalId: str # job's external identifier, bundleId: int(int64) # job's external bundle id, bundleFrom: int(int64) # job's external bundle from, bundleTo: int(int64) # job's external bundle to}\n\n@endpoint GET /v2/jobs/{jobId}/files/delivered\n@desc Returns list of files delivered in the job.\n@required {jobId: str # job's internal identifier}\n\n@endpoint GET /v2/jobs/{jobId}/files/sharedReferenceFiles\n@desc Returns list of files shared with the job as Reference Files.\n@required {jobId: str # job's internal identifier}\n\n@endpoint GET /v2/jobs/{jobId}/files/sharedWorkFiles\n@desc Returns list of files shared with the job as Work Files.\n@required {jobId: str # job's internal identifier}\n\n@endpoint POST /v2/jobs/merge\n@desc Merges given list of jobs into one job.\n@optional {jobIds: [str]}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/jobs/merge.json#requestBody\"\n\n@endpoint PUT /v2/jobs/{jobId}/files/sharedReferenceFiles/share\n@desc Shares selected files as Reference Files with a job in a project.\n@required {jobId: str # job's internal identifier}\n\n@endpoint PUT /v2/jobs/{jobId}/files/sharedWorkFiles/share\n@desc Shares selected files as Work Files with a job in a project.\n@required {jobId: str # job's internal identifier}\n\n@endpoint PUT /v2/jobs/{jobId}/files/stopSharing\n@desc Stops sharing selected files with a job in a project.\n@required {jobId: str # job's internal identifier}\n\n@endpoint PUT /v2/jobs/{jobId}/instructions\n@desc Updates instructions for a job.\n@required {jobId: str # job's internal identifier}\n@optional {value: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/jobs/updateInstructionsForJob.json#requestBody\"\n\n@endpoint POST /v2/jobs/{jobId}/files/delivered/upload\n@desc Uploads file to the project as a file delivered in the job.\n@required {jobId: str # job's internal identifier}\n\n@endpoint POST /v2/jobs/{jobId}/files/delivered/uploadFileByVendor\n@desc Uploads file to the project as a file delivered in the job, added by vendor.\n@required {jobId: str # job's internal identifier}\n@optional {externalJobId: str # job's external identifier}\n\n@endgroup\n\n@group projects\n@endpoint POST /v2/projects/{projectId}/files/addExternalLinks\n@required {projectId: str # project's internal identifier}\n@optional {externalFiles: [map{category: str, languageIds: [int(int64)], languageCombinationIds: [map], url: str, filename: str, externalInfo: map}]}\n\n@endpoint POST /v2/projects/{projectId}/externalInfo\n@required {projectId: str}\n\n@endpoint POST /v2/projects/{projectId}/files/addLink\n@desc Adds file links to the project as added by PM.\n@required {projectId: str # project's internal identifier}\n@optional {fileLinks: [map{category: str, languageIds: [int(int64)], languageCombinationIds: [map], url: str, filename: str, externalInfo: map, toBeGenerated: bool}]}\n@example_request \"/home-api/assets/examples/v2/projects/addFileLinks.json#requestBody\"\n\n@endpoint PUT /v2/projects/{projectId}/files/add\n@desc Adds files to the project as added by PM.\n@required {projectId: str # project's internal identifier}\n@optional {files: [map{category: str, languageIds: [int(int64)], languageCombinationIds: [map], fileId: str}], duplicateFileAction: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/addFiles.json#requestBody\"\n\n@endpoint POST /v2/projects/{projectId}/addJob\n@required {projectId: str}\n\n@endpoint PUT /v2/projects/{projectId}/files/addTargetFile\n@desc Adds target file to the project as added by PM.\n@required {projectId: str # project's internal identifier}\n@optional {externalProjectId: str, externalJobId: str, fileId: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/addTargetFile.json#requestBody\"\n\n@endpoint POST /v2/projects/files/archive\n@desc Prepares a ZIP archive that contains the specified files.\n@optional {files: [str]}\n@example_request \"/home-api/assets/examples/v2/projects/archive.json#requestBody\"\n\n@endpoint PUT /v2/projects/{projectId}/status\n@desc Changes project status if possible (400 Bad Request is returned otherwise).\n@required {projectId: str # project's internal identifier}\n@optional {status: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/changeStatus.json#requestBody\"\n\n@endpoint POST /v2/projects\n@desc Creates a new Smart Project.\n@optional {name: str, clientId: int(int64), serviceId: int(int64)}\n@returns(201) Success\n\n@endpoint POST /v2/projects/{projectId}/createCatToolProject\n@desc Creates Cat Tool Project corresponding to XTRF project.\n@required {projectId: str # project's internal identifier}\n@optional {templateSelectionType: str(Same_As_Project/Do_Not_Use_Template/Template_By_Id) # Template selection type. If none is provided default value: 'Same_As_Project' will be used., templateId: str # CAT Tool Template Id. Parameter can only be used if 'Template_By_Id' Template Selection Type is provided.}\n\n@endpoint POST /v2/projects/{projectId}/finance/payables\n@desc Adds a payable to a project.\n@required {projectId: str # project's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, jobId: map, catLogFile: map{name: str, url: str, content: str, token: str}}\n@example_request \"/home-api/assets/examples/v2/projects/createPayable.json#requestBody\"\n\n@endpoint POST /v2/projects/{projectId}/finance/receivables\n@desc Adds a receivable to a project.\n@required {projectId: str # project's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, taskId: int(int64), catLogFile: map{name: str, url: str, content: str, token: str}}\n@example_request \"/home-api/assets/examples/v2/projects/createReceivable.json#requestBody\"\n\n@endpoint DELETE /v2/projects/{projectId}/files/{fileId}\n@desc Deletes a file.\n@required {projectId: str # project's internal identifier, fileId: str # file's internal identifier}\n@returns(204) Success\n\n@endpoint PUT /v2/projects/{projectId}/finance/payables/{payableId}\n@desc Updates a simple payable.\n@required {projectId: str # project's internal identifier, payableId: int(int64) # payable's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, jobId: map}\n@example_request \"/home-api/assets/examples/v2/projects/updatePayable.json#requestBody\"\n\n@endpoint DELETE /v2/projects/{projectId}/finance/payables/{payableId}\n@desc Deletes a payable.\n@required {projectId: str # project's internal identifier, payableId: int(int64) # payable's internal identifier}\n@returns(204) Success\n\n@endpoint PUT /v2/projects/{projectId}/finance/receivables/{receivableId}\n@desc Updates a simple receivable.\n@required {projectId: str # project's internal identifier, receivableId: int(int64) # receivable's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, taskId: int(int64)}\n@example_request \"/home-api/assets/examples/v2/projects/updateReceivable.json#requestBody\"\n\n@endpoint DELETE /v2/projects/{projectId}/finance/receivables/{receivableId}\n@desc Deletes a receivable.\n@required {projectId: str # project's internal identifier, receivableId: int(int64) # receivable's internal identifier}\n@returns(204) Success\n\n@endpoint GET /v2/projects/for-external-id/{externalProjectId}\n@desc Returns project details.\n@required {externalProjectId: str # project's external identifier}\n\n@endpoint GET /v2/projects/{projectId}\n@desc Returns project details.\n@required {projectId: str # project's internal identifier}\n\n@endpoint GET /v2/projects/{projectId}/catToolProject\n@desc Returns if cat tool project is created or queued.\n@required {projectId: str}\n\n@endpoint GET /v2/projects/catToolProjectTemplates\n@desc Returns CAT Tool project templates available for selection in XTRF.\n@optional {catToolType: str(MemoQ/XTM) # Type of the CAT Tool, projectId: str # Project's internal identifier, catToolId: int(int64) # CAT Tool instance’s internal identifier}\n\n@endpoint GET /v2/projects/{projectId}/clientContacts\n@desc Returns Client Contacts information for a project.\n@required {projectId: str # project's internal identifier}\n\n@endpoint PUT /v2/projects/{projectId}/clientContacts\n@desc Updates Client Contacts for a project.\n@required {projectId: str # project's internal identifier}\n@optional {primaryId: int(int64), additionalIds: [int(int64)]}\n@example_request \"/home-api/assets/examples/v2/projects/updateClientContacts.json#requestBody\"\n\n@endpoint GET /v2/projects/{projectId}/customFields\n@desc Returns a list of custom field keys and values for a project.\n@required {projectId: str # project's internal identifier}\n\n@endpoint GET /v2/projects/{projectId}/files/deliverable\n@desc Returns list of files in a project, that are ready to be delivered to client.\n@required {projectId: str # project's internal identifier}\n\n@endpoint GET /v2/projects/files/{fileId}\n@desc Returns details of a file.\n@required {fileId: str # file's internal identifier}\n\n@endpoint GET /v2/projects/files/{fileId}/download/{fileName}\n@desc Downloads a file content.\n@required {fileId: str # file's internal identifier, fileName: str # file's name}\n\n@endpoint GET /v2/projects/{projectId}/files\n@desc Returns list of files in a project.\n@required {projectId: str # project's internal identifier}\n\n@endpoint GET /v2/projects/{projectId}/finance\n@desc Returns finance information for a project.\n@required {projectId: str # project's internal identifier}\n\n@endpoint GET /v2/projects/{projectId}/jobs\n@desc Returns list of jobs in a project.\n@required {projectId: str # project's internal identifier}\n\n@endpoint GET /v2/projects/{projectId}/process\n@desc Returns process id.\n@required {projectId: str}\n\n@endpoint PUT /v2/projects/{projectId}/catToolProjectTemplateDetails\n@desc Updates template details for a project.\n@required {projectId: str # project's internal identifier}\n@optional {catToolProjectTemplateId: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/updateTemplateDetails.json#requestBody\"\n\n@endpoint PUT /v2/projects/{projectId}/clientDeadline\n@desc Updates Client Deadline for a project.\n@required {projectId: str # project's internal identifier}\n@optional {value: int(int64)}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/updateClientDeadline.json#requestBody\"\n\n@endpoint PUT /v2/projects/{projectId}/clientNotes\n@desc Updates Client Notes for a project.\n@required {projectId: str # project's internal identifier}\n@optional {value: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/updateClientNotes.json#requestBody\"\n\n@endpoint PUT /v2/projects/{projectId}/clientReferenceNumber\n@desc Updates Client Reference Number for a project.\n@required {projectId: str # project's internal identifier}\n@optional {value: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/updateClientReferenceNumber.json#requestBody\"\n\n@endpoint PUT /v2/projects/{projectId}/customFields/{key}\n@desc Updates a custom field with a specified key in a project\n@required {projectId: str # project's internal identifier, key: str # custom field's key}\n@optional {value: map}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/updateCustomField.json#requestBody\"\n\n@endpoint PUT /v2/projects/{projectId}/internalNotes\n@desc Updates Internal Notes for a project.\n@required {projectId: str # project's internal identifier}\n@optional {value: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/updateInternalNotes.json#requestBody\"\n\n@endpoint PUT /v2/projects/{projectId}/orderDate\n@desc Updates Order Date for a project.\n@required {projectId: str # project's internal identifier}\n@optional {value: int(int64)}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/updateOrderedOn.json#requestBody\"\n\n@endpoint PUT /v2/projects/{projectId}/processType\n@required {projectId: str # project's internal identifier}\n@optional {value: str, externalSystemId: int(int64)}\n\n@endpoint PUT /v2/projects/{projectId}/sourceLanguage\n@desc Updates source language for a project.\n@required {projectId: str # project's internal identifier}\n@optional {sourceLanguageId: int(int64)}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/updateSourceLanguage.json#requestBody\"\n\n@endpoint PUT /v2/projects/{projectId}/specialization\n@desc Updates specialization for a project.\n@required {projectId: str # project's internal identifier}\n@optional {specializationId: int(int64)}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/updateSpecialization.json#requestBody\"\n\n@endpoint PUT /v2/projects/{projectId}/targetLanguages\n@desc Updates target languages for a project.\n@required {projectId: str # project's internal identifier}\n@optional {targetLanguageIds: [int(int64)]}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/updateTargetLanguages.json#requestBody\"\n\n@endpoint PUT /v2/projects/{projectId}/vendorInstructions\n@desc Updates instructions for all vendors performing the jobs in a project.\n@required {projectId: str # project's internal identifier}\n@optional {value: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/updateSpecialization.json#requestBody\"\n\n@endpoint PUT /v2/projects/{projectId}/volume\n@desc Updates volume for a project.\n@required {projectId: str # project's internal identifier}\n@optional {value: num}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/updateVolume.json#requestBody\"\n\n@endpoint POST /v2/projects/{projectId}/files/upload\n@desc Uploads file to the project as a file uploaded by PM.\n@required {projectId: str # project's internal identifier}\n\n@endgroup\n\n@group quotes\n@endpoint POST /v2/quotes/{quoteId}/files/addExternalLinks\n@required {quoteId: str # quote's internal identifier}\n@optional {externalFiles: [map{category: str, languageIds: [int(int64)], languageCombinationIds: [map], url: str, filename: str, externalInfo: map}]}\n\n@endpoint POST /v2/quotes/{quoteId}/externalInfo\n@required {quoteId: str}\n\n@endpoint POST /v2/quotes/{quoteId}/files/addLink\n@desc Adds file links to the quote as added by PM.\n@required {quoteId: str # quote's internal identifier}\n@optional {fileLinks: [map{category: str, languageIds: [int(int64)], languageCombinationIds: [map], url: str, filename: str, externalInfo: map, toBeGenerated: bool}]}\n@example_request \"/home-api/assets/examples/v2/quotes/addFileLinks.json#requestBody\"\n\n@endpoint PUT /v2/quotes/{quoteId}/files/add\n@desc Adds files to the quote as added by PM.\n@required {quoteId: str # quote's internal identifier}\n@optional {value: int(int64)}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/addFiles.json#requestBody\"\n\n@endpoint POST /v2/quotes/{quoteId}/addJob\n@required {quoteId: str}\n\n@endpoint PUT /v2/quotes/{quoteId}/files/addTargetFile\n@desc Adds target file to the quote as added by PM.\n@required {quoteId: str # quote's internal identifier}\n@optional {externalProjectId: str, externalJobId: str, fileId: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/addTargetFile.json#requestBody\"\n\n@endpoint POST /v2/quotes/files/archive\n@desc Prepares a ZIP archive that contains the specified files.\n\n@endpoint PUT /v2/quotes/{quoteId}/status\n@desc Changes quote status if possible (400 Bad Request is returned otherwise).\n@required {quoteId: str # quote's internal identifier}\n@optional {status: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/changeStatus.json#requestBody\"\n\n@endpoint POST /v2/quotes\n@desc Creates a new Smart Quote.\n@optional {name: str, clientId: int(int64), serviceId: int(int64), opportunityOfferId: int(int64)}\n@returns(201) Success\n\n@endpoint POST /v2/quotes/{quoteId}/finance/payables\n@desc Adds a payable to a quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, jobId: map, catLogFile: map{name: str, url: str, content: str, token: str}}\n@example_request \"/home-api/assets/examples/v2/quotes/createPayable.json#requestBody\"\n\n@endpoint POST /v2/quotes/{quoteId}/finance/receivables\n@desc Adds a receivable to a quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, taskId: int(int64), catLogFile: map{name: str, url: str, content: str, token: str}}\n@example_request \"/home-api/assets/examples/v2/quotes/createReceivable.json#requestBody\"\n\n@endpoint DELETE /v2/quotes/{quoteId}/files/{fileId}\n@desc Deletes a file.\n@required {quoteId: str # quote's internal identifier, fileId: str # file's internal identifier}\n@returns(204) Success\n\n@endpoint PUT /v2/quotes/{quoteId}/finance/payables/{payableId}\n@desc Updates a simple payable.\n@required {quoteId: str # quote's internal identifier, payableId: int(int64) # payable's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, jobId: map}\n@example_request \"/home-api/assets/examples/v2/quotes/updatePayable.json#requestBody\"\n\n@endpoint DELETE /v2/quotes/{quoteId}/finance/payables/{payableId}\n@desc Deletes a payable.\n@required {quoteId: str # quote's internal identifier, payableId: int(int64) # payable's internal identifier}\n@returns(204) Success\n\n@endpoint PUT /v2/quotes/{quoteId}/finance/receivables/{receivableId}\n@desc Updates a simple receivable.\n@required {quoteId: str # quote's internal identifier, receivableId: int(int64) # receivable's internal identifier}\n@optional {id: int(int64), jobTypeId: int(int64), languageCombination: map{sourceLanguageId: int(int64), targetLanguageId: int(int64)}, languageCombinationIdNumber: str, rateOrigin: str(PRICE_PROFILE/PRICE_LIST/FILLED_MANUALLY/AUTOCALCULATED), currencyId: int(int64), total: num, invoiceId: str, type: str(SIMPLE/CAT), calculationUnitId: int(int64), ignoreMinimumCharge: bool, minimumCharge: num, description: str, rate: num, quantity: num, taskId: int(int64)}\n@example_request \"/home-api/assets/examples/v2/quotes/updateReceivable.json#requestBody\"\n\n@endpoint DELETE /v2/quotes/{quoteId}/finance/receivables/{receivableId}\n@desc Deletes a receivable.\n@required {quoteId: str # quote's internal identifier, receivableId: int(int64) # receivable's internal identifier}\n@returns(204) Success\n\n@endpoint GET /v2/quotes/for-external-id/{externalProjectId}\n@desc Returns quote details.\n@required {externalProjectId: str # project's external identifier}\n\n@endpoint GET /v2/quotes/{quoteId}\n@desc Returns quote details.\n@required {quoteId: str # quote's internal identifier}\n\n@endpoint GET /v2/quotes/{quoteId}/clientContacts\n@desc Returns Client Contacts information for a quote.\n@required {quoteId: str # quote's internal identifier}\n\n@endpoint PUT /v2/quotes/{quoteId}/clientContacts\n@desc Updates Client Contacts for a quote.\n@required {quoteId: str # quote's internal identifier}\n\n@endpoint GET /v2/quotes/{quoteId}/customFields\n@desc Returns a list of custom field keys and values for a project.\n@required {quoteId: str # quote's internal identifier}\n\n@endpoint GET /v2/quotes/files/{fileId}\n@desc Returns details of a file.\n@required {fileId: str # file's internal identifier}\n\n@endpoint GET /v2/quotes/files/{fileId}/download/{fileName}\n@desc Downloads a file content.\n@required {fileId: str # file's internal identifier, fileName: str # file's name}\n\n@endpoint GET /v2/quotes/{quoteId}/files\n@desc Returns list of files in a quote.\n@required {quoteId: str # quote's internal identifier}\n\n@endpoint GET /v2/quotes/{quoteId}/finance\n@desc Returns finance information for a quote.\n@required {quoteId: str # quote's internal identifier}\n\n@endpoint GET /v2/quotes/{quoteId}/jobs\n@desc Returns list of jobs in a quote.\n@required {quoteId: str # quote's internal identifier}\n\n@endpoint GET /v2/quotes/{quoteId}/process\n@desc Returns process id.\n@required {quoteId: str}\n\n@endpoint PUT /v2/quotes/{quoteId}/businessDays\n@desc Updates Business Days for a quote.\n@required {quoteId: str # quote's internal identifier}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/updateBusinessDays.json#requestBody\"\n\n@endpoint PUT /v2/quotes/{quoteId}/catToolProjectTemplateDetails\n@desc Updates template details for a quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {catToolProjectTemplateId: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/projects/updateTemplateDetails.json#requestBody\"\n\n@endpoint PUT /v2/quotes/{quoteId}/clientNotes\n@desc Updates Client Notes for a quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {value: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/updateClientNotes.json#requestBody\"\n\n@endpoint PUT /v2/quotes/{quoteId}/clientReferenceNumber\n@desc Updates Client Reference Number for a quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {value: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/updateClientReferenceNumber.json#requestBody\"\n\n@endpoint PUT /v2/quotes/{quoteId}/customFields/{key}\n@desc Updates a custom field with a specified key in a quote.\n@required {quoteId: str # quote's internal identifier, key: str # custom field's key}\n@optional {value: map}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/updateCustomField.json#requestBody\"\n\n@endpoint PUT /v2/quotes/{quoteId}/expectedDeliveryDate\n@desc Updates Expected Delivery Date for a quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {value: int(int64)}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/updateExpectedDeliveryDate.json#requestBody\"\n\n@endpoint PUT /v2/quotes/{quoteId}/internalNotes\n@desc Updates Internal Notes for a quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {value: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/updateInternalNotes.json#requestBody\"\n\n@endpoint PUT /v2/quotes/{quoteId}/processType\n@required {quoteId: str # quote's internal identifier}\n@optional {value: str, externalSystemId: int(int64)}\n\n@endpoint PUT /v2/quotes/{quoteId}/quoteExpiry\n@desc Updates Quote Expiry Date for a quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {value: int(int64)}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/updateQuoteExpiry.json#requestBody\"\n\n@endpoint PUT /v2/quotes/{quoteId}/sourceLanguage\n@desc Updates source language for a quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {sourceLanguageId: int(int64)}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/updateSourceLanguage.json#requestBody\"\n\n@endpoint PUT /v2/quotes/{quoteId}/specialization\n@desc Updates specialization for a quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {specializationId: int(int64)}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/updateSpecialization.json#requestBody\"\n\n@endpoint PUT /v2/quotes/{quoteId}/targetLanguages\n@desc Updates target languages for a quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {targetLanguageIds: [int(int64)]}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/updateTargetLanguages.json#requestBody\"\n\n@endpoint PUT /v2/quotes/{quoteId}/vendorInstructions\n@desc Updates instructions for all vendors performing the jobs in a quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {value: str}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/updateInstructionsForAllJobs.json#requestBody\"\n\n@endpoint PUT /v2/quotes/{quoteId}/volume\n@desc Updates volume for a quote.\n@required {quoteId: str # quote's internal identifier}\n@optional {value: num}\n@returns(204) Success\n@example_request \"/home-api/assets/examples/v2/quotes/updateVolume.json#requestBody\"\n\n@endpoint POST /v2/quotes/{quoteId}/files/upload\n@desc Uploads file to the quote as a file uploaded by PM.\n@required {quoteId: str # quote's internal identifier}\n\n@endgroup\n\n@end\n"}