blob: 1ebf5f265aeef9db7815a9e9b715f13308b47b3f [file] [log] [blame]
syntax = "proto3";
package bufman.dubbo.apache.org.registry.v1alpha1;
import "google/protobuf/timestamp.proto";
// WebhookService exposes the functionality for a caller to
// create/delete/list Webhooks for a given repository event.
service WebhookService {
// Create a webhook, subscribes to a given repository event for a callback URL
// invocation.
rpc CreateWebhook(CreateWebhookRequest) returns (CreateWebhookResponse) {
option idempotency_level = IDEMPOTENT;
}
// Delete a webhook removes the event subscription.
rpc DeleteWebhook(DeleteWebhookRequest) returns (DeleteWebhookResponse) {
option idempotency_level = IDEMPOTENT;
}
// Lists the webhooks subscriptions for a given repository.
rpc ListWebhooks(ListWebhooksRequest) returns (ListWebhooksResponse) {
option idempotency_level = NO_SIDE_EFFECTS;
}
}
// CreateWebhookRequest is the proto request representation of a
// webhook request body.
message CreateWebhookRequest {
// The event to subscribe to for the given repository.
WebhookEvent webhook_event = 1;
// The owner name of the repository in the corresponding subscription request.
string owner_name = 2;
// The repository name that the subscriber wishes create a subscription for.
string repository_name = 3;
// The subscriber's callback URL where notifications should be delivered.
string callback_url = 4;
}
// WebhookEvent contains the currently supported webhook event types.
enum WebhookEvent {
// WEBHOOK_EVENT_UNSPECIFIED is a safe noop default for webhook events
// subscription. It will trigger an error if trying to register a webhook with
// this event.
WEBHOOK_EVENT_UNSPECIFIED = 0;
// WEBHOOK_EVENT_REPOSITORY_PUSH is emitted whenever a successful buf push is
// completed for a specific repository.
WEBHOOK_EVENT_REPOSITORY_PUSH = 1;
}
// CreateWebhookResponse is the proto response representation
// of a webhook request.
message CreateWebhookResponse {
// Created webhook subscription.
Webhook webhook = 1;
}
// DeleteWebhookRequest is the request for unsubscribing to a webhook.
message DeleteWebhookRequest {
// The id of the webhook subscription to delete.
string webhook_id = 1;
}
// DeleteWebhookResponse is the response for unsubscribing
// from a webhook.
message DeleteWebhookResponse {}
// ListWebhooksRequest is the request to get the
// list of subscribed webhooks for a given repository.
message ListWebhooksRequest {
// The repository name given in the corresponding subscription request.
string repository_name = 1;
// The owner associated with the repository.
string owner_name = 2;
// The page token for paginating.
string page_token = 3;
}
// ListWebhooksResponse is the response for the list of
// subscribed webhooks for a given repository.
message ListWebhooksResponse {
// The list of subscribed webhooks for a given repository.
repeated Webhook webhooks = 1;
// The next page token for paginating.
string next_page_token = 2;
}
// Webhook is the representation of a webhook repository event subscription.
message Webhook {
// The event associated with the subscription id.
WebhookEvent event = 1;
// The id of the associated subscription.
string webhook_id = 2;
// The webhook creation timestamp.
google.protobuf.Timestamp create_time = 3;
// The webhook last updated timestamp.
google.protobuf.Timestamp update_time = 4;
// The webhook repository name.
string repository_name = 5;
// The webhook repository owner name.
string owner_name = 6;
// The subscriber's callback URL where notifications are delivered. Currently
// we only support Connect-powered backends with application/proto as the
// content type. Make sure that your URL ends with
// "/bufman.dubbo.apache.org.webhook.v1alpha1.EventService/Event". For more information
// about Connect, see https://connect.build.
string callback_url = 7;
}