> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://docs.ampdb.io/api/mcp` to find what you need.

# Error Codes

Every error the SDK's API clients fail with when a service returns an error: the [Admin API](/sdks/typescript/error-codes#admin-api), the [Registry API](/sdks/typescript/error-codes#registry-api), and the [authentication service](/sdks/typescript/error-codes#authentication). Each has a `_tag`, its name, which `Effect.catchTag` matches; a `code`, which stays the same across releases, for your code to check; and a `message`, which describes this occurrence, for people. [Errors](/sdks/typescript/errors) explains how to handle them, and lists the errors of queries and streams.

## Admin API

`AdminApi`'s methods fail with these errors, from `@edgeandnode/amp/admin/error`. After each code is the HTTP status the Admin API returns it with. [Admin API](/managing-amp/admin-api) documents the endpoints.

* **`BuildLineageError`** (`BUILD_LINEAGE_ERROR`, 500): Failed to build the lineage graph of a dataset. Causes: registry or manifest store errors while traversing dataset dependencies. Returned by `getDatasetLineage`.
* **`CatalogQualifiedTableError`** (`CATALOG_QUALIFIED_TABLE`, 400): Table reference includes a catalog qualifier. Causes: SQL query contains a catalog-qualified table reference (catalog.schema.table); only dataset-qualified tables are supported (dataset.table). Returned by `getOutputSchema`.
* **`CatalogQualifiedTableInNetworkResolutionError`** (`CATALOG_QUALIFIED_TABLE_IN_NETWORK_RESOLUTION`, 500): A catalog-qualified table was encountered while resolving table networks. Returned by `getOutputSchema`.
* **`CyclicDependencyError`** (`CYCLIC_DEPENDENCY`, 400): Tables in the request reference each other cyclically. Returned by `getOutputSchema`.
* **`DatasetNotFoundError`** (`DATASET_NOT_FOUND`, 404): The requested dataset does not exist. Causes: dataset ID does not exist in the system; dataset has been deleted; dataset not yet registered. Returned by `getDatasetVersion`, `getDatasetManifest`, and `getDatasetLineage`.
* **`DeleteJobError`** (`DELETE_JOB_ERROR`, 500): Failed to delete job from scheduler. Returned by `deleteJob`.
* **`DependencyAliasNotFoundError`** (`DEPENDENCY_ALIAS_NOT_FOUND`, 400): Dependency alias not found in dependencies map. Causes: table reference uses an alias not provided in dependencies; function reference uses an alias not provided in dependencies. Returned by `getOutputSchema`.
* **`DependencyManifestLinkCheckError`** (`DEPENDENCY_MANIFEST_LINK_CHECK`, 500): Failed to verify that a dependency manifest is linked to its dataset. Returned by `getOutputSchema`.
* **`DependencyNotFoundError`** (`DEPENDENCY_NOT_FOUND`, 404): Dependency not found in dataset store. Causes: referenced dependency does not exist in dataset store; specified version or hash cannot be found. Returned by `getOutputSchema`.
* **`DependencyVersionResolutionError`** (`DEPENDENCY_VERSION_RESOLUTION`, 500): Failed to resolve the version of a dependency. Returned by `getOutputSchema`.
* **`DeserializeJobDescriptorError`** (`DESERIALIZE_JOB_DESCRIPTOR_ERROR`, 500): Failed to deserialize a job descriptor. Returned by `getJobs` and `getJobById`.
* **`EmptyTablesAndFunctionsError`** (`EMPTY_TABLES_AND_FUNCTIONS`, 400): No tables or functions provided. Causes: at least one table or function is required for schema analysis. Returned by `getOutputSchema`.
* **`GetDatasetError`** (`GET_DATASET_ERROR`, 500): Failed to retrieve dataset from store. Causes: dataset manifest is invalid or corrupted; unsupported dataset kind; storage backend errors when reading dataset. Returned by `registerDataset`, `getDatasetVersion`, and `getOutputSchema`.
* **`GetDescriptorError`** (`GET_DESCRIPTOR_ERROR`, 500): Failed to retrieve the descriptor of a job. Returned by `getJobById`.
* **`GetJobError`** (`GET_JOB_ERROR`, 500): Failed to retrieve job from scheduler. Returned by `getJobById` and `deleteJob`.
* **`GetManifestPathError`** (`GET_MANIFEST_PATH_ERROR`, 500): Failed to query manifest path from metadata database. Returned by `getDatasetManifest`.
* **`InvalidJobIdError`** (`INVALID_JOB_ID`, 400): The provided job ID is malformed or invalid. Causes: job ID contains invalid characters; job ID format does not match expected pattern. Returned by `getJobById`, `stopJob`, and `deleteJob`.
* **`InvalidManifestError`** (`INVALID_MANIFEST`, 400): Dataset manifest is semantically invalid. Causes: invalid dataset references in SQL views; circular dependencies between datasets; schema validation failures. Returned by `registerDataset` and `registerManifest`.
* **`InvalidPathError`** (`INVALID_PATH`, 400): Invalid path parameters. Returned by `getDatasetVersions`, `getDatasetVersion`, `getDatasetManifest`, and `getDatasetLineage`.
* **`InvalidPayloadFormatError`** (`INVALID_PAYLOAD_FORMAT`, 400): Invalid request payload format. Returned by `registerDataset`, `getOutputSchema`, and `registerManifest`.
* **`InvalidPlanError`** (`INVALID_PLAN`, 400): The query plan could not be built from the user-provided SQL. Returned by `getOutputSchema`.
* **`InvalidQueryParametersError`** (`INVALID_QUERY_PARAMETERS`, 400): Invalid query parameters. Returned by `getJobs`.
* **`InvalidSortedByConfigError`** (`INVALID_SORTED_BY_CONFIG`, 400): The manifest `sorted_by` configuration is invalid. Returned by `registerDataset` and `registerManifest`.
* **`InvalidStoredDatasetNameError`** (`INVALID_STORED_DATASET_NAME`, 500): A stored dataset name is malformed. Returned by `getDatasets`.
* **`InvalidStoredDatasetNamespaceError`** (`INVALID_STORED_DATASET_NAMESPACE`, 500): A stored dataset namespace is malformed. Returned by `getDatasets`.
* **`InvalidStoredDatasetVersionError`** (`INVALID_STORED_DATASET_VERSION`, 500): A stored dataset version is malformed. Returned by `getDatasets` and `getDatasetVersions`.
* **`InvalidTableNameError`** (`INVALID_TABLE_NAME`, 400): Table name does not conform to SQL identifier rules. Returned by `getOutputSchema`.
* **`InvalidTableSqlError`** (`INVALID_TABLE_SQL`, 400): SQL syntax error in table definition. Returned by `getOutputSchema`.
* **`JobConflictError`** (`JOB_CONFLICT`, 409): Job exists but cannot be deleted (not in terminal state). Returned by `deleteJob`.
* **`JobNotFoundError`** (`JOB_NOT_FOUND`, 404): The requested job does not exist. Causes: job ID does not exist in the system; job has been deleted. Returned by `getJobById` and `stopJob`.
* **`LimitInvalidError`** (`LIMIT_INVALID`, 400): The requested limit is invalid (zero). Returned by `getJobs`.
* **`LimitTooLargeError`** (`LIMIT_TOO_LARGE`, 400): The requested limit exceeds the maximum allowed value. Returned by `getJobs`.
* **`ListAllDatasetsError`** (`LIST_ALL_DATASETS_ERROR`, 500): Failed to list all datasets from dataset store. Returned by `getDatasets`.
* **`ListDatasetTagsError`** (`LIST_DATASET_TAGS_ERROR`, 500): Failed to list the tags pointing at a dataset manifest. Returned by `getDatasetVersion`.
* **`ListJobDescriptorsError`** (`LIST_JOB_DESCRIPTORS_ERROR`, 500): Failed to list the descriptors of the listed jobs. Returned by `getJobs`.
* **`ListJobsError`** (`LIST_JOBS_ERROR`, 500): Failed to list jobs from scheduler. Returned by `getJobs`.
* **`ListVersionTagsError`** (`LIST_VERSION_TAGS_ERROR`, 500): Failed to list version tags from dataset store. Returned by `getDatasetVersions`.
* **`ManifestLinkingError`** (`MANIFEST_LINKING_ERROR`, 500): Failed to link manifest to dataset. Returned by `registerDataset`.
* **`ManifestNotFoundError`** (`MANIFEST_NOT_FOUND`, 404): Manifest with the provided hash not found. Returned by `registerDataset` and `getDatasetManifest`.
* **`ManifestRegistrationError`** (`MANIFEST_REGISTRATION_ERROR`): Failed to register manifest in the system. Returned by `registerDataset` and `registerManifest`.
* **`ManifestSerializationError`** (`MANIFEST_SERIALIZATION_ERROR`, 500): Failed to serialize the validated manifest. Returned by `registerDataset` and `registerManifest`.
* **`ManifestStorageError`** (`MANIFEST_STORAGE_ERROR`, 500): Failed to write manifest to object store. Returned by `registerManifest`.
* **`ManifestTransactionBeginError`** (`MANIFEST_TRANSACTION_BEGIN_ERROR`, 500): Failed to begin the manifest registration transaction. Returned by `registerManifest`.
* **`ManifestTransactionCommitError`** (`MANIFEST_TRANSACTION_COMMIT_ERROR`, 500): Failed to commit the manifest registration transaction. Returned by `registerManifest`.
* **`ManifestValidationError`** (`MANIFEST_VALIDATION_ERROR`, 400): Manifest validation error. Causes: SQL queries contain non-incremental operations; invalid table references in SQL; type inference errors. Returned by `registerDataset` and `registerManifest`.
* **`MissingBlockNumError`** (`MISSING_BLOCK_NUM`, 400): The table output is missing the required block number column. Returned by `getOutputSchema`.
* **`MissingTsError`** (`MISSING_TS`, 400): The table output is missing the required timestamp column. Returned by `getOutputSchema`.
* **`NamespaceNotFoundError`** (`NAMESPACE_NOT_FOUND`, 404): The namespace does not exist or is unavailable to the caller. Returned by `registerDataset` and `getDatasetVersions`.
* **`NonIncrementalQueryError`** (`NON_INCREMENTAL_QUERY`, 400): SQL query contains non-incremental operations. Causes: SQL contains LIMIT, ORDER BY, GROUP BY, DISTINCT, window functions; SQL uses outer joins. Returned by `getOutputSchema`.
* **`NoTableReferencesError`** (`NO_TABLE_REFERENCES`, 400): A table query does not reference any table. Returned by `getOutputSchema`.
* **`ParseManifestError`** (`PARSE_MANIFEST_ERROR`, 500): Failed to parse manifest JSON. Returned by `getDatasetManifest`.
* **`PhaserConnectionFailedError`** (`PHASER_CONNECTION_FAILED`, 502): Failed to connect to the Phaser bridge. Returned by `registerDataset` and `registerManifest`.
* **`PhaserDiscoveryFailedError`** (`PHASER_DISCOVERY_FAILED`, 502): Phaser bridge table discovery failed. Returned by `registerDataset` and `registerManifest`.
* **`PhaserInvalidDiscoveryError`** (`PHASER_INVALID_DISCOVERY`, 502): Phaser bridge returned invalid table metadata. Returned by `registerDataset` and `registerManifest`.
* **`PhaserNoTablesDiscoveredError`** (`PHASER_NO_TABLES_DISCOVERED`, 502): Phaser bridge returned no usable tables. Returned by `registerDataset` and `registerManifest`.
* **`PhaserProviderNetworkMismatchError`** (`PHASER_PROVIDER_NETWORK_MISMATCH`, 400): The Phaser provider network does not match the manifest. Returned by `registerDataset` and `registerManifest`.
* **`PhaserProviderNotFoundError`** (`PHASER_PROVIDER_NOT_FOUND`, 400): No Phaser provider is configured for the manifest network. Returned by `registerDataset` and `registerManifest`.
* **`PhaserProviderParseFailedError`** (`PHASER_PROVIDER_PARSE_FAILED`, 400): The Phaser provider configuration is invalid. Returned by `registerDataset` and `registerManifest`.
* **`ReadManifestError`** (`READ_MANIFEST_ERROR`, 500): Failed to read manifest from object store. Returned by `getDatasetManifest`.
* **`ResolveRevisionError`** (`RESOLVE_REVISION_ERROR`, 500): Failed to resolve the dataset revision. Returned by `getDatasetVersions`, `getDatasetVersion`, `getDatasetManifest`, and `getDatasetLineage`.
* **`SchedulerListWorkersError`** (`SCHEDULER_LIST_WORKERS_ERROR`, 500): Failed to list workers from the scheduler. Returned by `getWorkers`.
* **`SchemaInferenceError`** (`SCHEMA_INFERENCE`, 500): Failed to infer output schema from query. Returned by `getOutputSchema`.
* **`SelfReferencingTableError`** (`SELF_REFERENCING_TABLE`, 400): A table query references itself. Returned by `getOutputSchema`.
* **`SelfRefNetworksNotResolvedError`** (`SELF_REF_NETWORKS_NOT_RESOLVED`, 500): The networks of a self-referenced table could not be resolved. Returned by `getOutputSchema`.
* **`SelfRefTableNotFoundError`** (`SELF_REF_TABLE_NOT_FOUND`, 400): A self-referenced table does not exist in the request. Returned by `getOutputSchema`.
* **`SessionConfigError`** (`SESSION_CONFIG_ERROR`, 500): Failed to configure the query session. Returned by `getOutputSchema`.
* **`SortedManifestTableNotFoundError`** (`SORTED_MANIFEST_TABLE_NOT_FOUND`, 500): Internal manifest consistency failure. Returned by `registerDataset` and `registerManifest`.
* **`SortedTableStatementNotFoundError`** (`SORTED_TABLE_STATEMENT_NOT_FOUND`, 500): Internal manifest consistency failure. Returned by `registerDataset`, `getOutputSchema`, and `registerManifest`.
* **`StaticSourceNotMaterializableError`** (`STATIC_SOURCE_NOT_MATERIALIZABLE`, 400): A static dataset source cannot be materialized by a derived table. Returned by `getOutputSchema`.
* **`StopJobError`** (`STOP_JOB_ERROR`, 500): Database error during stop operation. Returned by `stopJob`.
* **`TableNotFoundInDatasetError`** (`TABLE_NOT_FOUND_IN_DATASET`, 400): Table not found in dataset. Returned by `getOutputSchema`.
* **`TableReferenceResolutionError`** (`TABLE_REFERENCE_RESOLUTION`, 400): Failed to extract table references from SQL. Returned by `getOutputSchema`.
* **`TableReferencesNotResolvedError`** (`TABLE_REFERENCES_NOT_RESOLVED`, 500): The table references of a query could not be resolved. Returned by `getOutputSchema`.
* **`UnexpectedStateConflictError`** (`UNEXPECTED_STATE_CONFLICT`, 500): Internal state machine error. Returned by `stopJob`.
* **`VersionTaggingError`** (`VERSION_TAGGING_ERROR`, 500): Failed to tag version for the dataset. Returned by `registerDataset`.

## Registry API

A [Registry API client](/sdks/typescript/registry-api), which has no service to talk to right now, fails with these errors, from `@edgeandnode/amp/registry/error`. Each also has `requestId`, when the registry sends one, which identifies the request in its logs. Endpoints that need a token also fail with `HttpApiError.Unauthorized` when it's missing or invalid.

* **`DatasetConversionError`** (`DATASET_CONVERSION_ERROR`, 500): The registry couldn't convert a stored dataset into its response. Returned by `datasets.listDatasets`, `datasets.getDatasetByFqdn`, `datasets.searchDatasets`, `datasets.aiSearchDatasets`, `ownedDatasets.listOwnedDatasets`, `ownedDatasets.searchOwnedDatasets`, `myDatasets.listMyDatasets`, `myDatasets.getMyDatasetByFqdn`, `myDatasets.searchMyDatasets`, `myDatasets.publishMyDataset`, and `myDatasets.updateMyDatasetMetadata`.
* **`DatasetNotFoundError`** (`DATASET_NOT_FOUND`, 404): No dataset has this namespace and name, or you can't see it. Returned by `datasets.getDatasetByFqdn`, `datasets.listLatestDatasetQueries`, `myDatasets.getMyDatasetByFqdn`, `myDatasets.updateMyDatasetVisibility`, `myDatasets.updateMyDatasetVersionStatus`, and `myDatasets.archiveMyDatasetVersion`.
* **`DatasetVersionConversionError`** (`DATASET_VERSION_CONVERSION_ERROR`, 500): The registry couldn't convert a stored dataset version into its response. Returned by `datasets.listDatasetVersions`, `datasets.getLatestDatasetVersion`, `datasets.getDatasetVersionByRevision`, `myDatasets.publishMyDatasetVersion`, and `myDatasets.updateMyDatasetVersionStatus`.
* **`DatasetVersionNotFoundError`** (`VERSION_NOT_FOUND`, 404): The dataset has no version with this tag. Returned by `datasets.getDatasetVersionByRevision`.
* **`ForbiddenError`** (`FORBIDDEN`, 403): Your token doesn't allow access to this dataset version's queries. Returned by `myDatasets.listMyDatasetQueries`.
* **`InvalidDatasetOwnerPathError`** (`INVALID_DATASET_OWNER_PATH`, 400): The owner in the path isn't valid. Returned by `ownedDatasets.listOwnedDatasets` and `ownedDatasets.searchOwnedDatasets`.
* **`InvalidDatasetReferenceError`** (`INVALID_REFERENCE`, 500): The registry couldn't build the dataset's reference from its namespace and name. Returned by `datasets.listLatestDatasetQueries`.
* **`InvalidDatasetSelectorError`** (`INVALID_DATASET_SELECTOR`, 400): The namespace or name in the path isn't valid. Returned by `datasets.getDatasetByFqdn` and `myDatasets.getMyDatasetByFqdn`.
* **`InvalidManifestError`** (`INVALID_MANIFEST`, 400): The manifest in the request isn't a valid manifest. Returned by `myDatasets.publishMyDataset` and `myDatasets.publishMyDatasetVersion`.
* **`InvalidManifestHashError`** (`INVALID_MANIFEST_HASH`, 500): A stored manifest hash isn't valid. Returned by `datasets.getLatestDatasetManifest` and `datasets.getDatasetManifest`.
* **`InvalidNamespaceError`** (`INVALID_NAMESPACE`, 400): The namespace in the request isn't valid. Returned by `myDatasets.publishMyDataset`.
* **`InvalidPathParametersError`** (`INVALID_PATH_PARAMETERS`, 400): A path parameter isn't valid. Returned by `myDatasets.publishMyDatasetVersion`, `myDatasets.updateMyDatasetMetadata`, `myDatasets.updateMyDatasetVisibility`, `myDatasets.updateMyDatasetVersionStatus`, and `myDatasets.archiveMyDatasetVersion`.
* **`InvalidQueryParametersError`** (`INVALID_QUERY_PARAMETERS`, 400): A query parameter isn't valid, like a `sort_by` the registry doesn't know. Returned by `datasets.listDatasets`, `datasets.searchDatasets`, `datasets.aiSearchDatasets`, `ownedDatasets.listOwnedDatasets`, `ownedDatasets.searchOwnedDatasets`, `myDatasets.listMyDatasets`, and `myDatasets.searchMyDatasets`.
* **`InvalidRequestBodyError`** (`INVALID_REQUEST_BODY`, 400): The request's body isn't valid JSON, or doesn't have the fields the endpoint needs. Returned by `myDatasets.publishMyDataset`, `myDatasets.publishMyDatasetVersion`, `myDatasets.updateMyDatasetMetadata`, `myDatasets.updateMyDatasetVisibility`, and `myDatasets.updateMyDatasetVersionStatus`.
* **`InvalidSelectorError`** (`INVALID_SELECTOR`, 400): The namespace, name, or version in the path isn't valid. Returned by `datasets.listDatasetVersions`, `datasets.getLatestDatasetVersion`, `datasets.getDatasetVersionByRevision`, `datasets.listLatestDatasetQueries`, `datasets.listDatasetQueries`, `datasets.getLatestDatasetManifest`, `datasets.getDatasetManifest`, and `myDatasets.listMyDatasetQueries`.
* **`LatestDatasetVersionNotFoundError`** (`LATEST_VERSION_NOT_FOUND`, 404): The dataset has no published version yet. Returned by `datasets.getLatestDatasetVersion`.
* **`LimitInvalidError`** (`LIMIT_INVALID`, 400): `limit` isn't a positive integer. Returned by `datasets.listDatasets`, `datasets.searchDatasets`, `ownedDatasets.listOwnedDatasets`, `ownedDatasets.searchOwnedDatasets`, `myDatasets.listMyDatasets`, and `myDatasets.searchMyDatasets`.
* **`LimitTooLargeError`** (`LIMIT_TOO_LARGE`, 400): `limit` is larger than the registry allows. Returned by `datasets.listDatasets`, `datasets.searchDatasets`, `ownedDatasets.listOwnedDatasets`, `ownedDatasets.searchOwnedDatasets`, `myDatasets.listMyDatasets`, and `myDatasets.searchMyDatasets`.
* **`ManifestDeserializationError`** (`MANIFEST_DESERIALIZATION_ERROR`, 500): The registry couldn't read a stored manifest. Returned by `datasets.getLatestDatasetManifest` and `datasets.getDatasetManifest`.
* **`ManifestNotFoundError`** (`MANIFEST_NOT_FOUND`, 404): The dataset version has no manifest. Returned by `datasets.getLatestDatasetManifest` and `datasets.getDatasetManifest`.
* **`ManifestRetrievalError`** (`MANIFEST_RETRIEVAL_ERROR`, 500): The registry couldn't fetch the manifest from its storage. Returned by `datasets.getLatestDatasetManifest` and `datasets.getDatasetManifest`.
* **`NamespaceAccessDeniedError`** (`NAMESPACE_ACCESS_DENIED`, 403): Your token doesn't allow publishing to this namespace. Returned by `myDatasets.publishMyDataset` and `myDatasets.publishMyDatasetVersion`.
* **`RegistryDatabaseError`** (`AMP_REGISTRY_DB_ERROR`, 500): The registry's database failed. Returned by `datasets.listDatasets`, `datasets.getDatasetByFqdn`, `datasets.getDatasetCountsByChain`, `datasets.getDatasetCountsByKeyword`, `datasets.getDatasetCountsByLastUpdated`, `datasets.searchDatasets`, `datasets.aiSearchDatasets`, `datasets.listDatasetVersions`, `datasets.getLatestDatasetVersion`, `datasets.getDatasetVersionByRevision`, `datasets.listLatestDatasetQueries`, `datasets.listDatasetQueries`, `ownedDatasets.listOwnedDatasets`, `ownedDatasets.searchOwnedDatasets`, `myDatasets.listMyDatasets`, `myDatasets.getMyDatasetByFqdn`, `myDatasets.getMyDatasetCountsByChain`, `myDatasets.getMyDatasetCountsByKeyword`, `myDatasets.getMyDatasetCountsByLastUpdated`, `myDatasets.getMyDatasetCountsByStatus`, `myDatasets.getMyDatasetCountsByVisibility`, `myDatasets.searchMyDatasets`, `myDatasets.listMyDatasetQueries`, `myDatasets.publishMyDataset`, `myDatasets.publishMyDatasetVersion`, `myDatasets.updateMyDatasetMetadata`, `myDatasets.updateMyDatasetVisibility`, `myDatasets.updateMyDatasetVersionStatus`, and `myDatasets.archiveMyDatasetVersion`.
* **`SavedQueryConversionError`** (`SAVED_QUERY_CONVERSION_ERROR`, 500): The registry couldn't convert a stored saved query into its response. Returned by `datasets.listLatestDatasetQueries`, `datasets.listDatasetQueries`, and `myDatasets.listMyDatasetQueries`.
* **`ServiceUnavailableError`** (`SERVICE_UNAVAILABLE`, 503): The registry isn't ready: its database can't be reached. Returned by `health.getReadiness`.

## Authentication

The [`Auth` service](/sdks/typescript/authentication)'s methods fail with these errors, from `@edgeandnode/amp`'s `AuthErrors` namespace. `AuthErrors.getUserMessage` and `AuthErrors.getUserSuggestion` describe each for your users. Properties whose type is `Option` are `Option.some(value)` or `Option.none()`.

* **`AuthCacheError`** (`AUTH_CACHE_ERROR`): Indicates a failure with cache read/write/clear operations. Other properties: `operation` and `cause`.
* **`AuthDeviceFlowError`** (`AUTH_DEVICE_FLOW_ERROR`): Indicates an issue with the device authorization flow. Other properties: `reason` and `verificationUri`.
* **`AuthNetworkError`** (`AUTH_NETWORK_ERROR`): Indicates network or timeout issues during authentication. Other properties: `endpoint`, `isTimeout`, and `cause`.
* **`AuthProtocolError`** (`AUTH_PROTOCOL_ERROR`): Indicates that the authentication service returned a response that violated the expected protocol. Other properties: `endpoint`, `status`, and `cause`.
* **`AuthRateLimitError`** (`AUTH_RATE_LIMITED`): Indicates that too many authentication requests have been made. Other properties: `retryAfter`.
* **`AuthRefreshError`** (`AUTH_REFRESH_FAILED`): Indicates a general token refresh failure. Other properties: `status` and `cause`.
* **`AuthRequestError`** (`AUTH_REQUEST_ERROR`): Indicates that the client failed to construct or encode an authentication request. Other properties: `endpoint` and `cause`.
* **`AuthTokenExpiredError`** (`AUTH_TOKEN_EXPIRED`): Indicates that the user's session has expired and they need to re-authenticate.
* **`AuthUserMismatchError`** (`AUTH_USER_MISMATCH`): Indicates that the token belongs to a different user than expected. Other properties: `expectedUserId` and `receivedUserId`.
* **`AuthVerifyTokenError`** (`AUTH_VERIFY_TOKEN_FAILED`): Indicates a failure when verifying a JWT access token. Other properties: `reason`, `claim`, and `cause`.
