Skip to content

Releases: warmlyyours/shipengine_rb

v0.1.0 — Initial Release

19 Feb 11:50

Choose a tag to compare

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-After header support
  • Pagination helpers — Built-in list_all (lazy enumerator) and list_each for auto-paginated iteration
  • Thread-safe configuration — Immutable, frozen config objects with per-request override support
  • IdempotencyIdempotency-Key header 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

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.