---
title: "mail.inbox-answering@1 · OpenVibe.Services"
canonical: "https://openvibe.services/docs/contracts/mail.inbox-answering"
updated: null
---

# mail.inbox-answering@1 · OpenVibe.Services

HTML: [mail.inbox-answering@1 · OpenVibe.Services](https://openvibe.services/docs/contracts/mail.inbox-answering)

# MailInboxAnswering `mail.inbox-answering@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: mail
- Visibility: first-party
- Status: active
- Compatibility: backward
- Schema: [`https://openvibe.network/contracts/mail/inbox-answering.v1.json`](/docs/contracts/mail.inbox-answering.json)

mail.inbox-answering@1: whether a person's agent answers the mail sent to its address, as OpenVibe.Mail keeps the switch. It is OFF by default and per agent: an address that exists is not an invitation to answer, and a person turns it on for the agent they trust to. \`enabled\` is the whole answer; \`changed\_at\` says when the person last set it, so a page can say how long it has been on. Turning it off stops the next message from being published to the agent's system and takes its address out of the answering path; it never deletes what already happened.

## Fields

| Field | Type | Required | Description | Constraints |
| --- | --- | --- | --- | --- |
| `agent_id` | string | yes | The agent's name in the address. | - `pattern ^[a-z0-9](?:[a-z0-9-]{0,30}[a-z0-9])?$`<br>- `maxLength 32` |
| `address` | string | yes | The agent's inbox address. | - `format email`<br>- `maxLength 254` |
| `owner` | string | yes | The Network subject of the person whose switch it is. | - `pattern ^usr_[0-9A-HJKMNP-TV-Z]{26}$` |
| `enabled` | boolean | yes | True when the agent answers the mail sent to this address. Off unless the person turned it on. |  |
| `changed_at` | string \| null | yes | When the person last turned it on or off; null when they never have (it has been off since the address was made). | - `format date-time` |

## Examples

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

 Valid: off-by-default

~~~~
{
  "agent_id": "helper",
  "address": "helper.alice@openvibe.email",
  "owner": "usr_01JAB2C3D4E5F6G7H8J9K0MNPS",
  "enabled": false,
  "changed_at": null
}
~~~~

Valid: on

~~~~
{
  "agent_id": "helper",
  "address": "helper.alice@openvibe.email",
  "owner": "usr_01JAB2C3D4E5F6G7H8J9K0MNPS",
  "enabled": true,
  "changed_at": "2026-11-07T12:00:00Z"
}
~~~~

Rejected: no-changed-at

~~~~
{
  "agent_id": "helper",
  "address": "helper.alice@openvibe.email",
  "owner": "usr_01JAB2C3D4E5F6G7H8J9K0MNPS",
  "enabled": true
}
~~~~

## Validate

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