diff --git a/cli/packages/api/api.go b/cli/packages/api/api.go index d438adb33..eaf1c650b 100644 --- a/cli/packages/api/api.go +++ b/cli/packages/api/api.go @@ -145,6 +145,25 @@ func CallLogin2V2(httpClient *resty.Client, request GetLoginTwoV2Request) (GetLo return loginTwoV2Response, nil } +func CallGetAllOrganizations(httpClient *resty.Client) (GetOrganizationsResponse, error) { + var orgResponse GetOrganizationsResponse + response, err := httpClient. + R(). + SetResult(&orgResponse). + SetHeader("User-Agent", USER_AGENT). + Get(fmt.Sprintf("%v/v1/organization", config.INFISICAL_URL)) + + if err != nil { + return GetOrganizationsResponse{}, err + } + + if response.IsError() { + return GetOrganizationsResponse{}, fmt.Errorf("CallGetAllOrganizations: Unsuccessful response: [response=%v]", response) + } + + return orgResponse, nil +} + func CallGetAllWorkSpacesUserBelongsTo(httpClient *resty.Client) (GetWorkSpacesResponse, error) { var workSpacesResponse GetWorkSpacesResponse response, err := httpClient. @@ -161,6 +180,22 @@ func CallGetAllWorkSpacesUserBelongsTo(httpClient *resty.Client) (GetWorkSpacesR return GetWorkSpacesResponse{}, fmt.Errorf("CallGetAllWorkSpacesUserBelongsTo: Unsuccessful response: [response=%v]", response) } + // Call the organization API + orgResponse, err := CallGetAllOrganizations(httpClient) + if err != nil { + return GetWorkSpacesResponse{}, err + } + + // Update organization names in workspacesResponse + for i, workspace := range workSpacesResponse.Workspaces { + for _, organization := range orgResponse.Organizations { + if workspace.Organization == organization.ID { + workSpacesResponse.Workspaces[i].Organization = organization.Name + break + } + } + } + return workSpacesResponse, nil } diff --git a/cli/packages/api/model.go b/cli/packages/api/model.go index 67ac97c25..5fc04dee3 100644 --- a/cli/packages/api/model.go +++ b/cli/packages/api/model.go @@ -124,10 +124,17 @@ type GetWorkSpacesResponse struct { Name string `json:"name"` Plan string `json:"plan,omitempty"` V int `json:"__v"` - Organization string `json:"organization,omitempty"` + Organization string `json:"orgId,omitempty"` } `json:"workspaces"` } +type GetOrganizationsResponse struct { + Organizations []struct { + ID string `json:"id"` + Name string `json:"name"` + } `json:"organizations"` +} + type Secret struct { SecretKeyCiphertext string `json:"secretKeyCiphertext,omitempty"` SecretKeyIV string `json:"secretKeyIV,omitempty"` @@ -505,5 +512,5 @@ type GetRawSecretsV3Response struct { SecretComment string `json:"secretComment"` } `json:"secrets"` Imports []any `json:"imports"` - ETag string + ETag string } diff --git a/cli/packages/cmd/init.go b/cli/packages/cmd/init.go index 070074fa9..9e7c2fe6a 100644 --- a/cli/packages/cmd/init.go +++ b/cli/packages/cmd/init.go @@ -65,7 +65,7 @@ var initCmd = &cobra.Command{ var workspaceNames []string for _, workspace := range workspaces { - workspaceNames = append(workspaceNames, workspace.Name) + workspaceNames = append(workspaceNames, fmt.Sprintf("%s (%s)", workspace.Name, workspace.Organization)) } prompt := promptui.Select{ diff --git a/cli/packages/models/cli.go b/cli/packages/models/cli.go index 71033fe72..801cfddfc 100644 --- a/cli/packages/models/cli.go +++ b/cli/packages/models/cli.go @@ -49,7 +49,7 @@ type Workspace struct { Name string `json:"name"` Plan string `json:"plan,omitempty"` V int `json:"__v"` - Organization string `json:"organization,omitempty"` + Organization string `json:"orgId,omitempty"` } type WorkspaceConfigFile struct {