mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 18:07:31 +00:00
fix: set quotas (#6597)
* feat: set quotas
* fix: start new period on younger anchor
* cleanup e2e config
* fix set notifications
* lint
* test: fix quota projection tests
* fix add quota tests
* make quota fields nullable
* enable amount 0
* fix initial setup
* create a prerelease
* avoid success comments
* fix quota projection primary key
* Revert "fix quota projection primary key"
This reverts commit e72f4d7fa1
.
* simplify write model
* fix aggregate id
* avoid push without changes
* test set quota lifecycle
* test set quota mutations
* fix quota unit test
* fix: quotas
* test quota.set event projection
* use SetQuota in integration tests
* fix: release quotas 3
* reset releaserc
* fix comment
* test notification order doesn't matter
* test notification order doesn't matter
* test with unmarshalled events
* test with unmarshalled events
This commit is contained in:
@@ -361,6 +361,8 @@ service SystemService {
|
||||
}
|
||||
|
||||
// Creates a new quota
|
||||
// Returns an error if the quota already exists for the specified unit
|
||||
// Deprecated: use SetQuota instead
|
||||
rpc AddQuota(AddQuotaRequest) returns (AddQuotaResponse) {
|
||||
option (google.api.http) = {
|
||||
post: "/instances/{instance_id}/quotas"
|
||||
@@ -372,6 +374,19 @@ service SystemService {
|
||||
};
|
||||
}
|
||||
|
||||
// Sets quota configuration properties
|
||||
// Creates a new quota if it doesn't exist for the specified unit
|
||||
rpc SetQuota(SetQuotaRequest) returns (SetQuotaResponse) {
|
||||
option (google.api.http) = {
|
||||
put: "/instances/{instance_id}/quotas"
|
||||
body: "*"
|
||||
};
|
||||
|
||||
option (zitadel.v1.auth_option) = {
|
||||
permission: "authenticated";
|
||||
};
|
||||
}
|
||||
|
||||
// Removes a quota
|
||||
rpc RemoveQuota(RemoveQuotaRequest) returns (RemoveQuotaResponse) {
|
||||
option (google.api.http) = {
|
||||
@@ -598,6 +613,54 @@ message AddQuotaResponse {
|
||||
zitadel.v1.ObjectDetails details = 1;
|
||||
}
|
||||
|
||||
message SetQuotaRequest {
|
||||
string instance_id = 1 [(validate.rules).string = {min_len: 1, max_len: 200}];
|
||||
// the unit a quota should be imposed on
|
||||
zitadel.quota.v1.Unit unit = 2 [
|
||||
(validate.rules).enum = {defined_only: true, not_in: [0]},
|
||||
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
description: "the unit a quota should be imposed on";
|
||||
}
|
||||
];
|
||||
// the starting time from which the current quota period is calculated from. This is relevant for querying the current usage.
|
||||
google.protobuf.Timestamp from = 3 [
|
||||
(validate.rules).timestamp.required = true,
|
||||
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
example: "\"2019-04-01T08:45:00.000000Z\"";
|
||||
description: "the starting time from which the current quota period is calculated from. This is relevant for querying the current usage.";
|
||||
}
|
||||
];
|
||||
// the quota periods duration
|
||||
google.protobuf.Duration reset_interval = 4 [
|
||||
(validate.rules).duration.required = true,
|
||||
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
description: "the quota periods duration";
|
||||
}
|
||||
];
|
||||
// the quota amount of units
|
||||
uint64 amount = 5 [
|
||||
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
description: "the quota amount of units";
|
||||
}
|
||||
];
|
||||
// whether ZITADEL should block further usage when the configured amount is used
|
||||
bool limit = 6 [
|
||||
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
description: "whether ZITADEL should block further usage when the configured amount is used";
|
||||
}
|
||||
];
|
||||
// the handlers, ZITADEL executes when certain quota percentages are reached
|
||||
repeated zitadel.quota.v1.Notification notifications = 7 [
|
||||
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
description: "the handlers, ZITADEL executes when certain quota percentages are reached";
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
message SetQuotaResponse {
|
||||
zitadel.v1.ObjectDetails details = 1;
|
||||
}
|
||||
|
||||
message RemoveQuotaRequest {
|
||||
string instance_id = 1 [(validate.rules).string = {min_len: 1, max_len: 200}];
|
||||
zitadel.quota.v1.Unit unit = 2;
|
||||
|
Reference in New Issue
Block a user