REST API for ontavio career platforms
Job import specifications
Table of contents
1. General API Usage Information
Job board name | Shortcut | API base url |
---|---|---|
Karriere Südwestfalen | ksw | https://api.karriere-suedwestfalen.de/ |
Karriere Mittelhessen | kmh | https://api.karriere-mittelhessen.de/ |
Karriere Südniedersachsen | ksn | https://api.karriere-suedniedersachsen.de/ |
Karriere Metropole Ruhr | kmr | https://api.karriere-metropole-ruhr.de/ |
Karriere Bremen | khb | https://api.karriere-bremen.de/ |
Karriere Hamburg | khh | https://api.karriere-hamburg.de/ |
Karriere Nordhessen | knh | https://api.karriere-in-nordhessen.de/ |
Karriere Bergisches Land | kbl | https://api.karriere-bergisches-land.de/ |
Karriereportal Owl | kol | https://api.karriereportal-owl.de/ |
Syntax of this documentation
Depending on your specific goals, the routes you can use in this API can be adjusted to your needs.
In the beginning of each section is an overview of the available routes. Append the route name to the base URL to match the desired route.
Squared Brackets indicate that everything between them is not required for a successful processing.
Curly Braces indicate that you have to send data in the request URL.
General API Information
If you don’t send an ID with the URL for PUT- and DELETE-requests in many cases you need to specify the object you are referring to in the request body via object-ID or in case of a job offer via reference ID.
For POST- and PUT-Requests for a single offer it doesn't matter if you wrap them in an array or not.
Authentication
You need your company ID and your specific company API key to receive a JSON Web Token (JWT). Send it in the body of your request with the FormData-Interface. The JWT is valid for 60 seconds. To receive test credentials for development, contact our support.
Request | Route | Description |
---|---|---|
POST | v1/authenticate | Receive a JWT, which is used to identify yourself. Send it as Bearer token in the header with every Request. |
Key | Value |
---|---|
companyId | Your company ID |
apiKey | Your Company API Key |
2. Job offer
Request | Route | Description |
---|---|---|
GET | v1/import/joboffer[/{referenceId}] | Returns basic information about the requested job offer or of all company job offers |
POST | v1/import/joboffer | Creates one or more job offers |
PUT | v1/import/joboffer[/{referenceId}] | Updates one or more job offers |
DELETE | v1/import/joboffer[/{referenceId}] | Deletes one or more job offers |
For POST- and PUT-requests you can send the following data as JSON in the request body.
Tags (* required) | Data Type | Values | Default Value | Description |
---|---|---|---|---|
ref* | string|int | Import reference. Used to identify the offer | ||
description* | object | Contains the job offer text. See 5.1 | ||
title* | string | Offer title | ||
showReference | bool | true | Show reference number in the offer? | |
type | int|string|array |
1 or ‘job’ 2 or ‘apprenticeship’ 3 or ‘dual-study’ 4 or ‘internship’ 5 or ‘thesis’ |
1 - job | Sets the job type. If you send multiple in an array the first one gets shown, but the following values are recognized in the search. |
contract | int|string|array |
1 or ‘full time’ 2 or ‘part time’ 3 or ‘mini job’ 4 or ‘holiday job’ |
1 - full time | Sets the contract information. If you send multiple in an array the first one gets shown, but the following values are recognized in the search. |
applyUrl | string | If not provided, there will appear a form to the applicants and their documents will be sent to the contact person’s email. | Link to a website where the applicants can send their application. | |
startType | int|string |
1 or ‘immediately’ 2 or ‘date’ 3 or ‘agreement’ |
1 - immediately | When can the applicant start working? |
startFrom | string | Date on that the job can get started (format YYYY-MM-DD). Only relevant if startType has value 2. | ||
limitationType | int|string |
1 or ‘no’ 2 or ‘date’ 3 or ‘yes’ |
1 - no | Determine if an offer is limited in its time. |
limitationDate | string | Date to that the job is limited (format YYYY-MM-DD). Only relevant if limitationDate is 2. | ||
from | string | Date for automatic activation (format YYYY-MM-DD) | ||
to | string | Date for automatic deactivation (format YYYY-MM-DD) | ||
status | string | ‘active’ or ‘inactive’ | ‘active’ | Sets the status of a job offer |
portals | array|int|string | All company portals | Portals can get addressed by their ID or by their short cut through the API, see 3.5 | |
categories | array|string | Miscellaneous jobs | Provides one or more category IDs, see 4.1 for more information | |
leadership | bool | false | Is the offer for a leader role? | |
students | bool | false | Is the offer relevant for students? | |
totalCount | int | Sum of amounts of every received location, 1 if none are given | Total number of jobs over all given locations | |
benefits | array | All company benefits | Benefits of the offer. see 3.4 | |
workAtHome | bool | false | Is it allowed to work from home? | |
workAtHomeDays | int | false | Maximum number of days in a week on which can be worked from home | |
contactPersons | object|array | Company main contact person | Provides one or more contact persons, see 5.2 for more information | |
locations | object|array | Company main location | Provides one or more locations, see 5.3 for more information | |
uploads | object|array | Second image of company portrait | Provides one or more uploads, see 5.4 for more information | |
temporaryWork | object | Provides details for temporary work, see 5.5 for more information |
Locations are identified by their id or name. So, if there is a location saved in the company, that matches the received name or id, the further data gets ignored. If you want to change that data you have to update the location as described in 3.2.
The same applies for the contact persons, which are identified by id or email. There you can update that data as described in 3.1.
Example POST or PUT
[
{
"ref": "1292346-2022",
"title": "Worker in example job",
"description": {
"introHeadline": "Introduction Headline",
"introText": "This is an introduction text.",
"jobProfileText": "Job Profile Text. <strong>You can use HTML here.</strong>",
"applicantProfileText": "Applicant Profile Text",
"offerText": "Offer Text",
"contactText": "Contact Information"
},
"applyUrl": "https:www.examplewebsite.com/apply/for-this-job",
"startType": "date",
"startFrom": "2022-01-19",
"limitationType": "date",
"limitationDate": "2022-03-23",
"from": "2021-03-28",
"to": "2022-03-28",
"contract": 1,
"categories": [
"5d9debaf67a3b775bdc8c927",
"5d9debae67a3b775bdc8c91e"
],
"setReference": true,
"status": "active",
"portals": [
"ksw",
2,
4
],
"type": [
"apprenticeship",
"dual-study"
],
"leadership": false,
"students": true,
"contactPersons": [
{
"email": "contact.person@example.com",
"firstName": "Contact",
"lastName": "Person",
"position": "Leader of Example",
"image": "https://examplewebsite.com/400x300/000/ff0.png",
"salutation": "Herr",
"phone": "0160123456789",
"newsletter": false,
"persistent": true
},
{
"email": "existing.contact.person@example.com"
}
],
"locations": [
{
"name": "Main Location",
"amount": 1
},
{
"name": "New Location",
"street": "Hundemstr. 2",
"zip": "57368",
"city": "Lennestadt",
"logo": "https://linkToExampleImage.com/450x350/000/f0f.png",
"amount": 1,
"persistent": true
}
],
"uploads": {
"images": [
"https://linkToExampleImage.com/1200x600/000/ff0.png",
"https://linkToExampleImage.com/1250x550/000/ff0.jpg"
]
}
},
{
…
}
]
Example DELETE
For DELETE-requests either append the reference ID of the offer to the request URL or send an array of JSON-objects according to the following table in the request body.
Tags | Data Type | Description |
---|---|---|
ref* | string | Reference ID of the offer to delete. |
portals | array |
Array with portals from which the offer has to get deleted. If the field is not provided the offer gets deleted from all portals. Portals can get addressed by their portal ID or by their short cut, see 3.5 |
Example DELETE-request to delete the first offer from KSW and KMH, and the second one from all job boards
[
{
"ref": "123456789",
"portals": ["ksw", "kmh"]
},
{
"ref": "123456-2022"
},
{
…
}
]
3. Company Data
3.1 Contact Persons
Request | Route | Description |
---|---|---|
GET | v1/import/company/contact-persons[/{contactPersonId}] | Returns basic information about the requested contact person or of all company contact persons. |
POST | v1/import/company/contact-persons |
Creates one or more company contact persons. Send contact persons as described in 5.2 |
PUT | v1/import/company/contact-persons[/{contactPersonId}] |
Updates one or more company contact persons. Send contact persons as described in 5.2 |
DELETE | v1/import/company/contact-persons[/{contactPersonId}] | Deletes one or more company contact persons. |
Examples
POST/PUT
[
{
"email": "erika@example.com",
"firstName": "Erika",
"lastName": "Mustermann",
"salutation": "Frau",
"position": "Personalleitung",
"phone": "01234 / 123456",
"emailAlias": "e.mustermann@example.com",
"newsletter": false,
"cpCompanyPortrait": true,
"cpEmailCompanyPortrait": false,
"cpPhoneCompanyPortrait": false,
"cpEmailJoboffer": false,
"cpPhoneJoboffer": false
},
...
]
DELETE
[
{
"id": "621f6a03bdef404ecf3b20ca"
},
{
"id": "6220d1a6bdef404ecf3b2172"
},
...
]
3.2 Locations
Request | Route | Description |
---|---|---|
GET | v1/import/company/locations[/{locationId}] | Returns basic information about the requested contact person or of all company contact persons. |
POST | v1/import/company/locations |
Creates one or more company locations. Send locations as described in 5.3 |
PUT | v1/import/company/locations[/{locationId}] |
Updates one or more company locations. Send locations as described in 5.3 |
DELETE | v1/import/company/locations[/{locationId}] | Deletes one or more company locations. |
Examples
POST/PUT
[
{
"name": "Example Location",
"city": "ExampleCity",
"zip": 12345,
"street" : "Example street 10",
"region" : "Südwestfalen",
"logo" : "https://example.com/logo/1234.jpg",
}
...
]
DELETE
[
{
"id": "621f6a03bdef404ecfxxxxx"
},
{
"id": "6220d1a6bdef404ecf3xxxxx"
},
...
]
3.3 Company Uploads
Request | Route | Description |
---|---|---|
GET | v1/import/company/uploads | Returns basic information about all company uploads. Includes title, slug, type, file extension, ID, file hash and the times of the last update and the creation. |
3.4 Default Company Benefits
If you don’t want all default company benefits for a specific job offer you can send an array with all benefit IDs you want to add.
Request | Route | Description |
---|---|---|
GET | v1/import/company/benefits | Returns ID and name of the default company benefits. |
3.5 Company Job Boards
Request | Route | Description |
---|---|---|
GET | v1/import/company/jobboards | Returns ID, label, short cut and URL of all company job boards. |
4. Routes For General Information
4.1 Categories
Request | Route | Description |
---|---|---|
GET | v1/import/general/categories | Returns ID and Name of all categories. |
Currently we support following categories:, which you can reference via ID:
Category name | ID |
---|---|
Büro / Verwaltung / Finanzwesen | 5d9debae67a3b775bdc8c91e |
Handwerk | 5d9debaf67a3b775bdc8c927 |
Industrie / Produktion / Chemie | 5d9debaf67a3b775bdc8c928 |
Logistik | 5d9debaf67a3b775bdc8c929 |
Ingenieurwesen / Entwicklung / Konstruktion | 5d9debae67a3b775bdc8c91c |
Handel / Dienstleistung / Gastronomie | 5d9debaf67a3b775bdc8c926 |
Computer / IT / Technik | 5d9debae67a3b775bdc8c91b |
Marketing / Kommunikation / Design | 5d9debae67a3b775bdc8c91d |
Medizin / Gesundheit / Sozialwesen | 5d9debae67a3b775bdc8c91a |
Vertrieb / Verkauf | 5d9debaf67a3b775bdc8c923 |
Tourismus | 5d9debaf67a3b775bdc8c92a |
Kirche / Diakonie | 61fb9457e87a2cb15549f9c7 |
Sicherheitsdienstleistung / Security | 623d9701f7bad3aacd9ec1bf |
Assistenz / Aushilfen | 5d9debaf67a3b775bdc8c925 |
Aus- und Weiterbildung | 5d9debaf67a3b775bdc8c922 |
Sonstige Berufe | 5d9debaf67a3b775bdc8c924 |
The allowed tags in the description are "<h3>", "<ul>", "<ol>", "<li>", "<a>", "<b>", "<strong>", "<br>", "<p>" and "<small>".
Request | Route | Description |
---|---|---|
GET | v1/import/general/html-tags | Returns information on allowed HTML-tags in job offer descriptions. Every other tag gets stripped off. |
5. Object structure
5.1 Offer Description
You can use the HTML-tags described in 4.2 for the text parts.
If you don’t have data for every required text part, you have to send an empty string as corresponding value.
Tags (* required) | Data Type |
---|---|
introHeadline | string |
introText* | string |
jobProfileHeadline | string |
jobProfileText* | string |
applicantProfileHeadline | string |
applicantProfileText* | string |
offerHeadline | string |
offerText* | string |
contactHeadline | string |
contactText* | string |
5.2 Contact Person
Tags
*required **also required for new |
Data Type | Default Value | Description |
---|---|---|---|
id | string | Identification string | |
email* | string | Email address | |
firstName** | string | First name | |
lastName** | string | Last name | |
position | string | Position | |
image | string | Image of the contact person | |
salutation | string | Salutation | |
phone | string | Phone number | |
emailAlias | string | Public e-mail address. If not given, the email from the “email”-tag is shown | |
newsletter | bool | false | Receive newsletter |
cpCompanyPortrait | bool | true |
Show/hide contact person on company detail site. Not relevant for job offer import if persistent is false. |
cpEmailCompanyPortrait | bool | true | Show/hide email of the contact person in the company portrait. Not relevant for job offer import if persistent is false. |
cpPhoneCompanyPortrait | bool | true |
Show/hide phone number on company detail site. Not relevant for job offer import if persistent is false. |
cpPhoneJoboffer | bool | true | Show/hide phone number in job offer |
cpEmailJoboffer | bool | true | Show/hide email in job offer |
persistent | bool | false | Save the contact person in the company. If false, it will be created only for the current job offer. Only possible in job offer import. |
5.3 Location
Tags
*required **also required for new |
Data Type | Default Value | Description |
---|---|---|---|
id | string | Identification string | |
name* | string | Label | |
street | string | Street | |
zip** | string | Zip | |
city** | string | City | |
region | string | Region | |
logo | string | Company Logo | URL to location logo. |
amount | int | 1 | Number of jobs in the location. Only in job offer import. |
subsidiary | bool | false |
Independent Location? Determines if the location name is shown in the job offer or only the address. Not relevant for job offer import if persistent is false. |
persistent | bool | false | Save the location in the company. If false, it will be created only for the current job offer. Only in job offer import. If the location is persistent and subsidiary is true then the location name is shown additionally to the address in the job offer. |
5.4 Uploads
If no Uploads are provided for a job offer, the second image of the company portrait gets added.
Allowed image formats are: .jpg, .png and .gif.
The preferred image ratio for job offer images is 2:1 and the default shown size is 1200x600px.
If the ratio is smaller than 1.7 or bigger than 2.3 the image will get cropped. Maximum amount of images is 5.
Contact person images should have a ratio of 1:1 or will get cropped otherwise.
Tags | Data Type | Description |
---|---|---|
images | array|string |
Images to add to the job offer. URL or file hash. |
array|string | URL to PDF files to add as image to the job offer. |
5.5 Temporary Work
Tags | Data Type | Values | Description |
---|---|---|---|
type | int |
1 – temporary work 2 – direct personnel recruitment |
Type of temporary work |
zip | int|string | zip | |
showZip | bool | Shorten zip in job offer, e.g. 57xxx |