-
Notifications
You must be signed in to change notification settings - Fork 3
Home
Welcome to the Hack 4 Good Jobs API Documentation. This API is used by the Hack 4 Good Workforce Development Project.
This API provides sample job listings and job-related events.
Browse to the API Dashboard to create an account and obtain your API token.
API Token
Each account will receive a unique token. Each token is rate limited to 60 requests per minute. You may create multiple accounts if you need additional tokens.
Webhook URL
Provide a URL if you would like to receive notifications when new Job records or Event records are added.
Webhook Last Called
The last time we attempted to call your webhook and notify you of new Jobs or Events
Webhook Secret (safe to ignore)
The secret we used to sign the token payload. Read how signing requests work if you would like to understand how the payload is signed so you can verify the signature.
There are several ways of passing the API token to your application. We'll discuss each of these approaches while using the Guzzle HTTP library to demonstrate their usage. You may choose any of these approaches based on the needs of your application.
Your application's API consumers may specify their token as an api_token query string value:
$response = $client->request('GET', '/api/job?api_token='.$token);
Your application's API consumers may include their API token in the request's form parameters as an api_token:
$response = $client->request('POST', '/api/job', [
'headers' => [
'Accept' => 'application/json',
],
'form_params' => [
'api_token' => $token,
],
]);
Your application's API consumers may provide their API token as a Bearer token in the Authorization header of the request:
$response = $client->request('POST', '/api/job', [
'headers' => [
'Authorization' => 'Bearer '.$token,
'Accept' => 'application/json',
],
]);
The URI is api/event
The endpoint returns all events
The only allowed HTTP method is GET.
Name | Description | Required |
---|---|---|
n/a | n/a | n/a |
Each event record is identified by a unique ID. The results are ordered by ID. The ordering is not defined by this specification, but it must be consistent between requests for paging reasons. The maximum number of entries should not exceed the maximum page size of INF.
The response is a JSON array of JSON objects. Each JSON object is an event record and has the following fields.
Key | JSON type | Description |
---|---|---|
id | number | Unique ID for this event. |
date_begin | string | The date/time event begins. Format "YYYY-MM-DD hh:ii:ss" |
date_end | string | The date/time event ends. Format "YYYY-MM-DD hh:ii:ss" |
date_expires | string | The date/time event listing expires. Do not show the event after this date/time. Format "YYYY-MM-DD hh:ii:ss" |
title | string | Event Title |
location | object | Event Location |
event_id | number | Origin Event ID. This is the ID used by the original event publisher. |
description | string | Event Description |
phone | string | Event Contact Phone |
phone | string | Event Contact Email |
cost | number | Cost to attend event in USD |
url | string | URL of the original event posting |
url_image | string | URL of the original event image |
created_at | string | Record created timestamp |
updated_at | string | Record updated timestamp |
Example URL
https://jobs.api.sgf.dev/api/event?api_token=TOKEN_GOES_HERE
Example HTTP request header
No headers required unless you are developing a website and need CORS.
Your website JS code must pass optional "Origin" header containing your website URL.
Example HTTP response header
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
Example HTTP response content
"data": [
{
"id": 1,
"date_begin": "2019-11-26 07:55:31",
"date_end": "2019-11-26 07:55:31",
"date_expires": null,
"title": "Boyer-Raynor Hiring Event",
"location": {
"id": 65,
"name": "AMAX Hewitt Realty",
"street": "909 E. Republic Rd., Suite B-200",
"city": "Springfield",
"state": "MO",
"zipcode": "65807",
"created_at": "2019-11-01T22:21:27.000000Z",
"updated_at": "2019-11-01T22:21:27.000000Z"
},
"event_id": 10568,
"description": "Ex animi quia velit praesentium ullam sunt. Ex velit explicabo optio eaque magnam et suscipit. Inventore minima consectetur quae accusantium. Reprehenderit ut error quibusdam a distinctio ducimus.",
"phone": "663.913.9924 x159",
"email": "[email protected]",
"cost": 90,
"url": "https://hack4goodsgf.com/projects/workforce/?event=10568",
"url_image": "https://hack4goodsgf.com/projects/workforce/?event_image=10568",
"created_at": "2019-11-01T22:21:41.000000Z",
"updated_at": "2019-11-01T22:21:41.000000Z"
},
...
],
"links": {
"self": "/api/event"
}
}
The URI is api/job
The endpoint returns all jobs
The only allowed HTTP method is GET.
Name | Description | Required |
---|---|---|
n/a | n/a | n/a |
A lay description of the response followed by more technical details.
JSON Output Documentation
Key | JSON type | Description |
---|---|---|
id | number | Unique ID for this job |
date_posted | string | The date job listing was posted. Format "YYYY-MM-DD" |
date_updated | string | The date job listing was updated. Format "YYYY-MM-DD" |
date_expires | string | The date job listing expired. Do not show the event after this date. Format "YYYY-MM-DD" |
_employer_id_ | _string_ | _DEPRECATED - DO NOT USE - SEE EMPLOYER OBJECT BELOW_ |
employer | object | Employer (name, category, naics, created_at, updated_at) |
locations | object | List of Job Locations (id, name, street, city, state, zipcode, created_at, updated_at) |
title | string | Job Title |
description | string | Job Description HTML |
job_type | string | values: null, full_time, part_time, internship, casual, temporary, contractor |
job_id | number | Source Job ID |
pay_rate | string | Pay rate in various formats ( |
req_education | string | values: null, high_school, associate, bachelor, master, doctorate |
data_source | string | Name of data source for this job record |
data_site | string | Domain of data source for this job record |
url | string | URL of the original job posting |
created_at | string | Record created timestamp |
updated_at | string | Record updated timestamp |
Example URL
https://jobs.api.sgf.dev/api/job?api_token=TOKEN_GOES_HERE
Example HTTP request header
No headers required unless you are developing a website and need CORS.
Your website JS code must pass optional "Origin" header containing your website URL.
Example HTTP response header
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
Example HTTP response content
"data": [
{
"id": 1,
"date_posted": "2019-10-20",
"date_updated": "2019-11-01",
"date_expires": "2019-11-11",
"employer_id": 15,
"employer": {
"id": 15,
"name": "Ankunding Ltd",
"category": "Ameliorated 24hour emulation",
"naics": 362688,
"created_at": "2019-11-01T22:21:09.000000Z",
"updated_at": "2019-11-01T22:21:09.000000Z"
},
"locations": {
"data": [
{
"id": 51,
"name": "Professional Service",
"street": "555 S. Jefferson",
"city": "Springfield",
"state": "MO",
"zipcode": "65807",
"created_at": "2019-11-01T22:21:25.000000Z",
"updated_at": "2019-11-01T22:21:25.000000Z"
},
...
],
"links": {
"self": "/api/location"
}
},
"title": "Outdoor Power Equipment Mechanic",
"description": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. <b>Lorem ipsum dolor sit amet, consectetur adipiscing elit</b>. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. <b>Lorem ipsum dolor sit amet, consectetur adipiscing elit</b>. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p><p>Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. <i>Lorem ipsum dolor sit amet, consectetur adipiscing elit</i>. Fusce ac turpis quis ligula lacinia aliquet. </p><p>Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam nec ante. <b>Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa</b>. Sed lacinia, urna non tincidunt mattis, tortor neque adipiscing diam, a cursus ipsum ante quis turpis. Nulla facilisi. Ut fringilla. Suspendisse potenti. Nunc feugiat mi a tellus consequat imperdiet. Vestibulum sapien. Proin quam. Etiam ultrices. </p>",
"job_type": "full_time",
"job_id": 668834,
"pay_rate": "$55,000 per year",
"req_education": "high_school",
"data_source": "Hack 4 Good Springfield",
"data_site": "hack4goodsgf.com",
"url": "https://hack4goodsgf.com/projects/workforce/?job=668834",
"fake": 1,
"created_at": "2019-11-01T22:21:21.000000Z",
"updated_at": "2019-11-02T09:50:36.000000Z"
},
...
],
"links": {
"self": "/api/job"
}
}