Willow AI Governance Control Plane · Schema
Guard
CompanyArtificial IntelligenceGovernancePlatformEnterprise
Properties
| Name | Type | Description |
|---|---|---|
| id | string | |
| slug | string | |
| name | string | |
| description | stringnull | |
| checks | array | |
| threshold | number | Score threshold that triggers the guard action |
| action | string | Action to take when threshold is exceeded. `redact` masks the matched text, `warn` allows the call but shows a warning, `warn_user` requires the user to approve the request before it proceeds, and `bl |
| status | string | |
| is_default | boolean | Whether this is a built-in default guard |
| scope | stringnull | When the guard is evaluated |
| created_at | string | Creation timestamp. |
| org_id | string | Organization this record belongs to. |
| message | stringnull | Message shown to the user when this guard blocks or warns a call. Absent on the built-in default guards. |
| settings | objectnull | Guard-level settings. |
| sort_order | integer | Position used when ordering guards for evaluation. |
| updated_at | string | Last modification timestamp. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/webrix/main/json-schema/webrix-guard-schema.json",
"title": "Guard",
"x-generated": "2026-10-19",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/_original/webrix-api-openapi.json#/components/schemas/Guard",
"type": "object",
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": [
"string",
"null"
]
},
"checks": {
"type": "array",
"items": {
"$ref": "#/$defs/GuardCheck"
}
},
"threshold": {
"type": "number",
"description": "Score threshold that triggers the guard action"
},
"action": {
"type": "string",
"enum": [
"redact",
"warn",
"warn_user",
"block"
],
"description": "Action to take when threshold is exceeded. `redact` masks the matched text, `warn` allows the call but shows a warning, `warn_user` requires the user to approve the request before it proceeds, and `block` prevents the call entirely."
},
"status": {
"type": "string",
"enum": [
"active",
"draft"
]
},
"is_default": {
"type": "boolean",
"description": "Whether this is a built-in default guard"
},
"scope": {
"type": [
"string",
"null"
],
"enum": [
"buildtime",
"runtime"
],
"description": "When the guard is evaluated"
},
"created_at": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp."
},
"org_id": {
"type": "string",
"format": "uuid",
"description": "Organization this record belongs to."
},
"message": {
"type": [
"string",
"null"
],
"description": "Message shown to the user when this guard blocks or warns a call. Absent on the built-in default guards."
},
"settings": {
"type": [
"object",
"null"
],
"additionalProperties": true,
"description": "Guard-level settings.",
"properties": {
"sync_checks": {
"type": "boolean",
"description": "Whether the guard's checks are kept in sync with their source."
},
"redact_fallback_action": {
"type": "string",
"enum": [
"block",
"warn",
"allow"
],
"description": "What a redact guard does when it triggers but nothing could be masked (for example when the match only exists inside encoded content). Defaults to `block`."
}
}
},
"sort_order": {
"type": "integer",
"description": "Position used when ordering guards for evaluation."
},
"updated_at": {
"type": "string",
"format": "date-time",
"description": "Last modification timestamp."
}
},
"$defs": {
"GuardCheck": {
"type": "object",
"required": [
"id",
"type",
"certainty"
],
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the check"
},
"name": {
"type": "string",
"description": "Display name for the check"
},
"type": {
"type": "string",
"enum": [
"builtin",
"regex",
"jsonata",
"llm"
],
"description": "Type of check to perform"
},
"certainty": {
"type": "number",
"description": "Certainty score (0-10) contributed when this check matches"
},
"config": {
"$ref": "#/$defs/GuardCheckConfig"
},
"disabled": {
"type": "boolean",
"description": "Whether the check is disabled"
}
}
},
"GuardCheckConfig": {
"type": "object",
"description": "Check-specific configuration",
"properties": {
"pattern": {
"type": "string",
"description": "Regex pattern (for regex type)"
},
"replacement": {
"type": "string",
"description": "Replacement text for redaction (for regex type)"
},
"expression": {
"type": "string",
"description": "JSONata expression (for jsonata type)"
},
"prompt": {
"type": "string",
"description": "LLM prompt (for llm type)"
},
"precondition_pattern": {
"type": "string",
"description": "Optional regex the content must match (case-insensitive) before the LLM is called (for llm type). Content that doesn't match is skipped and scores 0."
},
"builtin_id": {
"type": "string",
"description": "Built-in check identifier (for builtin type)"
},
"min_confidence": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Minimum model confidence (for the person-name-builtin check)"
},
"allowlist": {
"type": "array",
"items": {
"type": "string"
},
"description": "Spans to never report (for the person-name-builtin check)"
}
}
}
}
}
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
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/webrix-guard"
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.