> ## Documentation Index
> Fetch the complete documentation index at: https://doc.featherhq.com/llms.txt
> Use this file to discover all available pages before exploring further.

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



## OpenAPI

````yaml /api-reference/openapi.json get /v1/policies/expression-schema
openapi: 3.1.0
info:
  title: Feather API
  description: >-
    Unified customer experience platform API. Manages identity, conversations,
    memory, agents, procedures, policies, model routing, knowledge bases,
    integrations, and runtime execution.
  version: 1.21.0
servers:
  - url: https://api-sandbox.featherhq.com
    description: Sandbox
  - url: http://localhost:8000
    description: Local dev
security: []
paths:
  /v1/policies/expression-schema:
    get:
      tags:
        - policies
      summary: >-
        Describe the expression-check DSL (paths per point, predicates,
        operators)
      operationId: getPolicyExpressionSchema
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpressionSchemaResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - APIKeyHeader: []
components:
  schemas:
    ExpressionSchemaResponse:
      properties:
        predicates:
          items:
            $ref: '#/components/schemas/ExpressionPredicateSchema'
          type: array
          title: Predicates
        operators:
          items:
            type: string
          type: array
          title: Operators
        common_fields:
          items:
            $ref: '#/components/schemas/ExpressionFieldSchema'
          type: array
          title: Common Fields
        points:
          items:
            $ref: '#/components/schemas/ExpressionPointSchema'
          type: array
          title: Points
      type: object
      required:
        - predicates
        - operators
        - common_fields
        - points
      title: ExpressionSchemaResponse
      description: The full authoring surface for the ``expression`` check DSL.
    ErrorResponse:
      properties:
        error:
          type: string
          title: Error
        message:
          type: string
          title: Message
      type: object
      required:
        - error
        - message
      title: ErrorResponse
      description: Standard error response returned by all API error handlers.
    ExpressionPredicateSchema:
      properties:
        name:
          type: string
          title: Name
        signature:
          type: string
          title: Signature
        description:
          type: string
          title: Description
      type: object
      required:
        - name
        - signature
        - description
      title: ExpressionPredicateSchema
      description: One predicate call form available in the DSL.
    ExpressionFieldSchema:
      properties:
        path:
          type: string
          title: Path
          description: Dotted path, e.g. 'response.text'. A namespace ends in '.*'.
        type:
          type: string
          title: Type
          description: 'Value type hint: string / boolean / int / uuid / any / namespace.'
        description:
          type: string
          title: Description
        namespace:
          type: boolean
          title: Namespace
          default: false
      type: object
      required:
        - path
        - type
        - description
      title: ExpressionFieldSchema
      description: One referenceable context path in the expression DSL.
    ExpressionPointSchema:
      properties:
        enforcement_point:
          $ref: '#/components/schemas/PolicyEnforcementPoint'
        content_paths:
          items:
            $ref: '#/components/schemas/ExpressionFieldSchema'
          type: array
          title: Content Paths
      type: object
      required:
        - enforcement_point
        - content_paths
      title: ExpressionPointSchema
      description: >-
        The content surface a check can read at one enforcement point.


        ``content_paths`` are the point-SPECIFIC paths (the user message, the
        tool

        call/result, the reply). The cross-point ``common_fields`` (state /
        identity /

        session) live once at the top level of
        :class:`ExpressionSchemaResponse`.
    PolicyEnforcementPoint:
      type: string
      enum:
        - input
        - pre_tool
        - post_tool
        - agent_response
      title: PolicyEnforcementPoint
      description: >-
        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.
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: x-api-key

````