Releases: warmlyyours/shipengine_rb
v0.1.0 — Initial Release
A comprehensive Ruby SDK for the ShipEngine API with full parcel and LTL freight support.
Highlights
- Resource-based API — Access 21 domains via
client.labels.create(...),client.tracking.track(...), etc. - Raw hash responses — Every method returns parsed JSON hashes (symbol keys) for maximum flexibility
- LTL freight support — Full coverage of ShipEngine's LTL API including carriers, quotes, pickups, and tracking
- Modern Ruby — Built for Ruby >= 3.4
- Faraday 2.x + http.rb — Fast HTTP stack with persistent connections, automatic 429 rate-limit retries, and
Retry-Afterheader support - Pagination helpers — Built-in
list_all(lazy enumerator) andlist_eachfor auto-paginated iteration - Thread-safe configuration — Immutable, frozen config objects with per-request override support
- Idempotency —
Idempotency-Keyheader support on any request - Configurable logging — Optional request/response logger
API Coverage (21 Domains)
Addresses · Batches · Carriers · Carrier Accounts · Documents · Downloads · Insurance · Labels · LTL Freight · Manifests · Package Pickups · Package Types · Rates · Service Points · Shipments · Tags · Tokens · Tracking · Warehouses · Webhooks · Account
Quality
- 255 tests with 652 assertions
- 98.88% line coverage, 88.24% branch coverage
- 0 RuboCop offenses across 42 source files
- CI on Ruby 3.4 + head
Documentation
- YARD annotations on all public classes and methods
- 22 detailed markdown guides with code samples and full JSON response examples
Installation
```ruby
gem 'shipengine_rb'
```
Quick Start
```ruby
require 'shipengine_rb'
client = ShipEngineRb::Client.new('YOUR_API_KEY')
Validate an address
client.addresses.validate([{
address_line1: '1 E 161 St',
city_locality: 'The Bronx',
state_province: 'NY',
postal_code: '10451',
country_code: 'US'
}])
Create a label
client.labels.create_from_shipment_details(shipment: { ... })
Iterate all labels across pages
client.labels.list_each { |label| process(label) }
Get an LTL freight quote
client.ltl.get_quote(carrier_id, { packages: [...], pickup: { ... } })
```
See the full README for complete API reference and configuration options.