Concepts API¶
collection of API endpoints which enable various functions related to the concept graph.
A pure javascript example which shows browsing capabilities is created here:
https://www.janzz.jobs/concept-explorer/
concept list¶
If the user has entered a text and you want to convert this to a concept, you can use the concepts api endpoint which works like the labels search but does not return duplicate concepts. There is no guarantee that the entered text will appear in the result (the preferred label of a concept is returned, not the search term entered), therefore this might not be suitable for certain typeahead applications. With this tool you can also search in one language and output the results in another language.
URL¶
https://www.janzz.jobs/japi/concepts
parameters¶
- search_lang
format: ISO 369-1, 2 character language code, example: de, en, fr, … Choose ‘all’ to search in all languages
default value: ‘all’
effect: search for concept labels only in this language.
- output_lang
format: ISO 369-1, 2 character language code, example: de, en, fr, …
default value: browser locale
effect: Return preferred label for results in this language if available.
- country
format: ISO 3166-1 numeric code. Example: 756 for Switzerland, 040 for Austria, etc.
default value: 0 (no preferred country)
effect: Labels with the given country code set on them will be chosen over regular or preffered labels
- q
format: any string
default value: ‘*’ (search for everything)
effect: performs a search for concepts that have labels which partially match this query string
- exact_match
format: true|false
default value: false
effect: search for this exact string. When false, search for q
- best_label
format: true|false
default value: false
effect: if true, return the preferred label of the concept, otherwise return label most closely matching search query
- branch
format: comma separated list of branches to limit search to.
allowable branches: ‘occupation’, ‘specialization’, ‘function’, ‘skill’, ‘softskill’, ‘language’, ‘industry’, ‘contract_type’, ‘education’, ‘education2’, ‘authorization’, ‘filter__xx’ (where xx is the name of the filter, example filter__location_no)
default value: none, and no serach is performed. At least one branch must be specified.
- CLASS_{CLASSIFICATION_NAME}
search for concepts having a given classification. Use * for the value to indicate all concepts which have that classification name, regardless of the value
example: ?q=*&CLASS_BIS/AMS=647520 (normally you would set q=* when searching by specific classification ID)
example: ?q=painter&CLASS_BIS/AMS=*
list of available classifications: Classifications and Taxonomies
- exclude_nss
format: | separated list of “person class” concept labels
effect: does not include concepts in results having a relation “not suitable for” where arg1 matches one of provided concepts.
- output_classifications
format: | separated list of classifications
effect: return all classification values related to the concept_id of each returned value
list of available classifications: Classifications and Taxonomies
- normalized:
format: true|false
default value: false
effect: normalize the input string, ü->ue, A->a, collapse multiple spaces, etc.
- override_limit_level:
format: true|false
default value: false
effect: when searching in industry or contract type, default searches only 1 level deep. This allows you to remove this limit - for internal use only.
returns¶
list of concepts with the following attributes
id: the numeric id of the concept
preferred_label: the preferred label of the concept
classifications: optionally, an object containing a list of classification values for each classification rquested in output_classifications
examples¶
find concepts containing the word painter in english:
https://www.janzz.jobs/japi/concepts?search_lang=en&branch=occupation&q=painter
find concepts containing the word maler in german, output the results in english:
https://www.janzz.jobs/japi/concepts?search_lang=de&output_lang=en&branch=occupation&q=maler
find concepts containing the word maler in german, output the results in english:
https://www.janzz.jobs/japi/concepts?search_lang=de&output_lang=en&branch=occupation&q=maler
find concepts containing the word maler in german, output the results in english, include all ISCO-08 codes in the output:
https://www.janzz.jobs/japi/concepts?search_lang=de&output_lang=en&branch=occupation&q=maler&output_classifications=ISCO-08
find concepts containing the word carpenter in english, output the result in the preferred label for Austria:
https://www.janzz.jobs/japi/concepts?search_lang=en&branch=occupation&q=carpenter&output_lang=de&country=040
find concepts containing the word carpenter in english, output the result in the preferred label for Switzerland:
https://www.janzz.jobs/japi/concepts?search_lang=en&branch=occupation&q=carpenter&output_lang=de&country=041
return all concepts in a branch with fixed number of concepts (can be used for dropdown or multiselect lists):
https://www.janzz.jobs/japi/concepts?output_lang=en&branch=contract_type&q=*
https://www.janzz.jobs/japi/concepts?output_lang=en&branch=language&q=*
https://www.janzz.jobs/japi/concepts?output_lang=en&branch=education&q=*
https://www.janzz.jobs/japi/concepts?output_lang=en&branch=industry&q=*
concept detail¶
return details about a concept. concept_id must be an integer corresponding to the internal ID of the concept, which is returned in the listing call
URL¶
https://www.janzz.jobs/japi/concepts/{concept_id}
parameters¶
- lang
format: ISO 369-1, 2 character language code, example: de, en, fr, …
default value: browser locale
effect: Return preferred label for results in this language if available.
- country
format: ISO 3166-1 numeric code. Example: 756 for Switzerland, 040 for Austria, etc.
default value: 0 (no preferred country)
effect: Labels with the given country code set on them will be chosen over regular or preffered labels
- minimal
format: true|false
default: false
effect: when set to true, returns only id, preferred_label, classification_set. The response is much faster and smaller this way.
returns¶
id: concept id
preferred_label: Preferred label in the requested language
- label_set: list of all labels of a concept including the following attributes:
text: the label text
lang: the label language
- tags: any optional tags for that concept. Tags can include:
e: exclude from results
p: use as preferred label
i: always include this label in external searches
c_###: when a country passed in a search, this label has a higher priority than “p” labels if the country code matches
a: label should be available in all languages
descr_set: a list of descriptions in all languages, if available
classification_set: all classifications for this concept, including the label of the classification values and descriptions, if available
branches: the branches that this concept is in
occupation_classes: the occupation classes (oc1, oc2, …), if this concept is an occupation.
labels list¶
Normally this would be used in a typeahead to encourage people to enter something which already exists in the ontology. It may return duplicate concepts. The input text will always appear in the results, making it suitable for most typeaheads applications.
URL¶
https://www.janzz.jobs/japi/labels/
parameters¶
- lang
format: ISO 369-1, 2 character language code, example: de, en, fr, … Choose ‘all’ to search in all languages
default value: ‘all’
effect: search for concept labels only in this language.
- q
format: any string
default value: ‘*’ (search for everything)
effect: performs a search for concepts that have labels which partially match this query string
- branch
format: comma separated list of branches to limit search to.
allowable branches: ‘occupation’, ‘specialization’, ‘function’, ‘skill’, ‘softskill’, ‘language’, ‘industry’, ‘contract_type’, ‘education’, ‘education2’, ‘authorization’, ‘filter__xx’ (where xx is the name of the filter, example filter__location_no
default value: none, and no serach is performed. At least one branch must be specified.
- CLASS_{CLASSIFICATION_NAME}
search for concepts having a given classification. Use * for the value to indicate all concepts which have that classification name, regardless of the value
example: ?q=*&CLASS_BIS/AMS=647520 (normally you would set q=* when searching by specific classification ID)
example: ?q=painter&CLASS_BIS/AMS=*
list of available classifications: Classifications and Taxonomies
- exclude_tags
format: character
default value: empty
effect: exclude labels which have this tag, such as ‘e’.
- include_umbrella
format: true|false
default: false
effect: when set to false, it will not return labels of any umbrella concepts
- word_breaks
format: string of characters, example %20,-*
default: ‘*’ - for compatibility, later will be changed to %20 (’ ‘)
effect: only include labels where q is preceded by a word-break character in this string. ‘*’ allows any preceding characters, so searching for “er” will return “engineer”.
- exclude_nss
format: | separated list of “person class” concept labels
effect: does not include labels of concepts having a relation “not suitable for” where arg1 matches one of provided concepts.
- output_classifications
format: | separated list of classifications
effect: return all classification values related to the concept_id of each returned value
list of available classifications: Classifications and Taxonomies
- exact_match
format: true|false
default value: false
effect: search for this exact string. When false, search for q
- children_of
format: any string
default value: none
effect: search under a specific concept. The specific concept must exist with a label matching this value, in the provided branches, in language “lang”.
notes: This parameter is not compatible with the following branches and will be ignored: education, industry
- children_of_relation
format: one of: [‘and_descendants’, ‘descendants’, ‘and_children’, ‘children’]
default value: descendants
effect: used in conjunction with children_of. After matching concepts in children_of, search for q in the related concepts. and means include also the concept in children_of.
- limit
format: number of results to return, maximum 500
default value: 20
returns¶
list of labels with the following attributes
label: the label text
concept_id: the ID of the concept to which this labels belongs
classifications: optionally, an object containing a list of classification values for each classification rquested in output_classifications
examples¶
find occupations
https://www.janzz.jobs/japi/labels/?lang=en&branch=occupation&q=test
find skills
https://www.janzz.jobs/japi/labels/?lang=en&branch=skill&q=test
find occupations or functions
https://www.janzz.jobs/japi/labels/?lang=en&branch=occupation,function&q=test
find occupations which have an ISCO-08 code
https://www.janzz.jobs/japi/labels/?lang=en&branch=occupation&CLASS_ISCO-08=*&q=test
find occupations which have an ISCO-08 code, output all ISCO-08 and STYRK 08 codes in results
https://www.janzz.jobs/japi/labels/?lang=en&branch=occupation&CLASS_ISCO-08=*&q=test&output_classifications=ISCO-08|STYRK 08
typeahead¶
A more performant version of the labels list endpoint with some limitations. The main differences to /labels/ are:
not all branches are available
lang parameter is required
exclude_tags is not needed because ‘e’ tags are always excluded and not configurable
exact_match is not possible
children_of and relations is not possible
word_breaks are not configurable
exclude_nss is not possible
the results do not reflect the current state of the concept graph, they are up to 20 minutes delayed.
URL¶
https://www.janzz.jobs/japi/typeahead/
parameters¶
- lang
format: ISO 369-1, 2 character language code, example: de, en, fr, …
default value: None, a language must be specified
effect: search for concept labels only in this language.
- q
format: any string
default value: ‘*’ (search for everything)
effect: performs a search for concepts that have labels which partially match this query string
- branch
format: comma separated list of branches to limit search to.
allowable branches: occupation, function, skill, softskill, education, education level, specialization, language, industry, authorization
default value: none, and no serach is performed. At least one branch must be specified.
- CLASS_{CLASSIFICATION_NAME}
search for concepts having a given classification. Use * for the value to indicate all concepts which have that classification name, regardless of the value
example: ?q=*&CLASS_BIS/AMS=647520 (normally you would set q=* when searching by specific classification ID)
example: ?q=painter&CLASS_BIS/AMS=*
list of available classifications: Classifications and Taxonomies
- output_classifications
format: | separated list of classifications
effect: return all classification values related to the concept_id of each returned value
list of available classifications: Classifications and Taxonomies
- limit
format: number of results to return, maximum 500
default value: 20
- v2
format: boolean: 1 or true to enable
default value: false
effect: use v2 implementation which matches multiple words, for example “eng sof” will return “Software Engineer”
- want_branches
format: boolean: 1 or true to enable
default value: false
effect: include the branches which this concept is in
returns¶
list of labels with the following attributes
label: the label text
concept_id: the ID of the concept to which this labels belongs
classifications: optionally, an object containing a list of classification values for each classification rquested in output_classifications
examples¶
find occupations
https://www.janzz.jobs/japi/typeahead/?lang=en&branch=occupation&q=test
find skills
https://www.janzz.jobs/japi/typeahead/?lang=en&branch=skill&q=test
find occupations or functions
https://www.janzz.jobs/japi/typeahead/?lang=en&branch=occupation,function&q=test
find occupations which have an ISCO-08 code
https://www.janzz.jobs/japi/typeahead/?lang=en&branch=occupation&CLASS_ISCO-08=*&q=test
find occupations which have an ISCO-08 code, output all ISCO-08 and STYRK 08 codes in results
https://www.janzz.jobs/japi/typeahead/?lang=en&branch=occupation&CLASS_ISCO-08=*&q=test&output_classifications=ISCO-08|STYRK 08
concept relations¶
API endpoint used to explore relationships in the concept graph.
A pure javascript example which shows browsing capabilities is created here:
https://www.janzz.jobs/japi/explorer/
URL¶
When concept id is known:
https://www.janzz.jobs/japi/concept_relation_by_id/?relation={relation_type}&concept_id={concept_id}
When concept id not known:
https://www.janzz.jobs/japi/concept_relation_by_branch/?relation={relation_type}&label={label}&branch={branch}
parameters¶
- concept_id (only required with _by_id call)
format: numeric id of the concept
- label (only required when with _by_branch call)
format: any string which is an exact match for a concept.
effect: if ambiguous labels exist matching this concept, it will return the first matched.
hint: use = before string to avoid normalizing during search to improve performance
- branch (only required when with _by_branch call)
format: string of a single branch to find label in.
allowable branches: ‘occupation’, ‘specialization’, ‘function’, ‘skill’, ‘softskill’, ‘education’
- relation_type
- child/parent:
children: child concepts
parents: parent concepts
- by relationship name
specializations: has specialization
functions: has function
skills: has skill
softskills: has softskill
skillsonet: has skill O*Net 1,2,3,4,5
softskillsonet: has softskill O*Net 1,2,3,4,5
skillsonet1: has skill O*Net 1
skillsonet2: has skill O*Net 2
skillsonet3: has skill O*Net 3
skillsonet4: has skill O*Net 4
skillsonet5: has skill O*Net 5
softskillsonet1: has softskill O*Net 1
softskillsonet2: has softskill O*Net 2
softskillsonet3: has softskill O*Net 3
softskillsonet4: has softskill O*Net 4
softskillsonet5: has softskill O*Net 5
specialized: is specialized in
education: has education
similar1: same but different
similar2: same but different 2
similar3: same but different 3
similar4: same but different 4
similar5: same but different 5
similar: same but different 1, 2, 3, 4, 5
nss: not suitable for
related_occupations: special case when on a non-occupation concept, find related occupations
- effect:
display all relationships to the specified concept which use this relationship type
- lang
format: ISO 369-1, 2 character language code, example: de, en, fr,
default value: browser locale
effect: search for concepts in this language and display preferred label in this language
- limit_output_lang
format: true|false
default value: false
effect: Only display concepts having at least one label in the language provided in lang parameter
- country
format: ISO 3166-1 numeric code. Example: 756 for Switzerland, 040 for Austria, etc.
default value: 0 (no preferred country)
effect: Labels with the given country code set on them will be chosen over regular or preffered labels
- include_descendants
format: true|false
default: false
effect: when set to true, it will return all descendants of the related concepts. Does not apply to child/parent relations.
- include_umbrella
format: true|false
default: true
effect: when set to false, it will not return any umbrella concepts
- descendant_levels
format: 1,2,3
default: -1
effect: when set, include only n levels of descendants, not all. Does not apply to child/parent relations.
- child_level
format: 1,2,3
default: 1
effect: Applies only when relation_type is children, setting to 2 for example will return node.children.children, and no direct children of the current node.
- start_at
format: integer
default value: 0
effect: start at for pagination
- num_results
format: integer between 0 and 1000
default value: 100
effect: maximum number of results to return
- output_classifications
format: | separated list of classifications
effect: return all classification values related to the concept_id of each returned value
list of available classifications: Classifications and Taxonomies
returns¶
list of concepts with the following attributes
id: the numeric id of the concept
url: the url for the concept detail view
preferred_label: the preferred label of the concept
has_children: when children relation is used, shows if concept is a leaf node
classifications: optionally, an object containing a list of classification values for each classification rquested in output_classifications
expand concept¶
API endpoint used for creating an expanded query using concept child-parent relationships, synonyms, and “similar” relationships
URL¶
When concept id is known:
https://www.janzz.jobs/japi/expand_concept_id?id=concept_id
When concept id not known:
https://www.janzz.jobs/japi/expand_concept?q=search-string
parameters¶
- id (only required with expand_concept_id call)
format: numeric id of the concept. The concept must be in one of the allowable branches: occupation, specialization, function, skill
- q (only required with expand_concept call)
format: string
effect: The string which must match the concept label in the search_lang
- branch (only required with expand_concept call)
format: comma separated list of branches to limit search to.
allowed values: occupation, specialization, function, skill
effect: search for concepts matching q in these branches
- search_lang (only required with expand_concept call)
format: 2 letter ISO code
effect: language for which to search for q in, or “all” to include all languages
default value: all
- output_lang
format: 2 letter ISO code for language to return the affinity table in
default value: de
effect: Return preferred label for results in this language if available.
- levels_up
format: integer
default value: 1
effect: represents the number of parent levels to go up from given concept
- levels_down
format: integer
default value: 1
effect represents the number of children levels to go up from given concept
- exclude_tags
format: character
default value: empty
effect: exclude labels which have this tag, such as ‘e’.
- with_cids
format: true/false
default value: false
effect: include the concept id with every result
returns¶
list of labels with the following attributes
label: the label text
rel: the type of similarity - can be synonym, parent, child or similar
cid: optional concept id of this label
more specific¶
API endpoint used for finding concepts which are more specific than the one provided. This uses only strings to search and it can return duplicate concepts if more than one label exists in child concepts.
URL¶
https://www.janzz.jobs/japi/more_specific?q=search-string
parameters¶
q: The string which must match the concept label in the search_lang
- branch
comma-separated list of branches in which to search for the given term. It is recommended to use a single branch to isolate the concept you are really looking for.
allowable branches: ‘occupation’, ‘specialization’, ‘function’, ‘skill’, ‘softskill’
default value: none, and no serach is performed. At least one branch must be specified.
search_lang: 2 letter ISO code for language for which to search in, or “all” to include all languages, default: en
output_lang: 2 letter ISO code for language to return the affinity table in, default: en
exclude_tags: exclude labels which have this tag, such as ‘e’. default: e
exclude_umbrella: exclude labels which belong to umbrella terms. default: False
levels_down: integer representing number of children levels to go down from found concept, from 1 to 3, default: 1
limit: integer representing maximum number of results, from 1 to 50, default: 25
returns¶
list of labels with the following attributes
label: the label text
cid: the concept id
classification details¶
API endpoint used for getting classification details
URL¶
https://www.janzz.jobs/japi/classification/{cls}/{val}?lang={lang}
url variables¶
cls: the classification name, for example, ISCO-08. Any / characters in cls need to be escaped using a double-underscore, __
val: the classification value
parameters¶
lang: 2 letter ISO code for language for which to search and return results in, default: en
returns¶
an object with the following attributes:
lang
classification
val
label
derived_label: true if label comes from a concept label rather than official classification label
description
cross classification¶
API endpoint used for returning equivalent classifications
URL¶
https://www.janzz.jobs/japi/cross_classification/{cls}/{val}/{cls2}
url variables¶
cls: the source classification name, for example, ISCO-08. Any / characters in cls need to be escaped using a double-underscore, __
val: the source classification value
cls2: the target classification name, for example, ISCO-08. Any / characters in cls need to be escaped using a double-underscore, __
query parameters¶
cls1_lang: 2 letter ISO code for language for to provide a classification value for cls, default: en
cls2_lang: 2 letter ISO code for language for to provide a classification value for cls2, default: en
cid_lang: 2 letter ISO code for language for to provide a best label for returned cids, default: en
cid_filter_cls: only consider concepts also having this classification default: empty
cid_filter_val: when cid_filter_cls is used, filter concepts having this value for cid_filter_cls. Leave empty to include any value, as long as the cid_filter_cls classification is set. default: empty
returns¶
an object with the following attributes:
source_cls: Source classification
source_val: Input source classification value
target_cls: Target classification
target_vals: Target classification values, a distinct list
concept_ids: Concept IDs which are responsible for this mapping, including a preferred label and classifications for those concepts where the classification is in cls, cls2
occupation suggest¶
API endpoint used for getting recommended functions, specializations, skills, soft skills for a given occupation
URL¶
https://www.janzz.jobs/japi/occupation_suggest?occupation={search_string}&relation={relation}
parameters¶
occupation: The string which must match the concept label in the search_lang
occupation_cid: If provided, this concept ID will override the occupation parameter
- relation
allowable relations: ‘specialization’, ‘function’, ‘skill’, ‘softskill’
default value: none, and nothing is returned. At least one relation must be specified.
lang: 2 letter ISO code for language for which to search and return results in, default: en
exclude_tags: exclude labels which have this tag, such as ‘e’. default: e
limit: integer representing maximum number of results, from 1 to 50, default: 25
returns¶
list of labels with the following attributes
label: the label text
education level¶
This endpoint provides two ways of getting to an “education level” concept usable in a JANZZ’s education field. You can either provide a concept id, if you know it, or a classification and classification value. If the concept is found, then it will be searched up towards the root until it finds a suitable education level concept. More than one concept can be returned if the found concept is in multiple education levels.
URL¶
https://www.janzz.jobs/japi/education_level/{id}
https://www.janzz.jobs/japi/education_level/
parameters¶
- output_lang
format: ISO 369-1, 2 character language code, example: de, en, fr, …
default value: browser locale
effect: Return preferred label for results in this language if available.
- country
format: ISO 3166-1 numeric code. Example: 756 for Switzerland, 040 for Austria, etc.
default value: 0 (no preferred country)
effect: Labels with the given country code set on them will be chosen over regular or preffered labels
- CLASS_{CLASSIFICATION_NAME}
search for concepts having a given classification. Use * for the value to indicate all concepts which have that classification name, regardless of the value
example: ?q=*&CLASS_BIS/AMS=647520 (normally you would set q=* when searching by specific classification ID)
example: ?q=painter&CLASS_BIS/AMS=*
list of available classifications: Classifications and Taxonomies
returns¶
list of labels with the following attributes
label: the label of the concept
level: the level number, a higher number implies a higher level of education
examples¶
find all education levels for concept with id 57867:
https://www.janzz.jobs/japi/education_level/57867?output_lang=no
find all education levels for concepts with NUS (No) code of 455239:
https://www.janzz.jobs/japi/education_level/?output_lang=no&CLASS_NUS%20(No)=455239
Concepts