# coding: utf-8

"""
Immich

Immich API

The version of the OpenAPI document: 2.4.1
Generated by OpenAPI Generator (https://openapi-generator.tech)

Do not edit the class manually.
"""  # noqa: E501

from __future__ import annotations
import json
from enum import Enum
from typing_extensions import Self


class Permission(str, Enum):
    """
    Permission
    """

    """
    allowed enum values
    """
    ALL = "all"
    ACTIVITY_DOT_CREATE = "activity.create"
    ACTIVITY_DOT_READ = "activity.read"
    ACTIVITY_DOT_UPDATE = "activity.update"
    ACTIVITY_DOT_DELETE = "activity.delete"
    ACTIVITY_DOT_STATISTICS = "activity.statistics"
    API_KEY_DOT_CREATE = "apiKey.create"
    API_KEY_DOT_READ = "apiKey.read"
    API_KEY_DOT_UPDATE = "apiKey.update"
    API_KEY_DOT_DELETE = "apiKey.delete"
    ASSET_DOT_READ = "asset.read"
    ASSET_DOT_UPDATE = "asset.update"
    ASSET_DOT_DELETE = "asset.delete"
    ASSET_DOT_STATISTICS = "asset.statistics"
    ASSET_DOT_SHARE = "asset.share"
    ASSET_DOT_VIEW = "asset.view"
    ASSET_DOT_DOWNLOAD = "asset.download"
    ASSET_DOT_UPLOAD = "asset.upload"
    ASSET_DOT_REPLACE = "asset.replace"
    ASSET_DOT_COPY = "asset.copy"
    ALBUM_DOT_CREATE = "album.create"
    ALBUM_DOT_READ = "album.read"
    ALBUM_DOT_UPDATE = "album.update"
    ALBUM_DOT_DELETE = "album.delete"
    ALBUM_DOT_STATISTICS = "album.statistics"
    ALBUM_DOT_SHARE = "album.share"
    ALBUM_DOT_DOWNLOAD = "album.download"
    ALBUM_ASSET_DOT_CREATE = "albumAsset.create"
    ALBUM_ASSET_DOT_DELETE = "albumAsset.delete"
    ALBUM_USER_DOT_CREATE = "albumUser.create"
    ALBUM_USER_DOT_UPDATE = "albumUser.update"
    ALBUM_USER_DOT_DELETE = "albumUser.delete"
    AUTH_DOT_CHANGE_PASSWORD = "auth.changePassword"
    AUTH_DEVICE_DOT_DELETE = "authDevice.delete"
    ARCHIVE_DOT_READ = "archive.read"
    DUPLICATE_DOT_READ = "duplicate.read"
    DUPLICATE_DOT_DELETE = "duplicate.delete"
    FACE_DOT_CREATE = "face.create"
    FACE_DOT_READ = "face.read"
    FACE_DOT_UPDATE = "face.update"
    FACE_DOT_DELETE = "face.delete"
    JOB_DOT_CREATE = "job.create"
    JOB_DOT_READ = "job.read"
    LIBRARY_DOT_CREATE = "library.create"
    LIBRARY_DOT_READ = "library.read"
    LIBRARY_DOT_UPDATE = "library.update"
    LIBRARY_DOT_DELETE = "library.delete"
    LIBRARY_DOT_STATISTICS = "library.statistics"
    TIMELINE_DOT_READ = "timeline.read"
    TIMELINE_DOT_DOWNLOAD = "timeline.download"
    MAINTENANCE = "maintenance"
    MEMORY_DOT_CREATE = "memory.create"
    MEMORY_DOT_READ = "memory.read"
    MEMORY_DOT_UPDATE = "memory.update"
    MEMORY_DOT_DELETE = "memory.delete"
    MEMORY_DOT_STATISTICS = "memory.statistics"
    MEMORY_ASSET_DOT_CREATE = "memoryAsset.create"
    MEMORY_ASSET_DOT_DELETE = "memoryAsset.delete"
    NOTIFICATION_DOT_CREATE = "notification.create"
    NOTIFICATION_DOT_READ = "notification.read"
    NOTIFICATION_DOT_UPDATE = "notification.update"
    NOTIFICATION_DOT_DELETE = "notification.delete"
    PARTNER_DOT_CREATE = "partner.create"
    PARTNER_DOT_READ = "partner.read"
    PARTNER_DOT_UPDATE = "partner.update"
    PARTNER_DOT_DELETE = "partner.delete"
    PERSON_DOT_CREATE = "person.create"
    PERSON_DOT_READ = "person.read"
    PERSON_DOT_UPDATE = "person.update"
    PERSON_DOT_DELETE = "person.delete"
    PERSON_DOT_STATISTICS = "person.statistics"
    PERSON_DOT_MERGE = "person.merge"
    PERSON_DOT_REASSIGN = "person.reassign"
    PIN_CODE_DOT_CREATE = "pinCode.create"
    PIN_CODE_DOT_UPDATE = "pinCode.update"
    PIN_CODE_DOT_DELETE = "pinCode.delete"
    PLUGIN_DOT_CREATE = "plugin.create"
    PLUGIN_DOT_READ = "plugin.read"
    PLUGIN_DOT_UPDATE = "plugin.update"
    PLUGIN_DOT_DELETE = "plugin.delete"
    SERVER_DOT_ABOUT = "server.about"
    SERVER_DOT_APK_LINKS = "server.apkLinks"
    SERVER_DOT_STORAGE = "server.storage"
    SERVER_DOT_STATISTICS = "server.statistics"
    SERVER_DOT_VERSION_CHECK = "server.versionCheck"
    SERVER_LICENSE_DOT_READ = "serverLicense.read"
    SERVER_LICENSE_DOT_UPDATE = "serverLicense.update"
    SERVER_LICENSE_DOT_DELETE = "serverLicense.delete"
    SESSION_DOT_CREATE = "session.create"
    SESSION_DOT_READ = "session.read"
    SESSION_DOT_UPDATE = "session.update"
    SESSION_DOT_DELETE = "session.delete"
    SESSION_DOT_LOCK = "session.lock"
    SHARED_LINK_DOT_CREATE = "sharedLink.create"
    SHARED_LINK_DOT_READ = "sharedLink.read"
    SHARED_LINK_DOT_UPDATE = "sharedLink.update"
    SHARED_LINK_DOT_DELETE = "sharedLink.delete"
    STACK_DOT_CREATE = "stack.create"
    STACK_DOT_READ = "stack.read"
    STACK_DOT_UPDATE = "stack.update"
    STACK_DOT_DELETE = "stack.delete"
    SYNC_DOT_STREAM = "sync.stream"
    SYNC_CHECKPOINT_DOT_READ = "syncCheckpoint.read"
    SYNC_CHECKPOINT_DOT_UPDATE = "syncCheckpoint.update"
    SYNC_CHECKPOINT_DOT_DELETE = "syncCheckpoint.delete"
    SYSTEM_CONFIG_DOT_READ = "systemConfig.read"
    SYSTEM_CONFIG_DOT_UPDATE = "systemConfig.update"
    SYSTEM_METADATA_DOT_READ = "systemMetadata.read"
    SYSTEM_METADATA_DOT_UPDATE = "systemMetadata.update"
    TAG_DOT_CREATE = "tag.create"
    TAG_DOT_READ = "tag.read"
    TAG_DOT_UPDATE = "tag.update"
    TAG_DOT_DELETE = "tag.delete"
    TAG_DOT_ASSET = "tag.asset"
    USER_DOT_READ = "user.read"
    USER_DOT_UPDATE = "user.update"
    USER_LICENSE_DOT_CREATE = "userLicense.create"
    USER_LICENSE_DOT_READ = "userLicense.read"
    USER_LICENSE_DOT_UPDATE = "userLicense.update"
    USER_LICENSE_DOT_DELETE = "userLicense.delete"
    USER_ONBOARDING_DOT_READ = "userOnboarding.read"
    USER_ONBOARDING_DOT_UPDATE = "userOnboarding.update"
    USER_ONBOARDING_DOT_DELETE = "userOnboarding.delete"
    USER_PREFERENCE_DOT_READ = "userPreference.read"
    USER_PREFERENCE_DOT_UPDATE = "userPreference.update"
    USER_PROFILE_IMAGE_DOT_CREATE = "userProfileImage.create"
    USER_PROFILE_IMAGE_DOT_READ = "userProfileImage.read"
    USER_PROFILE_IMAGE_DOT_UPDATE = "userProfileImage.update"
    USER_PROFILE_IMAGE_DOT_DELETE = "userProfileImage.delete"
    QUEUE_DOT_READ = "queue.read"
    QUEUE_DOT_UPDATE = "queue.update"
    QUEUE_JOB_DOT_CREATE = "queueJob.create"
    QUEUE_JOB_DOT_READ = "queueJob.read"
    QUEUE_JOB_DOT_UPDATE = "queueJob.update"
    QUEUE_JOB_DOT_DELETE = "queueJob.delete"
    WORKFLOW_DOT_CREATE = "workflow.create"
    WORKFLOW_DOT_READ = "workflow.read"
    WORKFLOW_DOT_UPDATE = "workflow.update"
    WORKFLOW_DOT_DELETE = "workflow.delete"
    ADMIN_USER_DOT_CREATE = "adminUser.create"
    ADMIN_USER_DOT_READ = "adminUser.read"
    ADMIN_USER_DOT_UPDATE = "adminUser.update"
    ADMIN_USER_DOT_DELETE = "adminUser.delete"
    ADMIN_SESSION_DOT_READ = "adminSession.read"
    ADMIN_AUTH_DOT_UNLINK_ALL = "adminAuth.unlinkAll"

    @classmethod
    def from_json(cls, json_str: str) -> Self:
        """Create an instance of Permission from a JSON string"""
        return cls(json.loads(json_str))
