# Occupation Benchmark #### v1.13.0 ##### Information on past releases can be found in the [Changelog](/updates/occupation-benchmark-changelog). > **Note:** By default, all clients are allowed the maximum of 5 requests per second. Contact us [here](https://docs.lightcast.dev/contact) if you need an adjustment. ## Overview ### Use case This is an interface for retrieving detailed information about a particular occupation. ### About the data Occupation data is pulled together from dozens of disparate data sources offered by Lightcast, and collated into a single convenient interface useful for benchmarking an occupation. ### Content type Unless otherwise noted, all requests that require a body accept `application/json`. Likewise, all response bodies are `application/json`. ### Authentication All endpoints require an OAuth bearer token. Tokens are granted through our Authentication API at `https://auth.emsicloud.com/connect/token` and are valid for 1 hour. For access to the US Job Postings API, you must request an OAuth bearer token with the scope `occupation-benchmark`. ```har { "method": "POST", "url": "https://auth.emsicloud.com/connect/token", "show": true, "headers": [ { "name": "Content-Type", "value": "application/x-www-form-urlencoded" } ], "postData": { "mimeType": "application/x-www-form-urlencoded", "params": [ { "name": "client_id", "value": "CLIENT_ID" }, { "name": "client_secret", "value": "CLIENT_SECRET" }, { "name": "grant_type", "value": "client_credentials" }, { "name": "scope", "value": "occupation-benchmark" } ] } } ``` **Response** ```json { "access_token":"", "expires_in":3600, "token_type":"Bearer" } ``` Issuing requests with the header `Authorization: Bearer ` will grant you access to this API for the duration of the token. For continued access make sure to fetch a new token before time expires. See our [OAuth 2.0 guide](/guides/oauth-2-0) for additional details.
**Quotas**: By default all clients have rate limiting of 5 requests per second, and their limit can be changed through Auth claims (see below). For more detail on the quota system see our [Authentication Quota](/guides/emsi-auth-quota) document. A client's rate-limit can be changed through a `occupation-benchmark:rate-limit` Auth claim. To increase a client's limit to 100 per second use `occupation-benchmark:rate-limit:100/1`, to grant them unlimited access use `occupation-benchmark:rate-limit:unlimited`.
### Glossary The table below details this APIs supported datasets and whether the data is modeled at a regional or national level. |Dataset|Region Level|Description| |-|-|-| |`advancementOccupations`|National|Occupations that are considered a viable advancement opportunity from the requested occupation. Advancement jobs that pay more and are within the same occupation group as the selected occupation.| |`certifications`|Regional|[Certifications](https://kb.lightcast.io/en/articles/7932676-certification) that are associated with the requested occupation based on job posting records.| |`commonSkills`|Regional|[Common skills](https://kb.lightcast.io/en/articles/7934140-skills) that are associated with the requested occupation based on job posting records.| |`definingSkills`|National|Skills that Define the requested occupation. Defining skills are the ‘specialized skills’ that represent the day-to-day tasks and responsibilities of the job. Source: Lightcast’s proprietary DDN model.| |`demand`|Regional|A count of unique job posts representing the relative demand of this occupation in this location based on job posting records.| |`distinguishingSkills`|National|Skills that distinguish the requested occupation. An occupation’s istinguishing skills are the advanced skills that are called for occasionally. An employee with these skills is likely more specialized and able to differentiate themselves. Source: Lightcast’s proprietary DDN model.| |`education`|Regional|This includes any mention of an education level listed within the job postings; it may be preferred, required, or negotiable. Further, postings may be tagged with multiple education levels. Example: “A.A or B.A. or equivalent work or educational experience preferred,” will be counted in both Associate’s Degree and Bachelor’s Degree categories.| |`employers`|Regional|Employers who are looking to hire the requested occupation ranked by unique job posting volume.| |`employment`|Regional|Historical and current year employment counts for the requested occupation based on LMI and job posting data.| |`experience`|Regional|Years of experience employers require on job postings for the requested occupation.| |`feederOccupations`|National|Occupations that are good candidates for leading into the requested occupation, based on less skills, experience or education requirements. Sourced from Lightcast’s proprietary [Career Pathways](https://docs.lightcast.dev/data-sets/career-pathways) model.| |`jobLevel`|National|Occupational job level based on levels of education, experience, and training required to qualify for the requested occupation (see the Job Level section below for more detail).| |`lateralOccupations`|National|Occupations that pay more but require transition to a new occupation group. Source: Lightcast’s proprietary Career Pathways model.| |`locationQuotient`|Regional|[Location Quotient (LQ)](https://kb.lightcast.io/en/articles/7124870-concentration-location-quotient) indicates how significant the requested occupation is in the requested region compared to the nation. An LQ of 1.0 indicates the requested occupation is on par with national demand, higher LQ indicates greater demand while lower LQ indicates less demand.| |`necessarySkills`|National|Necessary skills for an occupation are the ‘specialized skills’ required for that job and are relevant across other similar jobs. These are foundational skills for the broader career area. Source: Lightcast’s proprietary DDN model.| |`riskScore`|National|Risk of automation, higher numbers indicate the requested occupation is at a greater risk of being replaced by automated systems.| |`salary`|Regional\*|Salary distribution for the requested occupation. Source: Lightcast's [Market Salary](https://docs.lightcast.dev/apis/market-salary-api) model| |`salaryBoostingSkills`|National|Skills that are likely to increase a worker's salary for the requested occupation. Source: Lightcast’s proprietary Salary Boosting Skills model.| |`similarOccupations`|National|Occupations that are similar to the requested occupation in terms of skill and education requirements. Source: Lightcast’s proprietary [Similarity](https://docs.lightcast.dev/data-sets/similarity) model.| |`specializedSkills`|Regional|[Specialized skills](https://kb.lightcast.io/en/articles/7934140-skills) that are associated with the requested occupation based on job posting records.| |`taxonomicalInfo`|National|Taxonomical info for the requested occupation including where it sits in the occupational hierarchy.| |`titles`|Regional|Lightcast job titles that employers commonly use for the requested occupation within job posting records.| |`typicalEducation`|Regional|Refers to the most common level of education that individuals in a given job typically hold.| Regional\*: Salary data that cannot be modeled at a regional level due to lack of salary observations will be rolled up to the national level, refer to the `regionLevel` field in the response to know which level was used. > Note: some datasets may return as `null` if they are not defined for the requested dimension and nation, or if there is no data for the region. #### Job Level Job levels are numerical values that indicate the level of education, experience, and training required to qualify for the occupation. In the Lightcast Occupation Taxonomy (LOT) these are known as "Requirement Levels" and are classified into one of six categories: |Requirement Level|Description| |-|-| |Level 1|Roles with minimal training requirements.| |Level 2|Roles with formal training requirements of less than 2 years.| |Level 3|Roles with 2 year specialized degree requirement or a mix of sub-BA and BA requirements.| |Level 4|Entry level BA roles.| |Level 5|Advanced BA roles.| |Level 6|Graduate and professional roles.| For US SOC and O\*NET occupations, job levels are similarly classified into five O\*NET job zones. Definitions for these zones are available on the O\*NET website: https://www.onetonline.org/help/online/zones. ## /status Service status (health) ### `GET` Get service status Get the health of the service. Be sure to check the `healthy` attribute of the response, not just the status code. Caching not recommended. #### Code Examples ```har { "method": "GET", "url": "https://emsiservices.com/occupation-benchmark/status", "show": true, "headers": [ { "name": "Authorization", "value": "Bearer " } ], "queryString": [] } ``` #### Response Examples
```json { "data": { "healthy": true, "message": "Service is healthy" } } ```
```jsonschema { "$schema": "http://json-schema.org/draft-07/schema", "$id": "responses/status.schema.json", "type": "object", "additionalProperties": false, "properties": { "data": { "title": "Status response object", "required": [ "healthy", "message" ], "additionalProperties": false, "type": "object", "properties": { "healthy": { "title": "Status indicator", "type": "boolean", "description": "Boolean value to show if the service is healthy" }, "message": { "title": "Message describing the health of the service", "type": "string" } } } }, "required": [ "data" ] } ```
## /meta Get info on taxonomies, available dimensions, datasets, etc. ### `GET` Get service meta data Get service metadata, including taxonomies, available dimensions, and datasets. Caching is encouraged, but the metadata does change monthly. #### Query Parameters
Name | Description -----|------------ area_version
enum
| Specify US Area taxonomy version to use. v1 maps to the older version and v2 maps to the newer version.
This parameter is optional.
Default: `v1`
Must be one of: `v1`, `v2` nation
string
| Target the given nation's metadata. See `regions.nations` in response for available nations.
This parameter is optional.
Default: `us`
#### Code Examples ```har { "method": "GET", "url": "https://emsiservices.com/occupation-benchmark/meta", "show": true, "headers": [ { "name": "Authorization", "value": "Bearer " } ], "queryString": [] } ``` #### Response Examples
```json { "data": { "attribution": { "title": "Occupation Benchmark", "body": "The Occupation Benchmark API provides core information about occupations which are pulled from a wide range of Lightcast services and datasets - including job postings, government data, and modeled insights." }, "taxonomyVersions": { "area": "us_area_2023_2", "company": "2.42.0", "title": "5.8.0", "skill": "8.35.0", "soc": "soc_2021", "onet": "onet26_emsi", "lot": "6.1.2" }, "dimensions": [ "lotocc", "lotspecocc", "onet", "soc" ], "datasets": [ "advancementOccupations", "certifications", "commonSkills", "definingSkills", "demand", "distinguishingSkills", "education", "employers", "employment", "experience", "feederOccupations", "jobLevel", "lateralOccupations", "locationQuotient", "necessarySkills", "riskScore", "salary", "salaryBoostingSkills", "similarOccupations", "specializedSkills", "taxonomicalInfo", "titles", "typicalEducation" ], "nation": "us", "regions": { "nations": [ "ca", "us" ], "nationLevels": { "us": [ "msa", "state", "nation", "county" ], "ca": [ "pr", "nation", "cd", "csd", "cma" ] } } } } ```
Your request wasn't valid (bad parameter names or values). ```json { "errors": [ { "status": 400, "title": "Bad request", "detail": "Unknown occupation 1234 for dimension lotocc" } ] } ```
```jsonschema { "$schema": "http://json-schema.org/draft-07/schema", "$id": "responses/meta.schema.json", "type": "object", "additionalProperties": false, "properties": { "data": { "title": "Meta response object", "required": [ "attribution", "taxonomyVersions", "dimensions", "datasets", "regions", "nation" ], "additionalProperties": false, "type": "object", "properties": { "attribution": { "title": "Service attribution object", "required": [ "title", "body" ], "additionalProperties": false, "type": "object", "properties": { "title": { "title": "Name of the service", "type": "string" }, "body": { "title": "Service description", "type": "string" } } }, "taxonomyVersions": { "title": "Service taxonomy versions", "required": [ "area", "company", "title", "skill", "lot" ], "additionalProperties": false, "type": "object", "properties": { "area": { "title": "Area taxonomy version", "type": "string" }, "company": { "title": "Company taxonomy version", "type": "string" }, "title": { "title": "Title taxonomy version", "type": "string" }, "skill": { "title": "Skill taxonomy version", "type": "string" }, "soc": { "title": "US SOC taxonomy version", "type": "string" }, "onet": { "title": "US O*NET taxonomy version", "type": "string" }, "lot": { "title": "Lightcast Occupation Taxonomy (LOT) taxonomy version", "type": "string" } } }, "dimensions": { "title": "List of available dimensions", "type": "array", "items": { "type": "string", "__nodocs": true } }, "datasets": { "title": "List of available datasets", "type": "array", "items": { "type": "string", "__nodocs": true } }, "nation": { "title": "Current nation", "type": "string" }, "regions": { "title": "Available region information", "required": [ "nations", "nationLevels" ], "type": "object", "properties": { "nations": { "title": "Available nations", "type": "array", "items": { "type": "string", "__nodocs": true } }, "nationLevels": { "title": "Mapping of available nation levels", "type": "object", "patternProperties": { ".*": { "title": "List of available levels", "type": "array", "items": { "type": "string", "__nodocs": true } } } } } } } } }, "required": [ "data" ] } ```
## /dimensions Get available dimensions. ### `GET` Get available dimensions #### Query Parameters
Name | Description -----|------------ area_version
enum
| Specify US Area taxonomy version to use. v1 maps to the older version and v2 maps to the newer version.
This parameter is optional.
Default: `v1`
Must be one of: `v1`, `v2` nation
string
| Target the given nation's metadata. See `regions.nations` in response for available nations.
This parameter is optional.
Default: `us`
#### Code Examples ```har { "method": "GET", "url": "https://emsiservices.com/occupation-benchmark/dimensions", "show": true, "headers": [ { "name": "Authorization", "value": "Bearer " } ], "queryString": [] } ``` #### Response Examples
```json { "data": [ "lotocc", "lotspecocc" ] } ```
Your request wasn't valid (bad parameter names or values). ```json { "errors": [ { "status": 400, "title": "Bad request", "detail": "Unknown occupation 1234 for dimension lotocc" } ] } ```
```jsonschema { "$schema": "http://json-schema.org/draft-07/schema", "$id": "responses/dimensions.schema.json", "type": "object", "additionalProperties": false, "properties": { "data": { "title": "List of available dimensions", "type": "array", "items": { "type": "string", "__nodocs": true } } }, "required": [ "data" ] } ```
## /dimensions/{dimension} ### `GET` Get dimension metadata Lookup dimension information and metadata. #### URL Parameters
Name | Description -----|------------ dimension
enum
| Example: `lotocc`
Must be one of: `lotocc`, `lotspecocc`
#### Query Parameters
Name | Description -----|------------ area_version
enum
| Specify US Area taxonomy version to use. v1 maps to the older version and v2 maps to the newer version.
This parameter is optional.
Default: `v1`
Must be one of: `v1`, `v2` nation
string
| Target the given nation's metadata. See `regions.nations` in response for available nations.
This parameter is optional.
Default: `us`
#### Code Examples ```har { "method": "GET", "url": "https://emsiservices.com/occupation-benchmark/dimensions/lotocc", "show": true, "headers": [ { "name": "Authorization", "value": "Bearer " } ], "queryString": [] } ``` #### Response Examples
```json { "data": { "id": "lotocc", "title": "LOT Occupation", "description": "Lightcast Occupation Taxonomy (LOT) represented at the Occupation level.", "taxonomyVersion": "6.1.0", "supportedTaxonomyVersions": [ "6.1.0" ] } } ```
Your request wasn't valid (bad parameter names or values). ```json { "errors": [ { "status": 400, "title": "Bad request", "detail": "Unknown occupation 1234 for dimension lotocc" } ] } ```
The dimension you requested wasn't found. ```json { "errors": [ { "status": 404, "title": "Not found", "detail": "Invalid request path (dimension: foo): value is not a valid enumeration member; permitted: 'lotocc', 'lotspecocc'" } ] } ```
```jsonschema { "$schema": "http://json-schema.org/draft-07/schema", "$id": "responses/dimension.schema.json", "type": "object", "additionalProperties": false, "properties": { "data": { "title": "Dimension metadata", "required": [ "id", "title", "description", "taxonomyVersion", "supportedTaxonomyVersions" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Dimension id", "type": "string" }, "title": { "title": "Dimension title", "type": "string" }, "description": { "title": "Dimension description", "type": "string" }, "taxonomyVersion": { "title": "Dimension taxonomy version", "type": "string" }, "supportedTaxonomyVersions": { "title": "Support dimension taxonomy versions", "type": "array", "items": { "type": "string", "__nodocs": true } } } } }, "required": [ "data" ] } ```
### `POST` Get occupation data Benchmark an occupation. #### URL Parameters
Name | Description -----|------------ dimension
enum
| Example: `lotocc`
Must be one of: `lotocc`, `lotspecocc`
#### Query Parameters
Name | Description -----|------------ area_version
enum
| Specify US Area taxonomy version to use. v1 maps to the older version and v2 maps to the newer version.
This parameter is optional.
Default: `v1`
Must be one of: `v1`, `v2` nation
string
| Target the given nation's metadata. See `regions.nations` in response for available nations.
This parameter is optional.
Default: `us`
#### Request Body
```json { "id": "231715", "datasets": [ "taxonomicalInfo", "jobLevel", "similarOccupations" ] } ```
```jsonschema { "$schema": "http://json-schema.org/draft-07/schema", "$id": "requests/occupation.schema.json", "type": "object", "additionalProperties": false, "properties": { "id": { "title": "Dimension id", "type": "string" }, "region": { "title": "Region used for benchmarking", "required": [ "nation" ], "additionalProperties": false, "type": "object", "properties": { "nation": { "title": "Nation used for the benchmark region", "type": "string", "default": "us" }, "level": { "title": "Area level used for the benchmark region", "description": "This must come with a corresponding region id.", "type": "string", "default": "nation" }, "id": { "title": "Region ID used for the benchmark region", "description": "This must come with a corresponding region level.", "type": "string" } } }, "datasets": { "title": "List of datasets to be returned", "type": "array", "items": { "title": "Dataset", "enum": [ "taxonomicalInfo", "jobLevel", "typicalEducation", "riskScore", "locationQuotient", "education", "experience", "salary", "demand", "employment", "similarOccupations", "specializedSkills", "commonSkills", "certifications", "definingSkills", "distinguishingSkills", "necessarySkills", "salaryBoostingSkills", "employers", "titles", "advancementOccupations", "lateralOccupations", "feederOccupations" ], "type": "string", "description": "Available datasets" } } }, "required": [ "id" ] } ```
#### Code Examples ```har { "method": "POST", "url": "https://emsiservices.com/occupation-benchmark/dimensions/lotocc", "show": true, "headers": [ { "name": "Authorization", "value": "Bearer " }, { "name": "Content-Type", "value": "application/json" } ], "postData": { "mimeType": "application/json", "text": "{ \"id\": \"231715\", \"datasets\": [ \"taxonomicalInfo\", \"jobLevel\", \"similarOccupations\" ] }" }, "queryString": [] } ``` #### Response Examples
```json { "data": { "id": "231715", "name": "Software Developer / Engineer", "description": "A Software Developer or Engineer designs or improves computer software. Oversees the entire software development process. Analyzes customer or user needs, designs programs, writes code or instructs computer programmers, tests design, and documents programs. May assist with upgrades or maintenance. May specialize in the design of computer applications or computer systems.", "region": { "nation": "us", "level": "nation", "id": "0", "name": "United States" }, "taxonomicalInfo": { "taxonomy": "occupations", "level": 2, "levelName": "occupation", "hierarchy": [ { "id": "23", "name": "Information Technology and Computer Science", "level": 0, "levelName": "careerArea" }, { "id": "2317", "name": "Software Development", "level": 1, "levelName": "occupationGroup" }, { "id": "231715", "name": "Software Developer / Engineer", "level": 2, "levelName": "occupation" } ] }, "jobLevel": 5, "similarOccupations": [ { "id": "231717", "name": "Web Developer", "description": "A Web Developer designs and builds websites. Works on technical as well as design aspects of sites. Works with a company or client to plan content and format for a site, creates applications, writes code, and integrates design features including graphics, sound and video. Monitors traffic at the site.", "score": 0.94031 }, { "id": "231510", "name": "Computer Systems Engineer / Architect", "description": "A Computer Systems Engineer or Architect creates computer and data communication networks for companies and organizations. Plans and designs layout for a network, determines the hardware needed and placement of computers, servers, cables and routers; determines data storage and system capacity, speed and software needed for a system. ", "score": 0.91517 }, { "id": "231711", "name": "Computer Programmer", "description": "A Computer Programmer writes code, or instructions that a computer can follow, to create software programs. Follows program designs created by software developers and assists with software program design work. Updates and expands programs, tests for errors and fix errors. Uses different computer languages as needed to write programs.", "score": 0.88537 }, { "id": "181920", "name": "Validation Engineer", "description": "A Validation Engineer evaluates and maintains machinery and equipment used in manufacturing, and supervises workers that use and repair the machines. ", "score": 0.87532 }, { "id": "231712", "name": "Mobile Applications Developer", "description": "A Mobile Applications Developer designs, builds, or improves mobile applications or \"apps\" for smart phones and mobile tablets. Oversees the entire software development process. Analyzes customer or user needs, designs programs, writes code, tests design, and documents programs. ", "score": 0.82552 }, { "id": "231011", "name": "Business Intelligence Architect / Developer", "description": "A Business Intelligence Architect or Developer develops and builds technology systems that support business intelligence for a company. Identifies software needed for business intelligence analysts; sets up systems for collecting data on business operations, customers or sales.", "score": 0.82192 }, { "id": "231210", "name": "Data Engineer", "description": "A Data Engineer designs, builds and manages the information or big data infrastructure. Develops the architecture that helps analyze and process data in the way the organization needs it. Makes sure those systems are performing smoothly.", "score": 0.81861 }, { "id": "231514", "name": "Technology Consultant", "description": "A Technology Consultant provides information technology consulting services to businesses and organizations. Advises or manages installation or expansion of computer network systems; provides problem-solving assistance and staff training with new systems. May work independently or as part of a consulting team. ", "score": 0.81495 }, { "id": "231716", "name": "Software QA Engineer / Tester", "description": "A Software QA Engineer or Tester designs and runs in-depth diagnostic tests to evaluate software and check for problems before new products are marketed. Pilots software and applies tests to check for errors and glitches.", "score": 0.81441 }, { "id": "231212", "name": "Database Administrator", "description": "A Database Administrator uses software to store and organize data, such as an organization's records or financial information. Ensures that users can easily access the information they need, and that data are protected from unauthorized access.", "score": 0.79964 } ] } } ```
Your request wasn't valid (bad parameter names or values). ```json { "errors": [ { "status": 400, "title": "Bad request", "detail": "Unknown occupation 1234 for dimension lotocc" } ] } ```
The dimension you requested wasn't found. ```json { "errors": [ { "status": 404, "title": "Not found", "detail": "Invalid request path (dimension: foo): value is not a valid enumeration member; permitted: 'lotocc', 'lotspecocc'" } ] } ```
```jsonschema { "$schema": "http://json-schema.org/draft-07/schema", "$id": "responses/occupation.schema.json", "type": "object", "additionalProperties": false, "properties": { "data": { "title": "Occupation response object", "required": [ "id", "name", "description", "region" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Occupation ID", "type": "string" }, "name": { "title": "Occupation name", "type": "string" }, "description": { "title": "Occupation description", "type": "string" }, "region": { "title": "Region used for benchmarking", "required": [ "nation", "id", "name", "level" ], "additionalProperties": false, "type": "object", "properties": { "nation": { "title": "Nation used for the benchmark region", "type": "string" }, "id": { "title": "Region ID used for the benchmark region", "type": "string" }, "name": { "title": "Region name used for the benchmark region", "type": "string" }, "level": { "title": "Area level used for the benchmark region", "type": "string" } } }, "taxonomicalInfo": { "title": "Detailed occupation taxonomical information", "required": [ "taxonomy", "level", "levelName", "hierarchy" ], "additionalProperties": false, "type": "object", "properties": { "taxonomy": { "title": "Name of the occupation's taxonomy", "type": "string" }, "level": { "title": "Level of the occupation in the taxonomy", "type": "integer" }, "levelName": { "title": "Level name of the occupation in the taxonomy", "type": "string" }, "hierarchy": { "title": "Hierarchy of the occupation in the taxonomy", "type": "array", "items": { "title": "ConceptHierarchy", "required": [ "id", "name", "level", "levelName" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Occupation concept ID", "type": "string" }, "name": { "title": "Occupation concept name", "type": "string" }, "level": { "title": "Occupation concept hierarchy level", "type": "integer" }, "levelName": { "title": "Occupation concept hierarchy level name", "type": "string" } } } } } }, "jobLevel": { "title": "Occupation job level", "type": [ "integer", "null" ], "description": "Job level is base on the level of education, experience, and training required to qualify for the occupation." }, "typicalEducation": { "title": "Education most typically found in the occupation", "type": [ "object", "null" ], "required": [ "id", "name" ], "properties": { "id": { "title": "Concept id", "type": "string" }, "name": { "title": "Concept name", "type": "string" } } }, "riskScore": { "title": "Occupation automation risk score", "type": [ "number", "null" ], "description": "Higher scores indicate higher risk of automation for this occupation." }, "locationQuotient": { "title": "Occupation LQ", "type": [ "number", "null" ], "description": "A measure of the significance of the occupation in the given region compared to that of the nation." }, "education": { "title": "Occupation education breakdown", "type": [ "array", "null" ], "items": { "title": "Concept metric", "required": [ "id", "name", "count", "percentage" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Concept id", "type": "string" }, "name": { "title": "Concept name", "type": "string" }, "count": { "title": "Concept count", "type": "integer" }, "percentage": { "title": "Concept percentage", "type": "number" } } } }, "experience": { "title": "Occupation experience information", "required": [ "mean", "distribution" ], "type": [ "object", "null" ], "properties": { "mean": { "title": "Average years of experience for the occupation", "type": [ "number", "null" ] }, "distribution": { "title": "Frequency based distribution of years of experience for the occupation", "type": "array", "items": { "title": "Distribution", "required": [ "key", "value" ], "additionalProperties": false, "type": "object", "properties": { "key": { "title": "Bin key", "type": "string", "description": "Description of the values binned under this key." }, "value": { "title": "Bin value", "type": "number", "description": "Value of the bin under the specified key." } } } } } }, "salary": { "title": "Occupation salary information", "required": [ "mean", "distribution" ], "type": [ "object", "null" ], "properties": { "mean": { "title": "Average salary for the occupation", "type": [ "integer", "null" ] }, "distribution": { "title": "Percentile distribution of salary for the occupation", "type": "array", "items": { "title": "Distribution", "required": [ "key", "value" ], "additionalProperties": false, "type": "object", "properties": { "key": { "title": "Bin key", "type": "string", "description": "Description of the values binned under this key." }, "value": { "title": "Bin value", "type": "number", "description": "Value of the bin under the specified key." } } } } } }, "demand": { "title": "Occupation demand information", "required": [ "count", "level" ], "type": [ "object", "null" ], "properties": { "count": { "title": "Demand value", "type": "integer", "description": "Number of job postings advertising in the last 12 months." }, "level": { "title": "Demand relative level", "type": "string", "description": "Relative level of demand for this occupation compared to other occupations." } } }, "employment": { "title": "Employment growth information", "required": [ "growth", "series" ], "type": [ "object", "null" ], "properties": { "growth": { "title": "Estimated percent employment growth of this occupation", "type": "number" }, "series": { "title": "Year by year employment estimates for this occupation", "type": "array", "items": { "items": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "number" } } } } } }, "similarOccupations": { "title": "Other similar occupations", "type": [ "array", "null" ], "items": { "title": "SimilarOccupation", "required": [ "id", "name", "description", "score" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Occupation id", "type": "string" }, "name": { "title": "Occupation name", "type": "string" }, "description": { "title": "Occupation description", "type": "string" }, "score": { "title": "Occupation similarity score", "type": "number" } } } }, "specializedSkills": { "title": "Occupation specialized skills", "type": [ "array", "null" ], "items": { "title": "DescriptiveConceptMetric", "required": [ "id", "name", "description", "count", "percentage" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Concept ID", "type": "string" }, "name": { "title": "Concept name", "type": "string" }, "description": { "title": "Concept description", "type": "string" }, "count": { "title": "Concept count", "type": "integer" }, "percentage": { "title": "Concept percentage", "type": "number" } } } }, "commonSkills": { "title": "Occupation common skills", "type": [ "array", "null" ], "items": { "title": "DescriptiveConceptMetric", "required": [ "id", "name", "description", "count", "percentage" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Concept ID", "type": "string" }, "name": { "title": "Concept name", "type": "string" }, "description": { "title": "Concept description", "type": "string" }, "count": { "title": "Concept count", "type": "integer" }, "percentage": { "title": "Concept percentage", "type": "number" } } } }, "certifications": { "title": "Occupation certifications", "type": [ "array", "null" ], "items": { "title": "DescriptiveConceptMetric", "required": [ "id", "name", "description", "count", "percentage" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Concept ID", "type": "string" }, "name": { "title": "Concept name", "type": "string" }, "description": { "title": "Concept description", "type": "string" }, "count": { "title": "Concept count", "type": "integer" }, "percentage": { "title": "Concept percentage", "type": "number" } } } }, "definingSkills": { "title": "Occupation defining skills", "type": [ "array", "null" ], "items": { "title": "DescriptiveConceptMetric", "required": [ "id", "name", "description", "count", "percentage" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Concept ID", "type": "string" }, "name": { "title": "Concept name", "type": "string" }, "description": { "title": "Concept description", "type": "string" }, "count": { "title": "Concept count", "type": "integer" }, "percentage": { "title": "Concept percentage", "type": "number" } } }, "description": "Skills that are fundamental to the occupation." }, "distinguishingSkills": { "title": "Occupation distinguishing skills", "type": [ "array", "null" ], "items": { "title": "DescriptiveConceptMetric", "required": [ "id", "name", "description", "count", "percentage" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Concept ID", "type": "string" }, "name": { "title": "Concept name", "type": "string" }, "description": { "title": "Concept description", "type": "string" }, "count": { "title": "Concept count", "type": "integer" }, "percentage": { "title": "Concept percentage", "type": "number" } } }, "description": "Skills that distinguish workers in the occupation." }, "necessarySkills": { "title": "Occupation necessary skills", "type": [ "array", "null" ], "items": { "title": "DescriptiveConceptMetric", "required": [ "id", "name", "description", "count", "percentage" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Concept ID", "type": "string" }, "name": { "title": "Concept name", "type": "string" }, "description": { "title": "Concept description", "type": "string" }, "count": { "title": "Concept count", "type": "integer" }, "percentage": { "title": "Concept percentage", "type": "number" } } }, "description": "Skills that are generally required for the occupation." }, "salaryBoostingSkills": { "title": "Occupation salary boosting skills", "type": [ "array", "null" ], "items": { "title": "DescriptiveConceptMetric", "required": [ "id", "name", "description", "count", "percentage" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Concept ID", "type": "string" }, "name": { "title": "Concept name", "type": "string" }, "description": { "title": "Concept description", "type": "string" }, "count": { "title": "Concept count", "type": "integer" }, "percentage": { "title": "Concept percentage", "type": "number" } } }, "description": "Skills that lend themselves to increased salaries in this occupation." }, "employers": { "title": "Occupation employers", "type": [ "array", "null" ], "items": { "title": "Concept metric", "required": [ "id", "name", "count", "percentage" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Concept id", "type": "string" }, "name": { "title": "Concept name", "type": "string" }, "count": { "title": "Concept count", "type": "integer" }, "percentage": { "title": "Concept percentage", "type": "number" } } } }, "titles": { "title": "Occupation titles", "type": [ "array", "null" ], "items": { "title": "Concept metric", "required": [ "id", "name", "count", "percentage" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Concept id", "type": "string" }, "name": { "title": "Concept name", "type": "string" }, "count": { "title": "Concept count", "type": "integer" }, "percentage": { "title": "Concept percentage", "type": "number" } } } }, "advancementOccupations": { "title": "Other advancement occupations", "type": [ "array", "null" ], "items": { "title": "Pathway", "required": [ "id", "name", "description", "category", "score", "meanSalary", "meanSalaryDiff", "jobLevel", "jobLevelDiff" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Occupation ID", "type": "string" }, "name": { "title": "Occupation name", "type": "string" }, "description": { "title": "Occupation description", "type": "string" }, "category": { "title": "Career pathway category", "type": "string" }, "score": { "title": "Career pathway score", "type": "number" }, "meanSalary": { "title": "Average salary for the occupation", "type": "number" }, "meanSalaryDiff": { "title": "Difference in salary between the occupations", "type": "number" }, "jobLevel": { "title": "Occupation job level", "type": "integer" }, "jobLevelDiff": { "title": "Difference in job level between the occupations", "type": "integer" } } }, "description": "Other occupations that the occupation can lead into." }, "lateralOccupations": { "title": "Other lateral occupations", "type": [ "array", "null" ], "items": { "title": "Pathway", "required": [ "id", "name", "description", "category", "score", "meanSalary", "meanSalaryDiff", "jobLevel", "jobLevelDiff" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Occupation ID", "type": "string" }, "name": { "title": "Occupation name", "type": "string" }, "description": { "title": "Occupation description", "type": "string" }, "category": { "title": "Career pathway category", "type": "string" }, "score": { "title": "Career pathway score", "type": "number" }, "meanSalary": { "title": "Average salary for the occupation", "type": "number" }, "meanSalaryDiff": { "title": "Difference in salary between the occupations", "type": "number" }, "jobLevel": { "title": "Occupation job level", "type": "integer" }, "jobLevelDiff": { "title": "Difference in job level between the occupations", "type": "integer" } } }, "description": "Other occupations that can be relatively easily transitioned into from the occupation." }, "feederOccupations": { "title": "Other feeder occupations", "type": [ "array", "null" ], "items": { "title": "Pathway", "required": [ "id", "name", "description", "category", "score", "meanSalary", "meanSalaryDiff", "jobLevel", "jobLevelDiff" ], "additionalProperties": false, "type": "object", "properties": { "id": { "title": "Occupation ID", "type": "string" }, "name": { "title": "Occupation name", "type": "string" }, "description": { "title": "Occupation description", "type": "string" }, "category": { "title": "Career pathway category", "type": "string" }, "score": { "title": "Career pathway score", "type": "number" }, "meanSalary": { "title": "Average salary for the occupation", "type": "number" }, "meanSalaryDiff": { "title": "Difference in salary between the occupations", "type": "number" }, "jobLevel": { "title": "Occupation job level", "type": "integer" }, "jobLevelDiff": { "title": "Difference in job level between the occupations", "type": "integer" } } }, "description": "Other occupations that can lead into the occupation." } } } }, "required": [ "data" ] } ```