aboutsummaryrefslogtreecommitdiff
path: root/crates/secd/proto/authzed/api/v1/schema_service.proto
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--crates/secd/proto/authzed/api/v1/schema_service.proto53
1 files changed, 53 insertions, 0 deletions
diff --git a/crates/secd/proto/authzed/api/v1/schema_service.proto b/crates/secd/proto/authzed/api/v1/schema_service.proto
new file mode 100644
index 0000000..ed60a0d
--- /dev/null
+++ b/crates/secd/proto/authzed/api/v1/schema_service.proto
@@ -0,0 +1,53 @@
+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 {}