# do not import all endpoints into this module because that uses a lot of memory and stack frames
# if you need the ability to import all endpoints from this module, import them with
# from lakefs_client.apis.path_to_api import path_to_api

import enum


class PathValues(str, enum.Enum):
    SETUP_COMM_PREFS = "/setup_comm_prefs"
    SETUP_LAKEFS = "/setup_lakefs"
    USER = "/user"
    AUTH_LOGIN = "/auth/login"
    AUTH_PASSWORD = "/auth/password"
    AUTH_PASSWORD_FORGOT = "/auth/password/forgot"
    AUTH_CAPABILITIES = "/auth/capabilities"
    AUTH_USERS = "/auth/users"
    AUTH_USERS_USER_ID = "/auth/users/{userId}"
    AUTH_GROUPS = "/auth/groups"
    AUTH_GROUPS_GROUP_ID = "/auth/groups/{groupId}"
    AUTH_POLICIES = "/auth/policies"
    AUTH_POLICIES_POLICY_ID = "/auth/policies/{policyId}"
    AUTH_GROUPS_GROUP_ID_MEMBERS = "/auth/groups/{groupId}/members"
    AUTH_GROUPS_GROUP_ID_MEMBERS_USER_ID = "/auth/groups/{groupId}/members/{userId}"
    AUTH_USERS_USER_ID_CREDENTIALS = "/auth/users/{userId}/credentials"
    AUTH_USERS_USER_ID_CREDENTIALS_ACCESS_KEY_ID = "/auth/users/{userId}/credentials/{accessKeyId}"
    AUTH_USERS_USER_ID_GROUPS = "/auth/users/{userId}/groups"
    AUTH_USERS_USER_ID_POLICIES = "/auth/users/{userId}/policies"
    AUTH_USERS_USER_ID_POLICIES_POLICY_ID = "/auth/users/{userId}/policies/{policyId}"
    AUTH_GROUPS_GROUP_ID_POLICIES = "/auth/groups/{groupId}/policies"
    AUTH_GROUPS_GROUP_ID_POLICIES_POLICY_ID = "/auth/groups/{groupId}/policies/{policyId}"
    REPOSITORIES = "/repositories"
    REPOSITORIES_REPOSITORY = "/repositories/{repository}"
    REPOSITORIES_REPOSITORY_OTF_REFS_LEFT_REF_DIFF_RIGHT_REF = "/repositories/{repository}/otf/refs/{left_ref}/diff/{right_ref}"
    REPOSITORIES_REPOSITORY_REFS_DUMP = "/repositories/{repository}/refs/dump"
    REPOSITORIES_REPOSITORY_REFS_RESTORE = "/repositories/{repository}/refs/restore"
    REPOSITORIES_REPOSITORY_TAGS = "/repositories/{repository}/tags"
    REPOSITORIES_REPOSITORY_TAGS_TAG = "/repositories/{repository}/tags/{tag}"
    REPOSITORIES_REPOSITORY_BRANCHES = "/repositories/{repository}/branches"
    REPOSITORIES_REPOSITORY_REFS_REF_COMMITS = "/repositories/{repository}/refs/{ref}/commits"
    REPOSITORIES_REPOSITORY_BRANCHES_BRANCH_COMMITS = "/repositories/{repository}/branches/{branch}/commits"
    REPOSITORIES_REPOSITORY_BRANCHES_BRANCH = "/repositories/{repository}/branches/{branch}"
    REPOSITORIES_REPOSITORY_BRANCHES_BRANCH_REVERT = "/repositories/{repository}/branches/{branch}/revert"
    REPOSITORIES_REPOSITORY_BRANCHES_BRANCH_CHERRYPICK = "/repositories/{repository}/branches/{branch}/cherry-pick"
    REPOSITORIES_REPOSITORY_REFS_SOURCE_REF_MERGE_DESTINATION_BRANCH = "/repositories/{repository}/refs/{sourceRef}/merge/{destinationBranch}"
    REPOSITORIES_REPOSITORY_BRANCHES_BRANCH_DIFF = "/repositories/{repository}/branches/{branch}/diff"
    REPOSITORIES_REPOSITORY_REFS_LEFT_REF_DIFF_RIGHT_REF = "/repositories/{repository}/refs/{leftRef}/diff/{rightRef}"
    REPOSITORIES_REPOSITORY_COMMITS_COMMIT_ID = "/repositories/{repository}/commits/{commitId}"
    REPOSITORIES_REPOSITORY_REFS_REF_OBJECTS = "/repositories/{repository}/refs/{ref}/objects"
    REPOSITORIES_REPOSITORY_BRANCHES_BRANCH_STAGING_BACKING = "/repositories/{repository}/branches/{branch}/staging/backing"
    REPOSITORIES_REPOSITORY_BRANCHES_METARANGES = "/repositories/{repository}/branches/metaranges"
    REPOSITORIES_REPOSITORY_BRANCHES_RANGES = "/repositories/{repository}/branches/ranges"
    REPOSITORIES_REPOSITORY_BRANCHES_BRANCH_OBJECTS = "/repositories/{repository}/branches/{branch}/objects"
    REPOSITORIES_REPOSITORY_BRANCHES_BRANCH_OBJECTS_DELETE = "/repositories/{repository}/branches/{branch}/objects/delete"
    REPOSITORIES_REPOSITORY_BRANCHES_BRANCH_OBJECTS_COPY = "/repositories/{repository}/branches/{branch}/objects/copy"
    REPOSITORIES_REPOSITORY_REFS_REF_OBJECTS_STAT = "/repositories/{repository}/refs/{ref}/objects/stat"
    REPOSITORIES_REPOSITORY_REFS_REF_OBJECTS_UNDERLYING_PROPERTIES = "/repositories/{repository}/refs/{ref}/objects/underlyingProperties"
    REPOSITORIES_REPOSITORY_REFS_REF_OBJECTS_LS = "/repositories/{repository}/refs/{ref}/objects/ls"
    REPOSITORIES_REPOSITORY_REFS_BRANCH_SYMLINK = "/repositories/{repository}/refs/{branch}/symlink"
    REPOSITORIES_REPOSITORY_ACTIONS_RUNS = "/repositories/{repository}/actions/runs"
    REPOSITORIES_REPOSITORY_ACTIONS_RUNS_RUN_ID = "/repositories/{repository}/actions/runs/{run_id}"
    REPOSITORIES_REPOSITORY_ACTIONS_RUNS_RUN_ID_HOOKS = "/repositories/{repository}/actions/runs/{run_id}/hooks"
    REPOSITORIES_REPOSITORY_ACTIONS_RUNS_RUN_ID_HOOKS_HOOK_RUN_ID_OUTPUT = "/repositories/{repository}/actions/runs/{run_id}/hooks/{hook_run_id}/output"
    REPOSITORIES_REPOSITORY_METADATA_META_RANGE_META_RANGE = "/repositories/{repository}/metadata/meta_range/{meta_range}"
    REPOSITORIES_REPOSITORY_METADATA_RANGE_RANGE = "/repositories/{repository}/metadata/range/{range}"
    REPOSITORIES_REPOSITORY_GC_RULES = "/repositories/{repository}/gc/rules"
    REPOSITORIES_REPOSITORY_GC_PREPARE_COMMITS = "/repositories/{repository}/gc/prepare_commits"
    REPOSITORIES_REPOSITORY_GC_PREPARE_UNCOMMITED = "/repositories/{repository}/gc/prepare_uncommited"
    REPOSITORIES_REPOSITORY_BRANCH_PROTECTION = "/repositories/{repository}/branch_protection"
    HEALTHCHECK = "/healthcheck"
    CONFIG_VERSION = "/config/version"
    CONFIG_STORAGE = "/config/storage"
    CONFIG_GARBAGECOLLECTION = "/config/garbage-collection"
    TEMPLATES_TEMPLATE_LOCATION = "/templates/{template_location}"
    STATISTICS = "/statistics"
