Nylas · Schema

Rule

CalendarCommunicationsContactsEmailMessagingSchedulingA2A

Properties

Name Type Description
id string Globally unique identifier for the rule (UUID).
name string A human-readable name for the rule. Required on create.
description string An optional description of what the rule does.
priority integer Execution order for the rule. Lower numbers run first. Must be between `0` and `1000`. Defaults to `10`.
enabled boolean Whether the rule is active. Defaults to `true`.
trigger string When the rule is evaluated. `inbound` rules run on incoming messages. `outbound` rules run on sends before the message is submitted to the email provider — an `outbound` rule with a `block` action rej
match object Defines the conditions that must be met for the rule to apply.
actions array The actions to perform when the rule matches. At least one action is required. The `block` action cannot be combined with other actions — it is terminal.
application_id string The ID of the application that owns the rule. Read-only; derived from the authenticated API key.
organization_id string The ID of the Nylas organization that owns the rule. Read-only; derived from the authenticated API key.
created_at integer When the rule was created, in seconds using the Unix timestamp format.
updated_at integer When the rule was last updated, in seconds using the Unix timestamp format.
View JSON Schema on GitHub

JSON Schema

nylas-rule-object-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/nylas/main/json-schema/nylas-rule-object-schema.json",
  "title": "Rule",
  "x-generated": "2026-10-02",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/nylas-rules-api-openapi.yml#/components/schemas/RuleObject",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Globally unique identifier for the rule (UUID)."
    },
    "name": {
      "type": "string",
      "description": "A human-readable name for the rule. Required on create."
    },
    "description": {
      "type": "string",
      "description": "An optional description of what the rule does."
    },
    "priority": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1000,
      "default": 10,
      "description": "Execution order for the rule. Lower numbers run first. Must be between `0` and `1000`. Defaults to `10`."
    },
    "enabled": {
      "type": "boolean",
      "default": true,
      "description": "Whether the rule is active. Defaults to `true`."
    },
    "trigger": {
      "type": "string",
      "enum": [
        "inbound",
        "outbound"
      ],
      "default": "inbound",
      "description": "When the rule is evaluated. `inbound` rules run on incoming messages. `outbound` rules run on sends\nbefore the message is submitted to the email provider — an `outbound` rule with a `block` action\nrejects the send with HTTP 403 and no message is delivered. Non-blocking actions (`mark_as_spam`,\n`archive`, `mark_as_read`, `mark_as_starred`, `assign_to_folder`, `trash`) on outbound rules apply\nto the stored sent copy. Inbound and outbound rules are isolated: inbound rules never run during sends, and\noutbound rules never run on receipt."
    },
    "match": {
      "type": "object",
      "description": "Defines the conditions that must be met for the rule to apply.",
      "properties": {
        "operator": {
          "type": "string",
          "enum": [
            "any",
            "all"
          ],
          "description": "How conditions are combined. Use `any` to match when any condition is true (OR), or `all` to\nrequire every condition to be true (AND). When omitted, the rule defaults to `all`."
        },
        "conditions": {
          "type": "array",
          "description": "The list of conditions to evaluate. At least one condition is required.",
          "items": {
            "type": "object",
            "properties": {
              "field": {
                "type": "string",
                "enum": [
                  "from.address",
                  "from.domain",
                  "from.tld",
                  "recipient.address",
                  "recipient.domain",
                  "recipient.tld",
                  "outbound.type"
                ],
                "description": "The field to match against. `from.*` fields match the normalized sender and are valid on\nboth triggers: `from.address` is the full sender email, `from.domain` is the domain\nportion, and `from.tld` is the top-level domain. `recipient.*` fields are valid only on\n`outbound` rules and match against **any** recipient — including To, CC, BCC, and SMTP\nenvelope recipients. For `is_not`, the condition is true only when **no** recipient\nmatches. `outbound.type` is valid only on `outbound` rules and classifies the send as\n`compose` (a fresh message) or `reply` (a reply to an existing thread). The type is\nderived as `reply` when the send includes `reply_to_message_id` or the raw MIME\ncontains `In-Reply-To` or `References` headers; otherwise it's `compose`."
              },
              "operator": {
                "type": "string",
                "enum": [
                  "is",
                  "is_not",
                  "contains",
                  "in_list"
                ],
                "description": "How to compare the field value. Use `is` for an exact match, `is_not` for the inverse,\n`contains` for substring matching, or `in_list` to check against one or more List\nresources. String matching is case-insensitive. The `outbound.type` field accepts only\n`is` and `is_not` — `contains` and `in_list` are rejected."
              },
              "value": {
                "description": "The value to compare the field against. For `is`, `is_not`, and `contains`, this is a\nstring. For `in_list`, this is an array of List IDs. For `outbound.type`, this is\n`compose` or `reply` — values are normalized to lowercase on write.",
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                ]
              }
            }
          }
        }
      }
    },
    "actions": {
      "type": "array",
      "description": "The actions to perform when the rule matches. At least one action is required. The `block` action cannot be\ncombined with other actions — it is terminal.",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "block",
              "mark_as_spam",
              "assign_to_folder",
              "mark_as_read",
              "mark_as_starred",
              "archive",
              "trash"
            ],
            "description": "The action to take on the matching message or send. `block` rejects inbound mail at the SMTP\nlevel or rejects an outbound send before provider submission. `mark_as_spam` routes the\nmessage or stored sent copy to the spam folder, `assign_to_folder` files it in the folder\nnamed in `value`, and the remaining actions modify the message state."
          },
          "value": {
            "type": "string",
            "description": "Required when `type` is `assign_to_folder` — the target folder by name. Use a custom folder's\nname (or its full path for a nested folder, e.g. `Clients/Acme`), or a system folder name\n(`Inbox`, `Sent`, `Drafts`, `Trash`, `Junk`, `Archive`). The name is resolved when the rule\nruns, so a reference to a folder that doesn't exist is skipped. Optional for other action types."
          }
        }
      }
    },
    "application_id": {
      "type": "string",
      "description": "The ID of the application that owns the rule. Read-only; derived from the authenticated API key."
    },
    "organization_id": {
      "type": "string",
      "description": "The ID of the Nylas organization that owns the rule. Read-only; derived from the authenticated API key."
    },
    "created_at": {
      "type": "integer",
      "description": "When the rule was created, in seconds using the Unix timestamp format."
    },
    "updated_at": {
      "type": "integer",
      "description": "When the rule 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.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/nylas-rule-object"
All schemas
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.