App

App config

What the installed app is told on start: the version floor and ceiling for its platform, an optional notice and sunset date, store links, the tool surfaces the server has switched off (kill_switches, per platform), the version of the claimed path list, the API major and spec fingerprint, the support contact, and the web pages the app opens (urls.trip is a template: replace {externalId}; urls.free_limit_merge is where a free account moves or merges trips over its limit; urls.tools and urls.tool_start are the tool pages per record and the wizard roots the 2.0 read cards open). Every v1 field keeps its value. update_required and update_available are null unless X-Platform and X-App-Version name a known app. The body is cached for a minute and for five minutes by the client.

get/api/v2/app/config

Request

  • Base URL: https://www.endlesstravelplans.com
  • URL: https://www.endlesstravelplans.com/api/v2/app/config
  • Auth: none required

Response

sunset_atstring nullable
noticestring nullable
update_requiredboolean
update_availableboolean
server_timestring

Example response

{
  "minimum_version": {
    "ios": "1.2.0",
    "android": "1.1.0"
  },
  "latest_version": {
    "ios": "1.3.0",
    "android": "1.3.0"
  },
  "sunset_at": null,
  "notice": null,
  "store_url": {
    "ios": "https://apps.apple.com/app/id1",
    "android": null
  },
  "api": {
    "major": 2,
    "spec_version": "3f9a1c0b7d2e"
  },
  "claimed_paths": {
    "version": "a1b2c3d4e5f6",
    "patterns": [
      "/tools/vote/*"
    ],
    "public_in_app": [
      "/vote/*"
    ]
  },
  "kill_switches": {
    "budget": {
      "ios": false,
      "android": false
    },
    "itinerary": {
      "ios": false,
      "android": false
    },
    "packing": {
      "ios": false,
      "android": false
    },
    "vote": {
      "ios": false,
      "android": false
    },
    "documents": {
      "ios": false,
      "android": false
    },
    "expenses": {
      "ios": true,
      "android": true
    },
    "iap": {
      "ios": false,
      "android": true
    },
    "push": {
      "ios": false,
      "android": false
    },
    "realtime": {
      "ios": false,
      "android": false
    }
  },
  "support": {
    "email": "support@endlesstravelplans.com",
    "url": "https://www.endlesstravelplans.com/contact"
  },
  "urls": {
    "trip": "https://www.endlesstravelplans.com/dashboard?trip={externalId}",
    "free_limit_merge": "https://www.endlesstravelplans.com/dashboard",
    "tools": {
      "budget": "https://www.endlesstravelplans.com/tools/budget-calculator/{externalId}",
      "itinerary": "https://www.endlesstravelplans.com/tools/visual-itinerary-builder/{externalId}",
      "packing_list": "https://www.endlesstravelplans.com/tools/smart-packing-list/{externalId}",
      "vote": "https://www.endlesstravelplans.com/tools/vote/results/{code}"
    },
    "tool_start": {
      "budget": "https://www.endlesstravelplans.com/tools/budget-calculator",
      "itinerary": "https://www.endlesstravelplans.com/tools/visual-itinerary-builder",
      "packing_list": "https://www.endlesstravelplans.com/tools/smart-packing-list",
      "vote": "https://www.endlesstravelplans.com/tools/vote"
    }
  },
  "update_required": false,
  "update_available": true,
  "server_time": "2026-10-12T09:30:00Z"
}

Changes

No recorded changes to this operation across all 1 revision of this API.