Represents a single job instance.
https://www.bcjobs.ca/api/v1.1/jobs/{id}
Property | Type | Description | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | Int32 | Unique identifier of the job. | |||||||||||||||||||||||||||||
referenceId | String (max 50) | Employer's unique identifier of the job. If one is not provided by the employer, this value is empty string. | |||||||||||||||||||||||||||||
employer | Object | The employer to which this job belongs. This object has the following properties: | |||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
title | String (max 256) | Title of the job. | |||||||||||||||||||||||||||||
publishDate | Date (ISO 8601) | The date the job was published. | |||||||||||||||||||||||||||||
closeDate | Date (ISO 8601) | The date the job will close. | |||||||||||||||||||||||||||||
confidential | Boolean | true if the employer name is confidential, false if the employer name is not confidential. | |||||||||||||||||||||||||||||
autoRefresh | Boolean |
true if auto-refresh is enabled for the job. Auto-refresh will automatically refresh the publish date every 7 days.
This is only applicable for employers on unlimited job plans |
|||||||||||||||||||||||||||||
status | String (max 10) |
The current status of the job. Possible values:
|
|||||||||||||||||||||||||||||
locations | Array of Objects |
Each object contains the following properties. See Locations for full details. |
|||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
categories | Array of Objects |
Each object contains the following properties. See Job Categories for a full list. |
|||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
positionType | Object |
Position type of the job. See Position Types for a full list. |
|||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
salary | Object |
Salary for the job. Note: if salary is not defined, this will be null |
|||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
description | String | HTML formatted job description. | |||||||||||||||||||||||||||||
applicantRoutingType | Object | Object with the following properties: | |||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
applicationEmail | String (max 50) | Email address where a copy of the job application will be sent. Only applicable when the applicant routing type is Email. | |||||||||||||||||||||||||||||
applicationUrl | String (max 200) | URL where candidates will be directed to apply for the job. Only applicable when the applicant routing type is URL. |
Authentication: Required
https://www.bcjobs.ca/api/v1.1/jobs/183668
{ "applicantRoutingType":{ "id":1, "name":"Email" }, "status":"active", "employer":{ "id":72, "name":"Pure Media Designs" }, "referenceId":null, "applicationUrl":null, "id":183668, "title":"Account Manager", "locations":[ {"id":156,"description":"Vancouver, BC","name":"Vancouver","type":"Town"}, {"id":405,"description":"Whistler, BC","name":"Whistler","type":"Town"} ], "description":"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>", "positionType":{ "id":1, "name":"Full Time" }, "categories":[ {"id":1,"name":"Account Management"}, {"id":2,"name":"Sales & Marketing"} ], "salary": { "amount": 90000.00, "maxAmount": null, "period": { "id": 1, "name": "Yearly", "unit": "year" }, "plusCommission": false }, "applicationEmail":"johnny@email.com", "publishDate":"2018-03-28", "closeDate":"2018-05-27", "autoRefresh": false, "confidential":false }
HTTP POST allows you to create a new job. The JSON format expected from HTTP POST is symmetrical with the result returned from GET. For example, if you take the object returned from GET, remove the id and referenceId properties and POST it back, you will create a new job with the same property values.
Authentication: Required
Property | Type | Required? | Description |
---|---|---|---|
referenceId | String (max 50) |
Company's unique identifier of the job. If you have a referenceId, we recommend that you use HTTP PUT instead, because HTTP PUT is idempotent (i.e. multiple requests puts the server into the same state). POSTing the same referenceId multiple times will reject the request after the first time. |
|
title | String (max 256) | ✓ | |
closeDate | Date (ISO 8601) |
The date that the job should close. The publishDate will be set automatically by the API and is read-only, but the closeDate can be set explicity. If a closeDate is not provided, it will be set to 60 days after the publishDate. |
|
confidential | Boolean |
true if the employer name is confidential. false if the employer name is not confidential.
The default is false. |
|
autoRefresh | Boolean |
true to enable auto-refresh. false to disable auto-refresh. Auto-refresh will automatically refresh the publish date every 7 days.
The default is false and is only applicable for employers on unlimited job plans. |
|
status | String (max 10) |
The status of the job. The following values are accepted:
|
|
locations:[{description}] | Array of Objects | ✓ |
An array of location objects. At least one is required and up to three is allowed. See Locations for more info. To include a location, set the description property in one of two ways:
Example: "locations":[ {"description":"Vancouver, BC"}, {"description":"Whistler, BC"} ]Note: Even if the location is not currently in our system (as found through our Locations end point, if you send a valid Canadian location, it will be accepted. |
categories:[{id}] | Int32 | ✓ |
An array of job category objects. At least one is required and up to three is allowed. See Job Categories for a full list. Example: "categories":[ {"id":7}, {"id":9} ] |
positionType.id | Int32 | ✓ |
The position type of the job. See Position Types for a full list. |
salary.amount | Decimal |
Base salary amount. |
|
salary.maxAmount | Decimal |
Max salary amount. |
|
salary.period.id | Int32 | ✓* |
Unique identifier of the salary period. Possible values:
|
salary.plusCommission | Boolean |
true if job earns commission.
The default is false. |
|
description | String | ✓ |
The job description in HTML format. Technically there is no limitation on the length of the job description, but practically we would like you to keep this length to within reason so that candidates can easily consume it. The following tags are allowed: strong, b, em, i, br, p, div, ul, ol, li, a HTML attributes:
|
applicantRoutingType.id | Int32 | ✓ |
Unique identifier of the applicant routing type. Possible values:
|
applicationEmail | String (max 50) | ✓* |
Email address where a copy of the job application will be sent. *This property is required if applicantRoutingType.id is 1. |
applicationUrl | String (max 200) | ✓* |
URL (including http:// or https://) where candidates will be directed to apply for the job. *This property is required if applicantRoutingType.id is 2. |
Create a new job:
POST https://www.bcjobs.ca/api/v1.1/jobs HTTP/1.1 Host: www.bcjobs.ca API-Key: 932d2608-2e18-41f7-bf24-caa922ee9d23 Content-Type: application/json; charset=UTF-8 Content-Length: 471 { "title":"Account Manager", "status":"active", "locations":[ {"description":"Vancouver, BC"}, {"description":"Whistler, BC"} ], "categories":[ {"id":7}, {"id":9} ], "positionType":{ "id":1 }, "salary": { "amount": 90000.00, "maxAmount": 110000.00, "period": { "id": 1 }, "plusCommission": true }, "description":"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>", "applicantRoutingType":{ "id":1 }, "applicationEmail":"johnny@email.com" }
HTTP/1.1 201 Created Content-Length: 665 Content-Type: application/json Location: https://www.bcjobs.ca/api/v1.1/jobs/183668 { "applicationEmail":"johnny@email.com", "applicantRoutingType":{ "name":"Email", "id":1 }, "positionType":{ "name":"Full Time", "id":1 }, "description":"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>", "employer":{ "name":"Pure Media Designs", "id":72 }, "publishDate":"2018-04-02", "closeDate":"2018-06-01", "status":"active", "locations":[ {"name":"Vancouver","description":"Vancouver, BC","id":156,"type":"Town"}, {"name":"Whistler","description":"Whistler, BC","id":405,"type":"Town"} ], "applicationUrl":null, "confidential":false, "autoRefresh": false, "id":183668, "salary": { "amount": 90000.0000, "maxAmount": 110000.0000, "period": { "id": 1, "name": "Yearly", "unit": "year" }, "plusCommission": true }, "categories":[ {"name":"Account Management","id":7}, {"name":"Sales & Marketing","id":9} ], "referenceId":null, "title":"Account Manager" }
Create a new job:
Note: in this scenario where you have a referenceId, we recommend that you use HTTP PUT instead of HTTP POST, as HTTP PUT is idempotent (i.e. multiple requests puts the server into the same state). You can use HTTP PUT to both create and modify a job without worry. On the other hand, POSTing the same referenceId multiple times will reject the request after the first time.
POST https://www.bcjobs.ca/api/v1.1/jobs HTTP/1.1 Host: www.bcjobs.ca API-Key: 932d2608-2e18-41f7-bf24-caa922ee9d23 Content-Type: application/json; charset=UTF-8 Content-Length: 519 { "referenceId":"job-001", "title":"Account Manager", "status":"active", "locations":[ {"description":"Vancouver, BC"}, {"description":"Whistler, BC"} ], "closeDate":"2018-04-20", "categories":[ {"id":7}, {"id":9} ], "positionType":{ "id":1 }, "salary": { "amount": 90000.00, "maxAmount": 110000.00, "period": { "id": 1 }, "plusCommission": true }, "description":"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>", "applicantRoutingType":{ "id":2 }, "applicationUrl":"http://www.company.com/job001" }
HTTP/1.1 201 Created Content-Length: 697 Content-Type: application/json Location: https://www.bcjobs.ca/api/v1.1/jobs/183668 { "applicationEmail":null, "applicantRoutingType":{ "name":"URL", "id":2 }, "positionType":{ "name":"Full Time", "id":1 }, "description":"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>", "employer":{ "name":"Pure Media Designs", "id":72 }, "publishDate":"2018-04-03", "closeDate":"2018-04-20", "status":"active", "locations":[ {"name":"Vancouver","description":"Vancouver, BC","id":156,"type":"Town"}, {"name":"Whistler","description":"Whistler, BC","id":405,"type":"Town"} ], "applicationUrl":"http:\/\/www.company.com\/job001", "confidential":false, "autoRefresh": false, "id":202054, "salary": { "amount": 90000.0000, "maxAmount": 110000.0000, "period": { "id": 1, "name": "Yearly", "unit": "year" }, "plusCommission": true }, "categories":[ {"name":"Account Management","id":7}, {"name":"Sales & Marketing","id":9} ], "referenceId":"job-001", "title":"Account Manager" }
HTTP PUT allows you to create a new job (with a referenceId) or update an existing job. The JSON format expected from HTTP PUT is symmetrical with the result returned from GET. For example, if you take the object returned from GET, change a few properties and PUT it back to the server, your request will succeed.
When modifying a job with HTTP PUT, we treat your request more like HTTP PATCH than a true HTTP PUT.
This means that we support partial updates. For example, if you just want to modify the job title, you can
just send the title {"title":"Updated Job Title"}
instead of sending the whole object graph.
Authentication: Required
The parameters are the same as HTTP POST.
There are 2 mechanisms that you can use to identify a job:
https://www.bcjobs.ca/api/v1.1/jobs/183668
{"referenceId":"job-001"}
Create a new job with referenceId.
Creating a new job using referenceId is the exact same as Example 2 in HTTP POST, except that you will change the method to PUT.
Modify a job with job id.
PUT https://www.bcjobs.ca/api/v1.1/jobs/183668 HTTP/1.1 Host: www.bcjobs.ca API-Key: 932d2608-2e18-41f7-bf24-caa922ee9d23 Content-Type: application/json; charset=UTF-8 Content-Length: 471 { "title":"Account Manager", "status":"active", "locations":[ {"description":"Vancouver, BC"}, {"description":"Whistler, BC"} ], "categories":[ {"id":7}, {"id":9} ], "positionType":{ "id":1 }, "salary": { "amount": 90000.00, "maxAmount": 110000.00, "period": { "id": 1 }, "plusCommission": true }, "description":"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>", "applicantRoutingType":{ "id":1 }, "applicationEmail":"johnny@email.com" }
HTTP/1.1 200 OK Content-Length: 666 Content-Type: application/json { "applicationEmail":"johnny@email.com", "applicantRoutingType":{ "name":"Email", "id":1 }, "positionType":{ "name":"Full Time", "id":1 }, "description":"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>", "employer":{ "name":"Pure Media Designs", "id":72 }, "publishDate":"2018-03-28", "closeDate":"2018-05-27", "status":"active", "locations":[ {"name":"Vancouver","description":"Vancouver, BC","id":156,"type":"Town"}, {"name":"Whistler","description":"Whistler, BC","id":405,"type":"Town"} ], "applicationUrl":null, "confidential":false, "autoRefresh": false, "id":183668, "salary": { "amount": 90000.0000, "maxAmount": 110000.0000, "period": { "id": 1, "name": "Yearly", "unit": "year" }, "plusCommission": true }, "categories":[ {"name":"Account Management","id":7}, {"name":"Sales & Marketing","id":9} ], "referenceId":null, "title":"Account Manager" }
Modify a job with referenceId.
Note: job id is no longer required, but referenceId is now required to identify the resource.
PUT https://www.bcjobs.ca/api/v1.1/jobs HTTP/1.1 Host: www.bcjobs.ca API-Key: 932d2608-2e18-41f7-bf24-caa922ee9d23 Content-Type: application/json; charset=UTF-8 Content-Length: 501 { "referenceId":"job-001", "title":"Account Manager", "status":"active", "locations":[ {"description":"Vancouver, BC"}, {"description":"Whistler, BC"} ], "categories":[ {"id":7}, {"id":9} ], "positionType":{ "id":1 }, "salary": { "amount": 90000.00, "maxAmount": 110000.00, "period": { "id": 1 }, "plusCommission": true }, "description":"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>", "applicantRoutingType":{ "id":1 }, "applicationEmail":"johnny@email.com" }
HTTP/1.1 200 OK Content-Length: 694 Content-Type: application/json { "applicationEmail":"johnny@email.com", "applicantRoutingType":{ "name":"Email", "id":1 }, "positionType":{ "name":"Full Time", "id":1 }, "description":"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>", "employer":{ "name":"Pure Media Designs", "id":72 }, "publishDate":"2018-04-03", "closeDate":"2018-06-02", "status":"active", "locations":[ {"name":"Vancouver","description":"Vancouver, BC","id":156,"type":"Town"}, {"name":"Whistler","description":"Whistler, BC","id":405,"type":"Town"} ], "applicationUrl":null, "confidential":false, "autoRefresh": false, "id":202046, "salary": { "amount": 90000.0000, "maxAmount": 110000.0000, "period": { "id": 1, "name": "Yearly", "unit": "year" }, "plusCommission": true }, "categories":[ {"name":"Account Management","id":7}, {"name":"Sales & Marketing","id":9} ], "referenceId":"job-001", "title":"Account Manager" }
Archive a job with job id.
PUT https://www.bcjobs.ca/api/v1.1/jobs/183668 HTTP/1.1 Host: www.bcjobs.ca API-Key: 932d2608-2e18-41f7-bf24-caa922ee9d23 Content-Type: application/json; charset=UTF-8 Content-Length: 29 { "status":"archived" }
HTTP/1.1 200 OK Content-Length: 668 Content-Type: application/json { "applicationEmail":"johnny@email.com", "applicantRoutingType":{ "name":"Email", "id":1 }, "positionType":{ "name":"Full Time", "id":1 }, "description":"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit...</p>", "employer":{ "name":"Pure Media Designs", "id":72 }, "publishDate":"2018-04-03", "closeDate":"2018-06-02", "status":"archived", "locations":[ {"name":"Vancouver","description":"Vancouver, BC","id":156,"type":"Town"}, {"name":"Whistler","description":"Whistler, BC","id":405,"type":"Town"} ], "applicationUrl":null, "confidential":false, "autoRefresh": false, "id":183668, "salary": { "amount": 90000.0000, "maxAmount": 110000.0000, "period": { "id": 1, "name": "Yearly", "unit": "year" }, "plusCommission": true }, "categories":[ {"name":"Account Management","id":7}, {"name":"Sales & Marketing","id":9} ], "referenceId":null, "title":"Account Manager" }
Archive a job with referenceId.
PUT https://www.bcjobs.ca/api/v1.1/jobs HTTP/1.1 Host: www.bcjobs.ca API-Key: 932d2608-2e18-41f7-bf24-caa922ee9d23 Content-Type: application/json; charset=UTF-8 Content-Length: 59 { "referenceId":"job-001", "status":"archived" }
Response is similar to Example 4.
Publish an archived job with job id.
PUT https://www.bcjobs.ca/api/v1.1/jobs/183668 HTTP/1.1 Host: www.bcjobs.ca API-Key: 932d2608-2e18-41f7-bf24-caa922ee9d23 Content-Type: application/json; charset=UTF-8 Content-Length: 27 { "status":"active" }
Response is similar to Example 4.
HTTP DELETE allows you to delete a job.
There are 2 mechanisms that you can use to identify a job:
https://www.bcjobs.ca/api/v1.1/jobs/183668
{"referenceId":"job-001"}
Delete a job with job id.
DELETE https://www.bcjobs.ca/api/v1.1/jobs/183668 HTTP/1.1 Host: www.bcjobs.ca API-Key: 932d2608-2e18-41f7-bf24-caa922ee9d23 Content-Type: application/json; charset=UTF-8 Content-Length: 0
HTTP/1.1 204 No Content
Delete a job with referenceId.
DELETE https://www.bcjobs.ca/api/v1.1/jobs HTTP/1.1 Host: www.bcjobs.ca API-Key: 932d2608-2e18-41f7-bf24-caa922ee9d23 Content-Type: application/json; charset=UTF-8 Content-Length: 31 { "referenceId":"job-001" }
HTTP/1.1 204 No Content
Represents a list of job headers.
https://www.bcjobs.ca/api/v1.1/jobs
This API returns job headers, which is a subset of jobs. The available properties are listed below, but the type and description are ommitted because they are identical to the properties of a job and is described above.
Returns a list of job headers for the authenticated employer. The list includes paging information and is sorted by publishDate in descending order.
Authentication: Required
Paramter | Type | Required? | Description |
---|---|---|---|
q | String | No | Job query term. This will match job title and referenceId. If this parameter is ommitted, then jobs will not be filtered by term. |
status | String | No |
Pass in a status to filter the list to only include jobs with the specified status. Possible values are:
|
pageSize | Int32 | No | Specifies the number of records to return at a time. The default is 10 and the maximum is 100. |
page | Int32 | No | Specifies which page to return. The default is 1. |
Request all job headers for the authenticated employer.
https://www.bcjobs.ca/api/v1.1/jobs
HTTP/1.1 200 OK Content-Length: 719 Content-Type: application/json { "data":[ { "id":183668, "title":"Account Manager", "locations":[ {"id":156,"description":"Vancouver, BC","name":"Vancouver","type":"Town"}, {"id":405,"description":"Whistler, BC","name":"Whistler","type":"Town"} ], "employer":{ "id":72, "name":"Pure Media Designs" }, "referenceId":null, "publishDate":"2018-03-28", "confidential":false, "status":"active" }, ... ], "paging":{ "total":25, "previous":null, "page":1, "pages":3, "next":"https://www.bcjobs.ca/api/v1.1/jobs?pageSize=10&page=2", "pageSize":10 } }
Request active job headers for the authenticated employer with page size of 20.
https://www.bcjobs.ca/api/v1.1/jobs?status=active&pageSize=20
HTTP/1.1 200 OK Content-Length: 719 Content-Type: application/json { "data":[ { "id":183668, "title":"Account Manager", "locations":[ {"id":156,"description":"Vancouver, BC","name":"Vancouver","type":"Town"}, {"id":405,"description":"Whistler, BC","name":"Whistler","type":"Town"} ], "employer":{ "id":72, "name":"Pure Media Designs" }, "referenceId":null, "publishDate":"2018-03-28", "confidential":false, "status":"active" }, ... ], "paging":{ "total":21, "previous":null, "page":1, "pages":2, "next":"https://www.bcjobs.ca/api/v1.1/jobs?status=active&pageSize=20&page=2", "pageSize":20 } }