syntax = "proto3";
package authzed.api.v1;
option go_package = "github.com/authzed/authzed-go/proto/authzed/api/v1";
option java_package = "com.authzed.api.v1";
option java_multiple_files = true;
// Defines the supported values for `google.rpc.ErrorInfo.reason` for the
// `authzed.com` error domain.
enum ErrorReason {
// Do not use this default value.
ERROR_REASON_UNSPECIFIED = 0;
// The request gave a schema that could not be parsed.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_SCHEMA_PARSE_ERROR",
// "domain": "authzed.com",
// "metadata": {
// "start_line_number": "1",
// "start_column_position": "19",
// "end_line_number": "1",
// "end_column_position": "19",
// "source_code": "somedefinition",
// }
// }
//
// The line numbers and column positions are 0-indexed and may not be present.
ERROR_REASON_SCHEMA_PARSE_ERROR = 1;
// The request contains a schema with a type error.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_SCHEMA_TYPE_ERROR",
// "domain": "authzed.com",
// "metadata": {
// "definition_name": "somedefinition",
// ... additional keys based on the kind of type error ...
// }
// }
ERROR_REASON_SCHEMA_TYPE_ERROR = 2;
// The request referenced an unknown object definition in the schema.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_UNKNOWN_DEFINITION",
// "domain": "authzed.com",
// "metadata": {
// "definition_name": "somedefinition"
// }
// }
ERROR_REASON_UNKNOWN_DEFINITION = 3;
// The request referenced an unknown relation or permission under a definition in the schema.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_UNKNOWN_RELATION_OR_PERMISSION",
// "domain": "authzed.com",
// "metadata": {
// "definition_name": "somedefinition",
// "relation_or_permission_name": "somepermission"
// }
// }
ERROR_REASON_UNKNOWN_RELATION_OR_PERMISSION = 4;
// The WriteRelationships request contained more updates than the maximum configured.
//
// Example of an ErrorInfo:
//
// { "reason": "ERROR_REASON_TOO_MANY_UPDATES_IN_REQUEST",
// "domain": "authzed.com",
// "metadata": {
// "update_count": "525",
// "maximum_updates_allowed": "500",
// }
// }
ERROR_REASON_TOO_MANY_UPDATES_IN_REQUEST = 5;
// The request contained more preconditions than the maximum configured.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_TOO_MANY_PRECONDITIONS_IN_REQUEST",
// "domain": "authzed.com",
// "metadata": {
// "precondition_count": "525",
// "maximum_preconditions_allowed": "500",
// }
// }
ERROR_REASON_TOO_MANY_PRECONDITIONS_IN_REQUEST = 6;
// The request contained a precondition that failed.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_WRITE_OR_DELETE_PRECONDITION_FAILURE",
// "domain": "authzed.com",
// "metadata": {
// "precondition_resource_type": "document",
// ... other fields for the filter ...
// "precondition_operation": "MUST_EXIST",
// }
// }
ERROR_REASON_WRITE_OR_DELETE_PRECONDITION_FAILURE = 7;
// A write or delete request was made to an instance that is deployed in read-only mode.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_SERVICE_READ_ONLY",
// "domain": "authzed.com"
// }
ERROR_REASON_SERVICE_READ_ONLY = 8;
// The request referenced an unknown caveat in the schema.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_UNKNOWN_CAVEAT",
// "domain": "authzed.com",
// "metadata": {
// "caveat_name": "somecaveat"
// }
// }
ERROR_REASON_UNKNOWN_CAVEAT = 9;
// The request tries to use a subject type that was not valid for a relation.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_INVALID_SUBJECT_TYPE",
// "domain": "authzed.com",
// "metadata": {
// "definition_name": "somedefinition",
// "relation_name": "somerelation",
// "subject_type": "user:*"
// }
// }
ERROR_REASON_INVALID_SUBJECT_TYPE = 10;
// The request tries to specify a caveat parameter value with the wrong type.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_CAVEAT_PARAMETER_TYPE_ERROR",
// "domain": "authzed.com",
// "metadata": {
// "definition_name": "somedefinition",
// "relation_name": "somerelation",
// "caveat_name": "somecaveat",
// "parameter_name": "someparameter",
// "expected_type": "int",
// }
// }
ERROR_REASON_CAVEAT_PARAMETER_TYPE_ERROR = 11;
// The request tries to perform two or more updates on the same relationship in the same WriteRelationships call.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_UPDATES_ON_SAME_RELATIONSHIP",
// "domain": "authzed.com",
// "metadata": {
// "definition_name": "somedefinition",
// "relationship": "somerelationship",
// }
// }
ERROR_REASON_UPDATES_ON_SAME_RELATIONSHIP = 12;
// The request tries to write a relationship on a permission instead of a relation.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_CANNOT_UPDATE_PERMISSION",
// "domain": "authzed.com",
// "metadata": {
// "definition_name": "somedefinition",
// "permission_name": "somerelation",
// }
// }
ERROR_REASON_CANNOT_UPDATE_PERMISSION = 13;
// The request failed to evaluate a caveat expression due to an error.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_CAVEAT_EVALUATION_ERROR",
// "domain": "authzed.com",
// "metadata": {
// "caveat_name": "somecaveat",
// }
// }
ERROR_REASON_CAVEAT_EVALUATION_ERROR = 14;
// The request failed because the provided cursor was invalid in some way.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_INVALID_CURSOR",
// "domain": "authzed.com",
// "metadata": {
// ... additional keys based on the kind of cursor error ...
// }
// }
ERROR_REASON_INVALID_CURSOR = 15;
// The request failed because there are too many matching relationships to be
// deleted within a single transactional deletion call. To avoid, set
// `optional_allow_partial_deletions` to true on the DeleteRelationships call.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_TOO_MANY_RELATIONSHIPS_FOR_TRANSACTIONAL_DELETE",
// "domain": "authzed.com",
// "metadata": {
// ... fields for the filter ...
// }
// }
ERROR_REASON_TOO_MANY_RELATIONSHIPS_FOR_TRANSACTIONAL_DELETE = 16;
// The request failed because the client attempted to write a relationship
// with a context that exceeded the configured server limit.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_MAX_RELATIONSHIP_CONTEXT_SIZE",
// "domain": "authzed.com",
// "metadata": {
// "relationship": "relationship_exceeding_the_limit",
// "max_allowed_size": "server_max_allowed_context_size",
// "context_size": "actual_relationship_context_size" ,
// }
// }
ERROR_REASON_MAX_RELATIONSHIP_CONTEXT_SIZE = 17;
// The request failed because a relationship marked to be CREATEd
// was already present within the datastore.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_ATTEMPT_TO_RECREATE_RELATIONSHIP",
// "domain": "authzed.com",
// "metadata": {
// "relationship": "relationship_that_already_existed",
// "resource_type": "resource type",
// "resource_object_id": "resource object id",
// ... additional decomposed relationship fields ...
// }
// }
ERROR_REASON_ATTEMPT_TO_RECREATE_RELATIONSHIP = 18;
// The request failed because it caused the maximum depth allowed to be
// exceeded. This typically indicates that there is a circular data traversal
// somewhere in the schema, but can also be raised if the data traversal is simply
// too deep.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_MAXIMUM_DEPTH_EXCEEDED",
// "domain": "authzed.com",
// "metadata": {
// "maximum_depth_allowed": "50",
// ... additional fields based on request type ...
// }
// }
ERROR_REASON_MAXIMUM_DEPTH_EXCEEDED = 19;
// The request failed due to a serialization error in the backend database.
// This typically indicates that various in flight transactions conflicted with each other
// and the database had to abort one or more of them. SpiceDB will retry a few times before returning
// the error to the client.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_SERIALIZATION_FAILURE",
// "domain": "authzed.com",
// "metadata": {}
// }
ERROR_REASON_SERIALIZATION_FAILURE = 20;
// The request contained more check items than the maximum configured.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_TOO_MANY_CHECKS_IN_REQUEST",
// "domain": "authzed.com",
// "metadata": {
// "check_count": "525",
// "maximum_checks_allowed": "500",
// }
// }
ERROR_REASON_TOO_MANY_CHECKS_IN_REQUEST = 21;
// The request's specified limit is too large.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_EXCEEDS_MAXIMUM_ALLOWABLE_LIMIT",
// "domain": "authzed.com",
// "metadata": {
// "limit_provided": "525",
// "maximum_limit_allowed": "500",
// }
// }
ERROR_REASON_EXCEEDS_MAXIMUM_ALLOWABLE_LIMIT = 22;
// The request failed because the provided filter was invalid in some way.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_INVALID_FILTER",
// "domain": "authzed.com",
// "metadata": {
// "filter": "...",
// }
// }
ERROR_REASON_INVALID_FILTER = 23;
// The request failed because too many concurrent updates were attempted
// against the in-memory datastore.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_INMEMORY_TOO_MANY_CONCURRENT_UPDATES",
// "domain": "authzed.com",
// "metadata": {}
// }
ERROR_REASON_INMEMORY_TOO_MANY_CONCURRENT_UPDATES = 24;
// The request failed because the precondition specified is empty.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_EMPTY_PRECONDITION",
// "domain": "authzed.com",
// "metadata": {}
// }
ERROR_REASON_EMPTY_PRECONDITION = 25;
// The request failed because the counter was already registered.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_COUNTER_ALREADY_REGISTERED",
// "domain": "authzed.com",
// "metadata": { "counter_name": "name" }
// }
ERROR_REASON_COUNTER_ALREADY_REGISTERED = 26;
// The request failed because the counter was not registered.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_COUNTER_NOT_REGISTERED",
// "domain": "authzed.com",
// "metadata": { "counter_name": "name" }
// }
ERROR_REASON_COUNTER_NOT_REGISTERED = 27;
// The request failed because a wildcard was not allowed. For CheckPermission,
// this means that the subject or resource ID was a wildcard. For LookupResources,
// this means that the subject ID was a wildcard.
//
// Example of an ErrorInfo:
//
// {
// "reason": "ERROR_REASON_WILDCARD_NOT_ALLOWED",
// "domain": "authzed.com",
// "metadata": { "disallowed_field": "subject_id" }
// }
ERROR_REASON_WILDCARD_NOT_ALLOWED = 28;
}