syntax = "proto3";

package clarifai.api.status;

option go_package = "github.com/Clarifai/clarifai-go-grpc/proto/clarifai/api/status";
option java_multiple_files = true;
option java_package = "com.clarifai.grpc.api.status";
option objc_class_prefix = "CAIP";

enum StatusCode {
  option allow_alias = true;

  reserved
      25407, 33000, 33001, 33002, 33100, 33101, 33102, 33103, 33104, 33105,
      33106, 33200, 33201, 33203, 33210, 39995, 40018, 40019, 41200, 41201,
      41202, 41203, 41204, 25500, 25501, 25502, 25503, 25505, 25506, 52000,
      52001, 52002, 52003;

  // to be revised and greatly expanded
  ZERO = 0;

  // Generic
  SUCCESS = 10000;
  MIXED_STATUS = 10010;
  FAILURE = 10020;
  TRY_AGAIN = 10030;
  NOT_IMPLEMENTED = 10040;
  MOVED = 10050; // Resource moved. Respond with Http status 307 and add new Location header to response
  TEAPOT = 10060;
  ACCEPTED = 10070; // Request has been accepted. Respond with Http status 202.
  //SUCCESS_WARNING_API_DEPRECATED = 10001;
  //SUCCESS_WARNING_CLIENT_DEPRECATED = 10002;

  // Clarifai Connection Codes: 11xxx
  CONN_ACCOUNT_ISSUES = 11000; // expired cc, still in trial, feature not supported in your tier
  // invalid auth token used. Deprecated: we should return CONN_KEY_INVALID instead now in all cases.
  CONN_TOKEN_INVALID = 11001 [deprecated = true];
  CONN_CREDENTIALS_INVALID = 11002; // invalid auth credentials
  CONN_EXCEED_HOURLY_LIMIT = 11003; // throttle hourly limit exceeded
  CONN_EXCEED_MONTHLY_LIMIT = 11004; // throttle monthly limit exceeded
  CONN_THROTTLED = 11005; // throttler and billing stuff
  CONN_EXCEEDS_LIMITS = 11006; // throttler and billing stuff
  CONN_INSUFFICIENT_SCOPES = 11007; // api key has insufficient permissions
  CONN_KEY_INVALID = 11008; // api key is invalid
  CONN_KEY_NOT_FOUND = 11009; // api key not found

  CONN_BAD_REQUEST_FORMAT = 11100; // multipart form parsing, broken json, etc
  CONN_DOES_NOT_EXIST = 11101; // when path is bad
  CONN_INVALID_REQUEST = 11102; // something wrong with a header
  CONN_METHOD_NOT_ALLOWED = 11103; // when a request method is not allowed
  CONN_NO_GDPR_CONSENT = 11104; // lack GDPR consent
  CONN_INVALID_RANGE = 11105; // when invalid range of a resource is requested

  CONN_AUTH_METHOD_DISABLED = 11200; // authentication method is disabled

  // Model/Custom Training related 20xxx
  MODEL_TRAINED = 21100; // Custom model has been already trained.
  MODEL_TRAINING = 21101; // Custom model is currently training.
  MODEL_UNTRAINED = 21102; // Custom model has not yet been trained.
  // Custom model is currently in queue for training, waiting on assets to process first.
  MODEL_QUEUED_FOR_TRAINING = 21103;
  MODEL_UPLOADING = 21104;
  MODEL_UPLOADING_FAILED = 21105;
  MODEL_TRAINING_FAILED = 21106; // generic err msg for any type of model training err.

  MODEL_BUILDING = 21107; // For new V3 DockerInternalType models which are built images
  MODEL_BUILDING_FAILED = 21108; // Failed to build image for model.
  MODEL_BUILD_UNEXPECTED_ERROR = 21109; // Failed to build image for model.

  MODEL_TRAINING_NO_DATA = 21110; // Custom model training had no data.  FIXME(yang): deprecate this. Use the 21106 + errStatusMsg
  MODEL_TRAINING_NO_POSITIVES = 21111; // Custom model training had no positive examples. FIXME(yang): deprecate this. Use the 21106 + errStatusMsg
  MODEL_TRAINING_ONE_VS_N_SINGLE_CLASS = 21112; // Custom model training was ONE_VS_N but with a single class. FIXME(yang): deprecate this. Use the 21106 + errStatusMsg
  MODEL_TRAINING_TIMED_OUT = 21113; // Training took longer than hard coded timeouts. FIXME(yang): deprecate this. Use the 21106 + errStatusMsg
  MODEL_TRAINING_WAITING_ERROR = 21114; // Training got error waiting on asset pipeline to finish. FIXME(yang): deprecate this. Use the 21106 + errStatusMsg
  MODEL_TRAINING_UNKNOWN_ERROR = 21115; // Training threw an unknown exception.
  MODEL_TRAINING_MSG_REDELIVER = 21116 [deprecated = true]; // Training message was redelivered. FIXME(yang): deprecate this. Use the 21106 + errStatusMsg
  MODEL_TRAINING_INSUFFICIENT_DATA = 21117; // Training got error due to insufficient labelled data. FIXME(yang): deprecate this. Use the 21106 + errStatusMsg
  MODEL_TRAINING_INVALID_PARAMS = 21118; // FIXME(yang): deprecate this. Use the 21106 + errStatusMsg
  MODEL_TRAINING_INVALID_DATA_TOLERANCE_EXCEEDED = 21119; // Training is stopped because too much data was dropped. FIXME(yang): deprecate this. Use the 21106 + errStatusMsg

  MODEL_MODIFY_SUCCESS = 21150;
  MODEL_MODIFY_PENDING = 21151;
  MODEL_MODIFY_FAILED = 21152;

  MODEL_DOES_NOT_EXIST = 21200;
  MODEL_PERMISSION_DENIED = 21201;
  MODEL_INVALID_ARGUMENT = 21202;
  MODEL_INVALID_REQUEST = 21203;

  // Model Evaluation status codes

  MODEL_EVALUATED = 21300;
  MODEL_EVALUATING = 21301;
  MODEL_NOT_EVALUATED = 21302;
  MODEL_QUEUED_FOR_EVALUATION = 21303;

  MODEL_EVALUATION_TIMED_OUT = 21310; // Evaluation took longer than hard coded timeouts. FIXME(yang): deprecate this. Use the 21317 + errStatusMsg
  MODEL_EVALUATION_WAITING_ERROR = 21311; // Evaluation got error waiting on asset pipeline to finish.FIXME(yang): deprecate this. Use the 21317 + errStatusMsg
  MODEL_EVALUATION_UNKNOWN_ERROR = 21312; // EVALUATION THREW AN UNKNOWN EXCEPTION.

  MODEL_PREDICTION_FAILED = 21313;
  MODEL_EVALUATION_MSG_REDELIVER = 21314 [deprecated = true]; // Eval message was redelivered. FIXME(yang): deprecate this. Use the 21317 + errStatusMsg
  MODEL_EVALUATION_NEED_LABELS = 21315; // Don't have enough concepts labelled to perform evaluation. FIXME(yang): deprecate this. Use the 21317 + errStatusMsg
  MODEL_EVALUATION_NEED_INPUTS = 21316; // Don't have enough inputs per concept to perform evaluation. FIXME(yang): deprecate this. Use the 21317 + errStatusMsg
  MODEL_EVALUATION_FAILED = 21317; // Generic err code for eval failure.
  // Status codes through 21319 (inclusive) reserved for model eval *errors* (per logic in clients)

  MODEL_DEPLOYMENT_FAILED = 21350; // Used when inference coordinator failed to deploy spire and throws an error
  MODEL_DEPLOYING = 21351; // Used when calling the inference coordinator to deploy a spire
  MODEL_QUEUED_FOR_DEPLOYMENT = 21352; // Used when training is completed
  MODEL_NOT_DEPLOYED = 21353; // Used when model spire deployment is manually taken down or due to inactivity
  MODEL_BUSY_PLEASE_RETRY = 21354;
  MODEL_LOADING = 21355; // Used when the model pod is running, but not yet ready to serve requests.

  MODEL_REFERENCE_INVALID_ARGUMENT = 21400; // Used when a model reference field is not set properly

  MODEL_EXAMPLE_INPUT_INVALID_ARGUMENT = 21420; // Used when a model example input field is not set properly

  // Model Export status codes
  MODEL_EXPORTED = 21500;
  MODEL_EXPORTING = 21501;
  MODEL_EXPORTING_FAILED = 21502;
  MODEL_EXPORT_PENDING = 21503;

  // Workflow related 22xxx

  WORKFLOW_NO_MATCHING_INPUT = 22001; // specified model input not in workflow
  WORKFLOW_REQUIRE_TRAINED_MODEL = 22002; // specified model must be trained
  WORKFLOW_DUPLICATE = 22100;
  WORKFLOW_UNSUPPORTED_FORMAT = 22101;
  WORKFLOW_DOES_NOT_EXIST = 22102;
  WORKFLOW_PERMISSION_DENIED = 22103;
  WORKFLOW_INVALID_ARGUMENT = 22104; // error in the request somewhere
  WORKFLOW_INVALID_RECIPE = 22105;
  WORKFLOW_INVALID_TEMPLATE = 22106;
  WORKFLOW_INVALID_GRAPH = 22107;
  WORKFLOW_INTERNAL_FAILURE = 22108;

  WORKFLOW_INVALID_REQUEST = 22999; // error in the request somewhere

  WORKFLOW_MODIFY_SUCCESS = 22150;
  WORKFLOW_MODIFY_PENDING = 22151;
  WORKFLOW_MODIFY_FAILED = 22152;
  WORKFLOW_REINDEX_FAILED = 22153;

  // Concept related 23xxx
  CONCEPT_MODIFY_SUCCESS = 23150;
  CONCEPT_MODIFY_PENDING = 23151;
  CONCEPT_MODIFY_FAILED = 23152;

  // Annotation related 24xxx
  ANNOTATION_SUCCESS = 24150;
  ANNOTATION_PENDING = 24151;
  ANNOTATION_FAILED = 24152;
  ANNOTATION_UNKNOWN_STATUS = 24154;
  ANNOTATION_INVALID_ARGUMENT = 24155;
  ANNOTATION_PERMISSION_DENIED = 24156;
  // Annotation is awaiting review from task REVIEWERS.
  ANNOTATION_AWAITING_REVIEW = 24157;
  // Annotation is awaiting consensus review from task LABELERS.
  ANNOTATION_AWAITING_CONSENSUS_REVIEW = 24159;
  ANNOTATION_REVIEW_DENIED = 24158;

  ANNOTATION_MODIFY_SUCCESS = 24250;
  ANNOTATION_MODIFY_PENDING = 24251;
  ANNOTATION_MODIFY_FAILED = 24252;


  // Annotation (video) tracks are groups of annotations per frame
  // IDLE -> PROCESSING --> PENDING --> APPROVED --> (DELETED)
  // PROCESSING --> FAILED --> (DELETED)
  // PROCESSING --> (DELETED)
  ANNOTATION_TRACK_IDLE = 24300;
  ANNOTATION_TRACK_IN_PROGRESS = 24301;
  ANNOTATION_TRACK_PENDING = 24302;
  ANNOTATION_TRACK_APPROVED = 24303;
  ANNOTATION_TRACK_FAILED = 24304;


  // Metadata related 249xx
  METADATA_INVALID_PATCH_ARGUMENTS = 24900;
  METADATA_PARSING_ISSUE = 24901;
  METADATA_MANIPULATION_ISSUE = 24902;

  // Training service related 25xxx
  TRAINER_JOB_STATE_NONE = 25000;
  TRAINER_JOB_STATE_QUEUED = 25001;
  TRAINER_JOB_STATE_RUNNING = 25002;
  TRAINER_JOB_STATE_COMPLETE = 25003;
  TRAINER_JOB_STATE_ERROR = 25004;

  // Data Dump related 251xx
  DATA_DUMP_SUCCESS = 25150;
  DATA_DUMP_PENDING = 25151;
  DATA_DUMP_FAILED = 25152;
  DATA_DUMP_IN_PROGRESS = 25153;
  // DEPRECATED: Not used anymore. Now for an empty data dump, DATA_DUMP_SUCCESS is returned. To detect an empty data dump, check if the inptus count is 0.
  DATA_DUMP_NO_DATA = 25154 [deprecated = true];
  DATA_DUMP_UNEXPECTED_ERROR = 25155;

  DATA_DUMP_EXPORT_SUCCESS = 25170;
  DATA_DUMP_EXPORT_PENDING = 25171;
  DATA_DUMP_EXPORT_FAILED = 25172;
  DATA_DUMP_EXPORT_IN_PROGRESS = 25173;
  DATA_DUMP_EXPORT_UNEXPECTED_ERROR = 25174;

  // Duplicate related 252xx - DEPRECATED: App duplication is no longer supported.
  APP_DUPLICATION_SUCCESS = 25200 [deprecated = true];
  APP_DUPLICATION_FAILED = 25201 [deprecated = true];
  APP_DUPLICATION_PENDING = 25202 [deprecated = true];
  APP_DUPLICATION_IN_PROGRESS = 25203 [deprecated = true];
  APP_DUPLICATION_INVALID_REQUEST = 25204 [deprecated = true];

  // Module related codes 253xx
  MODULE_DOES_NOT_EXIST = 25300;
  MODULE_PERMISSION_DENIED = 25301;
  MODULE_INVALID_ARGUMENT = 25302;
  MODULE_INVALID_REQUEST = 25303;

  // Bulk Operation related codes 254xx
  BULK_OPERATION_SUCCESS = 25400;
  BULK_OPERATION_FAILED = 25401;
  BULK_OPERATION_PENDING = 25402;
  BULK_OPERATION_IN_PROGRESS = 25403;
  BULK_OPERATION_INVALID_REQUEST = 25404;
  BULK_OPERATION_CANCELLED = 25405;
  BULK_OPERATION_UNEXPECTED_ERROR = 25406;

  // Runner related codes 256xx
  RUNNER_DOES_NOT_EXIST = 25600;
  RUNNER_PERMISSION_DENIED = 25601;
  RUNNER_INVALID_ARGUMENT = 25602;
  RUNNER_INVALID_REQUEST = 25603;
  RUNNER_NEEDS_RETRY = 25604;
  RUNNER_STREAM_START = 25605;
  RUNNER_STREAM_END = 25606;
  RUNNER_ITEM_CANCELLED = 25607;
  RUNNER_PROCESSING_FAILED = 25608;
  RUNNER_SPECIAL_HANDLING_NOT_COMPLETE = 25609;

  // Nodepool related codes 257xx
  NODEPOOL_DOES_NOT_EXIST = 25700;
  NODEPOOL_INVALID_ARGUMENT = 25701;
  NODEPOOL_INVALID_REQUEST = 25702;

  // ComputeCluster related codes 258xx
  COMPUTE_CLUSTER_DOES_NOT_EXIST = 25800;
  COMPUTE_CLUSTER_INVALID_ARGUMENT = 25801;
  COMPUTE_CLUSTER_INVALID_REQUEST = 25802;

  // Deployment related codes 259xx
  DEPLOYMENT_DOES_NOT_EXIST = 25900;
  DEPLOYMENT_INVALID_ARGUMENT = 25901;
  DEPLOYMENT_INVALID_REQUEST = 25902;
  DEPLOYMENT_DISABLED = 25903;  // The deployment is disabled and cannot serve traffic.

  // InstanceType related codes 260xx
  INSTANCE_TYPE_DOES_NOT_EXIST = 26000;
  INSTANCE_TYPE_INVALID_ARGUMENT = 26001;
  INSTANCE_TYPE_INVALID_REQUEST = 26002;

  // Compute plane related codes 261xx
  COMPUTE_PLANE_METRICS_INVALID_REQUEST = 26100;

  // PipelineStep related codes 262xx
  PIPELINE_STEP_DOES_NOT_EXIST = 26200;
  PIPELINE_STEP_INVALID_ARGUMENT = 26201;
  PIPELINE_STEP_INVALID_REQUEST = 26202;
  PIPELINE_STEP_UPLOADING = 26203;
  PIPELINE_STEP_UPLOADING_FAILED = 26204;
  PIPELINE_STEP_BUILDING = 26205;
  PIPELINE_STEP_BUILDING_FAILED = 26206;
  PIPELINE_STEP_BUILD_UNEXPECTED_ERROR = 26207;
  PIPELINE_STEP_READY = 26208;
  PIPELINE_STEP_NOT_READY = 26209;

  // Pipeline related codes 263xx
  PIPELINE_DOES_NOT_EXIST = 26300;
  PIPELINE_INVALID_ARGUMENT = 26301;
  PIPELINE_INVALID_REQUEST = 26302;

  // Artifact related codes 264xx
  ARTIFACT_DOES_NOT_EXIST = 26400;
  ARTIFACT_INVALID_ARGUMENT = 26401;
  ARTIFACT_INVALID_REQUEST = 26402;
  ARTIFACT_VERSION_DOES_NOT_EXIST = 26403;
  ARTIFACT_VERSION_INVALID_ARGUMENT = 26404;
  ARTIFACT_VERSION_INVALID_REQUEST = 26405;

  // Input:Image related 30xxx
  INPUT_SUCCESS = 30000;
  INPUT_PENDING = 30001; // when things are async, this is the default status.
  INPUT_FAILED = 30002; // any type of error downloading and processing
  INPUT_IN_PROGRESS = 30003;

  // use INPUT_SUCCESS, INPUT_PENDING, INPUT_FAILED, INPUT_IN_PROGRESS instead
  // DOWNLOAD is no longer correct, but keep old statuses for backward compatibility
  INPUT_DOWNLOAD_SUCCESS = 30000 [deprecated = true];
  INPUT_DOWNLOAD_PENDING = 30001 [deprecated = true];
  INPUT_DOWNLOAD_FAILED = 30002 [deprecated = true];
  INPUT_DOWNLOAD_IN_PROGRESS = 30003 [deprecated = true];

  INPUT_STATUS_UPDATE_FAILED = 30004;
  INPUT_DELETE_FAILED = 30005;
  INPUT_DUPLICATE = 30100;
  INPUT_UNSUPPORTED_FORMAT = 30101;
  INPUT_DOES_NOT_EXIST = 30102;
  INPUT_PERMISSION_DENIED = 30103;
  INPUT_INVALID_ARGUMENT = 30104;
  INPUT_OVER_LIMIT = 30105;
  INPUT_INVALID_URL = 30106;

  INPUT_MODIFY_SUCCESS = 30200;
  INPUT_MODIFY_PENDING = 30201;
  INPUT_MODIFY_FAILED = 30203;
  INPUT_STORAGE_HOST_FAILED = 30210;

  ALL_INPUT_INVALID_BYTES = 30300;

  INPUT_CLUSTER_SUCCESS = 30400;
  INPUT_CLUSTER_PENDING = 30401;
  INPUT_CLUSTER_FAILED = 30402;
  INPUT_CLUSTER_IN_PROGRESS = 30403;

  INPUT_REINDEX_SUCCESS = 30500;
  INPUT_REINDEX_PENDING = 30501;
  INPUT_REINDEX_FAILED = 30502;
  INPUT_REINDEX_IN_PROGRESS = 30503;

  // Input:Video related 31xxx -- Deprecated
  INPUT_VIDEO_DOWNLOAD_SUCCESS = 31000;
  INPUT_VIDEO_DOWNLOAD_PENDING = 31001;
  INPUT_VIDEO_DOWNLOAD_FAILED = 31002;
  INPUT_VIDEO_DUPLICATE = 31100;
  INPUT_VIDEO_UNSUPPORTED_FORMAT = 31101;
  INPUT_VIDEO_DOES_NOT_EXIST = 31102;
  INPUT_VIDEO_PERMISSION_DENIED = 31103;
  INPUT_VIDEO_INVALID_ARGUMENT = 31104;
  INPUT_VIDEO_OVER_LIMIT = 31105;
  INPUT_VIDEO_INVALID_URL = 31106;
  INPUT_VIDEO_MODIFY_SUCCESS = 31200;
  INPUT_VIDEO_MODIFY_PENDING = 31201;
  INPUT_VIDEO_MODIFY_FAILED = 31203;
  INPUT_VIDEO_STORAGE_HOST_FAILED = 31210;

  ALL_INPUT_VIDEOS_INVALID_BYTES = 31300;

  INPUT_VIDEO_PROCESSING_SUCCESS = 31400;
  INPUT_VIDEO_PROCESSING_PENDING = 31410;
  INPUT_VIDEO_PROCESSING_FAILED = 31420;
  INPUT_VIDEO_STORAGE_INCONSISTENCY = 31430;
  INPUT_VIDEO_STORAGE_FAILURE = 31440;
  INPUT_VIDEO_URL_GENERATION_FAILURE = 31450;

  INPUT_CONNECTION_FAILED = 39996;
  REQUEST_DISABLED_FOR_MAINTENANCE = 39997;
  INPUT_WRITES_DISABLED_FOR_MAINTENANCE = 39998 [deprecated = true]; // deprecate this one. Use REQUEST_DISABLED_FOR_MAINTENANCE
  INPUT_INVALID_REQUEST = 39999;

  // API formatting issues 4000x
  PREDICT_INVALID_REQUEST = 40001;
  SEARCH_INVALID_REQUEST = 40002;
  CONCEPTS_INVALID_REQUEST = 40003;
  STATS_INVALID_REQUEST = 40004;

  // Other related 400xx
  DATABASE_DUPLICATE_KEY = 40010;
  DATABASE_STATEMENT_TIMEOUT = 40011;
  DATABASE_INVALID_ROWS_AFFECTED = 40012;
  DATABASE_DEADLOCK_DETECTED = 40013;
  DATABASE_FAIL_TASK = 40014;
  DATABASE_FAIL_TO_GET_CONNECTIONS = 40015;
  DATABASE_TOO_MANY_CLIENTS = 40016;
  DATABASE_CONSTRAINT_VIOLATED = 40017;
  DATABASE_CANCELED = 40021;

  ASYNC_WORKER_MULTI_ERRORS = 40020;
  RPC_REQUEST_QUEUE_FULL = 40030;
  RPC_SERVER_UNAVAILABLE = 40031;
  RPC_REQUEST_TIMEOUT = 40032;
  RPC_MAX_MESSAGE_SIZE_EXCEEDED = 40033;
  RPC_CANCELED = 40035;
  RPC_UNKNOWN_METHOD = 40036;
  REQUEST_CANCELED_BY_USER = 40037;
  CLUSTER_INTERNAL_FAILURE = 43040;

  EXTERNAL_CONNECTION_ERROR = 40034; // could not connect to external services

  QUERY_INVALID_SYNTAX = 40050;

  // Queue related errors 41xxx
  QUEUE_CONN_ERROR = 41000;
  QUEUE_CLOSE_REQUEST_TIMEOUT = 41002;
  QUEUE_CONN_CLOSED = 41003;
  QUEUE_PUBLISH_ACK_TIMEOUT = 41004;
  QUEUE_PUBLISH_ERROR = 41005;
  QUEUE_SUBSCRIPTION_TIMEOUT = 41006;
  QUEUE_SUBSCRIPTION_ERROR = 41007;
  QUEUE_MARSHALLING_FAILED = 41008;
  QUEUE_UNMARSHALLING_FAILED = 41009;
  QUEUE_MAX_MSG_REDELIVERY_EXCEEDED = 41010;
  QUEUE_ACK_FAILURE = 41011;

  // SQS related errors 411xx
  SQS_OVERLIMIT = 41100;
  SQS_INVALID_RECEIPT_HANDLE = 41101;
  SQS_UNKNOWN = 41102;

  //Search related errors 43xxxx
  SEARCH_INTERNAL_FAILURE = 43001;
  SEARCH_PROJECTION_FAILURE = 43002;
  SEARCH_PREDICTION_FAILURE = 43003;
  SEARCH_BY_NOT_FULLY_INDEXED_INPUT = 43004;
  SAVED_SEARCH_MODIFY_FAILED = 43005;
  SEARCH_COUNTS_UNAVAILABLE = 43006;

  // Workflow evaluation err code
  EVALUATION_QUEUED = 43100;
  EVALUATION_IN_PROGRESS = 43101;
  EVALUATION_SUCCESS = 43102;
  EVALUATION_FAILED_TO_RETRIEVE_DATA = 43103;
  EVALUATION_INVALID_ARGUMENT = 43104;
  EVALUATION_FAILED = 43105;
  EVALUATION_PENDING = 43106;
  EVALUATION_TIMED_OUT = 43107;
  EVALUATION_UNEXPECTED_ERROR = 43108;
  EVALUATION_MIXED = 43109;

  // Stripe 44xxx
  STRIPE_EVENT_ERROR = 44001;
  STRIPE_UNEXPECTED_ERROR = 44002;

  // Redis/Cache 45xxx
  CACHE_MISS = 45001;
  REDIS_SCRIPT_EXITED_WITH_FAILURE = 45002;
  REDIS_STREAM_ERR = 45003;
  REDIS_NO_CONSUMERS = 45004;
  REDIS_STREAM_BACKOFF = 45005;
  REDIS_CHANNEL_ERR = 45006;

  // Sift Science 46xxx
  SIGNUP_EVENT_ERROR = 46001;
  SIGNUP_FLAGGED = 46002;
  FILETYPE_UNSUPPORTED = 46003;
  LOGIN_EVENT_ERROR = 46004;
  SIFT_UNCATEGORIZED_ERROR = 46005;
  USER_FLAGGED = 46006;

  // Application counts related errors 470xx
  APP_COUNT_INVALID_MESSAGE = 47001;
  APP_COUNT_UPDATE_INCREMENT_FAILED = 47002;
  APP_COUNT_REBUILD_FAILED = 47003;
  APP_COUNT_INTERNAL_FAILURE = 47004;

  // Media processor related errors 471xx -- DEPRECATED
  MP_DOWNLOAD_ERROR = 47101;
  MP_RESOLVE_DNS_ERROR = 47102;
  MP_DOWNLOAD_MAX_SIZE_EXCEEDED_ERROR = 47103;
  MP_IMAGE_DECODE_ERROR = 47104;
  MP_INVALID_ARGUMENT = 47105;
  MP_IMAGE_PROCESSING_ERROR = 47106;

  // DataTier related error 472xx
  DATATIER_CONN_ERROR = 47201;

  // User legal consent stauts related 50xxx
  USER_CONSENT_FACE = 50001;

  // Workers 51xxx
  WORKER_MISSING = 51000;
  WORKER_ACTIVE = 51001;
  WORKER_INACTIVE = 51002;

  // Collectors 52xxx DEPRECATED

  // SSO 53xxx
  SSO_IDENTITY_PROVIDER_DOES_NOT_EXIST = 53001;

  // Tasks 54xxx
  // The task was created.
  TASK_IN_PROGRESS = 54001;
  // The task is completed.
  TASK_DONE = 54002;
  // The task is marked as abandoned.
  TASK_WONT_DO = 54003;
  // An error occurred during add-task-annotations or add-auto-annotations pipeline.
  TASK_FAILED = 54005;
  // Task is waiting for user action.
  // Examples:
  // - When an Auto Annotation task job has finished processing its last batch and is waiting for more dataset assets.
  // - When an Auto Annotation task job for a video livestream input is waiting for user to create a task deployment.
  TASK_IDLE = 54006;
  // The task operation is in conflict with the current state of the server.
  TASK_CONFLICT = 54100;
  // Certain task-related scenarios are not implemented.
  TASK_NOT_IMPLEMENTED = 54101;
  // Task was not found.
  TASK_MISSING = 54102;
  // Not allowed to perform a task-related action.
  TASK_PERMISSION_DENIED = 54103;

  // Task Assignments 542xx
  TASK_ASSIGNMENT_SUCCESS = 54200;
  TASK_ASSIGNMENT_PENDING = 54201;
  TASK_ASSIGNMENT_AWAITING_REVIEW = 54202;
  TASK_ASSIGNMENT_AWAITING_CONSENSUS_REVIEW = 54203;
  TASK_ASSIGNMENT_REJECTED = 54204;

  // Task Assignment Reviews 543xx
  TASK_ASSIGNMENT_REVIEW_SUCCESS = 54300;
  TASK_ASSIGNMENT_REVIEW_PENDING = 54301;
  TASK_ASSIGNMENT_REVIEW_DISMISSED = 54302;

  // Label Order Related Status Code 55xxx
  LABEL_ORDER_PENDING = 55001;
  LABEL_ORDER_IN_PROGRESS = 55002;
  LABEL_ORDER_SUCCESS = 55003;
  LABEL_ORDER_CANCELED = 55004;

  // License Related Status Code 600xx
  // DEPRECATED: License feature is fully deprecated now.
  LICENSE_ACTIVE = 60000;
  LICENSE_DOES_NOT_EXIST = 60001;
  LICENSE_NEED_UPDATE = 60002;
  LICENSE_EXPIRED = 60003;
  LICENSE_REVOKED = 60004;
  LICENSE_DELETED = 60005; // hidden state not reflected to users
  LICENSE_VOLUME_EXCEEDED = 60006;

  // Password Related Status Code
  PASSWORD_VALIDATION_SUCCESS = 61000;
  PASSWORD_VALIDATION_FAILED = 61001;
  PASSWORDPOLICY_INVALID_ARGUMENT = 61002;

  // Feature flags status code
  FEATUREFLAG_CONFIG_NOT_FOUND = 62000;
  FEATUREFLAG_INVALID_ARGUMENT = 62001;
  FEATUREFLAG_BLOCKED = 62002;
  FEATUREFLAG_NOT_FOUND = 62003;

  // Maintenance status code
  MAINTENANCE_SUCCESS = 63000;
  MAINTENANCE_FAILED = 63001;

  // Datasets 64xxx
  // The dataset version is pending to be processed.
  DATASET_VERSION_PENDING = 64005;
  // The dataset version is currently being processed.
  DATASET_VERSION_IN_PROGRESS = 64010;
  // The dataset version is ready to be used.
  DATASET_VERSION_READY = 64015;
  // An error occurred during the dataset version processing.
  DATASET_VERSION_FAILURE = 64020;
  // An unexpected error occurred during the dataset version processing.
  DATASET_VERSION_UNEXPECTED_ERROR = 64025;
  // An alteration to dataset version would create a conflict
  DATASET_VERSION_CONFLICT = 64030;

  // The dataset input was successfully added.
  DATASET_INPUT_SUCCESS = 64100;
  // The dataset input is a duplicate.
  // Deprecated: Unused.
  DATASET_INPUT_DUPLICATE = 64101;

  // The dataset version export is completed.
  DATASET_VERSION_EXPORT_SUCCESS = 64200;
  // The dataset version is pending to be exported.
  DATASET_VERSION_EXPORT_PENDING = 64201;
  // An error occurred during the dataset version export.
  DATASET_VERSION_EXPORT_FAILED = 64202;
  // The dataset version is currently being exported.
  DATASET_VERSION_EXPORT_IN_PROGRESS = 64203;
  // An unexpected error occurred during the dataset version export.
  DATASET_VERSION_EXPORT_UNEXPECTED_ERROR = 64204;

  // Generic Job status codes
  JOB_QUEUED = 64000;
  JOB_RUNNING = 64001;
  JOB_COMPLETED = 64002;
  JOB_FAILED = 64003;
  JOB_CANCELLED = 64004;
  JOB_UNEXPECTED_ERROR = 64006;
  JOB_CONFLICT = 64007;
  JOB_PAUSED = 64008;

  //auth issues
  AUTH_MISSING_IDP_ASSOC = 65000;
  // TODO: Knowledge graph related 80xxx

  LIST_OBJECTS_FAILED = 66000;

  ARCHIVE_EXTRACT_FAILED = 67000;

  // Multipart uploading status codes
  UPLOAD_IN_PROGRESS = 68000;
  UPLOAD_DONE = 68001;
  UPLOAD_FAILED = 68002;
  UPLOAD_UNEXPECTED_ERROR = 68003;
  UPLOAD_EXPIRED = 68004;
  UPLOAD_CANCELED = 68005;
  UPLOAD_CONFLICT = 68006;

  // Billing related issues: 69xxx
  BILLING_INVALID_INFO = 69000;
  BILLING_MISSING_TOKENS = 69001;

  // Logs related issues: 70000;
  LOG_ENTRIES_INVALID_REQUEST = 70000;

  //Twilio related issues: 71xxx
  TWILIO_MAX_VERIFICATION_BEGIN_EXCEEDED = 71003;
  TWILIO_MAX_VERIFICATION_CHECK_EXCEEDED = 71004;
  // The provided phone number was rejected or blocked by Twilio.
  TWILIO_PHONE_NUMBER_BLOCKED = 71005;

  // Internal issues: 98xxx
  INTERNAL_SERVER_ISSUE = 98004;
  INTERNAL_FETCHING_ISSUE = 98005;
  INTERNAL_DATABASE_ISSUE = 98006;
  INTERNAL_CONTEXT_CANCELED = 98008;
  INTERNAL_UNEXPECTED_TIMEOUT = 98009;
  INTERNAL_UNEXPECTED_V1 = 98010;
  INTERNAL_UNEXPECTED_PANIC = 98011;
  INTERNAL_UNEXPECTED_SPIRE = 98012;
  INTERNAL_REDIS_UNAVAILABLE = 98013;
  INTERNAL_RESOURCE_EXHAUSTED = 98014;
  INTERNAL_REDIS_UNCATEGORIZED = 98015;
  INTERNAL_AWS_UNCATEGORIZED = 98016;
  INTERNAL_AZURE_UNCATEGORIZED = 98017;
  INTERNAL_VECTORDB_UNCATEGORIZED = 98018;
  INTERNAL_ORACLE_UNCATEGORIZED = 98019;
  INTERNAL_VULTR_UNCATEGORIZED = 98020;
  INTERNAL_GCP_UNCATEGORIZED = 98021;

  // Uncategorized: 99xxx: move off as soon as known
  CONN_UNCATEGORIZED = 99001;
  MODEL_UNCATEGORIZED = 99002;
  INPUT_UNCATEGORIZED = 99003;
  ANNOTATION_UNCATEGORIZED = 99004;
  BILLING_UNCATEGORIZED = 99005;
  INTERNAL_UNCATEGORIZED = 99009;

  // Deprecated: migrate off to one of the internal issues
  BAD_REQUEST = 90400;
  // Deprecated: migrate off to one of the internal issues
  SERVER_ERROR = 90500;

}
