Agent Skills: Flexport Upgrade & Migration

|

UncategorizedID: jeremylongshore/claude-code-plugins-plus-skills/flexport-upgrade-migration

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/tree/HEAD/plugins/saas-packs/flexport-pack/skills/flexport-upgrade-migration

Skill Files

Browse the full folder contents for flexport-upgrade-migration.

Download Skill

Loading file tree…

plugins/saas-packs/flexport-pack/skills/flexport-upgrade-migration/SKILL.md

Skill Metadata

Name
flexport-upgrade-migration
Description
|

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.