Skip to main content

The manifest

The manifest is the public, machine-readable description of an identity. It is designed conservatively, because the intent is for it to become something third parties can rely on.

{
"namespace": "metallica",
"displayName": "Metallica",
"description": null,
"verified": true,
"verificationLevel": "BRAND_VERIFIED",
"locale": "en",
"avatarUrl": "https://cdn.appsterisk.me/avatars/<identityId>/256.webp",
"contacts": [
{ "type": "WEBSITE", "label": null, "value": "https://metallica.com/", "position": 0 }
],
"collections": [
{
"id": "…",
"title": "São Paulo",
"description": null,
"startsAt": "2026-08-25T00:00:00.000Z",
"endsAt": "2026-08-30T00:00:00.000Z",
"priority": 10,
"items": [{ "title": "Tickets", "url": "https://…", "position": 0 }]
}
],
"activeCollection": "…",
"updatedAt": "2026-08-28T12:00:00.000Z"
}

What is absent, and why

Private contacts do not appear. Anything marked private stays in the owner's dashboard.

Suspended destinations are omitted, not labelled. The manifest is a public document; marking an item as suspended would publish an accusation about it.

verified reflects an approved verification only. It is never derived from a linked account.

avatarUrl points at cdn.appsterisk.me, never at a storage bucket. Where the bytes live is an implementation detail, and publishing bucket URLs makes it one that cannot change without breaking every link already in the world.

Caching

Cache-Control: public, max-age=60, stale-while-revalidate=600, plus an ETag.

The ETag is derived from the response body rather than from updatedAt, because a contact or a collection item changes on its own row and never touches the identity's timestamp — a timestamp-based ETag would serve a stale manifest as fresh.

Not found

Every unresolvable name returns 404 with no body worth reading: unknown, available, suspended, quarantined and reserved are indistinguishable from outside.