UNPKG

@plastic-ant/lightcast-api

Version:

An unofficial helper package for accessing the Lightcast API endpoints

890 lines (853 loc) 36.7 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var urlcat = require('urlcat'); var axios = require('axios'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var urlcat__default = /*#__PURE__*/_interopDefaultLegacy(urlcat); var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios); /****************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */ function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { var e = new Error(message); return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; }; const baseUrl$k = "https://emsiservices.com/jpa/totals"; var totals$1 = (client) => /** * Get summary metrics on all postings matching the filters. * @param body * @param params * @returns * @see API docs {@link https://docs.lightcast.dev/apis/job-postings#post-totals} */ (body, params) => client.post(urlcat__default["default"](baseUrl$k, ""), body, { params, }); const baseUrl$j = "https://emsiservices.com/jpa/postings"; var postings$1 = (client) => ({ /** * Get a single posting by its id. * @param id * @param params * @returns * @see API docs {@link https://docs.lightcast.dev/apis/job-postings#get-postings-postingid} */ byId: (id, params) => client.get(urlcat__default["default"](baseUrl$j, ":id", { id }), { params }), /** * * Get data for individual postings that match your requested filters * @param body * @param params * @returns * @see API docs {@link https://docs.lightcast.dev/apis/job-postings#post-postings} */ filtered: (body, params) => client.post(urlcat__default["default"](baseUrl$j, ""), body, { params }), }); const baseUrl$i = "https://emsiservices.com/jpa/rankings"; const timeseries$3 = (client) => ({ /** * Group and rank postings by {facet} with a monthly or daily timeseries for each ranked group. Use YYYY-MM date format in the timeseries time-frame filter, timeseries.when, to get monthly summary of each ranked group, or use YYYY-MM-DD date format for daily summary. * @param body * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/job-postings#post-rankings-rankingfacet-timeseries} */ byFacet: (facet, body, params) => client.post(urlcat__default["default"](baseUrl$i, ":facet/timeseries", { facet }), body, { params, }), }); var rankings$1 = (client) => ({ timeseries: timeseries$3(client), distributions: (distributionFacet) => ({ /** * Group and rank postings by {facet} with a distribution for each ranked item. * @param body * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/job-postings#post-rankings-rankingfacet-distributions-distributionfacet} */ byFacet: (facet, body, params) => client.post(urlcat__default["default"](baseUrl$i, ":facet/distributions/:distributionFacet", { facet, distributionFacet }), body, { params, }), }), /** * Get a list of current available ranking facets. * @see API docs {@link https://docs.lightcast.dev/apis/job-postings#get-rankings} */ listAllFacets: () => client.get(urlcat__default["default"](baseUrl$i, "")), /** * Group and rank postings by {facet}. * @param body * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/job-postings#post-rankings-rankingfacet-timeseries} */ byNestedFacet: (facet, nestedFacet, body, params) => client.post(urlcat__default["default"](baseUrl$i, ":facet/rankings/:nestedFacet", { facet, nestedFacet }), body, { params, }), /** * Group and rank postings by {facet}. * @param body * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/job-postings#post-rankings-rankingfacet-timeseries} */ byFacet: (facet, body, params) => client.post(urlcat__default["default"](baseUrl$i, ":facet", { facet }), body, { params, }), }); const baseUrl$h = "https://emsiservices.com/jpa/timeseries"; var timeseries$2 = (client) => /** * * @param body * @param params * @returns * @see API docs {@link https://docs.lightcast.dev/apis/job-postings#post-timeseries} */ (body, params) => client.post(urlcat__default["default"](baseUrl$h, ""), body, { params }); const baseUrl$g = "https://emsiservices.com/jpa/distributions"; var distributions$1 = (client) => ({ /** * * @param facet * @param body * @param params * @returns * * @see https://docs.lightcast.dev/apis/job-postings#post-distributions-distributionfacet */ byFacet: (facet, body, params) => client.post(urlcat__default["default"](baseUrl$g, facet), body, { params }), /** * Get a list of available distribution facets. * @see API docs {@link https://docs.lightcast.dev/apis/job-postings#get-distributions} */ listAllDimensions: () => client.get(urlcat__default["default"](baseUrl$g, "")), }); const baseUrl$f = "https://emsiservices.com/jpa/taxonomies"; const lookup$1 = (client) => ({ /** * Look up taxonomy items by IDs. * @param body * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/job-postings#post-taxonomies-facet-lookup} */ byFacet: (facet, body, params) => client.post(urlcat__default["default"](baseUrl$f, ":facet/lookup", { facet }), body, { params, }), }); var taxonomies$2 = (client) => ({ lookup: lookup$1(client), /** * Search taxonomies using either whole keywords (relevance search) or partial keywords (autocomplete). * @param body * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/job-postings#get-taxonomies-facet} */ search: (facet, params) => client.get(urlcat__default["default"](baseUrl$f, facet), { params }), /** * Get a list of current available taxonomy facets. * @see API docs {@link https://docs.lightcast.dev/apis/job-postings#get-taxonomies} */ listAllFacets: () => client.get(urlcat__default["default"](baseUrl$f, "")), }); var jobPostingsAPI = (client) => ({ status: () => client.get(urlcat__default["default"]("https://emsiservices.com/jpa", "status")), meta: () => client.get(urlcat__default["default"]("https://emsiservices.com/jpa", "meta")), postings: postings$1(client), rankings: rankings$1(client), taxonomies: taxonomies$2(client), totals: totals$1(client), timeseries: timeseries$2(client), distributions: distributions$1(client), }); const baseUrl$e = "https://emsiservices.com/ca-jpa/totals"; var totals = (client) => /** * @param body * @param params * @returns * @see API docs {@link https://docs.lightcast.dev/apis/canada-job-postings#post-totals} */ (body, params) => client.post(urlcat__default["default"](baseUrl$e, ""), body, { params, }); const baseUrl$d = "https://emsiservices.com/ca-jpa/postings"; var postings = (client) => ({ /** * Get a single posting by its id. * @param id * @param params * @returns * @see API docs {@link https://docs.lightcast.dev/apis/canada-job-postings#get-postings-postingid} */ byId: (id, params) => client.get(urlcat__default["default"](baseUrl$d, ":id", { id }), { params }), /** * * Get data for individual postings that match your requested filters * @param body * @param params * @returns * @see API docs {@link https://docs.lightcast.dev/apis/canada-job-postings#post-postings} */ filtered: (body, params) => client.post(urlcat__default["default"](baseUrl$d, ""), body, { params }), }); const baseUrl$c = "https://emsiservices.com/ca-jpa/rankings"; const timeseries$1 = (client) => ({ /** * Group and rank postings by {facet} with a monthly or daily timeseries for each ranked group. Use YYYY-MM date format in the timeseries time-frame filter, timeseries.when, to get monthly summary of each ranked group, or use YYYY-MM-DD date format for daily summary. * @param body * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/job-postings#post-rankings-rankingfacet-timeseries} */ byFacet: (facet, body, params) => client.post(urlcat__default["default"](baseUrl$c, ":facet/timeseries", { facet }), body, { params, }), }); /** * @see API docs {@link https://docs.lightcast.dev/apis/canada-job-postings#rankings} */ var rankings = (client) => ({ /** * @see API docs {@link https://docs.lightcast.dev/apis/canada-job-postings#post-timeseries} */ timeseries: timeseries$1(client), /** * Get a list of current available ranking facets. * @see API docs {@link https://docs.lightcast.dev/apis/canada-job-postings#get-rankings} */ listAllFacets: () => client.get(urlcat__default["default"](baseUrl$c, "")), /** * Group and rank postings by {facet}. * @param body * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/canada-job-postings#post-rankings-rankingfacet-rankings-nestedrankingfacet} */ byNestedFacet: (facet, nestedFacet, body, params) => client.post(urlcat__default["default"](baseUrl$c, ":facet/rankings/:nestedFacet", { facet, nestedFacet }), body, { params, }), /** * Group and rank postings by {facet}. * @param body * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/canada-job-postings#post-rankings-rankingfacet} */ byFacet: (facet, body, params) => client.post(urlcat__default["default"](baseUrl$c, ":facet", { facet }), body, { params, }), }); const baseUrl$b = "https://emsiservices.com/ca-jpa/timeseries"; var timeseries = (client) => ({ /** * * @param body * @param params * @returns * @see API docs {@link https://docs.lightcast.dev/apis/canada-job-postings#post-timeseries} */ timeseries: (body, params) => client.post(urlcat__default["default"](baseUrl$b, ""), body, { params }), }); const baseUrl$a = "https://emsiservices.com/ca-jpa/distributions"; var distributions = (client) => ({ /** * * @param facet * @param body * @param params * @returns * * @see https://docs.lightcast.dev/apis/canada-job-postings#post-distributions-distributionfacet */ byFacet: (facet, body, params) => client.post(urlcat__default["default"](baseUrl$a, facet), body, { params }), /** * Get a list of available distribution facets. * @see API docs {@link https://docs.lightcast.dev/apis/canada-job-postings#get-distributions} */ listAllDimensions: () => client.get(urlcat__default["default"](baseUrl$a, "")), }); const baseUrl$9 = "https://emsiservices.com/ca-jpa/taxonomies"; const lookup = (client) => ({ /** * Look up taxonomy items by IDs. * @param body * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/canada-job-postings#post-taxonomies-facet-lookup} */ byFacet: (facet, body, params) => client.post(urlcat__default["default"](baseUrl$9, ":facet/lookup", { facet }), body, { params, }), }); /** * @see API docs {@link https://docs.lightcast.dev/apis/canada-job-postings#taxonomies} */ var taxonomies$1 = (client) => ({ lookup: lookup(client), /** * Search taxonomies using either whole keywords (relevance search) or partial keywords (autocomplete). * @param body * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/canada-job-postings#get-taxonomies-facet} */ search: (facet, params) => client.get(urlcat__default["default"](baseUrl$9, facet), { params }), /** * Get a list of current available taxonomy facets. * @see API docs {@link https://docs.lightcast.dev/apis/canada-job-postings#get-taxonomies} */ listAllFacets: () => client.get(urlcat__default["default"](baseUrl$9, "")), }); var canadaJobPostingsAPI = (client) => ({ status: () => client.get(urlcat__default["default"]("https://emsiservices.com/ca-jpa", "status")), meta: () => client.get(urlcat__default["default"]("https://emsiservices.com/ca-jpa", "meta")), postings: postings(client), rankings: rankings(client), taxonomies: taxonomies$1(client), totals: totals(client), timeseries: timeseries(client), distributions: distributions(client), }); const baseUrl$8 = "https://classification.emsicloud.com/mappings"; var mappings = (client) => ({ /** * Mapping meta data includes information about source and destination taxonomies. * @param params * @returns * @set API docs {@link https://docs.lightcast.dev/apis/classification#get-list-mappings} */ meta: (params) => client.get(urlcat__default["default"](baseUrl$8, ""), { params }), /** * If there is no mapping for a concept (mappings may not include all source taxonomy concepts) or if the ID doesn't exist in the source taxonomy an empty set will be returned. * @param name * @param body * @returns * @see API docs {@link https://docs.lightcast.dev/apis/classification#post-map-concepts} */ concepts: (name, body) => client.post(urlcat__default["default"](baseUrl$8, name), body), }); const baseUrl$7 = "https://classification.emsicloud.com/taxonomies"; var taxonomies = (client) => ({ /** * A list of available taxonomies * @param params * @returns * @set API docs {@link https://docs.lightcast.dev/apis/classification#get-list-all-taxonomies} */ listAll: (params) => client.get(urlcat__default["default"](baseUrl$7, "taxonomies"), { params, }), /** * * @param facet * @see API docs {@link https://docs.lightcast.dev/apis/classification#taxonomies-taxonomy} */ meta: (facet) => client.get(urlcat__default["default"](baseUrl$7, ":facet", { facet })), /** * * @param facet * @see API docs {@link https://docs.lightcast.dev/apis/classification#taxonomies-taxonomy-versions} */ versions: (facet) => client.get(urlcat__default["default"](baseUrl$7, ":facet/versions", { facet })), version: (version) => ({ /** * * @param facet * @returns * @see API docs {@link https://docs.lightcast.dev/apis/classification#taxonomies-taxonomy-versions-version} */ meta: (facet) => client.get(urlcat__default["default"](baseUrl$7, ":facet/versions/:version", { facet, version })), /** * * @param facet * @param params * @returns * @see API docs {@link https://docs.lightcast.dev/apis/classification#taxonomies-taxonomy-versions-version-concepts} */ concepts: (facet, params) => client.get(urlcat__default["default"](baseUrl$7, ":facet/versions/:version/concepts", { facet, version }), { params, }), /** * * @param facet * @param id * @param params * @returns * @see API docs {@link https://docs.lightcast.dev/apis/classification#taxonomies-taxonomy-versions-version-concepts-id} */ conceptsById: (facet, id, params) => client.get(urlcat__default["default"](baseUrl$7, ":facet/versions/:version/concepts/:id", { facet, id, version }), { params, }), /** * * @param facet * @param params * @returns * @see API docs {@link https://docs.lightcast.dev/apis/classification#taxonomies-taxonomy-versions-version-relations} */ relations: (facet, body) => client.post(urlcat__default["default"](baseUrl$7, ":facet/versions/:version/relations", { facet, version }), body), }), }); const baseUrl$6 = "https://classification.emsicloud.com/classifications"; /** * @see API docs {@link https://docs.lightcast.dev/apis/classification#overview} */ var classifications = (client) => ({ /** * Returns a list of available classifier releases with meta data listing the supported taxonomies and outputs. * @param params * @returns * @set API docs {@link https://docs.lightcast.dev/apis/classification#get-list-classifier-releases} */ classifierReleases: () => client.get(urlcat__default["default"](baseUrl$6, "")), release: (release) => ({ /** * Returns a list of available classifier data source types (e.g., postings). * @returns * @see API docs {@link https://docs.lightcast.dev/apis/classification#classifications-release} */ availableDataSourceTypes: () => client.get(urlcat__default["default"](baseUrl$6, release)), /** * Returns a list of available operations for the given release and source. * @param source * @returns * @see API docs {@link https://docs.lightcast.dev/apis/classification#classifications-release-source} */ operationsAvailableForSource: (source) => client.get(urlcat__default["default"](baseUrl$6, `:release/:source`, { release, source })), /** * Classifies title and description to specialized occupation. * @param body * @returns * @see API docs {@link https://docs.lightcast.dev/apis/classification#classifications-release-lot-classify} */ lotClassify: (body) => client.post(urlcat__default["default"](baseUrl$6, `:release/lot/classify`, { release }), body), /** * Performs the requested classification operation on postings related data, including company name, title, and job description. A range of classifications may be performed on the input based on the requested outputs. * @param body * @returns * @see API docs {@link https://docs.lightcast.dev/apis/classification#classifications-release-postings-classify} */ postingClassify: (body) => client.post(urlcat__default["default"](baseUrl$6, `:release/postings/classify`, { release }), body), /** * Get metadata for requested version of skills extractor. * @returns * @see API docs {@link https://docs.lightcast.dev/apis/classification#get-extract-skills-metadata} */ extractSkillsMeta: () => client.get(urlcat__default["default"](baseUrl$6, `:release/skills/extract`, { release })), /** * Extract an array of Lightcast Skills from the provided text. * @param body * @returns * @see API docs {@link https://docs.lightcast.dev/apis/classification#post-extract-skills} */ extractSkills: (body) => client.post(urlcat__default["default"](baseUrl$6, `:release/skills/classify`, { release }), body), }), }); const baseUrl$5 = "https://classification.emsicloud.com"; var classificationAPI = (client) => ({ /** * * @returns * @See API docs {@link https://docs.lightcast.dev/apis/skills#get-get-service-status} */ status: () => client.get(urlcat__default["default"](baseUrl$5, "status")), taxonomies: taxonomies(client), mappings: mappings(client), classifications: classifications(client), }); /*export class ClassificationAPI { readonly taxonomies: Taxonomies; readonly mappings: Mappings; readonly classifications: Classifications; constructor(private client: RestClient) { this.taxonomies = new Taxonomies(client); this.mappings = new Mappings(client); this.classifications = new Classifications(client); } } */ const baseUrl$4 = "https://emsiservices.com/skills"; /** * @see API docs {@link https://docs.lightcast.dev/apis/skills} */ var skillsAPI = (client) => ({ baseUrl: baseUrl$4, /** * Health check endpoint * @returns * @See API docs {@link https://docs.lightcast.dev/apis/skills#get-get-service-status} */ status: () => client.get(urlcat__default["default"](baseUrl$4, "status")), /** * Get service metadata, including latest version, and attribution text. Caching is encouraged, but the metadata can change weekly. * @returns * @See API docs {@link https://docs.lightcast.dev/apis/skills#get-get-service-metadata} */ meta: () => client.get(urlcat__default["default"](baseUrl$4, "meta")), /** * Version latest can be used as an alias to the latest skill version. See our Skills Taxonomy Changelog for the updates in each version. * @returns * @See API docs {@link https://docs.lightcast.dev/apis/skills#get-list-all-versions} */ versions: () => client.get(urlcat__default["default"](baseUrl$4, "versions")), /** * * @param version * @returns */ version: (version = "latest") => ({ /** * Get version specific metadata including available fields, types, skill counts and removed skill counts. * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/skills#get-get-version-metadata} */ meta: () => client.get(urlcat__default["default"](baseUrl$4, "versions/:version", { version })), /** * Get version specific changes. * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/skills#get-get-version-changes} */ changes: () => client.get(urlcat__default["default"](baseUrl$4, "versions/:version/changes", { version })), /** * Returns a list of all skills in {version} sorted by skill name * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/skills#get-list-all-skills} */ listAll: (params) => client.get(urlcat__default["default"](baseUrl$4, "versions/:version/skills", { version }), { params, }), /** * Returns a list of requested skills in {version} * @param params * @param body * @returns * @See API docs {@link https://docs.lightcast.dev/apis/skills#post-list-requested-skills} */ listRequested: (body, params) => client.post(urlcat__default["default"](baseUrl$4, "versions/:version/skills", { version }), body, { params, }), /** * Returns information about a specific skill. * @param params * @returns * @See API docs {@link https://docs.lightcast.dev/apis/skills#get-get-a-skill-by-id} */ byId: (id) => client.get(urlcat__default["default"](baseUrl$4, "versions/:version/skills/:id", { id, version })), /** * Returns a list of skills that are related to the requested skills. * @param params * @param body * @returns * @See API docs {@link https://docs.lightcast.dev/apis/skills#post-find-related-skills} */ findRelated: (body) => client.post(urlcat__default["default"](baseUrl$4, "versions/:version/skills", { version }), body), /** * Returns a list of skills found in a document. * @param params * @param body * @returns * @See API docs {@link https://docs.lightcast.dev/apis/skills#versions-version-extract} */ extract: (body, params) => client.post(urlcat__default["default"](baseUrl$4, "versions/:version/extract", { version }), body, { params, }), /** * Returns a list of skills found in a document with its trace information, including contextual classification data found in the document that resulted in a skill match, and optionally the normalized text from the document used to extract skills. * @param params * @param body * @returns * @See API docs {@link https://docs.lightcast.dev/apis/skills#versions-version-extract-trace} */ extractTrace: (body, params) => client.post(urlcat__default["default"](baseUrl$4, "versions/:version/extract/trace", { version }), body, { params, }), }), }); const baseUrl$3 = "https://emsiservices.com/career-pathways"; var careerPathwaysAPI = (client) => ({ /** * * @returns * @See API docs {@link https://docs.lightcast.dev/apis/career-pathways#get-get-service-status} */ status: () => client.get(urlcat__default["default"](baseUrl$3, "status")), /** * * @returns * @See API docs {@link https://docs.lightcast.dev/apis/career-pathways#get-get-service-metadata} */ meta: () => client.get(urlcat__default["default"](baseUrl$3, "meta")), dimensions: { /** * Get a list of supported dimensions. * @returns * @see API docs {@link https://docs.lightcast.dev/apis/career-pathways#get-list-all-dimensions} */ listAllFacets: () => client.get(urlcat__default["default"](baseUrl$3, "")), dimension: (facet) => ({ /** * * @returns * @see API docs {@link https://docs.lightcast.dev/apis/career-pathways#dimensions-dimension} */ meta: () => client.get(urlcat__default["default"](baseUrl$3, `dimensions/:dimension`, { dimension: facet })), /** * * @param body * @returns * @see API docs {@link https://docs.lightcast.dev/apis/career-pathways#dimensions-dimension-feederjobs} */ feederJobs: (body) => client.post(urlcat__default["default"](baseUrl$3, `dimensions/:dimension/feederjobs`, { dimension: facet }), body), /** * * @param body * @returns * @see API docs {@link https://docs.lightcast.dev/apis/career-pathways#dimensions-dimension-nextstepjobs} */ nextStepJobs: (body) => client.post(urlcat__default["default"](baseUrl$3, `dimensions/:dimension/nextstepjobs`, { dimension: facet }), body), /** * * @param body * @returns * @see API docs {@link https://docs.lightcast.dev/apis/career-pathways#dimensions-dimension-skillgap} */ skillGap: (body) => client.post(urlcat__default["default"](baseUrl$3, `dimensions/:dimension/skillgap`, { dimension: facet }), body), /** * Get feeder and next step responses for a list of occupations. * @param body * @returns * @see API docs {@link https://docs.lightcast.dev/apis/career-pathways#dimensions-dimension-bulk} */ bulk: (body) => client.post(urlcat__default["default"](baseUrl$3, `dimensions/:dimension/bulk`, { dimension: facet }), body), }), }, }); const baseUrl$2 = "https://emsiservices.com/salary-boosting-skills"; var salaryBoostingSkillsAPI = (client) => ({ /** * Get the health of the service. Be sure to check the healthy attribute of the response. * @returns * @See API docs {@link https://docs.lightcast.dev/apis/salary-boosting-skills#get-get-service-status} */ status: () => client.get(urlcat__default["default"](baseUrl$2, "status")), /** * Get service metadata, including model taxonomy and dimension information along with attribution text. * @returns * @See API docs {@link https://docs.lightcast.dev/apis/salary-boosting-skills#get-get-service-metadata} */ meta: () => client.get(urlcat__default["default"](baseUrl$2, "status")), /** * Get a list of supported dimensions. * @param params * @returns * @set API docs {@link https://docs.lightcast.dev/apis/salary-boosting-skills#get-list-all-dimensions} */ listAllDimensions: (params) => client.get(urlcat__default["default"](baseUrl$2, "dimensions"), { params, }), /** * * @param dimension - The occupation dimension used for modeling Salary Boosting Skills. * @returns * @see API docs {@link https://docs.lightcast.dev/apis/salary-boosting-skills#dimensions-dimension} */ dimensions: (dimension) => ({ /** * Get dimension information. * @returns * @See API docs {@link https://docs.lightcast.dev/apis/salary-boosting-skills#get-get-dimension-metadata} */ meta: () => client.get(urlcat__default["default"](baseUrl$2, ":dimension", { dimension })), /** * Get a list of salary boosting skills for an occupation. * @param body - { id: Occupation code of the dimension } * @returns * @see API docs {@link https://docs.lightcast.dev/apis/salary-boosting-skills#post-get-salary-boosting-skills} */ salaryBoostingSkills: (body) => client.post(urlcat__default["default"](baseUrl$2, ":dimension", { dimension }), body), }), }); const baseUrl$1 = "https://emsiservices.com/ddn"; var ddnAPI = (client) => ({ /** * Get the health of the service. Be sure to check the healthy attribute of the response. * @returns * @See API docs {@link https://docs.lightcast.dev/apis/ddn-api#get-get-service-status} */ status: () => client.get(urlcat__default["default"](baseUrl$1, "status")), /** * Get service metadata, including model taxonomy and dimension information along with attribution text. * @returns * @See API docs {@link https://docs.lightcast.dev/apis/ddn-api#get-get-service-metadata} */ meta: () => client.get(urlcat__default["default"](baseUrl$1, "status")), /** * Get a list of supported dimensions. * @param params * @returns * @set API docs {@link https://docs.lightcast.dev/apis/ddn-api#get-list-all-dimensions} */ listAllDimensions: (params) => client.get(urlcat__default["default"](baseUrl$1, "dimensions"), { params, }), /** * * @param dimension - The occupation dimension used for modeling Salary Boosting Skills. * @returns * @see API docs {@link https://docs.lightcast.dev/apis/ddn-api#dimensions} */ dimensions: (dimension) => ({ /** * Get dimension information. * @returns * @See API docs {@link https://docs.lightcast.dev/apis/ddn-api#get-get-dimension-metadata} */ meta: () => client.get(urlcat__default["default"](baseUrl$1, "dimensions/:dimension", { dimension })), /** * Get lists of DDN skills for an occupation. * @param body - { id: Occupation code of the dimension } * @returns * @see API docs {@link https://docs.lightcast.dev/apis/ddn-api#post-get-ddn} */ ddn: (body) => client.post(urlcat__default["default"](baseUrl$1, "dimensions/:dimension", { dimension }), body), }), }); const baseUrl = "https://emsiservices.com/similarity"; var similarityAPI = (client) => ({ /** * Get the health of the service. Be sure to check the healthy attribute of the response. * @returns * @See API docs {@link https://docs.lightcast.dev/apis/similarity#get-get-service-status} */ status: () => client.get(urlcat__default["default"](baseUrl, "status")), /** * Get service meta data, including attribution text. Caching is encouraged, but the meta data does change periodically.. * @returns * @See API docs {@link https://docs.lightcast.dev/apis/similarity#get-get-service-meta-data} */ meta: () => client.get(urlcat__default["default"](baseUrl, "status")), /** * Get available models. * @param params * @returns * @set API docs {@link https://docs.lightcast.dev/apis/similarity#get-get-available-models} */ listAllModels: (params) => client.get(urlcat__default["default"](baseUrl, "dimensions"), { params, }), /** * * @param dimension - The occupation dimension used for modeling Salary Boosting Skills. * @returns * @see API docs {@link https://docs.lightcast.dev/apis/ddn-api#dimensions} */ models: (model) => ({ /** * Get similarity mappings based on selected model and input taxonomy item. * @param body - { id: Occupation code of the dimension } * @returns * @see API docs {@link https://docs.lightcast.dev/apis/similarity#post-get-similarity-data-on-a-selected-item} */ similarity: (body) => client.post(urlcat__default["default"](baseUrl, "models/:model", { model }), body), }), }); var occupations = (client) => ({ fromSkills: (skills, options) => { return; }, }); class LightcastAPIClient { /** * * @param credentials * @param args - Axios constructor arguments */ constructor(credentials, ...args) { this.credentials = credentials; this.skills = skillsAPI(this); this.jpa = jobPostingsAPI(this); this.cajpa = canadaJobPostingsAPI(this); this.classification = classificationAPI(this); this.careerPathways = careerPathwaysAPI(this); this.salaryBoostingSkills = salaryBoostingSkillsAPI(this); this.ddn = ddnAPI(this); this.similarity = similarityAPI(this); this.utils = { occupations: occupations() }; this.expiresIn = 0; this.client = axios__default["default"].create(Object.assign({ responseType: "json" }, args)); } setCredentials(creds) { this.credentials = creds; } refreshToken() { return __awaiter(this, void 0, void 0, function* () { if (!this.credentials) { throw new Error(`Credentials function is missing. Use setCredentials() or pass through the constructor`); } const value = yield this.credentials(); if (typeof value === "string") { this.client.defaults.headers.common = { Authorization: `Bearer ${value}` }; } else { if (Date.now() >= this.expiresIn) { const response = yield this.client.post("https://auth.emsicloud.com/connect/token", new URLSearchParams(value)); const { expires_in, access_token } = response.data; this.expiresIn = Date.now() + expires_in * 1000; this.client.defaults.headers.common = { Authorization: `Bearer ${access_token}` }; } } }); } /** * * @param resource * @param options * @returns */ get(resource, options) { return __awaiter(this, void 0, void 0, function* () { yield this.refreshToken(); return this.client.get(resource, options); }); } /** * * @param resource * @param body * @param options * @returns */ post(resource, body, options) { return __awaiter(this, void 0, void 0, function* () { yield this.refreshToken(); return this.client.post(resource, body, options); }); } } exports.LightcastAPIClient = LightcastAPIClient;