@@ -50,13 +50,20 @@ type Permission struct {
5050
5151// Limits defines the rate limits for each category.
5252type Limits struct {
53- IPLimit int64 `json:"ip_limit"`
54- DocsLimit int64 `json:"docs_limit"`
55- SearchLimit int64 `json:"search_limit"`
56- IndicesLimit int64 `json:"indices_limit"`
57- CatLimit int64 `json:"cat_limit"`
58- ClustersLimit int64 `json:"clusters_limit"`
59- MiscLimit int64 `json:"misc_limit"`
53+ IPLimit int64 `json:"ip_limit"`
54+ DocsLimit int64 `json:"docs_limit"`
55+ SearchLimit int64 `json:"search_limit"`
56+ IndicesLimit int64 `json:"indices_limit"`
57+ CatLimit int64 `json:"cat_limit"`
58+ ClustersLimit int64 `json:"clusters_limit"`
59+ MiscLimit int64 `json:"misc_limit"`
60+ UserLimit int64 `json:"user_limit"`
61+ PermissionLimit int64 `json:"permission_limit"`
62+ AnalyticsLimit int64 `json:"analytics_limit"`
63+ RulesLimit int64 `json:"rules_limit"`
64+ TemplatesLimit int64 `json:"templates_limit"`
65+ SuggestionsLimit int64 `json:"suggestions_limit"`
66+ StreamsLimit int64 `json:"streams_limit"`
6067}
6168
6269// Options is a function type used to define a permission's properties.
@@ -421,6 +428,20 @@ func (p *Permission) GetLimitFor(c category.Category) (int64, error) {
421428 return p .Limits .ClustersLimit , nil
422429 case category .Misc :
423430 return p .Limits .MiscLimit , nil
431+ case category .User :
432+ return p .Limits .UserLimit , nil
433+ case category .Permission :
434+ return p .Limits .PermissionLimit , nil
435+ case category .Analytics :
436+ return p .Limits .AnalyticsLimit , nil
437+ case category .Rules :
438+ return p .Limits .RulesLimit , nil
439+ case category .Templates :
440+ return p .Limits .TemplatesLimit , nil
441+ case category .Suggestions :
442+ return p .Limits .SuggestionsLimit , nil
443+ case category .Streams :
444+ return p .Limits .StreamsLimit , nil
424445 default :
425446 return - 1 , fmt .Errorf (`we do not rate limit "%s" category` , c )
426447 }
@@ -509,6 +530,28 @@ func (p *Permission) GetPatch(rolePatched bool) (map[string]interface{}, error)
509530 if p .Limits .MiscLimit != 0 {
510531 limits ["misc_limit" ] = p .Limits .MiscLimit
511532 }
533+ if p .Limits .UserLimit != 0 {
534+ limits ["user_limit" ] = p .Limits .UserLimit
535+ }
536+ if p .Limits .PermissionLimit != 0 {
537+ limits ["permission_limit" ] = p .Limits .PermissionLimit
538+ }
539+ if p .Limits .AnalyticsLimit != 0 {
540+ limits ["analytics_limit" ] = p .Limits .AnalyticsLimit
541+ }
542+ if p .Limits .RulesLimit != 0 {
543+ limits ["rules_limit" ] = p .Limits .RulesLimit
544+ }
545+ if p .Limits .TemplatesLimit != 0 {
546+ limits ["templates_limit" ] = p .Limits .TemplatesLimit
547+ }
548+ if p .Limits .SuggestionsLimit != 0 {
549+ limits ["suggestions_limit" ] = p .Limits .SuggestionsLimit
550+ }
551+ if p .Limits .StreamsLimit != 0 {
552+ limits ["streams_limit" ] = p .Limits .StreamsLimit
553+ }
554+
512555 patch ["limits" ] = limits
513556 }
514557 if p .Description != "" {
0 commit comments