> ## Documentation Index
> Fetch the complete documentation index at: https://terminal49-wayfair-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Terminal49 API and DataSync Updates

> Release notes for Terminal49 API and DataSync changes, including new features, schema updates, and bug fixes.

<Info>
  This page contains updates to **Terminal49 API** and **DataSync** only (not
  general product updates).
</Info>

<Update label="April 2026" description="Smart Last Free Day, inland destination ETA source transparency, and bug fixes" tags={['API', 'Dashboard']} rss="April 2026: Smart Last Free Day with per-source LFD breakdown, inland destination ETA source transparency, expanded SSL LFD coverage, and bug fixes.">
  ### Smart Last Free Day

  The container API now returns a detailed breakdown of **Last Free Day (LFD)** data within the `import_deadlines` field. Instead of a single date, you get separate LFD values from the shipping line and the terminal facility — at both the port of discharge and the inland destination.

  Each source includes:

  * **Original** — the first LFD reported
  * **Current** — the latest LFD reported
  * **Calculated** — a derived value when the raw date needs adjustment

  A **unified** selection shows which source Terminal49 considers the best current LFD and why.

  <Card title="Container API reference" icon="warehouse" href="/api-docs/api-reference/containers/get-a-container">
    View the container resource
  </Card>

  ***

  ### Inland destination ETA source transparency

  Containers now include an `inland_destination_eta_source_summary` field that tells you exactly where the displayed inland destination ETA comes from. Possible sources are:

  * **Shipping line** — ETA provided by the carrier
  * **Rail** — ETA from the rail carrier
  * **T49 operations team** — manually verified ETA
  * **T49 prediction engine** — machine-learning-based estimate

  The Terminal49 dashboard also shows the active ETA source, and hovering over it displays all available estimates so you can compare.

  ***

  ### Expanded shipping line LFD coverage

  Shipping line Last Free Day data is now collected from additional SSA terminals, improving LFD accuracy for containers moving through those facilities.

  <Card title="Container table properties" icon="table" href="/datasync/table-properties/containers">
    DataSync containers reference
  </Card>

  ***

  ### Bug fixes

  * **Hapag-Lloyd booking tracking** — Fixed an error that could prevent booking equipment data from being returned for Hapag-Lloyd shipments
  * **Dashboard copy/paste** — Copy and paste keyboard shortcuts in the container dashboard no longer interfere with text input fields
  * **Webhook notification links** — The dashboard webhook notifications page now correctly displays reference links for events with multiple related resources
</Update>

<Update label="March 2026" description="TypeScript SDK, MCP server, Custom Fields API, webhook trigger endpoint, and DataSync improvements" tags={['API', 'SDK', 'MCP', 'DataSync']} rss="March 2026: TypeScript SDK, MCP server for AI-powered tracking, Custom Fields API, webhook trigger endpoint, and DataSync improvements including shipping line LFD columns and pending hold status.">
  ### TypeScript SDK

  Released the **Terminal49 TypeScript SDK** (`@terminal49/sdk`), a typed client for Node.js 18+ with built-in retry logic, error handling, and JSON:API deserialization.

  * Track containers, retrieve shipments, and manage tracking requests with type-safe methods
  * Automatic retry with exponential backoff for rate limits and server errors
  * Flexible response formats: raw JSON:API, mapped objects, or both

  ```bash theme={null}
  npm install @terminal49/sdk
  ```

  <Card title="SDK docs" icon="code" href="/sdk/introduction">
    Get started with the TypeScript SDK
  </Card>

  ***

  ### MCP server

  Launched the **Terminal49 MCP server**, letting you query live container and shipment data from Claude Desktop, Cursor, or any MCP-compatible AI client.

  * **10 tools** — search, track, get container details, shipment routing, transport events, and more
  * **3 prompts** — pre-built workflows for tracking, demurrage analysis, and delay root cause analysis
  * Connect with a single config block — no custom code required

  <Card title="MCP setup guide" icon="robot" href="/mcp/home">
    Connect your AI client to Terminal49
  </Card>

  ***

  ### Custom Fields API

  You can now create and manage **custom fields** on shipments and containers via the API. Define your own field schemas (text, number, date, single-select, multi-select), create option lists, and attach values to individual shipments or containers.

  * **Custom Field Definitions** — create, update, list, and delete field schemas scoped to shipments or containers
  * **Custom Field Options** — manage allowed values for select-type fields
  * **Custom Fields** — assign values to specific shipments or containers

  <Card title="Custom Field Definitions" icon="brackets-curly" href="/api-docs/api-reference/custom-fields/list-custom-field-definitions">
    View the Custom Fields API reference
  </Card>

  ***

  ### Webhook trigger endpoint

  Added `POST /webhooks/trigger` to send a one-time test webhook delivery to any HTTPS URL — without creating a webhook endpoint first. Use it to validate your webhook handler before going live.

  <Card title="Trigger a webhook" icon="webhook" href="/api-docs/api-reference/webhooks/trigger-a-webhook">
    API reference for the trigger endpoint
  </Card>

  ***

  ### DataSync improvements

  * **Shipping line Last Free Day** — new `ssl_last_free_day_on` and `ssl_last_free_day_on_local` columns on both the `containers` and `containers_rail` tables, so you can distinguish the shipping line's LFD from the terminal's LFD
  * **Pending hold status** — individual hold columns (`freight_hold`, `customs_hold`, `usda_hold`, `tmf_hold`, `other_hold`) now support a `"Pending"` value in addition to `"Hold"` and blank, giving you earlier visibility into holds before they become active

  <CardGroup cols={2}>
    <Card title="Container table properties" icon="table" href="/datasync/table-properties/containers">
      DataSync containers reference
    </Card>

    <Card title="Holds and fees guide" icon="book-open" href="/api-docs/in-depth-guides/holds-and-fees">
      How to work with holds and fees data
    </Card>
  </CardGroup>
</Update>

<Update label="February 2026" description="Container Holds, Fees, and Release Readiness guide" tags={['API', 'DataSync']} rss="New guide: Container Holds, Fees, and Release Readiness — decision logic, enum references, webhook examples, and FAQ for determining when a container is ready for pickup.">
  ### Container Holds, Fees, and Release Readiness

  Published a comprehensive guide for working with holds and fees data in the Terminal49 API. The guide covers:

  * **Pickup readiness logic** — a decision flowchart and code example showing how to combine `available_for_pickup` with `holds_at_pod_terminal` to determine if a container can be picked up
  * **Hold and fee enum references** — quick-reference tables for all hold names and fee types, with expandable details for each value
  * **Webhook changeset examples** — how to subscribe to `container.updated` and react to hold/fee changes in real time
  * **Rail and inland destinations** — clarification that the same fields apply at inland rail terminals, not just the port of discharge
  * **FAQ** — answers to common integration questions like double-counting fees, sync lag between holds and availability, and case-sensitive hold names

  <Card title="Read the guide" icon="book-open" href="/api-docs/in-depth-guides/holds-and-fees">
    Container Holds, Fees, and Release Readiness
  </Card>
</Update>

<Update label="December 2025" description="Infer Tracking Number (Beta)" tags={['API']} rss="Added Infer Tracking Number (beta) to predict VOCC SCAC + number type prior to creating tracking requests.">
  ### Infer Tracking Number (Beta)

  Added the **Infer Tracking Number** endpoint to help you predict:

  * The **VOCC SCAC** to use for tracking
  * The **number type** (container, bill of lading, booking)
  * A confidence-driven **decision** (`auto_select`, `needs_confirmation`, `no_prediction`)

  <CardGroup cols={2}>
    <Card title="API Reference" icon="code" href="/api-docs/api-reference/tracking-requests/auto-detect-carrier">
      Infer Tracking Number endpoint details
    </Card>

    <Card title="Guide" icon="book" href="/api-docs/in-depth-guides/auto-detect-carrier">
      How to use Infer Tracking Number in your workflow
    </Card>
  </CardGroup>

  <Tip>
    Use Infer Tracking Number when you have a valid tracking number but don’t know the correct **VOCC SCAC**.
  </Tip>
</Update>

<Update label="December 2025" description="Documentation improvements" tags={['API', 'DataSync']} rss="Improved docs navigation and added an Updates tab for API/DataSync release notes.">
  ### Documentation improvements

  Added an **Updates** section to publish API/DataSync changes.

  Added cross-links from relevant docs to Infer Tracking Number.
</Update>
