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; import "google/api/annotations.proto"; import "validate/validate.proto"; import "authzed/api/v1/core.proto"; // SchemaService implements operations on a Permissions System's Schema. service SchemaService { // Read returns the current Object Definitions for a Permissions System. // // Errors include: // - INVALID_ARGUMENT: a provided value has failed to semantically validate // - NOT_FOUND: no schema has been defined rpc ReadSchema(ReadSchemaRequest) returns (ReadSchemaResponse) { option (google.api.http) = { post: "/v1/schema/read" body: "*" }; } // Write overwrites the current Object Definitions for a Permissions System. rpc WriteSchema(WriteSchemaRequest) returns (WriteSchemaResponse) { option (google.api.http) = { post: "/v1/schema/write" body: "*" }; } } // ReadSchemaRequest returns the schema from the database. message ReadSchemaRequest {} // ReadSchemaResponse is the resulting data after having read the Object // Definitions from a Schema. message ReadSchemaResponse { // schema_text is the textual form of the current schema in the system string schema_text = 1; // read_at is the ZedToken at which the schema was read. ZedToken read_at = 2 [ (validate.rules).message.required = true ]; } // WriteSchemaRequest is the required data used to "upsert" the Schema of a // Permissions System. message WriteSchemaRequest { // The Schema containing one or more Object Definitions that will be written // to the Permissions System. string schema = 1 [ (validate.rules).string.max_bytes = 4194304 ]; // 4MiB } // WriteSchemaResponse is the resulting data after having written a Schema to // a Permissions System. message WriteSchemaResponse { // written_at is the ZedToken at which the schema was written. ZedToken written_at = 1 [ (validate.rules).message.required = true ]; }