openapi: 3.1.0 info: title: OroTimesheet API description: > The OroTimesheet API allows you to exchange data between OroTimesheet and other software. All requests are submitted via HTTPS POST to a single endpoint, with XML payloads wrapped in a `` envelope. Responses are XML wrapped in a `` envelope with a `status` attribute (1=success, 0=error). **Authentication:** Include your API password in every request as the `password` attribute of the `` tag. **Endpoint:** `https://app.orotimesheet.com/api.php` **Parameter:** POST parameter named `xml_request` containing the full XML request. **Date format:** `YYYY-MM-DD` **DateTime format:** `YYYY-MM-DD HH:MM:SS` **Decimal format:** Dot as decimal separator, no thousands separator. Ex: `23941.60` **Strings in responses** are enclosed in CDATA sections. In requests, CDATA is optional unless the string contains special characters. **User defined fields** are returned as `udfXXXX` tags with a `description` attribute. version: 8.122.0 contact: name: OroLogic Inc. url: https://www.orotimesheet.com license: name: Proprietary url: https://www.orotimesheet.com servers: - url: https://app.orotimesheet.com description: OroTimesheet production server security: [] components: securitySchemes: ApiPassword: type: apiKey in: query name: password description: API password embedded in the XML request body as the `password` attribute of the `` element. schemas: XmlRequest: type: object required: - xml_request properties: xml_request: type: string description: Full XML request document XmlResponse: type: string description: 'XML response document. The root `` element has a `status` attribute: `1` for success, `0` for error.' ErrorResponse: type: string description: 'XML error response. Example: ``' tags: - name: Employees description: Manage employees - name: Employee Groups description: Manage employee groups - name: Activity Types description: Manage activity types - name: Customers description: Manage customers - name: Projects description: Manage projects - name: Sub-Projects description: Manage sub-projects within projects - name: Timesheet Transactions description: Manage timesheet (time) transactions - name: Expenses description: Manage expense transactions linked to timesheet entries - name: Timesheet Week State description: Get and set weekly timesheet approval states - name: Time Bank Updates description: Read time bank update records - name: Invoices description: Read invoice data - name: Reference Lists description: Read-only reference lists (categories, expense types, fiscal periods, tax rates) paths: /api.php: post: tags: - Employees summary: API entry point — all operations description: Single endpoint for all OroTimesheet API operations. The operation is determined by the XML element inside ``. See individual operation schemas below (documented via `x-operations`). operationId: apiPost requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/XmlRequest' responses: '200': description: XML response (check `status` attribute for success/failure) content: application/xml: schema: $ref: '#/components/schemas/XmlResponse' '400': description: Invalid XML request or bad parameters (status=0 in response body) '401': description: Invalid API password (error code 3001) '403': description: Account or API disabled (error code 3002) '503': description: Maintenance mode or too many concurrent requests x-operations: employee_list: tag: Employees summary: Get list of employees (summary) description: Returns all employees in a summary format. Use `employee_get` to retrieve the full record of a specific employee. requestElement: employee_list requestFields: [] responseFields: - name: employee_id type: integer description: Employee ID - name: name type: string description: Employee name - name: email type: string description: Employee email - name: status type: string enum: - active - inactive description: Employee status requestExample: responseExample: 1active employee_get: tag: Employees summary: Get an employee record description: Returns the full record of a specific employee including billing, cost, time bank and group information. requestElement: employee_get requestFields: - name: employee_id type: integer required: true description: ID of the employee to retrieve responseFields: - name: employee_id type: integer - name: name type: string - name: email type: string - name: status type: string enum: - active - inactive - name: type type: integer - name: employee_group_id type: integer - name: employee_group_description type: string - name: category_id type: integer - name: category_description type: string - name: notes type: string - name: sin type: string - name: hire_date type: string format: date - name: billing_rate type: number - name: billing_rate_type type: integer - name: billing_rate_billable type: string - name: cost_rate type: number - name: time_bank_balance_accumulated type: integer - name: time_bank_balance_vacations type: integer - name: time_bank_balance_sick type: integer requestExample: 14 responseExample: 14active employee_add: tag: Employees summary: Add a new employee description: Creates a new employee record. Returns the new `employee_id`. requestElement: employee_add requestFields: - name: name type: string maxLength: 50 required: true description: Employee name (must be unique) - name: email type: string maxLength: 60 required: true description: Employee email (must be unique across all accounts) - name: notes type: string - name: status type: string enum: - active - inactive description: 'Default: active' - name: employee_group_id type: integer - name: employee_group_description type: string maxLength: 35 - name: category_id type: integer - name: category_description type: string maxLength: 35 - name: sin type: string maxLength: 30 - name: hire_date type: string format: date - name: max_minutes_enterable type: integer - name: max_minutes_enterable_type type: integer description: 1=per day, 2=per week - name: billing_rate type: number - name: billing_rate_billable type: string enum: - 'yes' - 'no' - name: billing_rate_type type: integer description: 0=activity type rate, 1=employee rate - name: cost_rate type: number - name: cost_affect_cost type: string enum: - 'yes' - 'no' - name: time_bank_allow_negative type: string enum: - 'yes' - 'no' - name: time_bank_overtime_calc_type type: integer description: 0=No overtime, 1=per day, 2=per week - name: time_bank_overtime_calc_after_nbr_minutes type: integer - name: time_bank_overtime_calc_multiplier_factor type: number responseFields: - name: employee_id type: integer description: ID of the newly created employee requestExample: responseExample: 14 employee_edit: tag: Employees summary: Edit an existing employee description: Updates fields of an existing employee. Only specified fields are updated. Security-related fields (access rights, supervision) cannot be edited via the API. requestElement: employee_edit requestFields: - name: employee_id type: integer required: true description: ID of the employee to edit - name: name type: string maxLength: 50 - name: email type: string maxLength: 60 - name: notes type: string - name: status type: string enum: - active - inactive - name: employee_group_id type: integer - name: employee_group_description type: string - name: category_id type: integer - name: sin type: string - name: hire_date type: string format: date - name: billing_rate type: number - name: cost_rate type: number - name: time_bank_overtime_calc_type type: integer responseFields: - name: employee_id type: integer requestExample: 1454.25 responseExample: 14 employee_group_list: tag: Employee Groups summary: Get list of employee groups (summary) description: Returns all employee groups in summary format. requestElement: employee_group_list requestFields: [] responseFields: - name: employee_group_id type: integer - name: description type: string requestExample: responseExample: 0 employee_group_get: tag: Employee Groups summary: Get an employee group record description: Returns the full record of a specific employee group, including all member employee IDs. requestElement: employee_group_get requestFields: - name: employee_group_id type: integer required: true responseFields: - name: employee_group_id type: integer - name: description type: string - name: billing_rate type: number - name: cost_rate type: number - name: employee[] type: array description: List of employee IDs that are members of this group requestExample: 1 responseExample: 1 employee_group_edit: tag: Employee Groups summary: Edit an existing employee group description: Updates fields of an existing employee group. Only specified fields are updated. requestElement: employee_group_edit requestFields: - name: employee_group_id type: integer required: true - name: description type: string maxLength: 50 - name: max_minutes_enterable type: integer - name: max_minutes_enterable_type type: integer - name: minutes_usually_worked_per_week type: integer - name: billing_rate type: number - name: billing_rate_billable type: string enum: - 'yes' - 'no' - name: billing_rate_type type: integer - name: cost_rate type: number - name: time_bank_allow_negative type: string enum: - 'yes' - 'no' - name: time_bank_overtime_calc_type type: integer - name: time_bank_overtime_calc_after_nbr_minutes type: integer - name: time_bank_overtime_calc_multiplier_factor type: number responseFields: - name: employee_group_id type: integer requestExample: 154.25 responseExample: 1 activity_type_list: tag: Activity Types summary: Get list of activity types (summary) description: Returns all activity types in summary format. requestElement: activity_type_list requestFields: [] responseFields: - name: activity_type_id type: integer - name: description type: string - name: status type: string enum: - active - inactive requestExample: responseExample: 2active activity_type_get: tag: Activity Types summary: Get an activity type record description: Returns the full record of a specific activity type. requestElement: activity_type_get requestFields: - name: activity_type_id type: integer required: true responseFields: - name: activity_type_id type: integer - name: description type: string - name: status type: string - name: category_id type: integer - name: category_description type: string - name: billable type: string enum: - 'yes' - 'no' - name: billing_rate type: number requestExample: 2 responseExample: 2no activity_type_add: tag: Activity Types summary: Add a new activity type description: Creates a new activity type. Returns the new `activity_type_id`. requestElement: activity_type_add requestFields: - name: description type: string maxLength: 35 required: true description: Must be unique - name: status type: string enum: - active - inactive description: 'Default: active' - name: category_id type: integer - name: category_description type: string maxLength: 35 - name: billing_rate type: number - name: billable type: string enum: - 'yes' - 'no' responseFields: - name: activity_type_id type: integer requestExample: Designyes responseExample: 39 activity_type_edit: tag: Activity Types summary: Edit an existing activity type description: Updates fields of an existing activity type. requestElement: activity_type_edit requestFields: - name: activity_type_id type: integer required: true - name: description type: string maxLength: 35 - name: status type: string enum: - active - inactive - name: category_id type: integer - name: billing_rate type: number - name: billable type: string enum: - 'yes' - 'no' responseFields: - name: activity_type_id type: integer requestExample: 3980.00 responseExample: 39 activity_type_delete: tag: Activity Types summary: Delete an activity type description: Deletes an activity type. Cannot be deleted if it has linked time transactions. requestElement: activity_type_delete requestFields: - name: activity_type_id type: integer required: true responseFields: - name: activity_type_id type: integer requestExample: 39 responseExample: 39 customer_list: tag: Customers summary: Get list of customers (summary) description: Returns all customers in summary format. requestElement: customer_list requestFields: [] responseFields: - name: customer_id type: integer - name: code type: string - name: name type: string - name: status type: string - name: nbr_projects type: integer requestExample: responseExample: 5271active customer_get: tag: Customers summary: Get a customer record description: Returns the full record of a specific customer including special rates. requestElement: customer_get requestFields: - name: customer_id type: integer required: true responseFields: - name: customer_id type: integer - name: name type: string - name: code type: string - name: address type: string - name: contact type: string - name: phone type: string - name: email type: string - name: status type: string - name: category_id type: integer - name: tax_rate_id type: integer - name: payment_terms type: string - name: notes type: string - name: special_rate[] type: array description: List of special rates (per employee or activity type) requestExample: 5271 responseExample: 5271 customer_add: tag: Customers summary: Add a new customer description: Creates a new customer record. Returns the new `customer_id`. requestElement: customer_add requestFields: - name: name type: string maxLength: 50 required: true description: Must be unique - name: code type: string maxLength: 30 description: Must be unique if specified - name: address type: string - name: notes type: string - name: status type: string enum: - active - inactive - name: category_id type: integer - name: category_description type: string maxLength: 35 - name: tax_rate_id type: integer - name: tax_rate_description type: string maxLength: 35 - name: contact type: string maxLength: 50 - name: phone type: string maxLength: 25 - name: mobile type: string maxLength: 25 - name: fax type: string maxLength: 25 - name: email type: string maxLength: 60 - name: payment_terms type: string maxLength: 30 responseFields: - name: customer_id type: integer requestExample: XYZ Industries Inc.active responseExample: 5271 customer_edit: tag: Customers summary: Edit an existing customer description: Updates fields of an existing customer. Only specified fields are updated. requestElement: customer_edit requestFields: - name: customer_id type: integer required: true - name: name type: string maxLength: 50 - name: code type: string - name: address type: string - name: notes type: string - name: contact type: string - name: phone type: string - name: email type: string - name: status type: string responseFields: - name: customer_id type: integer requestExample: 5271
responseExample: 5271 customer_delete: tag: Customers summary: Delete a customer description: Deletes a customer. Cannot be deleted if projects are linked to it. requestElement: customer_delete requestFields: - name: customer_id type: integer required: true responseFields: - name: customer_id type: integer requestExample: 5271 responseExample: 5271 customer_special_rate_add: tag: Customers summary: Add a special rate to a customer description: Adds a billing special rate (per employee or per activity type) to an existing customer. requestElement: customer_special_rate_add requestFields: - name: customer_id type: integer required: true - name: activity_type_id type: integer description: Required if adding rate for an activity type - name: employee_id type: integer description: Required if adding rate for an employee - name: billable type: string required: true enum: - 'yes' - 'no' - name: rate type: number required: true description: Must be different from 0 responseFields: - name: customer_id type: integer requestExample: 5271451yes75.25 responseExample: 5271 customer_special_rate_delete: tag: Customers summary: Delete a special rate from a customer description: Removes a billing special rate (per employee or per activity type) from an existing customer. requestElement: customer_special_rate_delete requestFields: - name: customer_id type: integer required: true - name: activity_type_id type: integer description: Required if deleting rate for an activity type - name: employee_id type: integer description: Required if deleting rate for an employee responseFields: - name: customer_id type: integer requestExample: 5271451 responseExample: 5271 project_list: tag: Projects summary: Get list of projects (summary) description: Returns all projects and their sub-projects in summary format. Filter by `customer_id` to narrow results. requestElement: project_list requestFields: - name: customer_id type: integer description: 'Optional filter: only return projects for this customer' responseFields: - name: project_id type: integer - name: code type: string - name: description type: string - name: customer_id type: integer - name: status type: string - name: has_sub_projects type: string - name: nbr_sub_projects type: integer - name: sub_project[] type: array description: List of sub-projects (id, description, status) requestExample: 391 responseExample: 169active project_get: tag: Projects summary: Get a project record description: Returns the full record of a specific project including budget, actuals, managers, and sub-projects. requestElement: project_get requestFields: - name: project_id type: integer required: true responseFields: - name: project_id type: integer - name: description type: string - name: code type: string - name: customer_id type: integer - name: status type: string - name: billing_mode type: string enum: - per_hour - fixed_amount - name: date_begin type: string format: date - name: date_end type: string format: date - name: budget_minutes type: integer - name: real_minutes type: integer - name: sub_project[] type: array - name: manager[] type: array requestExample: 5271 responseExample: 5271 project_add: tag: Projects summary: Add a new project description: Creates a new project. Returns the new `project_id` and default `sub_project_id`. requestElement: project_add requestFields: - name: customer_id type: integer required: true - name: description type: string maxLength: 65 required: true - name: code type: string maxLength: 30 - name: notes type: string - name: status type: string enum: - active - inactive - name: category_id type: integer - name: category_description type: string - name: date_begin type: string format: date - name: date_end type: string format: date - name: billing_mode type: string enum: - per_hour - fixed_amount - name: project_manager_employee_id type: integer - name: fixed_price_amount type: number - name: time_bank_type type: string enum: - accumulated_time - vacations - sick - ignore - name: budget_minutes type: integer - name: budget_amount_billing_time type: number - name: budget_amount_billing_expenses type: number - name: budget_amount_cost_time type: number - name: budget_amount_cost_expenses type: number responseFields: - name: project_id type: integer - name: sub_project_id type: integer requestExample: '417per_hour' responseExample: 83049731 project_edit: tag: Projects summary: Edit an existing project description: Updates fields of an existing project. To edit budget/financial fields, use `sub_project_edit` instead. requestElement: project_edit requestFields: - name: project_id type: integer required: true - name: description type: string - name: code type: string - name: status type: string - name: date_begin type: string format: date - name: date_end type: string format: date - name: notes type: string responseFields: - name: project_id type: integer requestExample: 8304 responseExample: 8304 project_delete: tag: Projects summary: Delete a project description: Deletes a project. Cannot be deleted if it has linked time transactions. requestElement: project_delete requestFields: - name: project_id type: integer required: true responseFields: - name: project_id type: integer requestExample: 5271 responseExample: 5271 project_member_add: tag: Projects summary: Add a member to a project description: Adds an employee or employee group to a project's member list. requestElement: project_member_add requestFields: - name: project_id type: integer required: true - name: employee_id type: integer description: Required if adding an employee - name: employee_group_id type: integer description: Required if adding an employee group responseFields: - name: project_id type: integer - name: employee_id type: integer requestExample: 7552 responseExample: 7552 project_member_delete: tag: Projects summary: Remove a member from a project description: Removes an employee or employee group from a project's member list. requestElement: project_member_delete requestFields: - name: project_id type: integer required: true - name: employee_id type: integer - name: employee_group_id type: integer responseFields: - name: project_id type: integer - name: employee_id type: integer requestExample: 7552 responseExample: 7552 project_additional_manager_add: tag: Projects summary: Add an additional manager to a project description: Adds an employee or employee group as additional manager to a project. requestElement: project_additional_manager_add requestFields: - name: project_id type: integer required: true - name: employee_id type: integer - name: employee_group_id type: integer responseFields: - name: project_id type: integer - name: employee_id type: integer requestExample: 7552 responseExample: 7552 project_additional_manager_delete: tag: Projects summary: Remove an additional manager from a project description: Removes an employee or employee group from a project's additional manager list. requestElement: project_additional_manager_delete requestFields: - name: project_id type: integer required: true - name: employee_id type: integer - name: employee_group_id type: integer responseFields: - name: project_id type: integer - name: employee_id type: integer requestExample: 7552 responseExample: 7552 project_activity_type_add: tag: Projects summary: Add an activity type to a project description: Adds an activity type or activity type category to a project's allowed list. requestElement: project_activity_type_add requestFields: - name: project_id type: integer required: true - name: activity_type_id type: integer - name: activity_type_category_id type: integer responseFields: - name: project_id type: integer - name: activity_type_id type: integer requestExample: 7552 responseExample: 7552 project_activity_type_delete: tag: Projects summary: Remove an activity type from a project description: Removes an activity type or activity type category from a project's allowed list. requestElement: project_activity_type_delete requestFields: - name: project_id type: integer required: true - name: activity_type_id type: integer - name: activity_type_category_id type: integer responseFields: - name: project_id type: integer - name: activity_type_id type: integer requestExample: 7552 responseExample: 7552 project_special_rate_add: tag: Projects summary: Add a special rate to a project description: Adds a billing special rate (per employee or per activity type) to an existing project. requestElement: project_special_rate_add requestFields: - name: project_id type: integer required: true - name: activity_type_id type: integer - name: employee_id type: integer - name: billable type: string required: true enum: - 'yes' - 'no' - name: rate type: number required: true responseFields: - name: project_id type: integer requestExample: 755451yes75.25 responseExample: 755 project_special_rate_delete: tag: Projects summary: Delete a special rate from a project description: Removes a billing special rate (per employee or per activity type) from a project. requestElement: project_special_rate_delete requestFields: - name: project_id type: integer required: true - name: activity_type_id type: integer - name: employee_id type: integer responseFields: - name: project_id type: integer requestExample: 755451 responseExample: 755 sub_project_add: tag: Sub-Projects summary: Add a sub-project to a project description: Adds a new sub-project to an existing project. Returns the new `sub_project_id`. requestElement: sub_project_add requestFields: - name: project_id type: integer required: true - name: description type: string maxLength: 50 required: true - name: position type: integer - name: status type: string enum: - active - inactive - name: fixed_price_amount type: number - name: time_bank_type type: string enum: - accumulated_time - vacations - sick - ignore - name: budget_minutes type: integer - name: budget_amount_billing_time type: number - name: budget_amount_billing_expenses type: number - name: budget_amount_cost_time type: number - name: budget_amount_cost_expenses type: number responseFields: - name: sub_project_id type: integer requestExample: 417accumulated_time responseExample: 9733 sub_project_edit: tag: Sub-Projects summary: Edit an existing sub-project description: Updates fields of an existing sub-project including budget information. requestElement: sub_project_edit requestFields: - name: sub_project_id type: integer required: true - name: description type: string - name: position type: integer - name: status type: string - name: fixed_price_amount type: number - name: time_bank_type type: string - name: budget_minutes type: integer - name: budget_amount_billing_time type: number - name: budget_amount_billing_expenses type: number - name: budget_amount_cost_time type: number - name: budget_amount_cost_expenses type: number responseFields: - name: sub_project_id type: integer requestExample: 9733 responseExample: 9733 sub_project_delete: tag: Sub-Projects summary: Delete a sub-project description: Deletes a sub-project. Cannot be deleted if it has linked time transactions. requestElement: sub_project_delete requestFields: - name: sub_project_id type: integer required: true responseFields: - name: sub_project_id type: integer requestExample: 9733 responseExample: 9733 sub_project_activity_type_hide: tag: Sub-Projects summary: Hide an activity type for a sub-project description: Hides an activity type or activity type category for a specific sub-project. requestElement: sub_project_activity_type_hide requestFields: - name: sub_project_id type: integer required: true - name: activity_type_id type: integer - name: activity_type_category_id type: integer responseFields: - name: sub_project_id type: integer - name: activity_type_id type: integer requestExample: 29828 responseExample: 29828 sub_project_activity_type_unhide: tag: Sub-Projects summary: Unhide an activity type for a sub-project description: Restores visibility of a previously hidden activity type or activity type category for a specific sub-project. requestElement: sub_project_activity_type_unhide requestFields: - name: sub_project_id type: integer required: true - name: activity_type_id type: integer - name: activity_type_category_id type: integer responseFields: - name: sub_project_id type: integer - name: activity_type_id type: integer requestExample: 29828 responseExample: 29828 sub_project_budget_distribution_edit: tag: Sub-Projects summary: Set budget distribution for a sub-project description: Sets budget distribution for a sub-project per activity type, employee, or expense type. requestElement: sub_project_budget_distribution_edit requestFields: - name: sub_project_id type: integer required: true - name: activity_type_id type: integer description: Required if setting for an activity type - name: employee_id type: integer description: Required if setting for an employee - name: expense_type_id type: integer description: Required if setting for an expense type - name: budget_minutes type: integer - name: budget_amount_billing_time type: number - name: budget_amount_billing_expenses type: number - name: budget_amount_cost_time type: number - name: budget_amount_cost_expenses type: number responseFields: - name: sub_project_id type: integer - name: activity_type_id type: integer requestExample: 29828600 responseExample: 298 timesheet_tx_list: tag: Timesheet Transactions summary: Get list of timesheet transactions (summary) description: Returns timesheet transactions in summary format. Notes, user-defined fields and expense details are excluded; use `timesheet_tx_get` for the full record. requestElement: timesheet_tx_list requestFields: - name: customer_id type: integer description: Filter by customer - name: project_id type: integer description: Filter by project - name: sub_project_id type: integer description: Filter by sub-project - name: employee_id type: integer description: Filter by employee - name: activity_type_id type: integer description: Filter by activity type - name: invoice_id type: integer description: Filter by invoice - name: date_from type: string format: date description: Start date (must be used with date_to) - name: date_to type: string format: date description: End date (must be used with date_from) - name: last_updated_on_from type: string format: date description: Filter by update date (must be used with last_updated_on_to) - name: last_updated_on_to type: string format: date description: Filter by update date (must be used with last_updated_on_from) responseFields: - name: timesheet_tx_id type: integer - name: date type: string format: date - name: employee_id type: integer - name: project_id type: integer - name: sub_project_id type: integer - name: activity_type_id type: integer - name: minutes type: integer - name: billing_rate type: number - name: billing_amount type: number - name: billable type: string - name: invoiced type: string requestExample: 282014-09-152014-09-21 responseExample: 29402014-09-1660 timesheet_tx_get: tag: Timesheet Transactions summary: Get a timesheet transaction record description: Returns the full record of a specific timesheet transaction including notes, user-defined fields, and linked expense transactions. requestElement: timesheet_tx_get requestFields: - name: timesheet_tx_id type: integer required: true responseFields: - name: timesheet_tx_id type: integer - name: date type: string format: date - name: employee_id type: integer - name: employee_name type: string - name: customer_id type: integer - name: project_id type: integer - name: sub_project_id type: integer - name: activity_type_id type: integer - name: minutes type: integer - name: billing_rate type: number - name: notes type: string - name: expense[] type: array requestExample: 2940 responseExample: 294060 timesheet_tx_add: tag: Timesheet Transactions summary: Add a timesheet transaction description: Creates a new timesheet transaction. Returns the new `timesheet_tx_id`. requestElement: timesheet_tx_add requestFields: - name: sub_project_id type: integer required: true - name: employee_id type: integer required: true - name: activity_type_id type: integer required: true - name: date type: string format: date required: true - name: minutes type: integer required: true description: Number of minutes worked - name: shift type: integer description: 1 to 10, default 1 - name: affect_cost type: string enum: - 'yes' - 'no' description: 'Default: yes' - name: hourly_cost type: number - name: billable type: string enum: - 'yes' - 'no' - name: billing_rate type: number - name: time_in type: string description: HH:MM:SS format, default 00:00:00 - name: time_out type: string description: HH:MM:SS format, default 00:00:00 - name: notes type: string responseFields: - name: timesheet_tx_id type: integer requestExample: 98728202014-07-2390 responseExample: 3151 timesheet_tx_edit: tag: Timesheet Transactions summary: Edit an existing timesheet transaction description: Updates fields of an existing timesheet transaction. requestElement: timesheet_tx_edit requestFields: - name: timesheet_tx_id type: integer required: true - name: minutes type: integer - name: billing_rate type: number - name: billable type: string - name: notes type: string - name: time_in type: string - name: time_out type: string responseFields: - name: timesheet_tx_id type: integer requestExample: 315150.00 responseExample: 3151 timesheet_tx_delete: tag: Timesheet Transactions summary: Delete a timesheet transaction description: Deletes a timesheet transaction. Cannot be deleted if invoiced, in a closed fiscal period, or in an approved week. requestElement: timesheet_tx_delete requestFields: - name: timesheet_tx_id type: integer required: true responseFields: - name: timesheet_tx_id type: integer requestExample: 3151 responseExample: 3151 expense_get: tag: Expenses summary: Get an expense transaction record description: Returns the full record of a specific expense transaction. requestElement: expense_get requestFields: - name: expense_id type: integer required: true responseFields: - name: expense_id type: integer - name: timesheet_tx_id type: integer - name: expense_type_id type: integer - name: expense_type_description type: string - name: quantity type: number - name: unit_cost type: number - name: cost_amount type: number - name: refundable_to_employee type: string - name: billable_to_customer type: string - name: unit_price type: number - name: billable_amount type: number - name: notes type: string requestExample: 141 responseExample: 14150.0000 expense_add: tag: Expenses summary: Add an expense to a timesheet transaction description: Adds a new expense to an existing timesheet transaction. Returns the new `expense_id`. requestElement: expense_add requestFields: - name: timesheet_tx_id type: integer required: true - name: expense_type_id type: integer required: true - name: quantity type: number required: true - name: unit_cost type: number - name: refundable_to_employee type: string enum: - 'yes' - 'no' - name: refundable_amount_tax_1 type: number - name: refundable_amount_tax_2 type: number - name: unit_price type: number - name: billable_to_customer type: string enum: - 'yes' - 'no' - name: notes type: string responseFields: - name: expense_id type: integer requestExample: 29401650.00 responseExample: 258 expense_edit: tag: Expenses summary: Edit an existing expense transaction description: Updates fields of an existing expense transaction. requestElement: expense_edit requestFields: - name: expense_id type: integer required: true - name: quantity type: number - name: unit_cost type: number - name: refundable_to_employee type: string - name: unit_price type: number - name: billable_to_customer type: string - name: notes type: string responseFields: - name: expense_id type: integer requestExample: 258Updated notes responseExample: 258 expense_delete: tag: Expenses summary: Delete an expense transaction description: Deletes an expense transaction. The parent timesheet transaction must not be invoiced, in a closed fiscal period, or in an approved week. requestElement: expense_delete requestFields: - name: expense_id type: integer required: true responseFields: - name: expense_id type: integer requestExample: 258 responseExample: 258 timesheet_week_state_get: tag: Timesheet Week State summary: Get timesheet week state for an employee description: Returns the approval state of the timesheet for a specific employee and week. requestElement: timesheet_week_state_get requestFields: - name: employee_id type: integer required: true - name: date type: string format: date required: true description: Any date within the target week responseFields: - name: employee_id type: integer - name: state type: string enum: - not_submitted - submitted - approved - rejected - name: week_date_begin type: string format: date - name: week_date_end type: string format: date - name: reason_reject type: string requestExample: 352014-07-23 responseExample: 35not_submitted2014-07-212014-07-27 timesheet_week_state_set: tag: Timesheet Week State summary: Set timesheet week state for an employee description: Sets the approval state of the timesheet for a specific employee and week. requestElement: timesheet_week_state_set requestFields: - name: employee_id type: integer required: true - name: date type: string format: date required: true - name: state type: string required: true enum: - not_submitted - submitted - approved - rejected - name: reason_reject type: string description: Only used when state is rejected responseFields: - name: employee_id type: integer - name: week_date_begin type: string - name: week_date_end type: string - name: state type: string requestExample: 352014-07-23rejected responseExample: 35rejected time_bank_update_list: tag: Time Bank Updates summary: Get list of time bank updates (summary) description: Returns all time bank updates in summary format. Filter by `employee_group_id`. requestElement: time_bank_update_list requestFields: - name: employee_group_id type: integer description: Optional filter responseFields: - name: time_bank_update_id type: integer - name: date_from type: string format: date - name: date_to type: string format: date - name: number_weeks type: integer - name: minutes_total type: integer - name: minutes_paid type: integer - name: employee_group_id type: integer - name: employee_group_description type: string requestExample: 6 responseExample: 2092014-07-21 time_bank_update_get: tag: Time Bank Updates summary: Get detailed information about a time bank update description: Returns the full record of a specific time bank update including per-employee breakdown. requestElement: time_bank_update_get requestFields: - name: time_bank_update_id type: integer required: true responseFields: - name: time_bank_update_id type: integer - name: date_from type: string format: date - name: date_to type: string format: date - name: number_weeks type: integer - name: minutes_regular_time type: integer - name: minutes_overtime type: integer - name: minutes_total type: integer - name: time_bank_tx[] type: array description: Per-employee time bank detail requestExample: 209 responseExample: 209 invoice_list: tag: Invoices summary: Get list of invoices (summary) description: Returns all invoices in summary format. Filter by `customer_id`. requestElement: invoice_list requestFields: - name: customer_id type: integer description: Optional filter responseFields: - name: invoice_id type: integer - name: numero type: integer - name: customer_id type: integer - name: customer_name type: string - name: status type: integer - name: date type: string format: date requestExample: 155 responseExample: 2543 invoice_get: tag: Invoices summary: Get detailed information about an invoice description: Returns the full record of a specific invoice including all invoice lines. requestElement: invoice_get requestFields: - name: invoice_id type: integer required: true responseFields: - name: invoice_id type: integer - name: numero type: integer - name: customer_id type: integer - name: status type: integer - name: date type: string format: date - name: subtotal type: number - name: tax1_amount type: number - name: tax2_amount type: number - name: inv_total type: number - name: invoice_line[] type: array requestExample: 254 responseExample: 2541690.82 employee_category_list: tag: Reference Lists summary: Get list of employee categories description: Returns the full list of employee categories. requestElement: employee_category_list requestFields: [] responseFields: - name: id type: integer description: Record ID - name: description type: string description: Record description requestExample: responseExample: activity_type_category_list: tag: Reference Lists summary: Get list of activity type categories description: Returns the full list of activity type categories. requestElement: activity_type_category_list requestFields: [] responseFields: - name: id type: integer description: Record ID - name: description type: string description: Record description requestExample: responseExample: customer_category_list: tag: Reference Lists summary: Get list of customer categories description: Returns the full list of customer categories. requestElement: customer_category_list requestFields: [] responseFields: - name: id type: integer description: Record ID - name: description type: string description: Record description requestExample: responseExample: project_category_list: tag: Reference Lists summary: Get list of project categories description: Returns the full list of project categories. requestElement: project_category_list requestFields: [] responseFields: - name: id type: integer description: Record ID - name: description type: string description: Record description requestExample: responseExample: expense_type_list: tag: Reference Lists summary: Get list of expense types description: Returns the full list of expense types. requestElement: expense_type_list requestFields: [] responseFields: - name: id type: integer description: Record ID - name: description type: string description: Record description requestExample: responseExample: fiscal_period_list: tag: Reference Lists summary: Get list of fiscal periods description: Returns the full list of fiscal periods. requestElement: fiscal_period_list requestFields: [] responseFields: - name: id type: integer description: Record ID - name: description type: string description: Record description requestExample: responseExample: tax_rate_list: tag: Reference Lists summary: Get list of tax rates description: Returns the full list of tax rates. requestElement: tax_rate_list requestFields: [] responseFields: - name: id type: integer description: Record ID - name: description type: string description: Record description requestExample: responseExample: