From 325c7b216fd49b1f9226b41d73c28177ec22af75 Mon Sep 17 00:00:00 2001 From: Erik Merkle Date: Fri, 28 Jun 2024 17:21:50 -0500 Subject: [PATCH] Add new /v2/tokens endpoint for Enterprise ops (#36) --- astra/astra.gen.go | 145 +++++++++++++++++++++++++++++++++++++++++++++ swagger.yaml | 52 ++++++++++++++++ 2 files changed, 197 insertions(+) diff --git a/astra/astra.gen.go b/astra/astra.gen.go index a1b5040..cab3b0a 100644 --- a/astra/astra.gen.go +++ b/astra/astra.gen.go @@ -646,6 +646,9 @@ type GCPKMS struct { // GenerateTokenBody The post body to generate a token type GenerateTokenBody struct { + // OrgId The UUID of the organization under which the token will be created (optional). If not provided, the token will be created under the organization/enterprise of the token making the request. + OrgId *string `json:"orgId,omitempty"` + // Roles The roles for which the token will be generated Roles []string `json:"roles"` } @@ -1219,6 +1222,9 @@ type UpdateRolesForUserInOrganizationJSONRequestBody = RoleInviteRequest // CreateVPCPeeringConnectionJSONRequestBody defines body for CreateVPCPeeringConnection for application/json ContentType. type CreateVPCPeeringConnectionJSONRequestBody CreateVPCPeeringConnectionJSONBody +// GenerateAppTokenForClientJSONRequestBody defines body for GenerateAppTokenForClient for application/json ContentType. +type GenerateAppTokenForClientJSONRequestBody = GenerateTokenBody + // RequestEditorFn is the function signature for the RequestEditor callback function type RequestEditorFn func(ctx context.Context, req *http.Request) error @@ -1517,6 +1523,11 @@ type ClientInterface interface { // ListServerlessRegions request ListServerlessRegions(ctx context.Context, params *ListServerlessRegionsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // GenerateAppTokenForClient request with any body + GenerateAppTokenForClientWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + GenerateAppTokenForClient(ctx context.Context, body GenerateAppTokenForClientJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) } func (c *Client) GetAccessListTemplate(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { @@ -2515,6 +2526,30 @@ func (c *Client) ListServerlessRegions(ctx context.Context, params *ListServerle return c.Client.Do(req) } +func (c *Client) GenerateAppTokenForClientWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGenerateAppTokenForClientRequestWithBody(c.Server, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) GenerateAppTokenForClient(ctx context.Context, body GenerateAppTokenForClientJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGenerateAppTokenForClientRequest(c.Server, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + // NewGetAccessListTemplateRequest generates requests for GetAccessListTemplate func NewGetAccessListTemplateRequest(server string) (*http.Request, error) { var err error @@ -5038,6 +5073,46 @@ func NewListServerlessRegionsRequest(server string, params *ListServerlessRegion return req, nil } +// NewGenerateAppTokenForClientRequest calls the generic GenerateAppTokenForClient builder with application/json body +func NewGenerateAppTokenForClientRequest(server string, body GenerateAppTokenForClientJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewGenerateAppTokenForClientRequestWithBody(server, "application/json", bodyReader) +} + +// NewGenerateAppTokenForClientRequestWithBody generates requests for GenerateAppTokenForClient with any type of body +func NewGenerateAppTokenForClientRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v2/tokens") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + func (c *Client) applyEditors(ctx context.Context, req *http.Request, additionalEditors []RequestEditorFn) error { for _, r := range c.RequestEditors { if err := r(ctx, req); err != nil { @@ -5306,6 +5381,11 @@ type ClientWithResponsesInterface interface { // ListServerlessRegions request ListServerlessRegionsWithResponse(ctx context.Context, params *ListServerlessRegionsParams, reqEditors ...RequestEditorFn) (*ListServerlessRegionsResponse, error) + + // GenerateAppTokenForClient request with any body + GenerateAppTokenForClientWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*GenerateAppTokenForClientResponse, error) + + GenerateAppTokenForClientWithResponse(ctx context.Context, body GenerateAppTokenForClientJSONRequestBody, reqEditors ...RequestEditorFn) (*GenerateAppTokenForClientResponse, error) } type GetAccessListTemplateResponse struct { @@ -6786,6 +6866,28 @@ func (r ListServerlessRegionsResponse) StatusCode() int { return 0 } +type GenerateAppTokenForClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *interface{} +} + +// Status returns HTTPResponse.Status +func (r GenerateAppTokenForClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GenerateAppTokenForClientResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + // GetAccessListTemplateWithResponse request returning *GetAccessListTemplateResponse func (c *ClientWithResponses) GetAccessListTemplateWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetAccessListTemplateResponse, error) { rsp, err := c.GetAccessListTemplate(ctx, reqEditors...) @@ -7510,6 +7612,23 @@ func (c *ClientWithResponses) ListServerlessRegionsWithResponse(ctx context.Cont return ParseListServerlessRegionsResponse(rsp) } +// GenerateAppTokenForClientWithBodyWithResponse request with arbitrary body returning *GenerateAppTokenForClientResponse +func (c *ClientWithResponses) GenerateAppTokenForClientWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*GenerateAppTokenForClientResponse, error) { + rsp, err := c.GenerateAppTokenForClientWithBody(ctx, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseGenerateAppTokenForClientResponse(rsp) +} + +func (c *ClientWithResponses) GenerateAppTokenForClientWithResponse(ctx context.Context, body GenerateAppTokenForClientJSONRequestBody, reqEditors ...RequestEditorFn) (*GenerateAppTokenForClientResponse, error) { + rsp, err := c.GenerateAppTokenForClient(ctx, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseGenerateAppTokenForClientResponse(rsp) +} + // ParseGetAccessListTemplateResponse parses an HTTP response from a GetAccessListTemplateWithResponse call func ParseGetAccessListTemplateResponse(rsp *http.Response) (*GetAccessListTemplateResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) @@ -10169,3 +10288,29 @@ func ParseListServerlessRegionsResponse(rsp *http.Response) (*ListServerlessRegi return response, nil } + +// ParseGenerateAppTokenForClientResponse parses an HTTP response from a GenerateAppTokenForClientWithResponse call +func ParseGenerateAppTokenForClientResponse(rsp *http.Response) (*GenerateAppTokenForClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GenerateAppTokenForClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest interface{} + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} diff --git a/swagger.yaml b/swagger.yaml index 29df520..a026f9d 100644 --- a/swagger.yaml +++ b/swagger.yaml @@ -1712,6 +1712,54 @@ paths: schema: type: string example: invalid + /v2/tokens: + post: + tags: + - Token + summary: "generateAppTokenForClient" + operationId: "generateAppTokenForClient" + requestBody: + description: "The model for generating token for client" + content: + application/json: + schema: + $ref: '#/components/schemas/GenerateTokenBody' + responses: + '200': + description: successful operation + content: + application/json: + schema: + items: + $ref: '#/components/schemas/GenerateTokenResponse' + '400': + description: bad request + content: + text/plain: + schema: + type: string + example: invalid + '403': + description: forbidden + content: + text/plain: + schema: + type: string + example: invalid + '404': + description: not found + content: + text/plain: + schema: + type: string + example: invalid + '500': + description: server error + content: + text/plain: + schema: + type: string + example: invalid /v2/clientIdSecrets/{clientId}: delete: tags: @@ -3230,6 +3278,10 @@ components: items: type: "string" example: "write" + orgId: + type: "string" + description: "The UUID of the organization under which the token will be created (optional). If not provided, the token will be created under the organization/enterprise of the token making the request." + example: "uuid" ClientRoleList: type: "object" description: "The response for a requested token"