aboutsummaryrefslogtreecommitdiff
path: root/crates/secd/proto/authzed/api/v1/schema_service.proto
blob: ed60a0d4bba6967483ae9a2659a6a38384ac381d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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 {}