{ "openapi": "3.0.0", "servers": [ { "url": "https://workbcjobs.api.gov.bc.ca/v1", "description": "Production" } ], "info": { "title": "WorkBC Job Posting API", "description": "This API allows you to receive a feed of jobs from WorkBC's Job Board. Please see our data collection notice. Please note that you may experience issues when submitting requests to the delivery or test environment if using this [OpenAPI specification](https://github.com/bcgov/api-specs) in other API console viewers.", "version": "1.0.0" }, "paths": { "/majorProjects": { "get": { "tags": [ "Job Feed" ], "summary": "Major Projects", "description": "The Major Projects endpoint returns details of all of the\nmajor projects defined in WorkBC's Job Board. The response includes the\nid and caption.\n", "responses": { "200": { "description": "An array of major projects", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MajorProject" } } } } }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/jobTypes": { "get": { "tags": [ "Job Feed" ], "summary": "Job Types", "description": "The Job Types endpoint returns details of all of the\njob types defined in WorkBC's Job Board. The response includes the\nid and caption.\n", "responses": { "200": { "description": "An array of job types", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/JobType" } } } } }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/regions": { "get": { "tags": [ "Job Feed" ], "summary": "Regions", "description": "The Regions endpoint returns details of all of the\nregions defined in WorkBC's Job Board. The response includes the\nid and caption.\n", "responses": { "200": { "description": "An array of regions", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Region" } } } } }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/Industries": { "get": { "tags": [ "Job Feed" ], "summary": "Industries", "description": "The Industries endpoint returns all the Industries and related sub industries \ndefined in WorkBC's Job Board. The response includes the id and caption for \neach industry and each sub industry.\n", "responses": { "200": { "description": "An array of industries and sub industries", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Industry" } } } } }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/jobs": { "post": { "tags": [ "Job Feed" ], "summary": "Job Feed", "description": "The job feed endpoint returns an array of job records that satisfy the supplied criteria.", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "lastRequestDate": { "description": "The date of the last request. Only job postings changed or deleted after this time will be included in the response. Default is _today_ - 10 days.", "type": "string", "enum": [ "2018-08-29T00:00:00.000Z" ], "default": "2018-08-29" }, "region": { "description": "The unique id of a region within B.C. Only job postings located within the specified region will be included in the response. If not specified, the data is not filtered by region", "type": "integer", "enum": [ 1, 2 ], "default": 1 }, "city": { "description": "The name of a city within B.C. Only job postings located within the specified city will be included in the response. If not specified, the data is not filtered by city.", "type": "string", "enum": [ "Victoria", "Vancouver" ], "default": "Victoria" }, "jobTypes": { "description": "ID values for types of job to filter on. Only job postings matching all specified values will be included in the response. If not specified, the data is not filtered by job type.", "type": "integer", "enum": [ [ 1 ], [ 2 ] ], "default": [ 1 ] }, "majorProjects": { "description": "When true, only include job postings that have a Major Project associated with them. When false, only include job postings that do not have a Major Project associated with them. If not specified, the data is not filtered by major project, unless the MajorProjectID parameter is used.", "type": "boolean", "default": true } } }, "encoding": { "color": { "style": "form", "explode": true } } } } }, "responses": { "200": { "description": "A set of job records.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobFeedResponse" } } } }, "default": { "description": "Unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } } }, "components": { "schemas": { "Job": { "type": "object", "properties": { "JobID": { "type": "integer", "description": "The unique id of the job in the WorkBC Job Board database." }, "RecordType": { "$ref": "#/components/schemas/RecordType" }, "JobTitle": { "type": "string", "description": "The name of the job posting." }, "EmployerName": { "type": "string", "description": "The name of the employer who is offering the job." }, "JobDescription": { "type": "string", "description": "Details of the job posting. This is limited to 250 characters, and HTML tags are stripped out. For a full description, use the Url property to view the job posting on the WorkBC website." }, "Locations": { "type": "array", "description": "Details of all of the locations where the job is available.", "items": { "$ref": "#/components/schemas/Location" } }, "Url": { "description": "The URL for the live job posting on the WorkBC website.", "type": "string" }, "PostedDate": { "description": "The date that the job was posted.", "type": "string", "format": "date-time" }, "ExpiryDate": { "description": "The date that the job will expire. It is the caller's responsibility to remove job postings once they expire. After this date the supplied Url will show a 404 page.", "type": "string", "format": "date-time" }, "SalaryType": { "type": "string" }, "SalaryMultiplier": { "description": "The amount to multiply SalaryMin and SalaryMax by in order to convert to annual values. This is needed if you want to compare salaries for jobs that have been posted using different salary types.", "type": "integer" }, "SalaryMin": { "type": "number", "format": "double" }, "SalaryMax": { "type": "number", "format": "double" }, "JobTypes": { "type": "array", "description": "The types of work associated with this job.", "items": { "$ref": "#/components/schemas/JobType" } }, "MajorProject": { "$ref": "#/components/schemas/MajorProject" } } }, "MajorProject": { "type": "object", "properties": { "ID": { "type": "integer", "description": "The unique ID of the Major Project in the WorkBC Job Board database. Use this when restricting the Job Feed to only one Major Project." }, "Caption": { "type": "string", "description": "The name of the Major Project." } } }, "JobType": { "type": "object", "properties": { "ID": { "$ref": "#/components/schemas/JobTypeID" }, "Caption": { "type": "string", "description": "The name of the Job Type." } } }, "Region": { "type": "object", "properties": { "ID": { "$ref": "#/components/schemas/RegionID" }, "Caption": { "type": "string", "description": "The name of the Region." } } }, "Industry": { "type": "object", "properties": { "ID": { "type": "integer", "description": "Industry ID." }, "Caption": { "type": "string", "description": "The name of the Industries." }, "SubIndustries": { "type": "array", "items": { "$ref": "#/components/schemas/SubIndustry" } } } }, "SubIndustry": { "type": "object", "properties": { "ID": { "type": "integer", "description": "Sub Industry ID." }, "Caption": { "type": "string", "description": "The name of the SubIndustries." } } }, "RecordType": { "type": "integer", "description": "The type of change that has happened to this job.", "enum": [ "Undefined", "Update", "Delete" ] }, "RegionID": { "type": "integer", "description": "A region within B.C.", "enum": [ "Undefined", "Vancouver Island/Coast", "Mainland/Southwest", "Thompson-Okanagan", "Kootenay", "Cariboo", "North Coast", "Nechako", "Northeast" ] }, "JobTypeID": { "type": "integer", "description": "The type of work.", "enum": [ "Undefined0", "Full-Time", "Part-Time", "Contract", "Undefined4", "Undefined5", "Student", "Undefined7", "Undefined8", "Casual", "Seasonal", "Temporary", "Permanent", "Co-op", "Apprenticeship" ] }, "Location": { "type": "object", "description": "Details of where a job is located. A job can have up to three associated locations.", "properties": { "City": { "type": "string", "description": "The name of the city where the job is located." }, "RegionID": { "$ref": "#/components/schemas/Region" }, "RegionName": { "type": "string", "description": "The name of the region in B.C. where the job is located." }, "Province": { "type": "string", "description": "The name of the province where the job is located." } } }, "Error": { "type": "object", "properties": { "Message": { "type": "string" } } }, "JobFeedResponse": { "type": "object", "properties": { "Jobs": { "type": "array", "items": { "$ref": "#/components/schemas/Job" } } } } } } }