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"; import "google/api/annotations.proto"; import "validate/validate.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; } // 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 = 262144 ]; // 256KiB } // WriteSchemaResponse is the resulting data after having written a Schema to // a Permissions System. message WriteSchemaResponse {}