@zapier/policy-context
v0.10.0
Published
Shared request context types, builders, and policy condition generators for sdkapi and approvalsapi
Readme
@zapier/policy-context
Shared request context types, builders, and policy condition generators — the contract between sdkapi and approvalsapi for describing requests in approval flows and policy evaluation.
Install
npm install @zapier/policy-context zodzod (v4+) is a peer dependency.
What it provides
Three layers, each building on the previous:
- Types — Zod schemas for
HttpRequestContext,ActionRunContext, and theRequestContextdiscriminated union. These are the canonical shapes stored in approvalsapi and sent by sdkapi. - Builders — Normalize raw request parts (URL parsing, header filtering, body coercion) into validated contexts.
- Conditions / Policies — Convert stored contexts into
@zapier/policy-schemaCondition[]and fullPolicydocuments.
Usage
Build a request context
import { buildHttpRequestContext } from "@zapier/policy-context";
const context = buildHttpRequestContext({
method: "POST",
url: "https://api.example.com/v1/messages",
headers: { "content-type": "application/json", authorization: "Bearer …" },
body: '{"text":"hello"}',
});buildHttpRequestContext normalizes the URL, filters headers through IGNORED_HEADERS (auth, cookies, etc.), and validates the result with Zod.
Generate policy conditions
import {
buildExactHttpConditions,
buildDomainHttpConditions,
} from "@zapier/policy-context";
const exact = buildExactHttpConditions(context); // matches this exact request
const domain = buildDomainHttpConditions(context); // matches any request to the same hostBuild a complete "allow this exact request" policy
import { toExactPolicy } from "@zapier/policy-context";
const policy = toExactPolicy(context);Connection-scoped policies
import { buildConnectionPolicy } from "@zapier/policy-context";
const policy = buildConnectionPolicy({
connectionId: "conn_123",
accessLevel: "read_only",
});Subpath imports
In addition to the package root, every module is importable directly:
import { buildHttpRequestContext } from "@zapier/policy-context/builders";
import { HttpRequestContextSchema } from "@zapier/policy-context/types";License
UNLICENSED — internal Zapier use.
