0.0.33 • Published 1 day ago
bigrequest v0.0.33
BigRequest
A typesafe, serverless-friendly Node.js HTTP request client for the BigCommerce API. Includes OAuth2 authorization flows for Single-Click App developers.
Overview
This module is available in two formats:
- ES Module:
dist/index.mjs
- CommonJS:
dist/index.js
Requirements
- Node.js:
>=18
Installation
npm i bigrequest
Usage
// Typescript
import bigrequest from 'bigrequest';
// CommonJS
const bigrequest = require('bigrequest');
// ES Module
import bigrequest from 'bigrequest';
REST Management API
const bc = bigrequest.rest({
storeHash: 'your_store_hash',
accessToken: 'your_access_token',
});
// Use the REST client
const product = await bc.v3.GET('/catalog/products/{product_id}', {
params: {
header: { Accept: 'application/json' },
path: { product_id: 111 },
},
});
/**
* product: {
* data:
* | {
* data: {
* id?: number | undefined;
* name: string;
* type: "physical" | "digital";
* sku?: string | undefined;
* ...
* };
* meta: {};
* }
* | undefined;
* errors:
* | {
* status?: number | undefined;
* title?: string | undefined;
* type?: string | undefined;
* instance?: string | undefined;
* }
* | undefined;
* response: Response;
* }
*/
// Creating an image using FormData
const categoryImage = await bc.v3.POST('/catalog/categories/{category_id}/image', {
params: {
header: {
'Content-Type': 'multipart/form-data',
Accept: 'application/json',
},
path: { category_id: 11 },
},
body: {
image_file: 'path/to/image.jpg',
},
bodySerializer(body) {
const fd = new FormData();
/**
* body: {
* image_file: "path/to/image.jpg"
* }
*/
for (const [k, v] of Object.entries(body)) {
const blob = new Blob([fs.readFileSync(v)]);
fd.append(k, blob, 'DESIRED_FILE_NAME.jpg');
}
return fd;
},
});
OAuth
const oauth = bigrequest.oauth({
clientId: 'YOUR_CLIENT_ID',
clientSecret: 'YOUR_CLIENT_SECRET',
authCallback: 'https://devtools.bigcommerce.com/my/apps',
});
// Receive the auth callback
const accessTokenResponse = await oauth.authorize({
code: 'code',
context: 'context',
scope: 'scope',
});
/**
* accessTokenResponse: {
* scope: string;
* context: string;
* access_token: string;
* user: {
* id: number;
* username: string;
* email: string;
* }
* account_uuid: string;
* }
*/
// Receive the load/uninstall/remove_user callback
const signedJwtPayload = await oauth.verify('signed_payload_jwt');
/**
* signedJwtPayload: {
* user: {
* id: number;
* email: string;
* locale: string;
* }
* aud: string;
* iss: string;
* iat: number;
* nbf: number;
* exp: number;
* jti: string;
* sub: string;
* owner: {
* id: number;
* email: string;
* }
* url: string;
* channel_id: number | null;
* }
*/
Contributing
See CONTRIBUTING.md
0.0.33
1 day ago
0.0.32
15 days ago
0.0.31
27 days ago
0.0.30
1 month ago
0.0.29
2 months ago
0.0.28
2 months ago
0.0.26
2 months ago
0.0.27
2 months ago
0.0.25
3 months ago
0.0.23
3 months ago
0.0.24
3 months ago
0.0.22
4 months ago
0.0.21
4 months ago
0.0.20
4 months ago
0.0.19
4 months ago
0.0.18
5 months ago
0.0.16
5 months ago
0.0.17
5 months ago
0.0.15
6 months ago
0.0.14
6 months ago
0.0.13
8 months ago
0.0.12
8 months ago
0.0.11
8 months ago
0.0.10
8 months ago
0.0.9
8 months ago
0.0.8
9 months ago
0.0.7
9 months ago
0.0.6
9 months ago
0.0.5
9 months ago
0.0.4
10 months ago
0.0.3
10 months ago
0.0.2
10 months ago
0.0.1
10 months ago
0.0.0-rc.1
10 months ago