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.
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.
| Method | Path | What it does |
|---|---|---|
| GET | /apps | List apps (paginated; ?platform=) |
| POST | /apps | Register an app |
| GET | /apps/:appId | Load one app |
| PATCH | /apps/:appId | Edit an app |
| DELETE | /apps/:appId | Remove an app |
| POST | /apps/:appId/test-association | Re-run the association-file config checks |
Reading needs any role; writing needs developer, admin or owner.
The app object
{ "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.
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.
[ { "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.