diff --git a/govcd/service_account.go b/govcd/service_account.go index e0ea28f1e..c97719f06 100644 --- a/govcd/service_account.go +++ b/govcd/service_account.go @@ -177,14 +177,13 @@ func (sa *ServiceAccount) Authorize() error { userDef = "provider" } - endpoint := fmt.Sprintf("%s://%s/oauth/%s/device_authorization", client.VCDHREF.Scheme, client.VCDHREF.Host, userDef) + endpoint := client.rootVcdHref() + "/" + fmt.Sprintf(types.OpenApiEndpointServiceAccountAuthorization, userDef) urlRef, err := url.ParseRequestURI(endpoint) if err != nil { return fmt.Errorf("error getting request url from %s: %s", urlRef.String(), err) } - // Not an OpenAPI endpoint so hardcoding the Service Account minimal version - err = client.OpenApiPostUrlEncoded("37.0", urlRef, nil, data, &sa.authParams, nil) + err = client.OpenApiPostUrlEncoded(client.APIVersion, urlRef, nil, data, &sa.authParams, nil) if err != nil { return fmt.Errorf("error authorizing service account: %s", err) } diff --git a/types/v56/constants.go b/types/v56/constants.go index 7dc24c6e5..664abc389 100644 --- a/types/v56/constants.go +++ b/types/v56/constants.go @@ -510,9 +510,10 @@ const ( OpenApiEndpointAlbEdgeGateway = "edgeGateways/%s/loadBalancer" // OpenApiEndpointServiceAccountGrant is needed for granting a Service Account - OpenApiEndpointServiceAccountGrant = "deviceLookup/grant" - OpenApiEndpointTokens = "tokens/" - OpenApiEndpointServiceAccounts = "serviceAccounts/" + OpenApiEndpointServiceAccountGrant = "deviceLookup/grant" + OpenApiEndpointTokens = "tokens/" + OpenApiEndpointServiceAccounts = "serviceAccounts/" + OpenApiEndpointServiceAccountAuthorization = "oauth/%s/device_authorization" // OpenApiEndpointVgpuProfile is used to query vGPU profiles OpenApiEndpointVgpuProfile = "vgpuProfiles"