> ## Documentation Index
> Fetch the complete documentation index at: https://www.worldmonitor.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# GetShippingRates

> GetShippingRates returns current container shipping-rate indices; upstream_unavailable is set when the source could not be reached.



## OpenAPI

````yaml /api/SupplyChainService.openapi.yaml get /api/supply-chain/v1/get-shipping-rates
openapi: 3.1.0
info:
  title: SupplyChainService API
  version: 1.0.0
servers:
  - url: https://api.worldmonitor.app
security:
  - WorldMonitorKey: []
  - ApiKeyHeader: []
paths:
  /api/supply-chain/v1/get-shipping-rates:
    get:
      tags:
        - SupplyChainService
      summary: GetShippingRates
      description: >-
        GetShippingRates returns current container shipping-rate indices;
        upstream_unavailable is set when the source could not be reached.
      operationId: GetShippingRates
      parameters:
        - name: jmespath
          in: query
          description: >-
            Optional JMESPath expression applied server-side to project or
            reduce the JSON response before it is returned (mirrors the MCP
            jmespath argument). Invalid expressions, expressions larger than
            1024 UTF-8 bytes, or projections that exceed the 256 KB output cap
            return HTTP 400 with a {_jmespath_error, original_keys} envelope.
            Grammar and worked examples:
            https://www.worldmonitor.app/docs/mcp-jmespath.
          required: false
          example: keys(@)
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              example:
                fetchedAt: '2026-01-15T12:00:00Z'
                indices:
                  - changePct: 1.69
                    currentValue: 1072.16
                    history:
                      - date: '2026-01-15'
                        value: 1072.16
                    indexId: CCFI
                    name: CCFI - China Container Freight
                    periodChangeBasis: publisher_reported
                    periodChangePct: 1.69
                    previousValue: 1054.38
                    priorPeriodDate: '2026-01-08'
                    priorPeriodValue: 1054.38
                    spikeAlert: false
                    unit: index
                  - changePct: 0
                    currentValue: 1972
                    history:
                      - date: '2026-01-15'
                        value: 1972
                    indexId: BDI
                    name: BDI - Baltic Dry Index
                    previousValue: 1972
                    spikeAlert: false
                    unit: index
                upstreamUnavailable: false
              schema:
                $ref: '#/components/schemas/GetShippingRatesResponse'
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ValidationError'
                  - $ref: '#/components/schemas/JmespathProjectionError'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: >-
            API access requires an active subscription (the API key's
            subscription is inactive or expired).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '429':
          description: Rate limit exceeded.
          headers:
            X-RateLimit-Limit:
              description: Maximum requests allowed in the active rate-limit window.
              schema:
                type: string
            X-RateLimit-Remaining:
              description: Requests remaining in the active rate-limit window.
              schema:
                type: string
            X-RateLimit-Reset:
              description: >-
                Unix epoch milliseconds when the active rate-limit window
                resets.
              schema:
                type: string
            Retry-After:
              description: Seconds to wait before retrying the request.
              schema:
                type: string
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/Error'
                  - $ref: '#/components/schemas/RateLimitError'
        default:
          description: Gateway or handler error response.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/Error'
                  - $ref: '#/components/schemas/GatewayError'
components:
  schemas:
    GetShippingRatesResponse:
      type: object
      properties:
        indices:
          type: array
          items:
            $ref: '#/components/schemas/ShippingIndex'
        fetchedAt:
          type: string
        upstreamUnavailable:
          type: boolean
    ValidationError:
      type: object
      properties:
        violations:
          type: array
          items:
            $ref: '#/components/schemas/FieldViolation'
          description: List of validation violations
      required:
        - violations
      description: >-
        ValidationError is returned when request validation fails. It contains a
        list of field violations describing what went wrong.
    JmespathProjectionError:
      description: >-
        Returned when a REST jmespath projection is invalid or exceeds the
        expression/output byte limits.
      properties:
        _jmespath_error:
          description: Projection error discriminator and details.
          type: string
        original_keys:
          description: Top-level keys or shape of the unprojected response.
          items:
            type: string
          type: array
      required:
        - _jmespath_error
        - original_keys
      type: object
    UnauthorizedError:
      type: object
      properties:
        error:
          type: string
          description: Human-readable error message.
      required:
        - error
      description: >-
        Returned when the API key is missing, malformed, or lacks current API
        access.
    ForbiddenError:
      type: object
      properties:
        error:
          type: string
          description: Human-readable entitlement failure reason.
        requiredTier:
          type: integer
          format: int32
          description: Minimum entitlement tier required for this endpoint.
        currentTier:
          type: integer
          format: int32
          description: Caller entitlement tier when known.
        planKey:
          type: string
          description: Caller plan key when known.
      required:
        - error
      description: >-
        Returned when a PRO-gated endpoint denies access because the caller has
        no resolved authenticated user, entitlements cannot be verified, or the
        caller lacks the required entitlement tier.
    Error:
      type: object
      properties:
        message:
          type: string
          description: Error message (e.g., 'user not found', 'database connection failed')
      description: >-
        Error is returned when a handler encounters an error. It contains a
        simple error message that the developer can customize.
    RateLimitError:
      type: object
      description: Returned when a gateway or handler rate limit rejects the request.
      properties:
        error:
          type: string
          description: Human-readable rate-limit failure reason.
      required:
        - error
    GatewayError:
      type: object
      description: >-
        Returned by gateway infrastructure errors before an RPC handler runs,
        such as origin, routing, method, authentication, or quota checks.
      properties:
        error:
          oneOf:
            - type: string
            - type: object
              additionalProperties: true
          description: Gateway error reason or structured gateway failure details.
      required:
        - error
    ShippingIndex:
      type: object
      properties:
        indexId:
          type: string
        name:
          type: string
        currentValue:
          type: number
          format: double
        previousValue:
          type: number
          format: double
          description: >-
            Legacy display field. For the Shanghai Shipping Exchange indices
            (SCFI,
             CCFI) this DELIBERATELY falls back to the current level when the exchange
             published no comparable prior, so it cannot distinguish "unchanged week"
             from "no prior at all". Use prior_period_value for decision work.
        changePct:
          type: number
          format: double
          description: >-
            Legacy display field with the same fail-OPEN fallback as
            previous_value
             (a flat 0 when no prior exists). Use period_change_pct for decision work.
        unit:
          type: string
        history:
          type: array
          items:
            $ref: '#/components/schemas/ShippingRatePoint'
        spikeAlert:
          type: boolean
        periodChangePct:
          type: number
          format: double
          description: >-
            Decision-grade period-over-period move in percent (#6066). Optional
            so a
             missing reading is ABSENT from the response rather than collapsing to 0,
             which would render identically to a real unchanged period. Fails CLOSED:
             present only when the publisher reported its own percentage or a
             comparable prior-period level. A single index level never becomes a
             change. The endpoint normalizes a missing reading to ABSENT (canonical
             ProtoJSON: serializers omit, parsers treat null as unset) — a plain JSON
             client can still tell absent from null, so read absence, not null.
        periodChangeBasis:
          type: string
          enum:
            - PERIOD_CHANGE_BASIS_UNSPECIFIED
            - publisher_reported
            - derived_from_prior_period_level
          description: >-
            Basis for the decision-grade period-over-period change. The custom
            JSON
             values preserve the lowercase strings already present in Redis and consumed
             by downstream matchers while exposing a closed taxonomy to generated clients
             and OpenAPI.
        priorPeriodValue:
          type: number
          format: double
          description: >-
            The publisher's own prior-period index level that period_change_pct
            was
             measured against. Absent when the publisher shipped no comparable prior.
        priorPeriodDate:
          type: string
          description: >-
            Observation date (YYYY-MM-DD) of prior_period_value, as published.
            Absent
             whenever prior_period_value is absent, or when the publisher dated the
             level only implicitly.
    FieldViolation:
      type: object
      properties:
        field:
          type: string
          description: >-
            The field path that failed validation (e.g., 'user.email' for nested
            fields). For header validation, this will be the header name (e.g.,
            'X-API-Key')
        description:
          type: string
          description: >-
            Human-readable description of the validation violation (e.g., 'must
            be a valid email address', 'required field missing')
      required:
        - field
        - description
      description: FieldViolation describes a single validation error for a specific field.
    ShippingRatePoint:
      type: object
      properties:
        date:
          type: string
        value:
          type: number
          format: double
  securitySchemes:
    WorldMonitorKey:
      type: apiKey
      in: header
      name: X-WorldMonitor-Key
      description: User-issued WorldMonitor API key.
    ApiKeyHeader:
      type: apiKey
      in: header
      name: X-Api-Key
      description: Alias header for the WorldMonitor API key (X-WorldMonitor-Key).

````