GSC POD API

Version Gate

Overview

Every API response automatically includes update and latest_version fields. The mobile app should send its current version in the app_version request header on every call. The server compares the app version against the currently deployed API version and returns an update status with no additional configuration required.

Rules are derived entirely from package.json: no environment variables or server configuration needed. Deploying a new major version automatically triggers hard update enforcement.

Request Headers

Header Example Required Description
app_version 23.0.0 Recommended The current version of the mobile app. If omitted, update defaults to none.
platform android Informational Client platform identifier. Accepted but not currently used in gate logic.

Version strings with fewer than three parts are supported: missing segments default to 0. 23 is treated as 23.0.0.

Update Rules

Condition update value Meaning
app_major < api_major hard App must update before continuing. Closeloop ships a new major release alongside every API major bump.
app_major == api_major and app_minor < api_minor soft Update recommended but not required. App can continue.
Same major.minor (any patch difference) none App is up to date. No action needed.
app_version header missing none Old clients pass through safely.

Response Fields

These fields are injected into every API response that returns a standard JSON envelope.

Always present
{
  "update": "none",
  "latest_version": {
    "string": "23.0.0",
    "major": 23,
    "minor": 0,
    "patch": 0
  },
  "release_notes_url": "https://<host>/release/v23/"
}

release_notes_url points at the driver-facing release notes for the app's own major version (/release/vXX/), falling back to the latest version, or null if neither page exists. The host is taken from the request. All versions are listed at /release/.

Additional fields on soft or hard
{
  "update": "hard",
  "update_title": "Update Required",
  "update_message": "Please update the app to continue using services.",
  "store_url": null,
  "latest_version": {
    "string": "23.0.0",
    "major": 23,
    "minor": 0,
    "patch": 0
  }
}

store_url will be populated once Play Store distribution is configured.

Try It Out

Send a test request with a custom app_version header to see the gate response.

Result:

…