@palmetto/product-catalog-sdk
v1.5.0
Published
An isomorphic client for integrating with the Palmetto Product Catalog API
Keywords
Readme
Palmetto Products API SDK
An isomorphic client for integrating with the Palmetto Product Catalog API
Installation
yarn add @palmetto/product-catalog-sdkGetting started
Create a new client
import { ProductsApiClient } from "@palmetto/product-catalog-sdk"; const client = new ProductsApiClient({ // Does not include /api apiUrl: "https://next.palmetto.energy", // Use an OAuth access token or PAT from users.palmetto.com authToken: "xxxxx", });
Usage
Make a request
const result = await client.findClassifications({
path: "hvac",
});
if (result.ok) {
console.log(result.data);
}Handle request errors
const result = await client.createClassification({
slug: "hvac",
name: "HVAC",
recommendationSettings: { enabled: false },
});
if (result.ok) {
// ...
} else {
if (result.error.code === "ERROR_RESPONSE") {
switch (result.error.response.error) {
case "BadRequest":
console.log("validation errors:", result.error.response.validations);
break;
case "Conflict":
console.log("Classification path is already in use");
break;
// ...
}
} else if (result.error.code === "SERVICE_UNAVAILABLE") {
console.error("Unable to connect!");
}
}Use middleware
client.use({
onResponse(request: Request, response: Response) {
const payload = {
message: `${request.method} ${request.url} ${response.status} ${response.statusText}`,
http: {
method: request.method,
status_code: response.status,
url: request.url,
},
};
if (response.status <= 299) {
logger.log(payload);
} else if (response.status <= 499) {
logger.warn(payload);
} else {
logger.error({
...payload,
error: { message: response.statusText },
});
}
},
});Add a header to a request
const result = await client.findClassifications(
{},
{
headers: { "X-Custom": "myvalue" },
},
);Add a header to all requests
client.setHeader("X-Custom", "myvalue");Change auth token for all requests
client.setAuthToken("xxxxx");Use different auth token for a single request
const result = await client.findClassifications(
{ path: "hvac" },
{
authToken: "xxxxx",
},
);