Offers - xpand-io/api-docs GitHub Wiki
Notes
Offer Status
The offer status will always be one of these values:
Value | Meaning |
---|---|
pending_initiation |
Waiting to be submitted for approval |
pending_approval |
Waiting to be approved by admins |
admin_approved |
Approved and waiting to be sent by an admin |
admin_rejected |
Rejected by an admin before being sent |
candidate_pending |
Pending candidate's decision |
candidate_accepted |
Offer accepted by the candidate |
candidate_declined |
Offer declined by the candidate |
admin_rescinded |
Offer rescinded |
GET /api/v1/offer_letters
Get offers for a user, the filters are required to get the offer information and can be done by using the below.
Filters:
- filters[ids] = Comma separated
- filters[offer_ids] = Comma separated
- filters[user_ids] = Comma separated
- filters[statuses] = Comma separated
Sample response
{
"data": [
{
"id": "56d0d9807661670f29080000",
"user_id": "571a69f669702d445f000000",
"status": "pending_approval",
"job_title": "Steamboat Captain",
"base_salary": "45000",
"currency": "USD",
...
}, {
"id": "56d0d9807661670f29080001",
"user_id": "573fb8527427907084000047",
"status": "candidate_pending",
"job_title": "Rodeo Clown",
"base_salary": "45000",
"currency": "USD",
...
}
]
}
POST /api/v1/offer_letters
Assign an offer to a user
Validation: An offer letter update cannot be updated once the candidate accepts the offer.
Parameters for offer object
Name | Required | Default | Notes |
---|---|---|---|
user_id | required | ||
job_application_id | required | ||
offer_id | required | ||
office_location_id | required | { "external_key" : "[EXTERNAL ID]" } |
|
job_title | required | ||
total_compensation | required | ||
campus | |||
compensation | |||
start_date | format: YYYY-MM-DD | ||
legal_entity | |||
currency | ISO 4217 currency code (USD, CNY, etc) | ||
relocation_type | |||
non_compete_duration | |||
supplemental_non_compete_duration | |||
flsa_status | |||
respond_by_date | format: YYYY-MM-DD | ||
attorney_only | true or false | ||
confidential | true or false | ||
regulated | |||
regulated_status | |||
smcr | true or false | ||
job_profile_id | |||
business_unit_id | |||
department_code | |||
position_type | |||
pay_rate | |||
job_level | |||
cost_center_id | |||
time_type | Full Time | "Full Time" or "Part Time" | |
employee_type | |||
job_code | |||
base_salary | integer | ||
target_salary | integer | ||
max_salary | integer | ||
rsu | integer | ||
annual_bonus_percent | integer | ||
signing_bonus_amount | integer | ||
commission_amount | integer | ||
car_allowance | integer | ||
relocation | false | true or false | |
relocation_flex_allowance | integer | ||
work_from_home | false | true or false | |
immigration | false | true or false | |
visa_sponsorship_notes | |||
end_date | format: YYYY-MM-DD | ||
induction_date | format: YYYY-MM-DD | ||
induction_location_id | { "external_key" : "[EXTERNAL ID]" } |
||
urgent | false | ||
notes | |||
expiration_date | format: YYYY-MM-DD | ||
hire_type | |||
is_exempt | true or false | ||
relocation_program | |||
deferred_eligible | true or false | ||
overtime_rate | integer | ||
doubletime_rate | integer | ||
business_name | |||
legal_entity_description | |||
recruiter_ids | JSON | JSON where key is name of external service, e.g. {:recruiter=>{"HRIS_SYS"=>"12345"}, recruiting_manager=>{"HRIS_SYS"=>"56789"}} There must be a recruiter in Xpand or HRIS_SYS(Ex: workday) with a matching employee id. |
|
manager_ids | JSON | JSON where key is name of external service, e.g. {:direct_manager=>{"HRIS_SYS"=>"12345"}, hiring_manager=>{"HRIS_SYS"=>"56789"}} There must be a manager in Xpand or HRIS_SYS(Ex: workday) with a matching employee id. |
|
documents[{ document_type, document_number, document_title, document_position, document_description, issuer, issuer_city, issuer_state, issuer_country issued_date, expiry_date, attachments (Array) [{file_name:'', file_content_base64:''}]}] |
Notes
- An offer can only be created if there is an offer package available for the user. If none can be found, an error will be returned
- The new offer will have a status of
pending_initiation
DELETE /api/v1/offer_letters/:id
Invalidate an offer
Notes
- This does not delete the offer, but marks it as "rescinded". It will still show up in requests for
GET /api/v1/offer_letters
PATCH /api/v1/offer_letters/rescind
Invalidate an offer by using the below parameters.
Filters:
- filters[ids] = Comma separated
- filters[offer_ids] = Comma separated
- filters[job_application_ids] = Comma separated
Sample request
{
"filters": {
"offer_ids": "O3112-003"
}
}