> ## Documentation Index
> Fetch the complete documentation index at: https://jobticket-docs.ticket-plus.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Employee

> Retrieve full details for a single employee by their ID.

Returns the complete record for one employee — personal details, subscription status, plan type, current transit ticket, and HR integration links. Use [List Employees](/v1/endpoint/employees-list) if you need to search or filter across all employees.

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url "https://v1-api.ticket-plus.app/employees/42" \
    --header "Authorization: Basic <base64(clientId:clientSecret)>"
  ```

  ```python Python theme={null}
  import requests, base64

  credentials = base64.b64encode(b"<clientId>:<clientSecret>").decode()

  res = requests.get(
      "https://v1-api.ticket-plus.app/employees/42",
      headers={"Authorization": f"Basic {credentials}"},
  )
  print(res.json())
  ```

  ```javascript Node.js theme={null}
  const credentials = Buffer.from("<clientId>:<clientSecret>").toString("base64");

  const res = await fetch("https://v1-api.ticket-plus.app/employees/42", {
    headers: { Authorization: `Basic ${credentials}` },
  });
  console.log(await res.json());
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": {
      "id": 42,
      "firstName": "Anna",
      "lastName": "Müller",
      "email": "anna.mueller@example.com",
      "dateOfBirth": "1990-04-15",
      "profileImage": null,
      "resource": "employee",
      "subscription": {
        "status": "active",
        "startAt": "2024-01-01",
        "nextTicketAt": "2024-06-01",
        "pausedAt": null,
        "cancelledAt": null,
        "reactivatedAt": null
      },
      "plan": {
        "type": "split-pay-plan",
        "contractSigningStatus": "accepted",
        "employeeContributionAmount": {
          "label": "€29.00",
          "value": 2900
        }
      },
      "ticket": {
        "ticketId": "tkt_9Xk2mPqL",
        "ticketMonth": "2024-05",
        "validFrom": "2024-05-01",
        "validUntil": "2024-05-31",
        "links": {
          "apple": "https://wallet.example.com/apple/tkt_9Xk2mPqL",
          "google": "https://wallet.example.com/google/tkt_9Xk2mPqL"
        }
      },
      "hrIntergartionLinks": [
        {
          "type": "hr-integration",
          "hrId": "emp_HR_001",
          "hrIntegrationId": 7,
          "lastSyncId": "sync_abc123",
          "lastSynced": "2024-05-10T08:00:00Z"
        }
      ],
      "_links": {
        "self": { "href": "https://v1-api.ticket-plus.app/employees/42", "type": "application/json" },
        "employeeDocuments": { "href": "https://v1-api.ticket-plus.app/employees/42/documents", "type": "application/json" }
      }
    }
  }
  ```
</ResponseExample>

## Path Parameters

<ParamField path="id" type="integer" required>
  The unique numeric ID of the employee to retrieve.
</ParamField>

## Response

<ResponseField name="data" type="object" required>
  <Expandable title="properties">
    <ResponseField name="id" type="integer" required>
      Unique employee identifier.
    </ResponseField>

    <ResponseField name="firstName" type="string" required>
      Employee's first name.
    </ResponseField>

    <ResponseField name="lastName" type="string" required>
      Employee's last name.
    </ResponseField>

    <ResponseField name="email" type="string" required>
      Employee's email address.
    </ResponseField>

    <ResponseField name="dateOfBirth" type="string | null">
      Date of birth in ISO 8601 format. `null` if not set.
    </ResponseField>

    <ResponseField name="profileImage" type="string | null">
      URL to the employee's profile photo. `null` if not set.
    </ResponseField>

    <ResponseField name="resource" type="string" required>
      Resource type label. Always `"employee"`.
    </ResponseField>

    <ResponseField name="subscription" type="object" required>
      Current subscription details.

      <Expandable title="properties">
        <ResponseField name="status" type="string" required>
          Current state. Allowed values: `no-subscription`, `scheduled`,
          `active`, `scheduled-pause`, `paused`, `scheduled-cancellation`,
          `cancelled`.
        </ResponseField>

        <ResponseField name="startAt" type="string | null">
          Date the subscription started. `null` if not yet started.
        </ResponseField>

        <ResponseField name="nextTicketAt" type="string | null">
          Date the next transit ticket will be issued. `null` if not applicable.
        </ResponseField>

        <ResponseField name="pausedAt" type="string | null">
          Date the subscription was paused. `null` if never paused.
        </ResponseField>

        <ResponseField name="cancelledAt" type="string | null">
          Date the subscription was cancelled. `null` if not cancelled.
        </ResponseField>

        <ResponseField name="reactivatedAt" type="string | null">
          Date the subscription was reactivated. `null` if never reactivated.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="plan" type="object" required>
      The employee's plan details.

      <Expandable title="properties">
        <ResponseField name="type" type="string" required>
          Plan type. Allowed values: `fully-subsidized-plan`, `deferred-plan`,
          `split-pay-plan`.
        </ResponseField>

        <ResponseField name="contractSigningStatus" type="string | null">
          Contract state. Allowed values: `pending`, `accepted`, `rejected`.
          `null` if no contract applies.
        </ResponseField>

        <ResponseField name="employeeContributionAmount" type="object | null">
          Employee's contribution amount. Only present for `split-pay-plan`.
          `null` for other plans.

          <Expandable title="properties">
            <ResponseField name="label" type="string">
              Formatted display string, e.g. `"€29.00"`.
            </ResponseField>

            <ResponseField name="value" type="integer">
              Raw contribution amount, in cents (no decimals).
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="ticket" type="object | null">
      The employee's current active transit ticket. `null` if no ticket has been
      issued yet.

      <Expandable title="properties">
        <ResponseField name="ticketId" type="string" required>
          Unique ticket identifier.
        </ResponseField>

        <ResponseField name="ticketMonth" type="string" required>
          Month the ticket is valid for, e.g. `"2024-05"`.
        </ResponseField>

        <ResponseField name="validFrom" type="string" required>
          Ticket validity start date.
        </ResponseField>

        <ResponseField name="validUntil" type="string" required>
          Ticket validity end date.
        </ResponseField>

        <ResponseField name="links" type="object" required>
          Digital wallet pass links.

          <Expandable title="properties">
            <ResponseField name="apple" type="string" required>
              Apple Wallet pass URL.
            </ResponseField>

            <ResponseField name="google" type="string" required>
              Google Pay pass URL.
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="hrIntergartionLinks" type="object[]" required>
      HR system associations for this employee.

      <Expandable title="hr link object">
        <ResponseField name="type" type="string" required>
          Link type. Allowed values: `custom` (manually linked),
          `hr-integration` (synced via integration).
        </ResponseField>

        <ResponseField name="hrId" type="string" required>
          The employee's ID in the external HR system.
        </ResponseField>

        <ResponseField name="hrIntegrationId" type="number | null">
          ID of the HR integration. `null` for `custom` links.
        </ResponseField>

        <ResponseField name="lastSyncId" type="string | null">
          ID of the last sync that updated this link. `null` if never synced.
        </ResponseField>

        <ResponseField name="lastSynced" type="string | null">
          Timestamp of the last sync. `null` if never synced.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="_links" type="object" required>
      HAL hypermedia links.

      <Expandable title="properties">
        <ResponseField name="self" type="object" required>
          Link to this employee resource.

          <Expandable title="properties">
            <ResponseField name="href" type="string" required>
              URL of this employee.
            </ResponseField>

            <ResponseField name="type" type="string" required>
              Media type.
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="employeeDocuments" type="object" required>
          Link to this employee's documents.

          <Expandable title="properties">
            <ResponseField name="href" type="string" required>
              URL to list this employee's documents.
            </ResponseField>

            <ResponseField name="type" type="string" required>
              Media type.
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>


## OpenAPI

````yaml GET /employees/{id}
openapi: 3.0.3
info:
  title: JobTicket API
  description: >-
    The JobTicket B2B API lets you read employee data, manage HR integrations,
    and access employee documents programmatically. All endpoints use HTTP Basic
    Auth — pass your API key credentials from the Developer Portal as the
    username and password.
  version: 1.0.0
servers:
  - url: https://v1-api-staging.ticket-plus.app
    description: Staging server
  - url: https://v1-api.ticket-plus.app
    description: Production Server
security:
  - basicAuth: []
externalDocs:
  url: https://jobticket-docs.ticket-plus.app
  description: View our documentation to get more info
paths:
  /employees/{id}:
    get:
      tags:
        - Employees
      summary: Get Employee
      description: >-
        Returns the full record for a single employee by ID, including
        subscription, plan, current ticket, and HR integration links. Requires
        the `view-employees` permission.
      parameters:
        - schema:
            type: integer
          in: path
          name: id
          required: true
          description: The unique numeric ID of the employee to retrieve.
      responses:
        '200':
          description: The requested employee's full record.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: integer
                        description: Unique employee identifier.
                      firstName:
                        type: string
                        description: Employee's first name.
                      lastName:
                        type: string
                        description: Employee's last name.
                      email:
                        type: string
                        description: Employee's email address.
                      dateOfBirth:
                        type: string
                        nullable: true
                        description: Date of birth in ISO 8601 format.
                      profileImage:
                        type: string
                        nullable: true
                        description: URL to the employee's profile image.
                      subscription:
                        type: object
                        description: Current subscription details.
                        properties:
                          status:
                            type: string
                            description: >-
                              Subscription state: `no-subscription`,
                              `cancelled`, `scheduled-cancellation`, `active`,
                              `scheduled`, `scheduled-pause`, or `paused`.
                            enum:
                              - no-subscription
                              - cancelled
                              - scheduled-cancellation
                              - active
                              - scheduled
                              - scheduled-pause
                              - paused
                          startAt:
                            type: string
                            nullable: true
                            description: Date the subscription started.
                          nextTicketAt:
                            type: string
                            nullable: true
                            description: Date the next ticket will be issued.
                          pausedAt:
                            type: string
                            nullable: true
                            description: Date the subscription was paused.
                          cancelledAt:
                            type: string
                            nullable: true
                            description: Date the subscription was cancelled.
                          reactivatedAt:
                            type: string
                            nullable: true
                            description: Date the subscription was reactivated.
                        required:
                          - status
                      hrIntergartionLinks:
                        type: array
                        description: HR system associations for this employee.
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                              enum:
                                - custom
                                - hr-integration
                              description: >-
                                Link type: `custom` (manually linked) or
                                `hr-integration` (synced via an HR integration).
                            hrId:
                              type: string
                              description: The employee's ID in the HR system.
                            hrIntegrationId:
                              type: number
                              nullable: true
                              description: ID of the HR integration this link belongs to.
                            lastSyncId:
                              type: string
                              nullable: true
                              description: ID of the last sync that updated this link.
                            lastSynced:
                              type: string
                              nullable: true
                              description: Timestamp of the last sync.
                          required:
                            - type
                            - hrId
                      plan:
                        type: object
                        description: The employee's plan details.
                        properties:
                          type:
                            type: string
                            description: >-
                              Plan type: `fully-subsidized-plan`,
                              `deferred-plan`, or `split-pay-plan`.
                          contractSigningStatus:
                            type: string
                            nullable: true
                            description: >-
                              Contract state: `pending`, `accepted`, or
                              `rejected`.
                          employeeContributionAmount:
                            type: object
                            nullable: true
                            description: >-
                              Employee's contribution amount for split-pay
                              plans.
                            properties:
                              label:
                                type: string
                                description: Formatted display string, e.g. `€29.00`.
                              value:
                                type: integer
                                description: >-
                                  Raw contribution amount, in cents (no
                                  decimals).
                        required:
                          - type
                      ticket:
                        type: object
                        nullable: true
                        description: >-
                          The employee's current active transit ticket. `null`
                          if no ticket has been issued.
                        properties:
                          ticketId:
                            type: string
                            description: Unique ticket identifier.
                          ticketMonth:
                            type: string
                            description: Month this ticket is valid for, e.g. `2024-05`.
                          validFrom:
                            type: string
                            description: Ticket validity start date.
                          validUntil:
                            type: string
                            description: Ticket validity end date.
                          links:
                            type: object
                            description: Digital wallet pass links.
                            properties:
                              apple:
                                type: string
                                description: Apple Wallet pass URL.
                              google:
                                type: string
                                description: Google Pay pass URL.
                            required:
                              - apple
                              - google
                        required:
                          - ticketId
                          - ticketMonth
                          - validFrom
                          - validUntil
                          - links
                      resource:
                        type: string
                        description: Resource type label, always `employee`.
                      _links:
                        type: object
                        description: HAL hypermedia links.
                        properties:
                          self:
                            type: object
                            description: Link to this employee.
                            properties:
                              href:
                                type: string
                              type:
                                type: string
                            required:
                              - href
                              - type
                          employeeDocuments:
                            type: object
                            description: Link to this employee's documents.
                            properties:
                              href:
                                type: string
                              type:
                                type: string
                            required:
                              - href
                              - type
                        required:
                          - self
                          - employeeDocuments
                    required:
                      - id
                      - firstName
                      - lastName
                      - email
                      - subscription
                      - hrIntergartionLinks
                      - plan
                      - resource
                      - _links
      security:
        - basicAuth: []
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        HTTP Basic Auth using your API key credentials. Use the username and
        password issued from the Developer Portal. Encode them as
        `Base64(username:password)` and pass in the `Authorization: Basic
        <token>` header.

````