Apps API

Register and manage the iOS and Android apps in a LinkTrail workspace over the REST API: the app object, each platform's required fields, and checks.

Note

Every endpoint on this page needs Authorization: Bearer <accessToken> and X-Workspace-Id: <id> — see Authentication. Paths are relative to https://backend.linktrail.io/v1.

MethodPathWhat it does
GET/appsList apps (paginated; ?platform=)
POST/appsRegister an app
GET/apps/:appIdLoad one app
PATCH/apps/:appIdEdit an app
DELETE/apps/:appIdRemove an app
POST/apps/:appId/test-associationRe-run the association-file config checks

Reading needs any role; writing needs developer, admin or owner.

The app object

AppJSON
{ "id": 1, "name": "Acme Shop", "platform": "iOS", "identifier": "com.acme.shop",
  "storeId": "id1490012345", "fallbackUrl": "https://acme.com",
  "teamId": "ABCDE12345", "appStoreId": "1490012345", "skadnetworkIds": ["abc123.skadnetwork"],
  "sha256Fingerprints": ["AA:BB:…"], "playStoreUrl": "https://play.google.com/…" }

Register an app

name, platform (iOS or Android) and identifier are required on every app. iOS also needs teamId — with the identifier it becomes the app's entry in the AASA file. Android also needs sha256Fingerprints, at least one, which go into assetlinks.json. Everything else is optional. PATCH takes any subset.

Important

identifier must be exactly what the app reports at run time: the bundle ID on iOS, the applicationId on Android. The SDK sends it with every install, and an identifier with no registered app answers {"code":404,"message":"No app found for this identifier in your workspace"}. A debug build with a suffixed ID (com.acme.shop.debug) needs its own registered app.

POST /v1/apps/:appId/test-association → 200JSON
[ { "check": "teamId", "label": "Apple Team ID present", "status": "passed" } ]

The checks cover configuration completeness only. To check what a domain actually serves, use the validator or GET /domains/:domainId/well-known. Where each field comes from is on App Credentials.