# List registered hours

**Requires scope:** `business`.
Returns a list of available registered hours

Endpoint: GET /api/business/v3/registered-hours
Security: apiKey

## Query parameters:

  - `startDate` (string)
    list registered hours that start from this date

  - `endDate` (string)
    list registered hours up until this date (end date inclusive)

  - `officeId` (integer)
    the office the employee has a contract in

  - `page` (integer)
    Page number of the paginated result set. The first page is `1`.

## Response 200 fields (application/json):

  - `_links` (object)

  - `_links.self` (object)

  - `_links.self.href` (string)
    link to current page
    Example: https://app.dyflexis.com/{systemName}/api/business/v3/registered-hours?page=2

  - `_links.next` (object)

  - `_links.next.href` (string | null)
    link to next page
    Example: https://app.dyflexis.com/{systemName}/api/business/v3/registered-hours?page=3

  - `_links.prev` (object)

  - `_links.prev.href` (string | null)
    link to previous page
    Example: https://app.dyflexis.com/{systemName}/api/business/v3/registered-hours?page=1

  - `_links.first` (object)

  - `_links.first.href` (string)
    link to first page
    Example: https://app.dyflexis.com/{systemName}/api/business/v3/registered-hours?page=1

  - `_links.last` (object)

  - `_links.last.href` (string)
    link to last page
    Example: https://app.dyflexis.com/{systemName}/api/business/v3/registered-hours?page=100

  - `registeredHours` (array)
    Collection of all registered hours

  - `registeredHours.id` (integer)
    Internal hour id used by Dyflexis
    Example: 1

  - `registeredHours.employeeId` (integer)
    Internal employee id used by Dyflexis
    Example: 1

  - `registeredHours.personnelNumber` (string | null)
    External employee id used by the client
    Example: HV-FD-014

  - `registeredHours.firstName` (string)
    First name
    Example: Maria

  - `registeredHours.infix` (string | null)
    Infix (name particle), or null when the employee has none. May also be an empty string.
    Example: de

  - `registeredHours.lastName` (string)
    Last Name
    Example: Santos

  - `registeredHours.employeeCostCenter` (string | null)
    The cost center associated with the employee
    Example: 0052

  - `registeredHours.contractTypeId` (integer)
    Internal contract type id used by Dyflexis
    Example: 123

  - `registeredHours.contractType` (string | null)
    The name of the contract type the employee has
    Example: Hospitality permanent

  - `registeredHours.officeId` (integer | null)
    The id of the office the hour has been registered for. For neutral hour types, which are not registered for specific offices, this will be the employee contract office.
    Example: 1

  - `registeredHours.officeName` (string | null)
    The name of the office the hour has been registered for. For neutral hour types, which are not registered for specific offices, this will be the employee contract office.
    Example: Harborview Grand Hotel

  - `registeredHours.departmentId` (integer | null)
    The id of the department the hour has been registered for. For neutral hour types, which are not registered for specific departments, this will be null.
    Example: 1

  - `registeredHours.departmentName` (string | null)
    The name of the department the hour has been registered for. For neutral hour types, which are not registered for specific departments, this will be null.
    Example: Front Desk

  - `registeredHours.costCenterId` (integer | null)
    The id of the cost center associated with the department the hour has been registered for. For neutral hour types, which are not registered for specific departments, this will be null.
    Example: 1

  - `registeredHours.costCenterName` (string | null)
    The name of the cost center associated with the department the hour has been registered for. For neutral hour types, which are not registered for specific departments, this will be null.
    Example: Name

  - `registeredHours.costCenterCode` (string | null)
    The code of the cost center associated with the department the hour has been registered for. For neutral hour types, which are not registered for specific departments, this will be null.
    Example: code

  - `registeredHours.startDateTime` (string)
    DateTime in ISO 8601 format
    Example: 2026-12-31T12:34:56+01:00

  - `registeredHours.hourType` (string)
    The hour type of the registered hour
    Example: work

  - `registeredHours.hours` (number)
    The registered hours.
    Example: 8.5

  - `registeredHours.status` (string)
    Whether the registered hour has been approved, declined, or registered
    Enum: "approved", "declined", "registered"

  - `registeredHours.breakMinutes` (integer)
    The break time of the hour in minutes, 0 if no break.
    Example: 30

  - `registeredHours.duration` (integer)
    The registered time in minutes.
    Example: 480

  - `registeredHours.kilometers` (number)
    Number of kilometers that have been registered at this time
    Example: 10

  - `registeredHours.customExpenses` (array)
    Collection of all the custom expenses that have been registered at this time

  - `registeredHours.customExpenses.name` (string)
    The System name of the expense
    Example: office_day

  - `registeredHours.customExpenses.value` (string | integer | boolean | array)
    The value of the expense
    Example: true

  - `registeredHours.remark` (string | null)
    Remark of the register hour block

  - `pageCount` (integer)
    number of pages
    Example: 100

## Response 400 fields (application/json):

  - `title` (string, required)
    Short, human-readable summary of the error.
    Example: Unauthorized

  - `status` (integer, required)
    The HTTP status code.
    Example: 401

  - `message` (string, required)
    Human-readable explanation of this occurrence of the error.
    Example: Invalid Token

  - `detail` (string)
    Human-readable explanation of this occurrence. Not returned by all backend versions.
    Example: Invalid Token

  - `code` (integer)
    The HTTP status code (duplicate of `status`). Not returned by all backend versions.
    Example: 401

## Response 401 fields (application/json):

  - `title` (string, required)
    Short, human-readable summary of the error.
    Example: Unauthorized

  - `status` (integer, required)
    The HTTP status code.
    Example: 401

  - `message` (string, required)
    Human-readable explanation of this occurrence of the error.
    Example: Invalid Token

  - `detail` (string)
    Human-readable explanation of this occurrence. Not returned by all backend versions.
    Example: Invalid Token

  - `code` (integer)
    The HTTP status code (duplicate of `status`). Not returned by all backend versions.
    Example: 401

## Response 403 fields (application/json):

  - `title` (string, required)
    Short, human-readable summary of the error.
    Example: Unauthorized

  - `status` (integer, required)
    The HTTP status code.
    Example: 401

  - `message` (string, required)
    Human-readable explanation of this occurrence of the error.
    Example: Invalid Token

  - `detail` (string)
    Human-readable explanation of this occurrence. Not returned by all backend versions.
    Example: Invalid Token

  - `code` (integer)
    The HTTP status code (duplicate of `status`). Not returned by all backend versions.
    Example: 401

