GrantRuleEvaluation
An audit record of a single rule-engine evaluation against an inbound message, SMTP envelope, or outbound send for a grant. Rule evaluations are created automatically during inbound processing and outbound send handling and can be listed to trace which rules matched, what input was considered, and which actions were applied.
Properties
| Name | Type | Description |
|---|---|---|
| id | string | Globally unique identifier for this evaluation record (UUID). |
| grant_id | string | The grant this evaluation belongs to (UUID). |
| message_id | stringnull | The inbound message or stored sent copy associated with this evaluation (UUID). `null` when the evaluation happened before a message record existed, such as `smtp_rcpt`, or when an outbound evaluation |
| evaluated_at | integer | When the evaluation occurred, in seconds using the Unix timestamp format. |
| evaluation_stage | string | Where in the processing pipeline the evaluation happened. `smtp_rcpt` means the evaluation ran during SMTP RCPT TO processing (before the message was accepted) — `message_id` is `null` in this case. ` |
| evaluation_input | object | The normalized sender, recipient, and send-type data that rules were matched against. |
| applied_actions | object | The actions that were applied as a result of matching rules. Only populated fields are returned — fields are **omitted** (not set to `false`) when the corresponding action was not applied. |
| matched_rule_ids | array | IDs of the rules that matched during this evaluation. Empty when no rules matched (for example, when rule execution ran but nothing applied). |
| application_id | string | The application this evaluation belongs to (UUID). Read-only; derived from the authenticated API key. |
| organization_id | string | The Nylas organization this evaluation belongs to (UUID). Read-only; derived from the authenticated API key. |
| created_at | integer | When the evaluation record was created, in seconds using the Unix timestamp format. |
| updated_at | integer | When the evaluation record was last updated, in seconds using the Unix timestamp format. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/nylas/main/json-schema/nylas-grant-rule-evaluation-object-schema.json",
"title": "GrantRuleEvaluation",
"description": "An audit record of a single rule-engine evaluation against an inbound message, SMTP envelope, or\noutbound send for a grant. Rule evaluations are created automatically during inbound processing and\noutbound send handling and can be listed to trace which rules matched, what input was considered,\nand which actions were applied.",
"x-generated": "2026-10-02",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/nylas-rules-api-openapi.yml#/components/schemas/GrantRuleEvaluationObject",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Globally unique identifier for this evaluation record (UUID)."
},
"grant_id": {
"type": "string",
"description": "The grant this evaluation belongs to (UUID)."
},
"message_id": {
"type": [
"string",
"null"
],
"description": "The inbound message or stored sent copy associated with this evaluation (UUID). `null` when the\nevaluation happened before a message record existed, such as `smtp_rcpt`, or when an outbound\nevaluation did not persist a sent copy."
},
"evaluated_at": {
"type": "integer",
"description": "When the evaluation occurred, in seconds using the Unix timestamp format."
},
"evaluation_stage": {
"type": "string",
"enum": [
"smtp_rcpt",
"inbox_processing",
"outbound_send"
],
"description": "Where in the processing pipeline the evaluation happened. `smtp_rcpt` means the evaluation ran\nduring SMTP RCPT TO processing (before the message was accepted) — `message_id` is `null` in\nthis case. `inbox_processing` means the evaluation ran after the message was accepted and\nduring inbox processing — `message_id` is populated. `outbound_send` means the evaluation ran\nfor an outbound send; `message_id` is populated when a sent copy was stored, and `null` when\nthe send was blocked before storage or no sent copy was persisted."
},
"evaluation_input": {
"type": "object",
"description": "The normalized sender, recipient, and send-type data that rules were matched against.",
"properties": {
"from_address": {
"type": "string",
"description": "The normalized sender email address."
},
"from_domain": {
"type": "string",
"description": "The normalized domain portion of the sender address."
},
"from_tld": {
"type": "string",
"description": "The normalized top-level domain of the sender address."
},
"recipient_addresses": {
"type": "array",
"description": "Outbound recipient email addresses considered during rule evaluation.",
"items": {
"type": "string"
}
},
"recipient_domains": {
"type": "array",
"description": "Outbound recipient domains considered during rule evaluation.",
"items": {
"type": "string"
}
},
"recipient_tlds": {
"type": "array",
"description": "Outbound recipient top-level domains considered during rule evaluation.",
"items": {
"type": "string"
}
},
"outbound_type": {
"type": "string",
"enum": [
"compose",
"reply"
],
"description": "Outbound send classification used during rule evaluation."
}
}
},
"applied_actions": {
"type": "object",
"description": "The actions that were applied as a result of matching rules. Only populated fields are returned —\nfields are **omitted** (not set to `false`) when the corresponding action was not applied.",
"properties": {
"blocked": {
"type": "boolean",
"description": "The inbound message or outbound send was blocked and not delivered. Terminal action."
},
"marked_as_spam": {
"type": "boolean",
"description": "The message or stored sent copy was moved to the junk/spam folder."
},
"marked_as_read": {
"type": "boolean",
"description": "The message or stored sent copy was automatically marked as read."
},
"marked_starred": {
"type": "boolean",
"description": "The message or stored sent copy was automatically starred."
},
"archived": {
"type": "boolean",
"description": "The message or stored sent copy was archived."
},
"trashed": {
"type": "boolean",
"description": "The message or stored sent copy was moved to trash."
},
"folder_ids": {
"type": "array",
"description": "IDs of the custom folders the message or stored sent copy was assigned to.",
"items": {
"type": "string"
}
}
}
},
"matched_rule_ids": {
"type": "array",
"description": "IDs of the rules that matched during this evaluation. Empty when no rules matched (for example,\nwhen rule execution ran but nothing applied).",
"items": {
"type": "string"
}
},
"application_id": {
"type": "string",
"description": "The application this evaluation belongs to (UUID). Read-only; derived from the authenticated API key."
},
"organization_id": {
"type": "string",
"description": "The Nylas organization this evaluation belongs to (UUID). Read-only; derived from the authenticated API key."
},
"created_at": {
"type": "integer",
"description": "When the evaluation record was created, in seconds using the Unix timestamp format."
},
"updated_at": {
"type": "integer",
"description": "When the evaluation record was last updated, in seconds using the Unix timestamp format."
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/nylas-grant-rule-evaluation-object"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.