Skip to main content

Data Models (Private Sidecar)

Account

{ "id": "<uuid>", "did": "did:web:...", "appleSub": "optional", "createdAt": "2024-01-01T00:00:00Z", "flags": { "banned": false } }

Profile

{
"id": "<uuid>",
"accountId": "<uuid>",
"did": "did:web:...",
"scenes": ["Main Plaza"],
"class": "Bard",
"traits": ["Charismatic", "Strategist"],
"lore": ["Former guild leader"],
"voiceIntroUrl": "https://cdn/.../intro.m4a",
"status": "active",
"provenance": { "basedOnSelfie": true, "creative": false },
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-02T00:00:00Z"
}

AvatarVariant

{
"id": "<uuid>",
"profileId": "<uuid>",
"url": "https://cdn/.../hero.png",
"thumbUrl": "https://cdn/.../hero-thumb.png",
"ledgerUrl": "https://cdn/.../hero-ledger.json",
"provenance": { "basedOnSelfie": true, "creative": false },
"createdAt": "2024-01-01T00:00:00Z"
}

Match

{
"id": "<uuid>",
"aDid": "did:web:a",
"bDid": "did:web:b",
"phase": "story",
"aUnread": 0,
"bUnread": 1,
"lastActivityAt": "2024-01-01T00:00:00Z"
}

StoryState

{
"matchId": "<uuid>",
"chapter": 2,
"nodeId": "intro-2",
"history": [
{ "nodeId": "intro-1", "choiceId": "option-a", "ts": "2024-01-01T00:00:00Z" }
],
"freeTextUnlockedBy": { "a": true, "b": false }
}

Intent

{
"id": "<uuid>",
"matchId": "<uuid>",
"timeWindow": "SatEvening",
"area": "Midtown",
"activity": "Co-op raid",
"status": "accepted",
"updatedAt": "2024-01-02T00:00:00Z"
}

RevealRequest

{
"id": "<uuid>",
"matchId": "<uuid>",
"requesterDid": "did:web:a",
"type": "clip",
"status": "revealed",
"mediaUrl": "https://cdn/.../clip.mp4",
"createdAt": "2024-01-01T00:00:00Z"
}

Other records

  • Block{ id, blockerDid, targetDid, createdAt }
  • Report{ id, reporterDid, targetDid, matchId?, reason, notes?, createdAt }
  • ModerationAction{ id, reportId?, actor, action, reason, createdAt }
  • Label{ id, subjectId, namespace, name, score?, createdAt }
  • Event{ id, type, payload, occurredAt }