{"openapi":"3.1.0","info":{"title":"The Jobs API","version":"1.0.0","description":"Verified active jobs collected directly from employers' career sites and applicant tracking systems in Canada and the United States."},"servers":[{"url":"https://api.thejobsapi.com"}],"security":[{"bearer":[]}],"tags":[{"name":"Feeds","description":"Polling feeds for keeping your own copy of the catalogue: new, modified and expired jobs."},{"name":"Search","description":"Query the live catalogue and follow its change log."},{"name":"Organizations","description":"Employers in the catalogue."}],"paths":{"/v1/active-ats":{"get":{"tags":["Feeds"],"operationId":"activeAts","summary":"New jobs","description":"Active jobs first collected within `time_frame`, newest posting first (or by `id` with `cursor`). Poll `1h` every hour or `24h` once a day in the same hour to receive every job once.","parameters":[{"name":"time_frame","in":"query","required":false,"description":"`1h`: the last full UTC hour. `24h`: the 24 hours up to the last full hour. `7d` and `6m`: rolling windows for backfills.","schema":{"type":"string","enum":["1h","24h","7d","6m"],"default":"24h"}},{"name":"limit","in":"query","required":false,"description":"Jobs per page, 1–1000.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}},{"name":"offset","in":"query","required":false,"description":"Jobs to skip (offset pagination, ordered by `date_posted` descending).","schema":{"type":"integer","minimum":0}},{"name":"cursor","in":"query","required":false,"description":"Cursor pagination: pass the last `id` of the previous page. Orders by `id` ascending and overrides `offset`. Use it for `6m` backfills.","schema":{"type":"integer","format":"int64"}},{"name":"description_format","in":"query","required":false,"description":"Adds `description_text` or `description_html`. Omit it to leave descriptions out.","schema":{"type":"string","enum":["text","html"]}},{"name":"include_source_fields","in":"query","required":false,"description":"Adds `source_fields`: employer-published structured facts (department, pay tiers, qualifications…) with the path where each was found.","schema":{"type":"boolean"}},{"name":"id","in":"query","required":false,"description":"Only these job ids, comma-separated.","schema":{"type":"array","items":{"type":"integer","format":"int64"}},"style":"form","explode":false},{"name":"title","in":"query","required":false,"description":"Search the job title. Google-style: `software engineer` needs both words, `\"software engineer\"` is a phrase, `software OR engineer` either word, `-intern` excludes, `engineer*` matches a prefix. Accents and case are ignored.","schema":{"type":"string"}},{"name":"title_advanced","in":"query","required":false,"description":"Boolean search on the job title. Boolean expression: `&` AND, `|` OR, `!` NOT, `<->` followed by, `<N>` within N words, `'quoted phrase'`, `( )` grouping and `:*` prefix. Takes precedence over the plain parameter.","schema":{"type":"string"}},{"name":"description","in":"query","required":false,"description":"Search title, employer and description together. Google-style: `software engineer` needs both words, `\"software engineer\"` is a phrase, `software OR engineer` either word, `-intern` excludes, `engineer*` matches a prefix. Accents and case are ignored.","schema":{"type":"string"}},{"name":"description_advanced","in":"query","required":false,"description":"Boolean search on title, employer and description. Boolean expression: `&` AND, `|` OR, `!` NOT, `<->` followed by, `<N>` within N words, `'quoted phrase'`, `( )` grouping and `:*` prefix. Takes precedence over the plain parameter.","schema":{"type":"string"}},{"name":"location","in":"query","required":false,"description":"Full place names as `City, Region, Country`: `Canada`, `Ontario, Canada`, `\"Toronto, Ontario, Canada\" OR \"Vancouver, British Columbia, Canada\"`, `California, United States`. A single name matches a region or city of that name. Countries must be written out (`United States`, not `US`).","schema":{"type":"string"}},{"name":"location_advanced","in":"query","required":false,"description":"Boolean search on the derived location text (\"City Region Country\"). Boolean expression: `&` AND, `|` OR, `!` NOT, `<->` followed by, `<N>` within N words, `'quoted phrase'`, `( )` grouping and `:*` prefix. Takes precedence over the plain parameter.","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Country views to include, comma-separated: `CA`, `US` or both (default both). A posting with locations in both countries appears once in each view, with a different `id`.","schema":{"type":"array","items":{"type":"string","enum":["CA","US"]}},"style":"form","explode":false},{"name":"organization","in":"query","required":false,"description":"Exact, case-sensitive employer names, comma-separated. Wrap a name containing a comma in double quotes: `\"Acme, Inc.\"`.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"exclude_organization","in":"query","required":false,"description":"Employer names to exclude; same rules as `organization`.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"organization_advanced","in":"query","required":false,"description":"Boolean search on the employer name. Boolean expression: `&` AND, `|` OR, `!` NOT, `<->` followed by, `<N>` within N words, `'quoted phrase'`, `( )` grouping and `:*` prefix. Takes precedence over the plain parameter.","schema":{"type":"string"}},{"name":"source","in":"query","required":false,"description":"Source systems to include, comma-separated, e.g. `workday,greenhouse,icims`. `lever.co`, `phenompeople` and `taleo` are accepted as aliases.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"exclude_source","in":"query","required":false,"description":"Source systems to exclude.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"date_posted_gte","in":"query","required":false,"description":"Posted at or after this time (ISO 8601, UTC when no zone is given).","schema":{"type":"string","format":"date-time"}},{"name":"date_posted_lt","in":"query","required":false,"description":"Posted before this time.","schema":{"type":"string","format":"date-time"}},{"name":"date_created_gte","in":"query","required":false,"description":"First collected at or after this time. Use it to replay a missed window exactly.","schema":{"type":"string","format":"date-time"}},{"name":"date_created_lt","in":"query","required":false,"description":"First collected before this time.","schema":{"type":"string","format":"date-time"}},{"name":"has_salary","in":"query","required":false,"description":"`true` for jobs whose employer published pay, `false` for jobs without.","schema":{"type":"boolean"}},{"name":"remote","in":"query","required":false,"description":"`true` for jobs the employer marks remote, `false` to exclude them.","schema":{"type":"boolean"}},{"name":"has_no_location","in":"query","required":false,"description":"`true` for jobs without a resolved location.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Jobs","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Job"}}}}},"400":{"description":"Invalid request (unknown parameter, bad value or search syntax).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing or invalid API key."},"429":{"description":"Rate limit or plan allowance reached. Honour `Retry-After`."},"504":{"description":"The query exceeded the time limit; narrow it.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/active-ats-count":{"get":{"tags":["Feeds"],"operationId":"activeAtsCount","summary":"Count new jobs","description":"How many jobs match the filters in `time_frame`, without returning them. `1m` counts jobs first collected in the last 31 days including those since expired; other windows count active jobs only.","parameters":[{"name":"time_frame","in":"query","required":false,"description":"Window to count.","schema":{"type":"string","enum":["1h","24h","7d","1m","6m"],"default":"1m"}},{"name":"title","in":"query","required":false,"description":"Search the job title. Google-style: `software engineer` needs both words, `\"software engineer\"` is a phrase, `software OR engineer` either word, `-intern` excludes, `engineer*` matches a prefix. Accents and case are ignored.","schema":{"type":"string"}},{"name":"title_advanced","in":"query","required":false,"description":"Boolean search on the job title. Boolean expression: `&` AND, `|` OR, `!` NOT, `<->` followed by, `<N>` within N words, `'quoted phrase'`, `( )` grouping and `:*` prefix. Takes precedence over the plain parameter.","schema":{"type":"string"}},{"name":"description","in":"query","required":false,"description":"Search title, employer and description together. Google-style: `software engineer` needs both words, `\"software engineer\"` is a phrase, `software OR engineer` either word, `-intern` excludes, `engineer*` matches a prefix. Accents and case are ignored.","schema":{"type":"string"}},{"name":"description_advanced","in":"query","required":false,"description":"Boolean search on title, employer and description. Boolean expression: `&` AND, `|` OR, `!` NOT, `<->` followed by, `<N>` within N words, `'quoted phrase'`, `( )` grouping and `:*` prefix. Takes precedence over the plain parameter.","schema":{"type":"string"}},{"name":"location","in":"query","required":false,"description":"Full place names as `City, Region, Country`: `Canada`, `Ontario, Canada`, `\"Toronto, Ontario, Canada\" OR \"Vancouver, British Columbia, Canada\"`, `California, United States`. A single name matches a region or city of that name. Countries must be written out (`United States`, not `US`).","schema":{"type":"string"}},{"name":"location_advanced","in":"query","required":false,"description":"Boolean search on the derived location text (\"City Region Country\"). Boolean expression: `&` AND, `|` OR, `!` NOT, `<->` followed by, `<N>` within N words, `'quoted phrase'`, `( )` grouping and `:*` prefix. Takes precedence over the plain parameter.","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Country views to include, comma-separated: `CA`, `US` or both (default both). A posting with locations in both countries appears once in each view, with a different `id`.","schema":{"type":"array","items":{"type":"string","enum":["CA","US"]}},"style":"form","explode":false},{"name":"organization","in":"query","required":false,"description":"Exact, case-sensitive employer names, comma-separated. Wrap a name containing a comma in double quotes: `\"Acme, Inc.\"`.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"exclude_organization","in":"query","required":false,"description":"Employer names to exclude; same rules as `organization`.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"organization_advanced","in":"query","required":false,"description":"Boolean search on the employer name. Boolean expression: `&` AND, `|` OR, `!` NOT, `<->` followed by, `<N>` within N words, `'quoted phrase'`, `( )` grouping and `:*` prefix. Takes precedence over the plain parameter.","schema":{"type":"string"}},{"name":"source","in":"query","required":false,"description":"Source systems to include, comma-separated, e.g. `workday,greenhouse,icims`. `lever.co`, `phenompeople` and `taleo` are accepted as aliases.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"exclude_source","in":"query","required":false,"description":"Source systems to exclude.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"date_posted_gte","in":"query","required":false,"description":"Posted at or after this time (ISO 8601, UTC when no zone is given).","schema":{"type":"string","format":"date-time"}},{"name":"date_posted_lt","in":"query","required":false,"description":"Posted before this time.","schema":{"type":"string","format":"date-time"}},{"name":"date_created_gte","in":"query","required":false,"description":"First collected at or after this time. Use it to replay a missed window exactly.","schema":{"type":"string","format":"date-time"}},{"name":"date_created_lt","in":"query","required":false,"description":"First collected before this time.","schema":{"type":"string","format":"date-time"}},{"name":"has_salary","in":"query","required":false,"description":"`true` for jobs whose employer published pay, `false` for jobs without.","schema":{"type":"boolean"}},{"name":"remote","in":"query","required":false,"description":"`true` for jobs the employer marks remote, `false` to exclude them.","schema":{"type":"boolean"}},{"name":"has_no_location","in":"query","required":false,"description":"`true` for jobs without a resolved location.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Count","content":{"application/json":{"schema":{"type":"object","required":["count"],"properties":{"count":{"type":"integer"}}}}}},"400":{"description":"Invalid request (unknown parameter, bad value or search syntax).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing or invalid API key."},"429":{"description":"Rate limit or plan allowance reached. Honour `Retry-After`."},"504":{"description":"The query exceeded the time limit; narrow it.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/modified-ats":{"get":{"tags":["Feeds"],"operationId":"modifiedAts","summary":"Modified jobs","description":"Active jobs whose published content changed in the 24 hours up to the last full UTC hour (or the `date_modified_*` window, at most 31 days). Ordered by `date_modified` descending.","parameters":[{"name":"date_modified_gte","in":"query","required":false,"description":"Changed at or after this time.","schema":{"type":"string","format":"date-time"}},{"name":"date_modified_lt","in":"query","required":false,"description":"Changed before this time.","schema":{"type":"string","format":"date-time"}},{"name":"limit","in":"query","required":false,"description":"Jobs per page, 1–1000.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}},{"name":"offset","in":"query","required":false,"description":"Jobs to skip (offset pagination, ordered by `date_posted` descending).","schema":{"type":"integer","minimum":0}},{"name":"cursor","in":"query","required":false,"description":"Cursor pagination: pass the last `id` of the previous page. Orders by `id` ascending and overrides `offset`. Use it for `6m` backfills.","schema":{"type":"integer","format":"int64"}},{"name":"description_format","in":"query","required":false,"description":"Adds `description_text` or `description_html`. Omit it to leave descriptions out.","schema":{"type":"string","enum":["text","html"]}},{"name":"include_source_fields","in":"query","required":false,"description":"Adds `source_fields`: employer-published structured facts (department, pay tiers, qualifications…) with the path where each was found.","schema":{"type":"boolean"}},{"name":"id","in":"query","required":false,"description":"Only these job ids, comma-separated.","schema":{"type":"array","items":{"type":"integer","format":"int64"}},"style":"form","explode":false},{"name":"title","in":"query","required":false,"description":"Search the job title. Google-style: `software engineer` needs both words, `\"software engineer\"` is a phrase, `software OR engineer` either word, `-intern` excludes, `engineer*` matches a prefix. Accents and case are ignored.","schema":{"type":"string"}},{"name":"title_advanced","in":"query","required":false,"description":"Boolean search on the job title. Boolean expression: `&` AND, `|` OR, `!` NOT, `<->` followed by, `<N>` within N words, `'quoted phrase'`, `( )` grouping and `:*` prefix. Takes precedence over the plain parameter.","schema":{"type":"string"}},{"name":"description","in":"query","required":false,"description":"Search title, employer and description together. Google-style: `software engineer` needs both words, `\"software engineer\"` is a phrase, `software OR engineer` either word, `-intern` excludes, `engineer*` matches a prefix. Accents and case are ignored.","schema":{"type":"string"}},{"name":"description_advanced","in":"query","required":false,"description":"Boolean search on title, employer and description. Boolean expression: `&` AND, `|` OR, `!` NOT, `<->` followed by, `<N>` within N words, `'quoted phrase'`, `( )` grouping and `:*` prefix. Takes precedence over the plain parameter.","schema":{"type":"string"}},{"name":"location","in":"query","required":false,"description":"Full place names as `City, Region, Country`: `Canada`, `Ontario, Canada`, `\"Toronto, Ontario, Canada\" OR \"Vancouver, British Columbia, Canada\"`, `California, United States`. A single name matches a region or city of that name. Countries must be written out (`United States`, not `US`).","schema":{"type":"string"}},{"name":"location_advanced","in":"query","required":false,"description":"Boolean search on the derived location text (\"City Region Country\"). Boolean expression: `&` AND, `|` OR, `!` NOT, `<->` followed by, `<N>` within N words, `'quoted phrase'`, `( )` grouping and `:*` prefix. Takes precedence over the plain parameter.","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Country views to include, comma-separated: `CA`, `US` or both (default both). A posting with locations in both countries appears once in each view, with a different `id`.","schema":{"type":"array","items":{"type":"string","enum":["CA","US"]}},"style":"form","explode":false},{"name":"organization","in":"query","required":false,"description":"Exact, case-sensitive employer names, comma-separated. Wrap a name containing a comma in double quotes: `\"Acme, Inc.\"`.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"exclude_organization","in":"query","required":false,"description":"Employer names to exclude; same rules as `organization`.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"organization_advanced","in":"query","required":false,"description":"Boolean search on the employer name. Boolean expression: `&` AND, `|` OR, `!` NOT, `<->` followed by, `<N>` within N words, `'quoted phrase'`, `( )` grouping and `:*` prefix. Takes precedence over the plain parameter.","schema":{"type":"string"}},{"name":"source","in":"query","required":false,"description":"Source systems to include, comma-separated, e.g. `workday,greenhouse,icims`. `lever.co`, `phenompeople` and `taleo` are accepted as aliases.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"exclude_source","in":"query","required":false,"description":"Source systems to exclude.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"date_posted_gte","in":"query","required":false,"description":"Posted at or after this time (ISO 8601, UTC when no zone is given).","schema":{"type":"string","format":"date-time"}},{"name":"date_posted_lt","in":"query","required":false,"description":"Posted before this time.","schema":{"type":"string","format":"date-time"}},{"name":"date_created_gte","in":"query","required":false,"description":"First collected at or after this time. Use it to replay a missed window exactly.","schema":{"type":"string","format":"date-time"}},{"name":"date_created_lt","in":"query","required":false,"description":"First collected before this time.","schema":{"type":"string","format":"date-time"}},{"name":"has_salary","in":"query","required":false,"description":"`true` for jobs whose employer published pay, `false` for jobs without.","schema":{"type":"boolean"}},{"name":"remote","in":"query","required":false,"description":"`true` for jobs the employer marks remote, `false` to exclude them.","schema":{"type":"boolean"}},{"name":"has_no_location","in":"query","required":false,"description":"`true` for jobs without a resolved location.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Jobs","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ModifiedJob"}}}}},"400":{"description":"Invalid request (unknown parameter, bad value or search syntax).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing or invalid API key."},"429":{"description":"Rate limit or plan allowance reached. Honour `Retry-After`."},"504":{"description":"The query exceeded the time limit; narrow it.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/expired-ats":{"get":{"tags":["Feeds"],"operationId":"expiredAts","summary":"Expired jobs","description":"Ids of jobs that left the feed in the window: removed by the employer, or found not to be in the country after all. Delete them from your copy.","parameters":[{"name":"time_frame","in":"query","required":false,"description":"`1h`: the last hour (rolling). `1d`: the previous UTC day. `1m`: 31 days. `6m`: 183 days.","schema":{"type":"string","enum":["1h","1d","1m","6m"],"default":"1d"}},{"name":"country","in":"query","required":false,"description":"Country views, comma-separated (default both).","schema":{"type":"array","items":{"type":"string","enum":["CA","US"]}},"style":"form","explode":false}],"responses":{"200":{"description":"Job ids","content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}}},"400":{"description":"Invalid request (unknown parameter, bad value or search syntax).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing or invalid API key."},"429":{"description":"Rate limit or plan allowance reached. Honour `Retry-After`."},"504":{"description":"The query exceeded the time limit; narrow it.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/ats-organizations":{"get":{"tags":["Organizations"],"operationId":"organizations","summary":"Organization list","description":"Every employer with active jobs, with its source systems, countries and active job count. Refreshed hourly. Use the names with `organization`.","parameters":[{"name":"format","in":"query","required":false,"description":"Response format.","schema":{"type":"string","enum":["json","csv"],"default":"json"}},{"name":"country","in":"query","required":false,"description":"Only employers with jobs in these countries.","schema":{"type":"array","items":{"type":"string","enum":["CA","US"]}},"style":"form","explode":false},{"name":"apiKey","in":"query","required":false,"description":"Your API key, for downloading in a browser. Prefer the Authorization header.","schema":{"type":"string"}}],"responses":{"200":{"description":"Organizations","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Organization"}}},"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"Invalid request (unknown parameter, bad value or search syntax).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"Missing or invalid API key."},"429":{"description":"Rate limit or plan allowance reached. Honour `Retry-After`."},"504":{"description":"The query exceeded the time limit; narrow it.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/jobs":{"get":{"tags":["Search"],"operationId":"searchJobs","summary":"Search jobs","description":"Active jobs in one country, newest first, with `next_cursor` pagination.","parameters":[{"name":"country","in":"query","required":false,"description":"Country view.","schema":{"type":"string","enum":["CA","US"],"default":"CA"}},{"name":"q","in":"query","required":false,"description":"Search title, employer and description. Google-style: `software engineer` needs both words, `\"software engineer\"` is a phrase, `software OR engineer` either word, `-intern` excludes, `engineer*` matches a prefix. Accents and case are ignored.","schema":{"type":"string"}},{"name":"title","in":"query","required":false,"description":"Search the title only.","schema":{"type":"string"}},{"name":"province","in":"query","required":false,"description":"Canadian province codes, e.g. `ON,BC`.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"state","in":"query","required":false,"description":"US state codes, e.g. `NY,CA` (with `country=US`).","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"city","in":"query","required":false,"description":"A city, ideally with its region: `Toronto, ON`.","schema":{"type":"string"}},{"name":"source","in":"query","required":false,"description":"Source systems.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"employment_type","in":"query","required":false,"description":"`FULL_TIME`, `PART_TIME`, `CONTRACTOR`, `TEMPORARY`, `INTERN`, `VOLUNTEER`, `PER_DIEM`.","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false},{"name":"remote","in":"query","required":false,"description":"Remote only, or exclude remote.","schema":{"type":"boolean"}},{"name":"has_salary","in":"query","required":false,"description":"With or without published pay.","schema":{"type":"boolean"}},{"name":"window","in":"query","required":false,"description":"First collected within this window.","schema":{"type":"string","enum":["1h","24h","7d","30d","6m"]}},{"name":"description","in":"query","required":false,"description":"Description fields to add.","schema":{"type":"string","enum":["none","text","html","both"]}},{"name":"source_fields","in":"query","required":false,"description":"Add `source_fields`.","schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"description":"Jobs per page.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}},{"name":"cursor","in":"query","required":false,"description":"`next_cursor` from the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"A page of jobs","content":{"application/json":{"schema":{"type":"object","properties":{"jobs":{"type":"array","items":{"type":"object"}},"next_cursor":{"type":["string","null"]}}}}}},"400":{"description":"Invalid request."},"401":{"description":"Missing or invalid API key."},"429":{"description":"Rate limit or plan allowance reached. Honour `Retry-After`."}}}},"/v1/jobs/{id}":{"get":{"tags":["Search"],"operationId":"getJob","summary":"Get a job","description":"One job with both descriptions and `source_fields`, whatever its status.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"},"description":"Job id."}],"responses":{"200":{"description":"The job","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Missing or invalid API key."},"404":{"description":"No such job."}}}},"/v1/changes":{"get":{"tags":["Search"],"operationId":"changes","summary":"Changes feed","description":"Every created, updated, expired and excluded event for one country, in order. Store `next_since` and pass it back; `more` is true while events remain.","parameters":[{"name":"country","in":"query","required":false,"description":"Country view.","schema":{"type":"string","enum":["CA","US"],"default":"CA"}},{"name":"since","in":"query","required":false,"description":"Last sequence number you processed.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"limit","in":"query","required":false,"description":"Events per page.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}},{"name":"description","in":"query","required":false,"description":"Description fields to add.","schema":{"type":"string","enum":["none","text","html","both"]}},{"name":"source_fields","in":"query","required":false,"description":"Include `source_fields`.","schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"Change events","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request."},"401":{"description":"Missing or invalid API key."}}}},"/v1/stats":{"get":{"tags":["Search"],"operationId":"stats","summary":"Stats","description":"Active jobs per source and region, and board counts, for one country.","parameters":[{"name":"country","in":"query","required":false,"description":"Country view.","schema":{"type":"string","enum":["CA","US"],"default":"CA"}}],"responses":{"200":{"description":"Statistics","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Missing or invalid API key."}}}}},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"`Authorization: Bearer YOUR_API_KEY`"}},"schemas":{"Job":{"type":"object","required":["id","title","url","source","source_type","date_created","country"],"properties":{"id":{"type":"integer","format":"int64","description":"Job id. Stable; match it against `/v1/expired-ats`."},"title":{"type":"string","description":"Job title as published."},"organization":{"type":["string","null"],"description":"Hiring employer."},"organization_url":{"type":"null","description":"Not provided."},"organization_logo":{"type":"null","description":"Not provided."},"date_posted":{"type":["string","null"],"description":"When the employer says the job was posted (UTC). Null when the source does not say.","format":"date-time"},"date_created":{"type":"string","description":"When we first collected the job (UTC). Use it for incremental syncs.","format":"date-time"},"date_valid_through":{"type":["string","null"],"description":"Closing date published by the employer.","format":"date-time"},"locations":{"type":["array","null"],"items":{"type":"object"},"description":"Each location as a schema.org `Place` with a `PostalAddress` (`addressLocality`, `addressRegion` code, `addressCountry`, `postalCode`) and coordinates when known."},"locations_alt":{"type":["array","null"],"items":{"type":"string"},"description":"Location labels, e.g. `Toronto, ON`."},"locations_derived":{"type":["array","null"],"items":{"type":"string"},"description":"Normalized `City, Region, Country` strings, e.g. `Toronto, Ontario, Canada`. This is what `location` searches."},"location_type":{"type":["string","null"],"description":"`TELECOMMUTE` when the employer marks the job remote."},"location_requirements":{"type":"null","description":"Not provided."},"salary":{"type":["object","null"],"description":"Employer-published pay as a schema.org `MonetaryAmount`: `currency` and a `QuantitativeValue` with `minValue`/`maxValue` (or `value`) and `unitText` (`HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`). Never estimated."},"employment_type":{"type":["array","null"],"items":{"type":"string","enum":["FULL_TIME","PART_TIME","CONTRACTOR","TEMPORARY","INTERN","VOLUNTEER","PER_DIEM"]},"description":"Employment types the employer states."},"url":{"type":"string","description":"The original job posting."},"source":{"type":"string","description":"Source system, e.g. `workday`, `greenhouse`, `icims`, `careerpage` (an employer's own career site)."},"source_type":{"type":"string","description":"`ats` or `career_site`."},"source_domain":{"type":["string","null"],"description":"Host of the posting URL."},"source_slug":{"type":["string","null"],"description":"The employer's board on the source system, e.g. `acme` or `acme.wd3.myworkdayjobs.com/External`."},"domain_derived":{"type":"null","description":"Not provided."},"description_text":{"type":["string","null"],"description":"Plain-text description (with `description_format=text`)."},"description_html":{"type":["string","null"],"description":"Original HTML description (with `description_format=html`). Not sanitized."},"cities_derived":{"type":["array","null"],"items":{"type":"string"}},"counties_derived":{"type":"null","description":"Not provided."},"regions_derived":{"type":["array","null"],"items":{"type":"string"},"description":"Province, territory or state names."},"countries_derived":{"type":["array","null"],"items":{"type":"string"}},"timezones_derived":{"type":"null","description":"Not provided."},"lats_derived":{"type":["array","null"],"items":{"type":"number"}},"lngs_derived":{"type":["array","null"],"items":{"type":"number"}},"country":{"type":"string","description":"Country view: `CA` or `US`.","enum":["CA","US"]},"apply_url":{"type":["string","null"],"description":"Separate application link, when the employer publishes one."},"work_arrangement":{"type":["string","null"],"description":"Employer-stated arrangement.","enum":["remote","hybrid","onsite",null]},"source_fields":{"type":["object","null"],"description":"With `include_source_fields=true`: `{version, fields: {name: {value, source_path}}}`, values exactly as the employer published them."}}},"ModifiedJob":{"allOf":[{"$ref":"#/components/schemas/Job"},{"type":"object","properties":{"date_modified":{"type":"string","description":"When the job last changed (UTC).","format":"date-time"},"modified_fields":{"type":"null","description":"Not provided yet; compare with your stored copy."}}}]},"Problem":{"type":"object","required":["type","title","status","detail"],"properties":{"type":{"type":"string","description":"URI of the error type."},"title":{"type":"string","description":"Short summary."},"status":{"type":"integer"},"detail":{"type":"string","description":"What went wrong, safe to show."},"instance":{"type":"string","description":"Request path."}}},"Organization":{"type":"object","properties":{"organization":{"type":"string","description":"Employer name, as used by `organization`."},"sources":{"type":"array","items":{"type":"string"}},"countries":{"type":"array","items":{"type":"string"}},"active_jobs":{"type":"integer"}}}}}}