Documentation
Documentation
https://developers.lattice.com/reference/introduction
Documentation
https://developers.lattice.com
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>
'