Beeline Supplier and Talent API (1.0)

Download OpenAPI specification:Download

Beeline Supplier Network API

A comprehensive REST API for managing talent acquisition and supplier relationships within the Beeline ecosystem. This API enables seamless integration between suppliers and Beeline's Vendor Management System (VMS).

Overview

This API provides access to core business objects within Beeline, including:

  • Transactional data (workers, job postings, candidates)
  • Reference data (cost centers, job profiles)

API Design

The API follows RESTful conventions with standard HTTP methods:

  • GET - Retrieve resources (either collections or individual items)
  • POST - Create new resources
  • PATCH - Update existing resources

Core Resources

  • Worker - Represents talent profiles in the Beeline system
  • Job Posting - Represents open positions from Beeline VMS clients
  • Candidate - Represents a worker submission against a specific job posting

For detailed schema information and endpoint documentation, see the sections below.

Authentication

This API uses OAuth 2.0 Client Credentials flow for authentication. Follow these steps to authenticate:

  1. Prepare Your Request

    • Endpoint: POST /api/gwg/supplier/oauth/token
    • Headers:
      Content-Type: application/x-www-form-urlencoded
      
    • Body Parameters:
      grant_type: client_credentials
      
  2. Authentication Methods

    • Option 1: Basic Auth Header
      • Use your client_id and client_secret in the Authorization header
    • Option 2: Request Body
      • Include client_id and client_secret as form parameters
  3. Response Format

    {
      "access_token": "your_generated_token",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    
    • Token expires in 1 hour (3600 seconds)
    • Store and reuse the token until expiration
  4. Using the Token

    • Include in all API requests:
      Authorization: Bearer your_generated_token
      

Getting Started

  • Generate API credentials from your Beeline Supplier Network App as an administrator by going to Settings -> API Credentials -> Generate API Credentials
  • They can generate a client_id and client_secret for your integration
  • Keep these credentials secure and never share them

See the OAuth token endpoint documentation below for additional details.

Rate Limiting

This API implements rate limiting to ensure fair usage and to protect server resources. When a client exceeds the allowed number of requests within a given time window, a 429 Too Many Requests response will be returned.

Response Headers

The following HTTP headers are included in responses to help clients understand their current rate limit status:

  • X-Rate-Limit-Limit: The maximum number of requests allowed per time window.
  • X-Rate-Limit-Remaining: The number of requests remaining in the current window.
  • X-Rate-Limit-Reset: The number of seconds until the rate limit resets.

Rate Limiting Details

  • Strategy: Token Bucket (Bucket4j)
  • Limit: 100 requests per 1 minute
  • Refill Behavior: - Tokens are refilled every 1 minute, aligned to the start of the next minute
  • Expiration:
    • Buckets expire automatically based on the time it would take to refill to maximum capacity

Obtain an access token via an OAuth2 client credentials grant

To get started with the Beeline API:

  1. Set up your credentials:

    • For Beeline Enterprise Clients: Create a "Link" to a client in your Beeline Supplier Network application
    • For Beeline Professional Clients: A "Link" is created automatically for you.
    • Your administrator will provide you with a client_id and client_secret
  2. Request an access token using one of these methods:

    • Basic Authentication: Include client_id:client_secret in Authorization header
    • Request Body: Send client_id and client_secret as form parameters

Example using Basic Auth:

Authorization: Basic base64(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials

The received token must be included in all subsequent API requests.

Authorizations:
BasicAuth
Request Body schema: application/x-www-form-urlencoded
grant_type
required
string

Grant Type

client_id
string

Client ID

client_secret
string

Client Secret

scope
string

Scope

audience
string

Audience

Responses

Response samples

Content type
application/json
{
  • "token_type": "string",
  • "access_token": "string",
  • "expires_in": 0
}

Clients

List all linked clients

Returns all enterprise and professional clients that have an active connection with this supplier. Each client connection includes:

  • Connection status and type
  • Client name and identifiers
  • VMS access details
  • Connection establishment date

Use this endpoint to view your client relationships and obtain connection IDs needed for candidate submissions.

Authorizations:
OAuth2ClientCredentials
query Parameters
limit
integer

Limit

offset
integer

Offset

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "limit": 0,
  • "offset": 0,
  • "totalCount": 0
}

Job Postings

Get job posting details

Retrieves comprehensive details about a specific job posting, including:

  • Basic information (title, description, dates, location)
  • Staffing requirements
  • Rate information
  • Custom fields

Use this endpoint to get all necessary information before creating a candidate submission.

Authorizations:
OAuth2ClientCredentials
path Parameters
uid
required
string

Uid of the job posting to get

Responses

Response samples

Content type
application/json
{
  • "uid": "string",
  • "status": "IN_PROGRESS",
  • "sourceVMS": "string",
  • "requestedWorkers": 0,
  • "title": "string",
  • "description": "string",
  • "expiryDate": "2019-08-24",
  • "startDate": "2019-08-24",
  • "endDate": "2019-08-24",
  • "location": "string",
  • "enterpriseJobPostingNumber": "string",
  • "classificationName": "string",
  • "managerName": "string",
  • "enterpriseName": "string",
  • "clientName": "string",
  • "clientUid": "string",
  • "currency": "string",
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "supplierName": "string",
  • "supplierUid": "string",
  • "beelineProfessionalRates": {
    },
  • "beelineEnterpriseRates": {
    },
  • "notes": {
    },
  • "jobClassification": {
    },
  • "customFields": [
    ],
  • "supplierEnterpriseConnections": [
    ],
  • "hiringManager": {
    },
  • "adminCostCenter": {
    },
  • "billToCostCenter": {
    },
  • "taxLocation": {
    },
  • "physicalWorkLocation": {
    },
  • "industryName": "string",
  • "requestType": "string",
  • "resourceTypes": [
    ],
  • "skills": [
    ],
  • "workAddress": {
    },
  • "commentsForSuppliers": "string",
  • "hoursPerWeek": 0,
  • "quantity": 0
}

List all job postings

Returns job postings that have been made available to the supplier by enterprise VMSs.

Important Note

This endpoint only returns job postings that were opened/released after establishing a link with the enterprise VMS. Any job postings that existed before the link was created must be accessed through the web application.

Authorizations:
OAuth2ClientCredentials
query Parameters
limit
integer

Limit

offset
integer

Offset

clientUid
string

Client Uid

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "limit": 0,
  • "offset": 0,
  • "totalCount": 0
}

Candidates

List all candidates

List all candidates that a supplier has created. Can be filtered per job posting.

Authorizations:
OAuth2ClientCredentials
query Parameters
limit
integer

Limit

offset
integer

Offset

jobPostingUid
string

Job Posting Uid

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "limit": 0,
  • "offset": 0,
  • "totalCount": 0
}

Create candidate

Overview

Creates a new candidate record by associating a worker with a job posting. This is the second step in the candidate submission workflow.

Prerequisites

  1. An existing worker profile (POST /workers)
  2. An active job posting
  3. Required custom fields (check /candidates/metadata endpoint)

What This Endpoint Does

  • Associates a worker with a job posting
  • Creates a candidate record with 'CREATED' status
  • Allows setting of required and optional fields
  • Enables attachment of supporting documents

Important Notes

  • Candidate is NOT yet visible in the VMS
  • Address Line 1 is required to submit the candidate when submitting to Beeline Enterprise
  • Candidate must be explicitly submitted later using /candidates/{uid}/submit
  • All required fields should be completed before submission
  • Custom fields vary by job posting and client

Best Practices

  1. Check job posting requirements first
  2. Verify worker profile exists
  3. Validate all required fields
  4. Complete all information before submission
  5. Review custom field requirements

Next Steps

After successful creation, use the submit endpoint to make the candidate visible in the VMS.

Authorizations:
OAuth2ClientCredentials
Request Body schema: application/json
uid
string

Unique identifier for this candidate submission.

status
string
Enum: "CREATED" "SUBMITTING" "SUBMITTED" "RESCINDED" "SUBMISSION_FAILED" "ACCEPTED" "REJECTED"

Current state of the candidate submission in the workflow.

jobPostingUid
required
string

Reference to the job posting this candidate is submitted for.

enterpriseJobPostingNumber
string

Client's internal reference number for the job posting.

rateCurrency
string

ISO 4217 currency code for the candidate's proposed rates (e.g., USD, EUR).

ratePeriod
string (RatePeriod)
Enum: "HOURLY" "DAILY" "WEEKLY" "BI_WEEKLY" "MONTHLY" "ON_INVOICE"

Time period for rate calculation (e.g., hourly, daily, weekly).

workerUid
required
string

Reference to the worker profile associated with this submission.

email
required
string <email>

Primary contact email for the candidate.

created
string <date-time>

Timestamp when this candidate submission was created.

modified
string <date-time>

Timestamp of the last modification to this submission.

Array of objects (CustomField)

Client-specific additional fields required for this submission.

object (Name)

Candidate's legal and preferred names.

Array of objects (Phone)

Contact phone numbers for the candidate.

dateOfBirth
string <date>

Candidate's date of birth.

partialNationalId
string

Last 4 digits of national identifier (e.g., SSN) for verification purposes.

fullNationalId
string

Complete national identifier when required for background checks or compliance.

Array of objects (AddressField)
resourceType
string
dateAvailable
string <date>
formerConsultant
boolean
formerEmployee
boolean
Array of objects (BillRateAmount)
Array of objects (PayRateAmount)
supplierSubmittalComments
string
submissionErrorMessage
string

A detailed error message in case the candidate submission has failed.

Responses

Request samples

Content type
application/json
{
  • "uid": "string",
  • "status": "CREATED",
  • "jobPostingUid": "string",
  • "enterpriseJobPostingNumber": "string",
  • "rateCurrency": "string",
  • "ratePeriod": "HOURLY",
  • "workerUid": "string",
  • "email": "user@example.com",
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "customFields": [
    ],
  • "name": {
    },
  • "phones": [
    ],
  • "dateOfBirth": "2019-08-24",
  • "partialNationalId": "string",
  • "fullNationalId": "string",
  • "addresses": [
    ],
  • "resourceType": "string",
  • "dateAvailable": "2019-08-24",
  • "formerConsultant": true,
  • "formerEmployee": true,
  • "billRates": [
    ],
  • "payRates": [
    ],
  • "supplierSubmittalComments": "string",
  • "submissionErrorMessage": "string"
}

Response samples

Content type
application/json
{
  • "uid": "string",
  • "status": "CREATED",
  • "jobPostingUid": "string",
  • "enterpriseJobPostingNumber": "string",
  • "rateCurrency": "string",
  • "ratePeriod": "HOURLY",
  • "workerUid": "string",
  • "email": "user@example.com",
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "customFields": [
    ],
  • "name": {
    },
  • "phones": [
    ],
  • "dateOfBirth": "2019-08-24",
  • "partialNationalId": "string",
  • "fullNationalId": "string",
  • "addresses": [
    ],
  • "resourceType": "string",
  • "dateAvailable": "2019-08-24",
  • "formerConsultant": true,
  • "formerEmployee": true,
  • "billRates": [
    ],
  • "payRates": [
    ],
  • "supplierSubmittalComments": "string",
  • "submissionErrorMessage": "string"
}

Rescind candidate

⚠️ Important: Beeline Professional Only

This operation is only available for Beeline Professional job postings. Enterprise posting candidates must be rescinded through the web application.

Overview

Withdraws a previously submitted candidate from consideration in the VMS system.

Effects of Rescinding

  1. Candidate removed from VMS consideration
  2. Status returns to editable state
  3. Details can be updated
  4. Can be resubmitted to same posting

Common Use Cases

  • Correct submission errors
  • Update candidate information
  • Withdraw consideration
  • Resubmit with changes

Process Flow

  1. Rescind candidate
  2. Make necessary updates
  3. Resubmit if desired
  4. Monitor new submission

Notes

  • Verify posting type before attempting
  • Cannot rescind Enterprise candidates
Authorizations:
OAuth2ClientCredentials
path Parameters
uid
required
string

Uid of the candidate to rescind

Responses

Response samples

Content type
application/json
{
  • "uid": "string",
  • "status": "CREATED",
  • "jobPostingUid": "string",
  • "enterpriseJobPostingNumber": "string",
  • "rateCurrency": "string",
  • "ratePeriod": "HOURLY",
  • "workerUid": "string",
  • "email": "user@example.com",
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "customFields": [
    ],
  • "name": {
    },
  • "phones": [
    ],
  • "dateOfBirth": "2019-08-24",
  • "partialNationalId": "string",
  • "fullNationalId": "string",
  • "addresses": [
    ],
  • "resourceType": "string",
  • "dateAvailable": "2019-08-24",
  • "formerConsultant": true,
  • "formerEmployee": true,
  • "billRates": [
    ],
  • "payRates": [
    ],
  • "supplierSubmittalComments": "string",
  • "submissionErrorMessage": "string"
}

Submit candidate

Overview

Submits a candidate for consideration, making them visible in the VMS system. This is the final step in the candidate submission process.

Prerequisites

  1. Worker profile must exist
  2. Candidate must be created
  3. All required fields must be completed
  4. Custom fields must be validated

Platform-Specific Requirements

Beeline Enterprise Postings:

  • Requires supplierEnterpriseConnectionUid

Beeline Professional Postings:

  • No connection UID required
  • Can be rescinded via API
  • Supports resubmission after rescinding

Important Notes

  • Verify all information before submitting
  • Cannot update after submission
  • Check posting type for requirements

Best Practices

  1. Validate all required fields
  2. Check custom field requirements
  3. Verify rates and dates
  4. Test in non-production first
Authorizations:
OAuth2ClientCredentials
path Parameters
uid
required
string

Uid of the candidate to submit

query Parameters
supplierEnterpriseConnectionUid
string

A unique connection identifier that links your supplier account to a specific enterprise client. This ID always starts with 'SR'.

When is this required?

  • REQUIRED for Beeline Enterprise job postings
  • NOT required for Beeline Professional job postings

How to get the connection ID:

  1. Call the /jobPostingDetails endpoint with your job posting uid
  2. Find the supplierEnterpriseConnections array in the response
  3. Select the appropriate connection ID based on:
    • Supplier organization information
    • VMS username
    • Other relevant connection details

Purpose

This ID ensures candidates are submitted through the correct supplier-client relationship in the Beeline Enterprise system.

Best Practice

Display relevant connection details to recruiters so they can select the appropriate connection ID for their submission.

Responses

Response samples

Content type
application/json
{
  • "uid": "string",
  • "status": "CREATED",
  • "jobPostingUid": "string",
  • "enterpriseJobPostingNumber": "string",
  • "rateCurrency": "string",
  • "ratePeriod": "HOURLY",
  • "workerUid": "string",
  • "email": "user@example.com",
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "customFields": [
    ],
  • "name": {
    },
  • "phones": [
    ],
  • "dateOfBirth": "2019-08-24",
  • "partialNationalId": "string",
  • "fullNationalId": "string",
  • "addresses": [
    ],
  • "resourceType": "string",
  • "dateAvailable": "2019-08-24",
  • "formerConsultant": true,
  • "formerEmployee": true,
  • "billRates": [
    ],
  • "payRates": [
    ],
  • "supplierSubmittalComments": "string",
  • "submissionErrorMessage": "string"
}

Get candidate

Overview

Retrieves detailed information about a specific candidate, including their current status, submission details, and associated data.

Common Use Cases

  • Check submission status
  • Review candidate details
  • Monitor candidate progress

Notes

  • Requires valid candidate UID
  • Returns 404 if candidate not found
  • Shows current submission state
Authorizations:
OAuth2ClientCredentials
path Parameters
uid
required
string

Uid of the candidate to get

Responses

Response samples

Content type
application/json
{
  • "uid": "string",
  • "status": "CREATED",
  • "jobPostingUid": "string",
  • "enterpriseJobPostingNumber": "string",
  • "rateCurrency": "string",
  • "ratePeriod": "HOURLY",
  • "workerUid": "string",
  • "email": "user@example.com",
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "customFields": [
    ],
  • "name": {
    },
  • "phones": [
    ],
  • "dateOfBirth": "2019-08-24",
  • "partialNationalId": "string",
  • "fullNationalId": "string",
  • "addresses": [
    ],
  • "resourceType": "string",
  • "dateAvailable": "2019-08-24",
  • "formerConsultant": true,
  • "formerEmployee": true,
  • "billRates": [
    ],
  • "payRates": [
    ],
  • "supplierSubmittalComments": "string",
  • "submissionErrorMessage": "string"
}

Update candidate

Overview

Updates information for an existing candidate.

Important Restrictions

  • Can only update candidates in 'CREATED' status
  • Cannot update submitted candidates
  • Must rescind submitted candidates before updating
  • All required fields must remain valid

Best Practices

  1. Verify candidate status before updating
  2. Check required fields
  3. Validate all data before submission
  4. Keep original required fields
Authorizations:
OAuth2ClientCredentials
path Parameters
uid
required
string

Uid of the candidate to update

Request Body schema: application/json
uid
string

Unique identifier for this candidate submission.

status
string
Enum: "CREATED" "SUBMITTING" "SUBMITTED" "RESCINDED" "SUBMISSION_FAILED" "ACCEPTED" "REJECTED"

Current state of the candidate submission in the workflow.

jobPostingUid
required
string

Reference to the job posting this candidate is submitted for.

enterpriseJobPostingNumber
string

Client's internal reference number for the job posting.

rateCurrency
string

ISO 4217 currency code for the candidate's proposed rates (e.g., USD, EUR).

ratePeriod
string (RatePeriod)
Enum: "HOURLY" "DAILY" "WEEKLY" "BI_WEEKLY" "MONTHLY" "ON_INVOICE"

Time period for rate calculation (e.g., hourly, daily, weekly).

workerUid
required
string

Reference to the worker profile associated with this submission.

email
required
string <email>

Primary contact email for the candidate.

created
string <date-time>

Timestamp when this candidate submission was created.

modified
string <date-time>

Timestamp of the last modification to this submission.

Array of objects (CustomField)

Client-specific additional fields required for this submission.

object (Name)

Candidate's legal and preferred names.

Array of objects (Phone)

Contact phone numbers for the candidate.

dateOfBirth
string <date>

Candidate's date of birth.

partialNationalId
string

Last 4 digits of national identifier (e.g., SSN) for verification purposes.

fullNationalId
string

Complete national identifier when required for background checks or compliance.

Array of objects (AddressField)
resourceType
string
dateAvailable
string <date>
formerConsultant
boolean
formerEmployee
boolean
Array of objects (BillRateAmount)
Array of objects (PayRateAmount)
supplierSubmittalComments
string
submissionErrorMessage
string

A detailed error message in case the candidate submission has failed.

Responses

Request samples

Content type
application/json
{
  • "uid": "string",
  • "status": "CREATED",
  • "jobPostingUid": "string",
  • "enterpriseJobPostingNumber": "string",
  • "rateCurrency": "string",
  • "ratePeriod": "HOURLY",
  • "workerUid": "string",
  • "email": "user@example.com",
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "customFields": [
    ],
  • "name": {
    },
  • "phones": [
    ],
  • "dateOfBirth": "2019-08-24",
  • "partialNationalId": "string",
  • "fullNationalId": "string",
  • "addresses": [
    ],
  • "resourceType": "string",
  • "dateAvailable": "2019-08-24",
  • "formerConsultant": true,
  • "formerEmployee": true,
  • "billRates": [
    ],
  • "payRates": [
    ],
  • "supplierSubmittalComments": "string",
  • "submissionErrorMessage": "string"
}

Response samples

Content type
application/json
{
  • "uid": "string",
  • "status": "CREATED",
  • "jobPostingUid": "string",
  • "enterpriseJobPostingNumber": "string",
  • "rateCurrency": "string",
  • "ratePeriod": "HOURLY",
  • "workerUid": "string",
  • "email": "user@example.com",
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "customFields": [
    ],
  • "name": {
    },
  • "phones": [
    ],
  • "dateOfBirth": "2019-08-24",
  • "partialNationalId": "string",
  • "fullNationalId": "string",
  • "addresses": [
    ],
  • "resourceType": "string",
  • "dateAvailable": "2019-08-24",
  • "formerConsultant": true,
  • "formerEmployee": true,
  • "billRates": [
    ],
  • "payRates": [
    ],
  • "supplierSubmittalComments": "string",
  • "submissionErrorMessage": "string"
}

Remove candidate media

Removes attached media files (such as resumes or other documents) from a candidate's profile.

Supported Media Types

  • Resumes
  • Supporting documents
  • Other candidate attachments

Important Notes

  • Operation cannot be undone
  • Requires both candidate UID and media UID
  • Returns 404 if either UID is invalid
Authorizations:
OAuth2ClientCredentials
path Parameters
candidateUid
required
string

Uid of the candidate for which to remove media

mediaUid
required
string

Uid of the media to remove

Responses

Response samples

Content type
application/json
true

Add candidate media (multipart)

Upload documents for a candidate using multipart form data. This endpoint allows direct file uploads through form submission.

Required Parameters

  • uid (path): The unique identifier of the candidate
  • file: The document to be uploaded (binary format)
  • filename: Name of the file
  • mediaType: Document classification, one of:
    • RESUME: Candidate's resume/CV
    • OTHER_WORKER_DOCUMENT: Supporting documentation

Example Usage

POST /api/gwg/supplier/candidates/{uid}/media/multipart
Content-Type: multipart/form-data

file: [binary content]
filename: resume.pdf
mediaType: RESUME

Notes

  • Uses standard multipart/form-data encoding for file uploads
  • Each file must be classified with the appropriate mediaType
  • The candidate must exist (identified by uid) before uploading
Authorizations:
OAuth2ClientCredentials
path Parameters
uid
required
string

Unique identifier of the candidate who will own this document

Request Body schema: multipart/form-data
file
string <binary>

The document to be uploaded. Supported formats include PDF, DOC, and DOCX files.

filename
string

Original name of the file with extension (e.g., "resume.pdf", "certification.docx")

mediaType
string (MediaType)
Enum: "RESUME" "OTHER_WORKER_DOCUMENT"

Document classification - use RESUME for CVs/resumes or OTHER_WORKER_DOCUMENT for supporting materials

Responses

Response samples

Content type
application/json
{
  • "uid": "string",
  • "filename": "string",
  • "contentType": "string",
  • "mediaType": "RESUME",
  • "sizeInBytes": 0
}

Add candidate media

Add candidate media for a specific candidate.

Authorizations:
OAuth2ClientCredentials
path Parameters
uid
required
string

Uid of the candidate for which to add media

Request Body schema: application/json
file
required
string

Base64 encoded string representation of the file to add.

filename
required
string
mediaType
required
string (MediaType)
Enum: "RESUME" "OTHER_WORKER_DOCUMENT"

Responses

Request samples

Content type
application/json
{
  • "file": "string",
  • "filename": "string",
  • "mediaType": "RESUME"
}

Response samples

Content type
application/json
{
  • "uid": "string",
  • "filename": "string",
  • "contentType": "string",
  • "mediaType": "RESUME",
  • "sizeInBytes": 0
}

Get candidate media

Get candidate media for a specific candidate.

Authorizations:
OAuth2ClientCredentials
path Parameters
uid
required
string

Uid of the candidate from which to get media

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Get candidate custom field metadata

Retrieves the custom field configuration for a candidate. Since each enterprise client can define their own required fields, use this endpoint to determine:

  • Which custom fields are available
  • Which fields are required for submission
  • Any predefined values for dropdown/selection fields
Authorizations:
OAuth2ClientCredentials
query Parameters
jobPostingUid
required
string

Job Posting Uid

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Workers

List all workers

List all of the workers that have been previously added by the supplier.

Authorizations:
OAuth2ClientCredentials
query Parameters
limit
integer

Limit

offset
integer

Offset

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "limit": 0,
  • "offset": 0,
  • "totalCount": 0
}

Create worker

Authorizations:
OAuth2ClientCredentials
Request Body schema: application/json
uid
string
required
object (NameInfo)
email
string <email>
phone
string

Phone number in e164 format.

object (Address)
dateOfBirth
string <date>
created
string <date-time>
modified
string <date-time>
gender
string
Enum: "MALE" "FEMALE" "PREFER_NOT_TO_ANSWER" "OTHER"
partialNationalId
string

Last 4 digits of national identifier (e.g., SSN) for verification purposes

fullNationalId
string

Complete national identifier when required for background checks or compliance

Responses

Request samples

Content type
application/json
{
  • "uid": "string",
  • "name": {
    },
  • "email": "user@example.com",
  • "phone": "string",
  • "address": {
    },
  • "dateOfBirth": "2019-08-24",
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "gender": "MALE",
  • "partialNationalId": "string",
  • "fullNationalId": "string"
}

Response samples

Content type
application/json
{
  • "uid": "string",
  • "name": {
    },
  • "email": "user@example.com",
  • "phone": "string",
  • "address": {
    },
  • "dateOfBirth": "2019-08-24",
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "gender": "MALE",
  • "partialNationalId": "string",
  • "fullNationalId": "string"
}

Get worker by uid

Get worker details for a specific worker.

Authorizations:
OAuth2ClientCredentials
path Parameters
uid
required
string

Uid of the worker to get

Responses

Response samples

Content type
application/json
{
  • "uid": "string",
  • "name": {
    },
  • "email": "user@example.com",
  • "phone": "string",
  • "address": {
    },
  • "dateOfBirth": "2019-08-24",
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "gender": "MALE",
  • "partialNationalId": "string",
  • "fullNationalId": "string"
}

Update worker by uid

Update worker details for a specific worker.

Authorizations:
OAuth2ClientCredentials
path Parameters
uid
required
string

Uid of the worker to update

Request Body schema: application/json
uid
string
required
object (NameInfo)
email
string <email>
phone
string

Phone number in e164 format.

object (Address)
dateOfBirth
string <date>
created
string <date-time>
modified
string <date-time>
gender
string
Enum: "MALE" "FEMALE" "PREFER_NOT_TO_ANSWER" "OTHER"
partialNationalId
string

Last 4 digits of national identifier (e.g., SSN) for verification purposes

fullNationalId
string

Complete national identifier when required for background checks or compliance

Responses

Request samples

Content type
application/json
{
  • "uid": "string",
  • "name": {
    },
  • "email": "user@example.com",
  • "phone": "string",
  • "address": {
    },
  • "dateOfBirth": "2019-08-24",
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "gender": "MALE",
  • "partialNationalId": "string",
  • "fullNationalId": "string"
}

Response samples

Content type
application/json
{
  • "uid": "string",
  • "name": {
    },
  • "email": "user@example.com",
  • "phone": "string",
  • "address": {
    },
  • "dateOfBirth": "2019-08-24",
  • "created": "2019-08-24T14:15:22Z",
  • "modified": "2019-08-24T14:15:22Z",
  • "gender": "MALE",
  • "partialNationalId": "string",
  • "fullNationalId": "string"
}

Webhook Subscriptions

Create Webhook Subscription

Set up automated notifications for important events in the Beeline system. Webhooks provide real-time updates about:

Available Event Types

  • Job Posting Releases: Get notified when new positions become available
  • Job Posting Updates: Receive changes to existing job postings
  • Candidate Status Changes: Track when candidate statuses are updated

Required Setup

  1. Provide a callback URL where you'll receive notifications
  2. Generate a secret key to secure your webhook endpoint
  3. Select which event type you want to monitor

Security

  • All notifications are signed using HMAC
  • Verify signatures using your secret key
  • Only accept notifications with valid signatures

Implementation Notes

  • Notifications begin immediately after subscription
  • Your endpoint should respond with HTTP 200 to acknowledge receipt
  • Failed deliveries will be retried with exponential backoff

Webhook Signature Validation documentation

  • Each webhook notification includes the X-Signature and X-Signature-Algorithm headers
  • Signatures are calculated using HMAC-SHA256 with your provided secret key
  • The signature is Base64-encoded and generated from the raw JSON payload
  • To ensure authenticity, compare the received signature with your own computed value
Authorizations:
OAuth2ClientCredentials
Request Body schema: application/json
callbackUrl
required
string <uri>

The URL to which notifications will be sent.

secretKey
required
string

A secret key used for HMAC signature validation.

eventType
required
string (WebhookEventType)
Enum: "JOB_POSTING_RELEASED" "JOB_POSTING_UPDATED" "CANDIDATE_UPDATED" "CANDIDATE_SUBMISSION_SUCCEEDED" "CANDIDATE_SUBMISSION_FAILED"

The event type the supplier wants to subscribe to.

Responses

Request samples

Content type
application/json
{
  • "callbackUrl": "http://example.com",
  • "secretKey": "string",
  • "eventType": "JOB_POSTING_RELEASED"
}

Response samples

Content type
application/json
{
  • "uid": "string",
  • "callbackUrl": "http://example.com",
  • "secretKey": "string",
  • "eventType": "JOB_POSTING_RELEASED"
}

List Webhook Subscriptions

Retrieves all active webhook subscriptions for your account. The response includes:

  • Subscription identifiers
  • Configured callback URLs
  • Event types being monitored
  • Creation dates and status

Use this endpoint to:

  • Audit your active webhooks
  • Verify subscription configurations
  • Get subscription UIDs for updates/deletions
Authorizations:
OAuth2ClientCredentials
query Parameters
limit
integer

Limit

offset
integer

Offset

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "limit": 0,
  • "offset": 0,
  • "totalCount": 0
}

Get Webhook Subscription by uid

Get subscription details for a particular subscription.

Authorizations:
OAuth2ClientCredentials
path Parameters
uid
required
string

Uid of the subscription to get.

Responses

Response samples

Content type
application/json
{
  • "uid": "string",
  • "callbackUrl": "http://example.com",
  • "secretKey": "string",
  • "eventType": "JOB_POSTING_RELEASED"
}

Update Webhook Subscription

Update one or more fields of an existing subscription. Only the provided fields will be updated.

Authorizations:
OAuth2ClientCredentials
path Parameters
uid
required
string

Uid of the subscription to update.

Request Body schema: application/json
callbackUrl
string <uri>

The URL to which notifications will be sent.

secretKey
string

A secret key used for HMAC signature validation.

eventType
string (WebhookEventType)
Enum: "JOB_POSTING_RELEASED" "JOB_POSTING_UPDATED" "CANDIDATE_UPDATED" "CANDIDATE_SUBMISSION_SUCCEEDED" "CANDIDATE_SUBMISSION_FAILED"

The event type the supplier wants to subscribe to.

Responses

Request samples

Content type
application/json
{
  • "callbackUrl": "http://example.com",
  • "secretKey": "string",
  • "eventType": "JOB_POSTING_RELEASED"
}

Response samples

Content type
application/json
{
  • "uid": "string",
  • "callbackUrl": "http://example.com",
  • "secretKey": "string",
  • "eventType": "JOB_POSTING_RELEASED"
}

Delete Webhook Subscription

Delete an existing webhook subscription.

Authorizations:
OAuth2ClientCredentials
path Parameters
uid
required
string

Uid of the subscription to delete.

Responses

Webhook Events

Job Posting Released Webhook

Job Posting Released

Authorizations:
OAuth2ClientCredentials
Request Body schema: application/json

Webhook event triggered when a new job posting becomes available for sourcing.

source
string

URI to get this resource in the Supplier Public API.

system
string

Beeline system from which the event originated.

eventType
required
string (WebhookEventType)
Enum: "JOB_POSTING_RELEASED" "JOB_POSTING_UPDATED" "CANDIDATE_UPDATED" "CANDIDATE_SUBMISSION_SUCCEEDED" "CANDIDATE_SUBMISSION_FAILED"

The event type the supplier wants to subscribe to.

eventTime
string

Time event was released.

id
string or null

Unique identifier for the event.

required
object

Responses

Request samples

Content type
application/json
{
  • "source": "job posting update service",
  • "system": "system",
  • "eventType": "JOB_POSTING_UPDATED",
  • "eventTime": "2025-05-07T09:32:12.136939Z",
  • "id": "123",
  • "data": {
    }
}

Job Posting Updated Webhook

Job Posting Updated

Authorizations:
OAuth2ClientCredentials
Request Body schema: application/json

Webhook event triggered when an existing job posting is modified.

source
string

URI to get this resource in the Supplier Public API.

system
string

Beeline system from which the event originated.

eventType
string (WebhookEventType)
Enum: "JOB_POSTING_RELEASED" "JOB_POSTING_UPDATED" "CANDIDATE_UPDATED" "CANDIDATE_SUBMISSION_SUCCEEDED" "CANDIDATE_SUBMISSION_FAILED"

The event type the supplier wants to subscribe to.

eventTime
string

Time event was released.

id
string or null

Unique identifier for the event.

object

Responses

Request samples

Content type
application/json
{
  • "source": "job posting update service",
  • "system": "system",
  • "eventType": "JOB_POSTING_UPDATED",
  • "eventTime": "2025-05-07T09:32:12.136939Z",
  • "id": "123",
  • "data": {
    }
}

Candidate Updated Webhook

Candidate Updated

Authorizations:
OAuth2ClientCredentials
Request Body schema: application/json

Information about a candidate that was updated by the source system.

source
string

Full API endpoint URL where you can retrieve the updated candidate details.

system
string

Identifies which Beeline platform (Enterprise or Professional) generated this event.

eventType
required
string (WebhookEventType)
Enum: "JOB_POSTING_RELEASED" "JOB_POSTING_UPDATED" "CANDIDATE_UPDATED" "CANDIDATE_SUBMISSION_SUCCEEDED" "CANDIDATE_SUBMISSION_FAILED"

The event type the supplier wants to subscribe to.

eventTime
string

ISO 8601 formatted timestamp indicating when the candidate update occurred.

id
string or null

Unique identifier for tracking this specific event notification. May be null for legacy events.

required
object

Responses

Request samples

Content type
application/json
{
  • "source": "Candidate update service",
  • "system": "system",
  • "eventType": "CANDIDATE_UPDATED",
  • "eventTime": "2025-05-07T09:32:12.136939Z",
  • "id": "123",
  • "data": {
    }
}

Candidate Submission Succeeded Webhook

Candidate Submission Succeeded

Authorizations:
OAuth2ClientCredentials
Request Body schema: application/json

Webhook event triggered when a candidate submission is successfully completed.

source
required
string

Source of the event (e.g., service or controller name).

system
required
string

Origin system name (e.g., BEELINE_ENTERPRISE).

eventType
required
string
Value: "CANDIDATE_SUBMISSION_SUCCEEDED"

Time event was released.

eventTime
required
string <date-time>
id
string or null

Unique event identifier, optional.

required
object
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "source": "SupplierCandidateController",
  • "system": "BEELINE_ENTERPRISE",
  • "eventType": "CANDIDATE_SUBMISSION_SUCCEEDED",
  • "eventTime": "2025-04-28T14:30:00Z",
  • "id": null,
  • "data": {
    }
}

Candidate Submission Failed Webhook

Candidate Submission Failed

Authorizations:
OAuth2ClientCredentials
Request Body schema: application/json

Webhook event triggered when a candidate submission fails.

source
required
string

Source of the event (e.g., service or controller name).

system
required
string

Origin system name (e.g., BEELINE_ENTERPRISE).

eventType
required
string
Value: "CANDIDATE_SUBMISSION_FAILED"

Time event was released.

eventTime
required
string <date-time>
id
string or null

Unique event identifier, optional.

required
object
property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "source": "SupplierCandidateController",
  • "system": "BEELINE_ENTERPRISE",
  • "eventType": "CANDIDATE_SUBMISSION_FAILED",
  • "eventTime": "2025-04-28T14:30:00Z",
  • "id": null,
  • "data": {
    }
}

Status

Request a pong message

Test API connection by requesting a pong message on a callback route.

Authorizations:
OAuth2ClientCredentials
Request Body schema: application/json
callback_url
string <uri>

The URL to which notifications will be sent.

Responses

Request samples

Content type
application/json
{}