feathers-shippo
TypeScript icon, indicating that this package has built-in type declarations

0.1.0 • Public • Published

feathers-shippo

A FeathersJS adapter for the Shippo API. For more information, visit the Shippo API Docs and Shippo API Reference. This library automatically handles rate limits by using bottleneck under the hood.

import { ShippoShipments } from 'feathers-shippo';

const options = {
  token: 'YOUR_SHIPPO_TOKEN'
}

app.use('shipments', new ShippoShipments(options, app));


const shipments = await app.service('shipments').find({
  query: {
    results: 10,
    object_created_gt: '2023-01-01'
  }
});

Most services are a light wrapper around the corresponding Shippo resource. Some services implement custom params.query and custom methods to accomodate certain Shippo actions. To learn more about each service's capabilities, view the service's source code and read the Shippo API Reference. Note this library does not try to implement the Feathers Common query syntax, instead params.query is passed directly to Shippo.

  • ShippoAddresses
  • ShippoBatches
  • ShippoCarrierAccounts
  • ShippoCarrierParcelTemplates
  • ShippoCustomsDeclarations
  • ShippoCustomsItems
  • ShippoManifests
  • ShippoOrders
  • ShippoParcels
  • ShippoPickups
  • ShippoRates
  • ShippoRefunds
  • ShippoServiceGroups
  • ShippoShipments
  • ShippoTracks
  • ShippoTransactions
  • ShippoUserParcelTemplates

The library also exports some utility functions and classes

  • ShippoServce
  • shippo

Rate Limits

All services use Bottleneck to queue requests to the Shippo API. The limits are determined by whether the options.token starts with shippo_live or shippo_test and correspond to the Shippo Rate Limits. This means that requests should never exceed the rate limit because the Bottleneck will ensure they are limited properly. Note Bottleneck is a queue, not a rate limiter. You can also disable or pass your own rate limiters.

import { ShippoShipments } from 'feathers-shippo';
import Bottleneck from 'bottleneck';

 // disable rate limiting
const options = {
  token: 'YOUR_SHIPPO_TOKEN',
  limiters: null
}

// provide custom limiters
const options = {
  token: 'YOUR_SHIPPO_TOKEN',
  limiters: {
    get: new Bottleneck({ ... }) // GET/:id
    find: new Bottleneck({ ... }) // GET
    create: new Bottleneck({ ... }) // POST
    update: new Bottleneck({ ... }) // PUT
    remove: new Bottleneck({ ... }) // DELETE
  }
}

app.use('shipments', new ShippoShipmentsService(options, app));

ShippoService

You generally won't need to use this service directly, but its available to you. It is the base class used to create all other services.

import { ShippoService } from 'feathers-shippo';

const options = {
  token: 'YOUR_SHIPPO_TOKEN',
  path: 'shipments',
  methods: ['get', 'find', 'create']
}

app.use('shipments', new ShippoService(options, app));

Shippo Client

The shippo function creates a new axios instance with the Shippo API baseURL and Authorization header. It is used under the hood for all service requests. It is exported for you to handle any Shippo functionality not covered by this library. This client does not handle rate limiting.

import { shippo } from 'feathers-shippo';

const shippoClient = shippo('YOUR_SHIPPO_TOKEN');

Package Sidebar

Install

npm i feathers-shippo

Weekly Downloads

0

Version

0.1.0

License

MIT

Unpacked Size

68.4 kB

Total Files

85

Last publish

Collaborators

  • daddywarbucks