Authentik Policies API

Policies and policy bindings — expression, event matcher, GeoIP, password, password expiry, reputation and unique-password types.

Operations 76

GET /policies/all/ #
GET /policies/all/{policy_uuid}/ #
DELETE /policies/all/{policy_uuid}/ #
POST /policies/all/{policy_uuid}/test/ #
GET /policies/all/{policy_uuid}/used_by/ #
POST /policies/all/cache_clear/ #
GET /policies/all/cache_info/ #
GET /policies/all/types/ #
GET /policies/bindings/ #
POST /policies/bindings/ #
GET /policies/bindings/{policy_binding_uuid}/ #
PUT /policies/bindings/{policy_binding_uuid}/ #
PATCH /policies/bindings/{policy_binding_uuid}/ #
DELETE /policies/bindings/{policy_binding_uuid}/ #
GET /policies/bindings/{policy_binding_uuid}/used_by/ #
GET /policies/dummy/ #
POST /policies/dummy/ #
GET /policies/dummy/{policy_uuid}/ #
PUT /policies/dummy/{policy_uuid}/ #
PATCH /policies/dummy/{policy_uuid}/ #
DELETE /policies/dummy/{policy_uuid}/ #
GET /policies/dummy/{policy_uuid}/used_by/ #
GET /policies/event_matcher/ #
POST /policies/event_matcher/ #
GET /policies/event_matcher/{policy_uuid}/ #
PUT /policies/event_matcher/{policy_uuid}/ #
PATCH /policies/event_matcher/{policy_uuid}/ #
DELETE /policies/event_matcher/{policy_uuid}/ #
GET /policies/event_matcher/{policy_uuid}/used_by/ #
GET /policies/expression/ #
POST /policies/expression/ #
GET /policies/expression/{policy_uuid}/ #
PUT /policies/expression/{policy_uuid}/ #
PATCH /policies/expression/{policy_uuid}/ #
DELETE /policies/expression/{policy_uuid}/ #
GET /policies/expression/{policy_uuid}/used_by/ #
GET /policies/geoip/ #
POST /policies/geoip/ #
GET /policies/geoip/{policy_uuid}/ #
PUT /policies/geoip/{policy_uuid}/ #
PATCH /policies/geoip/{policy_uuid}/ #
DELETE /policies/geoip/{policy_uuid}/ #
GET /policies/geoip/{policy_uuid}/used_by/ #
GET /policies/geoip_iso3166/ #
GET /policies/password/ #
POST /policies/password/ #
GET /policies/password/{policy_uuid}/ #
PUT /policies/password/{policy_uuid}/ #
PATCH /policies/password/{policy_uuid}/ #
DELETE /policies/password/{policy_uuid}/ #
GET /policies/password/{policy_uuid}/used_by/ #
GET /policies/password_expiry/ #
POST /policies/password_expiry/ #
GET /policies/password_expiry/{policy_uuid}/ #
PUT /policies/password_expiry/{policy_uuid}/ #
PATCH /policies/password_expiry/{policy_uuid}/ #
DELETE /policies/password_expiry/{policy_uuid}/ #
GET /policies/password_expiry/{policy_uuid}/used_by/ #
GET /policies/reputation/ #
POST /policies/reputation/ #
GET /policies/reputation/{policy_uuid}/ #
PUT /policies/reputation/{policy_uuid}/ #
PATCH /policies/reputation/{policy_uuid}/ #
DELETE /policies/reputation/{policy_uuid}/ #
GET /policies/reputation/{policy_uuid}/used_by/ #
GET /policies/reputation/scores/ #
GET /policies/reputation/scores/{reputation_uuid}/ #
DELETE /policies/reputation/scores/{reputation_uuid}/ #
GET /policies/reputation/scores/{reputation_uuid}/used_by/ #
GET /policies/unique_password/ #
POST /policies/unique_password/ #
GET /policies/unique_password/{policy_uuid}/ #
PUT /policies/unique_password/{policy_uuid}/ #
PATCH /policies/unique_password/{policy_uuid}/ #
DELETE /policies/unique_password/{policy_uuid}/ #
GET /policies/unique_password/{policy_uuid}/used_by/ #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/authentik-policies-api"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

authentik-policies-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: authentik Policies API
  version: 2026.11.0-rc1
  description: Making authentication simple.
  contact:
    email: hello@goauthentik.io
  license:
    name: MIT
    url: https://github.com/goauthentik/authentik/blob/main/LICENSE
  x-source-url: https://api.goauthentik.io/schema.yml
  x-last-validated: '2026-09-04'
servers:
- url: /api/v3
tags:
- name: policies
paths:
  /policies/all/:
    get:
      operationId: policies_all_list
      description: Policy Viewset
      parameters:
      - in: query
        name: bindings__isnull
        schema:
          type: boolean
      - $ref: '#/components/parameters/QueryPaginationOrdering'
      - $ref: '#/components/parameters/QueryPaginationPage'
      - $ref: '#/components/parameters/QueryPaginationPageSize'
      - in: query
        name: promptstage__isnull
        schema:
          type: boolean
      - $ref: '#/components/parameters/QuerySearch'
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedPolicyList'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/all/{policy_uuid}/:
    get:
      operationId: policies_all_retrieve
      description: Policy Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Policy.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Policy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    delete:
      operationId: policies_all_destroy
      description: Policy Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Policy.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '204':
          description: No response body
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/all/{policy_uuid}/test/:
    post:
      operationId: policies_all_test_create
      description: Test policy
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Policy.
        required: true
      tags:
      - policies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolicyTestRequest'
        required: true
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyTestResult'
          description: ''
        '400':
          description: Invalid parameters
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/all/{policy_uuid}/used_by/:
    get:
      operationId: policies_all_used_by_list
      description: Get a list of all objects that use this object
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Policy.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UsedBy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/all/cache_clear/:
    post:
      operationId: policies_all_cache_clear_create
      description: Clear policy cache
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '204':
          description: Successfully cleared cache
        '400':
          description: Bad request
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/all/cache_info/:
    get:
      operationId: policies_all_cache_info_retrieve
      description: Info about cached policies
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Cache'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/all/types/:
    get:
      operationId: policies_all_types_list
      description: Get all creatable types
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TypeCreate'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/bindings/:
    get:
      operationId: policies_bindings_list
      description: PolicyBinding Viewset
      parameters:
      - in: query
        name: enabled
        schema:
          type: boolean
      - in: query
        name: order
        schema:
          type: integer
      - $ref: '#/components/parameters/QueryPaginationOrdering'
      - $ref: '#/components/parameters/QueryPaginationPage'
      - $ref: '#/components/parameters/QueryPaginationPageSize'
      - in: query
        name: policy
        schema:
          type: string
          format: uuid
      - in: query
        name: policy__isnull
        schema:
          type: boolean
      - $ref: '#/components/parameters/QuerySearch'
      - in: query
        name: target
        schema:
          type: string
          format: uuid
      - in: query
        name: target_in
        schema:
          type: array
          items:
            type: string
            format: uuid
        explode: true
        style: form
      - in: query
        name: timeout
        schema:
          type: integer
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedPolicyBindingList'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    post:
      operationId: policies_bindings_create
      description: PolicyBinding Viewset
      tags:
      - policies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolicyBindingRequest'
        required: true
      security:
      - authentik: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyBinding'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/bindings/{policy_binding_uuid}/:
    get:
      operationId: policies_bindings_retrieve
      description: PolicyBinding Viewset
      parameters:
      - in: path
        name: policy_binding_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Policy Binding.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyBinding'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    put:
      operationId: policies_bindings_update
      description: PolicyBinding Viewset
      parameters:
      - in: path
        name: policy_binding_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Policy Binding.
        required: true
      tags:
      - policies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolicyBindingRequest'
        required: true
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyBinding'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    patch:
      operationId: policies_bindings_partial_update
      description: PolicyBinding Viewset
      parameters:
      - in: path
        name: policy_binding_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Policy Binding.
        required: true
      tags:
      - policies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedPolicyBindingRequest'
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyBinding'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    delete:
      operationId: policies_bindings_destroy
      description: PolicyBinding Viewset
      parameters:
      - in: path
        name: policy_binding_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Policy Binding.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '204':
          description: No response body
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/bindings/{policy_binding_uuid}/used_by/:
    get:
      operationId: policies_bindings_used_by_list
      description: Get a list of all objects that use this object
      parameters:
      - in: path
        name: policy_binding_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Policy Binding.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UsedBy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/dummy/:
    get:
      operationId: policies_dummy_list
      description: Dummy Viewset
      parameters:
      - in: query
        name: created
        schema:
          type: string
          format: date-time
      - in: query
        name: execution_logging
        schema:
          type: boolean
      - in: query
        name: last_updated
        schema:
          type: string
          format: date-time
      - $ref: '#/components/parameters/QueryName'
      - $ref: '#/components/parameters/QueryPaginationOrdering'
      - $ref: '#/components/parameters/QueryPaginationPage'
      - $ref: '#/components/parameters/QueryPaginationPageSize'
      - in: query
        name: policy_uuid
        schema:
          type: string
          format: uuid
      - in: query
        name: result
        schema:
          type: boolean
      - $ref: '#/components/parameters/QuerySearch'
      - in: query
        name: wait_max
        schema:
          type: integer
      - in: query
        name: wait_min
        schema:
          type: integer
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedDummyPolicyList'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    post:
      operationId: policies_dummy_create
      description: Dummy Viewset
      tags:
      - policies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DummyPolicyRequest'
        required: true
      security:
      - authentik: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DummyPolicy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/dummy/{policy_uuid}/:
    get:
      operationId: policies_dummy_retrieve
      description: Dummy Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Dummy Policy.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DummyPolicy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    put:
      operationId: policies_dummy_update
      description: Dummy Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Dummy Policy.
        required: true
      tags:
      - policies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DummyPolicyRequest'
        required: true
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DummyPolicy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    patch:
      operationId: policies_dummy_partial_update
      description: Dummy Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Dummy Policy.
        required: true
      tags:
      - policies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedDummyPolicyRequest'
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DummyPolicy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    delete:
      operationId: policies_dummy_destroy
      description: Dummy Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Dummy Policy.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '204':
          description: No response body
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/dummy/{policy_uuid}/used_by/:
    get:
      operationId: policies_dummy_used_by_list
      description: Get a list of all objects that use this object
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Dummy Policy.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UsedBy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/event_matcher/:
    get:
      operationId: policies_event_matcher_list
      description: Event Matcher Policy Viewset
      parameters:
      - in: query
        name: action
        schema:
          allOf:
          - $ref: '#/components/schemas/EventActions'
          description: 'Match created events with this action type. When left empty, all action types will be matched.


            '
      - in: query
        name: app
        schema:
          type: string
      - in: query
        name: client_ip
        schema:
          type: string
      - in: query
        name: created
        schema:
          type: string
          format: date-time
      - in: query
        name: execution_logging
        schema:
          type: boolean
      - in: query
        name: last_updated
        schema:
          type: string
          format: date-time
      - in: query
        name: model
        schema:
          type: string
      - $ref: '#/components/parameters/QueryName'
      - $ref: '#/components/parameters/QueryPaginationOrdering'
      - $ref: '#/components/parameters/QueryPaginationPage'
      - $ref: '#/components/parameters/QueryPaginationPageSize'
      - in: query
        name: policy_uuid
        schema:
          type: string
          format: uuid
      - in: query
        name: query
        schema:
          type: string
      - $ref: '#/components/parameters/QuerySearch'
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedEventMatcherPolicyList'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    post:
      operationId: policies_event_matcher_create
      description: Event Matcher Policy Viewset
      tags:
      - policies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventMatcherPolicyRequest'
        required: true
      security:
      - authentik: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventMatcherPolicy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/event_matcher/{policy_uuid}/:
    get:
      operationId: policies_event_matcher_retrieve
      description: Event Matcher Policy Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Event Matcher Policy.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventMatcherPolicy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    put:
      operationId: policies_event_matcher_update
      description: Event Matcher Policy Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Event Matcher Policy.
        required: true
      tags:
      - policies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventMatcherPolicyRequest'
        required: true
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventMatcherPolicy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    patch:
      operationId: policies_event_matcher_partial_update
      description: Event Matcher Policy Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Event Matcher Policy.
        required: true
      tags:
      - policies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedEventMatcherPolicyRequest'
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventMatcherPolicy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    delete:
      operationId: policies_event_matcher_destroy
      description: Event Matcher Policy Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Event Matcher Policy.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '204':
          description: No response body
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/event_matcher/{policy_uuid}/used_by/:
    get:
      operationId: policies_event_matcher_used_by_list
      description: Get a list of all objects that use this object
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Event Matcher Policy.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UsedBy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/expression/:
    get:
      operationId: policies_expression_list
      description: Source Viewset
      parameters:
      - in: query
        name: created
        schema:
          type: string
          format: date-time
      - in: query
        name: execution_logging
        schema:
          type: boolean
      - in: query
        name: expression
        schema:
          type: string
      - in: query
        name: last_updated
        schema:
          type: string
          format: date-time
      - $ref: '#/components/parameters/QueryName'
      - $ref: '#/components/parameters/QueryPaginationOrdering'
      - $ref: '#/components/parameters/QueryPaginationPage'
      - $ref: '#/components/parameters/QueryPaginationPageSize'
      - in: query
        name: policy_uuid
        schema:
          type: string
          format: uuid
      - $ref: '#/components/parameters/QuerySearch'
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedExpressionPolicyList'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    post:
      operationId: policies_expression_create
      description: Source Viewset
      tags:
      - policies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExpressionPolicyRequest'
        required: true
      security:
      - authentik: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpressionPolicy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/expression/{policy_uuid}/:
    get:
      operationId: policies_expression_retrieve
      description: Source Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Expression Policy.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpressionPolicy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    put:
      operationId: policies_expression_update
      description: Source Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Expression Policy.
        required: true
      tags:
      - policies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExpressionPolicyRequest'
        required: true
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpressionPolicy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    patch:
      operationId: policies_expression_partial_update
      description: Source Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Expression Policy.
        required: true
      tags:
      - policies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedExpressionPolicyRequest'
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpressionPolicy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    delete:
      operationId: policies_expression_destroy
      description: Source Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Expression Policy.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '204':
          description: No response body
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/expression/{policy_uuid}/used_by/:
    get:
      operationId: policies_expression_used_by_list
      description: Get a list of all objects that use this object
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this Expression Policy.
        required: true
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UsedBy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/geoip/:
    get:
      operationId: policies_geoip_list
      description: GeoIP Viewset
      parameters:
      - $ref: '#/components/parameters/QueryName'
      - $ref: '#/components/parameters/QueryPaginationOrdering'
      - $ref: '#/components/parameters/QueryPaginationPage'
      - $ref: '#/components/parameters/QueryPaginationPageSize'
      - $ref: '#/components/parameters/QuerySearch'
      tags:
      - policies
      security:
      - authentik: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGeoIPPolicyList'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
    post:
      operationId: policies_geoip_create
      description: GeoIP Viewset
      tags:
      - policies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GeoIPPolicyRequest'
        required: true
      security:
      - authentik: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeoIPPolicy'
          description: ''
        '400':
          $ref: '#/components/responses/ValidationErrorResponse'
        '403':
          $ref: '#/components/responses/GenericErrorResponse'
  /policies/geoip/{policy_uuid}/:
    get:
      operationId: policies_geoip_retrieve
      description: GeoIP Viewset
      parameters:
      - in: path
        name: policy_uuid
        schema:
          type: string
          format: uuid
        description: A UUID string identifying this GeoIP Policy.
        required: true
      tags:
      - policies
      security:
      - a

# --- truncated at 32 KB (123 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/authentik/refs/heads/main/openapi/authentik-policies-api-openapi.yml