# Start or stop employee shift

Method indicates employee go through company's doors. Starts shift if it's not started or stops it otherwise.Client application should send request immediately when event occurs. If there is any problem with connection or access to API event should be queued in clients side and then sent in order of occurence.Before you can use this method, please:Configure 'API Terminal' in Calamari Clockin configuration panelMake sure API access is enabledExpect error codes:INVALID_EMPLOYEE - when invalid employee id providedINVALID_TIME - when invalid event time providedAPI_TERMINAL_NOT_AVAILABLE - no API terminal configured or the employee doesn't have access to this terminal

Endpoint: POST /clockin/terminal/v1/punch-clock
Version: v1
Security: basicAuth

## Request fields (application/json):

  - `person` (string, required)
    Employee identifier. You can use e-mail or external identifier in format (externalNumber:ABC123)
    Example: "john.white@mycompany.com"

  - `time` (string, required)
    Date and time of event occurence in ISO format.

  - `projectId` (integer)
    Project id.
    Example: 1

  - `description` (string)
    Description
    Example: "Example description"

## Response 200 fields (application/json):

  - `person` (object, required)
    Employee description

  - `person.firstName` (string, required)
    Employee first name
    Example: "John"

  - `person.lastName` (string, required)
    Employee first name
    Example: "White"

  - `shiftStatus` (string, required)
    Employee shift status after request
    Enum: "STARTED", "FINISHED"

## Response 400 fields (application/json):

  - `message` (string)
    Human readable error explanation.
    Example: "Api error"

  - `code` (string)
    Error code.
    Example: "INVALID_JSON_PAYLOAD"

  - `field` (string)
    Which field of payload object caused error. NULL when error is not related to particular field
    Example: "field"

## Response 401 fields (application/json):

  - `message` (string, required)
    Error details
    Example: "Authentication failure"

  - `code` (string, required)
    General type of error
    Example: "AUTH"

  - `field` (string)
    Leftover for backward compatibility

## Response 429 fields (application/json):

  - `code` (string, required)
    General type of error
    Example: "QUOTA_EXCEEDED"

  - `field` (string, required)
    Detailed info about quota and it's current usage
    Example: "Your current usage is 101/day, 10/hour, 1/sec\nYour current limits 100/day, 10/hour, 1/sec."

## Response 500 fields (application/json):

  - `message` (string, required)
    Error details
    Example: "An unexpected error occurred"

  - `code` (string, required)
    General type of error
    Example: "INTERNAL_SERVER_ERROR"

## Response 504 fields (application/json):

  - `message` (string, required)
    Error details
    Example: "Public API call exceeded timeout"

  - `code` (string, required)
    General type of error
    Example: "TIMEOUT"


## Response 403 fields
