Jobport API (1)

Download OpenAPI specification:Download

Introduction

The Jobport API provides a robust and flexible interface for managing your data in Jobport.

Standards

The Jobport API is mostly RESTful and adheres to the JSON:API specification for consistency and interoperability.

A variety of JSON:API libraries are available for most programming languages to help you interact with the API. The list of JSON API implementations is a good starting point.

Base URL

Use this base URL for all requests unless instructed otherwise:

https://api.services.jobport.nl/public/v1/

Headers

Set the following HTTP headers with every request.

Header Content
Authorization Bearer {token}

For more information on the Authorization header, see the Authentication section.

When POSTing or PATCHing data, also include the Content-Type header.

Parameter Content
Content-Type application/json

Example

  curl -X POST "https://api.services.jobport.nl/public/v1/..." \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json"

Paths

Your application may be authorized to make changes for multiple organizations. Therefore most paths are prefixed with /organizations/{organization_id}/, e.g. /organizations/{organization_id}/dossiers. When retrieving resources this will only return the resources associated with a particular organization. When creating a resource it will associate the resource with the organization.

The same applies to other nested paths, such as /organizations/{organization_id}/dossiers/{dossier_id}/user_contexts.

Filtering

Endpoints that list resources may support filtering using the filter[] query parameter. This parameter accepts a list of filter values, where each value typically consists of a filter name and a value separated by a colon. Flags use only the filter name. For example: ?filter[]=active&filter[]=name:paul. Many filters may be included multiple times to filter on multiple values, e.g. ?filter[]=name:paul&filter[]=name:john.

Sparse fieldsets

Sparse fieldsets allow you to specify which fields you want to include in the response. Use the fields query parameter to specify a comma-separated list of fields for each resource type. For example: ?fields[dossiers]=id,name,created_at.

Note that for export endpoints this works slightly differently: the fields must be specified without the resource type prefix. For example: ?fields=id,name,created_at. Exports never include other resource types other than the one being exported.

Sorting

Endpoints that list resources may support sorting using the sort query parameter. This parameter accepts a comma-separated list of field names to sort by. Prefix a field name with a minus sign (-) to sort in descending order. For example: ?sort=name,-created_at.

Available sorting options vary by endpoint and are documented in each endpoint’s documentation.

Meta data

When retrieving a list of resources, the response will include a top level meta object containing additional information about the response, such as pagination details (page, page_size).

Endpoints that list resources support optional inclusion of the total count of resources in the meta object. Use the _count query parameter to do so. For example: ?_count=true. The meta object will include a total field indicating the total number of resources available, regardless of any filters applied.

Note that export endpoints do not return a meta object, as they are designed to export all available data without pagination.

User contexts

Jobport allows a single user to have access to multiple contexts across different organizations. For example, a person can be a coach for organization 'A' and 'B', and also be a client coached by organization 'C'. This user would have three user contexts. If a user has multiple contexts, they can switch between them without logging out and back in.

Storing user contexts

A user context ID is permanent and reused even after deactivation and reactivation. If your app stores these IDs (e.g. for SSO), note that inactive contexts may return a 404 when accessed.

Bugs & suggestions

If you encounter issues with the API, or want to suggest improvements, please let us know at https://www.jobport.nl/contact.

Authentication

Your application must send a self-generated short-lived JSON Web Token (JWT) with each request you send to the API. This token identifies your application with a digital signature.

Creating a signed token

To create signed JWTs, you will receive from us:

  • A unique ID to identify your application (referred to as the app_id)
  • A shared secret to sign the JWTs (keep this confidential)

To request these credentials for your application, contact us at https://www.jobport.nl/contact. API access is available for selected customers only. Please provide the name of your application and describe the purpose of the integration you are building. We will then review your request. When eligible we will create an application for you with the appropriate permissions and provide you with the necessary credentials.

A signed JWT has three parts: a header, a payload, and a signature. Do not base64-encode the secret when generating the token. You can reuse a token until it expires or generate a new one for each request. The latter might be simpler to manage and could increase security by limiting the token's lifetime (see exp below).

The header must contain:

Property Type Required Value
alg string true "HS256"
typ string true "JWT"

The payload must contain:

Claim Type Required Description
app_id string true This is the application id you received along with your shared secret
exp integer true Expiration date in seconds since Unix Epoch, not more than 15 minutes in the future

Most programming languages have libraries available to help you create signed JWTs. Basically, it takes three steps:

  1. token = base64UrlEncode(header) + "." + base64UrlEncode(payload)
  2. signature = HMACSHA256(token, shared_secret)
  3. signed_token = token + "." + signature

You can use https://jwt.io to check if your JWTs are valid and contain the correct data. Never enter your shared secret into third party tools. If you need to do that, please request another shared secret for production use once you have authentication set up.

Example

# Assume we want our example JWT to contain the following header and payload:
header = { "alg": "HS256", "typ": "JWT" }
payload = { "app_id": "673943a3-8df4-421d-ad5b-34e747cadd83", "exp": 1505487093 }

# We then encode and combine the parts:
token = base64UrlEncode(header) + "." + base64UrlEncode(payload) # => eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBfaWQiOiI2NzM5NDNhMy04ZGY0LTQyMWQtYWQ1Yi0zNGU3NDdjYWRkODMiLCJleHAiOjE1MDU0ODcwOTN9

# Then calculate the signature:
shared_secret = `your-256-bit-secret`
signature = HMACSHA256(token, shared_secret) # => SSqSQeVlLjqdrm5cPqTcXLwaq_w7UJmsWJZ8oDCPJ_g

# Finally, append the signature to get your signed JWT:
signed_token = token + "." + signature # => eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBfaWQiOiI2NzM5NDNhMy04ZGY0LTQyMWQtYWQ1Yi0zNGU3NDdjYWRkODMiLCJleHAiOjE1MDU0ODcwOTN9.SSqSQeVlLjqdrm5cPqTcXLwaq_w7UJmsWJZ8oDCPJ_g

What if I cannot generate a JWT?

If you’re unable to generate a JWT dynamically, we can provide a static, long-lived token for authenticating your requests. However, we strongly recommend using short-lived JWTs for better security. To request a static token, contact us. Keep static tokens confidential. They must be renewed annually.

Using the token to authenticate

Set the Authorization header with the value Bearer {signed_token} in every request you make to the API.

Example

curl "https://api.services.jobport.nl/..." \
  -H "Authorization: Bearer $SIGNED_TOKEN"

User tokens

Use the token exchange endpoint when your application needs to perform actions on behalf of a user.

Single Sign-On (SSO)

Use the one-time SSO URL endpoint to create a short-lived SSO URL that your user can use to log in to Jobport.

User Tokens

Endpoints for retrieving user tokens.

Create User Token

With this endpoint an OpenID id_token or access_token can be exchanged for a JWT token that authenticates as a user. It can be used to perform impersonated requests.

This is only allowed for identity providers that have been specifically whitelisted for your organization.

This endpoint follows the standard OAuth2 token exchange specification.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Request Body schema: application/json

parameters for the action

subject_token
required
string

A token containing the identity of the user

subject_token_type
required
string
Enum: "urn:ietf:params:oauth:token-type:id_token" "urn:ietf:params:oauth:token-type:access_token"

The type of subject_token that is given.

grant_type
required
string
Value: "urn:ietf:params:oauth:grant-type:token-exchange"

The type of action requested from this endpoint

Responses

Request samples

Content type
application/json
{
  • "subject_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjVDRjI2NDY5MjY5MkM5MDBDMzZGNUMxNkU2MEQ1OEFERjI1ODhFNEEifQ.eyJzdWIiOiIxMjkwOTUyMDUiLCJpc3MiOiJodHRwczovL3RtYS5hY2MuYW1zdGVyZGFtLm5sIiwiYXVkIjoic3Z3aSIsImV4cCI6MTY4MTAwNzAxMiwiaWF0IjoxNjgwNzkxMDEyLCJuYmYiOjE2ODA3OTEwMTIsIm5vbmNlIjoiMmZmODQwYjE1MDA5ZDQ4MzhjOTE0MmQ3NWEwYmRmYzQiLCJzaWQiOiI3NENGRUIzODgzMEU5ODNDRTg4QzYyMTZGM0E5MEMxMTRDQjNCRTBCQ0ZFODIyRTUwMkI3RUU2M0M0NDcwQ0Y2QzQxODNBMTg3QzAyRkZDOURBQUVBOUJFN0I4RDAzQTk5QTNGNEY3ODM0NTM2OTc1MDFDQjgzMkRBMzY0RjlERjVENjdFOEQxODM2NTVDOTRBNTczQzFCM0Q0MDE5QzJBNUJEQ0NBREY1MjQ1MEM3N0M2MENBNUFDQUI1QUY1OEE2QURDOUI1RDAwQTUwOEU4NTUzMzg5MTRGRDA5REU1RUMzN0E3QzA4OUVDN0NBQkIiLCJ2ZXIiOiIxLjAiLCJhcHBpZGFjciI6IjAiLCJjX2hhc2giOiJZcE1mSGx2WUFxTU9mcWZvRFV2SFpnIiwidWlkIjoiMTI5MDk1MjA1IiwiYXV0aHNwX2xldmVsIjoiMTAiLCJzZWxfYXV0aHNwIjoiaHR0cHM6Ly93YXMtcHJlcHJvZDEuZGlnaWQubmwvc2FtbC9pZHAvbWV0YWRhdGEiLCJhdXRoc3BfdHlwZSI6InNhbWwyMCIsImNsaWVudF9pcCI6IjgzLjgxLjE5NS43MSIsImxhbmd1YWdlIjoiZW4iLCJzZWxfbGV2ZWwiOiIxMCIsIm5hbWVfaWQiOiJzMDAwMDAwMDA6MTI5MDk1MjA1IiwidXNlcl9hZ2VudCI6Ik1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzE1XzcpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMTEuMC4wLjAgU2FmYXJpLzUzNy4zNiJ9.bQ5mX6kVgPihsk1AtosubAITgQ0RLL-5XGQU0MA8gA5auAYSNkbX_XlM7zNXx8_kH6J0e7K1VQHnBYFC-OmaAqJi3x_FI1CzlYwLiBglxhiY0si3_Y3d0vTiyg7enruO7Crs8lBza3SXgYiAVbciqWT2bpqV_r5q0_Hhawy8p8e8iLjUJv2-9xsAPwHpCfboi5XNi6AuRJJCd76opBkLKc4msMsM9wTE-yk4XcJva0Yonj_YfNm5miiF7DMKRrwLBpkjS3L2E5JVAGQad5n5Z7ylNXmwASlVJHA5WHeP1gmgHsXaMkyGa4xBVgQSflpnwUKlaJyBnxL6zTWk9goxgA",
  • "subject_token_type": "urn:ietf:params:oauth:token-type:id_token",
  • "grant_type": "urn:ietf:params:oauth:grant-type:token-exchange"
}

Response samples

Content type
application/json
{
  • "access_token": "eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2NvbnRleHRfaWQiOiIyYjFiNTE1MS03OGY2LTQ3NDctOWMzNy1lMDFhMmVhNDdhNzYiLCJ1c2VyX2lkIjoiMDlhMmZiMGYtMTA4MC00MDVjLTllMmItZWZhOGI2MDg1YWY0IiwiYXBwX2lkIjoiNTVmOTIxZGUtOWUzOC00NjgwLTk5OGItMmYwOWMxYzNmMTM5IiwiZXhwIjoxNjgwODgyMDgyLCJyZXF1ZXN0ZXIiOiJhcHAifQ.uSmC6t6g_2KcLFkvDHl1phnO7qtWr_HYgQMw7QUHCtc",
  • "issued_token_type": "urn:ietf:params:oauth:token-type:jwt",
  • "expires_in": 3600,
  • "token_type": "Bearer"
}

One-time SSO URLs

Jobport supports SSO with secure, one-time URLs for one specific user context. The URL can be used only once and expires within seconds after creation. Request the SSO URL just before the user needs to log in, then redirect them immediately.

A user may belong to multiple organizations. After logging in with an SSO URL, the user will only have access to the organization for which the SSO URL was generated. This prevents unauthorized access to other organizations.

Create One-time SSO URL

Create a short-lived one-time SSO URL for a user context.

Authorizations:
bearerAuth
path Parameters
user_context_id
required
string <uuid>
Example: 687ae300-3f3f-46e3-a204-3add97f82165

The ID of the user context.

organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
application/vnd.api+json
{}

User Contexts

Endopoints for retrieving user contexts.

Get User Context

Returns a single user context for the specified organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

user_context_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the user context.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "jsonapi": {
    }
}

Conversations

Endpoints for retrieving conversations.

List Conversations

Returns a list of conversations for the specified user context.

Authorizations:
bearerAuth
path Parameters
user_context_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the user context.

query Parameters
filter[]
Array of strings
Example: filter[]=hidden

Filters to query specific conversations.

Filter Type Description Example value
hidden flag Only return hidden (archived) conversations hidden
sort
string
Default: "-last_event"
Enum: "last_event" "-last_event"
Example: sort=last_event

attributes to sort on

page
integer
Default: 1

The requested page for paginated responses.

page_size
integer
Default: 20

The requested amount of items for paginated responses.

_count
string
Example: _count=true

Flag to receive total count in the response, value is irrelevant.

header Parameters
X-Request-Id
string <uuid>
Example: 2bcef744-8c44-4595-9e1c-55c8a275e140

The ID of the request/response for logging through a chain of requests.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "links": {
    },
  • "meta": {
    },
  • "jsonapi": {
    }
}

Get Conversation

Returns a single conversation for the specified user context.

Authorizations:
bearerAuth
path Parameters
user_context_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the user context.

conversation_id
required
string <uuid:uuid>
Example: aeeb4ecc-715c-45a2-8240-dfd7e856db74:0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of a conversation.

header Parameters
X-Request-Id
string <uuid>
Example: 2bcef744-8c44-4595-9e1c-55c8a275e140

The ID of the request/response for logging through a chain of requests.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": { },
  • "jsonapi": {
    }
}

Dossiers

Endpoints for managing dossiers. Dossiers hold information about a candidate. Once a dossier exists you can (optionally) invite the candidate to create a Jobport account.

List Dossiers

Returns a list of dossiers for the specified organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

query Parameters
filter[]
Array of strings
Example: filter[]=email:john.doe@example.org&filter[]=email:jane.doe@example.org

Filters to query specific dossiers.

Filter Type Description Example value
email string Filters by one or more exact email addresses (case insensitive) email:john.doe@example.org
q string Filters by search query q:doe
page
integer
Default: 1

The requested page for paginated responses.

page_size
integer
Default: 20

The requested amount of items for paginated responses.

_count
string
Example: _count=true

Flag to receive total count in the response, value is irrelevant.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "links": {
    },
  • "meta": {
    },
  • "jsonapi": {
    }
}

Create Dossier

Creates a new dossier for the specified organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Request Body schema:
required
object

Responses

Request samples

Content type
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Get Dossier

Returns a single dossier for the specified organization by dossier ID.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

dossier_id
required
string <uuid>
Example: 190d972c-e522-473a-8fb9-0d23f9283045

The ID of the dossier

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Create User Context

Create a user context for a dossier with a custom identity provider login.

Typically, when a candidate needs access to Jobport, they receive an invitation email to create an account (using the send_invitation_at attribute). If your organization uses a custom identity provider, you can create a user account for the candidate directly, bypassing the standard invitation process. This allows account creation without candidate interaction. Note: This also means the candidate will not see or agree to any terms and conditions, which are usually presented during signup. This endpoint creates a user (or assigns an existing user) to a dossier based on the provider identity identifier. After a successful request, the candidate can log in using the identity provider. This is only possible if no user has previously been created for the dossier. Changing provider identity details after creation is not supported.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

dossier_id
required
string <uuid>
Example: 190d972c-e522-473a-8fb9-0d23f9283045

The ID of the dossier

Request Body schema:
required
object

Responses

Request samples

Content type
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Employers

Endpoints for retrieving employers.

List Employers

Returns a list of employers for the specified organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

query Parameters
filter[]
Array of strings
Example: filter[]=name:Jobport&filter[]=archived:false

Filters to query specific employers.

Filter Type Description Example value
name string Only return employers with the given name(s). name:Jobport
national_id string Only return employers with the given national identifier(s) (KVK number). national_id:12345678
national_branch_id string Only return employers with the given national branch identifier(s) (KVK branch number). national_branch_id:123456789012
archived boolean Only return employers that are either archived or not archived. archived:false
page
integer
Default: 1

The requested page for paginated responses.

page_size
integer
Default: 20

The requested amount of items for paginated responses.

_count
string
Example: _count=true

Flag to receive total count in the response, value is irrelevant.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "links": {
    },
  • "meta": {
    },
  • "jsonapi": {
    }
}

Notifications

Endpoints for retrieving notifications.

List Notifications

Returns a list of notifications for the specified user context.

Authorizations:
bearerAuth
path Parameters
user_context_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the user context.

query Parameters
filter[]
Array of strings
Example: filter[]=read

Filters to query specific notifications.

Filter Type Description Example value
read flag Only return notifications that have been read by the user read
sort
string
Default: "-created_at"
Enum: "created_at" "-created_at"
Example: sort=created_at

attributes to sort on

page
integer
Default: 1

The requested page for paginated responses.

page_size
integer
Default: 20

The requested amount of items for paginated responses.

_count
string
Example: _count=true

Flag to receive total count in the response, value is irrelevant.

header Parameters
X-Request-Id
string <uuid>
Example: 2bcef744-8c44-4595-9e1c-55c8a275e140

The ID of the request/response for logging through a chain of requests.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "links": {
    },
  • "meta": {
    },
  • "jsonapi": {
    }
}

Get Notification

Returns a single notification for the specified user context.

Authorizations:
bearerAuth
path Parameters
user_context_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the user context.

notification_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of an notification.

header Parameters
X-Request-Id
string <uuid>
Example: 2bcef744-8c44-4595-9e1c-55c8a275e140

The ID of the request/response for logging through a chain of requests.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": { },
  • "jsonapi": {
    }
}

Employer Vacancies

Endpoints for managing employer vacancies.

List Employer Vacancies

Returns a list of employer vacancies for the specified organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

query Parameters
page
integer
Default: 1

The requested page for paginated responses.

page_size
integer
Default: 20

The requested amount of items for paginated responses.

_count
string
Example: _count=true

Flag to receive total count in the response, value is irrelevant.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "links": {
    },
  • "meta": {
    },
  • "jsonapi": {
    }
}

Create Employer Vacancy

Create an employer vacancy for the specified organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Request Body schema:
required
object

Responses

Request samples

Content type
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Get Employer Vacancy

Returns a single employer vacancy for the specified organization by employer vacancy ID.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

employer_vacancy_id
required
string <uuid>
Example: 82b4b296-ccf6-45c5-917c-ae95ee8c9a9b

The ID of the employer vacancy

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Update Employer Vacancy

Update a single employer vacancy for the specified organization by employer vacancy ID.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

employer_vacancy_id
required
string <uuid>
Example: 82b4b296-ccf6-45c5-917c-ae95ee8c9a9b

The ID of the employer vacancy

Request Body schema:
required
object

Responses

Request samples

Content type
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Delete Employer Vacancy

Delete a single employer vacancy for the specified organization by employer vacancy ID.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

employer_vacancy_id
required
string <uuid>
Example: 82b4b296-ccf6-45c5-917c-ae95ee8c9a9b

The ID of the employer vacancy

Responses

Response samples

Content type
application/json
{
  • "message": "Unauthorized: Signature verification failed"
}

Saved Vacancies

Endpoints for retrieving saved vacancies.

List Saved Vacancies

Returns a list of saved vacancies for the specified organization and dossier.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

dossier_id
required
string <uuid>
Example: 190d972c-e522-473a-8fb9-0d23f9283045

The ID of the dossier

query Parameters
filter[]
Array of strings
Example: filter[]=recent_activity&filter[]=vacancy_type:external

Filters to query specific saved vacancies.

Filter Type Description Example value
recent_activity flag List only vacancies with activity during the last month.
If today would be March 16, this would return vacancies with activity on or after Februari 16.
recent_activity
vacancy_type string List only saved vacancies of a specific type.
Possible values: external
vacancy_type:external
include[]
Array of strings
Items Enum: "vacancy" "vacancy_state"
Example: include[]=vacancy&include[]=vacancy_state

Include related resources in the response.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "links": {
    },
  • "meta": {
    },
  • "jsonapi": {
    }
}

Get Saved Vacancy

Returns a single saved vacancy.

Authorizations:
bearerAuth
path Parameters
saved_vacancy_id
required
string
Example: 5be31c5a-d46b-497d-83c1-69a9dd40147b

The ID of the saved vacancy to retrieve.

query Parameters
include[]
Array of strings
Items Enum: "vacancy" "vacancy_state"
Example: include[]=vacancy&include[]=vacancy_state

Include related resources in the response.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    },
  • "jsonapi": {
    }
}

List Activities

Returns a list of saved vacancy activities for the specified organization and dossier.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

dossier_id
required
string <uuid>
Example: 190d972c-e522-473a-8fb9-0d23f9283045

The ID of the dossier

query Parameters
filter[]
Array of strings
Example: filter[]=after:2024-01-01&filter[]=vacancy_type:external

Filters to query specific activities.

Filter Type Description Example value
after date Only return activities after this date (RFC-3339). after:2024-01-01
before date Only return activities before this date (RFC-3339). before:2024-12-31
vacancy_type string Only return activities for this vacancy type.
Possible values: external
vacancy_type:external
sort
string
Default: "event_at"
Enum: "event_at" "-event_at"
Example: sort=-event_at

Attributes to sort on

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "links": {
    },
  • "meta": {
    },
  • "jsonapi": {
    }
}

List Saved Vacancy Activities

Returns a list of activities for the specified saved vacancy.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

dossier_id
required
string <uuid>
Example: 190d972c-e522-473a-8fb9-0d23f9283045

The ID of the dossier

saved_vacancy_id
required
string
Example: 4b5f0698-2d46-4f79-848f-8e4ac467ef4d

The ID of the saved vacancy.

query Parameters
filter[]
Array of strings
Example: filter[]=after:2024-01-01&filter[]=vacancy_type:external

Filters to query specific activities.

Filter Type Description Example value
after date Only return activities after this date (RFC-3339). after:2024-01-01
before date Only return activities before this date (RFC-3339). before:2024-12-31
vacancy_type string Only return activities for this vacancy type.
Possible values: external
vacancy_type:external
sort
string
Default: "event_at"
Enum: "event_at" "-event_at"
Example: sort=-event_at

Attributes to sort on

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "links": {
    },
  • "meta": {
    },
  • "jsonapi": {
    }
}

List Vacancy States

Retrieve vacancy states.

Authorizations:
bearerAuth
query Parameters
page
integer
Default: 1

The requested page for paginated responses.

page_size
integer
Default: 20

The requested amount of items for paginated responses.

_count
string
Example: _count=true

Flag to receive total count in the response, value is irrelevant.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "links": {
    },
  • "meta": {
    },
  • "jsonapi": {
    }
}

Get Vacancy State

Returns a single Vacancy State

Authorizations:
bearerAuth
path Parameters
vacancy_state_id
required
string <uuid>
Example: fb36242f-fcb1-4a0b-bd46-7f3f621a4f82

The ID of the vacancy state

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Contacts

Endpoints for managing contacts.

List Contacts

Returns a list of contacts for the specified organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

query Parameters
filter[]
Array of strings
Example: filter[]=q:doe&filter[]=archived:false

Filters to query specific contacts.

Filter Type Description Example value
archived boolean Only return contacts that are either archived or not archived. archived:false
email string Only return contacts with the given email address(es). email:jane.doe@example.org
employer string Only return contacts belonging to one or more employers by ID. employer:1c595214-fc27-4528-915e-ad73f7d3b5c5
q string Filters by search query, searches name and email. q:doe
page
integer
Default: 1

The requested page for paginated responses.

page_size
integer
Default: 20

The requested amount of items for paginated responses.

_count
string
Example: _count=true

Flag to receive total count in the response, value is irrelevant.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "links": {
    },
  • "meta": {
    },
  • "jsonapi": {
    }
}

Create Contact

Create a contact for the specified organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Request Body schema:
required
object

Responses

Request samples

Content type
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Get Contact

Returns a single contact for the specified organization by contact ID.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

contact_id
required
string <uuid>
Example: 7dd42af8-9bf2-4a53-820c-837d1cc49ea6

The ID of the contact

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Update Contact

Update a single contact for the specified organization by contact ID.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

contact_id
required
string <uuid>
Example: 7dd42af8-9bf2-4a53-820c-837d1cc49ea6

The ID of the contact

Request Body schema:
required
object

Responses

Request samples

Content type
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Delete Contact

Delete a single contact for the specified organization by contact ID.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

contact_id
required
string <uuid>
Example: 7dd42af8-9bf2-4a53-820c-837d1cc49ea6

The ID of the contact

Responses

Response samples

Content type
application/json
{
  • "message": "Unauthorized: Signature verification failed"
}

Tracks

List Tracks

Returns a list of tracks for the specified organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

query Parameters
page
integer
Default: 1

The requested page for paginated responses.

page_size
integer
Default: 20

The requested amount of items for paginated responses.

_count
string
Example: _count=true

Flag to receive total count in the response, value is irrelevant.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "links": {
    },
  • "meta": {
    },
  • "jsonapi": {
    }
}

Get Track

Returns a single track for the specified organization by track ID.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

track_id
required
string <uuid>
Example: bda75aa5-dc58-4914-8128-ae3e6d075983

The ID of the track

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Custom Fields

Endpoints for managing custom fields.

List Custom Fields

Returns a list of custom fields for the specified organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

query Parameters
filter[]
Array of strings
Example: filter[]=customizable_type:EmployerVacancy

Filters to query specific custom fields.

Filter Type Description Example value
customizable_type string Only return custom fields for a specific type of resource. customizable_type:EmployerVacancy
page
integer
Default: 1

The requested page for paginated responses.

page_size
integer
Default: 20

The requested amount of items for paginated responses.

_count
string
Example: _count=true

Flag to receive total count in the response, value is irrelevant.

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "links": {
    },
  • "meta": {
    },
  • "jsonapi": {
    }
}

Exported formats

Endpoints in this section are designed to export data from Jobport. E.g., without pagination. These are commonly used for integration with business intelligence systems.

Data can be exported in either JSON:API format or CSV format.

Use the Accept header to specify the desired format:

  • application/json for JSON:API
  • text/csv for CSV

Alternatively, you can use an extension in the URL to specify the format: append .json or .csv.

CSV

The CSV format includes a column for the resource ID and for each other attribute and relationship that is also included in the JSON:API format. Refer to the JSON:API documentation for details on the included attributes and relationships.

The CSV contains a header row with the attribute names, where nested attributes are expanded into separate columns using dot notation (e.g., access.granted_at, access.revoked_at). If your BI system has trouble interpreting dot notation, you can use the underscorize_headers query parameter to change the naming convention:

curl "https://api.services.jobport.nl/public/v1/organizations/{organization_id}/exports/dossiers?underscorize_headers=1" \
  -H "Accept: text/csv"

Now dots will be replaced with double underscores (e.g., access__granted_at, access__revoked_at).

Relationships have columns named after the relationship, such as profile, employers, etc. Related resources are refered to by their type and id using colon-separated identifiers, e.g., profiles:f5e3509e-7e3e-4ecf-a8cf-06e2b0f7830d. In case of one-to-many relationships, the identifiers are joined into a single column and separated by commas, e.g., employers:af4ca214-86af-4cc9-9259-b7bc6b545bed7,employers:266c496c-3f86-418b-8ebf-d123316300f5.

Example CSV (contacts)

id,access.granted_at,access.last_activity_at,access.revoked_at,access.status,archived_at,created_at,email,name,phone_number,employer
8fd21a5b-0fc0-43dc-8ab2-4e668c7d1d11,2023-10-01T12:00:00Z,2023-10-01T12:00:00Z,,active,,2023-10-01T11:59:59Z,johndoe@example.org,John Doe,+31612345678,employers:656f088a-aadc-44e1-99b0-00b6f07a3ed4

Also see the CSV columns overview for a complete overview of exported columns per resource type.

Export resources

Endpoints for exporting resources.

Dossiers

Export dossiers of an organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Profiles

Export profiles of an organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Educations

Export educations used in profiles of an organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Members

Export members of an organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Contacts

Export contacts of an organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Notes

Export notes of an organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Placements

Export placements for an organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Employer Vacancies

Export employer vacancies of an organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Employer Vacancy Dossiers

Export employer vacancy dossiers for an organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Showrooms

Export showrooms for an organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Employers

Export employers of an organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Tasks

Export tasks of an organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Tracks

Export tracks for an organization.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Export taxonomy

Endpoints for exporting taxonomy data.

Sectors

Export sectors.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Occupations

Export occupations.

Authorizations:
bearerAuth
path Parameters
organization_id
required
string <uuid>
Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c

The ID of the organization.

Responses

Response samples

Content type
{
  • "data": [
    ],
  • "jsonapi": {
    }
}

Changelog

Export endpoints

November 5, 2025

Endpoint Change Description
EmployerVacancies Attribute(s) added Attributes work_types, work_styles, accessible_by_public_transport, driving_licenses, work_environments, transport_modes, work_schedules, number_of_seats, foreign_languages, and language_nl (with nested reading, writing, speaking, understanding) have been added.

August 18, 2025

Endpoint Change Description
EmployerVacancies Relationship attribute(s) added Relationship account_manager is added.

July 15, 2025

Endpoint Change Description
Employers Attribute(s) added Attributes branch_total_employees, total_employees, legal_form and sbi_codes have been added.

June 23, 2025

Endpoint Change Description
Export endpoints Attribute(s) added Added columns that include the type and id for each related resource. E.g. for a (polymorphic) relationship with a subject there now is a subject column with a value like employers:af4ca214-86af-4cc9-9259-b7bc6b545bed7. See CSV documentation on relationships.
Export endpoints Attribute(s) removed All id-only columns for related resources have been deprecated* in favor of new columns that include resource types. E.g. a relationship with a subject, was listed in the CSV as a subject.id field. From now on you should use the subject field instead.
Notes Attribute(s) removed Attributes author.type and subject.type have been deprecated* in favor of author and subject.

March 14, 2025

Endpoint Change Description
Placements Endpoint added Added export placements endpoint.

March 9, 2025

Endpoint Change Description
Dossiers Attribute(s) added Attribute delete_scheduled_at has been added to indicate when an archived dossier will be automatically deleted.

March 3, 2025

Endpoint Change Description
Employers Attribute(s) added Attributes primary_account_manager and account_managers have been added.
Employers Attribute(s) removed Attribute account_manager has been deprecated* in favor of primary_account_manager and account_managers.

March 1, 2025

Change Description
Changelog added Added this changelog to the documentation.

* In most cases, deprecated attributes will remain available in exports for at least six months.