Zero Trust Access Policy

JSON Schema representing a Zero Trust access policy evaluated by a Policy Decision Point (PDP) per NIST SP 800-207.

Access ControlAuthenticationAuthorizationCybersecurityIdentity ManagementLeast PrivilegeNetwork SecurityNISTSecurityZero Trust

Properties

Name Type Description
policyId string Unique identifier for this access policy.
name string Human-readable name of the policy.
description string Description of the policy's purpose and scope.
version string Policy version in semantic versioning format.
effect string Whether the policy allows or denies access.
subjects array Principals (users, service accounts, workloads) this policy applies to.
resources array Resources this policy governs access to.
conditions object Contextual conditions that must be satisfied for the policy to apply.
enforcementMode string Whether the policy is actively enforced or in audit-only mode.
created string Date the policy was created.
modified string Date the policy was last modified.
owner string Team or individual responsible for this policy.
View JSON Schema on GitHub

JSON Schema

zero-trust-architecture-policy-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/api-evangelist/zero-trust-architecture/blob/main/json-schema/zero-trust-architecture-policy-schema.json",
  "title": "Zero Trust Access Policy",
  "description": "JSON Schema representing a Zero Trust access policy evaluated by a Policy Decision Point (PDP) per NIST SP 800-207.",
  "type": "object",
  "properties": {
    "policyId": {
      "type": "string",
      "description": "Unique identifier for this access policy.",
      "examples": ["ztpol-001", "api-access-policy-v2"]
    },
    "name": {
      "type": "string",
      "description": "Human-readable name of the policy.",
      "examples": ["API Gateway Least-Privilege Policy", "Remote Worker Cloud Access"]
    },
    "description": {
      "type": "string",
      "description": "Description of the policy's purpose and scope."
    },
    "version": {
      "type": "string",
      "description": "Policy version in semantic versioning format.",
      "examples": ["1.0.0", "2.3.1"]
    },
    "effect": {
      "type": "string",
      "description": "Whether the policy allows or denies access.",
      "enum": ["allow", "deny"],
      "examples": ["allow"]
    },
    "subjects": {
      "type": "array",
      "description": "Principals (users, service accounts, workloads) this policy applies to.",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of principal.",
            "enum": ["user", "group", "service-account", "workload", "device"]
          },
          "id": {
            "type": "string",
            "description": "Identifier for the principal.",
            "examples": ["alice@example.com", "spiffe://example.com/ns/default/sa/api-server"]
          },
          "attributes": {
            "type": "object",
            "description": "Additional attributes for context-aware evaluation.",
            "additionalProperties": true
          }
        },
        "required": ["type", "id"]
      }
    },
    "resources": {
      "type": "array",
      "description": "Resources this policy governs access to.",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of resource.",
            "enum": ["api", "database", "storage", "application", "network-segment", "kubernetes-namespace"]
          },
          "id": {
            "type": "string",
            "description": "Resource identifier.",
            "examples": ["https://api.example.com/v1/payments", "arn:aws:s3:::sensitive-bucket"]
          },
          "actions": {
            "type": "array",
            "description": "Permitted HTTP methods or operations.",
            "items": {
              "type": "string"
            },
            "examples": [["GET", "POST"], ["read", "list"]]
          }
        },
        "required": ["type", "id"]
      }
    },
    "conditions": {
      "type": "object",
      "description": "Contextual conditions that must be satisfied for the policy to apply.",
      "properties": {
        "devicePosture": {
          "type": "object",
          "description": "Device health and compliance requirements.",
          "properties": {
            "managed": {
              "type": "boolean",
              "description": "Device must be enterprise-managed."
            },
            "encryptionEnabled": {
              "type": "boolean",
              "description": "Device disk encryption must be enabled."
            },
            "osVersion": {
              "type": "string",
              "description": "Minimum required OS version.",
              "examples": ["Windows 11", "macOS 14.0"]
            },
            "edrInstalled": {
              "type": "boolean",
              "description": "Endpoint detection and response agent must be installed."
            }
          }
        },
        "network": {
          "type": "object",
          "description": "Network location constraints.",
          "properties": {
            "allowedIpRanges": {
              "type": "array",
              "description": "CIDR ranges from which access is permitted.",
              "items": {
                "type": "string",
                "examples": ["10.0.0.0/8", "203.0.113.0/24"]
              }
            },
            "requireVpn": {
              "type": "boolean",
              "description": "Whether VPN or ZTNA tunnel is required.",
              "default": false
            }
          }
        },
        "time": {
          "type": "object",
          "description": "Time-based access restrictions.",
          "properties": {
            "allowedHours": {
              "type": "string",
              "description": "Cron-style or ISO 8601 interval specifying permitted access windows.",
              "examples": ["09:00-17:00 UTC", "Mon-Fri 08:00-20:00 EST"]
            }
          }
        },
        "riskScore": {
          "type": "object",
          "description": "Risk-based access threshold from continuous monitoring.",
          "properties": {
            "maxScore": {
              "type": "integer",
              "description": "Maximum acceptable risk score (0-100).",
              "minimum": 0,
              "maximum": 100,
              "examples": [40]
            }
          }
        },
        "authenticationStrength": {
          "type": "string",
          "description": "Required authentication assurance level.",
          "enum": ["password", "mfa", "phishing-resistant-mfa", "hardware-token"],
          "examples": ["phishing-resistant-mfa"]
        }
      }
    },
    "enforcementMode": {
      "type": "string",
      "description": "Whether the policy is actively enforced or in audit-only mode.",
      "enum": ["enforce", "audit", "disabled"],
      "default": "enforce"
    },
    "created": {
      "type": "string",
      "format": "date",
      "description": "Date the policy was created.",
      "examples": ["2026-05-03"]
    },
    "modified": {
      "type": "string",
      "format": "date",
      "description": "Date the policy was last modified.",
      "examples": ["2026-05-03"]
    },
    "owner": {
      "type": "string",
      "description": "Team or individual responsible for this policy.",
      "examples": ["security-team@example.com"]
    }
  },
  "required": ["policyId", "name", "effect", "subjects", "resources"]
}

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/zero-trust-architecture-policy"
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 email required.

A second provider on the same verified email joins the account you already have.