Skip to main content
POST
Create an employee
Key: Write Scope: Company

Authorizations

Authorization
string
header
required

Use your Primo API key in the Authorization header as Bearer <API_KEY>.

Body

application/json
firstName
string
required

First name of the employee

Minimum string length: 1
lastName
string
required

Last name of the employee

Minimum string length: 1
email
string<email>
required

Work email address of the employee

Pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
startDate
string<date-time> | null

Employment start date (ISO 8601)

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
managerId
string | null

ID of the manager employee

teams
string[]

List of team names

jobs
string[]

List of job titles

groups
string[]

List of group names

workLocation
string | null

Work location name

Legal entity name

Response

default - application/json
id
string
required
firstName
string
required
lastName
string
required
email
string
required
teams
object[]
required

Teams the employee belongs to. Empty only when no team is assigned — group by name to count per team.

jobs
object[]
required

Job titles held by the employee. Empty only when no job title is assigned.

groups
object[]
required

Employee groups the employee belongs to.

onboardingStatus
enum<string> | null
required

Null when the employee has no onboarding.

Available options:
PENDING,
SCHEDULED,
IN_PROGRESS,
CLOSED,
CANCELED
offboardingStatus
enum<string> | null
required

Null when the employee has no offboarding.

Available options:
PENDING,
SCHEDULED,
IN_PROGRESS,
CLOSED,
CANCELED
deviceIds
string[]
required

Ids of the devices assigned to the employee.

accessoryIds
string[]
required

Ids of the accessories assigned to the employee.

createdAt
string<date-time>
required
Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
updatedAt
string<date-time>
required
Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
employmentType
enum<string>
required

Employment type of the employee

Available options:
INTERNAL,
CONTRACTOR
isRemote
boolean
required

Whether the employee works remotely. Derived from the absence of a work location: an employee with no assigned work location has no office to deliver equipment to and is treated as remote.

workLocation
object | null

Office the employee is attached to. Null for a remote employee.

Legal entity employing them.

managerId
string | null

Id of the manager employee.

startDate
string<date-time> | null

Employment start date (ISO 8601).

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
terminationDate
string<date-time> | null

Employment end date (ISO 8601).

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
personalEmail
string | null

Personal email address of the employee

address
object | null

Personal (home) address of the employee, when known. Use it as the HOME shipping address when ordering equipment for a remote employee. Null when the employee record has no address — ask for one instead of composing it.