LegacyIdentityMapEntry identity.legacy-identity-map@1

Generated at from openvibe-contracts v0.33.0 and openvibe-sdk v0.5.0.

Version
1.0.0
Owner
network
Visibility
first-party
Status
active
Compatibility
backward
Decision
ADR-001
Schema
https://openvibe.network/contracts/identity/legacy-identity-map.v1.json

One row of identity_legacy_map: links a service-local id to its canonical subject. Kept alongside legacy ids, never replacing them.

Fields

FieldTypeRequiredDescriptionConstraints
subject_idstringyes
  • pattern ^(usr|gst|app|mod)_[0-9A-HJKMNP-TV-Z]{26}$
source_systemstringyeslive, media, games, network, rs-companion, hobo, ...
  • pattern ^[a-z][a-z0-9-]{1,39}$
source_typestringyesuser, anon_user, player, steam, ...
  • pattern ^[a-z][a-z0-9_]{1,39}$
source_idstringyes
  • minLength 1
  • maxLength 128
first_seen_atstring
  • format date-time
verified_atstring | null
  • format date-time
metadataobject

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: live-user
{
  "subject_id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "source_system": "live",
  "source_type": "user",
  "source_id": "1234",
  "first_seen_at": "2026-09-22T00:00:00Z",
  "verified_at": null
}
Rejected: missing-source
{
  "subject_id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
  "source_system": "live",
  "source_type": "user"
}
Rejected: service-subject
{
  "subject_id": "live",
  "source_system": "live",
  "source_type": "user",
  "source_id": "1"
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('identity.legacy-identity-map@1', value);   // { valid, errors: [{ path, message }] }