resource_service.proto 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. syntax = "proto3";
  2. package memos.api.v1;
  3. import "google/api/annotations.proto";
  4. import "google/api/client.proto";
  5. import "google/api/field_behavior.proto";
  6. import "google/api/httpbody.proto";
  7. import "google/protobuf/empty.proto";
  8. import "google/protobuf/field_mask.proto";
  9. import "google/protobuf/timestamp.proto";
  10. option go_package = "gen/api/v1";
  11. service ResourceService {
  12. // CreateResource creates a new resource.
  13. rpc CreateResource(CreateResourceRequest) returns (Resource) {
  14. option (google.api.http) = {
  15. post: "/api/v1/resources"
  16. body: "resource"
  17. };
  18. }
  19. // ListResources lists all resources.
  20. rpc ListResources(ListResourcesRequest) returns (ListResourcesResponse) {
  21. option (google.api.http) = {get: "/api/v1/resources"};
  22. }
  23. // GetResource returns a resource by name.
  24. rpc GetResource(GetResourceRequest) returns (Resource) {
  25. option (google.api.http) = {get: "/api/v1/{name=resources/*}"};
  26. option (google.api.method_signature) = "name";
  27. }
  28. // GetResourceBinary returns a resource binary by name.
  29. rpc GetResourceBinary(GetResourceBinaryRequest) returns (google.api.HttpBody) {
  30. option (google.api.http) = {get: "/file/{name=resources/*}/{filename}"};
  31. option (google.api.method_signature) = "name,filename";
  32. }
  33. // UpdateResource updates a resource.
  34. rpc UpdateResource(UpdateResourceRequest) returns (Resource) {
  35. option (google.api.http) = {
  36. patch: "/api/v1/{resource.name=resources/*}"
  37. body: "resource"
  38. };
  39. option (google.api.method_signature) = "resource,update_mask";
  40. }
  41. // DeleteResource deletes a resource by name.
  42. rpc DeleteResource(DeleteResourceRequest) returns (google.protobuf.Empty) {
  43. option (google.api.http) = {delete: "/api/v1/{name=resources/*}"};
  44. option (google.api.method_signature) = "name";
  45. }
  46. }
  47. message Resource {
  48. reserved 2;
  49. // The name of the resource.
  50. // Format: resources/{resource}, resource is the user defined if or uuid.
  51. string name = 1;
  52. google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  53. string filename = 4;
  54. bytes content = 5 [(google.api.field_behavior) = INPUT_ONLY];
  55. string external_link = 6;
  56. string type = 7;
  57. int64 size = 8;
  58. // The related memo. Refer to `Memo.name`.
  59. optional string memo = 9;
  60. }
  61. message CreateResourceRequest {
  62. Resource resource = 1;
  63. }
  64. message ListResourcesRequest {}
  65. message ListResourcesResponse {
  66. repeated Resource resources = 1;
  67. }
  68. message GetResourceRequest {
  69. // The name of the resource.
  70. string name = 1;
  71. }
  72. message GetResourceBinaryRequest {
  73. // The name of the resource.
  74. string name = 1;
  75. // The filename of the resource. Mainly used for downloading.
  76. string filename = 2;
  77. // A flag indicating if the thumbnail version of the resource should be returned
  78. bool thumbnail = 3;
  79. }
  80. message UpdateResourceRequest {
  81. Resource resource = 1;
  82. google.protobuf.FieldMask update_mask = 2;
  83. }
  84. message DeleteResourceRequest {
  85. // The name of the resource.
  86. string name = 1;
  87. }