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 both values as form-data in the request body. The JWT is valid for 180 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 | Deprecated: Provides one or more category IDs. Category data is still accepted and mapped to an occupational field. If both categories and occupationalField are sent, occupationalField is used for display in job offers. 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 | ||
| occupationalField | object | Occupational field of the offer. Accepts id or name as input. idMainCategory is derived from the database and returned in responses only. Preferred over deprecated categories for display. If both occupationalField and categories are sent, occupationalField is displayed in job offers. see 5.6 for more information | ||
| wage | object | Wage details. type must be hourly, monthly or annual. min, max and minWeeklyHours must be integers. see 5.7 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.
2.1 Response schema
All job offer endpoints return an array of response objects. To keep the schema readable, the response fields are split into a generic schema and operation-specific schemas below.
All response date/time fields are returned as ISO 8601 strings (for example 2026-06-17T10:15:00+00:00), except for legacy fields, which contain a DateTime object.
During the transition period, legacy timestamp fields remain available where applicable.
2.1.1 Response Schema (All Operations)
Fields can be omitted depending on operation result and available data.| Field | Type | Description |
|---|---|---|
| type | string | Response type, for example success, info or error. |
| time | datetime | Legacy response timestamp. |
| timeIso8601 | string | Canonical response timestamp in ISO 8601 format. |
| message | string | Human-readable status or error message. |
| referenceId | string|int | Import reference or reference number of the job offer. |
| title | string | Offer title. |
| id | int | Internal job offer ID. |
| mainUrl | string | Primary URL of the published job offer. |
| additionalJobBoardUrls | array | Additional URLs on other job boards. |
2.1.2 GET response schema
“Fields can be omitted depending on operation result and available data.”.| Field | Type | Description |
|---|---|---|
| createdAt | datetime | Creation timestamp. |
| lastRefresh | datetime | Last update timestamp. |
| slug | string | Offer slug. |
| status | string | Offer status. |
| referenceNumber | string|int | Displayed reference number. |
| importReference | string|int | Import reference value. |
| startType | string | Start type. |
| startFrom | datetime|string|null | Start date if applicable. |
| limitationType | string | Limitation type. |
| limitationDate | datetime|string|null | Limitation date if applicable. |
| jobOfferTypes | array | Offer type values (e.g. job, apprenticeship). |
| contract | array | Contract values. |
| applyUrl | string|null | Application URL. |
| totalCount | int | Total number of positions. |
| students | bool | Student relevance flag. |
| leadership | bool | Leadership flag. |
| chiffre | bool | Chiffre flag. |
| mainPortal | int | Main portal id. |
| portals | array | Portal ids. |
| benefits | array | Benefit ids. |
| description | object | Mapped description object. |
| scheduled | object | Scheduled from/to data. |
| temporaryWork | object | Temporary work data. |
| workAtHome | object | Work at home data. |
| occupationalField | object | Occupational field data. |
| wage | object | Wage data. |
| categories | array | Mapped category objects. |
| locations | array | Mapped location objects. |
| contactPersons | array | Mapped contact person objects. |
| updatedAt | datetime | Last update timestamp. |
| refreshedAt | datetime | Refresh timestamp. |
2.1.3 Schema For POST/PUT/DELETE Responses
| Field | Type | Used by | Description |
|---|---|---|---|
| type | string | POST, PUT, DELETE | success, info or error |
| message | string | POST, PUT, DELETE | Operation result message |
| time | datetime | POST, PUT, DELETE | Legacy response timestamp. |
| timeIso8601 | string | POST, PUT, DELETE | Canonical response timestamp in ISO 8601 format. |
| referenceId | string|int | POST, PUT, DELETE | Offer reference identifier |
| title | string | POST, PUT, DELETE | Offer title if available |
| id | int | POST, PUT | Internal job offer id |
| mainUrl | string | POST, PUT | Main published offer URL |
| additionalJobBoardUrls | array | POST, PUT | Additional published URLs |
| remainingPortals | array | DELETE (partial) | Remaining portals after partial delete |
Example success response
[
{
"type": "success",
"time": {
"date": "2026-03-25 10:15:00.000000",
"timezone_type": 1,
"timezone": "+00:00"
},
"timeIso8601": "2026-03-25T10:15:00+00:00",
"referenceId": "1292346-2022",
"id": 12345,
"mainUrl": "https://example.com/stellenangebot/worker-in-example-job",
"additionalJobBoardUrls": [
"https://jobs.example.com/stellenangebot/worker-in-example-job"
],
"message": "The offer with title \"Worker in example job\" was saved successfully."
}
]
Example GET response
[
{
"type": "success",
"title": "Software Developer (m/w/d)",
"referenceId": "1292346-2022",
"time": {
"date": "2026-03-25 10:15:00.000000",
"timezone_type": 1,
"timezone": "+00:00"
},
"timeIso8601": "2026-03-25T10:15:00+00:00",
"id": 12345,
"mainUrl": "https://example.com/stellenangebot/software-developer-m-w-d-12345",
"additionalJobBoardUrls": [
"https://jobs.example.com/stellenangebot/software-developer-m-w-d-12345"
],
"createdAt": "2026-06-10T08:00:00+00:00",
"lastRefresh": "2026-06-17T10:00:00+00:00",
"slug": "software-developer-m-w-d-12345",
"status": "active",
"referenceNumber": "1292346-2022",
"importReference": "1292346-2022",
"startType": "date",
"startFrom": "2026-07-01T00:00:00+00:00",
"limitationType": "no",
"limitationDate": null,
"jobOfferTypes": [
"job"
],
"contract": [
"full time"
],
"applyUrl": "https://example.com/apply/1292346-2022",
"totalCount": 2,
"students": false,
"leadership": false,
"chiffre": false,
"mainPortal": 1,
"portals": [
1,
2
],
"benefits": [
"5d9debaf67a3b775bdc8c927",
"5d9debae67a3b775bdc8c91e"
],
"description": {
"input": true,
"fullText": null,
"introHeadline": "Einstieg bei uns",
"introText": "<p>Wir suchen Verstärkung.</p>",
"jobProfileHeadline": "Aufgaben",
"jobProfileText": "<ul><li>Entwicklung</li><li>Tests</li></ul>",
"applicantProfileHeadline": "Profil",
"applicantProfileText": "<p>Typescript, React, Graphql</p>",
"offerHeadline": "Wir bieten",
"offerText": "<p>Flexible Arbeitszeiten</p>",
"contactHeadline": "Kontakt",
"contactText": "<p>HR Team</p>"
},
"scheduled": {
"from": "2026-06-20T00:00:00+00:00",
"to": "2026-09-30T00:00:00+00:00"
},
"temporaryWork": {},
"workAtHome": {
"allowed": true,
"days": 3
},
"occupationalField": {
"id": "5fabc1234567890abcde0001",
"name": "Engineering"
},
"wage": {
"type": "annual",
"min": 40000,
"max": 52000,
"minWeeklyHours": 35
},
"categories": [
{
"id": "5d9debaf67a3b775bdc8c927",
"name": "IT / Software",
"slug": "it-software"
}
],
"locations": [
{
"id": "621f6a03bdef404ecf3b20ca",
"name": "HQ Siegen",
"street": "Musterstraße 10",
"zip": "57072",
"city": "Siegen",
"region": "Südwestfalen",
"country": "Deutschland",
"mainLocation": true,
"countOffers": 1
}
],
"contactPersons": [
{
"id": "6220d1a6bdef404ecf3b2172",
"salutation": "Herr",
"firstName": "Max",
"lastName": "Mustermann",
"position": "HR Manager",
"email": "max.mustermann@example.com",
"emailAlias": "karriere@example.com",
"phone": "+49 271 123456",
"show": true,
"main": true,
"notify": true,
"showEmail": true,
"showPhone": true
}
],
"updatedAt": "2026-06-17T10:00:00+00:00",
"refreshedAt": "2026-06-17T10:00:00+00:00"
}
]
Example error response
[
{
"type": "error",
"time": {
"date": "2026-03-25 10:15:00.000000",
"timezone_type": 1,
"timezone": "+00:00"
},
"timeIso8601": "2026-03-25T10:15:00+00:00",
"message": "The offer with the reference-Id \"1292346-2022\" could not be found in the database.",
"referenceId": "1292346-2022",
"title": "Worker in example job"
}
]
Example POST or PUT Request
[
{
"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
],
"jobOfferTypes": [
"apprenticeship",
"dual-study"
],
"occupationalField": {
"id": "5fabc1234567890abcde0001",
"idMainCategory": "5fabc1234567890abcde0002",
"name": "Engineering"
},
"wage": {
"type": "annual",
"min": 40000,
"max": 48000,
"minWeeklyHours": 35
},
"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"
},
...
]
Example contact person response
[
{
"time": "2026-03-25T10:15:00+00:00",
"message": "New Contact person with email \"erika@example.com\" created.",
"type": "success",
"id": "621f6a03bdef404ecf3b20ca",
"email": "erika@example.com"
}
]
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"
},
...
]
Example location response
[
{
"time": "2026-03-25T10:15:00+00:00",
"message": "Location with id 621f6a03bdef404ecfxxxxx updated successfully",
"type": "success",
"id": "621f6a03bdef404ecfxxxxx",
"name": "Example Location"
}
]
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
Deprecation warning: Categories are deprecated and may be removed in a future version. Please use occupational fields instead.
| 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 / Öffentl. Dienst / 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. |
4.3 Occupational Fields
| Request | Route | Description |
|---|---|---|
| GET | v1/import/general/occupational-fields | Returns id, idMainCategory and name of all occupational fields. |
Example response:
[
{
"id": "5fabc1234567890abcde0001",
"idMainCategory": "5fabc1234567890abcde0002",
"name": "Engineering"
},
{
"id": "5fabc1234567890abcde0003",
"idMainCategory": "5fabc1234567890abcde0004",
"name": "Logistics"
}
]
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 | 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 | false | 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 |
5.6 Occupational Field
Categories are deprecated. If category data is sent, it is mapped to an occupational field. If both categories and occupationalField are provided, occupationalField is used as the displayed value in job offers.
| Tags | Data Type | Description |
|---|---|---|
| id | string | Occupational field identifier. |
| name | string | Display name of the occupational field. |
The idMainCategory field is not accepted as input. It is derived from the database and returned in GET responses.
5.7 Wage
| Tags | Data Type | Description |
|---|---|---|
| type | string | Wage type. Allowed values: hourly, monthly, annual. |
| min | int | Minimum wage amount. |
| max | int | Maximum wage amount. |
| minWeeklyHours | int | Minimum weekly working hours. Optional. |
6. Response schema
All import endpoints return an array of response objects. Each object contains generic response metadata and may contain additional entity-specific fields depending on the endpoint and operation.
6.1 Generic response fields
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | yes | Response type. "success", "info" or "error". |
| time | datetime | yes | Timestamp of the response entry. |
| message | string | no | Human-readable status or error message. |
6.2 Job offer specific fields
6.3 Contact person specific fields
| Field | Type | Description |
|---|---|---|
| id | string | ID of the contact person. |
| string | Email address of the contact person. |
6.4 Location specific fields
| Field | Type | Description |
|---|---|---|
| id | string | ID of the location. |
| name | string | Name of the location. |

