Remote Timesheets API

The Timesheets API from Remote — 6 operation(s) for timesheets.

OpenAPI Specification

remote-timesheets-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Remote Address Details Timesheets API
  version: 0.1.0
servers:
- url: https://gateway.remote.com/
  variables: {}
- url: https://gateway.remote-sandbox.com/
  variables: {}
security:
- OAuth2: []
tags:
- name: Timesheets
paths:
  /v1/timesheets/{id}:
    get:
      callbacks: {}
      deprecated: false
      description: 'Shows a timesheet by its ID.


        ## Scopes


        | Category | Read only Scope | Write only Scope (read access implicit) |

        |---|---|---|

        | Manage timeoffs (`time_and_attendance`) | View timesheets (`timesheet:read`) | Manage timesheets (`timesheet:write`) |

        '
      operationId: get_v1_timesheets_id
      parameters:
      - description: Timesheet ID
        example: ec23ebda-4b7a-4dbd-9d79-bd1eec3f83c9
        in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimesheetResponse'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Unprocessable Entity
      security:
      - CustomerAPIToken:
        - https://gateway.remote.com/company.manage
        - timesheet:read
        - timesheet:write
        - time_and_attendance
        - all:write
        - all:read
        OAuth2AuthorizationCode:
        - https://gateway.remote.com/company.manage
        - timesheet:read
        - timesheet:write
        - time_and_attendance
        - all:write
        - all:read
      summary: Show timesheet
      tags:
      - Timesheets
  /v1/contractors/employments/{employment_id}/timesheets:
    post:
      callbacks: {}
      deprecated: false
      description: 'Creates a timesheet on behalf of a contractor employment.


        The submitted hours are immediately available to the contractor in the Remote UI for

        self-serve invoice creation (Invoices → Create invoice → "Use Time Tracking").


        This endpoint is restricted to contractor employments. Calls against EOR or Global Payroll

        employments are rejected with `422`.



        ## Scopes


        | Category | Read only Scope | Write only Scope (read access implicit) |

        |---|---|---|

        | Manage timeoffs (`time_and_attendance`) | - | Manage timesheets (`timesheet:write`) |

        '
      operationId: post_v1_contractors_employments_employment_id_timesheets
      parameters:
      - description: Contractor employment ID
        example: c0a167b8-459d-4e96-9766-7a04c160892e
        in: path
        name: employment_id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContractorCreateTimesheetParams'
        description: ContractorCreateTimesheetParams
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractorTimesheetResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractorCreateTimesheetUnprocessableEntityResponse'
          description: Unprocessable Entity
      security:
      - CustomerAPIToken:
        - https://gateway.remote.com/company.manage
        - timesheet:write
        - time_and_attendance
        - all:write
        OAuth2AuthorizationCode:
        - https://gateway.remote.com/company.manage
        - timesheet:write
        - time_and_attendance
        - all:write
      summary: Create a contractor timesheet
      tags:
      - Timesheets
  /v1/employee/timesheets:
    get:
      callbacks: {}
      deprecated: false
      description: 'Returns a paginated list of timesheets for the authenticated employee.


        ## Scopes


        | Category | Read only Scope | Write only Scope (read access implicit) |

        |---|---|---|

        | Manage timeoffs (`time_and_attendance`) | View timesheets (`timesheet:read`) | Manage timesheets (`timesheet:write`) |

        '
      operationId: get_v1_employee_timesheets
      parameters:
      - description: Starts fetching records after the given page
        example: 1
        in: query
        name: page
        required: false
        schema:
          default: 1
          minimum: 1
          type: integer
      - description: Number of items per page
        example: 20
        in: query
        name: page_size
        required: false
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenResponse'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found
      security:
      - OAuth2Assertion:
        - https://gateway.remote.com/employment.manage
        - timesheet:read
        - timesheet:write
        - time_and_attendance
        - all:write
        - all:read
      summary: List timesheets for the authenticated employee
      tags:
      - Timesheets
  /v1/timesheets/{timesheet_id}/approve:
    post:
      callbacks: {}
      deprecated: false
      description: 'Approves the given timesheet.


        ## Scopes


        | Category | Read only Scope | Write only Scope (read access implicit) |

        |---|---|---|

        | Manage timeoffs (`time_and_attendance`) | - | Manage timesheets (`timesheet:write`) |

        '
      operationId: post_v1_timesheets_timesheet_id_approve
      parameters:
      - description: Timesheet ID
        example: ec23ebda-4b7a-4dbd-9d79-bd1eec3f83c9
        in: path
        name: timesheet_id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MinimalTimesheetResponse'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Unprocessable Entity
      security:
      - CustomerAPIToken:
        - https://gateway.remote.com/company.manage
        - timesheet:write
        - time_and_attendance
        - all:write
        OAuth2AuthorizationCode:
        - https://gateway.remote.com/company.manage
        - timesheet:write
        - time_and_attendance
        - all:write
      summary: Approve timesheet
      tags:
      - Timesheets
  /v1/timesheets:
    get:
      callbacks: {}
      deprecated: false
      description: 'Lists all timesheets.


        ## Scopes


        | Category | Read only Scope | Write only Scope (read access implicit) |

        |---|---|---|

        | Manage timeoffs (`time_and_attendance`) | View timesheets (`timesheet:read`) | Manage timesheets (`timesheet:write`) |

        '
      operationId: get_v1_timesheets
      parameters:
      - description: Filter timesheets by their status
        in: query
        name: status
        required: false
        schema:
          $ref: '#/components/schemas/TimesheetStatus'
      - description: Sort order
        example: asc
        in: query
        name: order
        required: false
        schema:
          enum:
          - asc
          - desc
          type: string
      - description: Field to sort by
        example: submitted_at
        in: query
        name: sort_by
        required: false
        schema:
          enum:
          - submitted_at
          type: string
      - description: Starts fetching records after the given page
        example: 1
        in: query
        name: page
        required: false
        schema:
          default: 1
          minimum: 1
          type: integer
      - description: Number of items per page
        example: 20
        in: query
        name: page_size
        required: false
        schema:
          default: 20
          maximum: 100
          minimum: 1
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListTimesheetsResponse'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Unprocessable Entity
      security:
      - CustomerAPIToken:
        - https://gateway.remote.com/company.manage
        - timesheet:read
        - timesheet:write
        - time_and_attendance
        - all:write
        - all:read
        OAuth2AuthorizationCode:
        - https://gateway.remote.com/company.manage
        - timesheet:read
        - timesheet:write
        - time_and_attendance
        - all:write
        - all:read
      summary: List timesheets
      tags:
      - Timesheets
  /v1/timesheets/{timesheet_id}/send-back:
    post:
      callbacks: {}
      deprecated: false
      description: 'Sends the given timesheet back to the employee for review or modification.


        ## Scopes


        | Category | Read only Scope | Write only Scope (read access implicit) |

        |---|---|---|

        | Manage timeoffs (`time_and_attendance`) | - | Manage timesheets (`timesheet:write`) |

        '
      operationId: post_v1_timesheets_timesheet_id_send-back
      parameters:
      - description: Timesheet ID
        example: ec23ebda-4b7a-4dbd-9d79-bd1eec3f83c9
        in: path
        name: timesheet_id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendBackTimesheetParams'
        description: SendBackTimesheetParams
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SentBackTimesheetResponse'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
          description: Unauthorized
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
          description: Not Found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntityResponse'
          description: Unprocessable Entity
      security:
      - CustomerAPIToken:
        - https://gateway.remote.com/company.manage
        - timesheet:write
        - time_and_attendance
        - all:write
        OAuth2AuthorizationCode:
        - https://gateway.remote.com/company.manage
        - timesheet:write
        - time_and_attendance
        - all:write
      summary: Send back a timesheet for review or modification
      tags:
      - Timesheets
components:
  schemas:
    ParameterError:
      example:
        code: invalid_param
        message: Invalid parameter
        param: employment_id
      properties:
        code:
          description: An error code that describes the nature of the error.
          type: string
        message:
          description: A developer friendly error message that gives details on what the error was and how it may be remedied.
          type: string
        param:
          description: The parameter that lead to the error message.
          type: string
      required:
      - code
      - message
      - param
      title: ParameterError
      type: object
    MinimalTimesheet:
      additionalProperties: false
      description: A lightweight timesheet representation returned after create and approve operations. Contains basic identification and status fields but not the detailed hours breakdown or time tracking entries.
      example:
        approval_required: true
        country_code: PRT
        employment_id: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
        end_date: '2021-07-01'
        id: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
        notes: Some notes
        start_date: '2021-07-01'
        status: submitted
        submitted_at: '2021-07-15T18:18:17Z'
      properties:
        approval_required:
          description: Whether this timesheet requires explicit approval before processing.
          type: boolean
        country_code:
          $ref: '#/components/schemas/CountryCode'
        employment_id:
          $ref: '#/components/schemas/UuidSlug'
        end_date:
          $ref: '#/components/schemas/Date'
        id:
          $ref: '#/components/schemas/UuidSlug'
        notes:
          description: Optional notes added by the employee.
          nullable: true
          type: string
        start_date:
          $ref: '#/components/schemas/Date'
        status:
          $ref: '#/components/schemas/TimesheetStatus'
        submitted_at:
          description: The timestamp when the employee submitted this timesheet. Null if not yet submitted.
          format: datetime
          nullable: true
          type: string
      required:
      - id
      - start_date
      - end_date
      - status
      - country_code
      - employment_id
      - submitted_at
      - approval_required
      - notes
      title: MinimalTimesheet
      type: object
    TimeTracking:
      additionalProperties: false
      description: A single time tracking entry within a timesheet, representing a block of work with clock-in/out times. Includes detailed breakdowns of hours by type (regular, overtime, night, weekend, holiday).
      example:
        clock_in: '2021-07-15T18:18:17Z'
        clock_out: '2021-07-15T18:18:17Z'
        has_holiday_hours: false
        has_night_hours: false
        has_weekend_hours: false
        holiday_hours:
          hours: 35
          minutes: 13
        night_hours:
          hours: 35
          minutes: 13
        notes: Time tracking project.
        time_breakdown:
          day:
            holiday:
              hours: 35
              minutes: 13
            regular:
              hours: 35
              minutes: 13
            weekend:
              hours: 35
              minutes: 13
          night:
            holiday:
              hours: 35
              minutes: 13
            regular:
              hours: 35
              minutes: 13
            weekend:
              hours: 35
              minutes: 13
        timezone: Etc/UTC
        total_hours:
          hours: 35
          minutes: 13
        type: regular_hours
        weekend_hours:
          hours: 35
          minutes: 13
      properties:
        clock_in:
          $ref: '#/components/schemas/DateTimeIso8601'
        clock_out:
          $ref: '#/components/schemas/DateTimeIso8601'
        has_holiday_hours:
          description: Whether this time tracking entry includes any hours worked on public holidays.
          type: boolean
        has_night_hours:
          description: Whether this time tracking entry includes any hours worked during night hours.
          type: boolean
        has_weekend_hours:
          description: Whether this time tracking entry includes any hours worked on weekends.
          type: boolean
        holiday_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        night_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        notes:
          description: Optional free-text notes about this time tracking entry, such as project or task details.
          nullable: true
          type: string
        time_breakdown:
          $ref: '#/components/schemas/TimeBreakdown'
        timezone:
          $ref: '#/components/schemas/Timezone'
        total_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        type:
          description: The category of time being tracked (e.g., regular hours, overtime, on-call, break time).
          enum:
          - regular_hours
          - overtime
          - on_call
          - break
          - unpaid_break
          - time_off
          - public_holiday
          type: string
        weekend_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
      required:
      - type
      - notes
      - timezone
      - clock_in
      - clock_out
      - total_hours
      - night_hours
      - weekend_hours
      - holiday_hours
      - has_night_hours
      - has_weekend_hours
      - has_holiday_hours
      - time_breakdown
      title: TimeTracking
      type: object
    Date:
      description: UTC date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format
      example: '2021-07-01'
      format: date
      title: Date
      type: string
    ContractorTimesheetResponse:
      additionalProperties: false
      description: Response returned after creating a contractor timesheet.
      example:
        data:
          timesheet:
            break_hours:
              hours: 35
              minutes: 13
            country_code: PRT
            employment_id: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
            end_date: '2021-07-01'
            id: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
            notes: null
            on_call_hours:
              hours: 35
              minutes: 13
            regular_hours:
              hours: 35
              minutes: 13
            start_date: '2021-07-01'
            submitted_at: '2021-07-15T18:18:17Z'
            time_trackings:
            - clock_in: '2021-07-15T18:18:17Z'
              clock_out: '2021-07-15T18:18:17Z'
              notes: Project Alpha
              timezone: Etc/UTC
              total_hours:
                hours: 35
                minutes: 13
              type: regular_hours
            total_hours:
              hours: 35
              minutes: 13
      properties:
        data:
          properties:
            timesheet:
              $ref: '#/components/schemas/ContractorTimesheet'
          required:
          - timesheet
          type: object
      title: ContractorTimesheetResponse
      type: object
    TimeBreakdown:
      additionalProperties: false
      description: Detailed hours breakdown for a time tracking entry, split by time of day (day vs night) and then by type of day (regular, weekend, holiday). Useful for calculating overtime, night shift premiums, and holiday pay.
      example:
        day:
          holiday:
            hours: 35
            minutes: 13
          regular:
            hours: 35
            minutes: 13
          weekend:
            hours: 35
            minutes: 13
        night:
          holiday:
            hours: 35
            minutes: 13
          regular:
            hours: 35
            minutes: 13
          weekend:
            hours: 35
            minutes: 13
      properties:
        day:
          $ref: '#/components/schemas/TypeOfDayBreakdown'
        night:
          $ref: '#/components/schemas/TypeOfDayBreakdown'
      required:
      - day
      - night
      title: TimeBreakdown
      type: object
    SuccessResponse:
      description: A generic success response returned by operations that don't produce a specific resource (e.g., updates, deletes).
      example:
        data:
          status: ok
      properties:
        data:
          properties:
            status:
              description: The result status. Always `"ok"` for successful operations.
              type: string
          type: object
      required:
      - data
      title: SuccessResponse
      type: object
    Timesheet:
      additionalProperties: false
      description: 'A timesheet represents an employee''s recorded working hours for a specific date range. It contains aggregated hour totals and individual time tracking entries. Timesheets progress through a lifecycle: open (draft) -> submitted -> approved -> processed, or they may be sent back for revision.'
      example:
        approval_required: true
        break_hours:
          hours: 35
          minutes: 13
        country_code: PRT
        employment_id: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
        end_date: '2021-07-01'
        holiday_hours:
          hours: 35
          minutes: 13
        id: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
        night_hours:
          hours: 35
          minutes: 13
        notes: Some notes
        on_call_hours:
          hours: 35
          minutes: 13
        overtime_hours:
          hours: 35
          minutes: 13
        regular_hours:
          hours: 35
          minutes: 13
        start_date: '2021-07-01'
        status: submitted
        submitted_at: '2021-07-15T18:18:17Z'
        time_trackings:
        - clock_in: '2021-07-15T18:18:17Z'
          clock_out: '2021-07-15T18:18:17Z'
          has_holiday_hours: false
          has_night_hours: false
          has_weekend_hours: false
          holiday_hours:
            hours: 35
            minutes: 13
          night_hours:
            hours: 35
            minutes: 13
          notes: Time tracking project.
          time_breakdown:
            day:
              holiday:
                hours: 35
                minutes: 13
              regular:
                hours: 35
                minutes: 13
              weekend:
                hours: 35
                minutes: 13
            night:
              holiday:
                hours: 35
                minutes: 13
              regular:
                hours: 35
                minutes: 13
              weekend:
                hours: 35
                minutes: 13
          timezone: Etc/UTC
          total_hours:
            hours: 35
            minutes: 13
          type: regular_hours
          weekend_hours:
            hours: 35
            minutes: 13
        total_hours:
          hours: 35
          minutes: 13
        unpaid_break_hours:
          hours: 35
          minutes: 13
        weekend_hours:
          hours: 35
          minutes: 13
      properties:
        approval_required:
          description: Whether this timesheet requires explicit approval before it can be processed. When false, the timesheet may be auto-approved based on the company's configuration.
          type: boolean
        break_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        country_code:
          $ref: '#/components/schemas/CountryCode'
        employment_id:
          $ref: '#/components/schemas/UuidSlug'
        end_date:
          $ref: '#/components/schemas/Date'
        holiday_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        id:
          $ref: '#/components/schemas/UuidSlug'
        night_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        notes:
          description: Optional notes added by the employee when submitting the timesheet.
          nullable: true
          type: string
        on_call_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        overtime_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        regular_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        start_date:
          $ref: '#/components/schemas/Date'
        status:
          $ref: '#/components/schemas/TimesheetStatus'
        submitted_at:
          description: The timestamp when the employee submitted this timesheet for approval. Null if the timesheet has not been submitted yet (status is `open`).
          format: datetime
          nullable: true
          type: string
        time_trackings:
          description: The individual time tracking entries that make up this timesheet.
          items:
            $ref: '#/components/schemas/TimeTracking'
          type: array
        timeoff_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        total_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        unpaid_break_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        weekend_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
      required:
      - id
      - start_date
      - end_date
      - status
      - country_code
      - employment_id
      - submitted_at
      - approval_required
      - notes
      - regular_hours
      - total_hours
      - break_hours
      - unpaid_break_hours
      - overtime_hours
      - holiday_hours
      - weekend_hours
      - night_hours
      - on_call_hours
      - time_trackings
      title: Timesheet
      type: object
    SentBackTimesheet:
      additionalProperties: false
      description: A timesheet that has been sent back to the employee for revision. The status will be `in_calibration` and includes the reason provided by the reviewer.
      example:
        id: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
        sent_back: true
        sent_back_reason: Please review the timesheet.
        status: submitted
      properties:
        id:
          $ref: '#/components/schemas/UuidSlug'
        sent_back:
          description: Always `true` for sent-back timesheets, indicating the timesheet was returned for revision.
          type: boolean
        sent_back_reason:
          description: The reason provided by the reviewer for why the timesheet needs to be revised.
          nullable: false
          type: string
        status:
          $ref: '#/components/schemas/TimesheetStatus'
      required:
      - id
      - status
      - sent_back
      - sent_back_reason
      title: SentBackTimesheet
      type: object
    ContractorTimesheet:
      additionalProperties: false
      description: A contractor timesheet, returned by the contractor create endpoint. Only contains fields relevant to the contractor flow — EOR-only fields (overtime, night/weekend/holiday hours, approval flag) are not included.
      example:
        break_hours:
          hours: 35
          minutes: 13
        country_code: PRT
        employment_id: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
        end_date: '2021-07-01'
        id: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
        notes: null
        on_call_hours:
          hours: 35
          minutes: 13
        regular_hours:
          hours: 35
          minutes: 13
        start_date: '2021-07-01'
        submitted_at: '2021-07-15T18:18:17Z'
        time_trackings:
        - clock_in: '2021-07-15T18:18:17Z'
          clock_out: '2021-07-15T18:18:17Z'
          notes: Project Alpha
          timezone: Etc/UTC
          total_hours:
            hours: 35
            minutes: 13
          type: regular_hours
        total_hours:
          hours: 35
          minutes: 13
      properties:
        break_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        country_code:
          $ref: '#/components/schemas/CountryCode'
        employment_id:
          $ref: '#/components/schemas/UuidSlug'
        end_date:
          $ref: '#/components/schemas/Date'
        id:
          $ref: '#/components/schemas/UuidSlug'
        notes:
          description: Optional notes attached to the timesheet.
          nullable: true
          type: string
        on_call_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        regular_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
        start_date:
          $ref: '#/components/schemas/Date'
        submitted_at:
          description: The timestamp the timesheet was submitted.
          format: datetime
          nullable: true
          type: string
        time_trackings:
          description: The individual time tracking entries that make up this timesheet.
          items:
            $ref: '#/components/schemas/ContractorTimeTracking'
          type: array
        total_hours:
          $ref: '#/components/schemas/HoursAndMinutes'
      required:
      - id
      - employment_id
      - country_code
      - start_date
      - end_date
      - submitted_at
      - notes
      - total_hours
      - regular_hours
      - on_call_hours
      - break_hours
      - time_trackings
      title: ContractorTimesheet
      type: object
    Timezone:
      description: '[TZ identifier](https://www.iana.org/time-zones)'
      example: Etc/UTC
      title: Timezone
      type: string
    TypeOfDayBreakdown:
      additionalProperties: false
      description: Hours breakdown by type of day (regular working day, weekend, or public holiday) for a specific time of day (day or night).
      example:
        holiday:
          hours: 35
          minutes: 13
        regular:
          hours: 35
          minutes: 13
        weekend:
          hours: 35
          minutes: 13
      properties:
        holiday:
          $ref: '#/components/schemas/HoursAndMinutes'
        regular:
          $ref: '#/components/schemas/HoursAndMinutes'
        weekend:
          $ref: '#/components/schemas/HoursAndMinutes'
      required:
      - regular
      - weekend
      - holiday
      title: TypeOfDayBreakdown
      type: object
    ListTimesheetsResponse:
      description: Response schema listing many timesheets
      example:
        current_page: 1
        timesheets:
        - approval_required: true
          break_hours:
            hours: 35
            minutes: 13
          country_code: PRT
          employment_id: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
          end_date: '2021-07-01'
          holiday_hours:
            hours: 35
            minutes: 13
          id: 663e0b79-c893-45ff-a1b2-f6dcabc098b5
          night_hours:
            hours: 35
            minutes: 13
          notes: Some notes
          on_call_hours:
            hours: 35
            minutes: 13
          overtime_hours:
            hours: 35
            minutes: 13
          regular_hours:
            hours: 35
            minutes: 13
          start_date: '2021-07-01'
          status: submitted
          submitted_at: '2021-07-15T18:18:17Z'
          time_trackings:
          - clock_in: '2021-07-15T18:18:17Z'
            clock_out: '2021-07-15T18:18:17Z'
            has_holiday_hours: false
     

# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/remote/refs/heads/main/openapi/remote-timesheets-api-openapi.yml