v3
latestOpenAPI 3.1.02026-07-311,4541,5202.3 MBList Testset Rows
Mixin for views that need method-level permission enforcement.
Supports two approaches for defining permissions:
-
Auto-generation (Recommended - DRY): Set permission_resource to auto-generate CRUD permissions based on HTTP methods:
class MyView(PermissionMapMixin, JWTAndAPIKeyAuthenticationViewMixin, RetrieveUpdateDestroyAPIView): permission_resource = Resources.LOG # Auto-generates: # GET -> log:read # PATCH -> log:update # DELETE -> log:delete
Override specific methods via permission_map (always use constants): class MyView(PermissionMapMixin, ...): permission_resource = Resources.LOG permission_map: PermissionMap = { "GET": None, # Override: no permission required for GET "POST": make_permission(Resources.LOG, CRUDActions.READ), # POST acts as read }
-
Explicit mapping (for non-CRUD or complex cases - always use constants): class MyView(PermissionMapMixin, JWTAndAPIKeyAuthenticationViewMixin, APIView): permission_map: PermissionMap = { "GET": make_permission(Features.PROXY, Actions.ACCESS), "POST": make_permission(Features.PLAYGROUND, Actions.ACCESS), }
-
Dynamic logic (most flexible): def get_required_permission(self, method: str) -> str | None: if self.kwargs.get('public'): return None return "dataset:read"
Notes:
- permission_map acts as an override when permission_resource is set
- If neither is defined, no permission check is performed (backward compatible)
- HasJWTPermission automatically enforces permissions when defined
Path parameters
Query parameters
A page number within the paginated result set.
Number of results to return per page.
Headers
Use your Respan API key for Respan API authentication. Enter only the Respan API key value; clients send Authorization: Bearer <RESPAN_API_KEY>. For /api/responses, provider credentials such as Perplexity, OpenAI, or Azure OpenAI go in Settings -> Providers or respan_params.credential_override in the request body, not in this authentication field.