---
title: "Describe the expression-check DSL (paths per point, predicates, operators)"
method: GET
path: "/v1/policies/expression-schema"
tags: ["policies"]
---

# Describe the expression-check DSL (paths per point, predicates, operators)

`GET /v1/policies/expression-schema`

## Response `200`

Successful Response

- ExpressionSchemaResponse — The full authoring surface for the ``expression`` check DSL.
  - `predicates` ExpressionPredicateSchema[], required
    - `name` string, required
    - `signature` string, required
    - `description` string, required
  - `operators` string[], required
  - `common_fields` ExpressionFieldSchema[], required
    - `path` string, required — Dotted path, e.g. 'response.text'. A namespace ends in '.*'.
    - `type` string, required — Value type hint: string / boolean / int / uuid / any / namespace.
    - `description` string, required
    - `namespace` boolean
  - `points` ExpressionPointSchema[], required
    - `enforcement_point` 'input' | 'pre_tool' | 'post_tool' | 'agent_response', required — Where in a turn a policy's check fires (v2: one point per policy). ``agent_response`` is the single author-facing reply point — the v1 ``response`` (per-streamed-unit) + ``post_response`` (complete reply) split is an internal runtime detail now, selected by the platform-derived enforcement strategy (buffer-and-gate vs per-unit), not an authored distinction.
    - `content_paths` ExpressionFieldSchema[], required
      - `path` string, required — Dotted path, e.g. 'response.text'. A namespace ends in '.*'.
      - `type` string, required — Value type hint: string / boolean / int / uuid / any / namespace.
      - `description` string, required
      - `namespace` boolean

## Other responses

- `400` — Bad request
- `401` — Authentication required

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/versions/888bdd5c076e/schema)
