---
title: "identity.trust@1 · OpenVibe.Services"
canonical: "https://openvibe.services/docs/contracts/identity.trust"
updated: null
---

# identity.trust@1 · OpenVibe.Services

HTML: [identity.trust@1 · OpenVibe.Services](https://openvibe.services/docs/contracts/identity.trust)

# IdentityTrust `identity.trust@1`

Generated at 2026-11-13 06:25:48 UTC from [`openvibe-contracts v0.419.0`](https://github.com/OpenVibers/OpenVibe.Contracts/tree/v0.419.0) and [`openvibe-sdk v0.161.0`](https://github.com/OpenVibers/OpenVibe.SDK/tree/v0.161.0).

- Version: 1.0.0
- Owner: network
- Visibility: public
- Status: active
- Compatibility: backward
- Schema: [`https://openvibe.network/contracts/identity/trust.v1.json`](/docs/contracts/identity.trust.json)

identity.trust@1: privacy-limited age and abuse signals for an account or guest. Never includes an IP address, email, last-seen timestamp, service user id, or linked account identities. Only coarse age bands and aggregate counts are exposed.

## Fields

This schema has no named fields.

## Examples

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

 Valid: account

~~~~
{
  "kind": "account",
  "age_band": "30d_plus",
  "account_age_hours": 960,
  "account_age_days": 40,
  "passkey": true,
  "linked_accounts": 2,
  "active_30d": true,
  "email_verified": true,
  "verified": true,
  "verified_by": [
    "passkey",
    "linked_account",
    "30_days_active"
  ]
}
~~~~

Valid: guest

~~~~
{
  "kind": "guest",
  "age_band": "under_1d",
  "age_hours": 3,
  "age_days": 0,
  "networks_seen": 2,
  "guests_from_same_networks_24h": 4,
  "converted": false
}
~~~~

Rejected: ip-exposed

~~~~
{
  "kind": "guest",
  "age_band": "under_1d",
  "age_hours": 3,
  "age_days": 0,
  "networks_seen": 1,
  "guests_from_same_networks_24h": 0,
  "converted": false,
  "ip": "192.0.2.1"
}
~~~~

## Validate

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