slash-e/proto/api/v1/subscription_service.proto
2024-08-16 21:39:14 +08:00

59 lines
1.6 KiB
Protocol Buffer

syntax = "proto3";
package slash.api.v1;
import "google/api/annotations.proto";
import "google/api/field_behavior.proto";
import "google/protobuf/timestamp.proto";
option go_package = "gen/api/v1";
service SubscriptionService {
// GetSubscription gets the current subscription of Slash instance.
rpc GetSubscription(GetSubscriptionRequest) returns (Subscription) {
option (google.api.http) = {get: "/v1/subscription"};
}
// UpdateSubscription updates the subscription.
rpc UpdateSubscription(UpdateSubscriptionRequest) returns (Subscription) {
option (google.api.http) = {
patch: "/v1/subscription"
body: "*"
};
}
// DeleteSubscription deletes the subscription.
rpc DeleteSubscription(DeleteSubscriptionRequest) returns (Subscription) {
option (google.api.http) = {delete: "/v1/subscription"};
}
}
message Subscription {
PlanType plan = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp started_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp expires_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
repeated string features = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
int32 seats = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
int32 shortcuts_limit = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
int32 collections_limit = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
}
enum PlanType {
PLAN_TYPE_UNSPECIFIED = 0;
FREE = 1;
PRO = 2;
ENTERPRISE = 3;
}
message GetSubscriptionRequest {}
message UpdateSubscriptionRequest {
string license_key = 1 [(google.api.field_behavior) = REQUIRED];
}
message DeleteSubscriptionRequest {}