The Jobport API provides a robust and flexible interface for managing your data in Jobport.
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.
Use this base URL for all requests unless instructed otherwise:
https://api.services.jobport.nl/public/v1/
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"
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.
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 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.
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.
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.
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.
If you encounter issues with the API, or want to suggest improvements, please let us know at https://www.jobport.nl/contact.
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.
To create signed JWTs, you will receive from us:
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:
token = base64UrlEncode(header) + "." + base64UrlEncode(payload)signature = HMACSHA256(token, shared_secret)signed_token = token + "." + signatureYou 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
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.
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"
Use the token exchange endpoint when your application needs to perform actions on behalf of a user.
Use the one-time SSO URL endpoint to create a short-lived SSO URL that your user can use to log in to Jobport.
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.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
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 |
{- "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"
}{- "access_token": "eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2NvbnRleHRfaWQiOiIyYjFiNTE1MS03OGY2LTQ3NDctOWMzNy1lMDFhMmVhNDdhNzYiLCJ1c2VyX2lkIjoiMDlhMmZiMGYtMTA4MC00MDVjLTllMmItZWZhOGI2MDg1YWY0IiwiYXBwX2lkIjoiNTVmOTIxZGUtOWUzOC00NjgwLTk5OGItMmYwOWMxYzNmMTM5IiwiZXhwIjoxNjgwODgyMDgyLCJyZXF1ZXN0ZXIiOiJhcHAifQ.uSmC6t6g_2KcLFkvDHl1phnO7qtWr_HYgQMw7QUHCtc",
- "issued_token_type": "urn:ietf:params:oauth:token-type:jwt",
- "expires_in": 3600,
- "token_type": "Bearer"
}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 a short-lived one-time SSO URL for a user context.
| 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. |
{- "data": {
- "id": "92cfceb39d57d914ed8b14d0e37643de0797ae56",
- "type": "one_time_urls",
}
}Returns a single user context for the specified organization.
| 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. |
{- "data": {
- "id": "932a506c-03f9-4178-b2b4-cdc8e46229c7",
- "type": "user_contexts",
- "attributes": {
- "name": "John Doe",
- "organization_name": "Big Business BV",
- "role_type": "client"
}
}, - "jsonapi": {
- "version": "1.0"
}
}Returns a list of conversations for the specified user context.
| user_context_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the user context. |
| filter[] | Array of strings Example: filter[]=hidden Filters to query specific conversations.
| ||||||||
| 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. |
| X-Request-Id | string <uuid> Example: 2bcef744-8c44-4595-9e1c-55c8a275e140 The ID of the request/response for logging through a chain of requests. |
{- "data": [
- {
- "id": "aeeb4ecc-715c-45a2-8240-dfd7e856db74:0df21c85-54f5-4ce9-be17-4a2fb63e958c",
- "type": "conversations",
- "attributes": {
- "subject": "Voortgang sollicitatie",
- "participant_names": [
- "Cornelis Coach"
], - "last_event_at": "2023-12-19T20:49:23+02:00",
- "is_read": true
},
}
], - "links": {
- "self": "/public/v1/resources/",
- "first": "/public/v1/resources/?page=1&page_size=20",
- "last": "/public/v1/resources/?page=4&page_size=20"
}, - "meta": {
- "page": 1,
- "page_size": 20,
- "total": 0
}, - "jsonapi": {
- "version": "1.0"
}
}Returns a single conversation for the specified user context.
| 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. |
| X-Request-Id | string <uuid> Example: 2bcef744-8c44-4595-9e1c-55c8a275e140 The ID of the request/response for logging through a chain of requests. |
{- "data": {
- "id": "aeeb4ecc-715c-45a2-8240-dfd7e856db74:0df21c85-54f5-4ce9-be17-4a2fb63e958c",
- "type": "conversations",
- "attributes": {
- "subject": "Voortgang sollicitatie",
- "participant_names": [
- "Cornelis Coach"
], - "last_event_at": "2023-12-19T20:49:23+02:00",
- "is_read": true
},
}, - "meta": { },
- "jsonapi": {
- "version": "1.0"
}
}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.
Returns a list of dossiers for the specified organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
| filter[] | Array of strings Example: filter[]=email:john.doe@example.org&filter[]=email:jane.doe@example.org Filters to query specific dossiers.
| ||||||||||||
| 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. |
{- "data": [
- {
- "id": "fd2f1835-3b06-4653-91b4-c4b2ad10f012",
- "type": "dossiers",
- "attributes": {
- "archive_at": "2025-06-02T12:00:00Z",
- "archived_at": "2025-06-01T15:30:00Z",
- "created_at": "2025-05-01T09:00:00Z",
- "name": "John Doe",
- "send_invitation_at": "2025-06-02T13:00:00Z",
- "user_last_seen_at": "2025-06-02T14:00:00Z"
}, - "relationships": {
- "track": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "user_context": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
], - "links": {
- "self": "/public/v1/resources/",
- "first": "/public/v1/resources/?page=1&page_size=20",
- "last": "/public/v1/resources/?page=4&page_size=20"
}, - "meta": {
- "page": 1,
- "page_size": 20,
- "total": 0
}, - "jsonapi": {
- "version": "1.0"
}
}Creates a new dossier for the specified organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
object |
{- "data": {
- "type": "dossiers",
- "attributes": {
- "administration_number": "123456789",
- "archive_at": "2025-06-30T12:00:00Z",
- "email": "candidate@example.com",
- "name": "John Doe",
- "send_invitation_at": "2025-06-15T09:00:00Z",
- "postal_code": "1234AB"
}, - "relationships": {
- "track": {
- "data": {
- "id": "66009647-d0ae-438a-af37-4cd9b64c64b0",
- "type": "tracks"
}
}, - "coaches": {
- "data": [
- {
- "id": "8faf1298-bad5-40c6-96a0-d87fe65938bd",
- "type": "memberships"
}
]
}
}
}
}{- "data": {
- "id": "fd2f1835-3b06-4653-91b4-c4b2ad10f012",
- "type": "dossiers",
- "attributes": {
- "archive_at": "2025-06-02T12:00:00Z",
- "archived_at": "2025-06-01T15:30:00Z",
- "created_at": "2025-05-01T09:00:00Z",
- "name": "John Doe",
- "send_invitation_at": "2025-06-02T13:00:00Z",
- "user_last_seen_at": "2025-06-02T14:00:00Z"
}, - "relationships": {
- "track": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "user_context": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
}Returns a single dossier for the specified organization by dossier ID.
| 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 |
{- "data": {
- "id": "fd2f1835-3b06-4653-91b4-c4b2ad10f012",
- "type": "dossiers",
- "attributes": {
- "archive_at": "2025-06-02T12:00:00Z",
- "archived_at": "2025-06-01T15:30:00Z",
- "created_at": "2025-05-01T09:00:00Z",
- "name": "John Doe",
- "send_invitation_at": "2025-06-02T13:00:00Z",
- "user_last_seen_at": "2025-06-02T14:00:00Z"
}, - "relationships": {
- "track": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "user_context": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
}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.
| 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 |
object |
{- "data": {
- "type": "user_contexts",
- "attributes": {
- "provider_id": "custom_provider",
- "provider_identity_identifier": "123456789"
}
}
}{- "data": {
- "id": "932a506c-03f9-4178-b2b4-cdc8e46229c7",
- "type": "user_contexts",
- "attributes": {
- "name": "John Doe",
- "organization_name": "Big Business BV",
- "role_type": "client"
}
}
}Returns a list of employers for the specified organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
| filter[] | Array of strings Example: filter[]=name:Jobport&filter[]=archived:false Filters to query specific employers.
| ||||||||||||||||||||
| 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. |
{- "data": [
- {
- "id": "e5d5c188-cbe2-4d49-8e9e-5523c3d384c6",
- "type": "employers",
- "attributes": {
- "name": "Jobport",
- "description": "Jobport is an Information Technology & Services company that specializes in developing and providing employability software.",
- "street": "Emmasingel",
- "house_number": "33",
- "postal_code": "5611 AZ",
- "city": "Eindhoven",
- "country_code": "NL",
- "legal_form": "BV",
- "national_id": "12345678",
- "national_branch_id": "123456789012",
- "archived": false,
- "custom_fields": { }
}, - "relationships": {
- "primary_account_manager": {
- "data": {
- "id": "08cc1ece-8756-4028-a4f8-92383cef1bc5",
- "type": "members"
}
}
}
}
], - "links": {
- "self": "/public/v1/resources/",
- "first": "/public/v1/resources/?page=1&page_size=20",
- "last": "/public/v1/resources/?page=4&page_size=20"
}, - "meta": {
- "page": 1,
- "page_size": 20,
- "total": 0
}, - "jsonapi": {
- "version": "1.0"
}
}Returns a list of notifications for the specified user context.
| user_context_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the user context. |
| filter[] | Array of strings Example: filter[]=read Filters to query specific notifications.
| ||||||||
| 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. |
| X-Request-Id | string <uuid> Example: 2bcef744-8c44-4595-9e1c-55c8a275e140 The ID of the request/response for logging through a chain of requests. |
{- "data": [
- {
- "id": "0df21c85-54f5-4ce9-be17-4a2fb63e958c",
- "type": "notifications",
- "attributes": {
- "title": "Download staat klaar",
- "is_read": true,
- "created_at": "2023-12-19T20:49:23+02:00",
- "updated_at": "2023-12-19T20:49:23+02:00"
},
}
], - "links": {
- "self": "/public/v1/resources/",
- "first": "/public/v1/resources/?page=1&page_size=20",
- "last": "/public/v1/resources/?page=4&page_size=20"
}, - "meta": {
- "page": 1,
- "page_size": 20,
- "total": 0
}, - "jsonapi": {
- "version": "1.0"
}
}Returns a single notification for the specified user context.
| 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. |
| X-Request-Id | string <uuid> Example: 2bcef744-8c44-4595-9e1c-55c8a275e140 The ID of the request/response for logging through a chain of requests. |
{- "data": {
- "id": "0df21c85-54f5-4ce9-be17-4a2fb63e958c",
- "type": "notifications",
- "attributes": {
- "title": "Download staat klaar",
- "is_read": true,
- "created_at": "2023-12-19T20:49:23+02:00",
- "updated_at": "2023-12-19T20:49:23+02:00"
},
}, - "meta": { },
- "jsonapi": {
- "version": "1.0"
}
}Returns a list of employer vacancies for the specified organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
| 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. |
{- "data": [
- {
- "id": "5f7e87f6-c89c-44de-b9f7-e29860ca90aa",
- "type": "employer_vacancies",
- "attributes": {
- "contact_through": "account_manager",
- "title": "Klantgerichte medewerker gezocht voor de klantenservice",
- "postal_code": "5611 AZ",
- "city": "Amsterdam",
- "education_level": "basic_education",
- "hours_per_week_max": 40,
- "hours_per_week_min": 32,
- "starts_at": "2025-01-01",
- "ends_at": "2025-06-30",
- "description": "We zoeken een enthousiaste _medewerker klantenservice_ die ons team komt versterken.",
- "published": true,
- "work_types": [
- "social",
- "conventional"
], - "archived": false,
- "custom_fields": {
- "pay_grade": 10
}
}, - "relationships": {
- "employer": {
- "data": {
- "id": "c888a1fd-de7c-430a-8f83-19c6bfa8105b",
- "type": "employers"
}
}, - "contact": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}, - "contact_management": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}, - "contact_recruitment": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}
}
}
], - "links": {
- "self": "/public/v1/resources/",
- "first": "/public/v1/resources/?page=1&page_size=20",
- "last": "/public/v1/resources/?page=4&page_size=20"
}, - "meta": {
- "page": 1,
- "page_size": 20,
- "total": 0
}, - "jsonapi": {
- "version": "1.0"
}
}Create an employer vacancy for the specified organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
object |
{- "data": {
- "type": "employer_vacancies",
- "attributes": {
- "contact_through": "account_manager",
- "title": "Klantgerichte medewerker gezocht voor de klantenservice",
- "postal_code": "5611 AZ",
- "city": "Amsterdam",
- "education_level": "basic_education",
- "hours_per_week_max": 40,
- "hours_per_week_min": 32,
- "starts_at": "2025-01-01",
- "ends_at": "2025-06-30",
- "description": "We zoeken een enthousiaste _medewerker klantenservice_ die ons team komt versterken.",
- "published": true,
- "work_types": [
- "social",
- "conventional"
], - "archived": false,
- "custom_fields": {
- "pay_grade": 10
}
}, - "relationships:": {
- "employer": {
- "data": {
- "id": "c888a1fd-de7c-430a-8f83-19c6bfa8105b",
- "type": "employers"
}
}, - "contact": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}, - "contact_management": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}, - "contact_recruitment": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}
}
}
}{- "data": {
- "id": "5f7e87f6-c89c-44de-b9f7-e29860ca90aa",
- "type": "employer_vacancies",
- "attributes": {
- "contact_through": "account_manager",
- "title": "Klantgerichte medewerker gezocht voor de klantenservice",
- "postal_code": "5611 AZ",
- "city": "Amsterdam",
- "education_level": "basic_education",
- "hours_per_week_max": 40,
- "hours_per_week_min": 32,
- "starts_at": "2025-01-01",
- "ends_at": "2025-06-30",
- "description": "We zoeken een enthousiaste _medewerker klantenservice_ die ons team komt versterken.",
- "published": true,
- "work_types": [
- "social",
- "conventional"
], - "archived": false,
- "custom_fields": {
- "pay_grade": 10
}
}, - "relationships": {
- "employer": {
- "data": {
- "id": "c888a1fd-de7c-430a-8f83-19c6bfa8105b",
- "type": "employers"
}
}, - "contact": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}, - "contact_management": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}, - "contact_recruitment": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}
}
}
}Returns a single employer vacancy for the specified organization by employer vacancy ID.
| 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 |
{- "data": {
- "id": "5f7e87f6-c89c-44de-b9f7-e29860ca90aa",
- "type": "employer_vacancies",
- "attributes": {
- "contact_through": "account_manager",
- "title": "Klantgerichte medewerker gezocht voor de klantenservice",
- "postal_code": "5611 AZ",
- "city": "Amsterdam",
- "education_level": "basic_education",
- "hours_per_week_max": 40,
- "hours_per_week_min": 32,
- "starts_at": "2025-01-01",
- "ends_at": "2025-06-30",
- "description": "We zoeken een enthousiaste _medewerker klantenservice_ die ons team komt versterken.",
- "published": true,
- "work_types": [
- "social",
- "conventional"
], - "archived": false,
- "custom_fields": {
- "pay_grade": 10
}
}, - "relationships": {
- "employer": {
- "data": {
- "id": "c888a1fd-de7c-430a-8f83-19c6bfa8105b",
- "type": "employers"
}
}, - "contact": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}, - "contact_management": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}, - "contact_recruitment": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}
}
}
}Update a single employer vacancy for the specified organization by employer vacancy ID.
| 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 |
object |
{- "data": {
- "type": "employer_vacancies",
- "attributes": {
- "contact_through": "account_manager",
- "title": "Klantgerichte medewerker gezocht voor de klantenservice",
- "postal_code": "5611 AZ",
- "city": "Amsterdam",
- "education_level": "basic_education",
- "hours_per_week_max": 40,
- "hours_per_week_min": 32,
- "starts_at": "2025-01-01",
- "ends_at": "2025-06-30",
- "description": "We zoeken een enthousiaste _medewerker klantenservice_ die ons team komt versterken.",
- "published": true,
- "work_types": [
- "social",
- "conventional"
], - "archived": false,
- "custom_fields": {
- "pay_grade": 10
}
}, - "relationships": {
- "employer": {
- "data": {
- "id": "c888a1fd-de7c-430a-8f83-19c6bfa8105b",
- "type": "employers"
}
}, - "contact": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}, - "contact_management": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}, - "contact_recruitment": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}
}
}
}{- "data": {
- "id": "5f7e87f6-c89c-44de-b9f7-e29860ca90aa",
- "type": "employer_vacancies",
- "attributes": {
- "contact_through": "account_manager",
- "title": "Klantgerichte medewerker gezocht voor de klantenservice",
- "postal_code": "5611 AZ",
- "city": "Amsterdam",
- "education_level": "basic_education",
- "hours_per_week_max": 40,
- "hours_per_week_min": 32,
- "starts_at": "2025-01-01",
- "ends_at": "2025-06-30",
- "description": "We zoeken een enthousiaste _medewerker klantenservice_ die ons team komt versterken.",
- "published": true,
- "work_types": [
- "social",
- "conventional"
], - "archived": false,
- "custom_fields": {
- "pay_grade": 10
}
}, - "relationships": {
- "employer": {
- "data": {
- "id": "c888a1fd-de7c-430a-8f83-19c6bfa8105b",
- "type": "employers"
}
}, - "contact": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}, - "contact_management": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}, - "contact_recruitment": {
- "data": {
- "id": "6360dbc8-987b-4b20-8928-ae6f950d8008",
- "type": "contacts"
}
}
}
}
}Delete a single employer vacancy for the specified organization by employer vacancy ID.
| 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 |
{- "message": "Unauthorized: Signature verification failed"
}Returns a list of saved vacancies for the specified organization and dossier.
| 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 |
| filter[] | Array of strings Example: filter[]=recent_activity&filter[]=vacancy_type:external Filters to query specific saved vacancies.
| ||||||||||||
| include[] | Array of strings Items Enum: "vacancy" "vacancy_state" Example: include[]=vacancy&include[]=vacancy_state Include related resources in the response. |
{- "data": [
- {
- "id": "309f3433-fdee-40c5-8aff-b243f06939da",
- "type": "saved_vacancies",
- "attributes": {
- "created_at": "2024-12-19T20:49:23+02:00",
- "updated_at": "2024-12-19T21:49:23+02:00"
}, - "relationships": {
- "dossier": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "vacancy": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "vacancy_state": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
], - "links": {
- "self": "/public/v1/resources/",
- "first": "/public/v1/resources/?page=1&page_size=20",
- "last": "/public/v1/resources/?page=4&page_size=20"
}, - "meta": {
- "page": 1,
- "page_size": 20,
- "total": 0
}, - "jsonapi": {
- "version": "1.0"
}
}Returns a single saved vacancy.
| saved_vacancy_id required | string Example: 5be31c5a-d46b-497d-83c1-69a9dd40147b The ID of the saved vacancy to retrieve. |
| include[] | Array of strings Items Enum: "vacancy" "vacancy_state" Example: include[]=vacancy&include[]=vacancy_state Include related resources in the response. |
{- "data": {
- "id": "309f3433-fdee-40c5-8aff-b243f06939da",
- "type": "saved_vacancies",
- "attributes": {
- "created_at": "2024-12-19T20:49:23+02:00",
- "updated_at": "2024-12-19T21:49:23+02:00"
}, - "relationships": {
- "dossier": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "vacancy": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "vacancy_state": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}, - "links": {
- "self": "/public/v1/resources/",
- "first": "/public/v1/resources/?page=1&page_size=20",
- "last": "/public/v1/resources/?page=4&page_size=20"
}, - "meta": {
- "page": 1,
- "page_size": 20,
- "total": 0
}, - "jsonapi": {
- "version": "1.0"
}
}Returns a list of saved vacancy activities for the specified organization and dossier.
| 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 |
| filter[] | Array of strings Example: filter[]=after:2024-01-01&filter[]=vacancy_type:external Filters to query specific activities.
| ||||||||||||||||
| sort | string Default: "event_at" Enum: "event_at" "-event_at" Example: sort=-event_at Attributes to sort on |
{- "data": [
- {
- "id": "e69a80d6-a3a2-4bff-8ffd-486bd6edb62b",
- "type": "saved_vacancy_activities",
- "attributes": {
- "event_at": "2024-12-19T20:49:23+02:00",
- "from_state": "e8583a2a-2f13-4fbb-be05-b1a4b231379e",
- "to_state": "b1a4b231-379e-e858-2f13-4fbb-be05-b1a4"
}, - "relationships": {
- "saved_vacancy": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
], - "links": {
- "self": "/public/v1/resources/",
- "first": "/public/v1/resources/?page=1&page_size=20",
- "last": "/public/v1/resources/?page=4&page_size=20"
}, - "meta": {
- "page": 1,
- "page_size": 20,
- "total": 0
}, - "jsonapi": {
- "version": "1.0"
}
}Returns a list of activities for the specified saved vacancy.
| 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. |
| filter[] | Array of strings Example: filter[]=after:2024-01-01&filter[]=vacancy_type:external Filters to query specific activities.
| ||||||||||||||||
| sort | string Default: "event_at" Enum: "event_at" "-event_at" Example: sort=-event_at Attributes to sort on |
{- "data": [
- {
- "id": "e69a80d6-a3a2-4bff-8ffd-486bd6edb62b",
- "type": "saved_vacancy_activities",
- "attributes": {
- "event_at": "2024-12-19T20:49:23+02:00",
- "from_state": "e8583a2a-2f13-4fbb-be05-b1a4b231379e",
- "to_state": "b1a4b231-379e-e858-2f13-4fbb-be05-b1a4"
}, - "relationships": {
- "saved_vacancy": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
], - "links": {
- "self": "/public/v1/resources/",
- "first": "/public/v1/resources/?page=1&page_size=20",
- "last": "/public/v1/resources/?page=4&page_size=20"
}, - "meta": {
- "page": 1,
- "page_size": 20,
- "total": 0
}, - "jsonapi": {
- "version": "1.0"
}
}Retrieve vacancy states.
| 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. |
{- "data": [
- {
- "id": "300cc338-d74c-4b20-aea7-522c8c3e64fb",
- "type": "vacancy_states",
- "attributes": {
- "code": "applied",
- "label": "Gesolliciteerd",
- "description": "Gesolliciteerd"
}
}
], - "links": {
- "self": "/public/v1/resources/",
- "first": "/public/v1/resources/?page=1&page_size=20",
- "last": "/public/v1/resources/?page=4&page_size=20"
}, - "meta": {
- "page": 1,
- "page_size": 20,
- "total": 0
}, - "jsonapi": {
- "version": "1.0"
}
}Returns a single Vacancy State
| vacancy_state_id required | string <uuid> Example: fb36242f-fcb1-4a0b-bd46-7f3f621a4f82 The ID of the vacancy state |
{- "data": {
- "id": "300cc338-d74c-4b20-aea7-522c8c3e64fb",
- "type": "vacancy_states",
- "attributes": {
- "code": "applied",
- "label": "Gesolliciteerd",
- "description": "Gesolliciteerd"
}
}
}Returns a list of contacts for the specified organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
| filter[] | Array of strings Example: filter[]=q:doe&filter[]=archived:false Filters to query specific contacts.
| ||||||||||||||||||||
| 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. |
{- "data": [
- {
- "id": "db94b3d8-6441-4b30-8643-370ecb96b23d",
- "type": "contacts",
- "attributes": {
- "email": "jane.doe@example.com",
- "name": "Jane Doe",
- "notes": "Prefers to be contacted by email.",
- "phone_number": "+31 (0) 6 1234 5678",
- "archived": false
}, - "relationships": {
- "employer": {
- "data": {
- "id": "c888a1fd-de7c-430a-8f83-19c6bfa8105b",
- "type": "employers"
}
}
}
}
], - "links": {
- "self": "/public/v1/resources/",
- "first": "/public/v1/resources/?page=1&page_size=20",
- "last": "/public/v1/resources/?page=4&page_size=20"
}, - "meta": {
- "page": 1,
- "page_size": 20,
- "total": 0
}, - "jsonapi": {
- "version": "1.0"
}
}Create a contact for the specified organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
object |
{- "data": {
- "type": "contacts",
- "attributes": {
- "email": "jane.doe@example.com",
- "name": "Jane Doe",
- "notes": "Prefers to be contacted by email.",
- "phone_number": "+31 (0) 6 1234 5678",
- "archived": false
}, - "relationships": {
- "employer": {
- "data": {
- "id": "c888a1fd-de7c-430a-8f83-19c6bfa8105b",
- "type": "employers"
}
}
}
}
}{- "data": {
- "id": "db94b3d8-6441-4b30-8643-370ecb96b23d",
- "type": "contacts",
- "attributes": {
- "email": "jane.doe@example.com",
- "name": "Jane Doe",
- "notes": "Prefers to be contacted by email.",
- "phone_number": "+31 (0) 6 1234 5678",
- "archived": false
}, - "relationships": {
- "employer": {
- "data": {
- "id": "c888a1fd-de7c-430a-8f83-19c6bfa8105b",
- "type": "employers"
}
}
}
}
}Returns a single contact for the specified organization by contact ID.
| 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 |
{- "data": {
- "id": "db94b3d8-6441-4b30-8643-370ecb96b23d",
- "type": "contacts",
- "attributes": {
- "email": "jane.doe@example.com",
- "name": "Jane Doe",
- "notes": "Prefers to be contacted by email.",
- "phone_number": "+31 (0) 6 1234 5678",
- "archived": false
}, - "relationships": {
- "employer": {
- "data": {
- "id": "c888a1fd-de7c-430a-8f83-19c6bfa8105b",
- "type": "employers"
}
}
}
}
}Update a single contact for the specified organization by contact ID.
| 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 |
object |
{- "data": {
- "type": "contacts",
- "attributes": {
- "email": "jane.doe@example.com",
- "name": "Jane Doe",
- "notes": "Prefers to be contacted by email.",
- "phone_number": "+31 (0) 6 1234 5678",
- "archived": false
}, - "relationships": {
- "employer": {
- "data": {
- "id": "c888a1fd-de7c-430a-8f83-19c6bfa8105b",
- "type": "employers"
}
}
}
}
}{- "data": {
- "id": "db94b3d8-6441-4b30-8643-370ecb96b23d",
- "type": "contacts",
- "attributes": {
- "email": "jane.doe@example.com",
- "name": "Jane Doe",
- "notes": "Prefers to be contacted by email.",
- "phone_number": "+31 (0) 6 1234 5678",
- "archived": false
}, - "relationships": {
- "employer": {
- "data": {
- "id": "c888a1fd-de7c-430a-8f83-19c6bfa8105b",
- "type": "employers"
}
}
}
}
}Delete a single contact for the specified organization by contact ID.
| 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 |
{- "message": "Unauthorized: Signature verification failed"
}Returns a list of tracks for the specified organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
| 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. |
{- "data": [
- {
- "id": "fd2f1835-3b06-4653-91b4-c4b2ad10f012",
- "type": "tracks",
- "attributes": {
- "name": "Traject met Jobport toegang",
- "description": "Traject waarbij de kandidaat toegang krijgt"
}
}
], - "links": {
- "self": "/public/v1/resources/",
- "first": "/public/v1/resources/?page=1&page_size=20",
- "last": "/public/v1/resources/?page=4&page_size=20"
}, - "meta": {
- "page": 1,
- "page_size": 20,
- "total": 0
}, - "jsonapi": {
- "version": "1.0"
}
}Returns a single track for the specified organization by track ID.
| 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 |
{- "data": {
- "id": "fd2f1835-3b06-4653-91b4-c4b2ad10f012",
- "type": "tracks",
- "attributes": {
- "name": "Traject met Jobport toegang",
- "description": "Traject waarbij de kandidaat toegang krijgt"
}
}
}Returns a list of custom fields for the specified organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
| filter[] | Array of strings Example: filter[]=customizable_type:EmployerVacancy Filters to query specific custom fields.
| ||||||||
| 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. |
{- "data": [
- {
- "id": "423af44c-dff5-43a3-840d-07bc96762322",
- "type": "custom_fields",
- "attributes": {
- "code": "pay_grade",
- "label": "Salarisschaal",
- "type": "select",
- "customizable_types": [
- "EmployerVacancy"
], - "default_value": "Onbekend",
- "settings": {
- "minimum_characters": 1,
- "maximum_characters": 255
}
}
}
], - "links": {
- "self": "/public/v1/resources/",
- "first": "/public/v1/resources/?page=1&page_size=20",
- "last": "/public/v1/resources/?page=4&page_size=20"
}, - "meta": {
- "page": 1,
- "page_size": 20,
- "total": 0
}, - "jsonapi": {
- "version": "1.0"
}
}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:APItext/csv for CSVAlternatively, you can use an extension in the URL to specify the format: append .json or .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 dossiers of an organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "0df21c85-54f5-4ce9-be17-4a2fb63e958c",
- "type": "dossiers",
- "attributes": {
- "created_at": "2023-12-19T20:49:23+02:00",
- "archived_at": "2023-12-19T20:49:23+02:00",
- "candidate_access": {
- "status": "none",
- "status_changed_at": "2023-12-19T20:49:23Z",
- "granted_at": "2023-12-19T20:49:23Z",
- "revoked_at": "2023-12-20T10:15:00Z",
- "last_activity_at": "2023-12-21T08:30:00Z",
- "delete_scheduled_at": "2031-12-22T12:00:00Z"
}, - "administration_number": "123456787",
- "custom_fields": [
- {
- "id": "doelgroep",
- "values": [
- "bbl"
]
}
], - "direct_contact": false
}, - "relationships": {
- "track": {
- "data": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}, - "profile": {
- "data": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}, - "showrooms": {
- "data": [
- {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
]
}, - "coaches": {
- "data": [
- {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
]
}, - "primary_coach": {
- "data": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
}
], - "jsonapi": {
- "version": "1.0"
}
}Export profiles of an organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "0df21c85-54f5-4ce9-be17-4a2fb63e958c",
- "type": "profiles",
- "attributes": {
- "postal_code": "9161AE",
- "education_level_soft": "mbo_4",
- "publish_profile": false,
- "completed_percentage": 95,
- "interests": [
- "artistic",
- "investigative"
], - "certificates": [
- "bhv",
- "taxipas",
- "heftruck"
], - "driving_licenses": [
- "a",
- "b"
], - "skills": [
- "monitoring",
- "installation",
- "active_learning",
- "learning_strategies",
- "operation_monitoring"
], - "favorite_occupations": [
- "onet:29-1122"
], - "favorite_sectors": [
- "jobfeed:profession_class:4",
- "jobfeed:profession_class:23",
- "jobfeed:profession_class:3",
- "jobfeed:profession_class:9",
- "jobfeed:profession_class:17",
- "jobfeed:profession_class:14"
]
}, - "relationships": {
- "educations": {
- "data": [
- {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
]
}
}
}
], - "jsonapi": {
- "version": "1.0"
}
}Export educations used in profiles of an organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "0df21c85-54f5-4ce9-be17-4a2fb63e958c",
- "type": "educations",
- "attributes": {
- "abroad": false,
- "current": false,
- "description": "This is a description",
- "end_date": "2021",
- "graduated": false,
- "level": "mbo_4",
- "location": "Eindhoven",
- "organization": "NTI",
- "start_date": "2019",
- "title": "MBO Business Administration & Control Specialist",
- "created_at": "2023-12-19T20:49:23+02:00"
}, - "relationships": {
- "profile": {
- "data": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
}
], - "jsonapi": {
- "version": "1.0"
}
}Export members of an organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "0df21c85-54f5-4ce9-be17-4a2fb63e958c",
- "type": "members",
- "attributes": {
- "created_at": "2023-12-19T20:49:23+02:00",
- "archived_at": "2023-12-19T20:49:23+02:00",
- "name": "John Doe",
- "email": "johndoe@example.com",
- "administration_number": "A12345",
- "access": {
- "status": "active",
- "granted_at": "2023-12-19T20:49:23+02:00",
- "revoked_at": null,
- "last_activity_at": "2024-01-10T15:00:00+02:00"
}, - "roles": {
- "account_manager": true,
- "administrator": false,
- "coach": true
}
}
}
], - "jsonapi": {
- "version": "1.0"
}
}Export contacts of an organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "c1a2b3d4-5678-90ab-cdef-1234567890ab",
- "type": "contacts",
- "attributes": {
- "name": "Jane Doe",
- "email": "jane.doe@example.com",
- "phone_number": "+31 6 12345678",
- "access": {
- "status": "active",
- "granted_at": "2025-06-16T10:00:00+02:00",
- "revoked_at": null,
- "last_activity_at": "2025-06-16T12:00:00+02:00"
}, - "created_at": "2025-06-01T09:00:00+02:00",
- "archived_at": null,
- "deleted_at": null
}, - "relationships": {
- "employer": {
- "data": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
}
], - "jsonapi": {
- "version": "1.0"
}
}Export notes of an organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "be811f91-21fb-4ea6-ac9f-ab4731b80331",
- "type": "notes",
- "attributes": {
- "category_name": "online_meeting",
- "human_category_name": "Afspraak (digitaal)",
- "human_subject_type": "Kandidaat",
- "text": "Kandidaat gesproken over zus en zo. Gemaakte afspraken: dit en dat.",
- "title": "Kandidaat gesproken",
- "created_at": "2025-06-01T09:00:00+02:00",
- "updated_at": "2025-06-16T10:00:00+02:00"
}, - "relationships": {
- "author": {
- "data": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}, - "subject": {
- "data": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
}
], - "jsonapi": {
- "version": "1.0"
}
}Export placements for an organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "db979a41-bfb6-4a42-8f04-53d1efeff360",
- "type": "placements",
- "attributes": {
- "created_at": "2025-06-01T09:00:00+02:00",
- "custom_fields": [
- {
- "id": "industry_type",
- "values": [
- "IT",
- "Consulting"
]
}
], - "ends_at": "2026-04-12",
- "hours_weekly": 36,
- "starts_at": "2025-02-05",
- "vacancy_type": "employer_vacancy",
- "current": true
}, - "relationships": {
- "created_by": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "dossier": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "employer": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "employer_vacancy": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
], - "jsonapi": {
- "version": "1.0"
}
}Export employer vacancies of an organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "55db91b5-c324-499c-973f-d959bfccf579",
- "type": "employer_vacancies",
- "attributes": {
- "contact_options": {
- "via_employer": true
}, - "created_by_contact": true,
- "custom_fields": [
- {
- "id": "field_code",
- "values": [
- "value1",
- "value2"
]
}
], - "description": "Responsible for developing and maintaining software applications.",
- "education_level": {
- "code": "basic_education",
- "label": "basisonderwijs"
}, - "ends_at": "2025-06-30",
- "hours_per_week": {
- "label": "32 - 40 uur/week",
- "min": 32,
- "max": 40
}, - "location": {
- "city": "Eindhoven",
- "postal_code": "5611",
- "lat": 51.438862,
- "lon": 5.475078
}, - "profession": {
- "label": "Software Engineer",
- "jobfeed_code": 12345
}, - "starts_at": "2025-06-25",
- "title": "Software Engineer",
- "published": true,
- "work_types": [
- "technical",
- "administrative"
], - "work_styles": [
- "independent",
- "teamwork"
], - "accessible_by_public_transport": true,
- "driving_licenses": [
- "B",
- "C"
], - "work_environments": [
- "indoor",
- "outdoor"
], - "transport_modes": [
- "car",
- "bike"
], - "work_schedules": [
- "business_hours",
- "evenings"
], - "number_of_seats": 3,
- "foreign_languages": [
- "en",
- "de",
- "fr"
], - "language_nl": {
- "reading": 1,
- "writing": 0,
- "speaking": 2,
- "understanding": 1
}, - "created_at": "2025-06-01T09:00:00+02:00",
- "archived_at": "2023-12-19T20:49:23+02:00"
}, - "relationships": {
- "employer": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "contact": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "contact_management": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "contact_recruitment": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "account_manager": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
], - "jsonapi": {
- "version": "1.0"
}
}Export employer vacancy dossiers for an organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "789e49a8-8f3b-4c26-8b8b-7d672fadaa92",
- "type": "employer_vacancy_dossiers",
- "attributes": {
- "created_at": "2025-06-01T09:00:00+02:00",
- "shared_with_employer_at": "2025-06-02T09:00:00+02:00",
- "status": "interested",
- "notes": "Kandidaat besproken; vervolgstappen ..."
}, - "relationships": {
- "employer_vacancy": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "dossier": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
], - "jsonapi": {
- "version": "1.0"
}
}Export showrooms for an organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "606276ab-987c-4aab-b20b-9cc62c2656a1",
- "type": "showrooms",
- "attributes": {
- "name": "Tech Talent Showroom",
- "internal": false,
- "contacts_allowed": true
}
}
], - "jsonapi": {
- "version": "1.0"
}
}Export employers of an organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "type": "employers",
- "attributes": {
- "name": "Big Business BV",
- "branch_total_employees": 12,
- "city": "Eindhoven",
- "custom_fields": [
- {
- "id": "industry_type",
- "values": [
- "IT",
- "Consulting"
]
}
], - "house_number": "12A",
- "latitude": 51.438862,
- "legal_form": "Besloten Vennootschap",
- "longitude": 5.475078,
- "national_branch_id": "123456789012",
- "national_id": "12345678",
- "postal_code": "5611AZ",
- "total_employees": 100,
- "sbi_codes": [
- "6201",
- "6321"
], - "street": "Emmastraat",
- "created_at": "2023-12-19T20:49:23+02:00",
- "archived_at": "2023-12-19T20:49:23+02:00"
}, - "relationships": {
- "account_managers": {
- "data": [
- {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
]
}, - "primary_account_manager": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}, - "account_manager": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
], - "jsonapi": {
- "version": "1.0"
}
}Export tasks of an organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "be811f91-21fb-4ea6-ac9f-ab4731b80331",
- "type": "tasks",
- "attributes": {
- "task_type": {
- "title": "Plaatsing",
- "code": "placement"
}, - "description": "Exit gesprek met kees ingeplannen.",
- "title": "nazorg",
- "completed_at": "2025-06-01T09:00:00+02:00",
- "expires_at": "2025-06-16T10:00:00+02:00",
- "created_at": "2025-06-01T09:00:00+02:00",
- "updated_at": "2025-06-16T10:00:00+02:00"
}, - "relationships": {
- "owner": {
- "data": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}, - "created_by": {
- "data": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}, - "completed_by": {
- "data": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}, - "subject": {
- "data": {
- "data": {
- "type": "type",
- "id": "d769a21b-b125-42a8-bd41-22debb5c1110"
}
}
}
}
}
], - "jsonapi": {
- "version": "1.0"
}
}Export tracks for an organization.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "type": "tracks",
- "attributes": {
- "name": "Re-integratietraject",
- "description": "Een traject gericht op re-integratie in het arbeidsproces."
}
}
], - "jsonapi": {
- "version": "1.0"
}
}Export sectors.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "0df21c85-54f5-4ce9-be17-4a2fb63e958c",
- "type": "taxonomy_sectors",
- "attributes": {
- "name": "Natuur- en milieuwetenschappen",
- "code": "jobfeed:profession_class:13",
- "published": true
}
}
], - "jsonapi": {
- "version": "1.0"
}
}Export occupations.
| organization_id required | string <uuid> Example: 0df21c85-54f5-4ce9-be17-4a2fb63e958c The ID of the organization. |
{- "data": [
- {
- "id": "0df21c85-54f5-4ce9-be17-4a2fb63e958c",
- "type": "taxonomy_occupations",
- "attributes": {
- "code": "onet:27-3041",
- "name": "Redacteur",
- "published": true
}
}
], - "jsonapi": {
- "version": "1.0"
}
}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.