syntax = "proto3"; package memos.api.v1; import "api/v1/common.proto"; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; option go_package = "gen/api/v1"; service WebhookService { // CreateWebhook creates a new webhook. rpc CreateWebhook(CreateWebhookRequest) returns (Webhook) { option (google.api.http) = { post: "/api/v1/webhooks" body: "*" }; } // GetWebhook returns a webhook by id. rpc GetWebhook(GetWebhookRequest) returns (Webhook) { option (google.api.http) = {get: "/api/v1/webhooks/{id}"}; option (google.api.method_signature) = "id"; } // ListWebhooks returns a list of webhooks. rpc ListWebhooks(ListWebhooksRequest) returns (ListWebhooksResponse) { option (google.api.http) = {get: "/api/v1/webhooks"}; } // UpdateWebhook updates a webhook. rpc UpdateWebhook(UpdateWebhookRequest) returns (Webhook) { option (google.api.http) = { patch: "/api/v1/webhooks/{webhook.id}" body: "webhook" }; option (google.api.method_signature) = "webhook,update_mask"; } // DeleteWebhook deletes a webhook by id. rpc DeleteWebhook(DeleteWebhookRequest) returns (google.protobuf.Empty) { option (google.api.http) = {delete: "/api/v1/webhooks/{id}"}; option (google.api.method_signature) = "id"; } } message Webhook { int32 id = 1; int32 creator_id = 2; google.protobuf.Timestamp created_time = 3; google.protobuf.Timestamp updated_time = 4; RowStatus row_status = 5; string name = 6; string url = 7; } message CreateWebhookRequest { string name = 1; string url = 2; } message GetWebhookRequest { int32 id = 1; } message ListWebhooksRequest { int32 creator_id = 1; } message ListWebhooksResponse { repeated Webhook webhooks = 1; } message UpdateWebhookRequest { Webhook webhook = 1; google.protobuf.FieldMask update_mask = 2; } message DeleteWebhookRequest { int32 id = 1; }