From a4fc8b4f62dc76acb23f9db0b65c6cc35c5ce7bd Mon Sep 17 00:00:00 2001 From: Valentin Knabel Date: Thu, 24 Sep 2026 11:11:49 +0200 Subject: [PATCH 1/2] feat!: remove extraneous token endpoints --- doc/index.html | 418 ------------ go.mod | 1 - go.sum | 2 - go/client/client-interceptors.go | 82 --- go/client/client_test.go | 22 - go/client/conn.go | 40 +- go/client/token-persistent-funcs.go | 31 - go/client/token-persistent-funcs_test.go | 28 - go/fits/api/v1/apiv1connect/token.connect.go | 108 +--- go/fits/api/v1/token.pb.go | 630 ++----------------- go/permissions/permissions_test.go | 2 +- go/permissions/servicepermissions.go | 9 - js/fits/api/v1/token_pb.d.ts | 236 +------ js/fits/api/v1/token_pb.js | 48 +- js/fits/api/v1/token_pb.ts | 280 +-------- proto/fits/api/v1/token.proto | 131 ---- python/fits/api/v1/token_connect.py | 195 ------ python/fits/api/v1/token_pb2.py | 109 +--- python/fits/api/v1/token_pb2.pyi | 93 --- 19 files changed, 124 insertions(+), 2341 deletions(-) delete mode 100644 go/client/token-persistent-funcs.go delete mode 100644 go/client/token-persistent-funcs_test.go diff --git a/doc/index.html b/doc/index.html index 1d54944..c340031 100644 --- a/doc/index.html +++ b/doc/index.html @@ -462,22 +462,6 @@

Table of Contents

MToken.TenantRolesEntry -
  • - MTokenServiceCreateRequest -
  • - -
  • - MTokenServiceCreateRequest.ProjectRolesEntry -
  • - -
  • - MTokenServiceCreateRequest.TenantRolesEntry -
  • - -
  • - MTokenServiceCreateResponse -
  • -
  • MTokenServiceGetRequest
  • @@ -494,14 +478,6 @@

    Table of Contents

    MTokenServiceListResponse -
  • - MTokenServiceRefreshRequest -
  • - -
  • - MTokenServiceRefreshResponse -
  • -
  • MTokenServiceRevokeRequest
  • @@ -510,22 +486,6 @@

    Table of Contents

    MTokenServiceRevokeResponse -
  • - MTokenServiceUpdateRequest -
  • - -
  • - MTokenServiceUpdateRequest.ProjectRolesEntry -
  • - -
  • - MTokenServiceUpdateRequest.TenantRolesEntry -
  • - -
  • - MTokenServiceUpdateResponse -
  • -
  • ETokenType @@ -2433,165 +2393,6 @@

    Token.TenantRolesEntry

    -

    TokenServiceCreateRequest

    -

    TokenServiceCreateRequest is the request payload to create a token

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    descriptionstring

    Description of the token

    permissionsMethodPermissionrepeated

    Permissions is a list of service methods this token can be used for

    expiresgoogle.protobuf.Duration

    Expires gives the duration since now, after which this token can not be used anymore

    project_rolesTokenServiceCreateRequest.ProjectRolesEntryrepeated

    ProjectRoles associates a project id with the corresponding role of the token owner

    tenant_rolesTokenServiceCreateRequest.TenantRolesEntryrepeated

    TenantRoles_associates a tenant id with the corresponding role of the token owner

    admin_roleAdminRoleoptional

    AdminRole defines the admin role of the token owner

    labelsLabels

    Labels on this token

    - - - - - -

    TokenServiceCreateRequest.ProjectRolesEntry

    -

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    keystring

    valueProjectRole

    - - - - - -

    TokenServiceCreateRequest.TenantRolesEntry

    -

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    keystring

    valueTenantRole

    - - - - - -

    TokenServiceCreateResponse

    -

    TokenServiceCreateResponse is the response payload of a token create request

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    tokenToken

    Token which was created

    secretstring

    Secret is the body if the jwt token, should be used in api requests as bearer token

    - - - - -

    TokenServiceGetRequest

    TokenServiceGetRequest is the request payload of a token get request

    @@ -2671,44 +2472,6 @@

    TokenServiceListResponse

    -

    TokenServiceRefreshRequest

    -

    TokenServiceRefreshRequest is the request payload of a token refresh request

    Permissions, Roles and Expiration duration and all other properties are inherited from the calling token.

    The expiration duration will be calculated from the existing token (exp - iat)

    - - - - - -

    TokenServiceRefreshResponse

    -

    TokenServiceRefreshResponse is the response payload of a token refresh request

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    tokenToken

    Token which was refreshed

    secretstring

    Secret is the body if the jwt token, should be used in api requests as bearer token

    - - - - -

    TokenServiceRevokeRequest

    TokenServiceRevokeRequest is the request payload of a token revoke request

    @@ -2740,166 +2503,6 @@

    TokenServiceRevokeResponse

    -

    TokenServiceUpdateRequest

    -

    TokenServiceUpdateRequest is the request payload of a token update request

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    uuidstring

    Uuid of the token to update

    update_metaUpdateMeta

    UpdateMeta contains the timestamp and strategy to be used in this update request -TokenUpdate is not guarded with optlock in the backend

    descriptionstringoptional

    Description is a user given description of this token.

    permissionsMethodPermissionrepeated

    Permissions is a list of service methods this token can be used for

    project_rolesTokenServiceUpdateRequest.ProjectRolesEntryrepeated

    ProjectRoles associates a project id with the corresponding role of the token owner

    tenant_rolesTokenServiceUpdateRequest.TenantRolesEntryrepeated

    TenantRoles associates a tenant id with the corresponding role of the token owner

    admin_roleAdminRoleoptional

    AdminRole defines the admin role of the token owner

    labelsUpdateLabels

    Labels on this token

    - - - - - -

    TokenServiceUpdateRequest.ProjectRolesEntry

    -

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    keystring

    valueProjectRole

    - - - - - -

    TokenServiceUpdateRequest.TenantRolesEntry

    -

    - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    keystring

    valueTenantRole

    - - - - - -

    TokenServiceUpdateResponse

    -

    TokenServiceUpdateResponse is the response payload of a token update request

    - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    tokenToken

    Token is the updated token

    - - - - -

    TokenType

    @@ -2950,20 +2553,6 @@

    TokenService

    Returns the token with the specified UUID.

    - - Create - TokenServiceCreateRequest - TokenServiceCreateResponse -

    Creates a token to authenticate against the platform, the secret will be only visible in the response.

    - - - - Update - TokenServiceUpdateRequest - TokenServiceUpdateResponse -

    Updates a token.

    - - List TokenServiceListRequest @@ -2978,13 +2567,6 @@

    TokenService

    Revokes a token, no further usage is possible afterwards.

    - - Refresh - TokenServiceRefreshRequest - TokenServiceRefreshResponse -

    Refreshes a token, this will create a new token with the exact same permissions as the calling token contains.

    - - diff --git a/go.mod b/go.mod index bb7f83f..b27b389 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,6 @@ require ( github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/klauspost/compress v1.19.2 // indirect github.com/minio/minlz v1.2.0 // indirect - github.com/stretchr/objx v0.5.3 // indirect go.yaml.in/yaml/v3 v3.0.5 // indirect golang.org/x/exp v0.0.0-20260824195058-e88cd73687aa // indirect golang.org/x/sys v0.47.0 // indirect diff --git a/go.sum b/go.sum index ad566c1..2bd2adc 100644 --- a/go.sum +++ b/go.sum @@ -30,8 +30,6 @@ github.com/minio/minlz v1.2.0 h1:6IOBuiHg04QxvbFfgFLT/9sMaO/UhL7S+ApW1mK8q5A= github.com/minio/minlz v1.2.0/go.mod h1:Ls9H7nlkASeCcdl5thjVD5Eraj6z+zGa7xtq57jIKD4= github.com/rodaine/protogofakeit v0.1.1 h1:ZKouljuRM3A+TArppfBqnH8tGZHOwM/pjvtXe9DaXH8= github.com/rodaine/protogofakeit v0.1.1/go.mod h1:pXn/AstBYMaSfc1/RqH3N82pBuxtWgejz1AlYpY1mI0= -github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= -github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE= github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg= go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= diff --git a/go/client/client-interceptors.go b/go/client/client-interceptors.go index 10bf00b..0d9c678 100644 --- a/go/client/client-interceptors.go +++ b/go/client/client-interceptors.go @@ -2,14 +2,8 @@ package client import ( "context" - "fmt" - "log/slog" - "sync" - "sync/atomic" - "time" "connectrpc.com/connect" - apiv1models "github.com/fi-ts/api/go/fits/api/v1" ) // authinterceptor adds the required auth headers @@ -71,79 +65,3 @@ func (i *loggingInterceptor) WrapStreamingClient(next connect.StreamingClientFun func (i *loggingInterceptor) WrapStreamingHandler(next connect.StreamingHandlerFunc) connect.StreamingHandlerFunc { return next } - -type tokenRenewingInterceptor struct { - config *DialConfig - client *client - - renewing atomic.Bool - - sync.Mutex -} - -func (i *tokenRenewingInterceptor) WrapUnary(next connect.UnaryFunc) connect.UnaryFunc { - return connect.UnaryFunc(func(ctx context.Context, request connect.AnyRequest) (connect.AnyResponse, error) { - err := i.renewTokenIfNeeded() - if err != nil { - return nil, err - } - return next(ctx, request) - }) -} - -func (i *tokenRenewingInterceptor) WrapStreamingClient(next connect.StreamingClientFunc) connect.StreamingClientFunc { - return next -} - -func (i *tokenRenewingInterceptor) WrapStreamingHandler(next connect.StreamingHandlerFunc) connect.StreamingHandlerFunc { - return next -} - -func (i *tokenRenewingInterceptor) renewTokenIfNeeded() error { - if i.config.expiresAt.IsZero() { - return nil - } - if i.renewing.Load() { - return nil - } - if i.config.Log == nil { - i.config.Log = slog.Default() - } - - replaceBefore := i.config.expiresAt.Sub(i.config.issuedAt) / tokenRenewChecksDuringLifetime - - if time.Until(i.config.expiresAt) > replaceBefore { - return nil - } - - i.renewing.Store(true) - defer i.renewing.Store(false) - - i.config.Log.Info("call token refresh, current token expires soon", "expires", i.config.expiresAt.String()) - - i.Lock() - defer i.Unlock() - - resp, err := i.client.Apiv1().Token().Refresh(context.Background(), &apiv1models.TokenServiceRefreshRequest{}) - if err != nil { - return fmt.Errorf("unable to refresh token %w", err) - } - - i.config.Token = resp.Secret - err = i.config.parse() - if err != nil { - return fmt.Errorf("unable to parse token %w", err) - } - - if i.config.TokenRenewal.PersistTokenFn == nil { - return nil - } - - err = i.config.TokenRenewal.PersistTokenFn(i.config.Token) - if err != nil { - return fmt.Errorf("unable to persist token %w", err) - } - - i.config.Log.Info("token refreshed, new token expires in", "expires", i.config.expiresAt.String()) - return nil -} diff --git a/go/client/client_test.go b/go/client/client_test.go index 234825d..2cf7c8f 100644 --- a/go/client/client_test.go +++ b/go/client/client_test.go @@ -26,7 +26,6 @@ func Test_Client(t *testing.T) { synctest.Test(t, func(t *testing.T) { tokenString, err := generateToken(2 * time.Second) require.NoError(t, err) - var renewedToken string c, err := client.New(&client.DialConfig{ BaseURL: "http://localhost", @@ -50,17 +49,6 @@ func Test_Client(t *testing.T) { }) }, }, - { - WantRequest: &apiv1.TokenServiceRefreshRequest{}, - WantResponse: func() connect.AnyResponse { - tokenString, err := generateToken(2 * time.Second) - require.NoError(t, err) - - return connect.NewResponse(&apiv1.TokenServiceRefreshResponse{ - Secret: tokenString, - }) - }, - }, { WantRequest: &apiv1.VersionServiceGetRequest{}, WantResponse: func() connect.AnyResponse { @@ -71,12 +59,6 @@ func Test_Client(t *testing.T) { }, }), }, - TokenRenewal: &client.TokenRenewal{ - PersistTokenFn: func(token string) error { - renewedToken = token - return nil - }, - }, Log: log, }) @@ -85,22 +67,18 @@ func Test_Client(t *testing.T) { require.NoError(t, err) require.NotNil(t, v) require.Equal(t, "1.0", v.Version.Version) - require.Empty(t, renewedToken) time.Sleep(1 * time.Second) v, err = c.Apiv1().Version().Get(t.Context(), &apiv1.VersionServiceGetRequest{}) require.NoError(t, err) require.NotNil(t, v) require.Equal(t, "1.0", v.Version.Version) - require.Empty(t, renewedToken) time.Sleep(3 * time.Second) v, err = c.Apiv1().Version().Get(t.Context(), &apiv1.VersionServiceGetRequest{}) require.NoError(t, err) require.NotNil(t, v) require.Equal(t, "1.0", v.Version.Version) - require.NotEmpty(t, renewedToken) - require.NotEqual(t, renewedToken, tokenString, "haven't changed") }) } diff --git a/go/client/conn.go b/go/client/conn.go index a2b9d09..f09426e 100644 --- a/go/client/conn.go +++ b/go/client/conn.go @@ -14,11 +14,9 @@ import ( ) const ( - tokenRenewChecksDuringLifetime = 4 - tokenFileRereadDuration = 5 * time.Minute - TokenEnvName = "FCO_APIV1_TOKEN" - TokenFileEnvName = "FCO_APIV1_TOKEN_FILE" - BaseURLEnvName = "FCO_APIV1_URL" + TokenEnvName = "FCO_APIV1_TOKEN" + TokenFileEnvName = "FCO_APIV1_TOKEN_FILE" + BaseURLEnvName = "FCO_APIV1_URL" ) type ( @@ -34,33 +32,20 @@ type ( // If Tokenfile is specified, Token cannot be specified. // Token renewal must be done from outside TokenFile string - // Duration between token file re-reads, optional, defaults to 5min if not specified. - TokenFileRereadDuration time.Duration // Optional client Interceptors Interceptors []connect.Interceptor UserAgent string - // TokenRenewal defines if and how the token should be renewed - TokenRenewal *TokenRenewal // Transport optional, can be used to configure how the http transport works. Transport http.RoundTripper Log *slog.Logger - expiresAt time.Time - issuedAt time.Time - tokenFileLastRead time.Time + expiresAt time.Time + issuedAt time.Time } - - TokenRenewal struct { - // PersistTokenFn is called to persist the newly fetched token - // token will not be persisted if not specified - PersistTokenFn PersistTokenFn - } - - PersistTokenFn func(token string) error ) func New(config *DialConfig) (Client, error) { @@ -77,19 +62,11 @@ func New(config *DialConfig) (Client, error) { if config.Token != "" { authInterceptor := &authInterceptor{config: config} c.interceptors = append(c.interceptors, authInterceptor) - - if config.TokenRenewal != nil { - tokenRenewingInterceptor := &tokenRenewingInterceptor{config: config, client: c} - c.interceptors = append(c.interceptors, tokenRenewingInterceptor) - } } if config.TokenFile != "" { authInterceptor := &authInterceptor{config: config} c.interceptors = append(c.interceptors, authInterceptor) - - tokenRenewingInterceptor := &tokenRenewingInterceptor{config: config, client: c} - c.interceptors = append(c.interceptors, tokenRenewingInterceptor) } if config.Log != nil { @@ -136,18 +113,11 @@ func (dc *DialConfig) parse() error { } if dc.Token == "" && dc.TokenFile != "" { - if dc.TokenFileRereadDuration == 0 { - dc.TokenFileRereadDuration = tokenFileRereadDuration - } - if dc.TokenFileRereadDuration < time.Minute { - return fmt.Errorf("token file re-read duration must be greater than 1min") - } content, err := os.ReadFile(dc.TokenFile) if err != nil { return err } dc.Token = string(content) - dc.tokenFileLastRead = time.Now() } if dc.Token == "" && dc.TokenFile == "" { diff --git a/go/client/token-persistent-funcs.go b/go/client/token-persistent-funcs.go deleted file mode 100644 index b3c4245..0000000 --- a/go/client/token-persistent-funcs.go +++ /dev/null @@ -1,31 +0,0 @@ -package client - -import ( - "fmt" - "os" -) - -type ( - filesystem struct { - tokenPath string - } -) - -func NewFilesystemTokenPersister(tokenFile string) (PersistTokenFn, error) { - fileInfo, err := os.Stat(tokenFile) - if err != nil { - return nil, fmt.Errorf("unable to stat tokenfile:%w", err) - } - mode := fileInfo.Mode() - if mode&os.ModePerm == os.ModePerm { - return nil, fmt.Errorf("tokenfile %s is not writable", tokenFile) - } - f := &filesystem{ - tokenPath: tokenFile, - } - return f.persist, nil -} - -func (f *filesystem) persist(token string) error { - return os.WriteFile(f.tokenPath, []byte(token), 0600) -} diff --git a/go/client/token-persistent-funcs_test.go b/go/client/token-persistent-funcs_test.go deleted file mode 100644 index 512591b..0000000 --- a/go/client/token-persistent-funcs_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package client_test - -import ( - "os" - "path" - "testing" - - "github.com/fi-ts/api/go/client" - "github.com/stretchr/testify/require" -) - -func TestNewFilesystemTokenPersiter(t *testing.T) { - tokenPath := path.Join(t.TempDir(), "token") - - _, err := os.OpenFile(tokenPath, os.O_RDONLY|os.O_CREATE, 0600) - require.NoError(t, err) - - filesystemPersister, err := client.NewFilesystemTokenPersister(tokenPath) - require.NoError(t, err) - - token := "a-token" - - err = filesystemPersister(token) - require.NoError(t, err) - tokenBytes, err := os.ReadFile(tokenPath) - require.NoError(t, err) - require.Equal(t, token, string(tokenBytes)) -} diff --git a/go/fits/api/v1/apiv1connect/token.connect.go b/go/fits/api/v1/apiv1connect/token.connect.go index 698ff85..e2f048b 100644 --- a/go/fits/api/v1/apiv1connect/token.connect.go +++ b/go/fits/api/v1/apiv1connect/token.connect.go @@ -35,32 +35,20 @@ const ( const ( // TokenServiceGetProcedure is the fully-qualified name of the TokenService's Get RPC. TokenServiceGetProcedure = "/fits.api.v1.TokenService/Get" - // TokenServiceCreateProcedure is the fully-qualified name of the TokenService's Create RPC. - TokenServiceCreateProcedure = "/fits.api.v1.TokenService/Create" - // TokenServiceUpdateProcedure is the fully-qualified name of the TokenService's Update RPC. - TokenServiceUpdateProcedure = "/fits.api.v1.TokenService/Update" // TokenServiceListProcedure is the fully-qualified name of the TokenService's List RPC. TokenServiceListProcedure = "/fits.api.v1.TokenService/List" // TokenServiceRevokeProcedure is the fully-qualified name of the TokenService's Revoke RPC. TokenServiceRevokeProcedure = "/fits.api.v1.TokenService/Revoke" - // TokenServiceRefreshProcedure is the fully-qualified name of the TokenService's Refresh RPC. - TokenServiceRefreshProcedure = "/fits.api.v1.TokenService/Refresh" ) // TokenServiceClient is a client for the fits.api.v1.TokenService service. type TokenServiceClient interface { // Returns the token with the specified UUID. Get(context.Context, *v1.TokenServiceGetRequest) (*v1.TokenServiceGetResponse, error) - // Creates a token to authenticate against the platform, the secret will be only visible in the response. - Create(context.Context, *v1.TokenServiceCreateRequest) (*v1.TokenServiceCreateResponse, error) - // Updates a token. - Update(context.Context, *v1.TokenServiceUpdateRequest) (*v1.TokenServiceUpdateResponse, error) // Returns the list of all user tokens. List(context.Context, *v1.TokenServiceListRequest) (*v1.TokenServiceListResponse, error) // Revokes a token, no further usage is possible afterwards. Revoke(context.Context, *v1.TokenServiceRevokeRequest) (*v1.TokenServiceRevokeResponse, error) - // Refreshes a token, this will create a new token with the exact same permissions as the calling token contains. - Refresh(context.Context, *v1.TokenServiceRefreshRequest) (*v1.TokenServiceRefreshResponse, error) } // NewTokenServiceClient constructs a client for the fits.api.v1.TokenService service. By default, @@ -80,18 +68,6 @@ func NewTokenServiceClient(httpClient connect.HTTPClient, baseURL string, opts . connect.WithSchema(tokenServiceMethods.ByName("Get")), connect.WithClientOptions(opts...), ), - create: connect.NewClient[v1.TokenServiceCreateRequest, v1.TokenServiceCreateResponse]( - httpClient, - baseURL+TokenServiceCreateProcedure, - connect.WithSchema(tokenServiceMethods.ByName("Create")), - connect.WithClientOptions(opts...), - ), - update: connect.NewClient[v1.TokenServiceUpdateRequest, v1.TokenServiceUpdateResponse]( - httpClient, - baseURL+TokenServiceUpdateProcedure, - connect.WithSchema(tokenServiceMethods.ByName("Update")), - connect.WithClientOptions(opts...), - ), list: connect.NewClient[v1.TokenServiceListRequest, v1.TokenServiceListResponse]( httpClient, baseURL+TokenServiceListProcedure, @@ -104,23 +80,14 @@ func NewTokenServiceClient(httpClient connect.HTTPClient, baseURL string, opts . connect.WithSchema(tokenServiceMethods.ByName("Revoke")), connect.WithClientOptions(opts...), ), - refresh: connect.NewClient[v1.TokenServiceRefreshRequest, v1.TokenServiceRefreshResponse]( - httpClient, - baseURL+TokenServiceRefreshProcedure, - connect.WithSchema(tokenServiceMethods.ByName("Refresh")), - connect.WithClientOptions(opts...), - ), } } // tokenServiceClient implements TokenServiceClient. type tokenServiceClient struct { - get *connect.Client[v1.TokenServiceGetRequest, v1.TokenServiceGetResponse] - create *connect.Client[v1.TokenServiceCreateRequest, v1.TokenServiceCreateResponse] - update *connect.Client[v1.TokenServiceUpdateRequest, v1.TokenServiceUpdateResponse] - list *connect.Client[v1.TokenServiceListRequest, v1.TokenServiceListResponse] - revoke *connect.Client[v1.TokenServiceRevokeRequest, v1.TokenServiceRevokeResponse] - refresh *connect.Client[v1.TokenServiceRefreshRequest, v1.TokenServiceRefreshResponse] + get *connect.Client[v1.TokenServiceGetRequest, v1.TokenServiceGetResponse] + list *connect.Client[v1.TokenServiceListRequest, v1.TokenServiceListResponse] + revoke *connect.Client[v1.TokenServiceRevokeRequest, v1.TokenServiceRevokeResponse] } // Get calls fits.api.v1.TokenService.Get. @@ -132,24 +99,6 @@ func (c *tokenServiceClient) Get(ctx context.Context, req *v1.TokenServiceGetReq return nil, err } -// Create calls fits.api.v1.TokenService.Create. -func (c *tokenServiceClient) Create(ctx context.Context, req *v1.TokenServiceCreateRequest) (*v1.TokenServiceCreateResponse, error) { - response, err := c.create.CallUnary(ctx, connect.NewRequest(req)) - if response != nil { - return response.Msg, err - } - return nil, err -} - -// Update calls fits.api.v1.TokenService.Update. -func (c *tokenServiceClient) Update(ctx context.Context, req *v1.TokenServiceUpdateRequest) (*v1.TokenServiceUpdateResponse, error) { - response, err := c.update.CallUnary(ctx, connect.NewRequest(req)) - if response != nil { - return response.Msg, err - } - return nil, err -} - // List calls fits.api.v1.TokenService.List. func (c *tokenServiceClient) List(ctx context.Context, req *v1.TokenServiceListRequest) (*v1.TokenServiceListResponse, error) { response, err := c.list.CallUnary(ctx, connect.NewRequest(req)) @@ -168,29 +117,14 @@ func (c *tokenServiceClient) Revoke(ctx context.Context, req *v1.TokenServiceRev return nil, err } -// Refresh calls fits.api.v1.TokenService.Refresh. -func (c *tokenServiceClient) Refresh(ctx context.Context, req *v1.TokenServiceRefreshRequest) (*v1.TokenServiceRefreshResponse, error) { - response, err := c.refresh.CallUnary(ctx, connect.NewRequest(req)) - if response != nil { - return response.Msg, err - } - return nil, err -} - // TokenServiceHandler is an implementation of the fits.api.v1.TokenService service. type TokenServiceHandler interface { // Returns the token with the specified UUID. Get(context.Context, *v1.TokenServiceGetRequest) (*v1.TokenServiceGetResponse, error) - // Creates a token to authenticate against the platform, the secret will be only visible in the response. - Create(context.Context, *v1.TokenServiceCreateRequest) (*v1.TokenServiceCreateResponse, error) - // Updates a token. - Update(context.Context, *v1.TokenServiceUpdateRequest) (*v1.TokenServiceUpdateResponse, error) // Returns the list of all user tokens. List(context.Context, *v1.TokenServiceListRequest) (*v1.TokenServiceListResponse, error) // Revokes a token, no further usage is possible afterwards. Revoke(context.Context, *v1.TokenServiceRevokeRequest) (*v1.TokenServiceRevokeResponse, error) - // Refreshes a token, this will create a new token with the exact same permissions as the calling token contains. - Refresh(context.Context, *v1.TokenServiceRefreshRequest) (*v1.TokenServiceRefreshResponse, error) } // NewTokenServiceHandler builds an HTTP handler from the service implementation. It returns the @@ -206,18 +140,6 @@ func NewTokenServiceHandler(svc TokenServiceHandler, opts ...connect.HandlerOpti connect.WithSchema(tokenServiceMethods.ByName("Get")), connect.WithHandlerOptions(opts...), ) - tokenServiceCreateHandler := connect.NewUnaryHandlerSimple( - TokenServiceCreateProcedure, - svc.Create, - connect.WithSchema(tokenServiceMethods.ByName("Create")), - connect.WithHandlerOptions(opts...), - ) - tokenServiceUpdateHandler := connect.NewUnaryHandlerSimple( - TokenServiceUpdateProcedure, - svc.Update, - connect.WithSchema(tokenServiceMethods.ByName("Update")), - connect.WithHandlerOptions(opts...), - ) tokenServiceListHandler := connect.NewUnaryHandlerSimple( TokenServiceListProcedure, svc.List, @@ -230,26 +152,14 @@ func NewTokenServiceHandler(svc TokenServiceHandler, opts ...connect.HandlerOpti connect.WithSchema(tokenServiceMethods.ByName("Revoke")), connect.WithHandlerOptions(opts...), ) - tokenServiceRefreshHandler := connect.NewUnaryHandlerSimple( - TokenServiceRefreshProcedure, - svc.Refresh, - connect.WithSchema(tokenServiceMethods.ByName("Refresh")), - connect.WithHandlerOptions(opts...), - ) return "/fits.api.v1.TokenService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case TokenServiceGetProcedure: tokenServiceGetHandler.ServeHTTP(w, r) - case TokenServiceCreateProcedure: - tokenServiceCreateHandler.ServeHTTP(w, r) - case TokenServiceUpdateProcedure: - tokenServiceUpdateHandler.ServeHTTP(w, r) case TokenServiceListProcedure: tokenServiceListHandler.ServeHTTP(w, r) case TokenServiceRevokeProcedure: tokenServiceRevokeHandler.ServeHTTP(w, r) - case TokenServiceRefreshProcedure: - tokenServiceRefreshHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -263,14 +173,6 @@ func (UnimplementedTokenServiceHandler) Get(context.Context, *v1.TokenServiceGet return nil, connect.NewError(connect.CodeUnimplemented, errors.New("fits.api.v1.TokenService.Get is not implemented")) } -func (UnimplementedTokenServiceHandler) Create(context.Context, *v1.TokenServiceCreateRequest) (*v1.TokenServiceCreateResponse, error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("fits.api.v1.TokenService.Create is not implemented")) -} - -func (UnimplementedTokenServiceHandler) Update(context.Context, *v1.TokenServiceUpdateRequest) (*v1.TokenServiceUpdateResponse, error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("fits.api.v1.TokenService.Update is not implemented")) -} - func (UnimplementedTokenServiceHandler) List(context.Context, *v1.TokenServiceListRequest) (*v1.TokenServiceListResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("fits.api.v1.TokenService.List is not implemented")) } @@ -278,7 +180,3 @@ func (UnimplementedTokenServiceHandler) List(context.Context, *v1.TokenServiceLi func (UnimplementedTokenServiceHandler) Revoke(context.Context, *v1.TokenServiceRevokeRequest) (*v1.TokenServiceRevokeResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("fits.api.v1.TokenService.Revoke is not implemented")) } - -func (UnimplementedTokenServiceHandler) Refresh(context.Context, *v1.TokenServiceRefreshRequest) (*v1.TokenServiceRefreshResponse, error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("fits.api.v1.TokenService.Refresh is not implemented")) -} diff --git a/go/fits/api/v1/token.pb.go b/go/fits/api/v1/token.pb.go index 64e5f07..69671bc 100644 --- a/go/fits/api/v1/token.pb.go +++ b/go/fits/api/v1/token.pb.go @@ -10,7 +10,6 @@ import ( _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - durationpb "google.golang.org/protobuf/types/known/durationpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" @@ -224,106 +223,6 @@ func (x *Token) GetAdminRole() AdminRole { return AdminRole_ADMIN_ROLE_UNSPECIFIED } -// TokenServiceCreateRequest is the request payload to create a token -type TokenServiceCreateRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Description of the token - Description string `protobuf:"bytes,1,opt,name=description,proto3" json:"description,omitempty"` - // Permissions is a list of service methods this token can be used for - Permissions []*MethodPermission `protobuf:"bytes,2,rep,name=permissions,proto3" json:"permissions,omitempty"` - // Expires gives the duration since now, after which this token can not be used anymore - Expires *durationpb.Duration `protobuf:"bytes,3,opt,name=expires,proto3" json:"expires,omitempty"` - // ProjectRoles associates a project id with the corresponding role of the token owner - ProjectRoles map[string]ProjectRole `protobuf:"bytes,4,rep,name=project_roles,json=projectRoles,proto3" json:"project_roles,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=fits.api.v1.ProjectRole"` - // TenantRoles_associates a tenant id with the corresponding role of the token owner - TenantRoles map[string]TenantRole `protobuf:"bytes,5,rep,name=tenant_roles,json=tenantRoles,proto3" json:"tenant_roles,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=fits.api.v1.TenantRole"` - // AdminRole defines the admin role of the token owner - AdminRole *AdminRole `protobuf:"varint,6,opt,name=admin_role,json=adminRole,proto3,enum=fits.api.v1.AdminRole,oneof" json:"admin_role,omitempty"` - // Labels on this token - Labels *Labels `protobuf:"bytes,7,opt,name=labels,proto3" json:"labels,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TokenServiceCreateRequest) Reset() { - *x = TokenServiceCreateRequest{} - mi := &file_fits_api_v1_token_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TokenServiceCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TokenServiceCreateRequest) ProtoMessage() {} - -func (x *TokenServiceCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_token_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TokenServiceCreateRequest.ProtoReflect.Descriptor instead. -func (*TokenServiceCreateRequest) Descriptor() ([]byte, []int) { - return file_fits_api_v1_token_proto_rawDescGZIP(), []int{1} -} - -func (x *TokenServiceCreateRequest) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *TokenServiceCreateRequest) GetPermissions() []*MethodPermission { - if x != nil { - return x.Permissions - } - return nil -} - -func (x *TokenServiceCreateRequest) GetExpires() *durationpb.Duration { - if x != nil { - return x.Expires - } - return nil -} - -func (x *TokenServiceCreateRequest) GetProjectRoles() map[string]ProjectRole { - if x != nil { - return x.ProjectRoles - } - return nil -} - -func (x *TokenServiceCreateRequest) GetTenantRoles() map[string]TenantRole { - if x != nil { - return x.TenantRoles - } - return nil -} - -func (x *TokenServiceCreateRequest) GetAdminRole() AdminRole { - if x != nil && x.AdminRole != nil { - return *x.AdminRole - } - return AdminRole_ADMIN_ROLE_UNSPECIFIED -} - -func (x *TokenServiceCreateRequest) GetLabels() *Labels { - if x != nil { - return x.Labels - } - return nil -} - // MethodPermission is a mapping from a subject/project to a service method type MethodPermission struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -342,7 +241,7 @@ type MethodPermission struct { func (x *MethodPermission) Reset() { *x = MethodPermission{} - mi := &file_fits_api_v1_token_proto_msgTypes[2] + mi := &file_fits_api_v1_token_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -354,7 +253,7 @@ func (x *MethodPermission) String() string { func (*MethodPermission) ProtoMessage() {} func (x *MethodPermission) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_token_proto_msgTypes[2] + mi := &file_fits_api_v1_token_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -367,7 +266,7 @@ func (x *MethodPermission) ProtoReflect() protoreflect.Message { // Deprecated: Use MethodPermission.ProtoReflect.Descriptor instead. func (*MethodPermission) Descriptor() ([]byte, []int) { - return file_fits_api_v1_token_proto_rawDescGZIP(), []int{2} + return file_fits_api_v1_token_proto_rawDescGZIP(), []int{1} } func (x *MethodPermission) GetSubject() string { @@ -384,61 +283,6 @@ func (x *MethodPermission) GetMethods() []string { return nil } -// TokenServiceCreateResponse is the response payload of a token create request -type TokenServiceCreateResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Token which was created - Token *Token `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` - // Secret is the body if the jwt token, should be used in api requests as bearer token - Secret string `protobuf:"bytes,2,opt,name=secret,proto3" json:"secret,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TokenServiceCreateResponse) Reset() { - *x = TokenServiceCreateResponse{} - mi := &file_fits_api_v1_token_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TokenServiceCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TokenServiceCreateResponse) ProtoMessage() {} - -func (x *TokenServiceCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_token_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TokenServiceCreateResponse.ProtoReflect.Descriptor instead. -func (*TokenServiceCreateResponse) Descriptor() ([]byte, []int) { - return file_fits_api_v1_token_proto_rawDescGZIP(), []int{3} -} - -func (x *TokenServiceCreateResponse) GetToken() *Token { - if x != nil { - return x.Token - } - return nil -} - -func (x *TokenServiceCreateResponse) GetSecret() string { - if x != nil { - return x.Secret - } - return "" -} - // TokenServiceListRequest is the request payload to list tokens type TokenServiceListRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -448,7 +292,7 @@ type TokenServiceListRequest struct { func (x *TokenServiceListRequest) Reset() { *x = TokenServiceListRequest{} - mi := &file_fits_api_v1_token_proto_msgTypes[4] + mi := &file_fits_api_v1_token_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -460,7 +304,7 @@ func (x *TokenServiceListRequest) String() string { func (*TokenServiceListRequest) ProtoMessage() {} func (x *TokenServiceListRequest) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_token_proto_msgTypes[4] + mi := &file_fits_api_v1_token_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -473,7 +317,7 @@ func (x *TokenServiceListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TokenServiceListRequest.ProtoReflect.Descriptor instead. func (*TokenServiceListRequest) Descriptor() ([]byte, []int) { - return file_fits_api_v1_token_proto_rawDescGZIP(), []int{4} + return file_fits_api_v1_token_proto_rawDescGZIP(), []int{2} } // TokenServiceListResponse is the response payload of a token list request @@ -487,7 +331,7 @@ type TokenServiceListResponse struct { func (x *TokenServiceListResponse) Reset() { *x = TokenServiceListResponse{} - mi := &file_fits_api_v1_token_proto_msgTypes[5] + mi := &file_fits_api_v1_token_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -499,7 +343,7 @@ func (x *TokenServiceListResponse) String() string { func (*TokenServiceListResponse) ProtoMessage() {} func (x *TokenServiceListResponse) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_token_proto_msgTypes[5] + mi := &file_fits_api_v1_token_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -512,7 +356,7 @@ func (x *TokenServiceListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TokenServiceListResponse.ProtoReflect.Descriptor instead. func (*TokenServiceListResponse) Descriptor() ([]byte, []int) { - return file_fits_api_v1_token_proto_rawDescGZIP(), []int{5} + return file_fits_api_v1_token_proto_rawDescGZIP(), []int{3} } func (x *TokenServiceListResponse) GetTokens() []*Token { @@ -533,7 +377,7 @@ type TokenServiceRevokeRequest struct { func (x *TokenServiceRevokeRequest) Reset() { *x = TokenServiceRevokeRequest{} - mi := &file_fits_api_v1_token_proto_msgTypes[6] + mi := &file_fits_api_v1_token_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -545,7 +389,7 @@ func (x *TokenServiceRevokeRequest) String() string { func (*TokenServiceRevokeRequest) ProtoMessage() {} func (x *TokenServiceRevokeRequest) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_token_proto_msgTypes[6] + mi := &file_fits_api_v1_token_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -558,7 +402,7 @@ func (x *TokenServiceRevokeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TokenServiceRevokeRequest.ProtoReflect.Descriptor instead. func (*TokenServiceRevokeRequest) Descriptor() ([]byte, []int) { - return file_fits_api_v1_token_proto_rawDescGZIP(), []int{6} + return file_fits_api_v1_token_proto_rawDescGZIP(), []int{4} } func (x *TokenServiceRevokeRequest) GetUuid() string { @@ -577,7 +421,7 @@ type TokenServiceRevokeResponse struct { func (x *TokenServiceRevokeResponse) Reset() { *x = TokenServiceRevokeResponse{} - mi := &file_fits_api_v1_token_proto_msgTypes[7] + mi := &file_fits_api_v1_token_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -589,7 +433,7 @@ func (x *TokenServiceRevokeResponse) String() string { func (*TokenServiceRevokeResponse) ProtoMessage() {} func (x *TokenServiceRevokeResponse) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_token_proto_msgTypes[7] + mi := &file_fits_api_v1_token_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -602,163 +446,7 @@ func (x *TokenServiceRevokeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TokenServiceRevokeResponse.ProtoReflect.Descriptor instead. func (*TokenServiceRevokeResponse) Descriptor() ([]byte, []int) { - return file_fits_api_v1_token_proto_rawDescGZIP(), []int{7} -} - -// TokenServiceUpdateRequest is the request payload of a token update request -type TokenServiceUpdateRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Uuid of the token to update - Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` - // UpdateMeta contains the timestamp and strategy to be used in this update request - // TokenUpdate is not guarded with optlock in the backend - UpdateMeta *UpdateMeta `protobuf:"bytes,2,opt,name=update_meta,json=updateMeta,proto3" json:"update_meta,omitempty"` - // Description is a user given description of this token. - Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"` - // Permissions is a list of service methods this token can be used for - Permissions []*MethodPermission `protobuf:"bytes,4,rep,name=permissions,proto3" json:"permissions,omitempty"` - // ProjectRoles associates a project id with the corresponding role of the token owner - ProjectRoles map[string]ProjectRole `protobuf:"bytes,5,rep,name=project_roles,json=projectRoles,proto3" json:"project_roles,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=fits.api.v1.ProjectRole"` - // TenantRoles associates a tenant id with the corresponding role of the token owner - TenantRoles map[string]TenantRole `protobuf:"bytes,6,rep,name=tenant_roles,json=tenantRoles,proto3" json:"tenant_roles,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=fits.api.v1.TenantRole"` - // AdminRole defines the admin role of the token owner - AdminRole *AdminRole `protobuf:"varint,7,opt,name=admin_role,json=adminRole,proto3,enum=fits.api.v1.AdminRole,oneof" json:"admin_role,omitempty"` - // Labels on this token - Labels *UpdateLabels `protobuf:"bytes,8,opt,name=labels,proto3" json:"labels,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TokenServiceUpdateRequest) Reset() { - *x = TokenServiceUpdateRequest{} - mi := &file_fits_api_v1_token_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TokenServiceUpdateRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TokenServiceUpdateRequest) ProtoMessage() {} - -func (x *TokenServiceUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_token_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TokenServiceUpdateRequest.ProtoReflect.Descriptor instead. -func (*TokenServiceUpdateRequest) Descriptor() ([]byte, []int) { - return file_fits_api_v1_token_proto_rawDescGZIP(), []int{8} -} - -func (x *TokenServiceUpdateRequest) GetUuid() string { - if x != nil { - return x.Uuid - } - return "" -} - -func (x *TokenServiceUpdateRequest) GetUpdateMeta() *UpdateMeta { - if x != nil { - return x.UpdateMeta - } - return nil -} - -func (x *TokenServiceUpdateRequest) GetDescription() string { - if x != nil && x.Description != nil { - return *x.Description - } - return "" -} - -func (x *TokenServiceUpdateRequest) GetPermissions() []*MethodPermission { - if x != nil { - return x.Permissions - } - return nil -} - -func (x *TokenServiceUpdateRequest) GetProjectRoles() map[string]ProjectRole { - if x != nil { - return x.ProjectRoles - } - return nil -} - -func (x *TokenServiceUpdateRequest) GetTenantRoles() map[string]TenantRole { - if x != nil { - return x.TenantRoles - } - return nil -} - -func (x *TokenServiceUpdateRequest) GetAdminRole() AdminRole { - if x != nil && x.AdminRole != nil { - return *x.AdminRole - } - return AdminRole_ADMIN_ROLE_UNSPECIFIED -} - -func (x *TokenServiceUpdateRequest) GetLabels() *UpdateLabels { - if x != nil { - return x.Labels - } - return nil -} - -// TokenServiceUpdateResponse is the response payload of a token update request -type TokenServiceUpdateResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Token is the updated token - Token *Token `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TokenServiceUpdateResponse) Reset() { - *x = TokenServiceUpdateResponse{} - mi := &file_fits_api_v1_token_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TokenServiceUpdateResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TokenServiceUpdateResponse) ProtoMessage() {} - -func (x *TokenServiceUpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_token_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TokenServiceUpdateResponse.ProtoReflect.Descriptor instead. -func (*TokenServiceUpdateResponse) Descriptor() ([]byte, []int) { - return file_fits_api_v1_token_proto_rawDescGZIP(), []int{9} -} - -func (x *TokenServiceUpdateResponse) GetToken() *Token { - if x != nil { - return x.Token - } - return nil + return file_fits_api_v1_token_proto_rawDescGZIP(), []int{5} } // TokenServiceGetRequest is the request payload of a token get request @@ -772,7 +460,7 @@ type TokenServiceGetRequest struct { func (x *TokenServiceGetRequest) Reset() { *x = TokenServiceGetRequest{} - mi := &file_fits_api_v1_token_proto_msgTypes[10] + mi := &file_fits_api_v1_token_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -784,7 +472,7 @@ func (x *TokenServiceGetRequest) String() string { func (*TokenServiceGetRequest) ProtoMessage() {} func (x *TokenServiceGetRequest) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_token_proto_msgTypes[10] + mi := &file_fits_api_v1_token_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -797,7 +485,7 @@ func (x *TokenServiceGetRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TokenServiceGetRequest.ProtoReflect.Descriptor instead. func (*TokenServiceGetRequest) Descriptor() ([]byte, []int) { - return file_fits_api_v1_token_proto_rawDescGZIP(), []int{10} + return file_fits_api_v1_token_proto_rawDescGZIP(), []int{6} } func (x *TokenServiceGetRequest) GetUuid() string { @@ -818,7 +506,7 @@ type TokenServiceGetResponse struct { func (x *TokenServiceGetResponse) Reset() { *x = TokenServiceGetResponse{} - mi := &file_fits_api_v1_token_proto_msgTypes[11] + mi := &file_fits_api_v1_token_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -830,7 +518,7 @@ func (x *TokenServiceGetResponse) String() string { func (*TokenServiceGetResponse) ProtoMessage() {} func (x *TokenServiceGetResponse) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_token_proto_msgTypes[11] + mi := &file_fits_api_v1_token_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -843,7 +531,7 @@ func (x *TokenServiceGetResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TokenServiceGetResponse.ProtoReflect.Descriptor instead. func (*TokenServiceGetResponse) Descriptor() ([]byte, []int) { - return file_fits_api_v1_token_proto_rawDescGZIP(), []int{11} + return file_fits_api_v1_token_proto_rawDescGZIP(), []int{7} } func (x *TokenServiceGetResponse) GetToken() *Token { @@ -853,105 +541,11 @@ func (x *TokenServiceGetResponse) GetToken() *Token { return nil } -// TokenServiceRefreshRequest is the request payload of a token refresh request -// Permissions, Roles and Expiration duration and all other properties are inherited from the calling token. -// The expiration duration will be calculated from the existing token (exp - iat) -type TokenServiceRefreshRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TokenServiceRefreshRequest) Reset() { - *x = TokenServiceRefreshRequest{} - mi := &file_fits_api_v1_token_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TokenServiceRefreshRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TokenServiceRefreshRequest) ProtoMessage() {} - -func (x *TokenServiceRefreshRequest) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_token_proto_msgTypes[12] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TokenServiceRefreshRequest.ProtoReflect.Descriptor instead. -func (*TokenServiceRefreshRequest) Descriptor() ([]byte, []int) { - return file_fits_api_v1_token_proto_rawDescGZIP(), []int{12} -} - -// TokenServiceRefreshResponse is the response payload of a token refresh request -type TokenServiceRefreshResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Token which was refreshed - Token *Token `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` - // Secret is the body if the jwt token, should be used in api requests as bearer token - Secret string `protobuf:"bytes,2,opt,name=secret,proto3" json:"secret,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TokenServiceRefreshResponse) Reset() { - *x = TokenServiceRefreshResponse{} - mi := &file_fits_api_v1_token_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TokenServiceRefreshResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TokenServiceRefreshResponse) ProtoMessage() {} - -func (x *TokenServiceRefreshResponse) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_token_proto_msgTypes[13] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TokenServiceRefreshResponse.ProtoReflect.Descriptor instead. -func (*TokenServiceRefreshResponse) Descriptor() ([]byte, []int) { - return file_fits_api_v1_token_proto_rawDescGZIP(), []int{13} -} - -func (x *TokenServiceRefreshResponse) GetToken() *Token { - if x != nil { - return x.Token - } - return nil -} - -func (x *TokenServiceRefreshResponse) GetSecret() string { - if x != nil { - return x.Secret - } - return "" -} - var File_fits_api_v1_token_proto protoreflect.FileDescriptor const file_fits_api_v1_token_proto_rawDesc = "" + "\n" + - "\x17fits/api/v1/token.proto\x12\vfits.api.v1\x1a\x1bbuf/validate/validate.proto\x1a\x18fits/api/v1/common.proto\x1a\"fits/api/v1/predefined_rules.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xd5\a\n" + + "\x17fits/api/v1/token.proto\x12\vfits.api.v1\x1a\x1bbuf/validate/validate.proto\x1a\x18fits/api/v1/common.proto\x1a\"fits/api/v1/predefined_rules.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xd5\a\n" + "\x05Token\x12\x1c\n" + "\x04uuid\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x1e\n" + "\x04user\x18\x02 \x01(\tB\n" + @@ -975,75 +569,28 @@ const file_fits_api_v1_token_proto_rawDesc = "" + "\x03key\x18\x01 \x01(\tR\x03key\x12-\n" + "\x05value\x18\x02 \x01(\x0e2\x17.fits.api.v1.TenantRoleR\x05value:\x028\x01:\x9f\x01\xbaH\x9b\x01\x1a\x98\x01\n" + "\x1btoken.permissions.usertoken\x12)token type user must not have permissions\x1aN(this.token_type == 2 && this.permissions.size() == 0) || this.token_type != 2B\r\n" + - "\v_admin_role\"\x89\x06\n" + - "\x19TokenServiceCreateRequest\x12-\n" + - "\vdescription\x18\x01 \x01(\tB\v\xbaH\br\x06ȳ\xae\xb1\x02\x01R\vdescription\x12I\n" + - "\vpermissions\x18\x02 \x03(\v2\x1d.fits.api.v1.MethodPermissionB\b\xbaH\x05\x92\x01\x02\x10dR\vpermissions\x12G\n" + - "\aexpires\x18\x03 \x01(\v2\x19.google.protobuf.DurationB\x12\xbaH\x0f\xaa\x01\f\x1a\x05\b\x81\xe7\x84\x0f2\x03\b\xd8\x04R\aexpires\x12y\n" + - "\rproject_roles\x18\x04 \x03(\v28.fits.api.v1.TokenServiceCreateRequest.ProjectRolesEntryB\x1a\xbaH\x17\x9a\x01\x14\xc0\x95\xb8\xb1\x02\x01\"\x05r\x03\xb0\x01\x01*\x05\x82\x01\x02\x10\x01R\fprojectRoles\x12x\n" + - "\ftenant_roles\x18\x05 \x03(\v27.fits.api.v1.TokenServiceCreateRequest.TenantRolesEntryB\x1c\xbaH\x19\x9a\x01\x16\xc0\x95\xb8\xb1\x02\x01\"\ar\x05\x10\x03\x18\x80\x01*\x05\x82\x01\x02\x10\x01R\vtenantRoles\x12D\n" + - "\n" + - "admin_role\x18\x06 \x01(\x0e2\x16.fits.api.v1.AdminRoleB\b\xbaH\x05\x82\x01\x02\x10\x01H\x00R\tadminRole\x88\x01\x01\x12+\n" + - "\x06labels\x18\a \x01(\v2\x13.fits.api.v1.LabelsR\x06labels\x1aY\n" + - "\x11ProjectRolesEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12.\n" + - "\x05value\x18\x02 \x01(\x0e2\x18.fits.api.v1.ProjectRoleR\x05value:\x028\x01\x1aW\n" + - "\x10TenantRolesEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12-\n" + - "\x05value\x18\x02 \x01(\x0e2\x17.fits.api.v1.TenantRoleR\x05value:\x028\x01B\r\n" + "\v_admin_role\"[\n" + "\x10MethodPermission\x12\"\n" + "\asubject\x18\x01 \x01(\tB\b\xbaH\x05r\x03\x18\x80\x02R\asubject\x12#\n" + - "\amethods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\amethods\"^\n" + - "\x1aTokenServiceCreateResponse\x12(\n" + - "\x05token\x18\x01 \x01(\v2\x12.fits.api.v1.TokenR\x05token\x12\x16\n" + - "\x06secret\x18\x02 \x01(\tR\x06secret\"\x19\n" + + "\amethods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\amethods\"\x19\n" + "\x17TokenServiceListRequest\"F\n" + "\x18TokenServiceListResponse\x12*\n" + "\x06tokens\x18\x01 \x03(\v2\x12.fits.api.v1.TokenR\x06tokens\"9\n" + "\x19TokenServiceRevokeRequest\x12\x1c\n" + "\x04uuid\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"\x1c\n" + - "\x1aTokenServiceRevokeResponse\"\xb1\x06\n" + - "\x19TokenServiceUpdateRequest\x12\x1c\n" + - "\x04uuid\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12@\n" + - "\vupdate_meta\x18\x02 \x01(\v2\x17.fits.api.v1.UpdateMetaB\x06\xbaH\x03\xc8\x01\x00R\n" + - "updateMeta\x122\n" + - "\vdescription\x18\x03 \x01(\tB\v\xbaH\br\x06ȳ\xae\xb1\x02\x01H\x00R\vdescription\x88\x01\x01\x12?\n" + - "\vpermissions\x18\x04 \x03(\v2\x1d.fits.api.v1.MethodPermissionR\vpermissions\x12y\n" + - "\rproject_roles\x18\x05 \x03(\v28.fits.api.v1.TokenServiceUpdateRequest.ProjectRolesEntryB\x1a\xbaH\x17\x9a\x01\x14\xc0\x95\xb8\xb1\x02\x01\"\x05r\x03\xb0\x01\x01*\x05\x82\x01\x02\x10\x01R\fprojectRoles\x12x\n" + - "\ftenant_roles\x18\x06 \x03(\v27.fits.api.v1.TokenServiceUpdateRequest.TenantRolesEntryB\x1c\xbaH\x19\x9a\x01\x16\xc0\x95\xb8\xb1\x02\x01\"\ar\x05\x10\x03\x18\x80\x01*\x05\x82\x01\x02\x10\x01R\vtenantRoles\x12D\n" + - "\n" + - "admin_role\x18\a \x01(\x0e2\x16.fits.api.v1.AdminRoleB\b\xbaH\x05\x82\x01\x02\x10\x01H\x01R\tadminRole\x88\x01\x01\x121\n" + - "\x06labels\x18\b \x01(\v2\x19.fits.api.v1.UpdateLabelsR\x06labels\x1aY\n" + - "\x11ProjectRolesEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12.\n" + - "\x05value\x18\x02 \x01(\x0e2\x18.fits.api.v1.ProjectRoleR\x05value:\x028\x01\x1aW\n" + - "\x10TenantRolesEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12-\n" + - "\x05value\x18\x02 \x01(\x0e2\x17.fits.api.v1.TenantRoleR\x05value:\x028\x01B\x0e\n" + - "\f_descriptionB\r\n" + - "\v_admin_role\"F\n" + - "\x1aTokenServiceUpdateResponse\x12(\n" + - "\x05token\x18\x01 \x01(\v2\x12.fits.api.v1.TokenR\x05token\"6\n" + + "\x1aTokenServiceRevokeResponse\"6\n" + "\x16TokenServiceGetRequest\x12\x1c\n" + "\x04uuid\x18\x01 \x01(\tB\b\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"C\n" + "\x17TokenServiceGetResponse\x12(\n" + - "\x05token\x18\x01 \x01(\v2\x12.fits.api.v1.TokenR\x05token\"\x1c\n" + - "\x1aTokenServiceRefreshRequest\"_\n" + - "\x1bTokenServiceRefreshResponse\x12(\n" + - "\x05token\x18\x01 \x01(\v2\x12.fits.api.v1.TokenR\x05token\x12\x16\n" + - "\x06secret\x18\x02 \x01(\tR\x06secret*P\n" + + "\x05token\x18\x01 \x01(\v2\x12.fits.api.v1.TokenR\x05token*P\n" + "\tTokenType\x12\x1a\n" + "\x16TOKEN_TYPE_UNSPECIFIED\x10\x00\x12\x12\n" + "\x0eTOKEN_TYPE_API\x10\x01\x12\x13\n" + - "\x0fTOKEN_TYPE_USER\x10\x022\xe0\x04\n" + + "\x0fTOKEN_TYPE_USER\x10\x022\xae\x02\n" + "\fTokenService\x12Z\n" + - "\x03Get\x12#.fits.api.v1.TokenServiceGetRequest\x1a$.fits.api.v1.TokenServiceGetResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12c\n" + - "\x06Create\x12&.fits.api.v1.TokenServiceCreateRequest\x1a'.fits.api.v1.TokenServiceCreateResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12c\n" + - "\x06Update\x12&.fits.api.v1.TokenServiceUpdateRequest\x1a'.fits.api.v1.TokenServiceUpdateResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12]\n" + + "\x03Get\x12#.fits.api.v1.TokenServiceGetRequest\x1a$.fits.api.v1.TokenServiceGetResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12]\n" + "\x04List\x12$.fits.api.v1.TokenServiceListRequest\x1a%.fits.api.v1.TokenServiceListResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12c\n" + - "\x06Revoke\x12&.fits.api.v1.TokenServiceRevokeRequest\x1a'.fits.api.v1.TokenServiceRevokeResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12f\n" + - "\aRefresh\x12'.fits.api.v1.TokenServiceRefreshRequest\x1a(.fits.api.v1.TokenServiceRefreshResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01B\x96\x01\n" + + "\x06Revoke\x12&.fits.api.v1.TokenServiceRevokeRequest\x1a'.fits.api.v1.TokenServiceRevokeResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01B\x96\x01\n" + "\x0fcom.fits.api.v1B\n" + "TokenProtoP\x01Z)github.com/fi-ts/api/go/fits/api/v1;apiv1\xa2\x02\x03FAX\xaa\x02\vFits.Api.V1\xca\x02\vFits\\Api\\V1\xe2\x02\x17Fits\\Api\\V1\\GPBMetadata\xea\x02\rFits::Api::V1b\x06proto3" @@ -1060,88 +607,49 @@ func file_fits_api_v1_token_proto_rawDescGZIP() []byte { } var file_fits_api_v1_token_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_fits_api_v1_token_proto_msgTypes = make([]protoimpl.MessageInfo, 20) +var file_fits_api_v1_token_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_fits_api_v1_token_proto_goTypes = []any{ - (TokenType)(0), // 0: fits.api.v1.TokenType - (*Token)(nil), // 1: fits.api.v1.Token - (*TokenServiceCreateRequest)(nil), // 2: fits.api.v1.TokenServiceCreateRequest - (*MethodPermission)(nil), // 3: fits.api.v1.MethodPermission - (*TokenServiceCreateResponse)(nil), // 4: fits.api.v1.TokenServiceCreateResponse - (*TokenServiceListRequest)(nil), // 5: fits.api.v1.TokenServiceListRequest - (*TokenServiceListResponse)(nil), // 6: fits.api.v1.TokenServiceListResponse - (*TokenServiceRevokeRequest)(nil), // 7: fits.api.v1.TokenServiceRevokeRequest - (*TokenServiceRevokeResponse)(nil), // 8: fits.api.v1.TokenServiceRevokeResponse - (*TokenServiceUpdateRequest)(nil), // 9: fits.api.v1.TokenServiceUpdateRequest - (*TokenServiceUpdateResponse)(nil), // 10: fits.api.v1.TokenServiceUpdateResponse - (*TokenServiceGetRequest)(nil), // 11: fits.api.v1.TokenServiceGetRequest - (*TokenServiceGetResponse)(nil), // 12: fits.api.v1.TokenServiceGetResponse - (*TokenServiceRefreshRequest)(nil), // 13: fits.api.v1.TokenServiceRefreshRequest - (*TokenServiceRefreshResponse)(nil), // 14: fits.api.v1.TokenServiceRefreshResponse - nil, // 15: fits.api.v1.Token.ProjectRolesEntry - nil, // 16: fits.api.v1.Token.TenantRolesEntry - nil, // 17: fits.api.v1.TokenServiceCreateRequest.ProjectRolesEntry - nil, // 18: fits.api.v1.TokenServiceCreateRequest.TenantRolesEntry - nil, // 19: fits.api.v1.TokenServiceUpdateRequest.ProjectRolesEntry - nil, // 20: fits.api.v1.TokenServiceUpdateRequest.TenantRolesEntry - (*Meta)(nil), // 21: fits.api.v1.Meta - (*timestamppb.Timestamp)(nil), // 22: google.protobuf.Timestamp - (AdminRole)(0), // 23: fits.api.v1.AdminRole - (*durationpb.Duration)(nil), // 24: google.protobuf.Duration - (*Labels)(nil), // 25: fits.api.v1.Labels - (*UpdateMeta)(nil), // 26: fits.api.v1.UpdateMeta - (*UpdateLabels)(nil), // 27: fits.api.v1.UpdateLabels - (ProjectRole)(0), // 28: fits.api.v1.ProjectRole - (TenantRole)(0), // 29: fits.api.v1.TenantRole + (TokenType)(0), // 0: fits.api.v1.TokenType + (*Token)(nil), // 1: fits.api.v1.Token + (*MethodPermission)(nil), // 2: fits.api.v1.MethodPermission + (*TokenServiceListRequest)(nil), // 3: fits.api.v1.TokenServiceListRequest + (*TokenServiceListResponse)(nil), // 4: fits.api.v1.TokenServiceListResponse + (*TokenServiceRevokeRequest)(nil), // 5: fits.api.v1.TokenServiceRevokeRequest + (*TokenServiceRevokeResponse)(nil), // 6: fits.api.v1.TokenServiceRevokeResponse + (*TokenServiceGetRequest)(nil), // 7: fits.api.v1.TokenServiceGetRequest + (*TokenServiceGetResponse)(nil), // 8: fits.api.v1.TokenServiceGetResponse + nil, // 9: fits.api.v1.Token.ProjectRolesEntry + nil, // 10: fits.api.v1.Token.TenantRolesEntry + (*Meta)(nil), // 11: fits.api.v1.Meta + (*timestamppb.Timestamp)(nil), // 12: google.protobuf.Timestamp + (AdminRole)(0), // 13: fits.api.v1.AdminRole + (ProjectRole)(0), // 14: fits.api.v1.ProjectRole + (TenantRole)(0), // 15: fits.api.v1.TenantRole } var file_fits_api_v1_token_proto_depIdxs = []int32{ - 21, // 0: fits.api.v1.Token.meta:type_name -> fits.api.v1.Meta - 3, // 1: fits.api.v1.Token.permissions:type_name -> fits.api.v1.MethodPermission - 22, // 2: fits.api.v1.Token.expires:type_name -> google.protobuf.Timestamp - 22, // 3: fits.api.v1.Token.issued_at:type_name -> google.protobuf.Timestamp + 11, // 0: fits.api.v1.Token.meta:type_name -> fits.api.v1.Meta + 2, // 1: fits.api.v1.Token.permissions:type_name -> fits.api.v1.MethodPermission + 12, // 2: fits.api.v1.Token.expires:type_name -> google.protobuf.Timestamp + 12, // 3: fits.api.v1.Token.issued_at:type_name -> google.protobuf.Timestamp 0, // 4: fits.api.v1.Token.token_type:type_name -> fits.api.v1.TokenType - 15, // 5: fits.api.v1.Token.project_roles:type_name -> fits.api.v1.Token.ProjectRolesEntry - 16, // 6: fits.api.v1.Token.tenant_roles:type_name -> fits.api.v1.Token.TenantRolesEntry - 23, // 7: fits.api.v1.Token.admin_role:type_name -> fits.api.v1.AdminRole - 3, // 8: fits.api.v1.TokenServiceCreateRequest.permissions:type_name -> fits.api.v1.MethodPermission - 24, // 9: fits.api.v1.TokenServiceCreateRequest.expires:type_name -> google.protobuf.Duration - 17, // 10: fits.api.v1.TokenServiceCreateRequest.project_roles:type_name -> fits.api.v1.TokenServiceCreateRequest.ProjectRolesEntry - 18, // 11: fits.api.v1.TokenServiceCreateRequest.tenant_roles:type_name -> fits.api.v1.TokenServiceCreateRequest.TenantRolesEntry - 23, // 12: fits.api.v1.TokenServiceCreateRequest.admin_role:type_name -> fits.api.v1.AdminRole - 25, // 13: fits.api.v1.TokenServiceCreateRequest.labels:type_name -> fits.api.v1.Labels - 1, // 14: fits.api.v1.TokenServiceCreateResponse.token:type_name -> fits.api.v1.Token - 1, // 15: fits.api.v1.TokenServiceListResponse.tokens:type_name -> fits.api.v1.Token - 26, // 16: fits.api.v1.TokenServiceUpdateRequest.update_meta:type_name -> fits.api.v1.UpdateMeta - 3, // 17: fits.api.v1.TokenServiceUpdateRequest.permissions:type_name -> fits.api.v1.MethodPermission - 19, // 18: fits.api.v1.TokenServiceUpdateRequest.project_roles:type_name -> fits.api.v1.TokenServiceUpdateRequest.ProjectRolesEntry - 20, // 19: fits.api.v1.TokenServiceUpdateRequest.tenant_roles:type_name -> fits.api.v1.TokenServiceUpdateRequest.TenantRolesEntry - 23, // 20: fits.api.v1.TokenServiceUpdateRequest.admin_role:type_name -> fits.api.v1.AdminRole - 27, // 21: fits.api.v1.TokenServiceUpdateRequest.labels:type_name -> fits.api.v1.UpdateLabels - 1, // 22: fits.api.v1.TokenServiceUpdateResponse.token:type_name -> fits.api.v1.Token - 1, // 23: fits.api.v1.TokenServiceGetResponse.token:type_name -> fits.api.v1.Token - 1, // 24: fits.api.v1.TokenServiceRefreshResponse.token:type_name -> fits.api.v1.Token - 28, // 25: fits.api.v1.Token.ProjectRolesEntry.value:type_name -> fits.api.v1.ProjectRole - 29, // 26: fits.api.v1.Token.TenantRolesEntry.value:type_name -> fits.api.v1.TenantRole - 28, // 27: fits.api.v1.TokenServiceCreateRequest.ProjectRolesEntry.value:type_name -> fits.api.v1.ProjectRole - 29, // 28: fits.api.v1.TokenServiceCreateRequest.TenantRolesEntry.value:type_name -> fits.api.v1.TenantRole - 28, // 29: fits.api.v1.TokenServiceUpdateRequest.ProjectRolesEntry.value:type_name -> fits.api.v1.ProjectRole - 29, // 30: fits.api.v1.TokenServiceUpdateRequest.TenantRolesEntry.value:type_name -> fits.api.v1.TenantRole - 11, // 31: fits.api.v1.TokenService.Get:input_type -> fits.api.v1.TokenServiceGetRequest - 2, // 32: fits.api.v1.TokenService.Create:input_type -> fits.api.v1.TokenServiceCreateRequest - 9, // 33: fits.api.v1.TokenService.Update:input_type -> fits.api.v1.TokenServiceUpdateRequest - 5, // 34: fits.api.v1.TokenService.List:input_type -> fits.api.v1.TokenServiceListRequest - 7, // 35: fits.api.v1.TokenService.Revoke:input_type -> fits.api.v1.TokenServiceRevokeRequest - 13, // 36: fits.api.v1.TokenService.Refresh:input_type -> fits.api.v1.TokenServiceRefreshRequest - 12, // 37: fits.api.v1.TokenService.Get:output_type -> fits.api.v1.TokenServiceGetResponse - 4, // 38: fits.api.v1.TokenService.Create:output_type -> fits.api.v1.TokenServiceCreateResponse - 10, // 39: fits.api.v1.TokenService.Update:output_type -> fits.api.v1.TokenServiceUpdateResponse - 6, // 40: fits.api.v1.TokenService.List:output_type -> fits.api.v1.TokenServiceListResponse - 8, // 41: fits.api.v1.TokenService.Revoke:output_type -> fits.api.v1.TokenServiceRevokeResponse - 14, // 42: fits.api.v1.TokenService.Refresh:output_type -> fits.api.v1.TokenServiceRefreshResponse - 37, // [37:43] is the sub-list for method output_type - 31, // [31:37] is the sub-list for method input_type - 31, // [31:31] is the sub-list for extension type_name - 31, // [31:31] is the sub-list for extension extendee - 0, // [0:31] is the sub-list for field type_name + 9, // 5: fits.api.v1.Token.project_roles:type_name -> fits.api.v1.Token.ProjectRolesEntry + 10, // 6: fits.api.v1.Token.tenant_roles:type_name -> fits.api.v1.Token.TenantRolesEntry + 13, // 7: fits.api.v1.Token.admin_role:type_name -> fits.api.v1.AdminRole + 1, // 8: fits.api.v1.TokenServiceListResponse.tokens:type_name -> fits.api.v1.Token + 1, // 9: fits.api.v1.TokenServiceGetResponse.token:type_name -> fits.api.v1.Token + 14, // 10: fits.api.v1.Token.ProjectRolesEntry.value:type_name -> fits.api.v1.ProjectRole + 15, // 11: fits.api.v1.Token.TenantRolesEntry.value:type_name -> fits.api.v1.TenantRole + 7, // 12: fits.api.v1.TokenService.Get:input_type -> fits.api.v1.TokenServiceGetRequest + 3, // 13: fits.api.v1.TokenService.List:input_type -> fits.api.v1.TokenServiceListRequest + 5, // 14: fits.api.v1.TokenService.Revoke:input_type -> fits.api.v1.TokenServiceRevokeRequest + 8, // 15: fits.api.v1.TokenService.Get:output_type -> fits.api.v1.TokenServiceGetResponse + 4, // 16: fits.api.v1.TokenService.List:output_type -> fits.api.v1.TokenServiceListResponse + 6, // 17: fits.api.v1.TokenService.Revoke:output_type -> fits.api.v1.TokenServiceRevokeResponse + 15, // [15:18] is the sub-list for method output_type + 12, // [12:15] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_fits_api_v1_token_proto_init() } @@ -1152,15 +660,13 @@ func file_fits_api_v1_token_proto_init() { file_fits_api_v1_common_proto_init() file_fits_api_v1_predefined_rules_proto_init() file_fits_api_v1_token_proto_msgTypes[0].OneofWrappers = []any{} - file_fits_api_v1_token_proto_msgTypes[1].OneofWrappers = []any{} - file_fits_api_v1_token_proto_msgTypes[8].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_fits_api_v1_token_proto_rawDesc), len(file_fits_api_v1_token_proto_rawDesc)), NumEnums: 1, - NumMessages: 20, + NumMessages: 10, NumExtensions: 0, NumServices: 1, }, diff --git a/go/permissions/permissions_test.go b/go/permissions/permissions_test.go index 6eac38b..f86fba9 100644 --- a/go/permissions/permissions_test.go +++ b/go/permissions/permissions_test.go @@ -11,6 +11,6 @@ func TestGetServicePermissions(t *testing.T) { require.NotNil(t, perms) // TODO more coverage require.Contains(t, perms.Methods, "/fits.api.v1.IPService/List") - require.Contains(t, perms.Visibility.Self, "/fits.api.v1.TokenService/Create") + require.Contains(t, perms.Visibility.Self, "/fits.api.v1.TokenService/Get") require.Contains(t, perms.Visibility.Project, "/fits.api.v1.IPService/List") } diff --git a/go/permissions/servicepermissions.go b/go/permissions/servicepermissions.go index 0a5bb6d..8195e64 100755 --- a/go/permissions/servicepermissions.go +++ b/go/permissions/servicepermissions.go @@ -88,12 +88,9 @@ func GetServicePermissions() *ServicePermissions { "/fits.api.v1.TenantService/Get": {}, "/fits.api.v1.TenantService/List": {}, "/fits.api.v1.TenantService/Update": {}, - "/fits.api.v1.TokenService/Create": {}, "/fits.api.v1.TokenService/Get": {}, "/fits.api.v1.TokenService/List": {}, - "/fits.api.v1.TokenService/Refresh": {}, "/fits.api.v1.TokenService/Revoke": {}, - "/fits.api.v1.TokenService/Update": {}, "/fits.api.v1.VersionService/Get": {}, "/grpc.reflection.v1.ServerReflection/ServerReflectionInfo": {}, "/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo": {}, @@ -111,12 +108,9 @@ func GetServicePermissions() *ServicePermissions { "/fits.api.v1.ProjectService/List": true, "/fits.api.v1.TenantService/Create": true, "/fits.api.v1.TenantService/List": true, - "/fits.api.v1.TokenService/Create": true, "/fits.api.v1.TokenService/Get": true, "/fits.api.v1.TokenService/List": true, - "/fits.api.v1.TokenService/Refresh": true, "/fits.api.v1.TokenService/Revoke": true, - "/fits.api.v1.TokenService/Update": true, }, Admin: map[string]bool{}, Tenant: map[string]bool{ @@ -155,12 +149,9 @@ func GetServicePermissions() *ServicePermissions { "/fits.api.v1.TenantService/Get": false, "/fits.api.v1.TenantService/List": false, "/fits.api.v1.TenantService/Update": true, - "/fits.api.v1.TokenService/Create": true, "/fits.api.v1.TokenService/Get": true, "/fits.api.v1.TokenService/List": true, - "/fits.api.v1.TokenService/Refresh": true, "/fits.api.v1.TokenService/Revoke": true, - "/fits.api.v1.TokenService/Update": true, "/fits.api.v1.VersionService/Get": false, }, } diff --git a/js/fits/api/v1/token_pb.d.ts b/js/fits/api/v1/token_pb.d.ts index 1be49ab..ca72528 100644 --- a/js/fits/api/v1/token_pb.d.ts +++ b/js/fits/api/v1/token_pb.d.ts @@ -1,6 +1,6 @@ import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; -import type { AdminRole, Labels, Meta, ProjectRole, TenantRole, UpdateLabels, UpdateMeta } from "./common_pb"; -import type { Duration, Timestamp } from "@bufbuild/protobuf/wkt"; +import type { AdminRole, Meta, ProjectRole, TenantRole } from "./common_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file fits/api/v1/token.proto. @@ -99,64 +99,6 @@ export type Token = Message<"fits.api.v1.Token"> & { * Use `create(TokenSchema)` to create a new message. */ export declare const TokenSchema: GenMessage; -/** - * TokenServiceCreateRequest is the request payload to create a token - * - * @generated from message fits.api.v1.TokenServiceCreateRequest - */ -export type TokenServiceCreateRequest = Message<"fits.api.v1.TokenServiceCreateRequest"> & { - /** - * Description of the token - * - * @generated from field: string description = 1; - */ - description: string; - /** - * Permissions is a list of service methods this token can be used for - * - * @generated from field: repeated fits.api.v1.MethodPermission permissions = 2; - */ - permissions: MethodPermission[]; - /** - * Expires gives the duration since now, after which this token can not be used anymore - * - * @generated from field: google.protobuf.Duration expires = 3; - */ - expires?: Duration | undefined; - /** - * ProjectRoles associates a project id with the corresponding role of the token owner - * - * @generated from field: map project_roles = 4; - */ - projectRoles: { - [key: string]: ProjectRole; - }; - /** - * TenantRoles_associates a tenant id with the corresponding role of the token owner - * - * @generated from field: map tenant_roles = 5; - */ - tenantRoles: { - [key: string]: TenantRole; - }; - /** - * AdminRole defines the admin role of the token owner - * - * @generated from field: optional fits.api.v1.AdminRole admin_role = 6; - */ - adminRole?: AdminRole | undefined; - /** - * Labels on this token - * - * @generated from field: fits.api.v1.Labels labels = 7; - */ - labels?: Labels | undefined; -}; -/** - * Describes the message fits.api.v1.TokenServiceCreateRequest. - * Use `create(TokenServiceCreateRequestSchema)` to create a new message. - */ -export declare const TokenServiceCreateRequestSchema: GenMessage; /** * MethodPermission is a mapping from a subject/project to a service method * @@ -186,30 +128,6 @@ export type MethodPermission = Message<"fits.api.v1.MethodPermission"> & { * Use `create(MethodPermissionSchema)` to create a new message. */ export declare const MethodPermissionSchema: GenMessage; -/** - * TokenServiceCreateResponse is the response payload of a token create request - * - * @generated from message fits.api.v1.TokenServiceCreateResponse - */ -export type TokenServiceCreateResponse = Message<"fits.api.v1.TokenServiceCreateResponse"> & { - /** - * Token which was created - * - * @generated from field: fits.api.v1.Token token = 1; - */ - token?: Token | undefined; - /** - * Secret is the body if the jwt token, should be used in api requests as bearer token - * - * @generated from field: string secret = 2; - */ - secret: string; -}; -/** - * Describes the message fits.api.v1.TokenServiceCreateResponse. - * Use `create(TokenServiceCreateResponseSchema)` to create a new message. - */ -export declare const TokenServiceCreateResponseSchema: GenMessage; /** * TokenServiceListRequest is the request payload to list tokens * @@ -268,89 +186,6 @@ export type TokenServiceRevokeResponse = Message<"fits.api.v1.TokenServiceRevoke * Use `create(TokenServiceRevokeResponseSchema)` to create a new message. */ export declare const TokenServiceRevokeResponseSchema: GenMessage; -/** - * TokenServiceUpdateRequest is the request payload of a token update request - * - * @generated from message fits.api.v1.TokenServiceUpdateRequest - */ -export type TokenServiceUpdateRequest = Message<"fits.api.v1.TokenServiceUpdateRequest"> & { - /** - * Uuid of the token to update - * - * @generated from field: string uuid = 1; - */ - uuid: string; - /** - * UpdateMeta contains the timestamp and strategy to be used in this update request - * TokenUpdate is not guarded with optlock in the backend - * - * @generated from field: fits.api.v1.UpdateMeta update_meta = 2; - */ - updateMeta?: UpdateMeta | undefined; - /** - * Description is a user given description of this token. - * - * @generated from field: optional string description = 3; - */ - description?: string | undefined; - /** - * Permissions is a list of service methods this token can be used for - * - * @generated from field: repeated fits.api.v1.MethodPermission permissions = 4; - */ - permissions: MethodPermission[]; - /** - * ProjectRoles associates a project id with the corresponding role of the token owner - * - * @generated from field: map project_roles = 5; - */ - projectRoles: { - [key: string]: ProjectRole; - }; - /** - * TenantRoles associates a tenant id with the corresponding role of the token owner - * - * @generated from field: map tenant_roles = 6; - */ - tenantRoles: { - [key: string]: TenantRole; - }; - /** - * AdminRole defines the admin role of the token owner - * - * @generated from field: optional fits.api.v1.AdminRole admin_role = 7; - */ - adminRole?: AdminRole | undefined; - /** - * Labels on this token - * - * @generated from field: fits.api.v1.UpdateLabels labels = 8; - */ - labels?: UpdateLabels | undefined; -}; -/** - * Describes the message fits.api.v1.TokenServiceUpdateRequest. - * Use `create(TokenServiceUpdateRequestSchema)` to create a new message. - */ -export declare const TokenServiceUpdateRequestSchema: GenMessage; -/** - * TokenServiceUpdateResponse is the response payload of a token update request - * - * @generated from message fits.api.v1.TokenServiceUpdateResponse - */ -export type TokenServiceUpdateResponse = Message<"fits.api.v1.TokenServiceUpdateResponse"> & { - /** - * Token is the updated token - * - * @generated from field: fits.api.v1.Token token = 1; - */ - token?: Token | undefined; -}; -/** - * Describes the message fits.api.v1.TokenServiceUpdateResponse. - * Use `create(TokenServiceUpdateResponseSchema)` to create a new message. - */ -export declare const TokenServiceUpdateResponseSchema: GenMessage; /** * TokenServiceGetRequest is the request payload of a token get request * @@ -387,43 +222,6 @@ export type TokenServiceGetResponse = Message<"fits.api.v1.TokenServiceGetRespon * Use `create(TokenServiceGetResponseSchema)` to create a new message. */ export declare const TokenServiceGetResponseSchema: GenMessage; -/** - * TokenServiceRefreshRequest is the request payload of a token refresh request - * Permissions, Roles and Expiration duration and all other properties are inherited from the calling token. - * The expiration duration will be calculated from the existing token (exp - iat) - * - * @generated from message fits.api.v1.TokenServiceRefreshRequest - */ -export type TokenServiceRefreshRequest = Message<"fits.api.v1.TokenServiceRefreshRequest"> & {}; -/** - * Describes the message fits.api.v1.TokenServiceRefreshRequest. - * Use `create(TokenServiceRefreshRequestSchema)` to create a new message. - */ -export declare const TokenServiceRefreshRequestSchema: GenMessage; -/** - * TokenServiceRefreshResponse is the response payload of a token refresh request - * - * @generated from message fits.api.v1.TokenServiceRefreshResponse - */ -export type TokenServiceRefreshResponse = Message<"fits.api.v1.TokenServiceRefreshResponse"> & { - /** - * Token which was refreshed - * - * @generated from field: fits.api.v1.Token token = 1; - */ - token?: Token | undefined; - /** - * Secret is the body if the jwt token, should be used in api requests as bearer token - * - * @generated from field: string secret = 2; - */ - secret: string; -}; -/** - * Describes the message fits.api.v1.TokenServiceRefreshResponse. - * Use `create(TokenServiceRefreshResponseSchema)` to create a new message. - */ -export declare const TokenServiceRefreshResponseSchema: GenMessage; /** * TokenType specifies different use cases of tokens * @@ -469,26 +267,6 @@ export declare const TokenService: GenService<{ input: typeof TokenServiceGetRequestSchema; output: typeof TokenServiceGetResponseSchema; }; - /** - * Creates a token to authenticate against the platform, the secret will be only visible in the response. - * - * @generated from rpc fits.api.v1.TokenService.Create - */ - create: { - methodKind: "unary"; - input: typeof TokenServiceCreateRequestSchema; - output: typeof TokenServiceCreateResponseSchema; - }; - /** - * Updates a token. - * - * @generated from rpc fits.api.v1.TokenService.Update - */ - update: { - methodKind: "unary"; - input: typeof TokenServiceUpdateRequestSchema; - output: typeof TokenServiceUpdateResponseSchema; - }; /** * Returns the list of all user tokens. * @@ -509,14 +287,4 @@ export declare const TokenService: GenService<{ input: typeof TokenServiceRevokeRequestSchema; output: typeof TokenServiceRevokeResponseSchema; }; - /** - * Refreshes a token, this will create a new token with the exact same permissions as the calling token contains. - * - * @generated from rpc fits.api.v1.TokenService.Refresh - */ - refresh: { - methodKind: "unary"; - input: typeof TokenServiceRefreshRequestSchema; - output: typeof TokenServiceRefreshResponseSchema; - }; }>; diff --git a/js/fits/api/v1/token_pb.js b/js/fits/api/v1/token_pb.js index a2bcf16..4dd618b 100644 --- a/js/fits/api/v1/token_pb.js +++ b/js/fits/api/v1/token_pb.js @@ -5,81 +5,51 @@ import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; import { file_fits_api_v1_common } from "./common_pb"; import { file_fits_api_v1_predefined_rules } from "./predefined_rules_pb"; -import { file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; /** * Describes the file fits/api/v1/token.proto. */ -export const file_fits_api_v1_token = /*@__PURE__*/ fileDesc("ChdmaXRzL2FwaS92MS90b2tlbi5wcm90bxILZml0cy5hcGkudjEizQYKBVRva2VuEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhgKBHVzZXIYAiABKAlCCrpIB3IFEAIYgAQSHwoEbWV0YRgDIAEoCzIRLmZpdHMuYXBpLnYxLk1ldGESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEj0KC3Blcm1pc3Npb25zGAUgAygLMh0uZml0cy5hcGkudjEuTWV0aG9kUGVybWlzc2lvbkIJukgGkgEDEPQDEisKB2V4cGlyZXMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCWlzc3VlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoKdG9rZW5fdHlwZRgIIAEoDjIWLmZpdHMuYXBpLnYxLlRva2VuVHlwZUIIukgFggECEAESOwoNcHJvamVjdF9yb2xlcxgJIAMoCzIkLmZpdHMuYXBpLnYxLlRva2VuLlByb2plY3RSb2xlc0VudHJ5EjkKDHRlbmFudF9yb2xlcxgKIAMoCzIjLmZpdHMuYXBpLnYxLlRva2VuLlRlbmFudFJvbGVzRW50cnkSOQoKYWRtaW5fcm9sZRgLIAEoDjIWLmZpdHMuYXBpLnYxLkFkbWluUm9sZUIIukgFggECEAFIAIgBARpNChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJwoFdmFsdWUYAiABKA4yGC5maXRzLmFwaS52MS5Qcm9qZWN0Um9sZToCOAEaSwoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKA4yFy5maXRzLmFwaS52MS5UZW5hbnRSb2xlOgI4ATqfAbpImwEamAEKG3Rva2VuLnBlcm1pc3Npb25zLnVzZXJ0b2tlbhIpdG9rZW4gdHlwZSB1c2VyIG11c3Qgbm90IGhhdmUgcGVybWlzc2lvbnMaTih0aGlzLnRva2VuX3R5cGUgPT0gMiAmJiB0aGlzLnBlcm1pc3Npb25zLnNpemUoKSA9PSAwKSB8fCB0aGlzLnRva2VuX3R5cGUgIT0gMkINCgtfYWRtaW5fcm9sZSKgBQoZVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdBIgCgtkZXNjcmlwdGlvbhgBIAEoCUILukgIcgbIs66xAgESPAoLcGVybWlzc2lvbnMYAiADKAsyHS5maXRzLmFwaS52MS5NZXRob2RQZXJtaXNzaW9uQgi6SAWSAQIQZBI+CgdleHBpcmVzGAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQhK6SA+qAQwaBQiB54QPMgMI2AQSawoNcHJvamVjdF9yb2xlcxgEIAMoCzI4LmZpdHMuYXBpLnYxLlRva2VuU2VydmljZUNyZWF0ZVJlcXVlc3QuUHJvamVjdFJvbGVzRW50cnlCGrpIF5oBFMCVuLECASIFcgOwAQEqBYIBAhABEmsKDHRlbmFudF9yb2xlcxgFIAMoCzI3LmZpdHMuYXBpLnYxLlRva2VuU2VydmljZUNyZWF0ZVJlcXVlc3QuVGVuYW50Um9sZXNFbnRyeUIcukgZmgEWwJW4sQIBIgdyBRADGIABKgWCAQIQARI5CgphZG1pbl9yb2xlGAYgASgOMhYuZml0cy5hcGkudjEuQWRtaW5Sb2xlQgi6SAWCAQIQAUgAiAEBEiMKBmxhYmVscxgHIAEoCzITLmZpdHMuYXBpLnYxLkxhYmVscxpNChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJwoFdmFsdWUYAiABKA4yGC5maXRzLmFwaS52MS5Qcm9qZWN0Um9sZToCOAEaSwoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKA4yFy5maXRzLmFwaS52MS5UZW5hbnRSb2xlOgI4AUINCgtfYWRtaW5fcm9sZSJJChBNZXRob2RQZXJtaXNzaW9uEhkKB3N1YmplY3QYASABKAlCCLpIBXIDGIACEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyJPChpUb2tlblNlcnZpY2VDcmVhdGVSZXNwb25zZRIhCgV0b2tlbhgBIAEoCzISLmZpdHMuYXBpLnYxLlRva2VuEg4KBnNlY3JldBgCIAEoCSIZChdUb2tlblNlcnZpY2VMaXN0UmVxdWVzdCI+ChhUb2tlblNlcnZpY2VMaXN0UmVzcG9uc2USIgoGdG9rZW5zGAEgAygLMhIuZml0cy5hcGkudjEuVG9rZW4iMwoZVG9rZW5TZXJ2aWNlUmV2b2tlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASIcChpUb2tlblNlcnZpY2VSZXZva2VSZXNwb25zZSK/BQoZVG9rZW5TZXJ2aWNlVXBkYXRlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARI0Cgt1cGRhdGVfbWV0YRgCIAEoCzIXLmZpdHMuYXBpLnYxLlVwZGF0ZU1ldGFCBrpIA8gBABIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAIgBARIyCgtwZXJtaXNzaW9ucxgEIAMoCzIdLmZpdHMuYXBpLnYxLk1ldGhvZFBlcm1pc3Npb24SawoNcHJvamVjdF9yb2xlcxgFIAMoCzI4LmZpdHMuYXBpLnYxLlRva2VuU2VydmljZVVwZGF0ZVJlcXVlc3QuUHJvamVjdFJvbGVzRW50cnlCGrpIF5oBFMCVuLECASIFcgOwAQEqBYIBAhABEmsKDHRlbmFudF9yb2xlcxgGIAMoCzI3LmZpdHMuYXBpLnYxLlRva2VuU2VydmljZVVwZGF0ZVJlcXVlc3QuVGVuYW50Um9sZXNFbnRyeUIcukgZmgEWwJW4sQIBIgdyBRADGIABKgWCAQIQARI5CgphZG1pbl9yb2xlGAcgASgOMhYuZml0cy5hcGkudjEuQWRtaW5Sb2xlQgi6SAWCAQIQAUgBiAEBEikKBmxhYmVscxgIIAEoCzIZLmZpdHMuYXBpLnYxLlVwZGF0ZUxhYmVscxpNChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJwoFdmFsdWUYAiABKA4yGC5maXRzLmFwaS52MS5Qcm9qZWN0Um9sZToCOAEaSwoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKA4yFy5maXRzLmFwaS52MS5UZW5hbnRSb2xlOgI4AUIOCgxfZGVzY3JpcHRpb25CDQoLX2FkbWluX3JvbGUiPwoaVG9rZW5TZXJ2aWNlVXBkYXRlUmVzcG9uc2USIQoFdG9rZW4YASABKAsyEi5maXRzLmFwaS52MS5Ub2tlbiIwChZUb2tlblNlcnZpY2VHZXRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBIjwKF1Rva2VuU2VydmljZUdldFJlc3BvbnNlEiEKBXRva2VuGAEgASgLMhIuZml0cy5hcGkudjEuVG9rZW4iHAoaVG9rZW5TZXJ2aWNlUmVmcmVzaFJlcXVlc3QiUAobVG9rZW5TZXJ2aWNlUmVmcmVzaFJlc3BvbnNlEiEKBXRva2VuGAEgASgLMhIuZml0cy5hcGkudjEuVG9rZW4SDgoGc2VjcmV0GAIgASgJKlAKCVRva2VuVHlwZRIaChZUT0tFTl9UWVBFX1VOU1BFQ0lGSUVEEAASEgoOVE9LRU5fVFlQRV9BUEkQARITCg9UT0tFTl9UWVBFX1VTRVIQAjLgBAoMVG9rZW5TZXJ2aWNlEloKA0dldBIjLmZpdHMuYXBpLnYxLlRva2VuU2VydmljZUdldFJlcXVlc3QaJC5maXRzLmFwaS52MS5Ub2tlblNlcnZpY2VHZXRSZXNwb25zZSII2PMYAuDzGAESYwoGQ3JlYXRlEiYuZml0cy5hcGkudjEuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdBonLmZpdHMuYXBpLnYxLlRva2VuU2VydmljZUNyZWF0ZVJlc3BvbnNlIgjY8xgC4PMYARJjCgZVcGRhdGUSJi5maXRzLmFwaS52MS5Ub2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0GicuZml0cy5hcGkudjEuVG9rZW5TZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCNjzGALg8xgBEl0KBExpc3QSJC5maXRzLmFwaS52MS5Ub2tlblNlcnZpY2VMaXN0UmVxdWVzdBolLmZpdHMuYXBpLnYxLlRva2VuU2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAESYwoGUmV2b2tlEiYuZml0cy5hcGkudjEuVG9rZW5TZXJ2aWNlUmV2b2tlUmVxdWVzdBonLmZpdHMuYXBpLnYxLlRva2VuU2VydmljZVJldm9rZVJlc3BvbnNlIgjY8xgC4PMYARJmCgdSZWZyZXNoEicuZml0cy5hcGkudjEuVG9rZW5TZXJ2aWNlUmVmcmVzaFJlcXVlc3QaKC5maXRzLmFwaS52MS5Ub2tlblNlcnZpY2VSZWZyZXNoUmVzcG9uc2UiCNjzGALg8xgBQpYBCg9jb20uZml0cy5hcGkudjFCClRva2VuUHJvdG9QAVopZ2l0aHViLmNvbS9maS10cy9hcGkvZ28vZml0cy9hcGkvdjE7YXBpdjGiAgNGQViqAgtGaXRzLkFwaS5WMcoCC0ZpdHNcQXBpXFYx4gIXRml0c1xBcGlcVjFcR1BCTWV0YWRhdGHqAg1GaXRzOjpBcGk6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_fits_api_v1_common, file_fits_api_v1_predefined_rules, file_google_protobuf_duration, file_google_protobuf_timestamp]); +export const file_fits_api_v1_token = /*@__PURE__*/ fileDesc("ChdmaXRzL2FwaS92MS90b2tlbi5wcm90bxILZml0cy5hcGkudjEizQYKBVRva2VuEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhgKBHVzZXIYAiABKAlCCrpIB3IFEAIYgAQSHwoEbWV0YRgDIAEoCzIRLmZpdHMuYXBpLnYxLk1ldGESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEj0KC3Blcm1pc3Npb25zGAUgAygLMh0uZml0cy5hcGkudjEuTWV0aG9kUGVybWlzc2lvbkIJukgGkgEDEPQDEisKB2V4cGlyZXMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCWlzc3VlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoKdG9rZW5fdHlwZRgIIAEoDjIWLmZpdHMuYXBpLnYxLlRva2VuVHlwZUIIukgFggECEAESOwoNcHJvamVjdF9yb2xlcxgJIAMoCzIkLmZpdHMuYXBpLnYxLlRva2VuLlByb2plY3RSb2xlc0VudHJ5EjkKDHRlbmFudF9yb2xlcxgKIAMoCzIjLmZpdHMuYXBpLnYxLlRva2VuLlRlbmFudFJvbGVzRW50cnkSOQoKYWRtaW5fcm9sZRgLIAEoDjIWLmZpdHMuYXBpLnYxLkFkbWluUm9sZUIIukgFggECEAFIAIgBARpNChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJwoFdmFsdWUYAiABKA4yGC5maXRzLmFwaS52MS5Qcm9qZWN0Um9sZToCOAEaSwoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKA4yFy5maXRzLmFwaS52MS5UZW5hbnRSb2xlOgI4ATqfAbpImwEamAEKG3Rva2VuLnBlcm1pc3Npb25zLnVzZXJ0b2tlbhIpdG9rZW4gdHlwZSB1c2VyIG11c3Qgbm90IGhhdmUgcGVybWlzc2lvbnMaTih0aGlzLnRva2VuX3R5cGUgPT0gMiAmJiB0aGlzLnBlcm1pc3Npb25zLnNpemUoKSA9PSAwKSB8fCB0aGlzLnRva2VuX3R5cGUgIT0gMkINCgtfYWRtaW5fcm9sZSJJChBNZXRob2RQZXJtaXNzaW9uEhkKB3N1YmplY3QYASABKAlCCLpIBXIDGIACEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyIZChdUb2tlblNlcnZpY2VMaXN0UmVxdWVzdCI+ChhUb2tlblNlcnZpY2VMaXN0UmVzcG9uc2USIgoGdG9rZW5zGAEgAygLMhIuZml0cy5hcGkudjEuVG9rZW4iMwoZVG9rZW5TZXJ2aWNlUmV2b2tlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASIcChpUb2tlblNlcnZpY2VSZXZva2VSZXNwb25zZSIwChZUb2tlblNlcnZpY2VHZXRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBIjwKF1Rva2VuU2VydmljZUdldFJlc3BvbnNlEiEKBXRva2VuGAEgASgLMhIuZml0cy5hcGkudjEuVG9rZW4qUAoJVG9rZW5UeXBlEhoKFlRPS0VOX1RZUEVfVU5TUEVDSUZJRUQQABISCg5UT0tFTl9UWVBFX0FQSRABEhMKD1RPS0VOX1RZUEVfVVNFUhACMq4CCgxUb2tlblNlcnZpY2USWgoDR2V0EiMuZml0cy5hcGkudjEuVG9rZW5TZXJ2aWNlR2V0UmVxdWVzdBokLmZpdHMuYXBpLnYxLlRva2VuU2VydmljZUdldFJlc3BvbnNlIgjY8xgC4PMYARJdCgRMaXN0EiQuZml0cy5hcGkudjEuVG9rZW5TZXJ2aWNlTGlzdFJlcXVlc3QaJS5maXRzLmFwaS52MS5Ub2tlblNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgBEmMKBlJldm9rZRImLmZpdHMuYXBpLnYxLlRva2VuU2VydmljZVJldm9rZVJlcXVlc3QaJy5maXRzLmFwaS52MS5Ub2tlblNlcnZpY2VSZXZva2VSZXNwb25zZSII2PMYAuDzGAFClgEKD2NvbS5maXRzLmFwaS52MUIKVG9rZW5Qcm90b1ABWilnaXRodWIuY29tL2ZpLXRzL2FwaS9nby9maXRzL2FwaS92MTthcGl2MaICA0ZBWKoCC0ZpdHMuQXBpLlYxygILRml0c1xBcGlcVjHiAhdGaXRzXEFwaVxWMVxHUEJNZXRhZGF0YeoCDUZpdHM6OkFwaTo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_fits_api_v1_common, file_fits_api_v1_predefined_rules, file_google_protobuf_timestamp]); /** * Describes the message fits.api.v1.Token. * Use `create(TokenSchema)` to create a new message. */ export const TokenSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 0); -/** - * Describes the message fits.api.v1.TokenServiceCreateRequest. - * Use `create(TokenServiceCreateRequestSchema)` to create a new message. - */ -export const TokenServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 1); /** * Describes the message fits.api.v1.MethodPermission. * Use `create(MethodPermissionSchema)` to create a new message. */ -export const MethodPermissionSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 2); -/** - * Describes the message fits.api.v1.TokenServiceCreateResponse. - * Use `create(TokenServiceCreateResponseSchema)` to create a new message. - */ -export const TokenServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 3); +export const MethodPermissionSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 1); /** * Describes the message fits.api.v1.TokenServiceListRequest. * Use `create(TokenServiceListRequestSchema)` to create a new message. */ -export const TokenServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 4); +export const TokenServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 2); /** * Describes the message fits.api.v1.TokenServiceListResponse. * Use `create(TokenServiceListResponseSchema)` to create a new message. */ -export const TokenServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 5); +export const TokenServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 3); /** * Describes the message fits.api.v1.TokenServiceRevokeRequest. * Use `create(TokenServiceRevokeRequestSchema)` to create a new message. */ -export const TokenServiceRevokeRequestSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 6); +export const TokenServiceRevokeRequestSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 4); /** * Describes the message fits.api.v1.TokenServiceRevokeResponse. * Use `create(TokenServiceRevokeResponseSchema)` to create a new message. */ -export const TokenServiceRevokeResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 7); -/** - * Describes the message fits.api.v1.TokenServiceUpdateRequest. - * Use `create(TokenServiceUpdateRequestSchema)` to create a new message. - */ -export const TokenServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 8); -/** - * Describes the message fits.api.v1.TokenServiceUpdateResponse. - * Use `create(TokenServiceUpdateResponseSchema)` to create a new message. - */ -export const TokenServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 9); +export const TokenServiceRevokeResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 5); /** * Describes the message fits.api.v1.TokenServiceGetRequest. * Use `create(TokenServiceGetRequestSchema)` to create a new message. */ -export const TokenServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 10); +export const TokenServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 6); /** * Describes the message fits.api.v1.TokenServiceGetResponse. * Use `create(TokenServiceGetResponseSchema)` to create a new message. */ -export const TokenServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 11); -/** - * Describes the message fits.api.v1.TokenServiceRefreshRequest. - * Use `create(TokenServiceRefreshRequestSchema)` to create a new message. - */ -export const TokenServiceRefreshRequestSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 12); -/** - * Describes the message fits.api.v1.TokenServiceRefreshResponse. - * Use `create(TokenServiceRefreshResponseSchema)` to create a new message. - */ -export const TokenServiceRefreshResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 13); +export const TokenServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 7); /** * TokenType specifies different use cases of tokens * diff --git a/js/fits/api/v1/token_pb.ts b/js/fits/api/v1/token_pb.ts index db1b664..d188911 100644 --- a/js/fits/api/v1/token_pb.ts +++ b/js/fits/api/v1/token_pb.ts @@ -5,18 +5,18 @@ import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; -import type { AdminRole, Labels, Meta, ProjectRole, TenantRole, UpdateLabels, UpdateMeta } from "./common_pb"; +import type { AdminRole, Meta, ProjectRole, TenantRole } from "./common_pb"; import { file_fits_api_v1_common } from "./common_pb"; import { file_fits_api_v1_predefined_rules } from "./predefined_rules_pb"; -import type { Duration, Timestamp } from "@bufbuild/protobuf/wkt"; -import { file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file fits/api/v1/token.proto. */ export const file_fits_api_v1_token: GenFile = /*@__PURE__*/ - fileDesc("ChdmaXRzL2FwaS92MS90b2tlbi5wcm90bxILZml0cy5hcGkudjEizQYKBVRva2VuEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhgKBHVzZXIYAiABKAlCCrpIB3IFEAIYgAQSHwoEbWV0YRgDIAEoCzIRLmZpdHMuYXBpLnYxLk1ldGESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEj0KC3Blcm1pc3Npb25zGAUgAygLMh0uZml0cy5hcGkudjEuTWV0aG9kUGVybWlzc2lvbkIJukgGkgEDEPQDEisKB2V4cGlyZXMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCWlzc3VlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoKdG9rZW5fdHlwZRgIIAEoDjIWLmZpdHMuYXBpLnYxLlRva2VuVHlwZUIIukgFggECEAESOwoNcHJvamVjdF9yb2xlcxgJIAMoCzIkLmZpdHMuYXBpLnYxLlRva2VuLlByb2plY3RSb2xlc0VudHJ5EjkKDHRlbmFudF9yb2xlcxgKIAMoCzIjLmZpdHMuYXBpLnYxLlRva2VuLlRlbmFudFJvbGVzRW50cnkSOQoKYWRtaW5fcm9sZRgLIAEoDjIWLmZpdHMuYXBpLnYxLkFkbWluUm9sZUIIukgFggECEAFIAIgBARpNChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJwoFdmFsdWUYAiABKA4yGC5maXRzLmFwaS52MS5Qcm9qZWN0Um9sZToCOAEaSwoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKA4yFy5maXRzLmFwaS52MS5UZW5hbnRSb2xlOgI4ATqfAbpImwEamAEKG3Rva2VuLnBlcm1pc3Npb25zLnVzZXJ0b2tlbhIpdG9rZW4gdHlwZSB1c2VyIG11c3Qgbm90IGhhdmUgcGVybWlzc2lvbnMaTih0aGlzLnRva2VuX3R5cGUgPT0gMiAmJiB0aGlzLnBlcm1pc3Npb25zLnNpemUoKSA9PSAwKSB8fCB0aGlzLnRva2VuX3R5cGUgIT0gMkINCgtfYWRtaW5fcm9sZSKgBQoZVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdBIgCgtkZXNjcmlwdGlvbhgBIAEoCUILukgIcgbIs66xAgESPAoLcGVybWlzc2lvbnMYAiADKAsyHS5maXRzLmFwaS52MS5NZXRob2RQZXJtaXNzaW9uQgi6SAWSAQIQZBI+CgdleHBpcmVzGAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQhK6SA+qAQwaBQiB54QPMgMI2AQSawoNcHJvamVjdF9yb2xlcxgEIAMoCzI4LmZpdHMuYXBpLnYxLlRva2VuU2VydmljZUNyZWF0ZVJlcXVlc3QuUHJvamVjdFJvbGVzRW50cnlCGrpIF5oBFMCVuLECASIFcgOwAQEqBYIBAhABEmsKDHRlbmFudF9yb2xlcxgFIAMoCzI3LmZpdHMuYXBpLnYxLlRva2VuU2VydmljZUNyZWF0ZVJlcXVlc3QuVGVuYW50Um9sZXNFbnRyeUIcukgZmgEWwJW4sQIBIgdyBRADGIABKgWCAQIQARI5CgphZG1pbl9yb2xlGAYgASgOMhYuZml0cy5hcGkudjEuQWRtaW5Sb2xlQgi6SAWCAQIQAUgAiAEBEiMKBmxhYmVscxgHIAEoCzITLmZpdHMuYXBpLnYxLkxhYmVscxpNChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJwoFdmFsdWUYAiABKA4yGC5maXRzLmFwaS52MS5Qcm9qZWN0Um9sZToCOAEaSwoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKA4yFy5maXRzLmFwaS52MS5UZW5hbnRSb2xlOgI4AUINCgtfYWRtaW5fcm9sZSJJChBNZXRob2RQZXJtaXNzaW9uEhkKB3N1YmplY3QYASABKAlCCLpIBXIDGIACEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyJPChpUb2tlblNlcnZpY2VDcmVhdGVSZXNwb25zZRIhCgV0b2tlbhgBIAEoCzISLmZpdHMuYXBpLnYxLlRva2VuEg4KBnNlY3JldBgCIAEoCSIZChdUb2tlblNlcnZpY2VMaXN0UmVxdWVzdCI+ChhUb2tlblNlcnZpY2VMaXN0UmVzcG9uc2USIgoGdG9rZW5zGAEgAygLMhIuZml0cy5hcGkudjEuVG9rZW4iMwoZVG9rZW5TZXJ2aWNlUmV2b2tlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASIcChpUb2tlblNlcnZpY2VSZXZva2VSZXNwb25zZSK/BQoZVG9rZW5TZXJ2aWNlVXBkYXRlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABARI0Cgt1cGRhdGVfbWV0YRgCIAEoCzIXLmZpdHMuYXBpLnYxLlVwZGF0ZU1ldGFCBrpIA8gBABIlCgtkZXNjcmlwdGlvbhgDIAEoCUILukgIcgbIs66xAgFIAIgBARIyCgtwZXJtaXNzaW9ucxgEIAMoCzIdLmZpdHMuYXBpLnYxLk1ldGhvZFBlcm1pc3Npb24SawoNcHJvamVjdF9yb2xlcxgFIAMoCzI4LmZpdHMuYXBpLnYxLlRva2VuU2VydmljZVVwZGF0ZVJlcXVlc3QuUHJvamVjdFJvbGVzRW50cnlCGrpIF5oBFMCVuLECASIFcgOwAQEqBYIBAhABEmsKDHRlbmFudF9yb2xlcxgGIAMoCzI3LmZpdHMuYXBpLnYxLlRva2VuU2VydmljZVVwZGF0ZVJlcXVlc3QuVGVuYW50Um9sZXNFbnRyeUIcukgZmgEWwJW4sQIBIgdyBRADGIABKgWCAQIQARI5CgphZG1pbl9yb2xlGAcgASgOMhYuZml0cy5hcGkudjEuQWRtaW5Sb2xlQgi6SAWCAQIQAUgBiAEBEikKBmxhYmVscxgIIAEoCzIZLmZpdHMuYXBpLnYxLlVwZGF0ZUxhYmVscxpNChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJwoFdmFsdWUYAiABKA4yGC5maXRzLmFwaS52MS5Qcm9qZWN0Um9sZToCOAEaSwoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKA4yFy5maXRzLmFwaS52MS5UZW5hbnRSb2xlOgI4AUIOCgxfZGVzY3JpcHRpb25CDQoLX2FkbWluX3JvbGUiPwoaVG9rZW5TZXJ2aWNlVXBkYXRlUmVzcG9uc2USIQoFdG9rZW4YASABKAsyEi5maXRzLmFwaS52MS5Ub2tlbiIwChZUb2tlblNlcnZpY2VHZXRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBIjwKF1Rva2VuU2VydmljZUdldFJlc3BvbnNlEiEKBXRva2VuGAEgASgLMhIuZml0cy5hcGkudjEuVG9rZW4iHAoaVG9rZW5TZXJ2aWNlUmVmcmVzaFJlcXVlc3QiUAobVG9rZW5TZXJ2aWNlUmVmcmVzaFJlc3BvbnNlEiEKBXRva2VuGAEgASgLMhIuZml0cy5hcGkudjEuVG9rZW4SDgoGc2VjcmV0GAIgASgJKlAKCVRva2VuVHlwZRIaChZUT0tFTl9UWVBFX1VOU1BFQ0lGSUVEEAASEgoOVE9LRU5fVFlQRV9BUEkQARITCg9UT0tFTl9UWVBFX1VTRVIQAjLgBAoMVG9rZW5TZXJ2aWNlEloKA0dldBIjLmZpdHMuYXBpLnYxLlRva2VuU2VydmljZUdldFJlcXVlc3QaJC5maXRzLmFwaS52MS5Ub2tlblNlcnZpY2VHZXRSZXNwb25zZSII2PMYAuDzGAESYwoGQ3JlYXRlEiYuZml0cy5hcGkudjEuVG9rZW5TZXJ2aWNlQ3JlYXRlUmVxdWVzdBonLmZpdHMuYXBpLnYxLlRva2VuU2VydmljZUNyZWF0ZVJlc3BvbnNlIgjY8xgC4PMYARJjCgZVcGRhdGUSJi5maXRzLmFwaS52MS5Ub2tlblNlcnZpY2VVcGRhdGVSZXF1ZXN0GicuZml0cy5hcGkudjEuVG9rZW5TZXJ2aWNlVXBkYXRlUmVzcG9uc2UiCNjzGALg8xgBEl0KBExpc3QSJC5maXRzLmFwaS52MS5Ub2tlblNlcnZpY2VMaXN0UmVxdWVzdBolLmZpdHMuYXBpLnYxLlRva2VuU2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAESYwoGUmV2b2tlEiYuZml0cy5hcGkudjEuVG9rZW5TZXJ2aWNlUmV2b2tlUmVxdWVzdBonLmZpdHMuYXBpLnYxLlRva2VuU2VydmljZVJldm9rZVJlc3BvbnNlIgjY8xgC4PMYARJmCgdSZWZyZXNoEicuZml0cy5hcGkudjEuVG9rZW5TZXJ2aWNlUmVmcmVzaFJlcXVlc3QaKC5maXRzLmFwaS52MS5Ub2tlblNlcnZpY2VSZWZyZXNoUmVzcG9uc2UiCNjzGALg8xgBQpYBCg9jb20uZml0cy5hcGkudjFCClRva2VuUHJvdG9QAVopZ2l0aHViLmNvbS9maS10cy9hcGkvZ28vZml0cy9hcGkvdjE7YXBpdjGiAgNGQViqAgtGaXRzLkFwaS5WMcoCC0ZpdHNcQXBpXFYx4gIXRml0c1xBcGlcVjFcR1BCTWV0YWRhdGHqAg1GaXRzOjpBcGk6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_fits_api_v1_common, file_fits_api_v1_predefined_rules, file_google_protobuf_duration, file_google_protobuf_timestamp]); + fileDesc("ChdmaXRzL2FwaS92MS90b2tlbi5wcm90bxILZml0cy5hcGkudjEizQYKBVRva2VuEhYKBHV1aWQYASABKAlCCLpIBXIDsAEBEhgKBHVzZXIYAiABKAlCCrpIB3IFEAIYgAQSHwoEbWV0YRgDIAEoCzIRLmZpdHMuYXBpLnYxLk1ldGESIAoLZGVzY3JpcHRpb24YBCABKAlCC7pICHIGyLOusQIBEj0KC3Blcm1pc3Npb25zGAUgAygLMh0uZml0cy5hcGkudjEuTWV0aG9kUGVybWlzc2lvbkIJukgGkgEDEPQDEisKB2V4cGlyZXMYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi0KCWlzc3VlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoKdG9rZW5fdHlwZRgIIAEoDjIWLmZpdHMuYXBpLnYxLlRva2VuVHlwZUIIukgFggECEAESOwoNcHJvamVjdF9yb2xlcxgJIAMoCzIkLmZpdHMuYXBpLnYxLlRva2VuLlByb2plY3RSb2xlc0VudHJ5EjkKDHRlbmFudF9yb2xlcxgKIAMoCzIjLmZpdHMuYXBpLnYxLlRva2VuLlRlbmFudFJvbGVzRW50cnkSOQoKYWRtaW5fcm9sZRgLIAEoDjIWLmZpdHMuYXBpLnYxLkFkbWluUm9sZUIIukgFggECEAFIAIgBARpNChFQcm9qZWN0Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJwoFdmFsdWUYAiABKA4yGC5maXRzLmFwaS52MS5Qcm9qZWN0Um9sZToCOAEaSwoQVGVuYW50Um9sZXNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKA4yFy5maXRzLmFwaS52MS5UZW5hbnRSb2xlOgI4ATqfAbpImwEamAEKG3Rva2VuLnBlcm1pc3Npb25zLnVzZXJ0b2tlbhIpdG9rZW4gdHlwZSB1c2VyIG11c3Qgbm90IGhhdmUgcGVybWlzc2lvbnMaTih0aGlzLnRva2VuX3R5cGUgPT0gMiAmJiB0aGlzLnBlcm1pc3Npb25zLnNpemUoKSA9PSAwKSB8fCB0aGlzLnRva2VuX3R5cGUgIT0gMkINCgtfYWRtaW5fcm9sZSJJChBNZXRob2RQZXJtaXNzaW9uEhkKB3N1YmplY3QYASABKAlCCLpIBXIDGIACEhoKB21ldGhvZHMYAiADKAlCCbpIBpIBAxD0AyIZChdUb2tlblNlcnZpY2VMaXN0UmVxdWVzdCI+ChhUb2tlblNlcnZpY2VMaXN0UmVzcG9uc2USIgoGdG9rZW5zGAEgAygLMhIuZml0cy5hcGkudjEuVG9rZW4iMwoZVG9rZW5TZXJ2aWNlUmV2b2tlUmVxdWVzdBIWCgR1dWlkGAEgASgJQgi6SAVyA7ABASIcChpUb2tlblNlcnZpY2VSZXZva2VSZXNwb25zZSIwChZUb2tlblNlcnZpY2VHZXRSZXF1ZXN0EhYKBHV1aWQYASABKAlCCLpIBXIDsAEBIjwKF1Rva2VuU2VydmljZUdldFJlc3BvbnNlEiEKBXRva2VuGAEgASgLMhIuZml0cy5hcGkudjEuVG9rZW4qUAoJVG9rZW5UeXBlEhoKFlRPS0VOX1RZUEVfVU5TUEVDSUZJRUQQABISCg5UT0tFTl9UWVBFX0FQSRABEhMKD1RPS0VOX1RZUEVfVVNFUhACMq4CCgxUb2tlblNlcnZpY2USWgoDR2V0EiMuZml0cy5hcGkudjEuVG9rZW5TZXJ2aWNlR2V0UmVxdWVzdBokLmZpdHMuYXBpLnYxLlRva2VuU2VydmljZUdldFJlc3BvbnNlIgjY8xgC4PMYARJdCgRMaXN0EiQuZml0cy5hcGkudjEuVG9rZW5TZXJ2aWNlTGlzdFJlcXVlc3QaJS5maXRzLmFwaS52MS5Ub2tlblNlcnZpY2VMaXN0UmVzcG9uc2UiCNjzGALg8xgBEmMKBlJldm9rZRImLmZpdHMuYXBpLnYxLlRva2VuU2VydmljZVJldm9rZVJlcXVlc3QaJy5maXRzLmFwaS52MS5Ub2tlblNlcnZpY2VSZXZva2VSZXNwb25zZSII2PMYAuDzGAFClgEKD2NvbS5maXRzLmFwaS52MUIKVG9rZW5Qcm90b1ABWilnaXRodWIuY29tL2ZpLXRzL2FwaS9nby9maXRzL2FwaS92MTthcGl2MaICA0ZBWKoCC0ZpdHMuQXBpLlYxygILRml0c1xBcGlcVjHiAhdGaXRzXEFwaVxWMVxHUEJNZXRhZGF0YeoCDUZpdHM6OkFwaTo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_fits_api_v1_common, file_fits_api_v1_predefined_rules, file_google_protobuf_timestamp]); /** * Token generates a jwt authentication token to access the api @@ -120,69 +120,6 @@ export type Token = Message<"fits.api.v1.Token"> & { export const TokenSchema: GenMessage = /*@__PURE__*/ messageDesc(file_fits_api_v1_token, 0); -/** - * TokenServiceCreateRequest is the request payload to create a token - * - * @generated from message fits.api.v1.TokenServiceCreateRequest - */ -export type TokenServiceCreateRequest = Message<"fits.api.v1.TokenServiceCreateRequest"> & { - /** - * Description of the token - * - * @generated from field: string description = 1; - */ - description: string; - - /** - * Permissions is a list of service methods this token can be used for - * - * @generated from field: repeated fits.api.v1.MethodPermission permissions = 2; - */ - permissions: MethodPermission[]; - - /** - * Expires gives the duration since now, after which this token can not be used anymore - * - * @generated from field: google.protobuf.Duration expires = 3; - */ - expires?: Duration | undefined; - - /** - * ProjectRoles associates a project id with the corresponding role of the token owner - * - * @generated from field: map project_roles = 4; - */ - projectRoles: { [key: string]: ProjectRole }; - - /** - * TenantRoles_associates a tenant id with the corresponding role of the token owner - * - * @generated from field: map tenant_roles = 5; - */ - tenantRoles: { [key: string]: TenantRole }; - - /** - * AdminRole defines the admin role of the token owner - * - * @generated from field: optional fits.api.v1.AdminRole admin_role = 6; - */ - adminRole?: AdminRole | undefined; - - /** - * Labels on this token - * - * @generated from field: fits.api.v1.Labels labels = 7; - */ - labels?: Labels | undefined; -}; - -/** - * Describes the message fits.api.v1.TokenServiceCreateRequest. - * Use `create(TokenServiceCreateRequestSchema)` to create a new message. - */ -export const TokenServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_token, 1); - /** * MethodPermission is a mapping from a subject/project to a service method * @@ -214,35 +151,7 @@ export type MethodPermission = Message<"fits.api.v1.MethodPermission"> & { * Use `create(MethodPermissionSchema)` to create a new message. */ export const MethodPermissionSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_token, 2); - -/** - * TokenServiceCreateResponse is the response payload of a token create request - * - * @generated from message fits.api.v1.TokenServiceCreateResponse - */ -export type TokenServiceCreateResponse = Message<"fits.api.v1.TokenServiceCreateResponse"> & { - /** - * Token which was created - * - * @generated from field: fits.api.v1.Token token = 1; - */ - token?: Token | undefined; - - /** - * Secret is the body if the jwt token, should be used in api requests as bearer token - * - * @generated from field: string secret = 2; - */ - secret: string; -}; - -/** - * Describes the message fits.api.v1.TokenServiceCreateResponse. - * Use `create(TokenServiceCreateResponseSchema)` to create a new message. - */ -export const TokenServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_token, 3); + messageDesc(file_fits_api_v1_token, 1); /** * TokenServiceListRequest is the request payload to list tokens @@ -257,7 +166,7 @@ export type TokenServiceListRequest = Message<"fits.api.v1.TokenServiceListReque * Use `create(TokenServiceListRequestSchema)` to create a new message. */ export const TokenServiceListRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_token, 4); + messageDesc(file_fits_api_v1_token, 2); /** * TokenServiceListResponse is the response payload of a token list request @@ -278,7 +187,7 @@ export type TokenServiceListResponse = Message<"fits.api.v1.TokenServiceListResp * Use `create(TokenServiceListResponseSchema)` to create a new message. */ export const TokenServiceListResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_token, 5); + messageDesc(file_fits_api_v1_token, 3); /** * TokenServiceRevokeRequest is the request payload of a token revoke request @@ -299,7 +208,7 @@ export type TokenServiceRevokeRequest = Message<"fits.api.v1.TokenServiceRevokeR * Use `create(TokenServiceRevokeRequestSchema)` to create a new message. */ export const TokenServiceRevokeRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_token, 6); + messageDesc(file_fits_api_v1_token, 4); /** * TokenServiceRevokeResponse is the response payload of a token revoke request @@ -314,99 +223,7 @@ export type TokenServiceRevokeResponse = Message<"fits.api.v1.TokenServiceRevoke * Use `create(TokenServiceRevokeResponseSchema)` to create a new message. */ export const TokenServiceRevokeResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_token, 7); - -/** - * TokenServiceUpdateRequest is the request payload of a token update request - * - * @generated from message fits.api.v1.TokenServiceUpdateRequest - */ -export type TokenServiceUpdateRequest = Message<"fits.api.v1.TokenServiceUpdateRequest"> & { - /** - * Uuid of the token to update - * - * @generated from field: string uuid = 1; - */ - uuid: string; - - /** - * UpdateMeta contains the timestamp and strategy to be used in this update request - * TokenUpdate is not guarded with optlock in the backend - * - * @generated from field: fits.api.v1.UpdateMeta update_meta = 2; - */ - updateMeta?: UpdateMeta | undefined; - - /** - * Description is a user given description of this token. - * - * @generated from field: optional string description = 3; - */ - description?: string | undefined; - - /** - * Permissions is a list of service methods this token can be used for - * - * @generated from field: repeated fits.api.v1.MethodPermission permissions = 4; - */ - permissions: MethodPermission[]; - - /** - * ProjectRoles associates a project id with the corresponding role of the token owner - * - * @generated from field: map project_roles = 5; - */ - projectRoles: { [key: string]: ProjectRole }; - - /** - * TenantRoles associates a tenant id with the corresponding role of the token owner - * - * @generated from field: map tenant_roles = 6; - */ - tenantRoles: { [key: string]: TenantRole }; - - /** - * AdminRole defines the admin role of the token owner - * - * @generated from field: optional fits.api.v1.AdminRole admin_role = 7; - */ - adminRole?: AdminRole | undefined; - - /** - * Labels on this token - * - * @generated from field: fits.api.v1.UpdateLabels labels = 8; - */ - labels?: UpdateLabels | undefined; -}; - -/** - * Describes the message fits.api.v1.TokenServiceUpdateRequest. - * Use `create(TokenServiceUpdateRequestSchema)` to create a new message. - */ -export const TokenServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_token, 8); - -/** - * TokenServiceUpdateResponse is the response payload of a token update request - * - * @generated from message fits.api.v1.TokenServiceUpdateResponse - */ -export type TokenServiceUpdateResponse = Message<"fits.api.v1.TokenServiceUpdateResponse"> & { - /** - * Token is the updated token - * - * @generated from field: fits.api.v1.Token token = 1; - */ - token?: Token | undefined; -}; - -/** - * Describes the message fits.api.v1.TokenServiceUpdateResponse. - * Use `create(TokenServiceUpdateResponseSchema)` to create a new message. - */ -export const TokenServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_token, 9); + messageDesc(file_fits_api_v1_token, 5); /** * TokenServiceGetRequest is the request payload of a token get request @@ -427,7 +244,7 @@ export type TokenServiceGetRequest = Message<"fits.api.v1.TokenServiceGetRequest * Use `create(TokenServiceGetRequestSchema)` to create a new message. */ export const TokenServiceGetRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_token, 10); + messageDesc(file_fits_api_v1_token, 6); /** * TokenServiceGetResponse is the response payload of a token get request @@ -448,52 +265,7 @@ export type TokenServiceGetResponse = Message<"fits.api.v1.TokenServiceGetRespon * Use `create(TokenServiceGetResponseSchema)` to create a new message. */ export const TokenServiceGetResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_token, 11); - -/** - * TokenServiceRefreshRequest is the request payload of a token refresh request - * Permissions, Roles and Expiration duration and all other properties are inherited from the calling token. - * The expiration duration will be calculated from the existing token (exp - iat) - * - * @generated from message fits.api.v1.TokenServiceRefreshRequest - */ -export type TokenServiceRefreshRequest = Message<"fits.api.v1.TokenServiceRefreshRequest"> & { -}; - -/** - * Describes the message fits.api.v1.TokenServiceRefreshRequest. - * Use `create(TokenServiceRefreshRequestSchema)` to create a new message. - */ -export const TokenServiceRefreshRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_token, 12); - -/** - * TokenServiceRefreshResponse is the response payload of a token refresh request - * - * @generated from message fits.api.v1.TokenServiceRefreshResponse - */ -export type TokenServiceRefreshResponse = Message<"fits.api.v1.TokenServiceRefreshResponse"> & { - /** - * Token which was refreshed - * - * @generated from field: fits.api.v1.Token token = 1; - */ - token?: Token | undefined; - - /** - * Secret is the body if the jwt token, should be used in api requests as bearer token - * - * @generated from field: string secret = 2; - */ - secret: string; -}; - -/** - * Describes the message fits.api.v1.TokenServiceRefreshResponse. - * Use `create(TokenServiceRefreshResponseSchema)` to create a new message. - */ -export const TokenServiceRefreshResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_token, 13); + messageDesc(file_fits_api_v1_token, 7); /** * TokenType specifies different use cases of tokens @@ -545,26 +317,6 @@ export const TokenService: GenService<{ input: typeof TokenServiceGetRequestSchema; output: typeof TokenServiceGetResponseSchema; }, - /** - * Creates a token to authenticate against the platform, the secret will be only visible in the response. - * - * @generated from rpc fits.api.v1.TokenService.Create - */ - create: { - methodKind: "unary"; - input: typeof TokenServiceCreateRequestSchema; - output: typeof TokenServiceCreateResponseSchema; - }, - /** - * Updates a token. - * - * @generated from rpc fits.api.v1.TokenService.Update - */ - update: { - methodKind: "unary"; - input: typeof TokenServiceUpdateRequestSchema; - output: typeof TokenServiceUpdateResponseSchema; - }, /** * Returns the list of all user tokens. * @@ -585,16 +337,6 @@ export const TokenService: GenService<{ input: typeof TokenServiceRevokeRequestSchema; output: typeof TokenServiceRevokeResponseSchema; }, - /** - * Refreshes a token, this will create a new token with the exact same permissions as the calling token contains. - * - * @generated from rpc fits.api.v1.TokenService.Refresh - */ - refresh: { - methodKind: "unary"; - input: typeof TokenServiceRefreshRequestSchema; - output: typeof TokenServiceRefreshResponseSchema; - }, }> = /*@__PURE__*/ serviceDesc(file_fits_api_v1_token, 0); diff --git a/proto/fits/api/v1/token.proto b/proto/fits/api/v1/token.proto index 306ae51..8682fa8 100644 --- a/proto/fits/api/v1/token.proto +++ b/proto/fits/api/v1/token.proto @@ -5,7 +5,6 @@ package fits.api.v1; import "buf/validate/validate.proto"; import "fits/api/v1/common.proto"; import "fits/api/v1/predefined_rules.proto"; -import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; // TokenService provides token management operations. @@ -15,16 +14,6 @@ service TokenService { option (visibility) = VISIBILITY_SELF; option (auditing) = AUDITING_INCLUDED; } - // Creates a token to authenticate against the platform, the secret will be only visible in the response. - rpc Create(TokenServiceCreateRequest) returns (TokenServiceCreateResponse) { - option (visibility) = VISIBILITY_SELF; - option (auditing) = AUDITING_INCLUDED; - } - // Updates a token. - rpc Update(TokenServiceUpdateRequest) returns (TokenServiceUpdateResponse) { - option (visibility) = VISIBILITY_SELF; - option (auditing) = AUDITING_INCLUDED; - } // Returns the list of all user tokens. rpc List(TokenServiceListRequest) returns (TokenServiceListResponse) { option (visibility) = VISIBILITY_SELF; @@ -35,11 +24,6 @@ service TokenService { option (visibility) = VISIBILITY_SELF; option (auditing) = AUDITING_INCLUDED; } - // Refreshes a token, this will create a new token with the exact same permissions as the calling token contains. - rpc Refresh(TokenServiceRefreshRequest) returns (TokenServiceRefreshResponse) { - option (visibility) = VISIBILITY_SELF; - option (auditing) = AUDITING_INCLUDED; - } } // Token generates a jwt authentication token to access the api @@ -98,50 +82,6 @@ enum TokenType { TOKEN_TYPE_USER = 2; } -// TokenServiceCreateRequest is the request payload to create a token -message TokenServiceCreateRequest { - // Description of the token - string description = 1 [(buf.validate.field).string.(fits.api.v1.is_description) = true]; - // Permissions is a list of service methods this token can be used for - repeated MethodPermission permissions = 2 [(buf.validate.field).repeated.max_items = 100]; - // Expires gives the duration since now, after which this token can not be used anymore - google.protobuf.Duration expires = 3 [(buf.validate.field).duration = { - lt: {seconds: 31536001} - gte: {seconds: 600} - }]; - // ProjectRoles associates a project id with the corresponding role of the token owner - map project_roles = 4 [ - (buf.validate.field).map = { - keys: { - string: {uuid: true} - } - values: { - enum: {defined_only: true} - } - }, - (buf.validate.field).map.(fits.api.v1.keys_trimmed) = true - ]; - // TenantRoles_associates a tenant id with the corresponding role of the token owner - map tenant_roles = 5 [ - (buf.validate.field).map = { - keys: { - string: { - min_len: 3 - max_len: 128 - } - } - values: { - enum: {defined_only: true} - } - }, - (buf.validate.field).map.(fits.api.v1.keys_trimmed) = true - ]; - // AdminRole defines the admin role of the token owner - optional AdminRole admin_role = 6 [(buf.validate.field).enum.defined_only = true]; - // Labels on this token - Labels labels = 7; -} - // MethodPermission is a mapping from a subject/project to a service method message MethodPermission { // Subject maybe either the project or the tenant @@ -155,14 +95,6 @@ message MethodPermission { repeated string methods = 2 [(buf.validate.field).repeated.max_items = 500]; } -// TokenServiceCreateResponse is the response payload of a token create request -message TokenServiceCreateResponse { - // Token which was created - Token token = 1; - // Secret is the body if the jwt token, should be used in api requests as bearer token - string secret = 2; -} - // TokenServiceListRequest is the request payload to list tokens message TokenServiceListRequest {} @@ -181,56 +113,6 @@ message TokenServiceRevokeRequest { // TokenServiceRevokeResponse is the response payload of a token revoke request message TokenServiceRevokeResponse {} -// TokenServiceUpdateRequest is the request payload of a token update request -message TokenServiceUpdateRequest { - // Uuid of the token to update - string uuid = 1 [(buf.validate.field).string.uuid = true]; - // UpdateMeta contains the timestamp and strategy to be used in this update request - // TokenUpdate is not guarded with optlock in the backend - UpdateMeta update_meta = 2 [(buf.validate.field).required = false]; - // Description is a user given description of this token. - optional string description = 3 [(buf.validate.field).string.(fits.api.v1.is_description) = true]; - // Permissions is a list of service methods this token can be used for - repeated MethodPermission permissions = 4; - // ProjectRoles associates a project id with the corresponding role of the token owner - map project_roles = 5 [ - (buf.validate.field).map = { - keys: { - string: {uuid: true} - } - values: { - enum: {defined_only: true} - } - }, - (buf.validate.field).map.(fits.api.v1.keys_trimmed) = true - ]; - // TenantRoles associates a tenant id with the corresponding role of the token owner - map tenant_roles = 6 [ - (buf.validate.field).map = { - keys: { - string: { - min_len: 3 - max_len: 128 - } - } - values: { - enum: {defined_only: true} - } - }, - (buf.validate.field).map.(fits.api.v1.keys_trimmed) = true - ]; - // AdminRole defines the admin role of the token owner - optional AdminRole admin_role = 7 [(buf.validate.field).enum.defined_only = true]; - // Labels on this token - UpdateLabels labels = 8; -} - -// TokenServiceUpdateResponse is the response payload of a token update request -message TokenServiceUpdateResponse { - // Token is the updated token - Token token = 1; -} - // TokenServiceGetRequest is the request payload of a token get request message TokenServiceGetRequest { // Uuid of the token to get @@ -242,16 +124,3 @@ message TokenServiceGetResponse { // Token is the token Token token = 1; } - -// TokenServiceRefreshRequest is the request payload of a token refresh request -// Permissions, Roles and Expiration duration and all other properties are inherited from the calling token. -// The expiration duration will be calculated from the existing token (exp - iat) -message TokenServiceRefreshRequest {} - -// TokenServiceRefreshResponse is the response payload of a token refresh request -message TokenServiceRefreshResponse { - // Token which was refreshed - Token token = 1; - // Secret is the body if the jwt token, should be used in api requests as bearer token - string secret = 2; -} diff --git a/python/fits/api/v1/token_connect.py b/python/fits/api/v1/token_connect.py index f52ad82..41807ff 100644 --- a/python/fits/api/v1/token_connect.py +++ b/python/fits/api/v1/token_connect.py @@ -21,21 +21,12 @@ class TokenService(Protocol): async def get(self, request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceGetRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceGetResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") - async def create(self, request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateResponse: - raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") - - async def update(self, request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateResponse: - raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") - async def list(self, request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceListRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceListResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") async def revoke(self, request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRevokeRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRevokeResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") - async def refresh(self, request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshResponse: - raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") - class TokenServiceASGIApplication(ConnectASGIApplication[TokenService]): def __init__(self, service: TokenService | AsyncGenerator[TokenService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None, codecs: Iterable[Codec] | None = None) -> None: @@ -52,26 +43,6 @@ def __init__(self, service: TokenService | AsyncGenerator[TokenService], *, inte ), function=svc.get, ), - "/fits.api.v1.TokenService/Create": Endpoint.unary( - method=MethodInfo( - name="Create", - service_name="fits.api.v1.TokenService", - input=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateRequest, - output=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - function=svc.create, - ), - "/fits.api.v1.TokenService/Update": Endpoint.unary( - method=MethodInfo( - name="Update", - service_name="fits.api.v1.TokenService", - input=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateRequest, - output=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - function=svc.update, - ), "/fits.api.v1.TokenService/List": Endpoint.unary( method=MethodInfo( name="List", @@ -92,16 +63,6 @@ def __init__(self, service: TokenService | AsyncGenerator[TokenService], *, inte ), function=svc.revoke, ), - "/fits.api.v1.TokenService/Refresh": Endpoint.unary( - method=MethodInfo( - name="Refresh", - service_name="fits.api.v1.TokenService", - input=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshRequest, - output=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - function=svc.refresh, - ), }, interceptors=interceptors, read_max_bytes=read_max_bytes, @@ -136,46 +97,6 @@ async def get( timeout_ms=timeout_ms, ) - async def create( - self, - request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateRequest, - *, - headers: Headers | Mapping[str, str] | None = None, - timeout_ms: int | None = None, - ) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateResponse: - return await self.execute_unary( - request=request, - method=MethodInfo( - name="Create", - service_name="fits.api.v1.TokenService", - input=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateRequest, - output=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - headers=headers, - timeout_ms=timeout_ms, - ) - - async def update( - self, - request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateRequest, - *, - headers: Headers | Mapping[str, str] | None = None, - timeout_ms: int | None = None, - ) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateResponse: - return await self.execute_unary( - request=request, - method=MethodInfo( - name="Update", - service_name="fits.api.v1.TokenService", - input=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateRequest, - output=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - headers=headers, - timeout_ms=timeout_ms, - ) - async def list( self, request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceListRequest, @@ -216,26 +137,6 @@ async def revoke( timeout_ms=timeout_ms, ) - async def refresh( - self, - request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshRequest, - *, - headers: Headers | Mapping[str, str] | None = None, - timeout_ms: int | None = None, - ) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshResponse: - return await self.execute_unary( - request=request, - method=MethodInfo( - name="Refresh", - service_name="fits.api.v1.TokenService", - input=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshRequest, - output=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - headers=headers, - timeout_ms=timeout_ms, - ) - @@ -243,16 +144,10 @@ async def refresh( class TokenServiceSync(Protocol): def get(self, request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceGetRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceGetResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") - def create(self, request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateResponse: - raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") - def update(self, request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateResponse: - raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def list(self, request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceListRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceListResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def revoke(self, request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRevokeRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRevokeResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") - def refresh(self, request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshResponse: - raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") class TokenServiceWSGIApplication(ConnectWSGIApplication): @@ -269,26 +164,6 @@ def __init__(self, service: TokenServiceSync, interceptors: Iterable[Interceptor ), function=service.get, ), - "/fits.api.v1.TokenService/Create": EndpointSync.unary( - method=MethodInfo( - name="Create", - service_name="fits.api.v1.TokenService", - input=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateRequest, - output=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - function=service.create, - ), - "/fits.api.v1.TokenService/Update": EndpointSync.unary( - method=MethodInfo( - name="Update", - service_name="fits.api.v1.TokenService", - input=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateRequest, - output=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - function=service.update, - ), "/fits.api.v1.TokenService/List": EndpointSync.unary( method=MethodInfo( name="List", @@ -309,16 +184,6 @@ def __init__(self, service: TokenServiceSync, interceptors: Iterable[Interceptor ), function=service.revoke, ), - "/fits.api.v1.TokenService/Refresh": EndpointSync.unary( - method=MethodInfo( - name="Refresh", - service_name="fits.api.v1.TokenService", - input=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshRequest, - output=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - function=service.refresh, - ), }, interceptors=interceptors, read_max_bytes=read_max_bytes, @@ -353,46 +218,6 @@ def get( timeout_ms=timeout_ms, ) - def create( - self, - request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateRequest, - *, - headers: Headers | Mapping[str, str] | None = None, - timeout_ms: int | None = None, - ) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateResponse: - return self.execute_unary( - request=request, - method=MethodInfo( - name="Create", - service_name="fits.api.v1.TokenService", - input=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateRequest, - output=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceCreateResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - headers=headers, - timeout_ms=timeout_ms, - ) - - def update( - self, - request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateRequest, - *, - headers: Headers | Mapping[str, str] | None = None, - timeout_ms: int | None = None, - ) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateResponse: - return self.execute_unary( - request=request, - method=MethodInfo( - name="Update", - service_name="fits.api.v1.TokenService", - input=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateRequest, - output=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceUpdateResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - headers=headers, - timeout_ms=timeout_ms, - ) - def list( self, request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceListRequest, @@ -433,24 +258,4 @@ def revoke( timeout_ms=timeout_ms, ) - def refresh( - self, - request: fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshRequest, - *, - headers: Headers | Mapping[str, str] | None = None, - timeout_ms: int | None = None, - ) -> fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshResponse: - return self.execute_unary( - request=request, - method=MethodInfo( - name="Refresh", - service_name="fits.api.v1.TokenService", - input=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshRequest, - output=fits_dot_api_dot_v1_dot_token__pb2.TokenServiceRefreshResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - headers=headers, - timeout_ms=timeout_ms, - ) - diff --git a/python/fits/api/v1/token_pb2.py b/python/fits/api/v1/token_pb2.py index d404835..8552ffd 100644 --- a/python/fits/api/v1/token_pb2.py +++ b/python/fits/api/v1/token_pb2.py @@ -25,11 +25,10 @@ from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2 from fits.api.v1 import common_pb2 as fits_dot_api_dot_v1_dot_common__pb2 from fits.api.v1 import predefined_rules_pb2 as fits_dot_api_dot_v1_dot_predefined__rules__pb2 -from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66its/api/v1/token.proto\x12\x0b\x66its.api.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x18\x66its/api/v1/common.proto\x1a\"fits/api/v1/predefined_rules.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xd5\x07\n\x05Token\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x1e\n\x04user\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x04R\x04user\x12%\n\x04meta\x18\x03 \x01(\x0b\x32\x11.fits.api.v1.MetaR\x04meta\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12J\n\x0bpermissions\x18\x05 \x03(\x0b\x32\x1d.fits.api.v1.MethodPermissionB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x0bpermissions\x12\x34\n\x07\x65xpires\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65xpires\x12\x37\n\tissued_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08issuedAt\x12?\n\ntoken_type\x18\x08 \x01(\x0e\x32\x16.fits.api.v1.TokenTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\ttokenType\x12I\n\rproject_roles\x18\t \x03(\x0b\x32$.fits.api.v1.Token.ProjectRolesEntryR\x0cprojectRoles\x12\x46\n\x0ctenant_roles\x18\n \x03(\x0b\x32#.fits.api.v1.Token.TenantRolesEntryR\x0btenantRoles\x12\x44\n\nadmin_role\x18\x0b \x01(\x0e\x32\x16.fits.api.v1.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\tadminRole\x88\x01\x01\x1aY\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12.\n\x05value\x18\x02 \x01(\x0e\x32\x18.fits.api.v1.ProjectRoleR\x05value:\x02\x38\x01\x1aW\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12-\n\x05value\x18\x02 \x01(\x0e\x32\x17.fits.api.v1.TenantRoleR\x05value:\x02\x38\x01:\x9f\x01\xbaH\x9b\x01\x1a\x98\x01\n\x1btoken.permissions.usertoken\x12)token type user must not have permissions\x1aN(this.token_type == 2 && this.permissions.size() == 0) || this.token_type != 2B\r\n\x0b_admin_role\"\x89\x06\n\x19TokenServiceCreateRequest\x12-\n\x0b\x64\x65scription\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12I\n\x0bpermissions\x18\x02 \x03(\x0b\x32\x1d.fits.api.v1.MethodPermissionB\x08\xbaH\x05\x92\x01\x02\x10\x64R\x0bpermissions\x12G\n\x07\x65xpires\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x12\xbaH\x0f\xaa\x01\x0c\x1a\x05\x08\x81\xe7\x84\x0f\x32\x03\x08\xd8\x04R\x07\x65xpires\x12y\n\rproject_roles\x18\x04 \x03(\x0b\x32\x38.fits.api.v1.TokenServiceCreateRequest.ProjectRolesEntryB\x1a\xbaH\x17\x9a\x01\x14\"\x05r\x03\xb0\x01\x01*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01R\x0cprojectRoles\x12x\n\x0ctenant_roles\x18\x05 \x03(\x0b\x32\x37.fits.api.v1.TokenServiceCreateRequest.TenantRolesEntryB\x1c\xbaH\x19\x9a\x01\x16\"\x07r\x05\x10\x03\x18\x80\x01*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01R\x0btenantRoles\x12\x44\n\nadmin_role\x18\x06 \x01(\x0e\x32\x16.fits.api.v1.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\tadminRole\x88\x01\x01\x12+\n\x06labels\x18\x07 \x01(\x0b\x32\x13.fits.api.v1.LabelsR\x06labels\x1aY\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12.\n\x05value\x18\x02 \x01(\x0e\x32\x18.fits.api.v1.ProjectRoleR\x05value:\x02\x38\x01\x1aW\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12-\n\x05value\x18\x02 \x01(\x0e\x32\x17.fits.api.v1.TenantRoleR\x05value:\x02\x38\x01\x42\r\n\x0b_admin_role\"[\n\x10MethodPermission\x12\"\n\x07subject\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x07subject\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"^\n\x1aTokenServiceCreateResponse\x12(\n\x05token\x18\x01 \x01(\x0b\x32\x12.fits.api.v1.TokenR\x05token\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"\x19\n\x17TokenServiceListRequest\"F\n\x18TokenServiceListResponse\x12*\n\x06tokens\x18\x01 \x03(\x0b\x32\x12.fits.api.v1.TokenR\x06tokens\"9\n\x19TokenServiceRevokeRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"\x1c\n\x1aTokenServiceRevokeResponse\"\xb1\x06\n\x19TokenServiceUpdateRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12@\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x17.fits.api.v1.UpdateMetaB\x06\xbaH\x03\xc8\x01\x00R\nupdateMeta\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12?\n\x0bpermissions\x18\x04 \x03(\x0b\x32\x1d.fits.api.v1.MethodPermissionR\x0bpermissions\x12y\n\rproject_roles\x18\x05 \x03(\x0b\x32\x38.fits.api.v1.TokenServiceUpdateRequest.ProjectRolesEntryB\x1a\xbaH\x17\x9a\x01\x14\"\x05r\x03\xb0\x01\x01*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01R\x0cprojectRoles\x12x\n\x0ctenant_roles\x18\x06 \x03(\x0b\x32\x37.fits.api.v1.TokenServiceUpdateRequest.TenantRolesEntryB\x1c\xbaH\x19\x9a\x01\x16\"\x07r\x05\x10\x03\x18\x80\x01*\x05\x82\x01\x02\x10\x01\xc0\x95\xb8\xb1\x02\x01R\x0btenantRoles\x12\x44\n\nadmin_role\x18\x07 \x01(\x0e\x32\x16.fits.api.v1.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\tadminRole\x88\x01\x01\x12\x31\n\x06labels\x18\x08 \x01(\x0b\x32\x19.fits.api.v1.UpdateLabelsR\x06labels\x1aY\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12.\n\x05value\x18\x02 \x01(\x0e\x32\x18.fits.api.v1.ProjectRoleR\x05value:\x02\x38\x01\x1aW\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12-\n\x05value\x18\x02 \x01(\x0e\x32\x17.fits.api.v1.TenantRoleR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\r\n\x0b_admin_role\"F\n\x1aTokenServiceUpdateResponse\x12(\n\x05token\x18\x01 \x01(\x0b\x32\x12.fits.api.v1.TokenR\x05token\"6\n\x16TokenServiceGetRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"C\n\x17TokenServiceGetResponse\x12(\n\x05token\x18\x01 \x01(\x0b\x32\x12.fits.api.v1.TokenR\x05token\"\x1c\n\x1aTokenServiceRefreshRequest\"_\n\x1bTokenServiceRefreshResponse\x12(\n\x05token\x18\x01 \x01(\x0b\x32\x12.fits.api.v1.TokenR\x05token\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret*P\n\tTokenType\x12\x1a\n\x16TOKEN_TYPE_UNSPECIFIED\x10\x00\x12\x12\n\x0eTOKEN_TYPE_API\x10\x01\x12\x13\n\x0fTOKEN_TYPE_USER\x10\x02\x32\xe0\x04\n\x0cTokenService\x12Z\n\x03Get\x12#.fits.api.v1.TokenServiceGetRequest\x1a$.fits.api.v1.TokenServiceGetResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12\x63\n\x06\x43reate\x12&.fits.api.v1.TokenServiceCreateRequest\x1a\'.fits.api.v1.TokenServiceCreateResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12\x63\n\x06Update\x12&.fits.api.v1.TokenServiceUpdateRequest\x1a\'.fits.api.v1.TokenServiceUpdateResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12]\n\x04List\x12$.fits.api.v1.TokenServiceListRequest\x1a%.fits.api.v1.TokenServiceListResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12\x63\n\x06Revoke\x12&.fits.api.v1.TokenServiceRevokeRequest\x1a\'.fits.api.v1.TokenServiceRevokeResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12\x66\n\x07Refresh\x12\'.fits.api.v1.TokenServiceRefreshRequest\x1a(.fits.api.v1.TokenServiceRefreshResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x42\x96\x01\n\x0f\x63om.fits.api.v1B\nTokenProtoP\x01Z)github.com/fi-ts/api/go/fits/api/v1;apiv1\xa2\x02\x03\x46\x41X\xaa\x02\x0b\x46its.Api.V1\xca\x02\x0b\x46its\\Api\\V1\xe2\x02\x17\x46its\\Api\\V1\\GPBMetadata\xea\x02\rFits::Api::V1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x66its/api/v1/token.proto\x12\x0b\x66its.api.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x18\x66its/api/v1/common.proto\x1a\"fits/api/v1/predefined_rules.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xd5\x07\n\x05Token\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x1e\n\x04user\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x04R\x04user\x12%\n\x04meta\x18\x03 \x01(\x0b\x32\x11.fits.api.v1.MetaR\x04meta\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12J\n\x0bpermissions\x18\x05 \x03(\x0b\x32\x1d.fits.api.v1.MethodPermissionB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x0bpermissions\x12\x34\n\x07\x65xpires\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65xpires\x12\x37\n\tissued_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08issuedAt\x12?\n\ntoken_type\x18\x08 \x01(\x0e\x32\x16.fits.api.v1.TokenTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\ttokenType\x12I\n\rproject_roles\x18\t \x03(\x0b\x32$.fits.api.v1.Token.ProjectRolesEntryR\x0cprojectRoles\x12\x46\n\x0ctenant_roles\x18\n \x03(\x0b\x32#.fits.api.v1.Token.TenantRolesEntryR\x0btenantRoles\x12\x44\n\nadmin_role\x18\x0b \x01(\x0e\x32\x16.fits.api.v1.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\tadminRole\x88\x01\x01\x1aY\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12.\n\x05value\x18\x02 \x01(\x0e\x32\x18.fits.api.v1.ProjectRoleR\x05value:\x02\x38\x01\x1aW\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12-\n\x05value\x18\x02 \x01(\x0e\x32\x17.fits.api.v1.TenantRoleR\x05value:\x02\x38\x01:\x9f\x01\xbaH\x9b\x01\x1a\x98\x01\n\x1btoken.permissions.usertoken\x12)token type user must not have permissions\x1aN(this.token_type == 2 && this.permissions.size() == 0) || this.token_type != 2B\r\n\x0b_admin_role\"[\n\x10MethodPermission\x12\"\n\x07subject\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x02R\x07subject\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"\x19\n\x17TokenServiceListRequest\"F\n\x18TokenServiceListResponse\x12*\n\x06tokens\x18\x01 \x03(\x0b\x32\x12.fits.api.v1.TokenR\x06tokens\"9\n\x19TokenServiceRevokeRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"\x1c\n\x1aTokenServiceRevokeResponse\"6\n\x16TokenServiceGetRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"C\n\x17TokenServiceGetResponse\x12(\n\x05token\x18\x01 \x01(\x0b\x32\x12.fits.api.v1.TokenR\x05token*P\n\tTokenType\x12\x1a\n\x16TOKEN_TYPE_UNSPECIFIED\x10\x00\x12\x12\n\x0eTOKEN_TYPE_API\x10\x01\x12\x13\n\x0fTOKEN_TYPE_USER\x10\x02\x32\xae\x02\n\x0cTokenService\x12Z\n\x03Get\x12#.fits.api.v1.TokenServiceGetRequest\x1a$.fits.api.v1.TokenServiceGetResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12]\n\x04List\x12$.fits.api.v1.TokenServiceListRequest\x1a%.fits.api.v1.TokenServiceListResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12\x63\n\x06Revoke\x12&.fits.api.v1.TokenServiceRevokeRequest\x1a\'.fits.api.v1.TokenServiceRevokeResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x42\x96\x01\n\x0f\x63om.fits.api.v1B\nTokenProtoP\x01Z)github.com/fi-ts/api/go/fits/api/v1;apiv1\xa2\x02\x03\x46\x41X\xaa\x02\x0b\x46its.Api.V1\xca\x02\x0b\x46its\\Api\\V1\xe2\x02\x17\x46its\\Api\\V1\\GPBMetadata\xea\x02\rFits::Api::V1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -55,100 +54,42 @@ _globals['_TOKEN'].fields_by_name['admin_role']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_TOKEN']._loaded_options = None _globals['_TOKEN']._serialized_options = b'\272H\233\001\032\230\001\n\033token.permissions.usertoken\022)token type user must not have permissions\032N(this.token_type == 2 && this.permissions.size() == 0) || this.token_type != 2' - _globals['_TOKENSERVICECREATEREQUEST_PROJECTROLESENTRY']._loaded_options = None - _globals['_TOKENSERVICECREATEREQUEST_PROJECTROLESENTRY']._serialized_options = b'8\001' - _globals['_TOKENSERVICECREATEREQUEST_TENANTROLESENTRY']._loaded_options = None - _globals['_TOKENSERVICECREATEREQUEST_TENANTROLESENTRY']._serialized_options = b'8\001' - _globals['_TOKENSERVICECREATEREQUEST'].fields_by_name['description']._loaded_options = None - _globals['_TOKENSERVICECREATEREQUEST'].fields_by_name['description']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001' - _globals['_TOKENSERVICECREATEREQUEST'].fields_by_name['permissions']._loaded_options = None - _globals['_TOKENSERVICECREATEREQUEST'].fields_by_name['permissions']._serialized_options = b'\272H\005\222\001\002\020d' - _globals['_TOKENSERVICECREATEREQUEST'].fields_by_name['expires']._loaded_options = None - _globals['_TOKENSERVICECREATEREQUEST'].fields_by_name['expires']._serialized_options = b'\272H\017\252\001\014\032\005\010\201\347\204\0172\003\010\330\004' - _globals['_TOKENSERVICECREATEREQUEST'].fields_by_name['project_roles']._loaded_options = None - _globals['_TOKENSERVICECREATEREQUEST'].fields_by_name['project_roles']._serialized_options = b'\272H\027\232\001\024\"\005r\003\260\001\001*\005\202\001\002\020\001\300\225\270\261\002\001' - _globals['_TOKENSERVICECREATEREQUEST'].fields_by_name['tenant_roles']._loaded_options = None - _globals['_TOKENSERVICECREATEREQUEST'].fields_by_name['tenant_roles']._serialized_options = b'\272H\031\232\001\026\"\007r\005\020\003\030\200\001*\005\202\001\002\020\001\300\225\270\261\002\001' - _globals['_TOKENSERVICECREATEREQUEST'].fields_by_name['admin_role']._loaded_options = None - _globals['_TOKENSERVICECREATEREQUEST'].fields_by_name['admin_role']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_METHODPERMISSION'].fields_by_name['subject']._loaded_options = None _globals['_METHODPERMISSION'].fields_by_name['subject']._serialized_options = b'\272H\005r\003\030\200\002' _globals['_METHODPERMISSION'].fields_by_name['methods']._loaded_options = None _globals['_METHODPERMISSION'].fields_by_name['methods']._serialized_options = b'\272H\006\222\001\003\020\364\003' _globals['_TOKENSERVICEREVOKEREQUEST'].fields_by_name['uuid']._loaded_options = None _globals['_TOKENSERVICEREVOKEREQUEST'].fields_by_name['uuid']._serialized_options = b'\272H\005r\003\260\001\001' - _globals['_TOKENSERVICEUPDATEREQUEST_PROJECTROLESENTRY']._loaded_options = None - _globals['_TOKENSERVICEUPDATEREQUEST_PROJECTROLESENTRY']._serialized_options = b'8\001' - _globals['_TOKENSERVICEUPDATEREQUEST_TENANTROLESENTRY']._loaded_options = None - _globals['_TOKENSERVICEUPDATEREQUEST_TENANTROLESENTRY']._serialized_options = b'8\001' - _globals['_TOKENSERVICEUPDATEREQUEST'].fields_by_name['uuid']._loaded_options = None - _globals['_TOKENSERVICEUPDATEREQUEST'].fields_by_name['uuid']._serialized_options = b'\272H\005r\003\260\001\001' - _globals['_TOKENSERVICEUPDATEREQUEST'].fields_by_name['update_meta']._loaded_options = None - _globals['_TOKENSERVICEUPDATEREQUEST'].fields_by_name['update_meta']._serialized_options = b'\272H\003\310\001\000' - _globals['_TOKENSERVICEUPDATEREQUEST'].fields_by_name['description']._loaded_options = None - _globals['_TOKENSERVICEUPDATEREQUEST'].fields_by_name['description']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001' - _globals['_TOKENSERVICEUPDATEREQUEST'].fields_by_name['project_roles']._loaded_options = None - _globals['_TOKENSERVICEUPDATEREQUEST'].fields_by_name['project_roles']._serialized_options = b'\272H\027\232\001\024\"\005r\003\260\001\001*\005\202\001\002\020\001\300\225\270\261\002\001' - _globals['_TOKENSERVICEUPDATEREQUEST'].fields_by_name['tenant_roles']._loaded_options = None - _globals['_TOKENSERVICEUPDATEREQUEST'].fields_by_name['tenant_roles']._serialized_options = b'\272H\031\232\001\026\"\007r\005\020\003\030\200\001*\005\202\001\002\020\001\300\225\270\261\002\001' - _globals['_TOKENSERVICEUPDATEREQUEST'].fields_by_name['admin_role']._loaded_options = None - _globals['_TOKENSERVICEUPDATEREQUEST'].fields_by_name['admin_role']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_TOKENSERVICEGETREQUEST'].fields_by_name['uuid']._loaded_options = None _globals['_TOKENSERVICEGETREQUEST'].fields_by_name['uuid']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_TOKENSERVICE'].methods_by_name['Get']._loaded_options = None _globals['_TOKENSERVICE'].methods_by_name['Get']._serialized_options = b'\330\363\030\002\340\363\030\001' - _globals['_TOKENSERVICE'].methods_by_name['Create']._loaded_options = None - _globals['_TOKENSERVICE'].methods_by_name['Create']._serialized_options = b'\330\363\030\002\340\363\030\001' - _globals['_TOKENSERVICE'].methods_by_name['Update']._loaded_options = None - _globals['_TOKENSERVICE'].methods_by_name['Update']._serialized_options = b'\330\363\030\002\340\363\030\001' _globals['_TOKENSERVICE'].methods_by_name['List']._loaded_options = None _globals['_TOKENSERVICE'].methods_by_name['List']._serialized_options = b'\330\363\030\002\340\363\030\001' _globals['_TOKENSERVICE'].methods_by_name['Revoke']._loaded_options = None _globals['_TOKENSERVICE'].methods_by_name['Revoke']._serialized_options = b'\330\363\030\002\340\363\030\001' - _globals['_TOKENSERVICE'].methods_by_name['Refresh']._loaded_options = None - _globals['_TOKENSERVICE'].methods_by_name['Refresh']._serialized_options = b'\330\363\030\002\340\363\030\001' - _globals['_TOKENTYPE']._serialized_start=3481 - _globals['_TOKENTYPE']._serialized_end=3561 - _globals['_TOKEN']._serialized_start=197 - _globals['_TOKEN']._serialized_end=1178 - _globals['_TOKEN_PROJECTROLESENTRY']._serialized_start=823 - _globals['_TOKEN_PROJECTROLESENTRY']._serialized_end=912 - _globals['_TOKEN_TENANTROLESENTRY']._serialized_start=914 - _globals['_TOKEN_TENANTROLESENTRY']._serialized_end=1001 - _globals['_TOKENSERVICECREATEREQUEST']._serialized_start=1181 - _globals['_TOKENSERVICECREATEREQUEST']._serialized_end=1958 - _globals['_TOKENSERVICECREATEREQUEST_PROJECTROLESENTRY']._serialized_start=823 - _globals['_TOKENSERVICECREATEREQUEST_PROJECTROLESENTRY']._serialized_end=912 - _globals['_TOKENSERVICECREATEREQUEST_TENANTROLESENTRY']._serialized_start=914 - _globals['_TOKENSERVICECREATEREQUEST_TENANTROLESENTRY']._serialized_end=1001 - _globals['_METHODPERMISSION']._serialized_start=1960 - _globals['_METHODPERMISSION']._serialized_end=2051 - _globals['_TOKENSERVICECREATERESPONSE']._serialized_start=2053 - _globals['_TOKENSERVICECREATERESPONSE']._serialized_end=2147 - _globals['_TOKENSERVICELISTREQUEST']._serialized_start=2149 - _globals['_TOKENSERVICELISTREQUEST']._serialized_end=2174 - _globals['_TOKENSERVICELISTRESPONSE']._serialized_start=2176 - _globals['_TOKENSERVICELISTRESPONSE']._serialized_end=2246 - _globals['_TOKENSERVICEREVOKEREQUEST']._serialized_start=2248 - _globals['_TOKENSERVICEREVOKEREQUEST']._serialized_end=2305 - _globals['_TOKENSERVICEREVOKERESPONSE']._serialized_start=2307 - _globals['_TOKENSERVICEREVOKERESPONSE']._serialized_end=2335 - _globals['_TOKENSERVICEUPDATEREQUEST']._serialized_start=2338 - _globals['_TOKENSERVICEUPDATEREQUEST']._serialized_end=3155 - _globals['_TOKENSERVICEUPDATEREQUEST_PROJECTROLESENTRY']._serialized_start=823 - _globals['_TOKENSERVICEUPDATEREQUEST_PROJECTROLESENTRY']._serialized_end=912 - _globals['_TOKENSERVICEUPDATEREQUEST_TENANTROLESENTRY']._serialized_start=914 - _globals['_TOKENSERVICEUPDATEREQUEST_TENANTROLESENTRY']._serialized_end=1001 - _globals['_TOKENSERVICEUPDATERESPONSE']._serialized_start=3157 - _globals['_TOKENSERVICEUPDATERESPONSE']._serialized_end=3227 - _globals['_TOKENSERVICEGETREQUEST']._serialized_start=3229 - _globals['_TOKENSERVICEGETREQUEST']._serialized_end=3283 - _globals['_TOKENSERVICEGETRESPONSE']._serialized_start=3285 - _globals['_TOKENSERVICEGETRESPONSE']._serialized_end=3352 - _globals['_TOKENSERVICEREFRESHREQUEST']._serialized_start=3354 - _globals['_TOKENSERVICEREFRESHREQUEST']._serialized_end=3382 - _globals['_TOKENSERVICEREFRESHRESPONSE']._serialized_start=3384 - _globals['_TOKENSERVICEREFRESHRESPONSE']._serialized_end=3479 - _globals['_TOKENSERVICE']._serialized_start=3564 - _globals['_TOKENSERVICE']._serialized_end=4172 + _globals['_TOKENTYPE']._serialized_start=1554 + _globals['_TOKENTYPE']._serialized_end=1634 + _globals['_TOKEN']._serialized_start=165 + _globals['_TOKEN']._serialized_end=1146 + _globals['_TOKEN_PROJECTROLESENTRY']._serialized_start=791 + _globals['_TOKEN_PROJECTROLESENTRY']._serialized_end=880 + _globals['_TOKEN_TENANTROLESENTRY']._serialized_start=882 + _globals['_TOKEN_TENANTROLESENTRY']._serialized_end=969 + _globals['_METHODPERMISSION']._serialized_start=1148 + _globals['_METHODPERMISSION']._serialized_end=1239 + _globals['_TOKENSERVICELISTREQUEST']._serialized_start=1241 + _globals['_TOKENSERVICELISTREQUEST']._serialized_end=1266 + _globals['_TOKENSERVICELISTRESPONSE']._serialized_start=1268 + _globals['_TOKENSERVICELISTRESPONSE']._serialized_end=1338 + _globals['_TOKENSERVICEREVOKEREQUEST']._serialized_start=1340 + _globals['_TOKENSERVICEREVOKEREQUEST']._serialized_end=1397 + _globals['_TOKENSERVICEREVOKERESPONSE']._serialized_start=1399 + _globals['_TOKENSERVICEREVOKERESPONSE']._serialized_end=1427 + _globals['_TOKENSERVICEGETREQUEST']._serialized_start=1429 + _globals['_TOKENSERVICEGETREQUEST']._serialized_end=1483 + _globals['_TOKENSERVICEGETRESPONSE']._serialized_start=1485 + _globals['_TOKENSERVICEGETRESPONSE']._serialized_end=1552 + _globals['_TOKENSERVICE']._serialized_start=1637 + _globals['_TOKENSERVICE']._serialized_end=1939 # @@protoc_insertion_point(module_scope) diff --git a/python/fits/api/v1/token_pb2.pyi b/python/fits/api/v1/token_pb2.pyi index 636d454..8005177 100644 --- a/python/fits/api/v1/token_pb2.pyi +++ b/python/fits/api/v1/token_pb2.pyi @@ -3,7 +3,6 @@ import datetime from buf.validate import validate_pb2 as _validate_pb2 from fits.api.v1 import common_pb2 as _common_pb2 from fits.api.v1 import predefined_rules_pb2 as _predefined_rules_pb2 -from google.protobuf import duration_pb2 as _duration_pb2 from google.protobuf import timestamp_pb2 as _timestamp_pb2 from google.protobuf.internal import containers as _containers from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper @@ -63,38 +62,6 @@ class Token(_message.Message): admin_role: _common_pb2.AdminRole def __init__(self, uuid: _Optional[str] = ..., user: _Optional[str] = ..., meta: _Optional[_Union[_common_pb2.Meta, _Mapping]] = ..., description: _Optional[str] = ..., permissions: _Optional[_Iterable[_Union[MethodPermission, _Mapping]]] = ..., expires: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., issued_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., token_type: _Optional[_Union[TokenType, str]] = ..., project_roles: _Optional[_Mapping[str, _common_pb2.ProjectRole]] = ..., tenant_roles: _Optional[_Mapping[str, _common_pb2.TenantRole]] = ..., admin_role: _Optional[_Union[_common_pb2.AdminRole, str]] = ...) -> None: ... -class TokenServiceCreateRequest(_message.Message): - __slots__ = ("description", "permissions", "expires", "project_roles", "tenant_roles", "admin_role", "labels") - class ProjectRolesEntry(_message.Message): - __slots__ = ("key", "value") - KEY_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - key: str - value: _common_pb2.ProjectRole - def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_common_pb2.ProjectRole, str]] = ...) -> None: ... - class TenantRolesEntry(_message.Message): - __slots__ = ("key", "value") - KEY_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - key: str - value: _common_pb2.TenantRole - def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_common_pb2.TenantRole, str]] = ...) -> None: ... - DESCRIPTION_FIELD_NUMBER: _ClassVar[int] - PERMISSIONS_FIELD_NUMBER: _ClassVar[int] - EXPIRES_FIELD_NUMBER: _ClassVar[int] - PROJECT_ROLES_FIELD_NUMBER: _ClassVar[int] - TENANT_ROLES_FIELD_NUMBER: _ClassVar[int] - ADMIN_ROLE_FIELD_NUMBER: _ClassVar[int] - LABELS_FIELD_NUMBER: _ClassVar[int] - description: str - permissions: _containers.RepeatedCompositeFieldContainer[MethodPermission] - expires: _duration_pb2.Duration - project_roles: _containers.ScalarMap[str, _common_pb2.ProjectRole] - tenant_roles: _containers.ScalarMap[str, _common_pb2.TenantRole] - admin_role: _common_pb2.AdminRole - labels: _common_pb2.Labels - def __init__(self, description: _Optional[str] = ..., permissions: _Optional[_Iterable[_Union[MethodPermission, _Mapping]]] = ..., expires: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., project_roles: _Optional[_Mapping[str, _common_pb2.ProjectRole]] = ..., tenant_roles: _Optional[_Mapping[str, _common_pb2.TenantRole]] = ..., admin_role: _Optional[_Union[_common_pb2.AdminRole, str]] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ...) -> None: ... - class MethodPermission(_message.Message): __slots__ = ("subject", "methods") SUBJECT_FIELD_NUMBER: _ClassVar[int] @@ -103,14 +70,6 @@ class MethodPermission(_message.Message): methods: _containers.RepeatedScalarFieldContainer[str] def __init__(self, subject: _Optional[str] = ..., methods: _Optional[_Iterable[str]] = ...) -> None: ... -class TokenServiceCreateResponse(_message.Message): - __slots__ = ("token", "secret") - TOKEN_FIELD_NUMBER: _ClassVar[int] - SECRET_FIELD_NUMBER: _ClassVar[int] - token: Token - secret: str - def __init__(self, token: _Optional[_Union[Token, _Mapping]] = ..., secret: _Optional[str] = ...) -> None: ... - class TokenServiceListRequest(_message.Message): __slots__ = () def __init__(self) -> None: ... @@ -131,46 +90,6 @@ class TokenServiceRevokeResponse(_message.Message): __slots__ = () def __init__(self) -> None: ... -class TokenServiceUpdateRequest(_message.Message): - __slots__ = ("uuid", "update_meta", "description", "permissions", "project_roles", "tenant_roles", "admin_role", "labels") - class ProjectRolesEntry(_message.Message): - __slots__ = ("key", "value") - KEY_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - key: str - value: _common_pb2.ProjectRole - def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_common_pb2.ProjectRole, str]] = ...) -> None: ... - class TenantRolesEntry(_message.Message): - __slots__ = ("key", "value") - KEY_FIELD_NUMBER: _ClassVar[int] - VALUE_FIELD_NUMBER: _ClassVar[int] - key: str - value: _common_pb2.TenantRole - def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_common_pb2.TenantRole, str]] = ...) -> None: ... - UUID_FIELD_NUMBER: _ClassVar[int] - UPDATE_META_FIELD_NUMBER: _ClassVar[int] - DESCRIPTION_FIELD_NUMBER: _ClassVar[int] - PERMISSIONS_FIELD_NUMBER: _ClassVar[int] - PROJECT_ROLES_FIELD_NUMBER: _ClassVar[int] - TENANT_ROLES_FIELD_NUMBER: _ClassVar[int] - ADMIN_ROLE_FIELD_NUMBER: _ClassVar[int] - LABELS_FIELD_NUMBER: _ClassVar[int] - uuid: str - update_meta: _common_pb2.UpdateMeta - description: str - permissions: _containers.RepeatedCompositeFieldContainer[MethodPermission] - project_roles: _containers.ScalarMap[str, _common_pb2.ProjectRole] - tenant_roles: _containers.ScalarMap[str, _common_pb2.TenantRole] - admin_role: _common_pb2.AdminRole - labels: _common_pb2.UpdateLabels - def __init__(self, uuid: _Optional[str] = ..., update_meta: _Optional[_Union[_common_pb2.UpdateMeta, _Mapping]] = ..., description: _Optional[str] = ..., permissions: _Optional[_Iterable[_Union[MethodPermission, _Mapping]]] = ..., project_roles: _Optional[_Mapping[str, _common_pb2.ProjectRole]] = ..., tenant_roles: _Optional[_Mapping[str, _common_pb2.TenantRole]] = ..., admin_role: _Optional[_Union[_common_pb2.AdminRole, str]] = ..., labels: _Optional[_Union[_common_pb2.UpdateLabels, _Mapping]] = ...) -> None: ... - -class TokenServiceUpdateResponse(_message.Message): - __slots__ = ("token",) - TOKEN_FIELD_NUMBER: _ClassVar[int] - token: Token - def __init__(self, token: _Optional[_Union[Token, _Mapping]] = ...) -> None: ... - class TokenServiceGetRequest(_message.Message): __slots__ = ("uuid",) UUID_FIELD_NUMBER: _ClassVar[int] @@ -182,15 +101,3 @@ class TokenServiceGetResponse(_message.Message): TOKEN_FIELD_NUMBER: _ClassVar[int] token: Token def __init__(self, token: _Optional[_Union[Token, _Mapping]] = ...) -> None: ... - -class TokenServiceRefreshRequest(_message.Message): - __slots__ = () - def __init__(self) -> None: ... - -class TokenServiceRefreshResponse(_message.Message): - __slots__ = ("token", "secret") - TOKEN_FIELD_NUMBER: _ClassVar[int] - SECRET_FIELD_NUMBER: _ClassVar[int] - token: Token - secret: str - def __init__(self, token: _Optional[_Union[Token, _Mapping]] = ..., secret: _Optional[str] = ...) -> None: ... From 0b5eed46c03b453d2d4ff312603b5de5bad1c878 Mon Sep 17 00:00:00 2001 From: Valentin Knabel Date: Thu, 24 Sep 2026 11:16:36 +0200 Subject: [PATCH 2/2] feat!: remove extraneous tenant endpoints --- doc/index.html | 154 -------- go/fits/api/v1/apiv1connect/tenant.connect.go | 68 ---- go/fits/api/v1/tenant.pb.go | 342 +++--------------- go/permissions/servicepermissions.go | 8 - js/fits/api/v1/tenant_pb.d.ts | 116 ------ js/fits/api/v1/tenant_pb.js | 31 +- js/fits/api/v1/tenant_pb.ts | 143 +------- proto/fits/api/v1/tenant.proto | 44 --- python/fits/api/v1/tenant_connect.py | 130 ------- python/fits/api/v1/tenant_pb2.py | 53 +-- python/fits/api/v1/tenant_pb2.pyi | 33 -- 11 files changed, 72 insertions(+), 1050 deletions(-) diff --git a/doc/index.html b/doc/index.html index c340031..dbfe8c3 100644 --- a/doc/index.html +++ b/doc/index.html @@ -607,22 +607,6 @@

    Table of Contents

    MTenant
  • -
  • - MTenantServiceCreateRequest -
  • - -
  • - MTenantServiceCreateResponse -
  • - -
  • - MTenantServiceDeleteRequest -
  • - -
  • - MTenantServiceDeleteResponse -
  • -
  • MTenantServiceGetRequest
  • @@ -3275,130 +3259,6 @@

    Tenant

    -

    TenantServiceCreateRequest

    -

    TenantServiceCreateRequest is the request payload of the tenant create request

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    namestring

    Name of this tenant

    descriptionstringoptional

    Description of this tenant

    emailstringoptional

    Email of the tenant, if not set will be inherited from the creator

    avatar_urlstringoptional

    AvatarUrl of the tenant

    labelsLabels

    Labels on the tenant

    - - - - - -

    TenantServiceCreateResponse

    -

    TenantServiceCreateResponse is the response payload of the tenant create request

    - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    tenantTenant

    Tenant is the tenant

    - - - - - -

    TenantServiceDeleteRequest

    -

    TenantServiceDeleteRequest is the request payload of the tenant delete request

    - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    loginstring

    Login of the tenant

    - - - - - -

    TenantServiceDeleteResponse

    -

    TenantServiceDeleteResponse is the response payload of the tenant delete request

    - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    tenantTenant

    Tenant is the tenant

    - - - - -

    TenantServiceGetRequest

    TenantServiceGetRequest is the request payload of the tenant get request

    @@ -3613,13 +3473,6 @@

    TenantService

    - - Create - TenantServiceCreateRequest - TenantServiceCreateResponse -

    Creates a new tenant.

    - - List TenantServiceListRequest @@ -3641,13 +3494,6 @@

    TenantService

    Update a tenant

    - - Delete - TenantServiceDeleteRequest - TenantServiceDeleteResponse -

    Delete a tenant

    - - diff --git a/go/fits/api/v1/apiv1connect/tenant.connect.go b/go/fits/api/v1/apiv1connect/tenant.connect.go index f4e9feb..9a67cbe 100644 --- a/go/fits/api/v1/apiv1connect/tenant.connect.go +++ b/go/fits/api/v1/apiv1connect/tenant.connect.go @@ -33,30 +33,22 @@ const ( // reflection-formatted method names, remove the leading slash and convert the remaining slash to a // period. const ( - // TenantServiceCreateProcedure is the fully-qualified name of the TenantService's Create RPC. - TenantServiceCreateProcedure = "/fits.api.v1.TenantService/Create" // TenantServiceListProcedure is the fully-qualified name of the TenantService's List RPC. TenantServiceListProcedure = "/fits.api.v1.TenantService/List" // TenantServiceGetProcedure is the fully-qualified name of the TenantService's Get RPC. TenantServiceGetProcedure = "/fits.api.v1.TenantService/Get" // TenantServiceUpdateProcedure is the fully-qualified name of the TenantService's Update RPC. TenantServiceUpdateProcedure = "/fits.api.v1.TenantService/Update" - // TenantServiceDeleteProcedure is the fully-qualified name of the TenantService's Delete RPC. - TenantServiceDeleteProcedure = "/fits.api.v1.TenantService/Delete" ) // TenantServiceClient is a client for the fits.api.v1.TenantService service. type TenantServiceClient interface { - // Creates a new tenant. - Create(context.Context, *v1.TenantServiceCreateRequest) (*v1.TenantServiceCreateResponse, error) // Returns the list of tenants. List(context.Context, *v1.TenantServiceListRequest) (*v1.TenantServiceListResponse, error) // Get a tenant Get(context.Context, *v1.TenantServiceGetRequest) (*v1.TenantServiceGetResponse, error) // Update a tenant Update(context.Context, *v1.TenantServiceUpdateRequest) (*v1.TenantServiceUpdateResponse, error) - // Delete a tenant - Delete(context.Context, *v1.TenantServiceDeleteRequest) (*v1.TenantServiceDeleteResponse, error) } // NewTenantServiceClient constructs a client for the fits.api.v1.TenantService service. By default, @@ -70,12 +62,6 @@ func NewTenantServiceClient(httpClient connect.HTTPClient, baseURL string, opts baseURL = strings.TrimRight(baseURL, "/") tenantServiceMethods := v1.File_fits_api_v1_tenant_proto.Services().ByName("TenantService").Methods() return &tenantServiceClient{ - create: connect.NewClient[v1.TenantServiceCreateRequest, v1.TenantServiceCreateResponse]( - httpClient, - baseURL+TenantServiceCreateProcedure, - connect.WithSchema(tenantServiceMethods.ByName("Create")), - connect.WithClientOptions(opts...), - ), list: connect.NewClient[v1.TenantServiceListRequest, v1.TenantServiceListResponse]( httpClient, baseURL+TenantServiceListProcedure, @@ -94,31 +80,14 @@ func NewTenantServiceClient(httpClient connect.HTTPClient, baseURL string, opts connect.WithSchema(tenantServiceMethods.ByName("Update")), connect.WithClientOptions(opts...), ), - delete: connect.NewClient[v1.TenantServiceDeleteRequest, v1.TenantServiceDeleteResponse]( - httpClient, - baseURL+TenantServiceDeleteProcedure, - connect.WithSchema(tenantServiceMethods.ByName("Delete")), - connect.WithClientOptions(opts...), - ), } } // tenantServiceClient implements TenantServiceClient. type tenantServiceClient struct { - create *connect.Client[v1.TenantServiceCreateRequest, v1.TenantServiceCreateResponse] list *connect.Client[v1.TenantServiceListRequest, v1.TenantServiceListResponse] get *connect.Client[v1.TenantServiceGetRequest, v1.TenantServiceGetResponse] update *connect.Client[v1.TenantServiceUpdateRequest, v1.TenantServiceUpdateResponse] - delete *connect.Client[v1.TenantServiceDeleteRequest, v1.TenantServiceDeleteResponse] -} - -// Create calls fits.api.v1.TenantService.Create. -func (c *tenantServiceClient) Create(ctx context.Context, req *v1.TenantServiceCreateRequest) (*v1.TenantServiceCreateResponse, error) { - response, err := c.create.CallUnary(ctx, connect.NewRequest(req)) - if response != nil { - return response.Msg, err - } - return nil, err } // List calls fits.api.v1.TenantService.List. @@ -148,27 +117,14 @@ func (c *tenantServiceClient) Update(ctx context.Context, req *v1.TenantServiceU return nil, err } -// Delete calls fits.api.v1.TenantService.Delete. -func (c *tenantServiceClient) Delete(ctx context.Context, req *v1.TenantServiceDeleteRequest) (*v1.TenantServiceDeleteResponse, error) { - response, err := c.delete.CallUnary(ctx, connect.NewRequest(req)) - if response != nil { - return response.Msg, err - } - return nil, err -} - // TenantServiceHandler is an implementation of the fits.api.v1.TenantService service. type TenantServiceHandler interface { - // Creates a new tenant. - Create(context.Context, *v1.TenantServiceCreateRequest) (*v1.TenantServiceCreateResponse, error) // Returns the list of tenants. List(context.Context, *v1.TenantServiceListRequest) (*v1.TenantServiceListResponse, error) // Get a tenant Get(context.Context, *v1.TenantServiceGetRequest) (*v1.TenantServiceGetResponse, error) // Update a tenant Update(context.Context, *v1.TenantServiceUpdateRequest) (*v1.TenantServiceUpdateResponse, error) - // Delete a tenant - Delete(context.Context, *v1.TenantServiceDeleteRequest) (*v1.TenantServiceDeleteResponse, error) } // NewTenantServiceHandler builds an HTTP handler from the service implementation. It returns the @@ -178,12 +134,6 @@ type TenantServiceHandler interface { // and JSON codecs. They also support gzip compression. func NewTenantServiceHandler(svc TenantServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { tenantServiceMethods := v1.File_fits_api_v1_tenant_proto.Services().ByName("TenantService").Methods() - tenantServiceCreateHandler := connect.NewUnaryHandlerSimple( - TenantServiceCreateProcedure, - svc.Create, - connect.WithSchema(tenantServiceMethods.ByName("Create")), - connect.WithHandlerOptions(opts...), - ) tenantServiceListHandler := connect.NewUnaryHandlerSimple( TenantServiceListProcedure, svc.List, @@ -202,24 +152,14 @@ func NewTenantServiceHandler(svc TenantServiceHandler, opts ...connect.HandlerOp connect.WithSchema(tenantServiceMethods.ByName("Update")), connect.WithHandlerOptions(opts...), ) - tenantServiceDeleteHandler := connect.NewUnaryHandlerSimple( - TenantServiceDeleteProcedure, - svc.Delete, - connect.WithSchema(tenantServiceMethods.ByName("Delete")), - connect.WithHandlerOptions(opts...), - ) return "/fits.api.v1.TenantService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { - case TenantServiceCreateProcedure: - tenantServiceCreateHandler.ServeHTTP(w, r) case TenantServiceListProcedure: tenantServiceListHandler.ServeHTTP(w, r) case TenantServiceGetProcedure: tenantServiceGetHandler.ServeHTTP(w, r) case TenantServiceUpdateProcedure: tenantServiceUpdateHandler.ServeHTTP(w, r) - case TenantServiceDeleteProcedure: - tenantServiceDeleteHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -229,10 +169,6 @@ func NewTenantServiceHandler(svc TenantServiceHandler, opts ...connect.HandlerOp // UnimplementedTenantServiceHandler returns CodeUnimplemented from all methods. type UnimplementedTenantServiceHandler struct{} -func (UnimplementedTenantServiceHandler) Create(context.Context, *v1.TenantServiceCreateRequest) (*v1.TenantServiceCreateResponse, error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("fits.api.v1.TenantService.Create is not implemented")) -} - func (UnimplementedTenantServiceHandler) List(context.Context, *v1.TenantServiceListRequest) (*v1.TenantServiceListResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("fits.api.v1.TenantService.List is not implemented")) } @@ -244,7 +180,3 @@ func (UnimplementedTenantServiceHandler) Get(context.Context, *v1.TenantServiceG func (UnimplementedTenantServiceHandler) Update(context.Context, *v1.TenantServiceUpdateRequest) (*v1.TenantServiceUpdateResponse, error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("fits.api.v1.TenantService.Update is not implemented")) } - -func (UnimplementedTenantServiceHandler) Delete(context.Context, *v1.TenantServiceDeleteRequest) (*v1.TenantServiceDeleteResponse, error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("fits.api.v1.TenantService.Delete is not implemented")) -} diff --git a/go/fits/api/v1/tenant.pb.go b/go/fits/api/v1/tenant.pb.go index 7280b07..36636e2 100644 --- a/go/fits/api/v1/tenant.pb.go +++ b/go/fits/api/v1/tenant.pb.go @@ -10,7 +10,6 @@ import ( _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - _ "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" unsafe "unsafe" @@ -233,88 +232,6 @@ func (x *TenantServiceGetRequest) GetLogin() string { return "" } -// TenantServiceCreateRequest is the request payload of the tenant create request -type TenantServiceCreateRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Name of this tenant - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Description of this tenant - Description *string `protobuf:"bytes,2,opt,name=description,proto3,oneof" json:"description,omitempty"` - // Email of the tenant, if not set will be inherited from the creator - Email *string `protobuf:"bytes,3,opt,name=email,proto3,oneof" json:"email,omitempty"` - // AvatarUrl of the tenant - AvatarUrl *string `protobuf:"bytes,4,opt,name=avatar_url,json=avatarUrl,proto3,oneof" json:"avatar_url,omitempty"` - // Labels on the tenant - Labels *Labels `protobuf:"bytes,5,opt,name=labels,proto3" json:"labels,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TenantServiceCreateRequest) Reset() { - *x = TenantServiceCreateRequest{} - mi := &file_fits_api_v1_tenant_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TenantServiceCreateRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TenantServiceCreateRequest) ProtoMessage() {} - -func (x *TenantServiceCreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_tenant_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TenantServiceCreateRequest.ProtoReflect.Descriptor instead. -func (*TenantServiceCreateRequest) Descriptor() ([]byte, []int) { - return file_fits_api_v1_tenant_proto_rawDescGZIP(), []int{3} -} - -func (x *TenantServiceCreateRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *TenantServiceCreateRequest) GetDescription() string { - if x != nil && x.Description != nil { - return *x.Description - } - return "" -} - -func (x *TenantServiceCreateRequest) GetEmail() string { - if x != nil && x.Email != nil { - return *x.Email - } - return "" -} - -func (x *TenantServiceCreateRequest) GetAvatarUrl() string { - if x != nil && x.AvatarUrl != nil { - return *x.AvatarUrl - } - return "" -} - -func (x *TenantServiceCreateRequest) GetLabels() *Labels { - if x != nil { - return x.Labels - } - return nil -} - // TenantServiceUpdateRequest is the request payload of the tenant update request type TenantServiceUpdateRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -338,7 +255,7 @@ type TenantServiceUpdateRequest struct { func (x *TenantServiceUpdateRequest) Reset() { *x = TenantServiceUpdateRequest{} - mi := &file_fits_api_v1_tenant_proto_msgTypes[4] + mi := &file_fits_api_v1_tenant_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -350,7 +267,7 @@ func (x *TenantServiceUpdateRequest) String() string { func (*TenantServiceUpdateRequest) ProtoMessage() {} func (x *TenantServiceUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_tenant_proto_msgTypes[4] + mi := &file_fits_api_v1_tenant_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -363,7 +280,7 @@ func (x *TenantServiceUpdateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantServiceUpdateRequest.ProtoReflect.Descriptor instead. func (*TenantServiceUpdateRequest) Descriptor() ([]byte, []int) { - return file_fits_api_v1_tenant_proto_rawDescGZIP(), []int{4} + return file_fits_api_v1_tenant_proto_rawDescGZIP(), []int{3} } func (x *TenantServiceUpdateRequest) GetLogin() string { @@ -415,52 +332,6 @@ func (x *TenantServiceUpdateRequest) GetLabels() *UpdateLabels { return nil } -// TenantServiceDeleteRequest is the request payload of the tenant delete request -type TenantServiceDeleteRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Login of the tenant - Login string `protobuf:"bytes,1,opt,name=login,proto3" json:"login,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TenantServiceDeleteRequest) Reset() { - *x = TenantServiceDeleteRequest{} - mi := &file_fits_api_v1_tenant_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TenantServiceDeleteRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TenantServiceDeleteRequest) ProtoMessage() {} - -func (x *TenantServiceDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_tenant_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TenantServiceDeleteRequest.ProtoReflect.Descriptor instead. -func (*TenantServiceDeleteRequest) Descriptor() ([]byte, []int) { - return file_fits_api_v1_tenant_proto_rawDescGZIP(), []int{5} -} - -func (x *TenantServiceDeleteRequest) GetLogin() string { - if x != nil { - return x.Login - } - return "" -} - // TenantServiceGetResponse is the response payload of the tenant get request type TenantServiceGetResponse struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -472,7 +343,7 @@ type TenantServiceGetResponse struct { func (x *TenantServiceGetResponse) Reset() { *x = TenantServiceGetResponse{} - mi := &file_fits_api_v1_tenant_proto_msgTypes[6] + mi := &file_fits_api_v1_tenant_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -484,7 +355,7 @@ func (x *TenantServiceGetResponse) String() string { func (*TenantServiceGetResponse) ProtoMessage() {} func (x *TenantServiceGetResponse) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_tenant_proto_msgTypes[6] + mi := &file_fits_api_v1_tenant_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -497,7 +368,7 @@ func (x *TenantServiceGetResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantServiceGetResponse.ProtoReflect.Descriptor instead. func (*TenantServiceGetResponse) Descriptor() ([]byte, []int) { - return file_fits_api_v1_tenant_proto_rawDescGZIP(), []int{6} + return file_fits_api_v1_tenant_proto_rawDescGZIP(), []int{4} } func (x *TenantServiceGetResponse) GetTenant() *Tenant { @@ -518,7 +389,7 @@ type TenantServiceListResponse struct { func (x *TenantServiceListResponse) Reset() { *x = TenantServiceListResponse{} - mi := &file_fits_api_v1_tenant_proto_msgTypes[7] + mi := &file_fits_api_v1_tenant_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -530,7 +401,7 @@ func (x *TenantServiceListResponse) String() string { func (*TenantServiceListResponse) ProtoMessage() {} func (x *TenantServiceListResponse) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_tenant_proto_msgTypes[7] + mi := &file_fits_api_v1_tenant_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -543,7 +414,7 @@ func (x *TenantServiceListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantServiceListResponse.ProtoReflect.Descriptor instead. func (*TenantServiceListResponse) Descriptor() ([]byte, []int) { - return file_fits_api_v1_tenant_proto_rawDescGZIP(), []int{7} + return file_fits_api_v1_tenant_proto_rawDescGZIP(), []int{5} } func (x *TenantServiceListResponse) GetTenants() []*Tenant { @@ -553,52 +424,6 @@ func (x *TenantServiceListResponse) GetTenants() []*Tenant { return nil } -// TenantServiceCreateResponse is the response payload of the tenant create request -type TenantServiceCreateResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Tenant is the tenant - Tenant *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TenantServiceCreateResponse) Reset() { - *x = TenantServiceCreateResponse{} - mi := &file_fits_api_v1_tenant_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TenantServiceCreateResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TenantServiceCreateResponse) ProtoMessage() {} - -func (x *TenantServiceCreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_tenant_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TenantServiceCreateResponse.ProtoReflect.Descriptor instead. -func (*TenantServiceCreateResponse) Descriptor() ([]byte, []int) { - return file_fits_api_v1_tenant_proto_rawDescGZIP(), []int{8} -} - -func (x *TenantServiceCreateResponse) GetTenant() *Tenant { - if x != nil { - return x.Tenant - } - return nil -} - // TenantServiceUpdateResponse is the response payload of the tenant update request type TenantServiceUpdateResponse struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -610,7 +435,7 @@ type TenantServiceUpdateResponse struct { func (x *TenantServiceUpdateResponse) Reset() { *x = TenantServiceUpdateResponse{} - mi := &file_fits_api_v1_tenant_proto_msgTypes[9] + mi := &file_fits_api_v1_tenant_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -622,7 +447,7 @@ func (x *TenantServiceUpdateResponse) String() string { func (*TenantServiceUpdateResponse) ProtoMessage() {} func (x *TenantServiceUpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_tenant_proto_msgTypes[9] + mi := &file_fits_api_v1_tenant_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -635,7 +460,7 @@ func (x *TenantServiceUpdateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TenantServiceUpdateResponse.ProtoReflect.Descriptor instead. func (*TenantServiceUpdateResponse) Descriptor() ([]byte, []int) { - return file_fits_api_v1_tenant_proto_rawDescGZIP(), []int{9} + return file_fits_api_v1_tenant_proto_rawDescGZIP(), []int{6} } func (x *TenantServiceUpdateResponse) GetTenant() *Tenant { @@ -645,57 +470,11 @@ func (x *TenantServiceUpdateResponse) GetTenant() *Tenant { return nil } -// TenantServiceDeleteResponse is the response payload of the tenant delete request -type TenantServiceDeleteResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Tenant is the tenant - Tenant *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TenantServiceDeleteResponse) Reset() { - *x = TenantServiceDeleteResponse{} - mi := &file_fits_api_v1_tenant_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TenantServiceDeleteResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TenantServiceDeleteResponse) ProtoMessage() {} - -func (x *TenantServiceDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_fits_api_v1_tenant_proto_msgTypes[10] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TenantServiceDeleteResponse.ProtoReflect.Descriptor instead. -func (*TenantServiceDeleteResponse) Descriptor() ([]byte, []int) { - return file_fits_api_v1_tenant_proto_rawDescGZIP(), []int{10} -} - -func (x *TenantServiceDeleteResponse) GetTenant() *Tenant { - if x != nil { - return x.Tenant - } - return nil -} - var File_fits_api_v1_tenant_proto protoreflect.FileDescriptor const file_fits_api_v1_tenant_proto_rawDesc = "" + "\n" + - "\x18fits/api/v1/tenant.proto\x12\vfits.api.v1\x1a\x1bbuf/validate/validate.proto\x1a\x18fits/api/v1/common.proto\x1a\"fits/api/v1/predefined_rules.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xe9\x01\n" + + "\x18fits/api/v1/tenant.proto\x12\vfits.api.v1\x1a\x1bbuf/validate/validate.proto\x1a\x18fits/api/v1/common.proto\x1a\"fits/api/v1/predefined_rules.proto\"\xe9\x01\n" + "\x06Tenant\x12\x14\n" + "\x05login\x18\x01 \x01(\tR\x05login\x12%\n" + "\x04meta\x18\x02 \x01(\v2\x11.fits.api.v1.MetaR\x04meta\x12\x1f\n" + @@ -714,17 +493,7 @@ const file_fits_api_v1_tenant_proto_rawDesc = "" + "\x05_nameB\t\n" + "\a_labels\"/\n" + "\x17TenantServiceGetRequest\x12\x14\n" + - "\x05login\x18\x01 \x01(\tR\x05login\"\x8f\x02\n" + - "\x1aTenantServiceCreateRequest\x12\x1f\n" + - "\x04name\x18\x01 \x01(\tB\v\xbaH\br\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x122\n" + - "\vdescription\x18\x02 \x01(\tB\v\xbaH\br\x06ȳ\xae\xb1\x02\x01H\x00R\vdescription\x88\x01\x01\x12\"\n" + - "\x05email\x18\x03 \x01(\tB\a\xbaH\x04r\x02`\x01H\x01R\x05email\x88\x01\x01\x12\"\n" + - "\n" + - "avatar_url\x18\x04 \x01(\tH\x02R\tavatarUrl\x88\x01\x01\x12+\n" + - "\x06labels\x18\x05 \x01(\v2\x13.fits.api.v1.LabelsR\x06labelsB\x0e\n" + - "\f_descriptionB\b\n" + - "\x06_emailB\r\n" + - "\v_avatar_url\"\x8b\x03\n" + + "\x05login\x18\x01 \x01(\tR\x05login\"\x8b\x03\n" + "\x1aTenantServiceUpdateRequest\x12\x14\n" + "\x05login\x18\x01 \x01(\tR\x05login\x12@\n" + "\vupdate_meta\x18\x02 \x01(\v2\x17.fits.api.v1.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\n" + @@ -739,26 +508,17 @@ const file_fits_api_v1_tenant_proto_rawDesc = "" + "\x06_emailB\x0e\n" + "\f_descriptionB\r\n" + "\v_avatar_urlB\t\n" + - "\a_labels\"2\n" + - "\x1aTenantServiceDeleteRequest\x12\x14\n" + - "\x05login\x18\x01 \x01(\tR\x05login\"G\n" + + "\a_labels\"G\n" + "\x18TenantServiceGetResponse\x12+\n" + "\x06tenant\x18\x01 \x01(\v2\x13.fits.api.v1.TenantR\x06tenant\"J\n" + "\x19TenantServiceListResponse\x12-\n" + "\atenants\x18\x01 \x03(\v2\x13.fits.api.v1.TenantR\atenants\"J\n" + - "\x1bTenantServiceCreateResponse\x12+\n" + - "\x06tenant\x18\x01 \x01(\v2\x13.fits.api.v1.TenantR\x06tenant\"J\n" + "\x1bTenantServiceUpdateResponse\x12+\n" + - "\x06tenant\x18\x01 \x01(\v2\x13.fits.api.v1.TenantR\x06tenant\"J\n" + - "\x1bTenantServiceDeleteResponse\x12+\n" + - "\x06tenant\x18\x01 \x01(\v2\x13.fits.api.v1.TenantR\x06tenant2\x8b\x04\n" + - "\rTenantService\x12e\n" + - "\x06Create\x12'.fits.api.v1.TenantServiceCreateRequest\x1a(.fits.api.v1.TenantServiceCreateResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12_\n" + + "\x06tenant\x18\x01 \x01(\v2\x13.fits.api.v1.TenantR\x06tenant2\xbb\x02\n" + + "\rTenantService\x12_\n" + "\x04List\x12%.fits.api.v1.TenantServiceListRequest\x1a&.fits.api.v1.TenantServiceListResponse\"\b\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x12`\n" + "\x03Get\x12$.fits.api.v1.TenantServiceGetRequest\x1a%.fits.api.v1.TenantServiceGetResponse\"\f\xc2\xf3\x18\x04\x01\x02\x03\x04\xe0\xf3\x18\x02\x12g\n" + "\x06Update\x12'.fits.api.v1.TenantServiceUpdateRequest\x1a(.fits.api.v1.TenantServiceUpdateResponse\"\n" + - "\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12g\n" + - "\x06Delete\x12'.fits.api.v1.TenantServiceDeleteRequest\x1a(.fits.api.v1.TenantServiceDeleteResponse\"\n" + "\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01B\x97\x01\n" + "\x0fcom.fits.api.v1B\vTenantProtoP\x01Z)github.com/fi-ts/api/go/fits/api/v1;apiv1\xa2\x02\x03FAX\xaa\x02\vFits.Api.V1\xca\x02\vFits\\Api\\V1\xe2\x02\x17Fits\\Api\\V1\\GPBMetadata\xea\x02\rFits::Api::V1b\x06proto3" @@ -774,50 +534,39 @@ func file_fits_api_v1_tenant_proto_rawDescGZIP() []byte { return file_fits_api_v1_tenant_proto_rawDescData } -var file_fits_api_v1_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_fits_api_v1_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 7) var file_fits_api_v1_tenant_proto_goTypes = []any{ (*Tenant)(nil), // 0: fits.api.v1.Tenant (*TenantServiceListRequest)(nil), // 1: fits.api.v1.TenantServiceListRequest (*TenantServiceGetRequest)(nil), // 2: fits.api.v1.TenantServiceGetRequest - (*TenantServiceCreateRequest)(nil), // 3: fits.api.v1.TenantServiceCreateRequest - (*TenantServiceUpdateRequest)(nil), // 4: fits.api.v1.TenantServiceUpdateRequest - (*TenantServiceDeleteRequest)(nil), // 5: fits.api.v1.TenantServiceDeleteRequest - (*TenantServiceGetResponse)(nil), // 6: fits.api.v1.TenantServiceGetResponse - (*TenantServiceListResponse)(nil), // 7: fits.api.v1.TenantServiceListResponse - (*TenantServiceCreateResponse)(nil), // 8: fits.api.v1.TenantServiceCreateResponse - (*TenantServiceUpdateResponse)(nil), // 9: fits.api.v1.TenantServiceUpdateResponse - (*TenantServiceDeleteResponse)(nil), // 10: fits.api.v1.TenantServiceDeleteResponse - (*Meta)(nil), // 11: fits.api.v1.Meta - (*Labels)(nil), // 12: fits.api.v1.Labels - (*UpdateMeta)(nil), // 13: fits.api.v1.UpdateMeta - (*UpdateLabels)(nil), // 14: fits.api.v1.UpdateLabels + (*TenantServiceUpdateRequest)(nil), // 3: fits.api.v1.TenantServiceUpdateRequest + (*TenantServiceGetResponse)(nil), // 4: fits.api.v1.TenantServiceGetResponse + (*TenantServiceListResponse)(nil), // 5: fits.api.v1.TenantServiceListResponse + (*TenantServiceUpdateResponse)(nil), // 6: fits.api.v1.TenantServiceUpdateResponse + (*Meta)(nil), // 7: fits.api.v1.Meta + (*Labels)(nil), // 8: fits.api.v1.Labels + (*UpdateMeta)(nil), // 9: fits.api.v1.UpdateMeta + (*UpdateLabels)(nil), // 10: fits.api.v1.UpdateLabels } var file_fits_api_v1_tenant_proto_depIdxs = []int32{ - 11, // 0: fits.api.v1.Tenant.meta:type_name -> fits.api.v1.Meta - 12, // 1: fits.api.v1.TenantServiceListRequest.labels:type_name -> fits.api.v1.Labels - 12, // 2: fits.api.v1.TenantServiceCreateRequest.labels:type_name -> fits.api.v1.Labels - 13, // 3: fits.api.v1.TenantServiceUpdateRequest.update_meta:type_name -> fits.api.v1.UpdateMeta - 14, // 4: fits.api.v1.TenantServiceUpdateRequest.labels:type_name -> fits.api.v1.UpdateLabels - 0, // 5: fits.api.v1.TenantServiceGetResponse.tenant:type_name -> fits.api.v1.Tenant - 0, // 6: fits.api.v1.TenantServiceListResponse.tenants:type_name -> fits.api.v1.Tenant - 0, // 7: fits.api.v1.TenantServiceCreateResponse.tenant:type_name -> fits.api.v1.Tenant - 0, // 8: fits.api.v1.TenantServiceUpdateResponse.tenant:type_name -> fits.api.v1.Tenant - 0, // 9: fits.api.v1.TenantServiceDeleteResponse.tenant:type_name -> fits.api.v1.Tenant - 3, // 10: fits.api.v1.TenantService.Create:input_type -> fits.api.v1.TenantServiceCreateRequest - 1, // 11: fits.api.v1.TenantService.List:input_type -> fits.api.v1.TenantServiceListRequest - 2, // 12: fits.api.v1.TenantService.Get:input_type -> fits.api.v1.TenantServiceGetRequest - 4, // 13: fits.api.v1.TenantService.Update:input_type -> fits.api.v1.TenantServiceUpdateRequest - 5, // 14: fits.api.v1.TenantService.Delete:input_type -> fits.api.v1.TenantServiceDeleteRequest - 8, // 15: fits.api.v1.TenantService.Create:output_type -> fits.api.v1.TenantServiceCreateResponse - 7, // 16: fits.api.v1.TenantService.List:output_type -> fits.api.v1.TenantServiceListResponse - 6, // 17: fits.api.v1.TenantService.Get:output_type -> fits.api.v1.TenantServiceGetResponse - 9, // 18: fits.api.v1.TenantService.Update:output_type -> fits.api.v1.TenantServiceUpdateResponse - 10, // 19: fits.api.v1.TenantService.Delete:output_type -> fits.api.v1.TenantServiceDeleteResponse - 15, // [15:20] is the sub-list for method output_type - 10, // [10:15] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 7, // 0: fits.api.v1.Tenant.meta:type_name -> fits.api.v1.Meta + 8, // 1: fits.api.v1.TenantServiceListRequest.labels:type_name -> fits.api.v1.Labels + 9, // 2: fits.api.v1.TenantServiceUpdateRequest.update_meta:type_name -> fits.api.v1.UpdateMeta + 10, // 3: fits.api.v1.TenantServiceUpdateRequest.labels:type_name -> fits.api.v1.UpdateLabels + 0, // 4: fits.api.v1.TenantServiceGetResponse.tenant:type_name -> fits.api.v1.Tenant + 0, // 5: fits.api.v1.TenantServiceListResponse.tenants:type_name -> fits.api.v1.Tenant + 0, // 6: fits.api.v1.TenantServiceUpdateResponse.tenant:type_name -> fits.api.v1.Tenant + 1, // 7: fits.api.v1.TenantService.List:input_type -> fits.api.v1.TenantServiceListRequest + 2, // 8: fits.api.v1.TenantService.Get:input_type -> fits.api.v1.TenantServiceGetRequest + 3, // 9: fits.api.v1.TenantService.Update:input_type -> fits.api.v1.TenantServiceUpdateRequest + 5, // 10: fits.api.v1.TenantService.List:output_type -> fits.api.v1.TenantServiceListResponse + 4, // 11: fits.api.v1.TenantService.Get:output_type -> fits.api.v1.TenantServiceGetResponse + 6, // 12: fits.api.v1.TenantService.Update:output_type -> fits.api.v1.TenantServiceUpdateResponse + 10, // [10:13] is the sub-list for method output_type + 7, // [7:10] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_fits_api_v1_tenant_proto_init() } @@ -829,14 +578,13 @@ func file_fits_api_v1_tenant_proto_init() { file_fits_api_v1_predefined_rules_proto_init() file_fits_api_v1_tenant_proto_msgTypes[1].OneofWrappers = []any{} file_fits_api_v1_tenant_proto_msgTypes[3].OneofWrappers = []any{} - file_fits_api_v1_tenant_proto_msgTypes[4].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_fits_api_v1_tenant_proto_rawDesc), len(file_fits_api_v1_tenant_proto_rawDesc)), NumEnums: 0, - NumMessages: 11, + NumMessages: 7, NumExtensions: 0, NumServices: 1, }, diff --git a/go/permissions/servicepermissions.go b/go/permissions/servicepermissions.go index 8195e64..9fc486d 100755 --- a/go/permissions/servicepermissions.go +++ b/go/permissions/servicepermissions.go @@ -25,13 +25,11 @@ func GetServicePermissions() *ServicePermissions { Tenant: Tenant{ v1.TenantRole_TENANT_ROLE_OWNER: map[string]struct{}{ "/fits.api.v1.ProjectService/Create": {}, - "/fits.api.v1.TenantService/Delete": {}, "/fits.api.v1.TenantService/Get": {}, "/fits.api.v1.TenantService/Update": {}, }, v1.TenantRole_TENANT_ROLE_EDITOR: map[string]struct{}{ "/fits.api.v1.ProjectService/Create": {}, - "/fits.api.v1.TenantService/Delete": {}, "/fits.api.v1.TenantService/Get": {}, "/fits.api.v1.TenantService/Update": {}, }, @@ -83,8 +81,6 @@ func GetServicePermissions() *ServicePermissions { "/fits.api.v1.ProjectService/Get": {}, "/fits.api.v1.ProjectService/List": {}, "/fits.api.v1.ProjectService/Update": {}, - "/fits.api.v1.TenantService/Create": {}, - "/fits.api.v1.TenantService/Delete": {}, "/fits.api.v1.TenantService/Get": {}, "/fits.api.v1.TenantService/List": {}, "/fits.api.v1.TenantService/Update": {}, @@ -106,7 +102,6 @@ func GetServicePermissions() *ServicePermissions { Self: map[string]bool{ "/fits.api.v1.MethodService/TokenScopedList": true, "/fits.api.v1.ProjectService/List": true, - "/fits.api.v1.TenantService/Create": true, "/fits.api.v1.TenantService/List": true, "/fits.api.v1.TokenService/Get": true, "/fits.api.v1.TokenService/List": true, @@ -115,7 +110,6 @@ func GetServicePermissions() *ServicePermissions { Admin: map[string]bool{}, Tenant: map[string]bool{ "/fits.api.v1.ProjectService/Create": true, - "/fits.api.v1.TenantService/Delete": true, "/fits.api.v1.TenantService/Get": true, "/fits.api.v1.TenantService/Update": true, }, @@ -144,8 +138,6 @@ func GetServicePermissions() *ServicePermissions { "/fits.api.v1.ProjectService/Get": false, "/fits.api.v1.ProjectService/List": false, "/fits.api.v1.ProjectService/Update": true, - "/fits.api.v1.TenantService/Create": true, - "/fits.api.v1.TenantService/Delete": true, "/fits.api.v1.TenantService/Get": false, "/fits.api.v1.TenantService/List": false, "/fits.api.v1.TenantService/Update": true, diff --git a/js/fits/api/v1/tenant_pb.d.ts b/js/fits/api/v1/tenant_pb.d.ts index cca2dbd..2232420 100644 --- a/js/fits/api/v1/tenant_pb.d.ts +++ b/js/fits/api/v1/tenant_pb.d.ts @@ -107,48 +107,6 @@ export type TenantServiceGetRequest = Message<"fits.api.v1.TenantServiceGetReque * Use `create(TenantServiceGetRequestSchema)` to create a new message. */ export declare const TenantServiceGetRequestSchema: GenMessage; -/** - * TenantServiceCreateRequest is the request payload of the tenant create request - * - * @generated from message fits.api.v1.TenantServiceCreateRequest - */ -export type TenantServiceCreateRequest = Message<"fits.api.v1.TenantServiceCreateRequest"> & { - /** - * Name of this tenant - * - * @generated from field: string name = 1; - */ - name: string; - /** - * Description of this tenant - * - * @generated from field: optional string description = 2; - */ - description?: string | undefined; - /** - * Email of the tenant, if not set will be inherited from the creator - * - * @generated from field: optional string email = 3; - */ - email?: string | undefined; - /** - * AvatarUrl of the tenant - * - * @generated from field: optional string avatar_url = 4; - */ - avatarUrl?: string | undefined; - /** - * Labels on the tenant - * - * @generated from field: fits.api.v1.Labels labels = 5; - */ - labels?: Labels | undefined; -}; -/** - * Describes the message fits.api.v1.TenantServiceCreateRequest. - * Use `create(TenantServiceCreateRequestSchema)` to create a new message. - */ -export declare const TenantServiceCreateRequestSchema: GenMessage; /** * TenantServiceUpdateRequest is the request payload of the tenant update request * @@ -203,24 +161,6 @@ export type TenantServiceUpdateRequest = Message<"fits.api.v1.TenantServiceUpdat * Use `create(TenantServiceUpdateRequestSchema)` to create a new message. */ export declare const TenantServiceUpdateRequestSchema: GenMessage; -/** - * TenantServiceDeleteRequest is the request payload of the tenant delete request - * - * @generated from message fits.api.v1.TenantServiceDeleteRequest - */ -export type TenantServiceDeleteRequest = Message<"fits.api.v1.TenantServiceDeleteRequest"> & { - /** - * Login of the tenant - * - * @generated from field: string login = 1; - */ - login: string; -}; -/** - * Describes the message fits.api.v1.TenantServiceDeleteRequest. - * Use `create(TenantServiceDeleteRequestSchema)` to create a new message. - */ -export declare const TenantServiceDeleteRequestSchema: GenMessage; /** * TenantServiceGetResponse is the response payload of the tenant get request * @@ -257,24 +197,6 @@ export type TenantServiceListResponse = Message<"fits.api.v1.TenantServiceListRe * Use `create(TenantServiceListResponseSchema)` to create a new message. */ export declare const TenantServiceListResponseSchema: GenMessage; -/** - * TenantServiceCreateResponse is the response payload of the tenant create request - * - * @generated from message fits.api.v1.TenantServiceCreateResponse - */ -export type TenantServiceCreateResponse = Message<"fits.api.v1.TenantServiceCreateResponse"> & { - /** - * Tenant is the tenant - * - * @generated from field: fits.api.v1.Tenant tenant = 1; - */ - tenant?: Tenant | undefined; -}; -/** - * Describes the message fits.api.v1.TenantServiceCreateResponse. - * Use `create(TenantServiceCreateResponseSchema)` to create a new message. - */ -export declare const TenantServiceCreateResponseSchema: GenMessage; /** * TenantServiceUpdateResponse is the response payload of the tenant update request * @@ -293,40 +215,12 @@ export type TenantServiceUpdateResponse = Message<"fits.api.v1.TenantServiceUpda * Use `create(TenantServiceUpdateResponseSchema)` to create a new message. */ export declare const TenantServiceUpdateResponseSchema: GenMessage; -/** - * TenantServiceDeleteResponse is the response payload of the tenant delete request - * - * @generated from message fits.api.v1.TenantServiceDeleteResponse - */ -export type TenantServiceDeleteResponse = Message<"fits.api.v1.TenantServiceDeleteResponse"> & { - /** - * Tenant is the tenant - * - * @generated from field: fits.api.v1.Tenant tenant = 1; - */ - tenant?: Tenant | undefined; -}; -/** - * Describes the message fits.api.v1.TenantServiceDeleteResponse. - * Use `create(TenantServiceDeleteResponseSchema)` to create a new message. - */ -export declare const TenantServiceDeleteResponseSchema: GenMessage; /** * TenantService provides tenant management operations. * * @generated from service fits.api.v1.TenantService */ export declare const TenantService: GenService<{ - /** - * Creates a new tenant. - * - * @generated from rpc fits.api.v1.TenantService.Create - */ - create: { - methodKind: "unary"; - input: typeof TenantServiceCreateRequestSchema; - output: typeof TenantServiceCreateResponseSchema; - }; /** * Returns the list of tenants. * @@ -357,14 +251,4 @@ export declare const TenantService: GenService<{ input: typeof TenantServiceUpdateRequestSchema; output: typeof TenantServiceUpdateResponseSchema; }; - /** - * Delete a tenant - * - * @generated from rpc fits.api.v1.TenantService.Delete - */ - delete: { - methodKind: "unary"; - input: typeof TenantServiceDeleteRequestSchema; - output: typeof TenantServiceDeleteResponseSchema; - }; }>; diff --git a/js/fits/api/v1/tenant_pb.js b/js/fits/api/v1/tenant_pb.js index 998821d..22d7f4a 100644 --- a/js/fits/api/v1/tenant_pb.js +++ b/js/fits/api/v1/tenant_pb.js @@ -5,11 +5,10 @@ import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2 import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; import { file_fits_api_v1_common } from "./common_pb"; import { file_fits_api_v1_predefined_rules } from "./predefined_rules_pb"; -import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; /** * Describes the file fits/api/v1/tenant.proto. */ -export const file_fits_api_v1_tenant = /*@__PURE__*/ fileDesc("ChhmaXRzL2FwaS92MS90ZW5hbnQucHJvdG8SC2ZpdHMuYXBpLnYxIqwBCgZUZW5hbnQSDQoFbG9naW4YASABKAkSHwoEbWV0YRgCIAEoCzIRLmZpdHMuYXBpLnYxLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESDQoFZW1haWwYBCABKAkSIAoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBEhIKCmF2YXRhcl91cmwYBiABKAkSEgoKY3JlYXRlZF9ieRgHIAEoCSKQAQoYVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIoCgZsYWJlbHMYAyABKAsyEy5maXRzLmFwaS52MS5MYWJlbHNIAogBAUIFCgNfaWRCBwoFX25hbWVCCQoHX2xhYmVscyIoChdUZW5hbnRTZXJ2aWNlR2V0UmVxdWVzdBINCgVsb2dpbhgBIAEoCSLiAQoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIXCgphdmF0YXJfdXJsGAQgASgJSAKIAQESIwoGbGFiZWxzGAUgASgLMhMuZml0cy5hcGkudjEuTGFiZWxzQg4KDF9kZXNjcmlwdGlvbkIICgZfZW1haWxCDQoLX2F2YXRhcl91cmwiywIKGlRlbmFudFNlcnZpY2VVcGRhdGVSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJEjQKC3VwZGF0ZV9tZXRhGAIgASgLMhcuZml0cy5hcGkudjEuVXBkYXRlTWV0YUIGukgDyAEBEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESGwoFZW1haWwYBCABKAlCB7pIBHICYAFIAYgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAogBARIXCgphdmF0YXJfdXJsGAYgASgJSAOIAQESLgoGbGFiZWxzGAcgASgLMhkuZml0cy5hcGkudjEuVXBkYXRlTGFiZWxzSASIAQFCBwoFX25hbWVCCAoGX2VtYWlsQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIisKGlRlbmFudFNlcnZpY2VEZWxldGVSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJIj8KGFRlbmFudFNlcnZpY2VHZXRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5maXRzLmFwaS52MS5UZW5hbnQiQQoZVGVuYW50U2VydmljZUxpc3RSZXNwb25zZRIkCgd0ZW5hbnRzGAEgAygLMhMuZml0cy5hcGkudjEuVGVuYW50IkIKG1RlbmFudFNlcnZpY2VDcmVhdGVSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5maXRzLmFwaS52MS5UZW5hbnQiQgobVGVuYW50U2VydmljZVVwZGF0ZVJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmZpdHMuYXBpLnYxLlRlbmFudCJCChtUZW5hbnRTZXJ2aWNlRGVsZXRlUmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuZml0cy5hcGkudjEuVGVuYW50MosECg1UZW5hbnRTZXJ2aWNlEmUKBkNyZWF0ZRInLmZpdHMuYXBpLnYxLlRlbmFudFNlcnZpY2VDcmVhdGVSZXF1ZXN0GiguZml0cy5hcGkudjEuVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlIgjY8xgC4PMYARJfCgRMaXN0EiUuZml0cy5hcGkudjEuVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0GiYuZml0cy5hcGkudjEuVGVuYW50U2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAISYAoDR2V0EiQuZml0cy5hcGkudjEuVGVuYW50U2VydmljZUdldFJlcXVlc3QaJS5maXRzLmFwaS52MS5UZW5hbnRTZXJ2aWNlR2V0UmVzcG9uc2UiDMLzGAQBAgME4PMYAhJnCgZVcGRhdGUSJy5maXRzLmFwaS52MS5UZW5hbnRTZXJ2aWNlVXBkYXRlUmVxdWVzdBooLmZpdHMuYXBpLnYxLlRlbmFudFNlcnZpY2VVcGRhdGVSZXNwb25zZSIKwvMYAgEC4PMYARJnCgZEZWxldGUSJy5maXRzLmFwaS52MS5UZW5hbnRTZXJ2aWNlRGVsZXRlUmVxdWVzdBooLmZpdHMuYXBpLnYxLlRlbmFudFNlcnZpY2VEZWxldGVSZXNwb25zZSIKwvMYAgEC4PMYAUKXAQoPY29tLmZpdHMuYXBpLnYxQgtUZW5hbnRQcm90b1ABWilnaXRodWIuY29tL2ZpLXRzL2FwaS9nby9maXRzL2FwaS92MTthcGl2MaICA0ZBWKoCC0ZpdHMuQXBpLlYxygILRml0c1xBcGlcVjHiAhdGaXRzXEFwaVxWMVxHUEJNZXRhZGF0YeoCDUZpdHM6OkFwaTo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_fits_api_v1_common, file_fits_api_v1_predefined_rules, file_google_protobuf_timestamp]); +export const file_fits_api_v1_tenant = /*@__PURE__*/ fileDesc("ChhmaXRzL2FwaS92MS90ZW5hbnQucHJvdG8SC2ZpdHMuYXBpLnYxIqwBCgZUZW5hbnQSDQoFbG9naW4YASABKAkSHwoEbWV0YRgCIAEoCzIRLmZpdHMuYXBpLnYxLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESDQoFZW1haWwYBCABKAkSIAoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBEhIKCmF2YXRhcl91cmwYBiABKAkSEgoKY3JlYXRlZF9ieRgHIAEoCSKQAQoYVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIoCgZsYWJlbHMYAyABKAsyEy5maXRzLmFwaS52MS5MYWJlbHNIAogBAUIFCgNfaWRCBwoFX25hbWVCCQoHX2xhYmVscyIoChdUZW5hbnRTZXJ2aWNlR2V0UmVxdWVzdBINCgVsb2dpbhgBIAEoCSLLAgoaVGVuYW50U2VydmljZVVwZGF0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkSNAoLdXBkYXRlX21ldGEYAiABKAsyFy5maXRzLmFwaS52MS5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIbCgVlbWFpbBgEIAEoCUIHukgEcgJgAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgCiAEBEhcKCmF2YXRhcl91cmwYBiABKAlIA4gBARIuCgZsYWJlbHMYByABKAsyGS5maXRzLmFwaS52MS5VcGRhdGVMYWJlbHNIBIgBAUIHCgVfbmFtZUIICgZfZW1haWxCDgoMX2Rlc2NyaXB0aW9uQg0KC19hdmF0YXJfdXJsQgkKB19sYWJlbHMiPwoYVGVuYW50U2VydmljZUdldFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmZpdHMuYXBpLnYxLlRlbmFudCJBChlUZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlEiQKB3RlbmFudHMYASADKAsyEy5maXRzLmFwaS52MS5UZW5hbnQiQgobVGVuYW50U2VydmljZVVwZGF0ZVJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmZpdHMuYXBpLnYxLlRlbmFudDK7AgoNVGVuYW50U2VydmljZRJfCgRMaXN0EiUuZml0cy5hcGkudjEuVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0GiYuZml0cy5hcGkudjEuVGVuYW50U2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAISYAoDR2V0EiQuZml0cy5hcGkudjEuVGVuYW50U2VydmljZUdldFJlcXVlc3QaJS5maXRzLmFwaS52MS5UZW5hbnRTZXJ2aWNlR2V0UmVzcG9uc2UiDMLzGAQBAgME4PMYAhJnCgZVcGRhdGUSJy5maXRzLmFwaS52MS5UZW5hbnRTZXJ2aWNlVXBkYXRlUmVxdWVzdBooLmZpdHMuYXBpLnYxLlRlbmFudFNlcnZpY2VVcGRhdGVSZXNwb25zZSIKwvMYAgEC4PMYAUKXAQoPY29tLmZpdHMuYXBpLnYxQgtUZW5hbnRQcm90b1ABWilnaXRodWIuY29tL2ZpLXRzL2FwaS9nby9maXRzL2FwaS92MTthcGl2MaICA0ZBWKoCC0ZpdHMuQXBpLlYxygILRml0c1xBcGlcVjHiAhdGaXRzXEFwaVxWMVxHUEJNZXRhZGF0YeoCDUZpdHM6OkFwaTo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_fits_api_v1_common, file_fits_api_v1_predefined_rules]); /** * Describes the message fits.api.v1.Tenant. * Use `create(TenantSchema)` to create a new message. @@ -25,46 +24,26 @@ export const TenantServiceListRequestSchema = /*@__PURE__*/ messageDesc(file_fit * Use `create(TenantServiceGetRequestSchema)` to create a new message. */ export const TenantServiceGetRequestSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_tenant, 2); -/** - * Describes the message fits.api.v1.TenantServiceCreateRequest. - * Use `create(TenantServiceCreateRequestSchema)` to create a new message. - */ -export const TenantServiceCreateRequestSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_tenant, 3); /** * Describes the message fits.api.v1.TenantServiceUpdateRequest. * Use `create(TenantServiceUpdateRequestSchema)` to create a new message. */ -export const TenantServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_tenant, 4); -/** - * Describes the message fits.api.v1.TenantServiceDeleteRequest. - * Use `create(TenantServiceDeleteRequestSchema)` to create a new message. - */ -export const TenantServiceDeleteRequestSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_tenant, 5); +export const TenantServiceUpdateRequestSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_tenant, 3); /** * Describes the message fits.api.v1.TenantServiceGetResponse. * Use `create(TenantServiceGetResponseSchema)` to create a new message. */ -export const TenantServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_tenant, 6); +export const TenantServiceGetResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_tenant, 4); /** * Describes the message fits.api.v1.TenantServiceListResponse. * Use `create(TenantServiceListResponseSchema)` to create a new message. */ -export const TenantServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_tenant, 7); -/** - * Describes the message fits.api.v1.TenantServiceCreateResponse. - * Use `create(TenantServiceCreateResponseSchema)` to create a new message. - */ -export const TenantServiceCreateResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_tenant, 8); +export const TenantServiceListResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_tenant, 5); /** * Describes the message fits.api.v1.TenantServiceUpdateResponse. * Use `create(TenantServiceUpdateResponseSchema)` to create a new message. */ -export const TenantServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_tenant, 9); -/** - * Describes the message fits.api.v1.TenantServiceDeleteResponse. - * Use `create(TenantServiceDeleteResponseSchema)` to create a new message. - */ -export const TenantServiceDeleteResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_tenant, 10); +export const TenantServiceUpdateResponseSchema = /*@__PURE__*/ messageDesc(file_fits_api_v1_tenant, 6); /** * TenantService provides tenant management operations. * diff --git a/js/fits/api/v1/tenant_pb.ts b/js/fits/api/v1/tenant_pb.ts index 74c95af..2632b8b 100644 --- a/js/fits/api/v1/tenant_pb.ts +++ b/js/fits/api/v1/tenant_pb.ts @@ -8,14 +8,13 @@ import { file_buf_validate_validate } from "../../../buf/validate/validate_pb"; import type { Labels, Meta, UpdateLabels, UpdateMeta } from "./common_pb"; import { file_fits_api_v1_common } from "./common_pb"; import { file_fits_api_v1_predefined_rules } from "./predefined_rules_pb"; -import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; import type { Message } from "@bufbuild/protobuf"; /** * Describes the file fits/api/v1/tenant.proto. */ export const file_fits_api_v1_tenant: GenFile = /*@__PURE__*/ - fileDesc("ChhmaXRzL2FwaS92MS90ZW5hbnQucHJvdG8SC2ZpdHMuYXBpLnYxIqwBCgZUZW5hbnQSDQoFbG9naW4YASABKAkSHwoEbWV0YRgCIAEoCzIRLmZpdHMuYXBpLnYxLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESDQoFZW1haWwYBCABKAkSIAoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBEhIKCmF2YXRhcl91cmwYBiABKAkSEgoKY3JlYXRlZF9ieRgHIAEoCSKQAQoYVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIoCgZsYWJlbHMYAyABKAsyEy5maXRzLmFwaS52MS5MYWJlbHNIAogBAUIFCgNfaWRCBwoFX25hbWVCCQoHX2xhYmVscyIoChdUZW5hbnRTZXJ2aWNlR2V0UmVxdWVzdBINCgVsb2dpbhgBIAEoCSLiAQoaVGVuYW50U2VydmljZUNyZWF0ZVJlcXVlc3QSGQoEbmFtZRgBIAEoCUILukgIcgbAs66xAgESJQoLZGVzY3JpcHRpb24YAiABKAlCC7pICHIGyLOusQIBSACIAQESGwoFZW1haWwYAyABKAlCB7pIBHICYAFIAYgBARIXCgphdmF0YXJfdXJsGAQgASgJSAKIAQESIwoGbGFiZWxzGAUgASgLMhMuZml0cy5hcGkudjEuTGFiZWxzQg4KDF9kZXNjcmlwdGlvbkIICgZfZW1haWxCDQoLX2F2YXRhcl91cmwiywIKGlRlbmFudFNlcnZpY2VVcGRhdGVSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJEjQKC3VwZGF0ZV9tZXRhGAIgASgLMhcuZml0cy5hcGkudjEuVXBkYXRlTWV0YUIGukgDyAEBEh4KBG5hbWUYAyABKAlCC7pICHIGwLOusQIBSACIAQESGwoFZW1haWwYBCABKAlCB7pIBHICYAFIAYgBARIlCgtkZXNjcmlwdGlvbhgFIAEoCUILukgIcgbIs66xAgFIAogBARIXCgphdmF0YXJfdXJsGAYgASgJSAOIAQESLgoGbGFiZWxzGAcgASgLMhkuZml0cy5hcGkudjEuVXBkYXRlTGFiZWxzSASIAQFCBwoFX25hbWVCCAoGX2VtYWlsQg4KDF9kZXNjcmlwdGlvbkINCgtfYXZhdGFyX3VybEIJCgdfbGFiZWxzIisKGlRlbmFudFNlcnZpY2VEZWxldGVSZXF1ZXN0Eg0KBWxvZ2luGAEgASgJIj8KGFRlbmFudFNlcnZpY2VHZXRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5maXRzLmFwaS52MS5UZW5hbnQiQQoZVGVuYW50U2VydmljZUxpc3RSZXNwb25zZRIkCgd0ZW5hbnRzGAEgAygLMhMuZml0cy5hcGkudjEuVGVuYW50IkIKG1RlbmFudFNlcnZpY2VDcmVhdGVSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5maXRzLmFwaS52MS5UZW5hbnQiQgobVGVuYW50U2VydmljZVVwZGF0ZVJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmZpdHMuYXBpLnYxLlRlbmFudCJCChtUZW5hbnRTZXJ2aWNlRGVsZXRlUmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuZml0cy5hcGkudjEuVGVuYW50MosECg1UZW5hbnRTZXJ2aWNlEmUKBkNyZWF0ZRInLmZpdHMuYXBpLnYxLlRlbmFudFNlcnZpY2VDcmVhdGVSZXF1ZXN0GiguZml0cy5hcGkudjEuVGVuYW50U2VydmljZUNyZWF0ZVJlc3BvbnNlIgjY8xgC4PMYARJfCgRMaXN0EiUuZml0cy5hcGkudjEuVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0GiYuZml0cy5hcGkudjEuVGVuYW50U2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAISYAoDR2V0EiQuZml0cy5hcGkudjEuVGVuYW50U2VydmljZUdldFJlcXVlc3QaJS5maXRzLmFwaS52MS5UZW5hbnRTZXJ2aWNlR2V0UmVzcG9uc2UiDMLzGAQBAgME4PMYAhJnCgZVcGRhdGUSJy5maXRzLmFwaS52MS5UZW5hbnRTZXJ2aWNlVXBkYXRlUmVxdWVzdBooLmZpdHMuYXBpLnYxLlRlbmFudFNlcnZpY2VVcGRhdGVSZXNwb25zZSIKwvMYAgEC4PMYARJnCgZEZWxldGUSJy5maXRzLmFwaS52MS5UZW5hbnRTZXJ2aWNlRGVsZXRlUmVxdWVzdBooLmZpdHMuYXBpLnYxLlRlbmFudFNlcnZpY2VEZWxldGVSZXNwb25zZSIKwvMYAgEC4PMYAUKXAQoPY29tLmZpdHMuYXBpLnYxQgtUZW5hbnRQcm90b1ABWilnaXRodWIuY29tL2ZpLXRzL2FwaS9nby9maXRzL2FwaS92MTthcGl2MaICA0ZBWKoCC0ZpdHMuQXBpLlYxygILRml0c1xBcGlcVjHiAhdGaXRzXEFwaVxWMVxHUEJNZXRhZGF0YeoCDUZpdHM6OkFwaTo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_fits_api_v1_common, file_fits_api_v1_predefined_rules, file_google_protobuf_timestamp]); + fileDesc("ChhmaXRzL2FwaS92MS90ZW5hbnQucHJvdG8SC2ZpdHMuYXBpLnYxIqwBCgZUZW5hbnQSDQoFbG9naW4YASABKAkSHwoEbWV0YRgCIAEoCzIRLmZpdHMuYXBpLnYxLk1ldGESGQoEbmFtZRgDIAEoCUILukgIcgbAs66xAgESDQoFZW1haWwYBCABKAkSIAoLZGVzY3JpcHRpb24YBSABKAlCC7pICHIGyLOusQIBEhIKCmF2YXRhcl91cmwYBiABKAkSEgoKY3JlYXRlZF9ieRgHIAEoCSKQAQoYVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0Eg8KAmlkGAEgASgJSACIAQESHgoEbmFtZRgCIAEoCUILukgIcgbAs66xAgFIAYgBARIoCgZsYWJlbHMYAyABKAsyEy5maXRzLmFwaS52MS5MYWJlbHNIAogBAUIFCgNfaWRCBwoFX25hbWVCCQoHX2xhYmVscyIoChdUZW5hbnRTZXJ2aWNlR2V0UmVxdWVzdBINCgVsb2dpbhgBIAEoCSLLAgoaVGVuYW50U2VydmljZVVwZGF0ZVJlcXVlc3QSDQoFbG9naW4YASABKAkSNAoLdXBkYXRlX21ldGEYAiABKAsyFy5maXRzLmFwaS52MS5VcGRhdGVNZXRhQga6SAPIAQESHgoEbmFtZRgDIAEoCUILukgIcgbAs66xAgFIAIgBARIbCgVlbWFpbBgEIAEoCUIHukgEcgJgAUgBiAEBEiUKC2Rlc2NyaXB0aW9uGAUgASgJQgu6SAhyBsizrrECAUgCiAEBEhcKCmF2YXRhcl91cmwYBiABKAlIA4gBARIuCgZsYWJlbHMYByABKAsyGS5maXRzLmFwaS52MS5VcGRhdGVMYWJlbHNIBIgBAUIHCgVfbmFtZUIICgZfZW1haWxCDgoMX2Rlc2NyaXB0aW9uQg0KC19hdmF0YXJfdXJsQgkKB19sYWJlbHMiPwoYVGVuYW50U2VydmljZUdldFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmZpdHMuYXBpLnYxLlRlbmFudCJBChlUZW5hbnRTZXJ2aWNlTGlzdFJlc3BvbnNlEiQKB3RlbmFudHMYASADKAsyEy5maXRzLmFwaS52MS5UZW5hbnQiQgobVGVuYW50U2VydmljZVVwZGF0ZVJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmZpdHMuYXBpLnYxLlRlbmFudDK7AgoNVGVuYW50U2VydmljZRJfCgRMaXN0EiUuZml0cy5hcGkudjEuVGVuYW50U2VydmljZUxpc3RSZXF1ZXN0GiYuZml0cy5hcGkudjEuVGVuYW50U2VydmljZUxpc3RSZXNwb25zZSII2PMYAuDzGAISYAoDR2V0EiQuZml0cy5hcGkudjEuVGVuYW50U2VydmljZUdldFJlcXVlc3QaJS5maXRzLmFwaS52MS5UZW5hbnRTZXJ2aWNlR2V0UmVzcG9uc2UiDMLzGAQBAgME4PMYAhJnCgZVcGRhdGUSJy5maXRzLmFwaS52MS5UZW5hbnRTZXJ2aWNlVXBkYXRlUmVxdWVzdBooLmZpdHMuYXBpLnYxLlRlbmFudFNlcnZpY2VVcGRhdGVSZXNwb25zZSIKwvMYAgEC4PMYAUKXAQoPY29tLmZpdHMuYXBpLnYxQgtUZW5hbnRQcm90b1ABWilnaXRodWIuY29tL2ZpLXRzL2FwaS9nby9maXRzL2FwaS92MTthcGl2MaICA0ZBWKoCC0ZpdHMuQXBpLlYxygILRml0c1xBcGlcVjHiAhdGaXRzXEFwaVxWMVxHUEJNZXRhZGF0YeoCDUZpdHM6OkFwaTo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_fits_api_v1_common, file_fits_api_v1_predefined_rules]); /** * Tenant is a customer of the platform @@ -136,55 +135,6 @@ export type TenantServiceGetRequest = Message<"fits.api.v1.TenantServiceGetReque export const TenantServiceGetRequestSchema: GenMessage = /*@__PURE__*/ messageDesc(file_fits_api_v1_tenant, 2); -/** - * TenantServiceCreateRequest is the request payload of the tenant create request - * - * @generated from message fits.api.v1.TenantServiceCreateRequest - */ -export type TenantServiceCreateRequest = Message<"fits.api.v1.TenantServiceCreateRequest"> & { - /** - * Name of this tenant - * - * @generated from field: string name = 1; - */ - name: string; - - /** - * Description of this tenant - * - * @generated from field: optional string description = 2; - */ - description?: string | undefined; - - /** - * Email of the tenant, if not set will be inherited from the creator - * - * @generated from field: optional string email = 3; - */ - email?: string | undefined; - - /** - * AvatarUrl of the tenant - * - * @generated from field: optional string avatar_url = 4; - */ - avatarUrl?: string | undefined; - - /** - * Labels on the tenant - * - * @generated from field: fits.api.v1.Labels labels = 5; - */ - labels?: Labels | undefined; -}; - -/** - * Describes the message fits.api.v1.TenantServiceCreateRequest. - * Use `create(TenantServiceCreateRequestSchema)` to create a new message. - */ -export const TenantServiceCreateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_tenant, 3); - /** * TenantServiceUpdateRequest is the request payload of the tenant update request * @@ -246,28 +196,7 @@ export type TenantServiceUpdateRequest = Message<"fits.api.v1.TenantServiceUpdat * Use `create(TenantServiceUpdateRequestSchema)` to create a new message. */ export const TenantServiceUpdateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_tenant, 4); - -/** - * TenantServiceDeleteRequest is the request payload of the tenant delete request - * - * @generated from message fits.api.v1.TenantServiceDeleteRequest - */ -export type TenantServiceDeleteRequest = Message<"fits.api.v1.TenantServiceDeleteRequest"> & { - /** - * Login of the tenant - * - * @generated from field: string login = 1; - */ - login: string; -}; - -/** - * Describes the message fits.api.v1.TenantServiceDeleteRequest. - * Use `create(TenantServiceDeleteRequestSchema)` to create a new message. - */ -export const TenantServiceDeleteRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_tenant, 5); + messageDesc(file_fits_api_v1_tenant, 3); /** * TenantServiceGetResponse is the response payload of the tenant get request @@ -288,7 +217,7 @@ export type TenantServiceGetResponse = Message<"fits.api.v1.TenantServiceGetResp * Use `create(TenantServiceGetResponseSchema)` to create a new message. */ export const TenantServiceGetResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_tenant, 6); + messageDesc(file_fits_api_v1_tenant, 4); /** * TenantServiceListResponse is the response payload of the tenant list request @@ -309,28 +238,7 @@ export type TenantServiceListResponse = Message<"fits.api.v1.TenantServiceListRe * Use `create(TenantServiceListResponseSchema)` to create a new message. */ export const TenantServiceListResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_tenant, 7); - -/** - * TenantServiceCreateResponse is the response payload of the tenant create request - * - * @generated from message fits.api.v1.TenantServiceCreateResponse - */ -export type TenantServiceCreateResponse = Message<"fits.api.v1.TenantServiceCreateResponse"> & { - /** - * Tenant is the tenant - * - * @generated from field: fits.api.v1.Tenant tenant = 1; - */ - tenant?: Tenant | undefined; -}; - -/** - * Describes the message fits.api.v1.TenantServiceCreateResponse. - * Use `create(TenantServiceCreateResponseSchema)` to create a new message. - */ -export const TenantServiceCreateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_tenant, 8); + messageDesc(file_fits_api_v1_tenant, 5); /** * TenantServiceUpdateResponse is the response payload of the tenant update request @@ -351,28 +259,7 @@ export type TenantServiceUpdateResponse = Message<"fits.api.v1.TenantServiceUpda * Use `create(TenantServiceUpdateResponseSchema)` to create a new message. */ export const TenantServiceUpdateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_tenant, 9); - -/** - * TenantServiceDeleteResponse is the response payload of the tenant delete request - * - * @generated from message fits.api.v1.TenantServiceDeleteResponse - */ -export type TenantServiceDeleteResponse = Message<"fits.api.v1.TenantServiceDeleteResponse"> & { - /** - * Tenant is the tenant - * - * @generated from field: fits.api.v1.Tenant tenant = 1; - */ - tenant?: Tenant | undefined; -}; - -/** - * Describes the message fits.api.v1.TenantServiceDeleteResponse. - * Use `create(TenantServiceDeleteResponseSchema)` to create a new message. - */ -export const TenantServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_fits_api_v1_tenant, 10); + messageDesc(file_fits_api_v1_tenant, 6); /** * TenantService provides tenant management operations. @@ -380,16 +267,6 @@ export const TenantServiceDeleteResponseSchema: GenMessage = /*@__PURE__*/ serviceDesc(file_fits_api_v1_tenant, 0); diff --git a/proto/fits/api/v1/tenant.proto b/proto/fits/api/v1/tenant.proto index 2edade7..5d3c705 100644 --- a/proto/fits/api/v1/tenant.proto +++ b/proto/fits/api/v1/tenant.proto @@ -5,15 +5,9 @@ package fits.api.v1; import "buf/validate/validate.proto"; import "fits/api/v1/common.proto"; import "fits/api/v1/predefined_rules.proto"; -import "google/protobuf/timestamp.proto"; // TenantService provides tenant management operations. service TenantService { - // Creates a new tenant. - rpc Create(TenantServiceCreateRequest) returns (TenantServiceCreateResponse) { - option (visibility) = VISIBILITY_SELF; - option (auditing) = AUDITING_INCLUDED; - } // Returns the list of tenants. rpc List(TenantServiceListRequest) returns (TenantServiceListResponse) { option (visibility) = VISIBILITY_SELF; @@ -33,12 +27,6 @@ service TenantService { option (tenant_roles) = TENANT_ROLE_EDITOR; option (auditing) = AUDITING_INCLUDED; } - // Delete a tenant - rpc Delete(TenantServiceDeleteRequest) returns (TenantServiceDeleteResponse) { - option (tenant_roles) = TENANT_ROLE_OWNER; - option (tenant_roles) = TENANT_ROLE_EDITOR; - option (auditing) = AUDITING_INCLUDED; - } } // Tenant is a customer of the platform @@ -75,20 +63,6 @@ message TenantServiceGetRequest { string login = 1; } -// TenantServiceCreateRequest is the request payload of the tenant create request -message TenantServiceCreateRequest { - // Name of this tenant - string name = 1 [(buf.validate.field).string.(fits.api.v1.is_name) = true]; - // Description of this tenant - optional string description = 2 [(buf.validate.field).string.(fits.api.v1.is_description) = true]; - // Email of the tenant, if not set will be inherited from the creator - optional string email = 3 [(buf.validate.field).string.email = true]; - // AvatarUrl of the tenant - optional string avatar_url = 4; - // Labels on the tenant - Labels labels = 5; -} - // TenantServiceUpdateRequest is the request payload of the tenant update request message TenantServiceUpdateRequest { // Login of the tenant @@ -107,12 +81,6 @@ message TenantServiceUpdateRequest { optional UpdateLabels labels = 7; } -// TenantServiceDeleteRequest is the request payload of the tenant delete request -message TenantServiceDeleteRequest { - // Login of the tenant - string login = 1; -} - // TenantServiceGetResponse is the response payload of the tenant get request message TenantServiceGetResponse { // Tenant is the tenant @@ -125,20 +93,8 @@ message TenantServiceListResponse { repeated Tenant tenants = 1; } -// TenantServiceCreateResponse is the response payload of the tenant create request -message TenantServiceCreateResponse { - // Tenant is the tenant - Tenant tenant = 1; -} - // TenantServiceUpdateResponse is the response payload of the tenant update request message TenantServiceUpdateResponse { // Tenant is the tenant Tenant tenant = 1; } - -// TenantServiceDeleteResponse is the response payload of the tenant delete request -message TenantServiceDeleteResponse { - // Tenant is the tenant - Tenant tenant = 1; -} diff --git a/python/fits/api/v1/tenant_connect.py b/python/fits/api/v1/tenant_connect.py index 33430b7..ab30c9f 100644 --- a/python/fits/api/v1/tenant_connect.py +++ b/python/fits/api/v1/tenant_connect.py @@ -18,9 +18,6 @@ class TenantService(Protocol): - async def create(self, request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateResponse: - raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") - async def list(self, request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceListRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceListResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") @@ -30,25 +27,12 @@ async def get(self, request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceGe async def update(self, request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceUpdateRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceUpdateResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") - async def delete(self, request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteResponse: - raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") - class TenantServiceASGIApplication(ConnectASGIApplication[TenantService]): def __init__(self, service: TenantService | AsyncGenerator[TenantService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None, codecs: Iterable[Codec] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { - "/fits.api.v1.TenantService/Create": Endpoint.unary( - method=MethodInfo( - name="Create", - service_name="fits.api.v1.TenantService", - input=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateRequest, - output=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - function=svc.create, - ), "/fits.api.v1.TenantService/List": Endpoint.unary( method=MethodInfo( name="List", @@ -79,16 +63,6 @@ def __init__(self, service: TenantService | AsyncGenerator[TenantService], *, in ), function=svc.update, ), - "/fits.api.v1.TenantService/Delete": Endpoint.unary( - method=MethodInfo( - name="Delete", - service_name="fits.api.v1.TenantService", - input=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteRequest, - output=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - function=svc.delete, - ), }, interceptors=interceptors, read_max_bytes=read_max_bytes, @@ -103,26 +77,6 @@ def path(self) -> str: class TenantServiceClient(ConnectClient): - async def create( - self, - request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateRequest, - *, - headers: Headers | Mapping[str, str] | None = None, - timeout_ms: int | None = None, - ) -> fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateResponse: - return await self.execute_unary( - request=request, - method=MethodInfo( - name="Create", - service_name="fits.api.v1.TenantService", - input=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateRequest, - output=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - headers=headers, - timeout_ms=timeout_ms, - ) - async def list( self, request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceListRequest, @@ -183,57 +137,23 @@ async def update( timeout_ms=timeout_ms, ) - async def delete( - self, - request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteRequest, - *, - headers: Headers | Mapping[str, str] | None = None, - timeout_ms: int | None = None, - ) -> fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteResponse: - return await self.execute_unary( - request=request, - method=MethodInfo( - name="Delete", - service_name="fits.api.v1.TenantService", - input=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteRequest, - output=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - headers=headers, - timeout_ms=timeout_ms, - ) - class TenantServiceSync(Protocol): - def create(self, request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateResponse: - raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def list(self, request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceListRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceListResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def get(self, request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceGetRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceGetResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") def update(self, request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceUpdateRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceUpdateResponse: raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") - def delete(self, request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteRequest, ctx: RequestContext) -> fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteResponse: - raise ConnectError(Code.UNIMPLEMENTED, "Not implemented") class TenantServiceWSGIApplication(ConnectWSGIApplication): def __init__(self, service: TenantServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None, codecs: Iterable[Codec] | None = None) -> None: super().__init__( endpoints={ - "/fits.api.v1.TenantService/Create": EndpointSync.unary( - method=MethodInfo( - name="Create", - service_name="fits.api.v1.TenantService", - input=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateRequest, - output=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - function=service.create, - ), "/fits.api.v1.TenantService/List": EndpointSync.unary( method=MethodInfo( name="List", @@ -264,16 +184,6 @@ def __init__(self, service: TenantServiceSync, interceptors: Iterable[Intercepto ), function=service.update, ), - "/fits.api.v1.TenantService/Delete": EndpointSync.unary( - method=MethodInfo( - name="Delete", - service_name="fits.api.v1.TenantService", - input=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteRequest, - output=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - function=service.delete, - ), }, interceptors=interceptors, read_max_bytes=read_max_bytes, @@ -288,26 +198,6 @@ def path(self) -> str: class TenantServiceClientSync(ConnectClientSync): - def create( - self, - request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateRequest, - *, - headers: Headers | Mapping[str, str] | None = None, - timeout_ms: int | None = None, - ) -> fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateResponse: - return self.execute_unary( - request=request, - method=MethodInfo( - name="Create", - service_name="fits.api.v1.TenantService", - input=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateRequest, - output=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceCreateResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - headers=headers, - timeout_ms=timeout_ms, - ) - def list( self, request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceListRequest, @@ -368,24 +258,4 @@ def update( timeout_ms=timeout_ms, ) - def delete( - self, - request: fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteRequest, - *, - headers: Headers | Mapping[str, str] | None = None, - timeout_ms: int | None = None, - ) -> fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteResponse: - return self.execute_unary( - request=request, - method=MethodInfo( - name="Delete", - service_name="fits.api.v1.TenantService", - input=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteRequest, - output=fits_dot_api_dot_v1_dot_tenant__pb2.TenantServiceDeleteResponse, - idempotency_level=IdempotencyLevel.UNKNOWN, - ), - headers=headers, - timeout_ms=timeout_ms, - ) - diff --git a/python/fits/api/v1/tenant_pb2.py b/python/fits/api/v1/tenant_pb2.py index 2cf7533..f708c98 100644 --- a/python/fits/api/v1/tenant_pb2.py +++ b/python/fits/api/v1/tenant_pb2.py @@ -25,10 +25,9 @@ from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2 from fits.api.v1 import common_pb2 as fits_dot_api_dot_v1_dot_common__pb2 from fits.api.v1 import predefined_rules_pb2 as fits_dot_api_dot_v1_dot_predefined__rules__pb2 -from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66its/api/v1/tenant.proto\x12\x0b\x66its.api.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x18\x66its/api/v1/common.proto\x1a\"fits/api/v1/predefined_rules.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xe9\x01\n\x06Tenant\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12%\n\x04meta\x18\x02 \x01(\x0b\x32\x11.fits.api.v1.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x14\n\x05\x65mail\x18\x04 \x01(\tR\x05\x65mail\x12-\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x1d\n\navatar_url\x18\x06 \x01(\tR\tavatarUrl\x12\x1d\n\ncreated_by\x18\x07 \x01(\tR\tcreatedBy\"\xa2\x01\n\x18TenantServiceListRequest\x12\x13\n\x02id\x18\x01 \x01(\tH\x00R\x02id\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\x30\n\x06labels\x18\x03 \x01(\x0b\x32\x13.fits.api.v1.LabelsH\x02R\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\t\n\x07_labels\"/\n\x17TenantServiceGetRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x8f\x02\n\x1aTenantServiceCreateRequest\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\x05\x65mail\x18\x03 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12\"\n\navatar_url\x18\x04 \x01(\tH\x02R\tavatarUrl\x88\x01\x01\x12+\n\x06labels\x18\x05 \x01(\x0b\x32\x13.fits.api.v1.LabelsR\x06labelsB\x0e\n\x0c_descriptionB\x08\n\x06_emailB\r\n\x0b_avatar_url\"\x8b\x03\n\x1aTenantServiceUpdateRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12@\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x17.fits.api.v1.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\"\n\x05\x65mail\x18\x04 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\navatar_url\x18\x06 \x01(\tH\x03R\tavatarUrl\x88\x01\x01\x12\x36\n\x06labels\x18\x07 \x01(\x0b\x32\x19.fits.api.v1.UpdateLabelsH\x04R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x08\n\x06_emailB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"2\n\x1aTenantServiceDeleteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"G\n\x18TenantServiceGetResponse\x12+\n\x06tenant\x18\x01 \x01(\x0b\x32\x13.fits.api.v1.TenantR\x06tenant\"J\n\x19TenantServiceListResponse\x12-\n\x07tenants\x18\x01 \x03(\x0b\x32\x13.fits.api.v1.TenantR\x07tenants\"J\n\x1bTenantServiceCreateResponse\x12+\n\x06tenant\x18\x01 \x01(\x0b\x32\x13.fits.api.v1.TenantR\x06tenant\"J\n\x1bTenantServiceUpdateResponse\x12+\n\x06tenant\x18\x01 \x01(\x0b\x32\x13.fits.api.v1.TenantR\x06tenant\"J\n\x1bTenantServiceDeleteResponse\x12+\n\x06tenant\x18\x01 \x01(\x0b\x32\x13.fits.api.v1.TenantR\x06tenant2\x8b\x04\n\rTenantService\x12\x65\n\x06\x43reate\x12\'.fits.api.v1.TenantServiceCreateRequest\x1a(.fits.api.v1.TenantServiceCreateResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x01\x12_\n\x04List\x12%.fits.api.v1.TenantServiceListRequest\x1a&.fits.api.v1.TenantServiceListResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x12`\n\x03Get\x12$.fits.api.v1.TenantServiceGetRequest\x1a%.fits.api.v1.TenantServiceGetResponse\"\x0c\xc2\xf3\x18\x04\x01\x02\x03\x04\xe0\xf3\x18\x02\x12g\n\x06Update\x12\'.fits.api.v1.TenantServiceUpdateRequest\x1a(.fits.api.v1.TenantServiceUpdateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12g\n\x06\x44\x65lete\x12\'.fits.api.v1.TenantServiceDeleteRequest\x1a(.fits.api.v1.TenantServiceDeleteResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x42\x97\x01\n\x0f\x63om.fits.api.v1B\x0bTenantProtoP\x01Z)github.com/fi-ts/api/go/fits/api/v1;apiv1\xa2\x02\x03\x46\x41X\xaa\x02\x0b\x46its.Api.V1\xca\x02\x0b\x46its\\Api\\V1\xe2\x02\x17\x46its\\Api\\V1\\GPBMetadata\xea\x02\rFits::Api::V1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x66its/api/v1/tenant.proto\x12\x0b\x66its.api.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x18\x66its/api/v1/common.proto\x1a\"fits/api/v1/predefined_rules.proto\"\xe9\x01\n\x06Tenant\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12%\n\x04meta\x18\x02 \x01(\x0b\x32\x11.fits.api.v1.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x14\n\x05\x65mail\x18\x04 \x01(\tR\x05\x65mail\x12-\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x1d\n\navatar_url\x18\x06 \x01(\tR\tavatarUrl\x12\x1d\n\ncreated_by\x18\x07 \x01(\tR\tcreatedBy\"\xa2\x01\n\x18TenantServiceListRequest\x12\x13\n\x02id\x18\x01 \x01(\tH\x00R\x02id\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\x30\n\x06labels\x18\x03 \x01(\x0b\x32\x13.fits.api.v1.LabelsH\x02R\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\t\n\x07_labels\"/\n\x17TenantServiceGetRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x8b\x03\n\x1aTenantServiceUpdateRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12@\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x17.fits.api.v1.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\"\n\x05\x65mail\x18\x04 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\navatar_url\x18\x06 \x01(\tH\x03R\tavatarUrl\x88\x01\x01\x12\x36\n\x06labels\x18\x07 \x01(\x0b\x32\x19.fits.api.v1.UpdateLabelsH\x04R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x08\n\x06_emailB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"G\n\x18TenantServiceGetResponse\x12+\n\x06tenant\x18\x01 \x01(\x0b\x32\x13.fits.api.v1.TenantR\x06tenant\"J\n\x19TenantServiceListResponse\x12-\n\x07tenants\x18\x01 \x03(\x0b\x32\x13.fits.api.v1.TenantR\x07tenants\"J\n\x1bTenantServiceUpdateResponse\x12+\n\x06tenant\x18\x01 \x01(\x0b\x32\x13.fits.api.v1.TenantR\x06tenant2\xbb\x02\n\rTenantService\x12_\n\x04List\x12%.fits.api.v1.TenantServiceListRequest\x1a&.fits.api.v1.TenantServiceListResponse\"\x08\xd8\xf3\x18\x02\xe0\xf3\x18\x02\x12`\n\x03Get\x12$.fits.api.v1.TenantServiceGetRequest\x1a%.fits.api.v1.TenantServiceGetResponse\"\x0c\xc2\xf3\x18\x04\x01\x02\x03\x04\xe0\xf3\x18\x02\x12g\n\x06Update\x12\'.fits.api.v1.TenantServiceUpdateRequest\x1a(.fits.api.v1.TenantServiceUpdateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x42\x97\x01\n\x0f\x63om.fits.api.v1B\x0bTenantProtoP\x01Z)github.com/fi-ts/api/go/fits/api/v1;apiv1\xa2\x02\x03\x46\x41X\xaa\x02\x0b\x46its.Api.V1\xca\x02\x0b\x46its\\Api\\V1\xe2\x02\x17\x46its\\Api\\V1\\GPBMetadata\xea\x02\rFits::Api::V1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -42,12 +41,6 @@ _globals['_TENANT'].fields_by_name['description']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001' _globals['_TENANTSERVICELISTREQUEST'].fields_by_name['name']._loaded_options = None _globals['_TENANTSERVICELISTREQUEST'].fields_by_name['name']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' - _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['name']._loaded_options = None - _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['name']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001' - _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['description']._loaded_options = None - _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['description']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001' - _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['email']._loaded_options = None - _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['email']._serialized_options = b'\272H\004r\002`\001' _globals['_TENANTSERVICEUPDATEREQUEST'].fields_by_name['update_meta']._loaded_options = None _globals['_TENANTSERVICEUPDATEREQUEST'].fields_by_name['update_meta']._serialized_options = b'\272H\003\310\001\001' _globals['_TENANTSERVICEUPDATEREQUEST'].fields_by_name['name']._loaded_options = None @@ -56,38 +49,26 @@ _globals['_TENANTSERVICEUPDATEREQUEST'].fields_by_name['email']._serialized_options = b'\272H\004r\002`\001' _globals['_TENANTSERVICEUPDATEREQUEST'].fields_by_name['description']._loaded_options = None _globals['_TENANTSERVICEUPDATEREQUEST'].fields_by_name['description']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001' - _globals['_TENANTSERVICE'].methods_by_name['Create']._loaded_options = None - _globals['_TENANTSERVICE'].methods_by_name['Create']._serialized_options = b'\330\363\030\002\340\363\030\001' _globals['_TENANTSERVICE'].methods_by_name['List']._loaded_options = None _globals['_TENANTSERVICE'].methods_by_name['List']._serialized_options = b'\330\363\030\002\340\363\030\002' _globals['_TENANTSERVICE'].methods_by_name['Get']._loaded_options = None _globals['_TENANTSERVICE'].methods_by_name['Get']._serialized_options = b'\302\363\030\004\001\002\003\004\340\363\030\002' _globals['_TENANTSERVICE'].methods_by_name['Update']._loaded_options = None _globals['_TENANTSERVICE'].methods_by_name['Update']._serialized_options = b'\302\363\030\002\001\002\340\363\030\001' - _globals['_TENANTSERVICE'].methods_by_name['Delete']._loaded_options = None - _globals['_TENANTSERVICE'].methods_by_name['Delete']._serialized_options = b'\302\363\030\002\001\002\340\363\030\001' - _globals['_TENANT']._serialized_start=166 - _globals['_TENANT']._serialized_end=399 - _globals['_TENANTSERVICELISTREQUEST']._serialized_start=402 - _globals['_TENANTSERVICELISTREQUEST']._serialized_end=564 - _globals['_TENANTSERVICEGETREQUEST']._serialized_start=566 - _globals['_TENANTSERVICEGETREQUEST']._serialized_end=613 - _globals['_TENANTSERVICECREATEREQUEST']._serialized_start=616 - _globals['_TENANTSERVICECREATEREQUEST']._serialized_end=887 - _globals['_TENANTSERVICEUPDATEREQUEST']._serialized_start=890 - _globals['_TENANTSERVICEUPDATEREQUEST']._serialized_end=1285 - _globals['_TENANTSERVICEDELETEREQUEST']._serialized_start=1287 - _globals['_TENANTSERVICEDELETEREQUEST']._serialized_end=1337 - _globals['_TENANTSERVICEGETRESPONSE']._serialized_start=1339 - _globals['_TENANTSERVICEGETRESPONSE']._serialized_end=1410 - _globals['_TENANTSERVICELISTRESPONSE']._serialized_start=1412 - _globals['_TENANTSERVICELISTRESPONSE']._serialized_end=1486 - _globals['_TENANTSERVICECREATERESPONSE']._serialized_start=1488 - _globals['_TENANTSERVICECREATERESPONSE']._serialized_end=1562 - _globals['_TENANTSERVICEUPDATERESPONSE']._serialized_start=1564 - _globals['_TENANTSERVICEUPDATERESPONSE']._serialized_end=1638 - _globals['_TENANTSERVICEDELETERESPONSE']._serialized_start=1640 - _globals['_TENANTSERVICEDELETERESPONSE']._serialized_end=1714 - _globals['_TENANTSERVICE']._serialized_start=1717 - _globals['_TENANTSERVICE']._serialized_end=2240 + _globals['_TENANT']._serialized_start=133 + _globals['_TENANT']._serialized_end=366 + _globals['_TENANTSERVICELISTREQUEST']._serialized_start=369 + _globals['_TENANTSERVICELISTREQUEST']._serialized_end=531 + _globals['_TENANTSERVICEGETREQUEST']._serialized_start=533 + _globals['_TENANTSERVICEGETREQUEST']._serialized_end=580 + _globals['_TENANTSERVICEUPDATEREQUEST']._serialized_start=583 + _globals['_TENANTSERVICEUPDATEREQUEST']._serialized_end=978 + _globals['_TENANTSERVICEGETRESPONSE']._serialized_start=980 + _globals['_TENANTSERVICEGETRESPONSE']._serialized_end=1051 + _globals['_TENANTSERVICELISTRESPONSE']._serialized_start=1053 + _globals['_TENANTSERVICELISTRESPONSE']._serialized_end=1127 + _globals['_TENANTSERVICEUPDATERESPONSE']._serialized_start=1129 + _globals['_TENANTSERVICEUPDATERESPONSE']._serialized_end=1203 + _globals['_TENANTSERVICE']._serialized_start=1206 + _globals['_TENANTSERVICE']._serialized_end=1521 # @@protoc_insertion_point(module_scope) diff --git a/python/fits/api/v1/tenant_pb2.pyi b/python/fits/api/v1/tenant_pb2.pyi index fd7ba94..948cb0e 100644 --- a/python/fits/api/v1/tenant_pb2.pyi +++ b/python/fits/api/v1/tenant_pb2.pyi @@ -1,7 +1,6 @@ from buf.validate import validate_pb2 as _validate_pb2 from fits.api.v1 import common_pb2 as _common_pb2 from fits.api.v1 import predefined_rules_pb2 as _predefined_rules_pb2 -from google.protobuf import timestamp_pb2 as _timestamp_pb2 from google.protobuf.internal import containers as _containers from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message @@ -44,20 +43,6 @@ class TenantServiceGetRequest(_message.Message): login: str def __init__(self, login: _Optional[str] = ...) -> None: ... -class TenantServiceCreateRequest(_message.Message): - __slots__ = ("name", "description", "email", "avatar_url", "labels") - NAME_FIELD_NUMBER: _ClassVar[int] - DESCRIPTION_FIELD_NUMBER: _ClassVar[int] - EMAIL_FIELD_NUMBER: _ClassVar[int] - AVATAR_URL_FIELD_NUMBER: _ClassVar[int] - LABELS_FIELD_NUMBER: _ClassVar[int] - name: str - description: str - email: str - avatar_url: str - labels: _common_pb2.Labels - def __init__(self, name: _Optional[str] = ..., description: _Optional[str] = ..., email: _Optional[str] = ..., avatar_url: _Optional[str] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ...) -> None: ... - class TenantServiceUpdateRequest(_message.Message): __slots__ = ("login", "update_meta", "name", "email", "description", "avatar_url", "labels") LOGIN_FIELD_NUMBER: _ClassVar[int] @@ -76,12 +61,6 @@ class TenantServiceUpdateRequest(_message.Message): labels: _common_pb2.UpdateLabels def __init__(self, login: _Optional[str] = ..., update_meta: _Optional[_Union[_common_pb2.UpdateMeta, _Mapping]] = ..., name: _Optional[str] = ..., email: _Optional[str] = ..., description: _Optional[str] = ..., avatar_url: _Optional[str] = ..., labels: _Optional[_Union[_common_pb2.UpdateLabels, _Mapping]] = ...) -> None: ... -class TenantServiceDeleteRequest(_message.Message): - __slots__ = ("login",) - LOGIN_FIELD_NUMBER: _ClassVar[int] - login: str - def __init__(self, login: _Optional[str] = ...) -> None: ... - class TenantServiceGetResponse(_message.Message): __slots__ = ("tenant",) TENANT_FIELD_NUMBER: _ClassVar[int] @@ -94,20 +73,8 @@ class TenantServiceListResponse(_message.Message): tenants: _containers.RepeatedCompositeFieldContainer[Tenant] def __init__(self, tenants: _Optional[_Iterable[_Union[Tenant, _Mapping]]] = ...) -> None: ... -class TenantServiceCreateResponse(_message.Message): - __slots__ = ("tenant",) - TENANT_FIELD_NUMBER: _ClassVar[int] - tenant: Tenant - def __init__(self, tenant: _Optional[_Union[Tenant, _Mapping]] = ...) -> None: ... - class TenantServiceUpdateResponse(_message.Message): __slots__ = ("tenant",) TENANT_FIELD_NUMBER: _ClassVar[int] tenant: Tenant def __init__(self, tenant: _Optional[_Union[Tenant, _Mapping]] = ...) -> None: ... - -class TenantServiceDeleteResponse(_message.Message): - __slots__ = ("tenant",) - TENANT_FIELD_NUMBER: _ClassVar[int] - tenant: Tenant - def __init__(self, tenant: _Optional[_Union[Tenant, _Mapping]] = ...) -> None: ...