# Register a clock-out

**Requires scope:** `clock`.
Registers a clock out moment for an employee.

Endpoint: POST /api/clock/v3/clock-out
Security: apiKey

## Request fields (application/json):

  - `employeeId` (integer, required)
    Example: 1

  - `deviceId` (string, required)
    Example: POS-FRONTDESK-01

  - `dateTime` (string, required)
    DateTime in UTC ISO 8601 format
    Example: 2026-01-01T00:00:00Z

  - `officeId` (integer | null)
    Example: 1

## 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

  - `type` (string)
    URI reference identifying the error type, when present.
    Example: https://tools.ietf.org/html/rfc2616#section-10

  - `violations` (array)
    Per-field validation failures (one backend variant).

  - `violations.propertyPath` (string)
    Example: employeeId

  - `violations.title` (string)
    Example: This value should not be null.

  - `violations.type` (string | null)

  - `errors` (array)
    Per-field validation failures (another backend variant).

  - `errors.message` (string)
    Example: This value should not be null.

  - `errors.code` (string | null)
    Machine-readable violation code.

  - `errors.context` (object)

  - `errors.context.field` (string | null)

## 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

## Response 500 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

