Aboard API (1.0.1)

Download OpenAPI specification:

Aboard API Support: support@aboardhr.com License: Proprietary

Aboard documentation

Getting started

Base URL

  • Production: https://api.aboardhr.com/v1/

Authentication

The Aboard API uses Bearer token authentication. All API requests must include a valid authentication token in the Authorization header.

Getting an API token

  1. Contact your system administrator to obtain an API token
  2. Token format: The token should be a JWT (JSON Web Token) string
  3. Token scope: Tokens are scoped to specific companies and may have role-based permissions

Setting up authentication

Using cURL:

# Set your token as an environment variable
export ABOARD_API_TOKEN="your_token_here"

# Use the token in requests
curl -H "Authorization: Bearer $ABOARD_API_TOKEN" \
     https://api.aboardhr.com/v1/company

Using JavaScript/Fetch:

const token = 'your_token_here';
const response = await fetch('https://api.aboardhr.com/v1/company', {
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json'
  }
});

Authentication errors

If your token is invalid or missing, you'll receive a 401 Unauthorized response with an empty body:

HTTP/1.1 401 Unauthorized
Content-Length: 0

Token security

  • Keep your token secure and never commit it to version control
  • Use environment variables to store tokens in your applications
  • Rotate tokens regularly as recommended by your security policy
  • Report compromised tokens immediately to your system administrator

Quick start examples

1. Get company information

curl -H "Authorization: Bearer YOUR_TOKEN" \
     https://api.aboardhr.com/v1/company

2. List employees

curl -H "Authorization: Bearer YOUR_TOKEN" \
     https://api.aboardhr.com/v1/employees

3. Filter employees by role

curl -H "Authorization: Bearer YOUR_TOKEN" \
     "https://api.aboardhr.com/v1/employees?filter[role]=manager"

4. Get time-off requests

curl -H "Authorization: Bearer YOUR_TOKEN" \
     https://api.aboardhr.com/v1/time-off-requests

5. List time tracking projects

curl -H "Authorization: Bearer YOUR_TOKEN" \
     https://api.aboardhr.com/v1/time-tracking-projects

API features

Pagination

All list endpoints support pagination using page[limit] and page[offset] parameters:

# Get first 10 employees
curl -H "Authorization: Bearer YOUR_TOKEN" \
     "https://api.aboardhr.com/v1/employees?page[limit]=10&page[offset]=0"

Filtering

Many endpoints support filtering:

  • Employees: Filter by role (employee, manager, superadmin)
  • Time-off Requests: Filter by status, time_off_policy_id, time_off_policy_type_id, date, from_date, to_date, requested_at, requested_at_from, requested_at_to
  • Time Tracking Entries: Filter by status, time_tracking_project_id, date, from_date, to_date, from_time, to_time

Response format

All responses follow the JSON:API specification with:

  • data: The main resource(s)
  • links: Pagination links
  • relationships: Links to related resources

Example response:

{
  "data": [
    {
      "id": "1",
      "type": "employees",
      "links": {
        "self": "https://api.aboardhr.com/v1/employees/1"
      },
      "attributes": {
        "first-name": "Andy",
        "last-name": "Bernard",
        "work-email": "andy-bernard@company.com",
        "role": "manager"
      },
      "relationships": {
        "time-off-requests": {
          "links": {
            "self": "https://api.aboardhr.com/v1/employees/1/relationships/time-off-requests",
            "related": "https://api.aboardhr.com/v1/employees/1/time-off-requests"
          }
        }
      }
    }
  ],
  "links": {
    "first": "https://api.aboardhr.com/v1/employees?page[limit]=20&page[offset]=0",
    "last": "https://api.aboardhr.com/v1/employees?page[limit]=20&page[offset]=0"
  }
}

Available endpoints

Company

  • GET /v1/company - Get company information

Employees

  • GET /v1/employees - List all employees
  • GET /v1/employees/{id} - Get specific employee

Bank details

  • GET /v1/bank-details - List all bank details
  • GET /v1/bank-details/{id} - Get specific bank details

Supported Bank Detail Types:

  • US: Routing number (9 digits)
  • IBAN: BIC/SWIFT code for international accounts
  • UK: Sort code (6 digits in XX-XX-XX format)
  • Canada: Institution number (3 digits) + Branch transit number (5 digits)
  • Australia: BSB code (6 digits in XXX-XXX format)
  • Denmark: Registration number (4 digits)
  • Norway: Bank code (4 digits)
  • Sweden: Clearing number (4 digits)
  • South Africa: Branch code (6 digits)
  • Singapore: Bank code (4 digits) + Branch code (3 digits)
  • New Zealand: BBAN (Basic Bank Account Number)
  • Colombia: Bank code (4 digits) + Branch code (4 digits)
  • SWIFT: International SWIFT code format

Time tracking

  • GET /v1/time-tracking-projects - List time tracking projects
  • GET /v1/time-tracking-projects/{id} - Get specific project
  • GET /v1/time-tracking-entries - List time tracking entries
  • GET /v1/time-tracking-entries/{id} - Get specific entry

Time-off management

  • GET /v1/time-off-requests - List time-off requests
  • GET /v1/time-off-requests/{id} - Get specific request
  • GET /v1/time-off-policies - List time-off policies
  • GET /v1/time-off-policies/{id} - Get specific policy
  • GET /v1/time-off-policy-types - List policy types
  • GET /v1/time-off-policy-types/{id} - Get specific policy type

Organization

  • GET /v1/departments - List departments
  • GET /v1/departments/{id} - Get specific department
  • GET /v1/job-titles - List job titles
  • GET /v1/job-titles/{id} - Get specific job title
  • GET /v1/locations - List locations
  • GET /v1/locations/{id} - Get specific location

Profile attributes

  • GET /v1/profile-attributes - List custom profile attributes
  • GET /v1/profile-attributes/{id} - Get specific profile attribute
  • GET /v1/profile-attribute-options - List profile attribute options
  • GET /v1/profile-attribute-options/{id} - Get specific option
  • GET /v1/profile-attribute-values - List profile attribute values
  • GET /v1/profile-attribute-values/{id} - Get specific value

Error handling

The API uses standard HTTP status codes:

  • 200 - Success
  • 401 - Unauthorized (invalid or missing token) - Returns empty response body
  • 404 - Resource not found
  • 422 - Validation error

Authentication errors return empty response body:

HTTP/1.1 401 Unauthorized
Content-Length: 0

Company

Company information and settings

Get company information

Retrieve information about the company associated with the authenticated user

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{}

Employees

Employee records and core profile information

List employees

Retrieve a paginated list of all employees in the company

Authorizations:
bearerAuth
query Parameters
filter[role]
string
Enum: "employee" "manager" "superadmin"
Example: filter[role]=manager

Filter employees by role

page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of employees to return per page

page[offset]
integer
Default: 0

Number of employees to skip

Responses

Response samples

Content type
application/json
{}

Get a single employee

Retrieve detailed information about a specific employee by their ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Unique identifier for the employee

Responses

Response samples

Content type
application/json
{}

Employee Details

Detailed employee data including employments, addresses, positions, and salaries

List employments

Retrieve a paginated list of all employments

Authorizations:
bearerAuth
query Parameters
page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of records per page

page[offset]
integer
Default: 0

Number of records to skip

Responses

Response samples

Content type
application/json
{}

Get a single employment

Retrieve employment details by ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Employment ID

Responses

Response samples

Content type
application/json
{}

List home addresses

Retrieve a paginated list of home addresses

Authorizations:
bearerAuth
query Parameters
page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of records per page

page[offset]
integer
Default: 0

Number of records to skip

Responses

Response samples

Content type
application/json
{}

Get a single home address

Retrieve home address details by ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Home address ID

Responses

Response samples

Content type
application/json
{}

List positions

Retrieve a paginated list of positions

Authorizations:
bearerAuth
query Parameters
page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of records per page

page[offset]
integer
Default: 0

Number of records to skip

Responses

Response samples

Content type
application/json
{}

Get a single position

Retrieve position details by ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Position ID

Responses

Response samples

Content type
application/json
{}

List salaries

Retrieve a paginated list of salaries

Authorizations:
bearerAuth
query Parameters
page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of records per page

page[offset]
integer
Default: 0

Number of records to skip

Responses

Response samples

Content type
application/json
{}

Get a single salary

Retrieve salary details by ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Salary ID

Responses

Response samples

Content type
application/json
{}

Bank Details

Employee bank account and payment information

List bank details

Retrieve a paginated list of all bank details in the company

Authorizations:
bearerAuth
query Parameters
page[limit]
integer <= 50
Default: 20
Example: page[limit]=20

Number of bank details to return per page

page[offset]
integer
Default: 0

Number of bank details to skip

Responses

Response samples

Content type
application/json
{}

Get bank details

Retrieve specific bank details by ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Bank details ID

Responses

Response samples

Content type
application/json
{}

Departments

Company departments and organizational units

List departments

Retrieve a paginated list of departments

Authorizations:
bearerAuth
query Parameters
page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of records per page

page[offset]
integer
Default: 0

Number of records to skip

Responses

Response samples

Content type
application/json
{}

Get a single department

Retrieve department details by ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Department ID

Responses

Response samples

Content type
application/json
{}

Job Titles

Job titles and roles within the organization

List job titles

Retrieve a paginated list of job titles

Authorizations:
bearerAuth
query Parameters
page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of records per page

page[offset]
integer
Default: 0

Number of records to skip

Responses

Response samples

Content type
application/json
{}

Get a single job title

Retrieve job title details by ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Job title ID

Responses

Response samples

Content type
application/json
{}

Locations

Office locations and work sites

List locations

Retrieve a paginated list of locations

Authorizations:
bearerAuth
query Parameters
page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of records per page

page[offset]
integer
Default: 0

Number of records to skip

Responses

Response samples

Content type
application/json
{}

Get a single location

Retrieve location details by ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Location ID

Responses

Response samples

Content type
application/json
{}

Profile Attributes

Custom profile attributes, options, and values for employees

List profile attributes

Retrieve a paginated list of custom profile attributes defined for the company

Authorizations:
bearerAuth
query Parameters
page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of records per page

page[offset]
integer
Default: 0

Number of records to skip

Responses

Response samples

Content type
application/json
{}

Get a single profile attribute

Retrieve profile attribute details by ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Profile attribute ID

Responses

Response samples

Content type
application/json
{}

List profile attribute options

Retrieve a paginated list of options for profile attributes

Authorizations:
bearerAuth
query Parameters
page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of records per page

page[offset]
integer
Default: 0

Number of records to skip

Responses

Response samples

Content type
application/json
{}

Get a single profile attribute option

Retrieve profile attribute option details by ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Profile attribute option ID

Responses

Response samples

Content type
application/json
{}

List profile attribute values

Retrieve a paginated list of profile attribute values assigned to employees

Authorizations:
bearerAuth
query Parameters
page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of records per page

page[offset]
integer
Default: 0

Number of records to skip

Responses

Response samples

Content type
application/json

Get a single profile attribute value

Retrieve profile attribute value details by ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Profile attribute value ID

Responses

Response samples

Content type
application/json
{}

Time Tracking

Time tracking projects and entries

List time tracking entries

Retrieve a paginated list of time tracking entries with optional filtering

Authorizations:
bearerAuth
query Parameters
filter[status]
string
Enum: "active" "archived"
Example: filter[status]=active

Filter entries by status

filter[time_tracking_project_id]
string
Example: filter[time_tracking_project_id]=1

Filter entries by project ID

filter[date]
string <date>
Example: filter[date]=2025-01-15

Filter entries by exact date (YYYY-MM-DD format)

filter[from_date]
string <date>
Example: filter[from_date]=2025-01-01

Filter entries starting on or after this date (YYYY-MM-DD format)

filter[to_date]
string <date>
Example: filter[to_date]=2025-01-31

Filter entries ending on or before this date (YYYY-MM-DD format)

filter[from_time]
string <date-time>
Example: filter[from_time]=2025-01-15T09:00:00Z

Filter entries starting on or after this timestamp (ISO 8601 format)

filter[to_time]
string <date-time>
Example: filter[to_time]=2025-01-15T18:00:00Z

Filter entries ending on or before this timestamp (ISO 8601 format)

page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of entries to return per page

page[offset]
integer
Default: 0

Number of entries to skip

Responses

Response samples

Get a single time tracking entry

Retrieve time tracking entry details by ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Time tracking entry ID

Responses

Response samples

Content type
application/json
{}

List time tracking projects

Retrieve a paginated list of all time tracking projects

Authorizations:
bearerAuth
query Parameters
page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of projects to return per page

page[offset]
integer
Default: 0

Number of projects to skip

Responses

Response samples

Content type
application/json
{}

Get a single time tracking project

Retrieve detailed information about a specific time tracking project by its ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Unique identifier for the time tracking project

Responses

Response samples

Content type
application/json
{}

Time Off

Time-off requests, policies, and policy types

List time-off requests

Retrieve a paginated list of time-off requests with optional filtering

Authorizations:
bearerAuth
query Parameters
filter[status]
string
Enum: "pending" "approved" "declined" "cancelled"
Example: filter[status]=approved

Filter requests by status

filter[time_off_policy_id]
string
Example: filter[time_off_policy_id]=1

Filter requests by policy ID

filter[time_off_policy_type_id]
string
Example: filter[time_off_policy_type_id]=1

Filter requests by policy type ID

filter[date]
string <date>
Example: filter[date]=2025-07-15

Filter requests that contain a specific date (YYYY-MM-DD format). Returns requests where the date falls between start_date and end_date.

filter[from_date]
string <date>
Example: filter[from_date]=2025-07-01

Filter requests starting on or after this date (YYYY-MM-DD format)

filter[to_date]
string <date>
Example: filter[to_date]=2025-07-31

Filter requests ending on or before this date (YYYY-MM-DD format)

filter[requested_at]
string <date>
Example: filter[requested_at]=2025-06-01

Filter requests created on a specific date (YYYY-MM-DD format)

filter[requested_at_from]
string <date>
Example: filter[requested_at_from]=2025-06-01

Filter requests created on or after this date (YYYY-MM-DD format)

filter[requested_at_to]
string <date>
Example: filter[requested_at_to]=2025-06-30

Filter requests created on or before this date (YYYY-MM-DD format)

page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of requests to return per page

page[offset]
integer
Default: 0

Number of requests to skip

Responses

Response samples

Content type
application/json
{}

Get a single time-off request

Retrieve detailed information about a specific time-off request by its ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Unique identifier for the time-off request

Responses

Response samples

Content type
application/json
{}

List time-off policy types

Retrieve a paginated list of time-off policy types

Authorizations:
bearerAuth
query Parameters
page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of policy types to return per page

page[offset]
integer
Default: 0

Number of policy types to skip

Responses

Response samples

Content type
application/json
{}

Get a single time-off policy type

Retrieve detailed information about a specific time-off policy type by its ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Unique identifier for the time-off policy type

Responses

Response samples

Content type
application/json
{}

List time-off policies

Retrieve a paginated list of time-off policies

Authorizations:
bearerAuth
query Parameters
page[limit]
integer <= 100
Default: 20
Example: page[limit]=20

Number of policies to return per page

page[offset]
integer
Default: 0

Number of policies to skip

Responses

Response samples

Content type
application/json

Get a single time-off policy

Retrieve detailed information about a specific time-off policy by its ID

Authorizations:
bearerAuth
path Parameters
id
required
string
Example: 1

Unique identifier for the time-off policy

Responses

Response samples

Content type
application/json
{}