# Node Shipping Purolator

## Install
```
npm i node-shipping-purolator
```

## Usage

### Init
```js
const PurolatorAPI = require('node-shipping-purolator');

const purolator = new PurolatorAPI({
  environment: 'production', // or development
  debug: true,
  key: '[key]',
  password: '[password]',
  account: '[account number]'
});
```

### Documents
See params [here](test/utils/documents.ts)
```js
purolator.getDocuments(params, cb);

purolator.getShipmentManifestDocument(params, cb);
```

### Estimate
See params [here](test/utils/estimate.ts)
```js
purolator.getQuickEstimate(params, cb);

purolator.getFullEstimate(params, cb);
```

### Pickup
See params [here](test/utils/pickup.ts)
```js
purolator.schedulePickup(params, cb);

purolator.voidPickup(params, cb);

purolator.validatePickup(params, cb);
```

### Return Shipment
See params [here](test/utils/returnShipment.ts)
```js
purolator.createReturnShipment(params, cb);

purolator.validateReturnShipment(params, cb);
```

### Services
See params [here](test/utils/services.ts)
```js
purolator.getServicesOptions(params, cb);

purolator.getServicesRules(params, cb);

purolator.validateCityPostalCodeZip(params, cb);
```

### Shipment
See params [here](test/utils/shipment.ts)
```js
purolator.consolidate(params, cb);

purolator.voidShipment(params, cb);

purolator.validateShipment(params, cb);

purolator.createShipment(params, cb);
```

### Tracking
See params [here](test/utils/tracking.ts)
```js
purolator.trackPackagesByPin(params, cb);

purolator.trackPackagesByRef(params, cb);

purolator.getDeliveryDetails(params, cb);
```

## Links
[Official Purolator API documentation](https://eship.purolator.com/site/en/Default.aspx)

## TO DO
- ModifyPickUp
- GetPickUpHistory
- GetLocationsByAddress
- GetLocationsByCoordinates
- GetLocationsByCity
- GetLocationsByPointOfInterest
- GetLocationsByPostalCode