openapi: 3.0.0
info:
  title: Reports
  description: A report groups one or more expenses together for submission, approval, and reimbursement. This module covers the full lifecycle of a report - from creation in draft state, through submission and approval, to reimbursement and archival.
  contact: {}
  version: 1.0.0
servers:
  - url: https://www.zohoapis.com/expense/v1
    description: API Endpoint
tags:
  - name: expense-reports
    description: Expense-Reports Module
paths:
  /expensereports:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: create_expense_report
      summary: Create a report
      description: Create a new report in your organization by providing the report name, start date, end date, and organization ID - all of which are mandatory. Optionally, you can include a description of the report's purpose, attach existing expenses by passing their expense IDs, associate the report with a customer or project, add custom field values, and apply tags for categorization. The expenses array accepts objects containing the expense_id and an order value to control sequencing within the report.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/create-an-expense-report-request'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create-an-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    get:
      tags:
        - expense-reports
      operationId: list_expense_reports
      summary: List of all reports
      description: Retrieve a list of all reports belonging to your organization. You must provide the organization ID. You can narrow down results by filtering on report status (draft, submitted, approved, rejected, reimbursed, or recalled) using the filter_by query parameter. The response returns each report's summary information including report name, number, status, total amounts, submission and approval dates, approver details, policy info, and custom field values.
      parameters:
        - name: filter_by
          in: query
          description: For Filtering Expense Reports based on status.
          required: false
          schema:
            type: string
            pattern: ^(Status\.(All|Submitted|Draft|TakenBack|SendBack|Approved|Rejected|ApprovalInProgress|Reimbursed|Archived|OverDue|Unsubmitted|ModifiableReports|Exported|Unexported)|Type\.(Approval|Report|MyApproval|SharedReport|QBO|QBD)|FDStatus\.(NotRun|Completed))(,(Status\.(All|Submitted|Draft|TakenBack|SendBack|Approved|Rejected|ApprovalInProgress|Reimbursed|Archived|OverDue|Unsubmitted|ModifiableReports|Exported|Unexported)|Type\.(Approval|Report|MyApproval|SharedReport|QBO|QBD)|FDStatus\.(NotRun|Completed)))*$
          example: Type.Approval,Status.Submitted
        - name: page
          in: query
          description: Page number to be fetched. Default value is 1.
          required: false
          schema:
            type: integer
            default: 1
          example: 1
        - name: per_page
          in: query
          description: Number of records to be fetched per page. Default value is 200.
          required: false
          schema:
            type: integer
            default: 200
          example: 200
        - name: status
          in: query
          description: 'Filter by report status (comma-separated, lowercase). Values: All, submitted, recalled, approved, unapproved, reimbursed, rejected, overdue, unsubmitted, draft, archived, modifiable.'
          required: false
          schema:
            type: string
          example: submitted,approved
        - name: type
          in: query
          description: 'Filter by report type. Common values: report, approval, myapproval, sharedreport, trip.'
          required: false
          schema:
            type: string
          example: approval
        - name: search_text
          in: query
          description: Free-text search across the report name, number, and description.
          required: false
          schema:
            type: string
          example: client visit Q2
        - name: export_status
          in: query
          description: Filter by export state.
          required: false
          schema:
            type: string
            enum:
              - exported
              - unexported
          example: unexported
        - name: sort_column
          in: query
          description: Column to sort the list by. Supported values include start_date, end_date, approved_date, due_date, report_name, report_number, created_time, total, last_submitted_date, submitted_by, submitted_date, submitter_name, approver_id, approver_name, status, customer_name, project_name, reimbursable_total, last_modified_time, trip_status, trip_start_date, trip_end_date, claim_type_name, reimbursement_date.
          required: false
          schema:
            type: string
          example: submitted_date
        - name: report_shared_type
          in: query
          description: Restrict the list by sharing relationship.
          required: false
          schema:
            type: string
            enum:
              - all
              - own
              - shared
              - myapproval
          example: myapproval
        - name: violation_type
          in: query
          description: Filter by policy violation type.
          required: false
          schema:
            type: string
            enum:
              - All
              - amount
              - receipt
              - uncategorized
              - description
          example: amount
        - name: sub_status
          in: query
          description: Filter by sub-status code (alphanumeric/underscore, up to 10 chars).
          required: false
          schema:
            type: string
          example: fd_done
        - name: user_email
          in: query
          description: Lookup reports by submitter email. Accepts a username, domain or full email.
          required: false
          schema:
            type: string
          example: alex@example.com
        - name: ozs_name
          in: query
          description: Restrict to reports originating from a specific integration source.
          required: false
          schema:
            type: string
            enum:
              - crm
              - projects
              - desk
              - people
              - zworkerly
              - zcampaigns
              - qbo
              - qbd
              - xero
          example: crm
        - name: user_agent
          in: query
          description: Hint about the calling user-agent context.
          required: false
          schema:
            type: string
            enum:
              - zcrm
          example: zcrm
        - name: view_type
          in: query
          description: Caller view-type context. Refer to the view_type regex in security configuration.
          required: false
          schema:
            type: string
          example: default
        - name: customview_id
          in: query
          description: Apply a saved custom view's filter set.
          required: false
          schema:
            type: string
          example: '16367000000098001'
        - name: user_id
          in: query
          description: Filter by User Id.
          required: false
          schema:
            type: string
          example: '16367000000074027'
        - name: customer_id
          in: query
          description: Filter by Customer Id.
          required: false
          schema:
            type: string
          example: '16367000000075081'
        - name: project_id
          in: query
          description: Filter by Project Id.
          required: false
          schema:
            type: string
          example: '16367000001243001'
        - name: policy_id
          in: query
          description: Filter by Policy Id.
          required: false
          schema:
            type: string
          example: '16367000000074200'
        - name: department_id
          in: query
          description: Filter by Department Id.
          required: false
          schema:
            type: string
          example: '16367000000074300'
        - name: approver_id
          in: query
          description: Filter by Approver Id.
          required: false
          schema:
            type: string
          example: '16367000000074400'
        - name: submitted_by
          in: query
          description: Filter by Submitted By.
          required: false
          schema:
            type: string
          example: '16367000000074027'
        - name: submitted_to
          in: query
          description: Filter by Submitted To.
          required: false
          schema:
            type: string
          example: '16367000000074500'
        - name: approved_by
          in: query
          description: Filter by Approved By.
          required: false
          schema:
            type: string
          example: '16367000000074600'
        - name: created_by
          in: query
          description: Filter by Created By.
          required: false
          schema:
            type: string
          example: '16367000000074700'
        - name: claim_type_id
          in: query
          description: Filter by Claim Type Id.
          required: false
          schema:
            type: string
          example: '16367000000074800'
        - name: trip_id
          in: query
          description: Filter by Trip Id.
          required: false
          schema:
            type: string
          example: '16367000000074900'
        - name: imprest_account_id
          in: query
          description: Filter by Imprest Account Id.
          required: false
          schema:
            type: string
          example: '16367000000075000'
        - name: rcy_currency_id
          in: query
          description: Filter by Rcy Currency Id.
          required: false
          schema:
            type: string
          example: '16367000000075100'
        - name: zcrm_account_id
          in: query
          description: Filter by Crm Account Id.
          required: false
          schema:
            type: string
          example: '16367000000075200'
        - name: zcrm_contact_id
          in: query
          description: Filter by Crm Contact Id.
          required: false
          schema:
            type: string
          example: '16367000000075300'
        - name: zcrm_potential_id
          in: query
          description: Filter by Crm Potential Id.
          required: false
          schema:
            type: string
          example: '16367000000075400'
        - name: is_imprest_report
          in: query
          description: When true, returns only imprest reports.
          required: false
          schema:
            type: boolean
          example: 'false'
        - name: is_user_view
          in: query
          description: When true, restricts the list to the user view.
          required: false
          schema:
            type: boolean
          example: 'false'
        - name: is_international
          in: query
          description: When true, returns only international reports.
          required: false
          schema:
            type: boolean
          example: 'false'
        - name: quickCreateReport
          in: query
          description: Internal flag used by the quick-create flow.
          required: false
          schema:
            type: boolean
          example: 'false'
        - name: search_criteria
          in: query
          description: When true, applies the saved search criteria.
          required: false
          schema:
            type: boolean
          example: 'false'
        - name: can_associate_report_to_batch
          in: query
          description: Restrict to reports that can be associated to a payment batch.
          required: false
          schema:
            type: boolean
          example: 'false'
        - name: user_ids
          in: query
          description: Filter by multiple user IDs (comma-separated, up to 50).
          required: false
          schema:
            type: string
          example: 16367000000074027,16367000000074028
        - name: policy_ids
          in: query
          description: Filter by multiple policy IDs (comma-separated, up to 50; -1 allowed for "no policy").
          required: false
          schema:
            type: string
          example: 16367000000074200,16367000000074201
        - name: trip_status
          in: query
          description: 'Filter by trip status (comma-separated, up to 8). Values: All, draft, submitted, approved, rejected, cancelled, closed, recalled.'
          required: false
          schema:
            type: string
          example: submitted,approved
        - name: tag_option_id1
          in: query
          description: 'Tag slot 1: comma-separated list of tag option IDs (or `all`, `untagged`). Up to 100 values.'
          required: false
          schema:
            type: string
          example: 16367000000092002,untagged
        - name: tag_option_id2
          in: query
          description: 'Tag slot 2: comma-separated list of tag option IDs (or `all`, `untagged`). Up to 100 values.'
          required: false
          schema:
            type: string
          example: 16367000000092002,untagged
        - name: tag_option_id3
          in: query
          description: 'Tag slot 3: comma-separated list of tag option IDs (or `all`, `untagged`). Up to 100 values.'
          required: false
          schema:
            type: string
          example: 16367000000092002,untagged
        - name: tag_option_id4
          in: query
          description: 'Tag slot 4: comma-separated list of tag option IDs (or `all`, `untagged`). Up to 100 values.'
          required: false
          schema:
            type: string
          example: 16367000000092002,untagged
        - name: tag_option_id5
          in: query
          description: 'Tag slot 5: comma-separated list of tag option IDs (or `all`, `untagged`). Up to 100 values.'
          required: false
          schema:
            type: string
          example: 16367000000092002,untagged
        - name: tag_option_id6
          in: query
          description: 'Tag slot 6: comma-separated list of tag option IDs (or `all`, `untagged`). Up to 100 values.'
          required: false
          schema:
            type: string
          example: 16367000000092002,untagged
        - name: tag_option_id7
          in: query
          description: 'Tag slot 7: comma-separated list of tag option IDs (or `all`, `untagged`). Up to 100 values.'
          required: false
          schema:
            type: string
          example: 16367000000092002,untagged
        - name: tag_option_id8
          in: query
          description: 'Tag slot 8: comma-separated list of tag option IDs (or `all`, `untagged`). Up to 100 values.'
          required: false
          schema:
            type: string
          example: 16367000000092002,untagged
        - name: tag_option_id9
          in: query
          description: 'Tag slot 9: comma-separated list of tag option IDs (or `all`, `untagged`). Up to 100 values.'
          required: false
          schema:
            type: string
          example: 16367000000092002,untagged
        - name: tag_option_id10
          in: query
          description: 'Tag slot 10: comma-separated list of tag option IDs (or `all`, `untagged`). Up to 100 values.'
          required: false
          schema:
            type: string
          example: 16367000000092002,untagged
        - name: name
          in: query
          description: 'Search by name. Supports variants: <code>name_startswith</code>, <code>name_contains</code>, <code>name_in</code> and <code>name_not_in</code>. Maximum length is 100 characters per term.'
          required: false
          schema:
            type: string
          example: Travel reimbursement
        - name: report_number
          in: query
          description: 'Search by report number. Supports variants: <code>report_number_startswith</code>, <code>report_number_contains</code>, <code>report_number_in</code> and <code>report_number_not_in</code>. Maximum length is 100 characters per term.'
          required: false
          schema:
            type: string
          example: ER-00042
        - name: description
          in: query
          description: 'Search by description. Supports variants: <code>description_startswith</code>, <code>description_contains</code>, <code>description_in</code> and <code>description_not_in</code>. Maximum length is 100 characters per term.'
          required: false
          schema:
            type: string
          example: client visit
        - name: customer_name
          in: query
          description: 'Search by customer name. Supports variants: <code>customer_name_startswith</code>, <code>customer_name_contains</code>, <code>customer_name_in</code> and <code>customer_name_not_in</code>. Maximum length is 100 characters per term.'
          required: false
          schema:
            type: string
          example: Acme Inc.
        - name: project_name
          in: query
          description: 'Search by project name. Supports variants: <code>project_name_startswith</code>, <code>project_name_contains</code>, <code>project_name_in</code> and <code>project_name_not_in</code>. Maximum length is 100 characters per term.'
          required: false
          schema:
            type: string
          example: Q2 expansion
        - name: department_name
          in: query
          description: 'Search by department name. Supports variants: <code>department_name_startswith</code>, <code>department_name_contains</code>, <code>department_name_in</code> and <code>department_name_not_in</code>. Maximum length is 100 characters per term.'
          required: false
          schema:
            type: string
          example: Sales
        - name: start_date
          in: query
          description: 'Start date of the report period (yyyy-mm-dd). Supports variants: <code>start_date_start</code>, <code>start_date_end</code>, <code>start_date_before</code> and <code>start_date_after</code>.'
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-01'
        - name: start_date_start
          in: query
          description: Filter for reports where start_date is on or after the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-01'
        - name: start_date_end
          in: query
          description: Filter for reports where start_date is on or before the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-01'
        - name: start_date_before
          in: query
          description: Filter for reports where start_date is strictly before the given date (exclusive, yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-01'
        - name: start_date_after
          in: query
          description: Filter for reports where start_date is strictly after the given date (exclusive, yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-01'
        - name: end_date
          in: query
          description: 'End date of the report period (yyyy-mm-dd). Supports variants: <code>end_date_start</code>, <code>end_date_end</code>, <code>end_date_before</code> and <code>end_date_after</code>.'
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-30'
        - name: end_date_start
          in: query
          description: Filter for reports where end_date is on or after the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-30'
        - name: end_date_end
          in: query
          description: Filter for reports where end_date is on or before the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-30'
        - name: end_date_before
          in: query
          description: Filter for reports where end_date is strictly before the given date (exclusive, yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-30'
        - name: end_date_after
          in: query
          description: Filter for reports where end_date is strictly after the given date (exclusive, yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-30'
        - name: submitted_date
          in: query
          description: 'Date the report was submitted for approval (yyyy-mm-dd). Supports variants: <code>submitted_date_start</code>, <code>submitted_date_end</code>, <code>submitted_date_before</code> and <code>submitted_date_after</code>.'
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-02'
        - name: submitted_date_start
          in: query
          description: Filter for reports where submitted_date is on or after the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-02'
        - name: submitted_date_end
          in: query
          description: Filter for reports where submitted_date is on or before the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-02'
        - name: submitted_date_before
          in: query
          description: Filter for reports where submitted_date is strictly before the given date (exclusive, yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-02'
        - name: submitted_date_after
          in: query
          description: Filter for reports where submitted_date is strictly after the given date (exclusive, yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-02'
        - name: due_date
          in: query
          description: 'Due date for the report (yyyy-mm-dd). Supports variants: <code>due_date_start</code>, <code>due_date_end</code>, <code>due_date_before</code> and <code>due_date_after</code>.'
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-15'
        - name: due_date_start
          in: query
          description: Filter for reports where due_date is on or after the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-15'
        - name: due_date_end
          in: query
          description: Filter for reports where due_date is on or before the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-15'
        - name: due_date_before
          in: query
          description: Filter for reports where due_date is strictly before the given date (exclusive, yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-15'
        - name: due_date_after
          in: query
          description: Filter for reports where due_date is strictly after the given date (exclusive, yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-15'
        - name: date
          in: query
          description: 'Report date (yyyy-mm-dd). Supports variants: <code>date_start</code>, <code>date_end</code>, <code>date_before</code> and <code>date_after</code>.'
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-15'
        - name: date_start
          in: query
          description: Filter for reports where date is on or after the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-15'
        - name: date_end
          in: query
          description: Filter for reports where date is on or before the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-15'
        - name: date_before
          in: query
          description: Filter for reports where date is strictly before the given date (exclusive, yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-15'
        - name: date_after
          in: query
          description: Filter for reports where date is strictly after the given date (exclusive, yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-04-15'
        - name: approved_date
          in: query
          description: 'Date the report was approved (yyyy-mm-dd). Supports variants: <code>approved_date_start</code>, <code>approved_date_end</code>, <code>approved_date_before</code> and <code>approved_date_after</code>.'
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-05'
        - name: approved_date_start
          in: query
          description: Filter for reports where approved_date is on or after the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-05'
        - name: approved_date_end
          in: query
          description: Filter for reports where approved_date is on or before the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-05'
        - name: approved_date_before
          in: query
          description: Filter for reports where approved_date is strictly before the given date (exclusive, yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-05'
        - name: approved_date_after
          in: query
          description: Filter for reports where approved_date is strictly after the given date (exclusive, yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-05'
        - name: last_modified_date
          in: query
          description: 'Date the report was last modified (yyyy-mm-dd). Supports variants: <code>last_modified_date_start</code>, <code>last_modified_date_end</code>, <code>last_modified_date_before</code> and <code>last_modified_date_after</code>.'
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-10'
        - name: last_modified_date_start
          in: query
          description: Filter for reports where last_modified_date is on or after the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-10'
        - name: last_modified_date_end
          in: query
          description: Filter for reports where last_modified_date is on or before the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-10'
        - name: last_modified_date_before
          in: query
          description: Filter for reports where last_modified_date is strictly before the given date (exclusive, yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-10'
        - name: last_modified_date_after
          in: query
          description: Filter for reports where last_modified_date is strictly after the given date (exclusive, yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
          example: '2026-05-10'
        - name: last_modified_time
          in: query
          description: 'Datetime the report was last modified (UTC). Supports variants: <code>last_modified_time_start</code>, <code>last_modified_time_end</code>, <code>last_modified_time_before</code> and <code>last_modified_time_after</code>.'
          required: false
          schema:
            type: string
            format: date-time
          example: '2026-05-10T14:30:00Z'
        - name: last_modified_time_start
          in: query
          description: Filter for reports where last_modified_time is start the given datetime (UTC).
          required: false
          schema:
            type: string
            format: date-time
          example: '2026-05-10T14:30:00Z'
        - name: last_modified_time_end
          in: query
          description: Filter for reports where last_modified_time is end the given datetime (UTC).
          required: false
          schema:
            type: string
            format: date-time
          example: '2026-05-10T14:30:00Z'
        - name: last_modified_time_before
          in: query
          description: Filter for reports where last_modified_time is before the given datetime (UTC).
          required: false
          schema:
            type: string
            format: date-time
          example: '2026-05-10T14:30:00Z'
        - name: last_modified_time_after
          in: query
          description: Filter for reports where last_modified_time is after the given datetime (UTC).
          required: false
          schema:
            type: string
            format: date-time
          example: '2026-05-10T14:30:00Z'
        - name: amount
          in: query
          description: 'Filter by total report amount. Supports variants: <code>amount_start</code>, <code>amount_end</code>, <code>amount_less_than</code>, <code>amount_less_equals</code>, <code>amount_greater_than</code> and <code>amount_greater_equals</code>.'
          required: false
          schema:
            type: number
            format: double
          example: 100
        - name: amount_start
          in: query
          description: Filter for reports where amount matches the start comparator.
          required: false
          schema:
            type: number
            format: double
          example: 100
        - name: amount_end
          in: query
          description: Filter for reports where amount matches the end comparator.
          required: false
          schema:
            type: number
            format: double
          example: 100
        - name: amount_less_than
          in: query
          description: Filter for reports where amount matches the less than comparator.
          required: false
          schema:
            type: number
            format: double
          example: 100
        - name: amount_less_equals
          in: query
          description: Filter for reports where amount matches the less equals comparator.
          required: false
          schema:
            type: number
            format: double
          example: 100
        - name: amount_greater_than
          in: query
          description: Filter for reports where amount matches the greater than comparator.
          required: false
          schema:
            type: number
            format: double
          example: 100
        - name: amount_greater_equals
          in: query
          description: Filter for reports where amount matches the greater equals comparator.
          required: false
          schema:
            type: number
            format: double
          example: 100
        - name: reimbursable_amount
          in: query
          description: 'Filter by reimbursable amount. Supports variants: <code>reimbursable_amount_start</code>, <code>reimbursable_amount_end</code>, <code>reimbursable_amount_less_than</code>, <code>reimbursable_amount_less_equals</code>, <code>reimbursable_amount_greater_than</code> and <code>reimbursable_amount_greater_equals</code>.'
          required: false
          schema:
            type: number
            format: double
          example: 100
        - name: reimbursable_amount_start
          in: query
          description: Filter for reports where reimbursable_amount matches the start comparator.
          required: false
          schema:
            type: number
            format: double
          example: 100
        - name: reimbursable_amount_end
          in: query
          description: Filter for reports where reimbursable_amount matches the end comparator.
          required: false
          schema:
            type: number
            format: double
          example: 100
        - name: reimbursable_amount_less_than
          in: query
          description: Filter for reports where reimbursable_amount matches the less than comparator.
          required: false
          schema:
            type: number
            format: double
          example: 100
        - name: reimbursable_amount_less_equals
          in: query
          description: Filter for reports where reimbursable_amount matches the less equals comparator.
          required: false
          schema:
            type: number
            format: double
          example: 100
        - name: reimbursable_amount_greater_than
          in: query
          description: Filter for reports where reimbursable_amount matches the greater than comparator.
          required: false
          schema:
            type: number
            format: double
          example: 100
        - name: reimbursable_amount_greater_equals
          in: query
          description: Filter for reports where reimbursable_amount matches the greater equals comparator.
          required: false
          schema:
            type: number
            format: double
          example: 100
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/list-of-all-expense-reports-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.READ
    delete:
      tags:
        - expense-reports
      operationId: bulk_delete_expense_reports
      summary: Delete multiple reports
      description: Permanently delete multiple reports in a single request by providing the organization ID and report IDs. The reports must typically be in "draft" or "rejected" status to be eligible for deletion - reports that have been submitted, approved, or reimbursed cannot be deleted. This action is irreversible and removes the reports from the system. The expenses associated with the report will be listed as unreported expenses in the Expenses module, available to be added to a new report.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bulk-delete-expense-reports-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bulk-delete-expense-reports-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.DELETE
    parameters:
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}:
    x-mcp-group:
      - Expense Reports
    get:
      tags:
        - expense-reports
      operationId: get_expense_report
      summary: Retrieve details of a report
      description: Fetch the complete details of a specific report by providing the report ID and the organization ID. The response includes the full report metadata, all associated line-item expenses with their amounts, categories, merchants, receipts, tax details, and mileage information. It also returns the complete approval chain (current, next, and previous approver), any reimbursements already recorded, advance payments applied against the report, unreported expenses available to add, and the list of users involved in the workflow.
      parameters:
        - name: print
          in: query
          description: When true, returns the report formatted for printing.
          required: false
          schema:
            type: boolean
          example: false
        - name: group_by
          in: query
          description: Group expense lines in the response (refer to the reportgroupby regex for accepted values).
          required: false
          schema:
            type: string
          example: category
        - name: template_id
          in: query
          description: Use a specific PDF template for rendering the report.
          required: false
          schema:
            type: string
          example: '16367000000099001'
        - name: isCallForOEmbed
          in: query
          description: Internal flag indicating the request originates from an oEmbed context.
          required: false
          schema:
            type: boolean
          example: false
        - name: password
          in: query
          description: Password to unlock a password-protected report. Sensitive value - prefer transport via header.
          required: false
          schema:
            type: string
          example: ''
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/retrieve-details-of-an-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.READ
    put:
      tags:
        - expense-reports
      operationId: update_expense_report
      summary: Update a report
      description: Update an existing report by providing its report ID and the organization ID. You can optionally update the report name, description, start date, end date, customer or project association, custom field values, and tags. Note that the report must typically be in a draft or recalled state to be editable - reports that have already been submitted or approved cannot be modified without first being recalled.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/update-an-expense-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/update-an-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.UPDATE
    delete:
      tags:
        - expense-reports
      operationId: delete_expense_report
      summary: Delete a report
      description: Permanently delete a report by providing the organization ID and report ID. The report must typically be in "draft" or "rejected" status to be eligible for deletion - reports that have been submitted, approved, or reimbursed cannot be deleted. This action is irreversible and removes the report from the system. The expenses associated with the report will be listed as unreported expenses in the Expenses module, available to be added to a new report.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/delete-an-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.DELETE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/submit:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: submit_expense_report
      summary: Submit a report
      description: Submit a draft or recalled report for approval by providing the report ID and the organization ID. The user must select an approver to whom the report will be submitted and can specify email addresses of recipients to be CCed on submission. The report must be in "draft" or "recalled" status, should have at least one expense attached before submission can succeed.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/submit-a-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/submit-a-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.UPDATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/approve:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: approve_expense_report
      summary: Approve a report
      description: Approve a submitted report by providing the report ID and the organization ID. The report must currently be in "submitted" status, and the user must be an authorized approver in the report's approval workflow. Upon success, the report's status transitions to "approved" and the submitter is notified.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/approve-an-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.approval.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/reject:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: reject_expense_report
      summary: Reject a report
      description: Reject a submitted report by providing the report ID and the organization ID. You can optionally include a comments field in the request body explaining the reason for rejection (e.g., "Purpose is not valid."). The report must be in "submitted" status and the user must be an authorized approver. Once rejected, the report is sent back to the submitter who can then revise and resubmit it.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/reject-an-expense-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/reject-an-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.approval.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/reimburse:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: reimburse_expense_report
      summary: Reimburse a report
      description: Record a reimbursement against an approved report by providing the report ID and the organization ID. The report must be in "approved" status and the authenticated user must have reimbursement permissions within the organization. The reimbursement can be recorded offline or paid online. For an offline (manual) reimbursement, account_id - the paid-through account from which the amount is paid - is mandatory; amount (defaults to the report's reimbursable amount), date, reference_number, currency_id, exchange_rate and notes are optional. For an online reimbursement, a payment gateway must be configured for the organization and both account_id (the source account linked to the gateway) and bank_account_id (the employee's bank account to be paid) are mandatory, with the payment authorized using payment_token, or otp together with otp_id.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/reimburse-an-expense-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/reimburse-an-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.reimbursement.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/approvalhistory:
    x-mcp-group:
      - Expense Reports
    get:
      tags:
        - expense-reports
      operationId: approval_history_expense_report
      summary: Approval history of a report
      description: Retrieve the complete approval audit trail for a specific report by providing the report ID and the organization ID. The response returns a chronological list of all approval actions taken on the report, including each entry's status transition (previous status to new status), the approver's name and email, any comments left during approval or rejection, and the date and time of each action.
      parameters:
        - name: show_resolved_duplicates
          in: query
          description: When true, includes duplicate-detection audit entries that were later resolved.
          required: false
          schema:
            type: boolean
          example: false
        - name: show_policy_info
          in: query
          description: When true, includes policy violation details for each history entry.
          required: false
          schema:
            type: boolean
          example: false
        - name: group_by
          in: query
          description: Group history rows in the response (refer to the groupbyregex regex for accepted values).
          required: false
          schema:
            type: string
          example: date
        - name: show_bank_account_details
          in: query
          description: When true, includes bank account details for reimbursement events.
          required: false
          schema:
            type: boolean
          example: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/approval-history-of-an-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.READ
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/takeback:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: takeback_expense_report
      summary: Take back a report
      description: Recall a submitted report.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/takeback-an-expense-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/takeback-an-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/archive:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: archive_expense_report
      summary: Archive a report
      description: Archive a report.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/archive-an-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/unarchive:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: unarchive_expense_report
      summary: Unarchive a report
      description: Unarchive a report.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/unarchive-an-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/share:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: share_expense_report
      summary: Share a report
      description: Share a report with other users in the organization.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/share-an-expense-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/share-an-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/forwardapproval:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: forward_approval_expense_report
      summary: Forward approval of a report
      description: Forward the approval of a report to another approver.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/forward-approval-of-an-expense-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/forward-approval-of-an-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.approval.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/expense/{expense_id}/reject:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: reject_expense_in_report
      summary: Reject an expense in a report
      description: Reject a single expense line item within a report.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/reject-an-expense-in-a-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/reject-an-expense-in-a-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.approval.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - name: expense_id
        in: path
        required: true
        description: Unique identifier of the expense within the report.
        schema:
          type: string
        example: '16367000000089001'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/expensebulkreject:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: bulk_reject_expenses_in_report
      summary: Bulk reject expenses in a report
      description: Reject multiple expense line items within a report in a single call.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bulk-reject-expenses-in-a-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bulk-reject-expenses-in-a-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.approval.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/validate:
    x-mcp-group:
      - Expense Reports
    get:
      tags:
        - expense-reports
      operationId: validate_expense_report
      summary: Validate a report
      description: Validate a report before submission. Returns any policy violations, missing-receipt warnings, or other issues that would block submission.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/validate-an-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.READ
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/receipt:
    x-mcp-group:
      - Expense Reports
    get:
      tags:
        - expense-reports
      operationId: get_expense_report_receipt
      summary: Retrieve the receipt of a report
      description: Download the receipt file associated with a report.
      parameters:
        - name: inline
          in: query
          description: When true, returns the file inline (display) instead of as an attachment download.
          required: false
          schema:
            type: boolean
          example: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get-expense-report-receipt-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.READ
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/comments:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: add_comment_to_expense_report
      summary: Add a comment to a report
      description: Add a comment to a report, optionally tying the comment to a specific expense line.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/add-comment-to-expense-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/add-comment-to-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/comments/{comment_id}:
    x-mcp-group:
      - Expense Reports
    delete:
      tags:
        - expense-reports
      operationId: delete_comment_of_expense_report
      summary: Delete a comment of a report
      description: Delete a comment from a report.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/delete-comment-of-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.DELETE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - name: comment_id
        in: path
        required: true
        description: Unique identifier of the comment.
        schema:
          type: string
        example: '16367000000091001'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/tags:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: associate_tags_to_expense_report
      summary: Associate tags to a report
      description: Associate or update tags on a report.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/associate-tags-to-expense-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/associate-tags-to-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/addexpenses:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: add_expenses_to_expense_report
      summary: Add expenses to a report
      description: Attach one or more existing expenses to a report.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/add-expenses-to-expense-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/add-expenses-to-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/removeexpenses:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: remove_expenses_from_expense_report
      summary: Remove expenses from a report
      description: Detach one or more expenses from a report.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/remove-expenses-from-expense-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/remove-expenses-from-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/documents:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: upload_expense_report_attachment
      summary: Upload attachment(s) to a report
      description: Upload one or more attachments to a report. Supports common file types up to 10 MB each, with a max of 20 files per request.
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/upload-expense-report-attachment-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/upload-expense-report-attachment-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/documents/{document_id}:
    x-mcp-group:
      - Expense Reports
    get:
      tags:
        - expense-reports
      operationId: get_expense_report_attachment
      summary: Retrieve an attachment of a report
      description: Download a specific attachment file associated with a report.
      parameters:
        - name: image_size
          in: query
          description: Render size for image attachments.
          required: false
          schema:
            type: string
            enum:
              - xlarge
              - large
              - small
              - tiny
          example: large
        - name: print
          in: query
          description: When true, returns the file optimized for printing.
          required: false
          schema:
            type: boolean
          example: false
        - name: inline
          in: query
          description: When true, returns the file inline (display) instead of as an attachment download.
          required: false
          schema:
            type: boolean
          example: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get-expense-report-attachment-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.READ
    delete:
      tags:
        - expense-reports
      operationId: delete_expense_report_attachment
      summary: Delete an attachment of a report
      description: Delete a specific attachment from a report. Set `unassociate=true` to detach the file from the report without deleting it.
      parameters:
        - name: unassociate
          in: query
          description: When true, the document is detached from the report but not deleted.
          required: false
          schema:
            type: boolean
          example: false
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/delete-expense-report-attachment-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.DELETE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - name: document_id
        in: path
        required: true
        description: Unique identifier of the attachment document.
        schema:
          type: string
        example: '16367000000093001'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/documents/{document_id}/upload:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: reupload_expense_report_attachment
      summary: Re-upload an attachment of a report
      description: Replace the contents of an existing attachment, optionally sourcing the new file from a cloud provider.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/reupload-expense-report-attachment-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/reupload-expense-report-attachment-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - name: document_id
        in: path
        required: true
        description: Unique identifier of the attachment document.
        schema:
          type: string
        example: '16367000000093001'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/removeadvancepayment:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: remove_advance_payment_from_expense_report
      summary: Remove advance payments from a report
      description: Detach one or more advance payments from a report.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/remove-advance-payment-from-expense-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/remove-advance-payment-from-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/budgetsummary:
    x-mcp-group:
      - Expense Reports
    get:
      tags:
        - expense-reports
      operationId: get_expense_report_budget_summary
      summary: Retrieve the budget summary of a report
      description: Retrieve the budget vs. actual summary for a report.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get-expense-report-budget-summary-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.READ
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/reimbursement:
    x-mcp-group:
      - Expense Reports
    get:
      tags:
        - expense-reports
      operationId: get_expense_report_reimbursement
      summary: Retrieve the reimbursement details of a report
      description: Retrieve the reimbursement details associated with a report.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/get-expense-report-reimbursement-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.reimbursement.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/status/{action}:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: change_status_of_expense_report
      summary: Change the status of a report
      description: Apply a generic status change action to a report.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/change-status-of-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - name: action
        in: path
        required: true
        description: Status action token (lowercase, e.g. submitted, approved).
        schema:
          type: string
        example: approved
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/export:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: export_expense_report
      summary: Export a report
      description: Trigger an asynchronous export of a report.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/export-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.orgsettings.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/{expense_report_id}/reimburse/cancel:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: cancel_reimbursement_of_expense_report
      summary: Cancel a reimbursement of a report
      description: Cancel a previously recorded reimbursement on a report.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/cancel-reimbursement-of-expense-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.reimbursement.CREATE
    parameters:
      - name: expense_report_id
        in: path
        required: true
        description: Unique identifier of the report.
        schema:
          type: string
        example: '16367000000081005'
      - $ref: '#/components/parameters/organization_id'
  /expenses/{expense_id}/addtoreport:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: add_expense_to_report
      summary: Add an expense to a report
      description: Attach a single expense to a report. Useful when the caller is operating in the context of an expense rather than a report.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/add-expense-to-report-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/add-expense-to-report-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - name: expense_id
        in: path
        required: true
        description: Unique identifier of the expense.
        schema:
          type: string
        example: '16367000000089001'
      - $ref: '#/components/parameters/organization_id'
  /expensereports/submit:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: bulk_submit_expense_reports
      summary: Submit multiple reports
      description: Submit multiple reports for approval in a single request by providing the organization ID and an array of report IDs. The user must select an approver to whom the reports will be submitted and can specify email addresses of recipients to be CCed on the submission notification. All selected reports must be in "draft" or "recalled" status, should have at least one expense attached, and all mandatory fields must be complete before submission can succeed.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bulk-submit-expense-reports-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bulk-submit-expense-reports-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.UPDATE
    parameters:
      - $ref: '#/components/parameters/organization_id'
  /expensereports/approve:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: bulk_approve_expense_reports
      summary: Approve multiple reports
      description: Approve multiple submitted reports at once by providing the organization ID and an array of report IDs. All selected reports must currently be in "submitted" status, and the authenticated user must be an authorized approver for each of them. Upon success, all specified reports transition to "approved" status and the respective submitters are notified.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bulk-approve-expense-reports-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bulk-approve-expense-reports-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.approval.CREATE
    parameters:
      - $ref: '#/components/parameters/organization_id'
  /expensereports/reject:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: bulk_reject_expense_reports
      summary: Reject multiple reports
      description: Reject multiple submitted reports in a single request by providing the organization ID and an array of report IDs. The user can include a comment explaining the reason for rejection, which will apply to all the selected reports. All reports must be in "submitted" status and the authenticated user must be an authorized approver. Once rejected, the reports are sent back to their respective submitters for revision.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bulk-reject-expense-reports-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bulk-reject-expense-reports-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.approval.CREATE
    parameters:
      - $ref: '#/components/parameters/organization_id'
  /expensereports/reimburse:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: bulk_reimburse_expense_reports
      summary: Reimburse multiple reports
      description: Record reimbursements for multiple approved reports at once by providing the organization ID and an array of report IDs. All selected reports must be in "approved" status and the authenticated user must have reimbursement permissions within the organization. Use the via_online flag to choose the mode. For an offline reimbursement (via_online=false), account_id - the paid-through account from which the amount is paid - is mandatory, while reimbursed_date and reference_number are optional. For an online reimbursement (via_online=true), a payment gateway must be configured for the organization and account_id (the source account linked to the gateway) along with a configured employee bank account for each report are mandatory.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bulk-reimburse-expense-reports-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bulk-reimburse-expense-reports-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.reimbursement.CREATE
    parameters:
      - $ref: '#/components/parameters/organization_id'
  /expensereports/archive:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: bulk_archive_expense_reports
      summary: Archive multiple reports
      description: Archive multiple reports in a single request by providing the organization ID and an array of report IDs. Archiving moves completed or older reports out of the active view without deleting them, helping users keep their workspace organized. Archived reports can still be accessed and searched but will no longer appear in the default report listing.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bulk-archive-expense-reports-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bulk-archive-expense-reports-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - $ref: '#/components/parameters/organization_id'
  /expensereports/unarchive:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: bulk_unarchive_expense_reports
      summary: Unarchive multiple reports
      description: Restore multiple previously archived reports back to the active list by providing the organization ID and an array of report IDs. Once unarchived, the reports will reappear in the default report listing and resume their previous status. This action is useful when an archived report needs further action or review.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bulk-unarchive-expense-reports-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bulk-unarchive-expense-reports-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - $ref: '#/components/parameters/organization_id'
  /expensereports/forwardapproval:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: bulk_forward_approval_expense_reports
      summary: Forward approval of multiple reports
      description: Forward the approval of multiple reports to another approver in a single call.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bulk-forward-approval-expense-reports-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bulk-forward-approval-expense-reports-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.approval.CREATE
    parameters:
      - $ref: '#/components/parameters/organization_id'
  /expensereports/status/{action}:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: bulk_change_status_of_expense_reports
      summary: Change the status of multiple reports
      description: Apply a generic status change action to multiple reports in a single call.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bulk-change-status-of-expense-reports-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bulk-change-status-of-expense-reports-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - name: action
        in: path
        required: true
        description: Status action token (lowercase, e.g. submitted, approved).
        schema:
          type: string
        example: approved
      - $ref: '#/components/parameters/organization_id'
  /expensereports/substatus/reset:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: bulk_reset_substatus_of_expense_reports
      summary: Reset the substatus of multiple reports
      description: Reset the substatus field for multiple reports in a single call.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bulk-reset-substatus-of-expense-reports-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bulk-reset-substatus-of-expense-reports-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.CREATE
    parameters:
      - $ref: '#/components/parameters/organization_id'
  /expensereports/bulkfieldupdate:
    x-mcp-group:
      - Expense Reports
    post:
      tags:
        - expense-reports
      operationId: bulk_field_update_expense_reports
      summary: Bulk update fields of multiple reports
      description: Apply the same field updates to multiple reports in a single call (mass edit).
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bulk-field-update-expense-reports-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bulk-field-update-expense-reports-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoExpense.expensereport.UPDATE
    parameters:
      - $ref: '#/components/parameters/organization_id'
components:
  parameters:
    organization_id:
      name: X-com-zoho-expense-organizationid
      description: ID of the organization
      in: header
      required: true
      schema:
        type: string
      example: '10234695'
  schemas:
    gendoc-attributes-schema:
      $ref: '#/components/schemas/expense_report-response'
    expense_report-response:
      type: object
      properties:
        report_id:
          $ref: '#/components/schemas/report_id'
        report_name:
          $ref: '#/components/schemas/report_name'
        description:
          $ref: '#/components/schemas/description'
        report_number:
          $ref: '#/components/schemas/report_number'
        start_date:
          $ref: '#/components/schemas/start_date'
        end_date:
          $ref: '#/components/schemas/end_date'
        status:
          $ref: '#/components/schemas/status'
        currency_id:
          $ref: '#/components/schemas/currency_id'
        price_precision:
          $ref: '#/components/schemas/price_precision'
        currency_code:
          $ref: '#/components/schemas/currency_code'
        total:
          $ref: '#/components/schemas/total'
        reimbursable_total:
          $ref: '#/components/schemas/reimbursable_total'
        non_reimbursable_total:
          $ref: '#/components/schemas/non_reimbursable_total'
        created_time:
          $ref: '#/components/schemas/created_time'
        created_date:
          $ref: '#/components/schemas/created_date'
        created_by_id:
          $ref: '#/components/schemas/created_by_id'
        created_by_name:
          $ref: '#/components/schemas/created_by_name'
        created_by_email:
          $ref: '#/components/schemas/created_by_email'
        tags:
          $ref: '#/components/schemas/tags'
        expenses:
          $ref: '#/components/schemas/expenses'
        expired_expense_count:
          $ref: '#/components/schemas/expired_expense_count'
        reimbursable_expenses_count:
          $ref: '#/components/schemas/reimbursable_expenses_count'
        non_reimbursable_expenses_count:
          $ref: '#/components/schemas/non_reimbursable_expenses_count'
        custom_fields:
          $ref: '#/components/schemas/custom_fields'
        customer_id:
          $ref: '#/components/schemas/customer_id'
        customer_name:
          $ref: '#/components/schemas/customer_name'
        project_id:
          $ref: '#/components/schemas/project_id'
        project_name:
          $ref: '#/components/schemas/project_name'
        employee_number:
          $ref: '#/components/schemas/employee_number'
        department_id:
          $ref: '#/components/schemas/department_id'
        department_name:
          $ref: '#/components/schemas/department_name'
        policy_id:
          $ref: '#/components/schemas/policy_id'
        policy_name:
          $ref: '#/components/schemas/policy_name'
    report_id:
      description: Unique ID for report generated by the server . This is used as identifier.
      type: string
      example: '16367000000081005'
    report_name:
      description: Name of the report.
      type: string
      example: Trip to SFA
    description:
      description: Description of the report.
      type: string
      example: To client office
    report_number:
      description: Report Number.
      type: string
      example: ER-00001
    start_date:
      description: Start date of the report.
      type: string
      example: '2017-02-07'
    end_date:
      description: End date of the report.
      type: string
      example: '2017-02-18'
    due_date:
      description: Due date for the report.
      type: string
      example: '2017-03-15'
    status:
      description: Status of the report. Possible values can be <code>draft</code> or <code>submitted</code> or <code>approved</code> or <code>rejected</code> or <code>reimbursed</code> or <code>recalled</code>.
      type: string
      example: submitted
    is_archived:
      description: Whether the report is archived. It can either be <code>true</code> or <code>false</code>.
      type: boolean
      example: false
    due_days:
      description: Number of days till the due date.
      type: string
      example: Due in 15 days
    submitted_date:
      description: Date of report submission.
      type: string
      example: '2017-02-28'
    last_submitted_date:
      description: Date of previous submission.
      type: string
      example: '2017-02-28'
    currency_id:
      description: Unique ID for currency.
      type: string
      example: '16367000000000099'
    price_precision:
      description: Precise amount upto n decimal points.
      type: integer
      example: 2
    currency_code:
      description: Currency code.
      type: string
      example: INR
    approver_id:
      description: Unique ID for the current approver.
      type: string
      example: '16367000000073001'
    approver_name:
      description: Current approver name.
      type: string
      example: PATRICIA BOYLE
    approver_email:
      description: Email ID of the current approver.
      type: string
      example: patriciab@zillum.com
    approver_photo_url:
      description: Photo Url of the current approver.
      type: string
      example: https://contacts.zoho.com/file?ID=16b87b9dbae5b1008b32c9736141b6f63b3864c8cf94d900cf9bb346f0eb97b105c58df21a12283d421fa80a6cb97ffca294a909bc0c7ae9f1e14dd2e499565d&fs=thumb
    submitted_to_id:
      description: ID of the person to whom the report was submitted first.
      type: string
      example: '16367000000073001'
    submitted_to_name:
      description: Name of the person to whom the report was submitted first.
      type: string
      example: PATRICIA BOYLE
    submitted_to_email:
      description: Email ID of the person to whom the report was submitted first.
      type: string
      example: patriciab@zillum.com
    submitted_to_employee_no:
      description: Employee Number of the person to whom the report was submitted first.
      type: string
      example: E001
    submitted_to_department_name:
      description: Department Name of the person to whom the report was submitted first.
      type: string
      example: Finance
    submitted_to_photo_url:
      description: Photo Url of the person to whom the report was submitted first.
      type: string
      example: https://contacts.zoho.com/file?ID=16b87b9dbae5b1008b32c9736141b6f63b3864c8cf94d900cf9bb346f0eb97b105c58df21a12283d421fa80a6cb97ffca294a909bc0c7ae9f1e14dd2e499565d&fs=thumb
    submitted_by:
      description: Unique ID of the submitter.
      type: string
      example: '16367000000073071'
    submitter_name:
      description: Name of the submitter.
      type: string
      example: Will Smith
    submitter_email:
      description: Email ID of the submitter.
      type: string
      example: will.smith@gmail.com
    submitter_photo_url:
      description: Photo Url of the submitter.
      type: string
      example: https://contacts.zoho.com/file?ID=16b87b9dbae5b1008b32c9736141b6f63b3864c8cf94d900cf9bb346f0eb97b105c58df21a12283d421fa80a6cb97ffca294a909bc0c7ae9f1e14dd2e499565d&fs=thumb
    submitter_employee_no:
      description: Employee Number of the submitter.
      type: string
      example: E002
    submitter_department_name:
      description: Department Name of the submitter.
      type: string
      example: Maintenance
    total:
      description: Total amount.
      type: number
      format: double
      example: 70000
    reimbursable_total:
      description: Reimbursable amount.
      type: number
      format: double
      example: 70000
    non_reimbursable_total:
      description: Non reimbursable total.
      type: number
      format: double
      example: 0
    created_time:
      description: Time when the report was created.
      type: string
      example: 2017-02-28T18:18:03+0530
    created_date:
      description: Date when the report was created.
      type: string
      example: '2017-02-28'
    last_modified_time:
      description: Time when the report was last modified.
      type: string
      example: 2017-02-28T18:31:09+0530
    created_by_id:
      description: ID of the person who created the report.
      type: string
      example: '16367000000073071'
    created_by_name:
      description: Name of the person who created the report.
      type: string
      example: Will Smith
    created_by_email:
      description: Email ID of the person who created the report.
      type: string
      example: will.smith@gmail.com
    creator_photo_url:
      description: Photo Url of the person who created the report.
      type: string
      example: https://contacts.zoho.com/file?ID=16b87b9dbae5b1008b32c9736141b6f63b3864c8cf94d900cf9bb346f0eb97b105c58df21a12283d421fa80a6cb97ffca294a909bc0c7ae9f1e14dd2e499565d&fs=thumb
    file_name:
      description: Name of the Document.
      type: string
      example: receipt1.jpg
    file_size_formatted:
      description: Formatted value of File Size.
      type: string
      example: 35.6 KB
    attachment_order:
      description: Order of the Attached Document.
      type: integer
      example: 1
    document_id:
      description: Unique Id for the Document.
      type: string
      example: '16367000000078085'
    date:
      description: Date of Expense.
      type: string
      example: '2017-02-20'
    receipt_name:
      description: Receipt Name
      type: string
      example: receipt1.jpg
    tax_amount:
      description: Tax amount.
      type: number
      format: double
      example: 5000
    start_reading:
      description: Start reading of the odometer.
      type: string
      example: ''
    category_name:
      description: Name of the Expense Category.
      type: string
      example: Lodging
    line_item_count:
      description: Number of Line Items.
      type: integer
      example: 1
    paid_through_account_id:
      description: Unique ID for the paid through account.
      type: string
      example: '16367000000036003'
    documents:
      description: Details of Documents attached.
      type: array
      items:
        type: object
        properties:
          file_name:
            $ref: '#/components/schemas/file_name'
          file_size_formatted:
            $ref: '#/components/schemas/file_size_formatted'
          attachment_order:
            $ref: '#/components/schemas/attachment_order'
          document_id:
            $ref: '#/components/schemas/document_id'
    project_name:
      description: Name of the project.
      type: string
      example: Brochure Design - Spa
    per_diem_rate:
      description: Rate per Diem.
      type: number
      format: double
      example: 0
    per_diem_days:
      description: Number of Days for Diem.
      type: number
      format: double
      example: 0
    project_id:
      description: Unique ID for project.
      type: string
      example: '16367000000223045'
    mileage_rate:
      description: Rate for mileage.
      type: number
      format: double
      example: 0
    order:
      description: Order of the expense in Report.
      type: integer
      example: 0
    expense_type:
      description: Type of Expense.
      type: string
      example: non_mileage
    exchange_rate:
      description: Exchange rate for the foreign currency.
      type: number
      format: double
      example: 1
    is_inclusive_tax:
      description: Whether the Expense is inclusive of tax. It can either be <code>true</code> or <code>false</code>.
      type: boolean
      example: false
    mileage_type:
      description: Mileage type. Possible values can be <code>non_mileage</code> or <code>manual</code> or <code>odometer</code> or <code>gps</code> or <code>imaps</code> or <code>gmaps</code> or <code>wmaps</code>.
      type: string
      example: non_mileage
    customfield_id:
      description: Unique Id for the Custom Field.
      type: string
      example: '16367000000277001'
    label:
      description: Label of the Custom Field.
      type: string
      example: Other Name
    value:
      description: Value of the Custom Field.
      type: string
      example: Trip
    custom_fields:
      description: Custom Fields related to Expense.
      type: array
      items:
        type: object
        properties:
          customfield_id:
            $ref: '#/components/schemas/customfield_id'
          label:
            $ref: '#/components/schemas/label'
          value:
            $ref: '#/components/schemas/value'
    attendees:
      description: Attendees of the Expense.
      type: string
      example: Will Smith
    per_diem_name:
      description: Name of the Per Diem.
      type: string
      example: ''
    merchant_name:
      description: Name of the merchant.
      type: string
      example: ABS Solutions
    transaction_description:
      description: Decription for Transaction.
      type: string
      example: Has to be done Immediately..
    reference_number:
      description: Reference Number
      type: string
      example: DD145
    tax_id:
      description: Unique Id for the tax.
      type: string
      example: '16367000000219093'
    is_personal:
      description: Whether the expense is personal. It can either be <code>true</code> or <code>false</code>.
      type: boolean
      example: false
    comments_count:
      description: Number of Comments.
      type: integer
      example: 0
    distance:
      description: Distance travelled.
      type: number
      format: double
      example: 0
    policy_id:
      description: Unique Id for the Policy.
      type: string
      example: '16367000000092011'
    merchant_id:
      description: Unique Id for Merchant.
      type: string
      example: '16367000000074027'
    end_reading:
      description: End readind of the odometer.
      type: integer
      format: int64
      example: ''
    bcy_total:
      description: Total in base currency.
      type: number
      format: double
      example: 70000
    category_id:
      description: Unique Id for the expense category.
      type: string
      example: '16367000000033011'
    receipt_type:
      description: Type of receipt.
      type: string
      example: jpg
    maximum_allowed_amount:
      description: Maximum allowed expense amount.
      type: number
      format: double
      example: 0
    is_uncategorized:
      description: Whether the expense is Uncategorized. It can either be <code>true</code> or <code>false</code>.
      type: boolean
      example: false
    is_mandatory_fields_missing:
      description: Whether the mandatory fields are missing. It can either be <code>true</code> or <code>false</code>.
      type: boolean
      example: false
    paid_through_account_name:
      description: Name of the paid through account.
      type: string
      example: Employee Reimbursements
    amount:
      description: Total Amount.
      type: number
      format: double
      example: 70000
    payment_mode:
      description: Mode of payment for the expense.
      type: string
      example: Check
    per_diem_id:
      description: Unique Id for Per Diem.
      type: string
      example: ''
    tax_name:
      description: Name of the tax.
      type: string
      example: Service
    bcy_tax_amount:
      description: Tax Amount in Base Currency.
      type: number
      format: double
      example: 2000
    vehicle_type:
      description: Type of Vehicle.
      type: string
      example: Bike
    is_billable:
      description: Whether the expense is a billable expense. It can either be <code>true</code> or <code>false</code>.
      type: boolean
      example: false
    mileage_unit:
      description: Unit of mileage. Can be <code>km</code> or <code>mile</code>.
      type: string
      example: km
    is_expired:
      description: Whether the expense is expired. It can either be <code>true</code> or <code>false</code>.
      type: boolean
      example: false
    receipt_required_amount:
      description: Required Amount for Receipt.
      type: number
      format: double
      example: 0
    is_reimbursable:
      description: Whether the expense is reimbursable. It can either be <code>true</code> or <code>false</code>.
      type: boolean
      example: true
    expired_by:
      description: No. of days since the expense has expired.
      type: string
      example: ''
    tax_percentage:
      description: Percentage of Tax.
      type: number
      format: double
      example: 4
    location:
      description: Location.
      type: string
      example: Washington
    customer_name:
      description: Name of the Customer.
      type: string
      example: Peter
    customer_id:
      description: Unique Id for the Customer.
      type: string
      example: '16367000000088005'
    expense_id:
      description: Unique Id of the Expense.
      type: string
      example: '16367000000078079'
    expenses:
      description: Expenses associated with User.
      type: array
      items:
        type: object
        properties:
          date:
            $ref: '#/components/schemas/date'
          receipt_name:
            $ref: '#/components/schemas/receipt_name'
          tax_amount:
            $ref: '#/components/schemas/tax_amount'
          start_reading:
            $ref: '#/components/schemas/start_reading'
          category_name:
            $ref: '#/components/schemas/category_name'
          line_item_count:
            $ref: '#/components/schemas/line_item_count'
          paid_through_account_id:
            $ref: '#/components/schemas/paid_through_account_id'
          documents:
            $ref: '#/components/schemas/documents'
          project_name:
            $ref: '#/components/schemas/project_name'
          per_diem_rate:
            $ref: '#/components/schemas/per_diem_rate'
          per_diem_days:
            $ref: '#/components/schemas/per_diem_days'
          project_id:
            $ref: '#/components/schemas/project_id'
          mileage_rate:
            $ref: '#/components/schemas/mileage_rate'
          order:
            $ref: '#/components/schemas/order'
          expense_type:
            $ref: '#/components/schemas/expense_type'
          exchange_rate:
            $ref: '#/components/schemas/exchange_rate'
          is_inclusive_tax:
            $ref: '#/components/schemas/is_inclusive_tax'
          custom_fields:
            $ref: '#/components/schemas/custom_fields'
          attendees:
            $ref: '#/components/schemas/attendees'
          per_diem_name:
            $ref: '#/components/schemas/per_diem_name'
          merchant_name:
            $ref: '#/components/schemas/merchant_name'
          transaction_description:
            $ref: '#/components/schemas/transaction_description'
          reference_number:
            $ref: '#/components/schemas/reference_number'
          tax_id:
            $ref: '#/components/schemas/tax_id'
          is_personal:
            $ref: '#/components/schemas/is_personal'
          due_days:
            $ref: '#/components/schemas/due_days'
          comments_count:
            $ref: '#/components/schemas/comments_count'
          distance:
            $ref: '#/components/schemas/distance'
          policy_id:
            $ref: '#/components/schemas/policy_id'
          description:
            $ref: '#/components/schemas/description'
          merchant_id:
            $ref: '#/components/schemas/merchant_id'
          currency_code:
            $ref: '#/components/schemas/currency_code'
          end_reading:
            $ref: '#/components/schemas/end_reading'
          bcy_total:
            $ref: '#/components/schemas/bcy_total'
          total:
            $ref: '#/components/schemas/total'
          category_id:
            $ref: '#/components/schemas/category_id'
          receipt_type:
            $ref: '#/components/schemas/receipt_type'
          maximum_allowed_amount:
            $ref: '#/components/schemas/maximum_allowed_amount'
          is_uncategorized:
            $ref: '#/components/schemas/is_uncategorized'
          is_mandatory_fields_missing:
            $ref: '#/components/schemas/is_mandatory_fields_missing'
          paid_through_account_name:
            $ref: '#/components/schemas/paid_through_account_name'
          amount:
            $ref: '#/components/schemas/amount'
          payment_mode:
            $ref: '#/components/schemas/payment_mode'
          last_modified_time:
            $ref: '#/components/schemas/last_modified_time'
          per_diem_id:
            $ref: '#/components/schemas/per_diem_id'
          tax_name:
            $ref: '#/components/schemas/tax_name'
          bcy_tax_amount:
            $ref: '#/components/schemas/bcy_tax_amount'
          vehicle_type:
            $ref: '#/components/schemas/vehicle_type'
          is_billable:
            $ref: '#/components/schemas/is_billable'
          mileage_unit:
            $ref: '#/components/schemas/mileage_unit'
          is_expired:
            $ref: '#/components/schemas/is_expired'
          receipt_required_amount:
            $ref: '#/components/schemas/receipt_required_amount'
          is_reimbursable:
            $ref: '#/components/schemas/is_reimbursable'
          expired_by:
            $ref: '#/components/schemas/expired_by'
          tax_percentage:
            $ref: '#/components/schemas/tax_percentage'
          location:
            $ref: '#/components/schemas/location'
          customer_name:
            $ref: '#/components/schemas/customer_name'
          customer_id:
            $ref: '#/components/schemas/customer_id'
          expense_id:
            $ref: '#/components/schemas/expense_id'
          currency_id:
            $ref: '#/components/schemas/currency_id'
    expired_expense_count:
      description: Number of expenses expired.
      type: integer
      example: 0
    reimbursable_expenses_count:
      description: Number of expenses that can be reimbursed.
      type: integer
      example: 1
    non_reimbursable_expenses_count:
      description: Number of expenses that cannot be reimbursed.
      type: integer
      example: 0
    uncategorized_expense_count:
      description: Number of uncategorised expenses.
      type: integer
      example: 0
    policy_violated:
      description: Whether expense policies are violated. It can either be <code>true</code> or <code>false</code>.
      type: boolean
      example: false
    employee_reimbursement_id:
      description: Unique Id of reimbursement.
      type: string
      example: '16367000000101099'
    entity_type:
      description: Type of entity.
      type: integer
      example: 62
    bcy_amount:
      description: Amount in Base Currency.
      type: number
      format: double
      example: 70000
    notes:
      description: Notes on Reimbursement.
      type: string
      example: Finish
    reimbursements:
      description: Reimbursements made for the report.
      type: array
      items:
        type: object
        properties:
          employee_reimbursement_id:
            $ref: '#/components/schemas/employee_reimbursement_id'
          date:
            $ref: '#/components/schemas/date'
          amount:
            $ref: '#/components/schemas/amount'
          entity_type:
            $ref: '#/components/schemas/entity_type'
          bcy_amount:
            $ref: '#/components/schemas/bcy_amount'
          notes:
            $ref: '#/components/schemas/notes'
          currency_code:
            $ref: '#/components/schemas/currency_code'
          currency_id:
            $ref: '#/components/schemas/currency_id'
    advance_payment_id:
      description: Unique Id of advance payment.
      type: string
      example: '16367000000243203'
    reimbursement_entity_id:
      description: Entity Id of reimbursement.
      type: string
      example: ''
    excess_amount:
      description: Excess Amount.
      type: number
      format: double
      example: 0
    excess_bcy_amount:
      description: Excess Amount in Base Currency.
      type: number
      format: double
      example: 0
    applied_amount:
      description: Applied Amount.
      type: number
      format: double
      example: 70000
    applied_bcy_amount:
      description: Applied Amount in Base Currency.
      type: number
      format: double
      example: 70000
    excess_applied_amount:
      description: Excess Applied Amount.
      type: number
      format: double
      example: 0
    excess_applied_bcy_amount:
      description: Excess Applied Amount in Base Currency.
      type: number
      format: double
      example: 0
    excess_unapplied_amount:
      description: Excess Unapplied Amount.
      type: number
      format: double
      example: 0
    excess_unapplied_bcy_amount:
      description: Excess Unapplied Amount in Base Currency.
      type: number
      format: double
      example: 0
    advance_payments:
      description: Advance payments made on the report.
      type: array
      items:
        type: object
        properties:
          date:
            $ref: '#/components/schemas/date'
          advance_payment_id:
            $ref: '#/components/schemas/advance_payment_id'
          reimbursement_entity_id:
            $ref: '#/components/schemas/reimbursement_entity_id'
          currency_id:
            $ref: '#/components/schemas/currency_id'
          currency_code:
            $ref: '#/components/schemas/currency_code'
          exchange_rate:
            $ref: '#/components/schemas/exchange_rate'
          amount:
            $ref: '#/components/schemas/amount'
          bcy_amount:
            $ref: '#/components/schemas/bcy_amount'
          excess_amount:
            $ref: '#/components/schemas/excess_amount'
          excess_bcy_amount:
            $ref: '#/components/schemas/excess_bcy_amount'
          applied_amount:
            $ref: '#/components/schemas/applied_amount'
          applied_bcy_amount:
            $ref: '#/components/schemas/applied_bcy_amount'
          excess_applied_amount:
            $ref: '#/components/schemas/excess_applied_amount'
          excess_applied_bcy_amount:
            $ref: '#/components/schemas/excess_applied_bcy_amount'
          excess_unapplied_amount:
            $ref: '#/components/schemas/excess_unapplied_amount'
          excess_unapplied_bcy_amount:
            $ref: '#/components/schemas/excess_unapplied_bcy_amount'
          price_precision:
            $ref: '#/components/schemas/price_precision'
    is_advancepayment_allowed:
      description: Whether the Advance Payment is allowed. It can either be <code>true</code> or <code>false</code>.
      type: boolean
      example: true
    amount_to_be_reimbursed:
      description: Amount to be reimbursed.
      type: number
      format: double
      example: 70000
    remaining_reimbursement_total:
      description: Remaining reimbursement amount.
      type: integer
      format: int64
      example: 0
    amount_to_be_refunded:
      description: Amount to be refunded.
      type: number
      format: double
      example: 0
    advance_total:
      description: Total advance amount.
      type: number
      format: double
      example: 70000
    can_create_advance:
      description: Whether the user is allowed to create advance. It can either be <code>true</code> or <code>false</code>.
      type: boolean
      example: true
    employee_number:
      description: Employee Number.
      type: string
      example: E001
    department_id:
      description: Unique Id of the department.
      type: string
      example: '16367000000093001'
    department_name:
      description: Name of the department.
      type: string
      example: Finance
    next_approver_id:
      description: Id of the Next Approver.
      type: string
      example: '16367000000073001'
    next_approver_email:
      description: Email Id of Next Approver.
      type: string
      example: patriciab@zillum.com
    next_approver_name:
      description: Name of the Next Approver.
      type: string
      example: PATRICIA BOYLE
    approver_employee_no:
      description: Employee Number of the Approver.
      type: string
      example: E001
    approver_department_name:
      description: Department Name of the Approver.
      type: string
      example: Finance
    previous_approver_id:
      description: Id of the Previous Approver.
      type: string
      example: ''
    previous_approver_name:
      description: Name of the Previous Approver.
      type: string
      example: ''
    previous_approver_employee_no:
      description: Employee Number of the Previous Approver.
      type: string
      example: ''
    previous_approver_department_name:
      description: Department Name of the Previous Approver.
      type: string
      example: ''
    policy_name:
      description: Name of the Policy.
      type: string
      example: Savings
    approval_history_id:
      description: Unique Id of Approval.
      type: string
      example: '16367000000101079'
    comments:
      description: Comments on the report.
      type: string
      example: Purpose is not valid.
    type:
      description: Type of the Approval History.
      type: string
      example: approval_history
    previous_status:
      description: Previous status of report.
      type: string
      example: approved
    approval_status:
      description: Approval Status of report.
      type: string
      example: approved
    previous_approver_email:
      description: Email Id of the Previous Approver.
      type: string
      example: will.smith@gmail.com
    time:
      description: Time of approval.
      type: string
      example: 5:59 PM
    commented_by_id:
      description: Id of the User commented.
      type: string
      example: '16367000000073001'
    commented_by:
      description: Name of the User Commented.
      type: string
      example: Will Smith
    photo_url:
      description: Url of the Photo
      type: string
      example: https://contacts.zoho.com/file?ID=16b87b9dbae5b1008b32c9736141b6f63b3864c8cf94d900cf9bb346f0eb97b105c58df21a12283d421fa80a6cb97ffca294a909bc0c7ae9f1e14dd2e499565d&fs=thumb
    approval_history:
      description: Approval history
      type: array
      items:
        type: object
        properties:
          approval_history_id:
            $ref: '#/components/schemas/approval_history_id'
          report_name:
            $ref: '#/components/schemas/report_name'
          report_id:
            $ref: '#/components/schemas/report_id'
          report_number:
            $ref: '#/components/schemas/report_number'
          expense_id:
            $ref: '#/components/schemas/expense_id'
          comments:
            $ref: '#/components/schemas/comments'
          description:
            $ref: '#/components/schemas/description'
          type:
            $ref: '#/components/schemas/type'
          previous_status:
            $ref: '#/components/schemas/previous_status'
          approval_status:
            $ref: '#/components/schemas/approval_status'
          previous_approver_id:
            $ref: '#/components/schemas/previous_approver_id'
          previous_approver_name:
            $ref: '#/components/schemas/previous_approver_name'
          previous_approver_email:
            $ref: '#/components/schemas/previous_approver_email'
          approver_id:
            $ref: '#/components/schemas/approver_id'
          approver_name:
            $ref: '#/components/schemas/approver_name'
          date:
            $ref: '#/components/schemas/date'
          date_description:
            $ref: '#/components/schemas/date_description'
          time:
            $ref: '#/components/schemas/time'
          commented_by_id:
            $ref: '#/components/schemas/commented_by_id'
          commented_by:
            $ref: '#/components/schemas/commented_by'
          photo_url:
            $ref: '#/components/schemas/photo_url'
    unreported_expenses_count:
      description: Number of Unreported expenses.
      type: integer
      example: 1
    unreported_expenses:
      description: Details of Unreported expenses.
      type: array
      items:
        type: object
        properties:
          expense_id:
            $ref: '#/components/schemas/expense_id'
          date:
            $ref: '#/components/schemas/date'
          category_id:
            $ref: '#/components/schemas/category_id'
          category_name:
            $ref: '#/components/schemas/category_name'
          total:
            $ref: '#/components/schemas/total'
          paid_through_account_id:
            $ref: '#/components/schemas/paid_through_account_id'
          paid_through_account_name:
            $ref: '#/components/schemas/paid_through_account_name'
          bcy_total:
            $ref: '#/components/schemas/bcy_total'
          currency_code:
            $ref: '#/components/schemas/currency_code'
          currency_id:
            $ref: '#/components/schemas/currency_id'
          receipt_name:
            $ref: '#/components/schemas/receipt_name'
          is_billable:
            $ref: '#/components/schemas/is_billable'
          customer_id:
            $ref: '#/components/schemas/customer_id'
          customer_name:
            $ref: '#/components/schemas/customer_name'
          project_id:
            $ref: '#/components/schemas/project_id'
          project_name:
            $ref: '#/components/schemas/project_name'
          is_reimbursable:
            $ref: '#/components/schemas/is_reimbursable'
          merchant_id:
            $ref: '#/components/schemas/merchant_id'
          merchant_name:
            $ref: '#/components/schemas/merchant_name'
          distance:
            $ref: '#/components/schemas/distance'
          mileage_rate:
            $ref: '#/components/schemas/mileage_rate'
          mileage_unit:
            $ref: '#/components/schemas/mileage_unit'
          mileage_type:
            $ref: '#/components/schemas/mileage_type'
          start_reading:
            $ref: '#/components/schemas/start_reading'
          end_reading:
            $ref: '#/components/schemas/end_reading'
          receipt_type:
            $ref: '#/components/schemas/receipt_type'
          documents:
            $ref: '#/components/schemas/documents'
          exchange_rate:
            $ref: '#/components/schemas/exchange_rate'
          is_uncategorized:
            $ref: '#/components/schemas/is_uncategorized'
          due_days:
            $ref: '#/components/schemas/due_days'
          expired_by:
            $ref: '#/components/schemas/expired_by'
          is_expired:
            $ref: '#/components/schemas/is_expired'
          payment_mode:
            $ref: '#/components/schemas/payment_mode'
          transaction_description:
            $ref: '#/components/schemas/transaction_description'
    user_id:
      description: Unique Id of User.
      type: string
      example: '16367000000073001'
    role_id:
      description: unique Id of the User Role.
      type: string
      example: '16367000000030001'
    name:
      description: Name of the User.
      type: string
      example: Will Smith
    email:
      description: Email Id of the User.
      type: string
      example: will.smith@gmail.com
    default_approver_id:
      description: Default Approver Id.
      type: string
      example: '16367000000030001'
    default_approver_name:
      description: Default Approver Name.
      type: string
      example: PATRICIA BOYLE
    user_role:
      description: Role of the User.
      type: string
      example: admin
    can_approve:
      description: Whether the User can approve request. It can either be <code>true</code> or <code>false</code>.
      type: boolean
      example: true
    is_current_user:
      description: Whether the User is a Current User. It can either be <code>true</code> or <code>false</code>.
      type: boolean
      example: true
    is_selected:
      description: Whether the EMail Id is selected. It can either be <code>true</code> or <code>false</code>.
      type: boolean
      example: true
    email_ids:
      description: EMail Ids of the User.
      type: array
      items:
        type: object
        properties:
          is_selected:
            $ref: '#/components/schemas/is_selected'
          email:
            $ref: '#/components/schemas/email'
    approves_to_id:
      description: Id of the User whose report can be approved.
      type: string
      example: '16367000000030001'
    approves_to_name:
      description: Name of the User whose report can be approved.
      type: string
      example: PATRICIA BOYLE
    submission_amount_limit:
      description: Maximum amount for submission.
      type: number
      format: double
      example: 0
    approval_amount_limit:
      description: Maximum amount for approval.
      type: number
      format: double
      example: 0
    Type.Approval-Status.Submitted:
      description: List of all Submitted Reports.
      type: string
      example: ''
    Type.Approval-Status.Approved:
      description: List of all Approved Reports.
      type: string
      example: ''
    Type.Approval-Status.Rejected:
      description: List of all Rejected Reports.
      type: string
      example: ''
    Type.Approval-Status.Reimbursed:
      description: List of all Reimbursed Reports.
      type: string
      example: ''
    filter_by:
      description: For Filtering Expense Reports based on status.
      type: object
      properties:
        Type.Approval,Status.Submitted:
          $ref: '#/components/schemas/Type.Approval-Status.Submitted'
        Type.Approval,Status.Approved:
          $ref: '#/components/schemas/Type.Approval-Status.Approved'
        Type.Approval,Status.Rejected:
          $ref: '#/components/schemas/Type.Approval-Status.Rejected'
        Type.Approval,Status.Reimbursed:
          $ref: '#/components/schemas/Type.Approval-Status.Reimbursed'
    users:
      description: Details of Users.
      type: array
      items:
        type: object
        properties:
          user_id:
            $ref: '#/components/schemas/user_id'
          role_id:
            $ref: '#/components/schemas/role_id'
          name:
            $ref: '#/components/schemas/name'
          email:
            $ref: '#/components/schemas/email'
          default_approver_id:
            $ref: '#/components/schemas/default_approver_id'
          default_approver_name:
            $ref: '#/components/schemas/default_approver_name'
          user_role:
            $ref: '#/components/schemas/user_role'
          can_approve:
            $ref: '#/components/schemas/can_approve'
          is_current_user:
            $ref: '#/components/schemas/is_current_user'
          email_ids:
            $ref: '#/components/schemas/email_ids'
          status:
            $ref: '#/components/schemas/status'
          photo_url:
            $ref: '#/components/schemas/photo_url'
          approves_to_id:
            $ref: '#/components/schemas/approves_to_id'
          approves_to_name:
            $ref: '#/components/schemas/approves_to_name'
          submission_amount_limit:
            $ref: '#/components/schemas/submission_amount_limit'
          approval_amount_limit:
            $ref: '#/components/schemas/approval_amount_limit'
          created_time:
            $ref: '#/components/schemas/created_time'
          last_modified_time:
            $ref: '#/components/schemas/last_modified_time'
          policy_id:
            $ref: '#/components/schemas/policy_id'
          policy_name:
            $ref: '#/components/schemas/policy_name'
    reimbursement_date:
      description: Date of Reimbursement.
      type: string
      example: '2017-03-01'
    approved_date:
      description: Date of Report Approval.
      type: string
      example: '2017-03-01'
    tag_option_id:
      description: Unique ID for Tag option generated by the server.
      type: string
      example: '16367000000225001'
    tag_name:
      description: Name of the Tag.
      type: string
      example: Tag 1
    tag_id:
      description: Unique ID for Tag generated by the server.
      type: string
      example: '16367000000000301'
    tag_option_name:
      description: Name of the Tag Option.
      type: string
      example: Option 1
    date_description:
      type: string
      example: yesterday
    tags:
      description: Tags associated with the Report.
      type: array
      items:
        type: object
        properties:
          tag_id:
            $ref: '#/components/schemas/tag_id'
          tag_name:
            $ref: '#/components/schemas/tag_name'
          tag_option_id:
            $ref: '#/components/schemas/tag_option_id'
          tag_option_name:
            $ref: '#/components/schemas/tag_option_name'
    expense_report:
      type: object
      properties:
        report_id:
          $ref: '#/components/schemas/report_id'
        report_name:
          $ref: '#/components/schemas/report_name'
        description:
          $ref: '#/components/schemas/description'
        report_number:
          $ref: '#/components/schemas/report_number'
        start_date:
          $ref: '#/components/schemas/start_date'
        end_date:
          $ref: '#/components/schemas/end_date'
        due_date:
          $ref: '#/components/schemas/due_date'
        status:
          $ref: '#/components/schemas/status'
        is_archived:
          $ref: '#/components/schemas/is_archived'
        due_days:
          $ref: '#/components/schemas/due_days'
        submitted_date:
          $ref: '#/components/schemas/submitted_date'
        last_submitted_date:
          $ref: '#/components/schemas/last_submitted_date'
        currency_id:
          $ref: '#/components/schemas/currency_id'
        price_precision:
          $ref: '#/components/schemas/price_precision'
        currency_code:
          $ref: '#/components/schemas/currency_code'
        approver_id:
          $ref: '#/components/schemas/approver_id'
        approver_name:
          $ref: '#/components/schemas/approver_name'
        approver_email:
          $ref: '#/components/schemas/approver_email'
        approver_photo_url:
          $ref: '#/components/schemas/approver_photo_url'
        submitted_to_id:
          $ref: '#/components/schemas/submitted_to_id'
        submitted_to_name:
          $ref: '#/components/schemas/submitted_to_name'
        submitted_to_email:
          $ref: '#/components/schemas/submitted_to_email'
        submitted_to_employee_no:
          $ref: '#/components/schemas/submitted_to_employee_no'
        submitted_to_department_name:
          $ref: '#/components/schemas/submitted_to_department_name'
        submitted_to_photo_url:
          $ref: '#/components/schemas/submitted_to_photo_url'
        submitted_by:
          $ref: '#/components/schemas/submitted_by'
        submitter_name:
          $ref: '#/components/schemas/submitter_name'
        submitter_email:
          $ref: '#/components/schemas/submitter_email'
        submitter_photo_url:
          $ref: '#/components/schemas/submitter_photo_url'
        submitter_employee_no:
          $ref: '#/components/schemas/submitter_employee_no'
        submitter_department_name:
          $ref: '#/components/schemas/submitter_department_name'
        total:
          $ref: '#/components/schemas/total'
        reimbursable_total:
          $ref: '#/components/schemas/reimbursable_total'
        non_reimbursable_total:
          $ref: '#/components/schemas/non_reimbursable_total'
        created_time:
          $ref: '#/components/schemas/created_time'
        created_date:
          $ref: '#/components/schemas/created_date'
        last_modified_time:
          $ref: '#/components/schemas/last_modified_time'
        created_by_id:
          $ref: '#/components/schemas/created_by_id'
        created_by_name:
          $ref: '#/components/schemas/created_by_name'
        created_by_email:
          $ref: '#/components/schemas/created_by_email'
        creator_photo_url:
          $ref: '#/components/schemas/creator_photo_url'
        tags:
          $ref: '#/components/schemas/tags'
        expenses:
          $ref: '#/components/schemas/expenses'
        expired_expense_count:
          $ref: '#/components/schemas/expired_expense_count'
        reimbursable_expenses_count:
          $ref: '#/components/schemas/reimbursable_expenses_count'
        non_reimbursable_expenses_count:
          $ref: '#/components/schemas/non_reimbursable_expenses_count'
        custom_fields:
          $ref: '#/components/schemas/custom_fields'
        uncategorized_expense_count:
          $ref: '#/components/schemas/uncategorized_expense_count'
        policy_violated:
          $ref: '#/components/schemas/policy_violated'
        reimbursements:
          $ref: '#/components/schemas/reimbursements'
        advance_payments:
          $ref: '#/components/schemas/advance_payments'
        is_advancepayment_allowed:
          $ref: '#/components/schemas/is_advancepayment_allowed'
        amount_to_be_reimbursed:
          $ref: '#/components/schemas/amount_to_be_reimbursed'
        remaining_reimbursement_total:
          $ref: '#/components/schemas/remaining_reimbursement_total'
        amount_to_be_refunded:
          $ref: '#/components/schemas/amount_to_be_refunded'
        advance_total:
          $ref: '#/components/schemas/advance_total'
        can_create_advance:
          $ref: '#/components/schemas/can_create_advance'
        customer_id:
          $ref: '#/components/schemas/customer_id'
        customer_name:
          $ref: '#/components/schemas/customer_name'
        project_id:
          $ref: '#/components/schemas/project_id'
        project_name:
          $ref: '#/components/schemas/project_name'
        employee_number:
          $ref: '#/components/schemas/employee_number'
        department_id:
          $ref: '#/components/schemas/department_id'
        department_name:
          $ref: '#/components/schemas/department_name'
        next_approver_id:
          $ref: '#/components/schemas/next_approver_id'
        next_approver_email:
          $ref: '#/components/schemas/next_approver_email'
        next_approver_name:
          $ref: '#/components/schemas/next_approver_name'
        approver_employee_no:
          $ref: '#/components/schemas/approver_employee_no'
        approver_department_name:
          $ref: '#/components/schemas/approver_department_name'
        previous_approver_id:
          $ref: '#/components/schemas/previous_approver_id'
        previous_approver_name:
          $ref: '#/components/schemas/previous_approver_name'
        previous_approver_employee_no:
          $ref: '#/components/schemas/previous_approver_employee_no'
        previous_approver_department_name:
          $ref: '#/components/schemas/previous_approver_department_name'
        policy_id:
          $ref: '#/components/schemas/policy_id'
        policy_name:
          $ref: '#/components/schemas/policy_name'
        unreported_expenses_count:
          $ref: '#/components/schemas/unreported_expenses_count'
        unreported_expenses:
          $ref: '#/components/schemas/unreported_expenses'
        users:
          $ref: '#/components/schemas/users'
    expense_report_reimbursed:
      type: object
      properties:
        report_id:
          $ref: '#/components/schemas/report_id'
        report_name:
          $ref: '#/components/schemas/report_name'
        description:
          $ref: '#/components/schemas/description'
        report_number:
          $ref: '#/components/schemas/report_number'
        start_date:
          $ref: '#/components/schemas/start_date'
        end_date:
          $ref: '#/components/schemas/end_date'
        due_date:
          $ref: '#/components/schemas/due_date'
        status:
          $ref: '#/components/schemas/status'
        is_archived:
          $ref: '#/components/schemas/is_archived'
        due_days:
          $ref: '#/components/schemas/due_days'
        submitted_date:
          $ref: '#/components/schemas/submitted_date'
        last_submitted_date:
          $ref: '#/components/schemas/last_submitted_date'
        currency_id:
          $ref: '#/components/schemas/currency_id'
        price_precision:
          $ref: '#/components/schemas/price_precision'
        currency_code:
          $ref: '#/components/schemas/currency_code'
        approver_id:
          $ref: '#/components/schemas/approver_id'
        approver_name:
          $ref: '#/components/schemas/approver_name'
        approver_email:
          $ref: '#/components/schemas/approver_email'
        approver_photo_url:
          $ref: '#/components/schemas/approver_photo_url'
        submitted_to_id:
          $ref: '#/components/schemas/submitted_to_id'
        submitted_to_name:
          $ref: '#/components/schemas/submitted_to_name'
        submitted_to_email:
          $ref: '#/components/schemas/submitted_to_email'
        submitted_to_employee_no:
          $ref: '#/components/schemas/submitted_to_employee_no'
        submitted_to_department_name:
          $ref: '#/components/schemas/submitted_to_department_name'
        submitted_to_photo_url:
          $ref: '#/components/schemas/submitted_to_photo_url'
        submitted_by:
          $ref: '#/components/schemas/submitted_by'
        submitter_name:
          $ref: '#/components/schemas/submitter_name'
        submitter_email:
          $ref: '#/components/schemas/submitter_email'
        submitter_photo_url:
          $ref: '#/components/schemas/submitter_photo_url'
        submitter_employee_no:
          $ref: '#/components/schemas/submitter_employee_no'
        submitter_department_name:
          $ref: '#/components/schemas/submitter_department_name'
        total:
          $ref: '#/components/schemas/total'
        reimbursable_total:
          $ref: '#/components/schemas/reimbursable_total'
        non_reimbursable_total:
          $ref: '#/components/schemas/non_reimbursable_total'
        created_time:
          $ref: '#/components/schemas/created_time'
        created_date:
          $ref: '#/components/schemas/created_date'
        last_modified_time:
          $ref: '#/components/schemas/last_modified_time'
        created_by_id:
          $ref: '#/components/schemas/created_by_id'
        created_by_name:
          $ref: '#/components/schemas/created_by_name'
        created_by_email:
          $ref: '#/components/schemas/created_by_email'
        creator_photo_url:
          $ref: '#/components/schemas/creator_photo_url'
        expenses:
          $ref: '#/components/schemas/expenses'
        expired_expense_count:
          $ref: '#/components/schemas/expired_expense_count'
        reimbursable_expenses_count:
          $ref: '#/components/schemas/reimbursable_expenses_count'
        non_reimbursable_expenses_count:
          $ref: '#/components/schemas/non_reimbursable_expenses_count'
        custom_fields:
          $ref: '#/components/schemas/custom_fields'
        uncategorized_expense_count:
          $ref: '#/components/schemas/uncategorized_expense_count'
        policy_violated:
          $ref: '#/components/schemas/policy_violated'
        reimbursements:
          $ref: '#/components/schemas/reimbursements'
        advance_payments:
          $ref: '#/components/schemas/advance_payments'
        is_advancepayment_allowed:
          $ref: '#/components/schemas/is_advancepayment_allowed'
        amount_to_be_reimbursed:
          $ref: '#/components/schemas/amount_to_be_reimbursed'
        remaining_reimbursement_total:
          $ref: '#/components/schemas/remaining_reimbursement_total'
        amount_to_be_refunded:
          $ref: '#/components/schemas/amount_to_be_refunded'
        advance_total:
          $ref: '#/components/schemas/advance_total'
        can_create_advance:
          $ref: '#/components/schemas/can_create_advance'
        customer_id:
          $ref: '#/components/schemas/customer_id'
        customer_name:
          $ref: '#/components/schemas/customer_name'
        project_id:
          $ref: '#/components/schemas/project_id'
        project_name:
          $ref: '#/components/schemas/project_name'
        employee_number:
          $ref: '#/components/schemas/employee_number'
        department_id:
          $ref: '#/components/schemas/department_id'
        department_name:
          $ref: '#/components/schemas/department_name'
        next_approver_id:
          $ref: '#/components/schemas/next_approver_id'
        next_approver_email:
          $ref: '#/components/schemas/next_approver_email'
        next_approver_name:
          $ref: '#/components/schemas/next_approver_name'
        approver_employee_no:
          $ref: '#/components/schemas/approver_employee_no'
        approver_department_name:
          $ref: '#/components/schemas/approver_department_name'
        previous_approver_id:
          $ref: '#/components/schemas/previous_approver_id'
        previous_approver_name:
          $ref: '#/components/schemas/previous_approver_name'
        previous_approver_employee_no:
          $ref: '#/components/schemas/previous_approver_employee_no'
        previous_approver_department_name:
          $ref: '#/components/schemas/previous_approver_department_name'
        policy_id:
          $ref: '#/components/schemas/policy_id'
        policy_name:
          $ref: '#/components/schemas/policy_name'
    create-an-expense-report-request:
      type: object
      required:
        - report_name
        - start_date
        - end_date
      properties:
        report_name:
          $ref: '#/components/schemas/report_name'
        description:
          $ref: '#/components/schemas/description'
        start_date:
          $ref: '#/components/schemas/start_date'
        end_date:
          $ref: '#/components/schemas/end_date'
        expenses:
          description: Expenses associated with User.
          type: array
          items:
            type: object
            required:
              - expense_id
            properties:
              expense_id:
                $ref: '#/components/schemas/expense_id'
              order:
                $ref: '#/components/schemas/order'
        custom_fields:
          description: Custom Fields related to Expense.
          type: array
          items:
            type: object
            required:
              - customfield_id
              - value
            properties:
              customfield_id:
                $ref: '#/components/schemas/customfield_id'
              value:
                $ref: '#/components/schemas/value'
        customer_id:
          $ref: '#/components/schemas/customer_id'
        project_id:
          $ref: '#/components/schemas/project_id'
        tags:
          description: Tags associated with the Report.
          type: array
          items:
            type: object
            required:
              - tag_id
              - tag_option_id
            properties:
              tag_id:
                $ref: '#/components/schemas/tag_id'
              tag_option_id:
                $ref: '#/components/schemas/tag_option_id'
    create-an-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Expense report created successfully.
          readOnly: true
        expense_report:
          $ref: '#/components/schemas/expense_report-response'
    list-of-all-expense-reports-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: success
          readOnly: true
        expense_reports:
          type: array
          items:
            type: object
            properties:
              report_id:
                $ref: '#/components/schemas/report_id'
              report_name:
                $ref: '#/components/schemas/report_name'
              description:
                $ref: '#/components/schemas/description'
              report_number:
                $ref: '#/components/schemas/report_number'
              start_date:
                $ref: '#/components/schemas/start_date'
              end_date:
                $ref: '#/components/schemas/end_date'
              status:
                $ref: '#/components/schemas/status'
              is_archived:
                $ref: '#/components/schemas/is_archived'
              due_date:
                $ref: '#/components/schemas/due_date'
              submitted_date:
                $ref: '#/components/schemas/submitted_date'
              approved_date:
                $ref: '#/components/schemas/approved_date'
              last_submitted_date:
                $ref: '#/components/schemas/last_submitted_date'
              currency_id:
                $ref: '#/components/schemas/currency_id'
              currency_code:
                $ref: '#/components/schemas/currency_code'
              approver_id:
                $ref: '#/components/schemas/approver_id'
              approver_name:
                $ref: '#/components/schemas/approver_name'
              approver_email:
                $ref: '#/components/schemas/approver_email'
              submitted_to_id:
                $ref: '#/components/schemas/submitted_to_id'
              submitted_to_name:
                $ref: '#/components/schemas/submitted_to_name'
              submitted_to_email:
                $ref: '#/components/schemas/submitted_to_email'
              submitter_email:
                $ref: '#/components/schemas/submitter_email'
              submitted_by:
                $ref: '#/components/schemas/submitted_by'
              submitter_name:
                $ref: '#/components/schemas/submitter_name'
              total:
                $ref: '#/components/schemas/total'
              reimbursable_total:
                $ref: '#/components/schemas/reimbursable_total'
              reimbursement_date:
                $ref: '#/components/schemas/reimbursement_date'
              non_reimbursable_total:
                $ref: '#/components/schemas/non_reimbursable_total'
              created_time:
                $ref: '#/components/schemas/created_time'
              last_modified_time:
                $ref: '#/components/schemas/last_modified_time'
              created_by_id:
                $ref: '#/components/schemas/created_by_id'
              created_by_name:
                $ref: '#/components/schemas/created_by_name'
              comments_count:
                $ref: '#/components/schemas/comments_count'
              policy_violated:
                $ref: '#/components/schemas/policy_violated'
              uncategorized_expense_count:
                $ref: '#/components/schemas/uncategorized_expense_count'
              customer_id:
                $ref: '#/components/schemas/customer_id'
              custom_fields:
                $ref: '#/components/schemas/custom_fields'
              project_id:
                $ref: '#/components/schemas/project_id'
              customer_name:
                $ref: '#/components/schemas/customer_name'
              project_name:
                $ref: '#/components/schemas/project_name'
              policy_id:
                $ref: '#/components/schemas/policy_id'
              policy_name:
                $ref: '#/components/schemas/policy_name'
              due_days:
                $ref: '#/components/schemas/due_days'
    submit-a-report-request:
      type: object
      properties:
        approver_id:
          $ref: '#/components/schemas/approver_id'
        cc_mail_ids:
          description: Array of email address of the recipients to be cced
          type: array
          items:
            type: string
          example:
            - will.smith@gmail.com
    submit-a-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Report submitted for approval successfully.
    retrieve-details-of-an-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: success
          readOnly: true
        expense_report:
          $ref: '#/components/schemas/expense_report'
    update-an-expense-report-request:
      type: object
      properties:
        report_name:
          $ref: '#/components/schemas/report_name'
        description:
          $ref: '#/components/schemas/description'
        start_date:
          $ref: '#/components/schemas/start_date'
        end_date:
          $ref: '#/components/schemas/end_date'
        expenses:
          description: Expenses associated with User.
          type: array
          items:
            type: object
            required:
              - expense_id
            properties:
              expense_id:
                $ref: '#/components/schemas/expense_id'
              order:
                $ref: '#/components/schemas/order'
        custom_fields:
          description: Custom Fields related to Expense.
          type: array
          items:
            type: object
            required:
              - customfield_id
              - value
            properties:
              customfield_id:
                $ref: '#/components/schemas/customfield_id'
              value:
                $ref: '#/components/schemas/value'
        customer_id:
          $ref: '#/components/schemas/customer_id'
        project_id:
          $ref: '#/components/schemas/project_id'
        tags:
          description: Tags associated with the Report.
          type: array
          items:
            type: object
            required:
              - tag_id
              - tag_option_id
            properties:
              tag_id:
                $ref: '#/components/schemas/tag_id'
              tag_option_id:
                $ref: '#/components/schemas/tag_option_id'
        expense_id:
          $ref: '#/components/schemas/expense_id'
        customfield_id:
          $ref: '#/components/schemas/customfield_id'
        value:
          $ref: '#/components/schemas/value'
        tag_id:
          $ref: '#/components/schemas/tag_id'
        tag_option_id:
          $ref: '#/components/schemas/tag_option_id'
    update-an-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Expense report details updated successfully.
          readOnly: true
        expense_report:
          type: object
          properties:
            report_id:
              $ref: '#/components/schemas/report_id'
            report_name:
              $ref: '#/components/schemas/report_name'
            description:
              $ref: '#/components/schemas/description'
            report_number:
              $ref: '#/components/schemas/report_number'
            start_date:
              $ref: '#/components/schemas/start_date'
            end_date:
              $ref: '#/components/schemas/end_date'
            status:
              $ref: '#/components/schemas/status'
            currency_id:
              $ref: '#/components/schemas/currency_id'
            price_precision:
              $ref: '#/components/schemas/price_precision'
            currency_code:
              $ref: '#/components/schemas/currency_code'
            total:
              $ref: '#/components/schemas/total'
            reimbursable_total:
              $ref: '#/components/schemas/reimbursable_total'
            non_reimbursable_total:
              $ref: '#/components/schemas/non_reimbursable_total'
            created_time:
              $ref: '#/components/schemas/created_time'
            created_date:
              $ref: '#/components/schemas/created_date'
            created_by_id:
              $ref: '#/components/schemas/created_by_id'
            created_by_name:
              $ref: '#/components/schemas/created_by_name'
            created_by_email:
              $ref: '#/components/schemas/created_by_email'
            last_modified_time:
              $ref: '#/components/schemas/last_modified_time'
            tags:
              $ref: '#/components/schemas/tags'
            expenses:
              $ref: '#/components/schemas/expenses'
            expired_expense_count:
              $ref: '#/components/schemas/expired_expense_count'
            reimbursable_expenses_count:
              $ref: '#/components/schemas/reimbursable_expenses_count'
            non_reimbursable_expenses_count:
              $ref: '#/components/schemas/non_reimbursable_expenses_count'
            custom_fields:
              $ref: '#/components/schemas/custom_fields'
            customer_id:
              $ref: '#/components/schemas/customer_id'
            customer_name:
              $ref: '#/components/schemas/customer_name'
            project_id:
              $ref: '#/components/schemas/project_id'
            project_name:
              $ref: '#/components/schemas/project_name'
            employee_number:
              $ref: '#/components/schemas/employee_number'
            department_id:
              $ref: '#/components/schemas/department_id'
            department_name:
              $ref: '#/components/schemas/department_name'
            policy_id:
              $ref: '#/components/schemas/policy_id'
            policy_name:
              $ref: '#/components/schemas/policy_name'
    approve-an-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Report approved successfully
          readOnly: true
    reject-an-expense-report-request:
      type: object
      properties:
        comments:
          $ref: '#/components/schemas/comments'
    reject-an-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Report has been rejected
          readOnly: true
    reimburse-an-expense-report-request:
      type: object
      properties:
        notes:
          $ref: '#/components/schemas/notes'
        date:
          $ref: '#/components/schemas/date'
        amount:
          $ref: '#/components/schemas/amount'
        reference_number:
          $ref: '#/components/schemas/reference_number'
        currency_id:
          $ref: '#/components/schemas/currency_id'
    reimburse-an-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Report has been reimbursed
          readOnly: true
        expense_report_reimbursed:
          $ref: '#/components/schemas/expense_report_reimbursed'
    approval-history-of-an-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: success
          readOnly: true
        approval_history:
          type: array
          items:
            type: object
            properties:
              approval_history_id:
                $ref: '#/components/schemas/approval_history_id'
              report_name:
                $ref: '#/components/schemas/report_name'
              report_id:
                $ref: '#/components/schemas/report_id'
              report_number:
                $ref: '#/components/schemas/report_number'
              expense_id:
                $ref: '#/components/schemas/expense_id'
              comments:
                $ref: '#/components/schemas/comments'
              description:
                $ref: '#/components/schemas/description'
              type:
                $ref: '#/components/schemas/type'
              previous_status:
                $ref: '#/components/schemas/previous_status'
              approval_status:
                $ref: '#/components/schemas/approval_status'
              previous_approver_id:
                $ref: '#/components/schemas/previous_approver_id'
              previous_approver_name:
                $ref: '#/components/schemas/previous_approver_name'
              previous_approver_email:
                $ref: '#/components/schemas/previous_approver_email'
              approver_id:
                $ref: '#/components/schemas/approver_id'
              approver_name:
                $ref: '#/components/schemas/approver_name'
              date:
                $ref: '#/components/schemas/date'
              time:
                $ref: '#/components/schemas/time'
              commented_by_id:
                $ref: '#/components/schemas/commented_by_id'
              commented_by:
                $ref: '#/components/schemas/commented_by'
              photo_url:
                $ref: '#/components/schemas/photo_url'
    takeback-an-expense-report-request:
      type: object
      properties:
        comments:
          description: Reason for recalling the submitted report. Recorded in the audit trail.
          type: string
          maxLength: 500
          example: Need to add a missing receipt before the manager reviews it.
    takeback-an-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Expense report has been taken back successfully.
          readOnly: true
    archive-an-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Expense report has been archived successfully.
          readOnly: true
    unarchive-an-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Expense report has been unarchived successfully.
          readOnly: true
    share-an-expense-report-request:
      type: object
      properties:
        user_ids:
          description: Comma-separated list of user IDs the report should be shared with.
          type: string
          example: 16367000000074027,16367000000074028
    share-an-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Expense report has been shared successfully.
          readOnly: true
    forward-approval-of-an-expense-report-request:
      type: object
      properties:
        approver_id:
          $ref: '#/components/schemas/approver_id'
        comments:
          description: Note shown to the next approver explaining why approval is being forwarded.
          type: string
          maxLength: 500
          example: Out of office until Friday - please review.
        approval_reason:
          description: Reason recorded with the forward action in the audit trail.
          type: string
          maxLength: 500
          example: Delegating to senior approver for high-value expenses.
    forward-approval-of-an-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Expense report approval has been forwarded successfully.
          readOnly: true
    reject-an-expense-in-a-report-request:
      type: object
      properties:
        comments:
          description: Reason for rejecting this expense line item. Recorded in the audit trail and visible to the submitter.
          type: string
          maxLength: 500
          example: Missing original receipt.
    reject-an-expense-in-a-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Expense has been rejected successfully.
          readOnly: true
    bulk-reject-expenses-in-a-report-request:
      type: object
      properties:
        comments:
          description: Reason applied to every rejected expense. Recorded in the audit trail.
          type: string
          maxLength: 500
          example: Policy violation - duplicate receipts.
        expense_ids:
          description: Comma-separated list of expense IDs to reject (max 30).
          type: string
          example: 16367000000089001,16367000000089002,16367000000089003
    bulk-reject-expenses-in-a-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The selected expenses have been rejected successfully.
          readOnly: true
    validate-an-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Validation completed.
          readOnly: true
        is_valid:
          description: Indicates whether the report is ready to be submitted.
          type: boolean
          example: false
          readOnly: true
        violations:
          description: List of policy violations or warnings that would block submission.
          type: array
          items:
            type: object
            properties:
              expense_id:
                type: string
                example: '16367000000089001'
              violation_type:
                type: string
                example: receipt_missing
              message:
                type: string
                example: Original receipt is required for this expense.
    get-expense-report-receipt-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: success
          readOnly: true
    add-comment-to-expense-report-request:
      type: object
      required:
        - comments
      properties:
        expense_id:
          description: Optional expense ID if the comment is tied to a specific line item.
          type: string
          example: '16367000000089001'
        comments:
          description: Comment body. Supports rich text. Maximum 5000 characters.
          type: string
          maxLength: 5000
          example: Please attach the original receipt before resubmitting.
    add-comment-to-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Comment has been added successfully.
          readOnly: true
    delete-comment-of-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Comment has been deleted successfully.
          readOnly: true
    associate-tags-to-expense-report-request:
      type: object
      properties:
        tags:
          description: List of tag option associations to apply to the report.
          type: array
          items:
            type: object
            properties:
              tag_id:
                description: Unique identifier of the tag.
                type: string
                example: '16367000000092001'
              tag_option_id:
                description: Unique identifier of the tag option being applied.
                type: string
                example: '16367000000092002'
    associate-tags-to-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Tags have been associated successfully.
          readOnly: true
    add-expenses-to-expense-report-request:
      type: object
      required:
        - expense_ids
      properties:
        expense_ids:
          description: Comma-separated list of expense IDs to attach to the report (max 200).
          type: string
          example: 16367000000089001,16367000000089002,16367000000089003
    add-expenses-to-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The selected expenses have been added to the report successfully.
          readOnly: true
    remove-expenses-from-expense-report-request:
      type: object
      required:
        - expense_ids
      properties:
        expense_ids:
          description: Comma-separated list of expense IDs to detach from the report (max 200).
          type: string
          example: 16367000000089001,16367000000089002
    remove-expenses-from-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The selected expenses have been removed from the report successfully.
          readOnly: true
    upload-expense-report-attachment-request:
      type: object
      properties:
        attachment:
          description: File(s) to upload. Up to 20 files per request, 10 MB each. Allowed types include common image, document, and archive formats.
          type: array
          items:
            type: string
            format: binary
        doc:
          description: Optional JSON metadata describing the upload.
          type: string
          maxLength: 50000
        totalFiles:
          description: Total number of files being uploaded in this request.
          type: integer
          example: 1
        document_ids:
          description: Comma-separated list of existing document IDs to associate with this upload (max 10).
          type: string
          example: '16367000000093001'
        is_multi_page:
          description: Set to true if the uploaded file represents a multi-page receipt.
          type: boolean
          example: false
    upload-expense-report-attachment-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Attachment has been uploaded successfully.
          readOnly: true
    get-expense-report-attachment-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: success
          readOnly: true
    delete-expense-report-attachment-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Attachment has been deleted successfully.
          readOnly: true
    reupload-expense-report-attachment-request:
      type: object
      properties:
        folderId:
          description: Folder identifier when re-uploading from a cloud source.
          type: string
          maxLength: 5000
        docName:
          description: New document name (max 5000 chars).
          type: string
          maxLength: 5000
        source:
          description: Cloud source identifier (e.g. drive, dropbox).
          type: string
          example: drive
        doc:
          description: Optional JSON metadata describing the re-upload.
          type: string
          maxLength: 50000
    reupload-expense-report-attachment-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Attachment has been re-uploaded successfully.
          readOnly: true
    remove-advance-payment-from-expense-report-request:
      type: object
      required:
        - advance_payment_ids
      properties:
        advance_payment_ids:
          description: Comma-separated list of advance payment IDs to detach from the report (max 200).
          type: string
          example: 16367000000094001,16367000000094002
    remove-advance-payment-from-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Advance payments have been removed successfully.
          readOnly: true
    get-expense-report-budget-summary-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: success
          readOnly: true
        budget_summary:
          description: Budget vs. actual summary for the report.
          type: object
          properties:
            budget_amount:
              type: number
              format: double
              example: 5000
            actual_amount:
              type: number
              format: double
              example: 4250.5
            variance:
              type: number
              format: double
              example: 749.5
    get-expense-report-reimbursement-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: success
          readOnly: true
        reimbursement:
          description: Reimbursement details for the report.
          type: object
          properties:
            reimbursement_id:
              type: string
              example: '16367000000095001'
            status:
              type: string
              example: reimbursed
            amount:
              type: number
              format: double
              example: 4250.5
            reimbursed_date:
              type: string
              format: date
              example: '2026-05-15'
    delete-an-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Expense report has been deleted successfully.
          readOnly: true
    change-status-of-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Status has been updated successfully.
          readOnly: true
    export-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Export started.
          readOnly: true
        export_id:
          description: Identifier of the export job, used to poll status.
          type: string
          example: '16367000000096001'
          readOnly: true
    cancel-reimbursement-of-expense-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Reimbursement has been cancelled successfully.
          readOnly: true
    add-expense-to-report-request:
      type: object
      required:
        - report_id
      properties:
        report_id:
          description: Unique identifier of the report the expense should be attached to.
          type: string
          example: '16367000000081005'
    add-expense-to-report-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Expense has been added to the report successfully.
          readOnly: true
    bulk-submit-expense-reports-request:
      type: object
      required:
        - report_ids
      properties:
        report_ids:
          description: Comma-separated list of report IDs to submit (max 25).
          type: string
          example: 16367000000081005,16367000000081006
        approver_id:
          $ref: '#/components/schemas/approver_id'
    bulk-submit-expense-reports-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The selected reports have been submitted successfully.
          readOnly: true
    bulk-approve-expense-reports-request:
      type: object
      required:
        - report_ids
      properties:
        report_ids:
          description: Comma-separated list of report IDs to approve (max 200).
          type: string
          example: 16367000000081005,16367000000081006
    bulk-approve-expense-reports-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The selected reports have been approved successfully.
          readOnly: true
    bulk-reject-expense-reports-request:
      type: object
      required:
        - report_ids
      properties:
        report_ids:
          description: Comma-separated list of report IDs to reject (max 200).
          type: string
          example: 16367000000081005,16367000000081006
        comments:
          description: Reason applied to every rejected report. Recorded in the audit trail.
          type: string
          maxLength: 500
          example: Policy violation - receipts not attached.
    bulk-reject-expense-reports-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The selected reports have been rejected successfully.
          readOnly: true
    bulk-reimburse-expense-reports-request:
      type: object
      required:
        - report_ids
      properties:
        report_ids:
          description: Comma-separated list of report IDs to reimburse.
          type: string
          example: 16367000000081005,16367000000081006
        reimbursed_date:
          description: Date the reimbursement was made (yyyy-mm-dd).
          type: string
          format: date
          example: '2026-05-15'
        reference_number:
          description: Optional payment reference recorded with the reimbursement.
          type: string
          maxLength: 100
          example: CHQ-1024
    bulk-reimburse-expense-reports-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The selected reports have been reimbursed successfully.
          readOnly: true
    bulk-archive-expense-reports-request:
      type: object
      required:
        - report_ids
      properties:
        report_ids:
          description: Comma-separated list of report IDs to archive (max 200).
          type: string
          example: 16367000000081005,16367000000081006
    bulk-archive-expense-reports-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The selected reports have been archived successfully.
          readOnly: true
    bulk-unarchive-expense-reports-request:
      type: object
      required:
        - report_ids
      properties:
        report_ids:
          description: Comma-separated list of report IDs to unarchive (max 200).
          type: string
          example: 16367000000081005,16367000000081006
    bulk-unarchive-expense-reports-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The selected reports have been unarchived successfully.
          readOnly: true
    bulk-delete-expense-reports-request:
      type: object
      required:
        - report_ids
      properties:
        report_ids:
          description: Comma-separated list of report IDs to delete (max 200).
          type: string
          example: 16367000000081005,16367000000081006
    bulk-delete-expense-reports-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The selected reports have been deleted successfully.
          readOnly: true
    bulk-forward-approval-expense-reports-request:
      type: object
      required:
        - report_ids
      properties:
        report_ids:
          description: Comma-separated list of report IDs to forward (max 200).
          type: string
          example: 16367000000081005,16367000000081006
        approver_id:
          $ref: '#/components/schemas/approver_id'
        comments:
          description: Note shown to the next approver for every forwarded report.
          type: string
          maxLength: 500
          example: Out of office until Friday.
    bulk-forward-approval-expense-reports-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The selected reports have been forwarded successfully.
          readOnly: true
    bulk-change-status-of-expense-reports-request:
      type: object
      required:
        - report_ids
      properties:
        report_ids:
          description: Comma-separated list of report IDs to update (max 30).
          type: string
          example: 16367000000081005,16367000000081006
    bulk-change-status-of-expense-reports-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Status has been updated successfully for the selected reports.
          readOnly: true
    bulk-reset-substatus-of-expense-reports-request:
      type: object
      required:
        - report_ids
      properties:
        report_ids:
          description: Comma-separated list of report IDs to reset substatus for (max 30).
          type: string
          example: 16367000000081005,16367000000081006
    bulk-reset-substatus-of-expense-reports-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Substatus has been reset successfully for the selected reports.
          readOnly: true
    bulk-field-update-expense-reports-request:
      type: object
      required:
        - report_ids
      properties:
        report_ids:
          description: Comma-separated list of report IDs whose fields should be updated.
          type: string
          example: 16367000000081005,16367000000081006
        fields:
          description: Map of field name to new value to apply to every listed report.
          type: object
          example:
            customer_id: '16367000000075081'
            project_id: '16367000000076002'
    bulk-field-update-expense-reports-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Field updates have been applied to the selected reports.
          readOnly: true
  securitySchemes:
    Zoho_Auth:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: https://accounts.zoho.com/oauth/v2/auth
          scopes:
            ZohoExpense.expensereport.CREATE: Create Expense Report
            ZohoExpense.expensereport.READ: Read Expense Report
            ZohoExpense.expensereport.UPDATE: Update Expense Report
            ZohoExpense.expensereport.DELETE: Delete Expense Report
            ZohoExpense.approval.CREATE: Create Approval
            ZohoExpense.reimbursement.CREATE: Create Reimbursement
            ZohoExpense.orgsettings.CREATE: Export Expense Report
