authentik.admin.api.meta

Meta API

 1"""Meta API"""
 2
 3from drf_spectacular.utils import extend_schema
 4from rest_framework.fields import CharField
 5from rest_framework.permissions import IsAuthenticated
 6from rest_framework.request import Request
 7from rest_framework.response import Response
 8from rest_framework.viewsets import ViewSet
 9
10from authentik.core.api.utils import PassiveSerializer
11from authentik.lib.api import Models
12from authentik.lib.utils.reflection import get_apps
13
14
15class AppSerializer(PassiveSerializer):
16    """Serialize Application info"""
17
18    name = CharField()
19    label = CharField()
20
21
22class AppsViewSet(ViewSet):
23    """Read-only view list all installed apps"""
24
25    permission_classes = [IsAuthenticated]
26
27    @extend_schema(responses={200: AppSerializer(many=True)})
28    def list(self, request: Request) -> Response:
29        """Read-only view list all installed apps"""
30        data = []
31        for app in sorted(get_apps(), key=lambda app: app.name):
32            data.append({"name": app.name, "label": app.verbose_name})
33        return Response(AppSerializer(data, many=True).data)
34
35
36class ModelViewSet(ViewSet):
37    """Read-only view list all installed models"""
38
39    permission_classes = [IsAuthenticated]
40
41    @extend_schema(responses={200: AppSerializer(many=True)})
42    def list(self, request: Request) -> Response:
43        """Read-only view list all installed models"""
44        data = []
45        for name, label in Models.choices:
46            data.append({"name": name, "label": label})
47        return Response(AppSerializer(data, many=True).data)
class AppSerializer(authentik.core.api.utils.PassiveSerializer):
16class AppSerializer(PassiveSerializer):
17    """Serialize Application info"""
18
19    name = CharField()
20    label = CharField()

Serialize Application info

name
label
class AppsViewSet(rest_framework.viewsets.ViewSet):
23class AppsViewSet(ViewSet):
24    """Read-only view list all installed apps"""
25
26    permission_classes = [IsAuthenticated]
27
28    @extend_schema(responses={200: AppSerializer(many=True)})
29    def list(self, request: Request) -> Response:
30        """Read-only view list all installed apps"""
31        data = []
32        for app in sorted(get_apps(), key=lambda app: app.name):
33            data.append({"name": app.name, "label": app.verbose_name})
34        return Response(AppSerializer(data, many=True).data)

Read-only view list all installed apps

permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>]
@extend_schema(responses={200: AppSerializer(many=True)})
def list( self, request: rest_framework.request.Request) -> rest_framework.response.Response:
28    @extend_schema(responses={200: AppSerializer(many=True)})
29    def list(self, request: Request) -> Response:
30        """Read-only view list all installed apps"""
31        data = []
32        for app in sorted(get_apps(), key=lambda app: app.name):
33            data.append({"name": app.name, "label": app.verbose_name})
34        return Response(AppSerializer(data, many=True).data)

Read-only view list all installed apps

name = None
description = None
suffix = None
detail = None
basename = None
class ModelViewSet(rest_framework.viewsets.ViewSet):
37class ModelViewSet(ViewSet):
38    """Read-only view list all installed models"""
39
40    permission_classes = [IsAuthenticated]
41
42    @extend_schema(responses={200: AppSerializer(many=True)})
43    def list(self, request: Request) -> Response:
44        """Read-only view list all installed models"""
45        data = []
46        for name, label in Models.choices:
47            data.append({"name": name, "label": label})
48        return Response(AppSerializer(data, many=True).data)

Read-only view list all installed models

permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>]
@extend_schema(responses={200: AppSerializer(many=True)})
def list( self, request: rest_framework.request.Request) -> rest_framework.response.Response:
42    @extend_schema(responses={200: AppSerializer(many=True)})
43    def list(self, request: Request) -> Response:
44        """Read-only view list all installed models"""
45        data = []
46        for name, label in Models.choices:
47            data.append({"name": name, "label": label})
48        return Response(AppSerializer(data, many=True).data)

Read-only view list all installed models

name = None
description = None
suffix = None
detail = None
basename = None