CSO JSON RPC API v1. Beta
Om de vacatures op deze website met open data te ontsluiten, is een API ontwikkeld.
Wil je als deelnemer gebruik maken van ons vacature-aanbod via de API? Neem dan contact op via:
Telefoon: +31 6 50768327
E-mailadres: helpdesk@werkenvoornederland.nl
This document describes the CSO JSON RPC API. It provides a description, use-cases, coding examples and a full reference documentation to every operation, object and property. This documentation is intended for developers and third-parties who need to communicate with the CSO Platform.
Table of Contents
- 1 The CSO Platform
- 2 Getting Started
- 3 Using the Api
- 4 Reference documentation
-
5 Example documentation
- 5.1 getApiKey - Get an ApiKey
- 5.2 isValidApi - Determining the validity of your API key
- 5.3 getJob - Get a single job
- 5.4 getJobs - get an Array of jobs
- 5.5 getJobCount - Count the number of jobs for the given filtercriteria
- 5.6 getJobEnumerations - Get all available enumerated data for jobs
- 5.7 getOrganisations - Get all available organisations available on the CSO Platform
- 5.8 getOrganisationsWithFilter - Get organisations based on a given filter
- 5.9 getJobCountForEnumeration - Get the number of jobs per enumeration type for the given filter.
- 5.10 saveJob - Save a job
- 5.11 removeJob - Delete a job
- 5.12 RemoteJobFilter - Define a filter for specific selections of jobs
- 5.13 RemoteJobFieldSelection - Define a fieldselection to define the level of detail for a job
- 5.14 RemoteOrganisationFilter - Define a filter to retrieve categories of organisations
- 5.15 RemoteJobEnumerationCount
- 6 Frequently asked questions
- 7 Deprecation documentation
- 8 Future enhancements
- 9 Support
- 10 Known problems
1 The CSO Platform
The CSO platform (Carrière Sites Overheid) is a platform for recruitment communication for the Dutch Government. The platform contains several websites. These websites provide a means of communication between the Government and the visitors of the websites. Supply and demand of job openings are presented transparently to visitors ensuring them a better orientation towards working for the Dutch Government.
Approximately 2000 organizations are present at the platform, providing solutions in recruitment and mobility issues. The websites are publications of Expertisecentrum Organisatie en Personeel (EC-O&P).
2 Getting Started with the API
The CSO-API provides third-party access to the infrastructure of the CSO (Carrière Sites Overheid) Platform making it easy to create applications that integrate seamlessly with the platform.
The API provides a means communication between web, mobile, mashups and other applications, intranets or widgets with the CSO-platform. By using the CSO-API organisations have the flexibility to determine what information they will provide their visitors and in what way the publicly available information on the CSO platform is presented elsewhere. By using the API human resource systems can exchange information with the CSO-platform.
The API introduces a standardized specification on which other providers can base products and information flow. As such, the CSO-platform will be an open system, stimulating information distribution and limiting dependencies from supplier to supplier.
Every API call requires a valid API key. All API calls are made over the HTTPS protocol for security reasons.
3 Using the API
3.1 Web Service: API Service
The JSON API accepts only HTTP POST requests containing the appropriate arguments serialized as JSON in a form field name 'args'. The method being called is appended to the path:
https://api.cso20.net/v1/jobapi/getApiKey.json
This will call the method getApiKey on the API. The json extension is mandatory.
The API always returns a content-type header application/json. If the call is successful, the HTTP statuscode returned is 200. The returned JSON string then contains a key "result" that contains the relevant data. If a status code other than 200 is returned, the returned JSON contains a key "message" with some details. Possible status codes are as follows:
| Status | Meaning |
|---|---|
| 200 | Success |
| 400 | Invalid API call. Possible causes: invalid data, invalid JSON, missing arguments |
| 403 | Access denied. Possible causes: invalid API key, unknown user credentials, no permission for the requested API method |
| 404 | Content not found. Returned when the job with the given code is not found |
| 405 | Unsupported method. Returned when the call is not done via HTTP POST |
| 500 | Server error. The cause of the error will be sent to the administrator, and resolved as soon as possible. |
Currently, all JSON objects have to be strong typed in order to be interpreted correctly. This means that each object needs a "__type__" key containing the class name of the intended object. Some API methods return objects, which are typed too. Examples are available below. These examples show you how to define a typed JSON object that can be passed to the API. In a future release, the types will be inferred from the call.
The example code below is all Javascript. We perform all calls using the jQuery library. In general, it should be quite easy to port these snippets to the language of your choice.
3.2 Port JobAPI
| URL / location: | http://api.cso20.net/v1/JobAPI/ |
| Default style: | rpc |
| Transport protocol: | JSON over HTTP(S) |
| Operations: | |
| Encoding: | Every operations response is in UTF-8 |
The API service can be accessed by making HTTP POST calls to:
http://[sandbox.]api.cso20.net/v1/JobAPI/<method>
To access the API apply for access credentials by contacting the CSO help desk:
| Telephone | +31 6 50768327 |
| Email address | helpdesk@werkenvoornederland.nl |
3.3 Sandbox
Applications developed on the CSO API can be tested using a sandbox environment. This environment is cleaned up on a regular schedule; data is deleted on a daily basis. The environment reflects the live situation of the platform: jobs available on the sandbox are always up to date. Calls to the API are only available on https protocol, see the list below for all sites in the CSO-Platform.
- https://sandbox.api.cso20.net/v1/JobAPI/<method>
- https://sandbox.www.werkenvoornederland.nl
- https://sandbox.m.werkenvoornederland.nl
- https://sandbox.www.werkenbijdeoverheid.nl
- https://sandbox.m.werkenbijdeoverheid.nl
- https://sandbox.www.rijkstalentencentrum.nl
- https://sandbox.mobi.rijkstalentencentrum.nl
- https://sandbox.fgr.rijkstalentencentrum.nl
- https://sandbox.rtc.rijkstalentencentrum.nl
3.4 Security
The CSO-API is secured to ensure that only authorized members have access. Three levels of security apply.
- User name (user name field) and password (password field)
- Request authentication using an API key included in all other method calls
- Secure Sockets Layer (SSL) data transport
4 Reference documentation
The reference documentation for all classes and methods in CSO-API v1. provides a complete overview of all available methods, classes, properties and options.
5 Example documentation
5.1 getApiKey - Get an ApiKey
Description
API key is required in each API call.
The API key is retrieved using the getApiKey function. A user name and password are required to use this function. Before retrieving your API key you need access credentials to the API. You can apply for API access at the helpdesk by phone (+31 6 50768327) or email (helpdesk@werkenvoornederland.nl).
The API key is retrieved by calling getApiKey with your credentials. To test if a given API key is still valid use the the function isValidApiKey with the given API key. All API calls are logged within the system. The apiKey returned is valid for 20 minutes.
Arguments
| method: | getApiKey.json |
| input: |
required username type string
required password type string
|
| result: |
result type string
|
A javascript (with jQuery) example:
var variables = {
username: "username",
password: "password"
};
var jsonString = JSON.stringify(variables);
jQuery.post(
"https://sandbox.api.cso20.net/v1/jobapi/getApiKey.json",
{args: jsonString},
function (data) {console.log(data);}
);
The JSON response:
{result: "6cc9b104-e5f1-4bf0-8d2f-d979fa53c5b5"}
Error handling
If an error occurs the server will respond with the corresponding HTTP Status Code and the body will contain a JSON message explaining the error. See the following example if you give incorrect credentials.
HTTP Status code: 403 Could not find an API user with the given credentials
JSON: {"message":"Could not find an API user with the given credentials"}
5.2 isValidApiKey - Determining the validity of your API key
Description
Used to check if the returned API key is still valid.
Arguments
| method: | isValidApiKey.json |
| input: |
required apiKey type string
|
| result: |
result type boolean
|
A javascript (with jQuery) example:
var variables = {
apiKey: "6cc9b104-e5f1-4bf0-8d2f-d979fa53c5b5"
};
var jsonString = JSON.stringify(variables);
jQuery.post(
"https://sandbox.api.cso20.net/v1/jobapi/isValidApiKey.json",
{args: jsonString},
function (data) {console.log(data);}
);
The JSON response:
{result: true}
5.3 getJob - Get a single job
Description
This function is used to retrieve a single job by its jobCode. The level of detail for the job returned is specified in jobFieldSelection.
A job on the CSO-platform is identified by jobCode (baanplein_ID used as URL parameter on the platform). To retrieve a single job make a call to the function 'getJob' providing your API key and the jobCode. To define the level of detail for the requested job, provide a jobFieldSelection (see the specification of jobFieldSelection for an overview of all available properties).
The field selection is required in the request even if it returns empty values. An empty field selection will return all fields available for the given job. Field selections are always of type Boolean and grouped by meaning.
For example, the settings for the job description are found in the property content. Detailed features on Branche, EducationLevel and Region are set in features.detail. Information on publication period, dates and status are found in publication.status and publication.data.
Arguments
| method: | getJob.json |
| input: |
required apiKey type string
required jobCode type string
required remoteJobFieldSelection type RemoteJobFieldSelection
|
| result: |
result type RemoteJob
|
A javascript (with jQuery) example to get a job with the minimum amount of data:
var emptyJobFieldSelection = {
__type__: "RemoteJobFieldselection"
};
var variables = {
apiKey: "6cc9b104-e5f1-4bf0-8d2f-d979fa53c5b5",
jobCode: "01130-041035402768",
remoteJobFieldSelection: emptyJobFieldSelection
};
var jsonString = JSON.stringify(variables);
jQuery.post(
"https://sandbox.api.cso20.net/v1/jobapi/getJob.json",
{args: jsonString},
function (data) {console.log(data);}
);
The JSON response:
{
"result": {
"__type__": "fly.cso.api.v1.data.job.RemoteJob",
"code": "01130-041035402768",
"externalReferenceCode": "BD130283",
"dateCreated": 1366985316130,
"dateUpdated": 1366989199113,
"locked": false,
"organisation": null,
"content": null,
"features": null,
"publication": null
}
}
5.4 getJobs - get an Array of jobs
Description
This function returns an array of jobs based on a given jobFilter.
Otherwise identical to getJob function (fieldSelection is required but can by empty), the function getJobs requires an additional jobFilter. The filter defines the (search) criteria for the returned list.
For a detailed overview of all properties and the structure of remoteJobFilter and remoteJobFieldSelection see examples and reference documentation.
Arguments
| method: | getJobs.json |
| input: |
required apiKey type string
required remoteJobFilter type RemoteJobFilter
required remoteJobFieldSelection type RemoteJobFieldSelection
|
| result: |
result type array of RemoteJob
|
A javascript (with jQuery) example to get a job with the minimum amount of data. With an empty JobFilter all available jobs for the apiUser will be returned:
var emptyJobFilter = {
__type__: "RemoteJobFilter"
};
var emptyJobFieldSelection = {
__type__: "RemoteJobFieldselection"
};
var variables = {
apiKey: "6cc9b104-e5f1-4bf0-8d2f-d979fa53c5b5",
filter: emptyJobFilter,
fieldSelection: emptyJobFieldSelection
};
var jsonString = JSON.stringify(variables);
jQuery.post(
"https://sandbox.api.cso20.net/v1/jobapi/getJobs.json",
{args: jsonString},
function (data) {console.log(data);}
);
The JSON response:
{
"result": [{
"__type__": "fly.cso.api.v1.data.job.RemoteJob",
"code": "01130-345798789830",
"externalReferenceCode": "BD130281",
"dateCreated": 1366982034427,
"dateUpdated": 1366982026893,
"locked": false,
"organisation": null,
"content": null,
"features": null,
"publication": null
}, {
"__type__": "fly.cso.api.v1.data.job.RemoteJob",
"code": "01130-327697959875",
"externalReferenceCode": "BD130274",
"dateCreated": 1366889117723,
"dateUpdated": 1366889569633,
"locked": false,
"organisation": null,
"content": null,
"features": null,
"publication": null
},
...
{
"__type__": "fly.cso.api.v1.data.job.RemoteJob",
"code": "01130-211771021918",
"externalReferenceCode": "BD130244",
"dateCreated": 1366037901820,
"dateUpdated": 1366961440330,
"locked": false,
"organisation": null,
"content": null,
"features": null,
"publication": null
}
]
}
5.5 getJobCount - Count the number of jobs for the given filtercriteria
Description
The function getJobCount is used to retrieve the number of jobs for a specified jobFilter.
To count the number of jobs returned for a given set of filter criteria use the function getjobCount.
Arguments
| method: | getJobs.json |
| input: |
required apiKey type string
required remoteJobFilter type RemoteJobFilter
|
| result: |
result type integer
|
A javascript (with jQuery) example:
var emptyJobFilter = {
__type__: "RemoteJobFilter"
};
var variables = {
apiKey: "6cc9b104-e5f1-4bf0-8d2f-d979fa53c5b5",
filter: emptyJobFilter
};
var jsonString = JSON.stringify(variables);
jQuery.post(
"https://sandbox.api.cso20.net/v1/jobapi/getJobCount.json",
{args: jsonString},
function (data) {console.log(data);}
);
The JSON response:
{"result":38}
5.6 getJobEnumerations - Get all available enumerated data for jobs
Description
A job has many properties, some are freeform textual fields, others enumerated values such as publicationStatus, region, jobBranche, contractType or drivinglicense. These properties are enumerations with a label holding the description and a unique code. While making API calls always use the property 'code' as input. The field 'description' is a read-only value used for display purposes.
These codes hardly change. We advice you to cache this data.
The function getJobEnumerations returns a list of all available enumerated properties (labels and codes) and cannot be filtered while making an API call. Below is a mapping of the available types, their code and an excerpt of the descriptive labels.
Enumerations
| Enumeration | Code (excerpt) | Label (excerpt) |
|---|---|---|
| contractTypes | CSD.nnn (numeric values) | For example: 'Vaste aanstelling (eventueel met een proeftijd)' |
| drivingLicences | A t/m E | Identical to the value in the code excerpt, lowercase |
| jobApplicationTypes | 'electronic' or 'written' | 'Elektronisch' or 'Schriftelijk' |
| onlineJobApplicationTypes | EST.nnn | For example: 'reactie URL' |
| jobBranches | CVG.nnn | For example: 'Administratief/Secretarieel, Agrarisch, Administratief/Secretarieel, ' |
| jobCategories | CFT.nnn | For example: 'Bestuurlijk,Management / Leidinggevend, Onderwijsgevend' |
| jobPublicationStatuses | PUB.nnn | For example: 'Intern, Interdepartementaal, Extern' |
| jobPublicationPeriods | -1, -2, -5, -7, -30 negative numeric | For example: 'Gisteren, Laatste 3 dagen,Laatste 5 dagen, Laatste 7 dagen,Laatste maand' |
| payScales | uuid | For example 'Salarisniveau schaal 6,7 or 8' |
| educationLevels | CWD.nnn | For example: 'Master/doctoraal, Bachelor - HBO, MBO' |
| regions | BRG.nnn or NL, DZ, AO, BW | For example: 'Friesland or Nederland, Algerije, Angola, Botswana' |
| securityScreenings | VFN.01, 02 or 03 | Functie is een vertrouwensfunctie op niveau 'A', 'B' or 'C' |
| tvDistinctions | 'tutoyeren' or 'vousvoyeren' | 'je' or 'u' |
Arguments
| method: | getJobEnumerations.json |
| input: |
required apiKey type string
|
| result: |
result type RemoteJobEnumerations
|
A javascript (with jQuery) example:
var variables = {
apiKey: "6cc9b104-e5f1-4bf0-8d2f-d979fa53c5b5"
};
var jsonString = JSON.stringify(variables);
jQuery.post(
"https://sandbox.api.cso20.net/v1/jobapi/getJobEnumerations.json",
{args: jsonString},
function (data) {console.log(data);}
);
The JSON response:
{
"result": {
__type__: "fly.cso.api.v1.data.job.RemoteJobEnumerations",
contractTypes: [{
__type__: "fly.cso.domain.enumerations.ContractType"
ID: 228
children: Array[0]
code: "CSD.02"
dateCreated: 946681200000
dateUpdated: null
label: "Vaste aanstelling (eventueel met een proeftijd)"
},
...
],
drivingLicences: [{
__type__: "fly.cso.domain.enumerations.DrivingLicence"
ID: 307
code: "a"
dateCreated: 946681200000
dateUpdated: null
label: "A"
},
...
],
...
}
}
5.7 getOrganisations - Get all available organisations available on the CSO Platform
Description
This function retrieves a list of all participating organisations on the CSO platform.
Arguments
| method: | getOrganisations.json |
| input: |
required apiKey type string
|
| result: |
result type array of RemoteOrganisation
|
A javascript (with jQuery) example:
var variables = {
apiKey: "6cc9b104-e5f1-4bf0-8d2f-d979fa53c5b5"
};
var jsonString = JSON.stringify(variables);
jQuery.post(
"https://sandbox.api.cso20.net/v1/jobapi/getOrganisations.json",
{args: jsonString},
function (data) {console.log(data);}
);
The JSON response:
{
"result": [{
"__type__": "fly.cso.api.v1.data.job.RemoteOrganisation",
"name": "AcademicTransfer",
"code": "00300"
}, {
"__type__": "fly.cso.api.v1.data.job.RemoteOrganisation",
"name": "Algemene Rekenkamer",
"code": "01020"
},
...
]
}
5.8 getOrganisationsWithFilter - Get organisations based on a given filter
Description
This function retrieves a specific list of organisations on the CSO platform; for example all organisations in a specific sector.
Arguments
| method: | getOrganisationsWithFilter.json |
| input: |
required apiKey type string
required filter type RemoteOrganisationFilter
|
| result: |
result type array of RemoteOrganisation
|
A javascript (with jQuery) example with an empty organisationFilter. This will result in the return of ALL organistaions:
var emptyOrganisationFilter = {
__type__: "RemoteOrganisationFilter"
}
var variables = {
apiKey: "6cc9b104-e5f1-4bf0-8d2f-d979fa53c5b5",
filter: emptyOrganisationFilter
};
var jsonString = JSON.stringify(variables);
jQuery.post(
"https://sandbox.api.cso20.net/v1/jobapi/getOrganisationsWithFilter.json",
{args: jsonString},
function (data) {console.log(data);}
);
The JSON response:
{
"result": [{
"__type__": "fly.cso.api.v1.data.job.RemoteOrganisation",
"name": "AcademicTransfer",
"code": "00300"
}, {
"__type__": "fly.cso.api.v1.data.job.RemoteOrganisation",
"name": "Algemene Rekenkamer",
"code": "01020"
},
...
]
}
5.9 getJobCountForEnumeration - Get the number of jobs per enumeration for the given enumeration type and filter
Description
This function returns the number of jobs ("14") per enumeration ("Utrecht") for the given enumeration type ("Region") and filter ("keyword:'internet'").
Arguments
| method: | getOrganisationsWithFilter.json |
| input: |
required apiKey type string
required enumerationType type string Must be one of these strings: "EducationLevel", "JobBranch", "JobCategory", "ContractType", "Region".
required filter type RemoteJobFilter
|
| result: |
result type array of RemoteJobEnumerationCount
|
A javascript (with jQuery) example with an empty organisationFilter. This will result in the return of ALL organistaions:
var emptyJobFilter = {
__type__: "RemoteJobFilter"
};
var variables = {
apiKey: "6cc9b104-e5f1-4bf0-8d2f-d979fa53c5b5",
enumerationType: "region",
filter: emptyJobFilter
};
var jsonString = JSON.stringify(variables);
jQuery.post(
"https://sandbox.api.cso20.net/v1/jobapi/getJobCountForEnumeration.json",
{args: jsonString},
function (data) {console.log(data);}
);
The JSON response:
{
"result": [{
"__type__": "fly.cso.api.v1.data.job.RemoteJobEnumerationCount",
"enumeration": {
"__type__": "fly.cso.domain.enumerations.Region",
"children": [],
"ID": 109,
"label": "Groningen",
"code": "BRG.0204",
"dateCreated": 946681200000,
"dateUpdated": null
},
"jobSearchCount": 3
}, {
"__type__": "fly.cso.api.v1.data.job.RemoteJobEnumerationCount",
"enumeration": {
"__type__": "fly.cso.domain.enumerations.Region",
"children": [],
"ID": 111,
"label": "Overijssel",
"code": "BRG.0208",
"dateCreated": 946681200000,
"dateUpdated": null
},
"jobSearchCount": 4
},
...
}
]
}
5.10 saveJob - Save a job
Description
This function is used to save a job.
Jobs have many properties, a listing of the minimal required set of information is shown below. The fields locationData and publicationData require additional conditional logic to validate the job object. Publication data is the most comprehensive type of validation. See the table below for descriptions of publication data and publication periods.
Validation
General requirements
Saving a job requires a minimal set of required fields to be present in the SOAP request. Below is a list of all required fields with dutch names known to users of the CSO-platform.
| internalReferenceCode | code this job is referenced by within the organisation (vacaturenummer). |
| organisation | code for the organisation this job belongs to (deelnemer). |
| jobContent.name | title for this job (functienaam). |
| jobContent.description | short text describing the job (functie-omschrijving). |
| jobContent.requirements | requirements for the job (functie-eisen). |
| jobContent.applicationTypes | how to apply for this job: written application, digital application or both. |
| jobContent.locationData.city | city in which is the job situated (standplaats). |
| jobFeatures.jobDetail.educationLevels | codes for the education level(s) required for this job (werk-denkniveau). |
| jobFeatures.jobDetail.jobCategories | codes categorizing the type(s) of this job, (functietype). |
| jobFeatures.jobDetail.jobBranches | codes to categorize the jobbranche(s) this job applies to (vakgebied). |
| jobFeatures.jobDetail.regions | code to categorize the region(s) or country the job is situated (regio of land). |
| jobFeatures.employmentConditionsData.hoursMax | maximum number of hours per week for this job. |
| jobFeatures.employmentConditionsData.contractType | type of contract for this job, for example 'permanent contract' or 'research Internship'. |
| publication.visible | value to flag the jobs visiblity on the platforms. |
Conditional requirements
Some properties have conditional requirements. Below is a list of conditional fields and a description of the conditional logic.
-
Job application data:
Different fields are required for electronic and written application types. Since applicationTypes is a required field, we can omit the validation when it is absent. See table Enumerations for an overview of applicationTypes.
-
Location data
When multiple regions are specified, regions must be situated in The Netherlands which makes the fields Postalcode and City required fields. When a country outside the Netherlands is selected, those fields are not required.
-
Salary
We distinguish two groups of organisations: those that have payScales and those that don't. The first group must either submit a payScale or payDescription and are not allowed to submit min/max salary values. The second group must either submit min/max salary values or payDescription and are not allowed to submit any payScales.
-
Publication data and phases
the publication period of a job is composed of several publication phases. These phases mark the availability of the information to a specific audience. See the table below for general rules that apply for saving or retrieving a job. Sometimes, no job information is returned after a (valid) request because of these rules.
Publication phase Description HPK If the organisation that provides the job has a required HPK period, the range between dateStart and dateEnd should at least be similar to the predefined range. The dateEnd could extend the predefined range. Overlap of the HPK period with another period is not allowed. DateStart and dateEnd are required fields (the API does not calculate ranges automatically). Intern Publication dates for 'Intern' are required fields. Overlap with HPK period is not allowed. The jobs are published on mobiliteitsbank.nl. Interdepartementaal This publication period only applies to RijksOrganisaties. Both dateStart and dateEnd are required fields. Overlap with HPK period is not allowed. An overlap in dates with 'Intern' is allowed. Jobs will be published on mobiliteitsbank.nl. Extern During this publication period the job will be available on both mobiliteitsbank.nl, werkenbijdeoverheid.nl and werkenbijhetrijk.nl. Both dateStart and dateEnd are required fields and should never overlap with HPK period.
Arguments
| method: | getOrganisationsWithFilter.json |
| input: |
required apiKey type string
required job type RemoteJob
|
| result: |
result type array of RemoteJobEnumerationCount
|
A javascript (with jQuery) example:
var job = {
"content": {
"name": "Job Jop...",
"description": "Test job",
"__TYPE__": "RemoteJobContent",
"requirements": "Geen"
},
"features": {
"featuresDetail": {
"regions": [{
"__TYPE__": "Region",
"code": "BRG.0214"
}, {
"__TYPE__": "Region",
"code": "BRG.0210"
}
],
"jobBranches": [{
"__TYPE__": "JobBranch",
"code": "CVG.02"
}, {
"__TYPE__": "JobBranch",
"code": "CVG.04"
}
],
"__TYPE__": "RemoteJobFeaturesDetail",
"jobCategories": [{
"__TYPE__": "JobCategory",
"code": "CFT.08"
}, {
"__TYPE__": "JobCategory",
"code": "CFT.04"
}
],
"educationLevels": [{
"__TYPE__": "EducationLevel",
"code": "CWD.04"
}
]
},
"location": {
"postcode": "3703CB",
"__TYPE__": "RemoteJobLocation",
"city": "Ergens"
},
"employmentConditions": {
"contractType": {
"__TYPE__": "ContractType",
"code": "CSD.02"
},
"payDescription": "pay description",
"payScales": [{
"__TYPE__": "PayScale",
"code": "MTBI9LD7"
}, {
"__TYPE__": "PayScale",
"code": "1Y08ZSFF"
}, {
"__TYPE__": "PayScale",
"code": "FF51QGU7"
}
],
"hoursMax": 40,
"__TYPE__": "RemoteJobEmploymentConditions"
},
"onlineApplicationTypes": [{
"__TYPE__": "OnlineJobApplicationType",
"code": "EST.02"
}
],
"__TYPE__": "RemoteJobFeatures",
"applicationTypes": [{
"__TYPE__": "JobApplicationType",
"code": "electronic"
}
],
"internalReferenceCode": "qwer",
"applicationContact": {
"location": {
"email": "testemailadres@rhinofly.nl",
"__TYPE__": "RemoteJobAddress"
},
"__TYPE__": "RemoteJobApplicationContact"
}
},
"publication": {
"visible": true,
"__TYPE__": "RemoteJobPublicationData",
"publicationSets": [{
"__TYPE__": "RemoteJobPublicationSet",
"publications": [{
"publicationStatus": {
"__TYPE__": "JobPublicationStatus",
"code": "PUB.02"
},
"__TYPE__": "RemoteJobPublication",
"dateStart": "2014-04-10",
"dateEnd": "2014-05-10"
}, {
"publicationStatus": {
"__TYPE__": "JobPublicationStatus",
"code": "PUB.04"
},
"__TYPE__": "RemoteJobPublication",
"dateStart": "2014-04-11",
"dateEnd": "2014-05-11"
}, {
"publicationStatus": {
"__TYPE__": "JobPublicationStatus",
"code": "PUB.06"
},
"__TYPE__": "RemoteJobPublication",
"dateStart": "2014-04-12",
"dateEnd": "2014-05-12"
}
]
}
]
},
"__TYPE__": "RemoteJob",
"organisation": {
"__TYPE__": "RemoteOrganisation",
"code": "01130"
}
};
var variables = {
apiKey: "6cc9b104-e5f1-4bf0-8d2f-d979fa53c5b5",
job:job
};
var jsonString = JSON.stringify(variables);
jQuery.post(
"https://sandbox.api.cso20.net/v1/jobapi/saveJob.json",
{args: jsonString},
function (data) {console.log(data);}
);
The JSON response:
{
"result": [{
"__type__": "fly.cso.api.v1.data.job.RemoteJobEnumerationCount",
"enumeration": {
"__type__": "fly.cso.domain.enumerations.Region",
"children": [],
"ID": 109,
"label": "Groningen",
"code": "BRG.0204",
"dateCreated": 946681200000,
"dateUpdated": null
},
"jobSearchCount": 3
}, {
"__type__": "fly.cso.api.v1.data.job.RemoteJobEnumerationCount",
"enumeration": {
"__type__": "fly.cso.domain.enumerations.Region",
"children": [],
"ID": 111,
"label": "Overijssel",
"code": "BRG.0208",
"dateCreated": 946681200000,
"dateUpdated": null
},
"jobSearchCount": 4
},
...
}
]
}
| Input: |
saveJobRequest (wsdlsoap:body, use = encoded)
required apiKey type string
required job type RemoteJob
|
| Output: |
saveJobResponse (wsdlsoap:body, use = encoded)
saveJobReturn type RemoteJob
|
| Fault: |
CFCInvocationException (wsdlsoap:fault, use = encoded)
fault type CFCInvocationException
|
An example XML representation of the request to save a job:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://v1" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> <soapenv:Header/> <soapenv:Body> <v1:saveJob soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <apiKey xsi:type="xsd:string"></apiKey> <job xsi:type="job:RemoteJob" xmlns:job="http://job.data.v1.api.cso.fly"> <content xsi:type="job:RemoteJobContent"> <description xsi:type="xsd:string"></description> <name xsi:type="xsd:string"></name> <requirements xsi:type="xsd:string"></requirements> </content> <features xsi:type="job:RemoteJobFeatures"> <employmentConditions xsi:type="job:RemoteJobEmploymentConditions"> <contractType xsi:type="enum:ContractType" xmlns:enum="http://enumerations.domain.cso.fly"> <code xsi:type="xsd:string"></code> <label xsi:type="xsd:string"></label> </contractType> <hoursMax xsi:type="xsd:double"></hoursMax> </employmentConditions> <featuresDetail xsi:type="job:RemoteJobFeaturesDetail"> <educationLevels xsi:type="v1:ArrayOf_tns6_EducationLevel" soapenc:arrayType="enum:EducationLevel[]" xmlns:enum="http://enumerations.domain.cso.fly"/> <jobBranches xsi:type="v1:ArrayOf_tns6_JobBranch" soapenc:arrayType="enum:JobBranch[]" xmlns:enum="http://enumerations.domain.cso.fly"/> <jobCategories xsi:type="v1:ArrayOf_tns6_JobCategory" soapenc:arrayType="enum:JobCategory[]" xmlns:enum="http://enumerations.domain.cso.fly"/> </featuresDetail> <location xsi:type="job:RemoteJobLocation"> <city xsi:type="xsd:string"></city> </location> </features> <internalReferenceCode xsi:type="xsd:string"></internalReferenceCode> </job> </v1:saveJob> </soapenv:Body> </soapenv:Envelope>
5.11 removeJob - Delete a job
Description
This function deletes a job
Arguments
| Input: |
removeJobRequest (wsdlsoap:body, use = encoded)
required apiKey type string
required jobCode type string
|
| Output: | removeJobResponse (wsdlsoap:body, use = encoded) |
| Fault: |
CFCInvocationException (wsdlsoap:fault, use = encoded)
fault type CFCInvocationException
|
A javascript (with jQuery) example:
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://v1"> <soapenv:Header/> <soapenv:Body> <v1:removeJob soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <apiKey xsi:type="xsd:string"></apiKey> <jobCode xsi:type="xsd:string"></jobCode> </v1:removeJob> </soapenv:Body> </soapenv:Envelope>
5.12 RemoteJobFilter - Define a filter for specific selections of jobs
Description
JobFilter defines selection criteria of jobs to return.
For example, to list all jobs currently available, all jobs for a specified organisation or sector, all jobs for a given publication period or jobs with specific employment conditions.
Filter criteria are of type Boolean, string or a code for an enumerated object (for example: region). For more information and a full mapping of available properties see the reference documentation.
Arguments
-
contentFilter - nillable; type RemoteJobContentFilter
- name - nillable; type string
-
featuresFilter - nillable; type RemoteJobFeaturesFilter
-
detailFilter - nillable; type RemoteJobDetailFilter
-
educationLevels - nillable; type ArrayOf_tns5_EducationLevel - array of type EducationLevel - extension of type Enumeration
- ID - nillable; type double (read only)
- code - nillable; type string
- dateCreated - nillable; type dateTime (read only)
- dateUpdated - nillable; type dateTime (read only)
- label - nillable; type string (read only)
- children - nillable; type anyType
- parent - nillable; type anyType
-
jobBranches - nillable; type ArrayOf_tns5_JobBranch - array of type JobBranch - extension of type Enumeration
- ID - nillable; type double (read only)
- code - nillable; type string
- dateCreated - nillable; type dateTime (read only)
- dateUpdated - nillable; type dateTime (read only)
- label - nillable; type string (read only)
- children - nillable; type anyType
- parent - nillable; type anyType
-
jobCategories - nillable; type ArrayOf_tns5_JobCategory - array of type JobCategory - extension of type Enumeration
- ID - nillable; type double (read only)
- code - nillable; type string
- dateCreated - nillable; type dateTime (read only)
- dateUpdated - nillable; type dateTime (read only)
- label - nillable; type string (read only)
- children - nillable; type anyType
- parent - nillable; type anyType
-
regions - nillable; type ArrayOf_tns5_Region - array of type Region - extension of type Enumeration
- ID - nillable; type double (read only)
- code - nillable; type string
- dateCreated - nillable; type dateTime (read only)
- dateUpdated - nillable; type dateTime (read only)
- label - nillable; type string (read only)
- children - nillable; type anyType
- parent - nillable; type anyType
-
educationLevels - nillable; type ArrayOf_tns5_EducationLevel - array of type EducationLevel - extension of type Enumeration
-
employmentConditionsFilter - nillable; type RemoteEmploymentConditionsFilter
-
contractTypes - nillable; type ArrayOf_tns5_ContractType - array of type ContractType - extension of type Enumeration
- ID - nillable; type double (read only)
- code - nillable; type string
- dateCreated - nillable; type dateTime (read only)
- dateUpdated - nillable; type dateTime (read only)
- label - nillable; type string (read only)
- children - nillable; type anyType
- parent - nillable; type anyType
-
payScales - nillable; type ArrayOf_tns7_PayScale - array of type PayScale - extension of type Enumeration
- ID - nillable; type double (read only)
- code - nillable; type string
- dateCreated - nillable; type dateTime (read only)
- dateUpdated - nillable; type dateTime (read only)
- label - nillable; type string (read only)
- displayOrder - nillable; type double
- persistentOrganisation - nillable; type anyType (read only)
- salaryMax - nillable; type double
- salaryMin - nillable; type double
- salaryMax - nillable; type double
- salaryMin - nillable; type double
-
contractTypes - nillable; type ArrayOf_tns5_ContractType - array of type ContractType - extension of type Enumeration
-
detailFilter - nillable; type RemoteJobDetailFilter
-
filterMetadata - nillable; type RemoteFilterMetadata
- maxRows - nillable; type double
-
orderBy - nillable; type ArrayOf_tns8_RemoteFilterMetadataOrderBy - array of type RemoteFilterMetadataOrderBy
- descending - nillable; type boolean
- orderBy - nillable; type string
- orderByArguments - nillable; type ArrayOf_xsd_anyType - array of type anyType
- startRow - nillable; type double
- includeSubtypes - nillable; type boolean (not yet implemented!)
- onlineOnly - nillable; type boolean
-
organisations - nillable; type ArrayOf_tns3_RemoteOrganisation - array of type RemoteOrganisation
- code - nillable; type string
- name - nillable; type string (read only)
-
publicationDataFilter - nillable; type RemoteJobPublicationDataFilter
-
publicationPeriodFilter - nillable; type RemoteJobPublicationPeriodFilter
- dateEnd - nillable; type dateTime
- dateStart - nillable; type dateTime
-
publicationStatuses - nillable; type ArrayOf_tns5_JobPublicationStatus - array of type JobPublicationStatus - extension of type Enumeration
- ID - nillable; type double (read only)
- code - nillable; type string
- dateCreated - nillable; type dateTime (read only)
- dateUpdated - nillable; type dateTime (read only)
- label - nillable; type string
-
sectors - nillable; type ArrayOf_tns3_RemoteSector - array of type RemoteSector
- code - nillable; type string
- name - nillable; type string (read only)
-
publicationPeriodFilter - nillable; type RemoteJobPublicationPeriodFilter
5.13 RemoteJobFieldSelection - Define a fieldselection to define the level of detail for a job
Description
This function defines the level of detail for a requested job provide a jobFieldSelection.
The specification for jobFieldSelection provides an overview of all properties available for a job. If no jobFieldSelection is provided all data available for a job will be returned. Field selections are always of type Boolean and grouped by meaning. For example, settings for textual content of a job are found in the property content. Detailed features like branche, education level or region are set in features.detail.
Arguments
-
jobContent - nillable; type RemoteJobContentFieldSelection
- department - nillable; type boolean
- employer - nillable; type boolean
- jobExtraFields - nillable; type boolean
-
jobFeatures - nillable; type RemoteJobFeaturesFieldSelection
- applicationContact - nillable; type boolean
- applicationProcedureContact - nillable; type boolean
- applicationTypes - nillable; type boolean
- detail - nillable; type boolean
- employmentConditions - nillable; type boolean
- informationContact - nillable; type boolean
- location - nillable; type boolean
- onlineJobApplicationTypes - nillable; type boolean
- tvDistinction - nillable; type boolean
-
jobPublication - nillable; type RemoteJobPublicationDataFieldSelection
- publicationSets - nillable; type boolean
- organisation - nillable; type boolean
5.14 RemoteOrganisationFilter - Define a filter to retrieve categories of organisations
Description
To find all organisations in a given sector provide a remoteOrganisationFilter.
Arguments
- includeSubOrganisations - nillable; type boolean
- levels - nillable; type ArrayOf_xsd_anyType - array of type anyType
-
organisation - nillable; type RemoteOrganisation
- code - nillable; type string
- name - nillable; type string (read only)
-
sector - nillable; type RemoteSector
- code - nillable; type string
- name - nillable; type string (read only)
5.15 RemoteJobEnumerationCount
Description
This object represents the number of jobs found for each enumeration.
- enumeration; type Enumeration
- jobSearchCount; type double
6 Frequently asked questions
Section not avaliable.
7 Deprecation documentation
Section not avaliable.
8 Future enhancements
Currently the CSO API v1. features the port JobAPI. Future enhancements will provide access to both a CandidateAPI and JobApplicationAPI.
9 Support
For API access requests, questions, suggestions and feedback, contact the help desk.
| Telephone | +31 6 50768327 |
| Email address | helpdesk@werkenvoornederland.nl |
Known problems
Currently there are no known problems for API v1.
