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"
  }
}