Lattice Users API

Manage and retrieve user records

OpenAPI Specification

lattice-users-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Lattice HRIS Competencies Users API
  description: 'REST API (v2) for Lattice''s HRIS product covering employee records, organizational hierarchy, and HR core data. Supports service account Bearer token authentication and is designed for HR system integrations including Okta SCIM provisioning. Also exposes v2 review submission endpoints shared with the Talent API.

    '
  version: v2
  contact:
    name: Lattice Developer Support
    email: customercare@lattice.com
    url: https://developers.lattice.com
  termsOfService: https://lattice.com/legal/terms-of-service
  license:
    name: Proprietary
    url: https://lattice.com/legal/terms-of-service
servers:
- url: https://api.latticehq.com/v2
  description: Lattice HRIS API v2 production server
security:
- BearerAuth: []
tags:
- name: Users
  description: Manage and retrieve user records
paths:
  /users:
    get:
      summary: List users
      operationId: listUsers
      tags:
      - Users
      description: 'Returns a paginated list of users in Lattice. By default, returns active users. A status parameter of NULL will retrieve all users regardless of status.

        '
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/startingAfter'
      - name: status
        in: query
        required: false
        schema:
          type: string
          enum:
          - ACTIVE
          - INVITED
          - CREATED
          - DEACTIVATED
          - null
        description: Filter by user status; NULL returns all users.
      responses:
        '200':
          description: Paginated list of users
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/ServerError'
  /user/{id}:
    get:
      summary: Get user by ID
      operationId: getUser
      tags:
      - Users
      description: Returns a user with the given id. If cannot find user, returns a 404.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The user identifier
      responses:
        '200':
          description: User object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/ServerError'
  /user/{id}/directReports:
    get:
      summary: List direct reports for a user
      operationId: listUserDirectReports
      tags:
      - Users
      description: Returns a paginated list of direct reports for a specific user.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The user identifier
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/startingAfter'
      responses:
        '200':
          description: Paginated list of users
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/ServerError'
  /user/{id}/tasks:
    get:
      summary: List tasks for a user
      operationId: listUserTasks
      tags:
      - Users
      description: Returns a paginated list of tasks for a specific user.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The user identifier
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/startingAfter'
      responses:
        '200':
          description: Paginated list of tasks
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/ServerError'
  /user/{id}/customAttributes:
    get:
      summary: List custom attributes for a user
      operationId: listUserCustomAttributes
      tags:
      - Users
      description: Returns custom attribute values for a specific user.
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: The user identifier
      responses:
        '200':
          description: List of custom attribute values
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomAttributeValueList'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  schemas:
    PaginatedList:
      type: object
      properties:
        object:
          type: string
          enum:
          - list
        hasMore:
          type: boolean
          description: Whether or not there are more elements available after this set
        endingCursor:
          type: string
          nullable: true
          description: The cursor to use to get the next set of items in the list
      required:
      - object
      - hasMore
    CustomAttribute:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        name:
          type: string
        description:
          type: string
          nullable: true
        type:
          type: string
      required:
      - id
      - object
      - name
      - type
    ObjectReference:
      type: object
      description: A lightweight reference to another Lattice object
      properties:
        id:
          type: string
        object:
          type: string
        url:
          type: string
      required:
      - id
      - object
      - url
    Task:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        url:
          type: string
        name:
          type: string
        description:
          type: string
          nullable: true
        dueDate:
          type: string
          format: date
          nullable: true
        completedAt:
          type: integer
          nullable: true
          description: Unix timestamp
        createdAt:
          type: integer
          description: Unix timestamp
        updatedAt:
          type: integer
          description: Unix timestamp
      required:
      - id
      - object
      - url
      - name
      - createdAt
      - updatedAt
    CustomAttributeValueList:
      allOf:
      - $ref: '#/components/schemas/PaginatedList'
      - type: object
        properties:
          data:
            type: array
            items:
              $ref: '#/components/schemas/CustomAttributeValue'
        required:
        - data
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Human-readable error message
      required:
      - error
    UserList:
      allOf:
      - $ref: '#/components/schemas/PaginatedList'
      - type: object
        properties:
          data:
            type: array
            items:
              $ref: '#/components/schemas/User'
        required:
        - data
    TaskList:
      allOf:
      - $ref: '#/components/schemas/PaginatedList'
      - type: object
        properties:
          data:
            type: array
            items:
              $ref: '#/components/schemas/Task'
        required:
        - data
    User:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        url:
          type: string
        name:
          type: string
          nullable: true
        preferredName:
          type: string
          nullable: true
        email:
          type: string
          format: email
        title:
          type: string
          nullable: true
        status:
          type: string
          enum:
          - ACTIVE
          - INVITED
          - CREATED
          - DEACTIVATED
        isAdmin:
          type: boolean
        externalUserId:
          type: string
          nullable: true
        manager:
          $ref: '#/components/schemas/ObjectReference'
          nullable: true
        department:
          $ref: '#/components/schemas/ObjectReference'
          nullable: true
        directReports:
          $ref: '#/components/schemas/ListReference'
        tasks:
          $ref: '#/components/schemas/ListReference'
        customAttributes:
          $ref: '#/components/schemas/ListReference'
        timezone:
          type: string
          nullable: true
        startDate:
          type: string
          format: date
          nullable: true
        birthDate:
          type: string
          format: date
          nullable: true
        gender:
          type: string
          nullable: true
        jobFunction:
          type: string
          nullable: true
        jobLevel:
          type: string
          nullable: true
        jobType:
          type: string
          nullable: true
        createdAt:
          type: integer
          description: Unix timestamp
        updatedAt:
          type: integer
          description: Unix timestamp
      required:
      - id
      - object
      - url
      - email
      - status
      - isAdmin
      - directReports
      - tasks
      - customAttributes
    CustomAttributeValue:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        attribute:
          $ref: '#/components/schemas/CustomAttribute'
        value:
          type: string
          nullable: true
      required:
      - id
      - object
      - attribute
    ListReference:
      type: object
      description: A reference to a paginated list of related objects
      properties:
        object:
          type: string
          enum:
          - list
        url:
          type: string
      required:
      - object
      - url
  parameters:
    startingAfter:
      name: startingAfter
      in: query
      required: false
      schema:
        type: string
      description: Cursor for fetching the next page of results
    limit:
      name: limit
      in: query
      required: false
      schema:
        type: integer
        format: int32
      description: Maximum number of items to return per page
  responses:
    ServerError:
      description: Server error while processing request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: Could not find the requested resource
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    UnprocessableEntity:
      description: Unprocessable - request is syntactically valid but cannot be processed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: 'Service account API key passed as a Bearer token in the Authorization header. Example: Authorization: Bearer <your-api-key>

        '