flexport-upgrade-migration

'Migrate between Flexport API versions (v1 to v2, Logistics API versions).

5 Tools
flexport-pack Plugin
saas packs Category

Allowed Tools

ReadWriteEditBash(npm:*)Grep

Provided by Plugin

flexport-pack

Claude Code skill pack for Flexport (24 skills)

saas packs v1.0.0
View Plugin

Installation

This skill is included in the flexport-pack plugin:

/plugin install flexport-pack@claude-code-plugins-plus

Click to copy

Instructions

Flexport Upgrade & Migration

Overview

Guide for migrating between Flexport API versions. The main API uses Flexport-Version header (currently 2). The Logistics API has dated versions (2023-10, 2024-04). Breaking changes are versioned -- old versions remain available during deprecation windows.

Instructions

Step 1: Identify Current API Usage


# Find all Flexport API calls in your codebase
grep -rn "Flexport-Version\|api.flexport.com\|logistics-api.flexport.com" src/ --include="*.ts" --include="*.py"

# Check which version header you're sending
grep -rn "Flexport-Version" src/ --include="*.ts"

Step 2: API v1 to v2 Migration

Change v1 v2
Header Flexport-Version: 1 Flexport-Version: 2
Response wrapper { "_object": "Shipment", ... } { "data": { ... } }
Pagination { "next": "/shipments?page=2" } { "data": { "records": [], "total_count": N } }
Error format { "errors": [...] } { "error": { "code": "...", "message": "..." } }
Date format Mixed ISO 8601 consistently

// v1 pattern (deprecated)
const res = await fetch(`${BASE}/shipments`, { headers: { 'Flexport-Version': '1' } });
const { _object, id, status } = await res.json();

// v2 pattern (current)
const res = await fetch(`${BASE}/shipments`, { headers: { 'Flexport-Version': '2' } });
const { data } = await res.json();
data.records.forEach(s => console.log(s.id, s.status));

Step 3: Logistics API Version Migration


// The Logistics API has separate versioned URLs
// Old: https://docs.logistics-api.flexport.com/2023-10/
// New: https://docs.logistics-api.flexport.com/2024-04/

// Check OpenAPI spec for changes
// https://logistics-api.flexport.com/logistics/api/2024-04/documentation/raw

Step 4: Dual-Version Testing


// Run both versions in parallel during migration
async function migrateEndpoint(path: string) {
  const [v1Res, v2Res] = await Promise.all([
    fetch(`${BASE}${path}`, { headers: { ...auth, 'Flexport-Version': '1' } }),
    fetch(`${BASE}${path}`, { headers: { ...auth, 'Flexport-Version': '2' } }),
  ]);

  const v1 = await v1Res.json();
  const v2 = await v2Res.json();

  // Compare key fields to verify migration correctness
  console.log('v1 count:', v1.total || 'N/A');
  console.log('v2 count:', v2.data?.total_count || 'N/A');
}

Migration Checklist

  • [ ] Update Flexport-Version header to 2
  • [ ] Update response parsing from _object to data.records
  • [ ] Update pagination logic for v2 format
  • [ ] Update error handling for v2 error format
  • [ ] Run test suite against v2 endpoints
  • [ ] Deploy to staging and verify
  • [ ] Monitor error rates after production deployment

Resources

Next Steps

For CI integration during upgrades, see flexport-ci-integration.

Ready to use flexport-pack?