A node.js JS SDK for the Procore API.
Note: ECMAScript target is ES5.
- Node.js version 10.12 and above.
- A registered app on the Procore Developer Portal.
- A Node.js web server (such as Express) for server authentication.
yarn add @procore/js-sdkWe recommend installing the package with yarn.
At the core of the package is the client object. Clients are initialized with a
client_id and client_secret which can be obtained by signing up for
Procore's Developer Program. The redirect_uri
used for authorization must be specified on the Manage App page for the App
associated with the client_id in use.
The Client object exposes #get, #post, #put, #patch, and #delete methods to you.
client.get({ base, version?, action?, params?, qs? }: EndpointConfig)
client.post({ base, version?, action?, params?, qs? }: EndpointConfig)
client.put({ base, version?, action?, params?, qs? }: EndpointConfig)
client.patch({ base, version?, action?, params?, qs? }: EndpointConfig)
client.delete({ base, version?, action?, params?, qs? }: EndpointConfig)Use js-sdk-sample-app as a getting started example application.
All paths are relative to https://{apiHostname}/{vapid|rest/{version}}/,
the @procore/js-sdk will handle expanding them.
An API version may be specified in the version attribute to the client[method]
function call, or the defaultVersion is used. The default version is v1.0 unless
otherwise configured when instantiating the client
(client(Authorizer, RequestInit, { defaultVersion: 'vapid' })).
A company id may be specified in the companyId attribute to the client[method]
function call, or the defaultCompanyId value will be used when appending the
Procore-Company-Id header to the request.
(client(Authorizer, RequestInit, { defaultCompanyId: 10 })).
| Example | Requested URL |
|---|---|
client.get({ base: '/example/{id}', params: { id: 42 } }) |
https://app.procore.com/rest/v1.0/example/42 |
client.get({ base: '/example/{id}', params: { id: 42 }, version: 'v1.1' }) |
https://app.procore.com/rest/v1.1/example/42 |
client.get({ base: '/example/{id}', params: { id: 42 }, version: 'vapid' }) |
https://app.procore.com/vapid/example/42 |
A single API response contains the response body (JSON parsed), original request, and complete response: { body, request, response }.
isomorphic-fetch is the underlying http library, so both the request and response follow its specification. See fetch for more details.
const procore = client(authorizer);
procore.get({
base: '/projects',
qs: { company_id: 1 }
},
{
companyId: 1
})
.then({ body, request, response } => {
console.log(body[0].name); // ACME Construction LLC.
console.log(response.headers.get('Total')) // 865 (Total records for the resource)
})
.catch(error => {
//Handle error
console.log(error);
});or
const procore = client(authorizer);
async function getProjects() {
const { body, request, response } = await procore
.get({
base: '/projects',
qs: { company_id: 1 }
},
{
companyId: 1
})
.catch(error => {
// Handle error
console.log(error);
});
console.log(body[0].name); // ACME Construction LLC.
console.log(response.headers.get('Total')) // 865 (Total records for the resource)
}
getProjects();By default, the SDK tries to format the body as JSON, you can control the
formatting of the body by passing the formatter option as follows:
const procore = client(authorizer);
// Create your own formatter
function formatter(response) {
// Your custom formatter code.
// Response supports .text() and .json()
}
// Pass the formatter configuration
procore.get({base: '/me'}, { formatter })All requests to the Procore API must include the Procore-Company-Id header to support Multiple Procore Zones (MPZ). See
Multiple Procore Zones (MPZ) for more details. A Procore-Company-Id header will automatically be added to the request if the defaultCompanyId parameter is passed in the ClientOptions object or companyId parameter is passed in the RequestConfig object.
// Pass the defaultCompanyId configuration in the ClientOptions
const procore = client(authorizer, undefined, { defaultCompanyId: 10 });
procore.get(
{ base: "/projects" }
);or
const procore = client(authorizer);
// Pass the companyId configuration in the RequestConfig
procore.get(
{ base: "/projects" },
{ companyId: procoreCompanyId }
);yarn && yarn test
Bug reports and pull requests are welcome on GitHub at https://github.com/procore/js-sdk. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
- Create PR with version change
npm version minor - Merge PR
- Circle Ci will release a new version of the package
Use npm publish --dry-run to verify the contents of your new version.
The package is available as open source under the terms of the MIT License.
The @procore/js-sdk is maintained by Procore Technologies.
Procore - building the software that builds the world.
Learn more about the #1 most widely used construction management software at procore.com