mirror of https://github.com/usememos/memos
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
200 lines
6.7 KiB
Protocol Buffer
200 lines
6.7 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package memos.api.v1;
|
|
|
|
import "api/v1/common.proto";
|
|
import "api/v1/memo_service.proto";
|
|
import "google/api/annotations.proto";
|
|
import "google/api/client.proto";
|
|
import "google/api/field_behavior.proto";
|
|
import "google/api/resource.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 {
|
|
// ListWebhooks returns a list of webhooks.
|
|
rpc ListWebhooks(ListWebhooksRequest) returns (ListWebhooksResponse) {
|
|
option (google.api.http) = {get: "/api/v1/webhooks"};
|
|
}
|
|
|
|
// GetWebhook gets a webhook by name.
|
|
rpc GetWebhook(GetWebhookRequest) returns (Webhook) {
|
|
option (google.api.http) = {get: "/api/v1/{name=webhooks/*}"};
|
|
option (google.api.method_signature) = "name";
|
|
}
|
|
|
|
// CreateWebhook creates a new webhook.
|
|
rpc CreateWebhook(CreateWebhookRequest) returns (Webhook) {
|
|
option (google.api.http) = {
|
|
post: "/api/v1/webhooks"
|
|
body: "webhook"
|
|
};
|
|
option (google.api.method_signature) = "webhook";
|
|
}
|
|
|
|
// UpdateWebhook updates a webhook.
|
|
rpc UpdateWebhook(UpdateWebhookRequest) returns (Webhook) {
|
|
option (google.api.http) = {
|
|
patch: "/api/v1/{webhook.name=webhooks/*}"
|
|
body: "webhook"
|
|
};
|
|
option (google.api.method_signature) = "webhook,update_mask";
|
|
}
|
|
|
|
// DeleteWebhook deletes a webhook.
|
|
rpc DeleteWebhook(DeleteWebhookRequest) returns (google.protobuf.Empty) {
|
|
option (google.api.http) = {delete: "/api/v1/{name=webhooks/*}"};
|
|
option (google.api.method_signature) = "name";
|
|
}
|
|
}
|
|
|
|
message Webhook {
|
|
option (google.api.resource) = {
|
|
type: "memos.api.v1/Webhook"
|
|
pattern: "webhooks/{webhook}"
|
|
name_field: "name"
|
|
singular: "webhook"
|
|
plural: "webhooks"
|
|
};
|
|
|
|
// The resource name of the webhook.
|
|
// Format: webhooks/{webhook}
|
|
string name = 1 [(google.api.field_behavior) = IDENTIFIER];
|
|
|
|
// Required. The display name of the webhook.
|
|
string display_name = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. The target URL for the webhook.
|
|
string url = 3 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Output only. The resource name of the creator.
|
|
// Format: users/{user}
|
|
string creator = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
|
|
|
|
// The state of the webhook.
|
|
State state = 5 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Output only. The creation timestamp.
|
|
google.protobuf.Timestamp create_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
|
|
|
|
// Output only. The last update timestamp.
|
|
google.protobuf.Timestamp update_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
|
|
}
|
|
|
|
message ListWebhooksRequest {
|
|
// Optional. The maximum number of webhooks to return.
|
|
// The service may return fewer than this value.
|
|
// If unspecified, at most 50 webhooks will be returned.
|
|
// The maximum value is 1000; values above 1000 will be coerced to 1000.
|
|
int32 page_size = 1 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. A page token, received from a previous `ListWebhooks` call.
|
|
// Provide this to retrieve the subsequent page.
|
|
string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. Filter to apply to the list results.
|
|
// Example: "state=ACTIVE" or "creator=users/123"
|
|
// Supported operators: =, !=, <, <=, >, >=, :
|
|
// Supported fields: display_name, url, creator, state, create_time, update_time
|
|
string filter = 3 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. The order to sort results by.
|
|
// Example: "create_time desc" or "display_name asc"
|
|
string order_by = 4 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. If true, show deleted webhooks in the response.
|
|
bool show_deleted = 5 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
message ListWebhooksResponse {
|
|
// The list of webhooks.
|
|
repeated Webhook webhooks = 1;
|
|
|
|
// A token that can be sent as `page_token` to retrieve the next page.
|
|
// If this field is omitted, there are no subsequent pages.
|
|
string next_page_token = 2;
|
|
|
|
// The total count of webhooks (may be approximate).
|
|
int32 total_size = 3;
|
|
}
|
|
|
|
message GetWebhookRequest {
|
|
// Required. The resource name of the webhook.
|
|
// Format: webhooks/{webhook}
|
|
string name = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.resource_reference) = {type: "memos.api.v1/Webhook"}
|
|
];
|
|
|
|
// Optional. The fields to return in the response.
|
|
// If not specified, all fields are returned.
|
|
google.protobuf.FieldMask read_mask = 2 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
message CreateWebhookRequest {
|
|
// Required. The webhook to create.
|
|
Webhook webhook = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.field_behavior) = INPUT_ONLY
|
|
];
|
|
|
|
// Optional. The webhook ID to use for this webhook.
|
|
// If empty, a unique ID will be generated.
|
|
// Must match the pattern [a-z0-9-]+
|
|
string webhook_id = 2 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. If set, validate the request but don't actually create the webhook.
|
|
bool validate_only = 3 [(google.api.field_behavior) = OPTIONAL];
|
|
|
|
// Optional. An idempotency token that can be used to ensure that multiple
|
|
// requests to create a webhook have the same result.
|
|
string request_id = 4 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
message UpdateWebhookRequest {
|
|
// Required. The webhook to update.
|
|
Webhook webhook = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Required. The list of fields to update.
|
|
google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// Optional. If set to true, allows updating sensitive fields.
|
|
bool allow_missing = 3 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
message DeleteWebhookRequest {
|
|
// Required. The resource name of the webhook to delete.
|
|
// Format: webhooks/{webhook}
|
|
string name = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.resource_reference) = {type: "memos.api.v1/Webhook"}
|
|
];
|
|
|
|
// Optional. If set to true, the webhook will be deleted even if it has associated data.
|
|
bool force = 2 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|
|
|
|
message WebhookRequestPayload {
|
|
// The target URL for the webhook request.
|
|
string url = 1 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// The type of activity that triggered this webhook.
|
|
string activity_type = 2 [(google.api.field_behavior) = REQUIRED];
|
|
|
|
// The resource name of the creator.
|
|
// Format: users/{user}
|
|
string creator = 3 [
|
|
(google.api.field_behavior) = OUTPUT_ONLY,
|
|
(google.api.resource_reference) = {type: "memos.api.v1/User"}
|
|
];
|
|
|
|
// The creation timestamp of the activity.
|
|
google.protobuf.Timestamp create_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
|
|
|
|
// The memo that triggered this webhook (if applicable).
|
|
Memo memo = 5 [(google.api.field_behavior) = OPTIONAL];
|
|
}
|