Amba

Deep Links

Project-wide deep-link config and per-slug tracked link analytics.

Deep-link config is a singleton row (id = 1). Tracked links are slug → destination-URL mappings with click counters. Analytics are aggregated in SQL so popular links don't OOM the API by pulling link_clicks into Node.

Source: apps/api/src/routes/admin/deep-links.ts.

Endpoints

MethodPathDescription
GET/admin/projects/:projectId/deep-links/configRead the singleton config row.
PUT/admin/projects/:projectId/deep-links/configUpsert the config row.
POST/admin/projects/:projectId/deep-links/trackedCreate a tracked link.
GET/admin/projects/:projectId/deep-links/trackedPaginated list of tracked links.
DELETE/admin/projects/:projectId/deep-links/tracked/:linkIdDelete.
GET/admin/projects/:projectId/deep-links/tracked/:linkId/statsClick analytics with platform breakdown.

GET /admin/projects/:projectId/deep-links/config

Response 200

{
  "data": {
    "id": 1,
    "url_scheme": "myapp",
    "universal_link_domain": "app.example.com",
    "android_package_name": "com.example.app",
    "ios_bundle_id": "com.example.app",
    "fallback_url": "https://example.com",
    "updated_at": "…"
  }
}

Errors

  • 404 NOT_FOUND — no config row yet.

Try it:

GET/admin/projects/%7B%7BprojectId%7D%7D/deep-links/config
developer auth
curl -X GET 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/deep-links/config'
Loading auth… Configure auth in the settings drawer (top-right) to run this request.

Curl:

curl -X GET '${BASE_URL}/admin/projects/{projectId}/deep-links/config' \
  -H 'Authorization: Bearer ${DEV_TOKEN}'

PUT /admin/projects/:projectId/deep-links/config

Upsert the singleton.

Request (CreateDeepLinkConfigInput)

FieldTypeRequired
url_schemestringno
universal_link_domainstringno
android_package_namestringno
ios_bundle_idstringno
fallback_urlstringno

Response 200

Config row.

Errors

  • 500 UPSERT_FAILED.

Try it:

PUT/admin/projects/%7B%7BprojectId%7D%7D/deep-links/config
developer auth
curl -X PUT 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/deep-links/config'
Loading auth… Configure auth in the settings drawer (top-right) to run this request.

Curl:

curl -X PUT '${BASE_URL}/admin/projects/{projectId}/deep-links/config' \
  -H 'Authorization: Bearer ${DEV_TOKEN}' \
  -H 'Content-Type: application/json' \
  -d '{}'

POST /admin/projects/:projectId/deep-links/tracked

Request (CreateTrackedLinkInput)

FieldTypeRequiredDefault
slugstringyes
destination_urlstringyes
metadataobjectno{}

Response 201

{ "data": { "id": "…", "slug": "launch", "destination_url": "https://…", "metadata": {} } }

Try it:

POST/admin/projects/%7B%7BprojectId%7D%7D/deep-links/tracked
developer auth
curl -X POST 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/deep-links/tracked'
Loading auth… Configure auth in the settings drawer (top-right) to run this request.

Curl:

curl -X POST '${BASE_URL}/admin/projects/{projectId}/deep-links/tracked' \
  -H 'Authorization: Bearer ${DEV_TOKEN}' \
  -H 'Content-Type: application/json' \
  -d '{}'

GET /admin/projects/:projectId/deep-links/tracked

Query

ParamDefault
limit50
offset0

Response 200

{
  "data": [{ "id": "…", "slug": "…", "destination_url": "…", "click_count": 123 }],
  "total": 42,
  "offset": 0,
  "limit": 50
}

Try it:

GET/admin/projects/%7B%7BprojectId%7D%7D/deep-links/tracked
developer auth
curl -X GET 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/deep-links/tracked'
Loading auth… Configure auth in the settings drawer (top-right) to run this request.

Curl:

curl -X GET '${BASE_URL}/admin/projects/{projectId}/deep-links/tracked' \
  -H 'Authorization: Bearer ${DEV_TOKEN}'

DELETE /admin/projects/:projectId/deep-links/tracked/:linkId

{ "data": { "deleted": true } }

Try it:

DELETE/admin/projects/%7B%7BprojectId%7D%7D/deep-links/tracked/%7B%7BlinkId%7D%7D
developer auth
curl -X DELETE 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/deep-links/tracked/%7B%7BlinkId%7D%7D'
Loading auth… Configure auth in the settings drawer (top-right) to run this request.

Curl:

curl -X DELETE '${BASE_URL}/admin/projects/{projectId}/deep-links/tracked/{linkId}' \
  -H 'Authorization: Bearer ${DEV_TOKEN}'

GET /admin/projects/:projectId/deep-links/tracked/:linkId/stats

Response 200

{
  "data": {
    "tracked_link_id": "…",
    "slug": "launch",
    "total_clicks": 1234,
    "unique_users": 876,
    "clicks_by_platform": { "ios": 500, "android": 300, "web": 100, "unknown": 334 }
  }
}

Errors

  • 404 NOT_FOUND.

Try it:

GET/admin/projects/%7B%7BprojectId%7D%7D/deep-links/tracked/%7B%7BlinkId%7D%7D/stats
developer auth
curl -X GET 'https://api.amba.dev/admin/projects/%7B%7BprojectId%7D%7D/deep-links/tracked/%7B%7BlinkId%7D%7D/stats'
Loading auth… Configure auth in the settings drawer (top-right) to run this request.

Curl:

curl -X GET '${BASE_URL}/admin/projects/{projectId}/deep-links/tracked/{linkId}/stats' \
  -H 'Authorization: Bearer ${DEV_TOKEN}'