fix: add involves edge from task to agent:nomos at creation
Some checks failed
ci / build-test (push) Has been cancelled
ci / docker-build (push) Has been cancelled
ci / web (push) Has been cancelled
Desktop App / Build Linux (amd64) (push) Has been cancelled
Desktop App / Attach to Release (push) Has been cancelled

Plus sync vendor directory for Docker build compatibility.
This commit is contained in:
2026-08-11 22:03:12 +02:00
parent 7d6a3320d4
commit febc153b7f
3384 changed files with 945212 additions and 2 deletions

View File

@@ -0,0 +1,31 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callAWSIamAuthLoginOperation = "CallAWSIamAuthLogin"
func CallAWSIamAuthLogin(httpClient *resty.Client, request AwsIamAuthLoginRequest) (credential MachineIdentityAuthLoginResponse, e error) {
var responseData MachineIdentityAuthLoginResponse
clonedClient := httpClient.Clone()
clonedClient.SetAuthToken("")
clonedClient.SetAuthScheme("")
response, err := clonedClient.R().
SetResult(&responseData).
SetBody(request).
Post("/v1/auth/aws-auth/login")
if err != nil {
return MachineIdentityAuthLoginResponse{}, errors.NewRequestError(callAWSIamAuthLoginOperation, err)
}
if response.IsError() {
return MachineIdentityAuthLoginResponse{}, errors.NewAPIErrorWithResponse(callAWSIamAuthLoginOperation, response)
}
return responseData, nil
}

View File

@@ -0,0 +1,31 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const azureAuthLoginOperation = "CallAzureAuthLogin"
func CallAzureAuthLogin(httpClient *resty.Client, request AzureAuthLoginRequest) (credential MachineIdentityAuthLoginResponse, e error) {
var responseData MachineIdentityAuthLoginResponse
clonedClient := httpClient.Clone()
clonedClient.SetAuthToken("")
clonedClient.SetAuthScheme("")
response, err := clonedClient.R().
SetResult(&responseData).
SetBody(request).
Post("/v1/auth/azure-auth/login")
if err != nil {
return MachineIdentityAuthLoginResponse{}, errors.NewRequestError(azureAuthLoginOperation, err)
}
if response.IsError() {
return MachineIdentityAuthLoginResponse{}, errors.NewAPIErrorWithResponse(azureAuthLoginOperation, response)
}
return responseData, nil
}

View File

@@ -0,0 +1,31 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callGCPAuthLoginOperation = "CallGCPAuthLogin"
func CallGCPAuthLogin(httpClient *resty.Client, request GCPAuthLoginRequest) (credential MachineIdentityAuthLoginResponse, e error) {
var responseData MachineIdentityAuthLoginResponse
clonedClient := httpClient.Clone()
clonedClient.SetAuthToken("")
clonedClient.SetAuthScheme("")
response, err := clonedClient.R().
SetResult(&responseData).
SetBody(request).
Post("/v1/auth/gcp-auth/login")
if err != nil {
return MachineIdentityAuthLoginResponse{}, errors.NewRequestError(callGCPAuthLoginOperation, err)
}
if response.IsError() {
return MachineIdentityAuthLoginResponse{}, errors.NewAPIErrorWithResponse(callGCPAuthLoginOperation, response)
}
return responseData, nil
}

View File

@@ -0,0 +1,31 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callJwtAuthLoginOperation = "CallJwtAuthLogin"
func CallJwtAuthLogin(httpClient *resty.Client, request JwtAuthLoginRequest) (credential MachineIdentityAuthLoginResponse, e error) {
var responseData MachineIdentityAuthLoginResponse
clonedClient := httpClient.Clone()
clonedClient.SetAuthToken("")
clonedClient.SetAuthScheme("")
response, err := clonedClient.R().
SetResult(&responseData).
SetBody(request).
Post("/v1/auth/jwt-auth/login")
if err != nil {
return responseData, errors.NewRequestError(callJwtAuthLoginOperation, err)
}
if response.IsError() {
return responseData, errors.NewAPIErrorWithResponse(callJwtAuthLoginOperation, response)
}
return responseData, nil
}

View File

@@ -0,0 +1,31 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callKubernetesAuthLoginOperation = "CallKubernetesAuthLogin"
func CallKubernetesAuthLogin(httpClient *resty.Client, request KubernetesAuthLoginRequest) (credential MachineIdentityAuthLoginResponse, e error) {
var responseData MachineIdentityAuthLoginResponse
clonedClient := httpClient.Clone()
clonedClient.SetAuthToken("")
clonedClient.SetAuthScheme("")
response, err := clonedClient.R().
SetResult(&responseData).
SetBody(request).
Post("/v1/auth/kubernetes-auth/login")
if err != nil {
return MachineIdentityAuthLoginResponse{}, errors.NewRequestError(callKubernetesAuthLoginOperation, err)
}
if response.IsError() {
return MachineIdentityAuthLoginResponse{}, errors.NewAPIErrorWithResponse(callKubernetesAuthLoginOperation, response)
}
return responseData, nil
}

View File

@@ -0,0 +1,31 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callLdapAuthLoginOperation = "CallLdapAuthLogin"
func CallLdapAuthLogin(httpClient *resty.Client, request LdapAuthLoginRequest) (credential MachineIdentityAuthLoginResponse, e error) {
var responseData MachineIdentityAuthLoginResponse
clonedClient := httpClient.Clone()
clonedClient.SetAuthToken("")
clonedClient.SetAuthScheme("")
response, err := clonedClient.R().
SetResult(&responseData).
SetBody(request).
Post("/v1/auth/ldap-auth/login")
if err != nil {
return MachineIdentityAuthLoginResponse{}, errors.NewRequestError(callLdapAuthLoginOperation, err)
}
if response.IsError() {
return MachineIdentityAuthLoginResponse{}, errors.NewAPIErrorWithResponse(callLdapAuthLoginOperation, response)
}
return responseData, nil
}

View File

@@ -0,0 +1,82 @@
package api
// JWT auth:
type JwtAuthLoginRequest struct {
IdentityID string `json:"identityId"`
JWT string `json:"jwt"`
OrganizationSlug string `json:"organizationSlug,omitempty"`
}
// Revoke access token:
type RevokeAccessTokenRequest struct {
AccessToken string `json:"accessToken"`
}
type RevokeAccessTokenResponse struct {
Message string `json:"message"`
}
// Universal auth:
type UniversalAuthLoginRequest struct {
ClientID string `json:"clientId"`
ClientSecret string `json:"clientSecret"`
OrganizationSlug string `json:"organizationSlug,omitempty"`
}
// Kubernetes auth:
type KubernetesAuthLoginRequest struct {
IdentityID string `json:"identityId"`
JWT string `json:"jwt"`
OrganizationSlug string `json:"organizationSlug,omitempty"`
}
type AzureAuthLoginRequest struct {
IdentityID string `json:"identityId"`
JWT string `json:"jwt"`
OrganizationSlug string `json:"organizationSlug,omitempty"`
}
type AwsIamAuthLoginRequest struct {
HTTPRequestMethod string `json:"iamHttpRequestMethod"`
IamRequestBody string `json:"iamRequestBody"`
IamRequestHeaders string `json:"iamRequestHeaders"`
IdentityId string `json:"identityId"`
OrganizationSlug string `json:"organizationSlug,omitempty"`
}
type GCPAuthLoginRequest struct {
IdentityID string `json:"identityId"`
JWT string `json:"jwt"`
OrganizationSlug string `json:"organizationSlug,omitempty"`
}
type OidcAuthLoginRequest struct {
IdentityID string `json:"identityId"`
JWT string `json:"jwt"`
OrganizationSlug string `json:"organizationSlug,omitempty"`
}
type MachineIdentityAuthLoginResponse struct {
AccessToken string `json:"accessToken"`
ExpiresIn int64 `json:"expiresIn"`
AccessTokenMaxTTL int64 `json:"accessTokenMaxTTL"`
TokenType string `json:"tokenType"`
}
type RenewAccessTokenRequest struct {
AccessToken string `json:"accessToken"`
}
type OciAuthLoginRequest struct {
IdentityID string `json:"identityId"`
UserOcid string `json:"userOcid"`
Headers map[string]string `json:"headers"`
OrganizationSlug string `json:"organizationSlug,omitempty"`
}
type LdapAuthLoginRequest struct {
IdentityID string `json:"identityId"`
Username string `json:"username"`
Password string `json:"password"`
OrganizationSlug string `json:"organizationSlug,omitempty"`
}

View File

@@ -0,0 +1,31 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callOciAuthLoginOperation = "CallOciAuthLogin"
func CallOciAuthLogin(httpClient *resty.Client, request OciAuthLoginRequest) (credential MachineIdentityAuthLoginResponse, e error) {
var responseData MachineIdentityAuthLoginResponse
clonedClient := httpClient.Clone()
clonedClient.SetAuthToken("")
clonedClient.SetAuthScheme("")
response, err := clonedClient.R().
SetResult(&responseData).
SetBody(request).
Post("/v1/auth/oci-auth/login")
if err != nil {
return MachineIdentityAuthLoginResponse{}, errors.NewRequestError(callOciAuthLoginOperation, err)
}
if response.IsError() {
return MachineIdentityAuthLoginResponse{}, errors.NewAPIErrorWithResponse(callOciAuthLoginOperation, response)
}
return responseData, nil
}

View File

@@ -0,0 +1,31 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callOidcAuthLoginOperation = "CallOidcAuthLogin"
func CallOidcAuthLogin(httpClient *resty.Client, request OidcAuthLoginRequest) (credential MachineIdentityAuthLoginResponse, e error) {
var responseData MachineIdentityAuthLoginResponse
clonedClient := httpClient.Clone()
clonedClient.SetAuthToken("")
clonedClient.SetAuthScheme("")
response, err := clonedClient.R().
SetResult(&responseData).
SetBody(request).
Post("/v1/auth/oidc-auth/login")
if err != nil {
return MachineIdentityAuthLoginResponse{}, errors.NewRequestError(callOidcAuthLoginOperation, err)
}
if response.IsError() {
return MachineIdentityAuthLoginResponse{}, errors.NewAPIErrorWithResponse(callOidcAuthLoginOperation, response)
}
return responseData, nil
}

View File

@@ -0,0 +1,31 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callRenewAccessToken = "CallRenewAccessToken"
func CallRenewAccessToken(httpClient *resty.Client, request RenewAccessTokenRequest) (credential MachineIdentityAuthLoginResponse, e error) {
var responseData MachineIdentityAuthLoginResponse
clonedClient := httpClient.Clone()
clonedClient.SetAuthToken("")
clonedClient.SetAuthScheme("")
response, err := clonedClient.R().
SetResult(&responseData).
SetBody(request).
Post("/v1/auth/token/renew")
if err != nil {
return responseData, errors.NewRequestError(callRenewAccessToken, err)
}
if response.IsError() {
return responseData, errors.NewAPIErrorWithResponse(callRenewAccessToken, response)
}
return responseData, nil
}

View File

@@ -0,0 +1,27 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callRevokeAccessTokenOperation = "CallRevokeAccessToken"
func CallRevokeAccessToken(httpClient *resty.Client, request RevokeAccessTokenRequest) (RevokeAccessTokenResponse, error) {
var responseData RevokeAccessTokenResponse
response, err := httpClient.R().
SetResult(&responseData).
SetBody(request).
Post("/v1/auth/token/revoke")
if err != nil {
return responseData, errors.NewRequestError(callRevokeAccessTokenOperation, err)
}
if response.IsError() {
return responseData, errors.NewAPIErrorWithResponse(callRevokeAccessTokenOperation, response)
}
return responseData, nil
}

View File

@@ -0,0 +1,31 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callUniversalAuthLoginOperation = "CallUniversalAuthLogin"
func CallUniversalAuthLogin(httpClient *resty.Client, request UniversalAuthLoginRequest) (credential MachineIdentityAuthLoginResponse, e error) {
var responseData MachineIdentityAuthLoginResponse
clonedClient := httpClient.Clone()
clonedClient.SetAuthToken("")
clonedClient.SetAuthScheme("")
response, err := clonedClient.R().
SetResult(&responseData).
SetBody(request).
Post("/v1/auth/universal-auth/login")
if err != nil {
return responseData, errors.NewRequestError(callUniversalAuthLoginOperation, err)
}
if response.IsError() {
return responseData, errors.NewAPIErrorWithResponse(callUniversalAuthLoginOperation, response)
}
return responseData, nil
}

View File

@@ -0,0 +1,29 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callCreateDynamicSecretLeaseV1Operation = "CallCreateDynamicSecretLeaseV1"
func CallCreateDynamicSecretLeaseV1(httpClient *resty.Client, request CreateDynamicSecretLeaseV1Request) (CreateDynamicSecretLeaseV1Response, error) {
createResponse := CreateDynamicSecretLeaseV1Response{}
req := httpClient.R().
SetResult(&createResponse).
SetBody(request)
res, err := req.Post("/v1/dynamic-secrets/leases")
if err != nil {
return CreateDynamicSecretLeaseV1Response{}, errors.NewRequestError(callCreateDynamicSecretLeaseV1Operation, err)
}
if res.IsError() {
return CreateDynamicSecretLeaseV1Response{}, errors.NewAPIErrorWithResponse(callCreateDynamicSecretLeaseV1Operation, res)
}
return createResponse, nil
}

View File

@@ -0,0 +1,29 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callDeleteDynamicSecretLeaseV1Operation = "CallDeleteDynamicSecretLeaseV1"
func CallDeleteDynamicSecretLeaseV1(httpClient *resty.Client, request DeleteDynamicSecretLeaseV1Request) (DeleteDynamicSecretLeaseV1Response, error) {
deleteResponse := DeleteDynamicSecretLeaseV1Response{}
req := httpClient.R().
SetResult(&deleteResponse).
SetBody(request)
res, err := req.Delete("/v1/dynamic-secrets/leases/" + request.LeaseId)
if err != nil {
return DeleteDynamicSecretLeaseV1Response{}, errors.NewRequestError(callDeleteDynamicSecretLeaseV1Operation, err)
}
if res.IsError() {
return DeleteDynamicSecretLeaseV1Response{}, errors.NewAPIErrorWithResponse(callDeleteDynamicSecretLeaseV1Operation, res)
}
return deleteResponse, nil
}

View File

@@ -0,0 +1,33 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callGetDynamicSecretLeaseByIdV1Operation = "CallGetDynamicSecretLeaseByIdV1"
func CallGetByDynamicSecretByIdLeaseV1(httpClient *resty.Client, request GetDynamicSecretLeaseByIdV1Request) (GetDynamicSecretLeaseByIdV1Response, error) {
getByIdResponse := GetDynamicSecretLeaseByIdV1Response{}
req := httpClient.R().
SetResult(&getByIdResponse).
SetQueryParams(map[string]string{
"projectSlug": request.ProjectSlug,
"environmentSlug": request.EnvironmentSlug,
"path": request.SecretPath,
})
res, err := req.Get("/v1/dynamic-secrets/leases/" + request.LeaseId)
if err != nil {
return GetDynamicSecretLeaseByIdV1Response{}, errors.NewRequestError(callGetDynamicSecretLeaseByIdV1Operation, err)
}
if res.IsError() {
return GetDynamicSecretLeaseByIdV1Response{}, errors.NewAPIErrorWithResponse(callGetDynamicSecretLeaseByIdV1Operation, res)
}
return getByIdResponse, nil
}

View File

@@ -0,0 +1,32 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callGetDynamicSecretByNameV1Operation = "CallGetDynamicSecretSecretByNameV1"
func CallGetDynamicSecretByNameV1(httpClient *resty.Client, request GetDynamicSecretByNameV1Request) (GetDynamicSecretByNameV1Response, error) {
getByNameResponse := GetDynamicSecretByNameV1Response{}
req := httpClient.R().
SetResult(&getByNameResponse).SetQueryParams(map[string]string{
"projectSlug": request.ProjectSlug,
"environmentSlug": request.EnvironmentSlug,
"path": request.SecretPath,
})
res, err := req.Get("/v1/dynamic-secrets/" + request.DynamicSecretName)
if err != nil {
return GetDynamicSecretByNameV1Response{}, errors.NewRequestError(callGetDynamicSecretByNameV1Operation, err)
}
if res.IsError() {
return GetDynamicSecretByNameV1Response{}, errors.NewAPIErrorWithResponse(callGetDynamicSecretByNameV1Operation, res)
}
return getByNameResponse, nil
}

View File

@@ -0,0 +1,33 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callListDynamicSecretLeaseV1Operation = "CallListDynamicSecretLeaseV1"
func CallListDynamicSecretLeaseV1(httpClient *resty.Client, request ListDynamicSecretLeaseV1Request) (ListDynamicSecretLeaseV1Response, error) {
listResponse := ListDynamicSecretLeaseV1Response{}
req := httpClient.R().
SetResult(&listResponse).
SetQueryParams(map[string]string{
"projectSlug": request.ProjectSlug,
"environmentSlug": request.EnvironmentSlug,
"path": request.SecretPath,
})
res, err := req.Get("/v1/dynamic-secrets/" + request.DynamicSecretName + "/leases")
if err != nil {
return ListDynamicSecretLeaseV1Response{}, errors.NewRequestError(callListDynamicSecretLeaseV1Operation, err)
}
if res.IsError() {
return ListDynamicSecretLeaseV1Response{}, errors.NewAPIErrorWithResponse(callListDynamicSecretLeaseV1Operation, res)
}
return listResponse, nil
}

View File

@@ -0,0 +1,33 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callListDynamicSecretsV1Operation = "CallListDynamicSecretSecretsV1"
func CallListDynamicSecretsV1(httpClient *resty.Client, request ListDynamicSecretsV1Request) (ListDynamicSecretsV1Response, error) {
listDynamicSecretResponse := ListDynamicSecretsV1Response{}
req := httpClient.R().
SetResult(&listDynamicSecretResponse).
SetQueryParams(map[string]string{
"projectSlug": request.ProjectSlug,
"environmentSlug": request.EnvironmentSlug,
"path": request.SecretPath,
})
res, err := req.Get("/v1/dynamic-secrets")
if err != nil {
return ListDynamicSecretsV1Response{}, errors.NewRequestError(callListDynamicSecretsV1Operation, err)
}
if res.IsError() {
return ListDynamicSecretsV1Response{}, errors.NewAPIErrorWithResponse(callListDynamicSecretsV1Operation, res)
}
return listDynamicSecretResponse, nil
}

View File

@@ -0,0 +1,88 @@
package api
import (
"github.com/infisical/go-sdk/packages/models"
)
type CreateDynamicSecretLeaseV1Request struct {
DynamicSecretName string `json:"dynamicSecretName"`
ProjectSlug string `json:"projectSlug"`
TTL string `json:"ttl"`
SecretPath string `json:"path"`
EnvironmentSlug string `json:"environmentSlug"`
Config map[string]any `json:"config"`
}
type CreateDynamicSecretLeaseV1Response struct {
Lease models.DynamicSecretLease `json:"lease"`
DynamicSecret models.DynamicSecret `json:"dynamicSecret"`
Data map[string]any `json:"data"`
}
type DeleteDynamicSecretLeaseV1Request struct {
LeaseId string `json:"leaseId"`
ProjectSlug string `json:"projectSlug"`
SecretPath string `json:"path"`
EnvironmentSlug string `json:"environmentSlug"`
IsForced bool `json:"isForced"`
}
type DeleteDynamicSecretLeaseV1Response struct {
Lease models.DynamicSecretLease `json:"lease"`
}
type RenewDynamicSecretLeaseV1Request struct {
LeaseId string `json:"leaseId"`
TTL string `json:"ttl"`
ProjectSlug string `json:"projectSlug"`
SecretPath string `json:"path"`
EnvironmentSlug string `json:"environmentSlug"`
IsForced bool `json:"isForced"`
}
type RenewDynamicSecretLeaseV1Response struct {
Lease models.DynamicSecretLease `json:"lease"`
}
type GetDynamicSecretLeaseByIdV1Request struct {
LeaseId string `json:"leaseId"`
ProjectSlug string `json:"projectSlug"`
SecretPath string `json:"path"`
EnvironmentSlug string `json:"environmentSlug"`
}
type GetDynamicSecretLeaseByIdV1Response struct {
Lease models.DynamicSecretLeaseWithDynamicSecret `json:"lease"`
}
type ListDynamicSecretLeaseV1Request struct {
DynamicSecretName string `json:"secretName"`
ProjectSlug string `json:"projectSlug"`
SecretPath string `json:"path"`
EnvironmentSlug string `json:"environmentSlug"`
}
type ListDynamicSecretLeaseV1Response struct {
Leases []models.DynamicSecretLease `json:"leases"`
}
type GetDynamicSecretByNameV1Request struct {
DynamicSecretName string `json:"secretName"`
ProjectSlug string `json:"projectSlug"`
SecretPath string `json:"path"`
EnvironmentSlug string `json:"environmentSlug"`
}
type GetDynamicSecretByNameV1Response struct {
DynamicSecret models.DynamicSecret `json:"dynamicSecret"`
}
type ListDynamicSecretsV1Request struct {
ProjectSlug string `json:"projectSlug"`
SecretPath string `json:"path"`
EnvironmentSlug string `json:"environmentSlug"`
}
type ListDynamicSecretsV1Response struct {
DynamicSecrets []models.DynamicSecret `json:"dynamicSecrets"`
}

View File

@@ -0,0 +1,29 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callRenewDynamicSecretLeaseV1Operation = "CallRenewDynamicSecretLeaseV1"
func CallRenewDynamicSecretLeaseV1(httpClient *resty.Client, request RenewDynamicSecretLeaseV1Request) (RenewDynamicSecretLeaseV1Response, error) {
renewResponse := RenewDynamicSecretLeaseV1Response{}
req := httpClient.R().
SetResult(&renewResponse).
SetBody(request)
res, err := req.Post("/v1/dynamic-secrets/leases/" + request.LeaseId + "/renew")
if err != nil {
return RenewDynamicSecretLeaseV1Response{}, errors.NewRequestError(callRenewDynamicSecretLeaseV1Operation, err)
}
if res.IsError() {
return RenewDynamicSecretLeaseV1Response{}, errors.NewAPIErrorWithResponse(callRenewDynamicSecretLeaseV1Operation, res)
}
return renewResponse, nil
}

View File

@@ -0,0 +1,29 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callCreateFolderV1Operation = "CallCreateFolderV1"
func CallCreateFolderV1(httpClient *resty.Client, request CreateFolderV1Request) (CreateFolderV1Response, error) {
createResponse := CreateFolderV1Response{}
req := httpClient.R().
SetResult(&createResponse).
SetBody(request)
res, err := req.Post("/v1/folders")
if err != nil {
return CreateFolderV1Response{}, errors.NewRequestError(callCreateFolderV1Operation, err)
}
if res.IsError() {
return CreateFolderV1Response{}, errors.NewAPIErrorWithResponse(callCreateFolderV1Operation, res)
}
return createResponse, nil
}

View File

@@ -0,0 +1,41 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callDeleteFolderV1Operation = "CallDeleteFolderV1"
func CallDeleteFolderV1(httpClient *resty.Client, request DeleteFolderV1Request) (DeleteFolderV1Response, error) {
deleteResponse := DeleteFolderV1Response{}
// Either folderID or folderName must be provided
var folderIdOrName string
if request.FolderID != "" {
folderIdOrName = request.FolderID
} else if request.FolderName != "" {
folderIdOrName = request.FolderName
} else {
return DeleteFolderV1Response{}, fmt.Errorf("CallDeleteFolderV1: Either folderID or folderName must be provided")
}
req := httpClient.R().
SetResult(&deleteResponse).
SetBody(request)
res, err := req.Delete(fmt.Sprintf("/v1/folders/%s", folderIdOrName))
if err != nil {
return DeleteFolderV1Response{}, errors.NewRequestError(callDeleteFolderV1Operation, err)
}
if res.IsError() {
return DeleteFolderV1Response{}, errors.NewAPIErrorWithResponse(callDeleteFolderV1Operation, res)
}
return deleteResponse, nil
}

View File

@@ -0,0 +1,36 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callListFoldersV1Operation = "CallListFoldersV1"
func CallListFoldersV1(httpClient *resty.Client, request ListFoldersV1Request) (ListFoldersV1Response, error) {
secretsResponse := ListFoldersV1Response{}
queryParams := map[string]string{
"workspaceId": request.ProjectID,
"environment": request.Environment,
}
if request.Path != "" {
queryParams["path"] = request.Path
}
res, err := httpClient.R().
SetResult(&secretsResponse).
SetQueryParams(queryParams).Get("/v1/folders")
if err != nil {
return ListFoldersV1Response{}, errors.NewRequestError(callListFoldersV1Operation, err)
}
if res.IsError() {
return ListFoldersV1Response{}, errors.NewAPIErrorWithResponse(callListFoldersV1Operation, res)
}
return secretsResponse, nil
}

View File

@@ -0,0 +1,57 @@
package api
import (
"github.com/infisical/go-sdk/packages/models"
)
// List folders
type ListFoldersV1Request struct {
ProjectID string `json:"workspaceId"`
Environment string `json:"environment"`
Path string `json:"path,omitempty"`
}
type ListFoldersV1Response struct {
Folders []models.Folder `json:"folders"`
}
// Update folder
type UpdateFolderV1Request struct {
FolderID string `json:"-"`
ProjectID string `json:"workspaceId"`
Environment string `json:"environment"`
NewName string `json:"name"`
Path string `json:"path,omitempty"`
}
type UpdateFolderV1Response struct {
Folder models.Folder `json:"folder"`
}
// Create folder
type CreateFolderV1Request struct {
ProjectID string `json:"workspaceId"`
Environment string `json:"environment"`
Name string `json:"name"`
Path string `json:"path,omitempty"`
}
type CreateFolderV1Response struct {
Folder models.Folder `json:"folder"`
}
// Delete folder
type DeleteFolderV1Request struct {
// Either FolderID or folderName must be provided
FolderID string `json:"-"`
FolderName string `json:"-"`
ProjectID string `json:"workspaceId"`
Environment string `json:"environment"`
Path string `json:"path,omitempty"`
}
type DeleteFolderV1Response struct {
Folder models.Folder `json:"folder"`
}

View File

@@ -0,0 +1,31 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callUpdateFolderV1Operation = "CallUpdateFolderV1"
func CallUpdateFolderV1(httpClient *resty.Client, request UpdateFolderV1Request) (UpdateFolderV1Response, error) {
updateResponse := UpdateFolderV1Response{}
req := httpClient.R().
SetResult(&updateResponse).
SetBody(request)
res, err := req.Patch(fmt.Sprintf("/v1/folders/%s", request.FolderID))
if err != nil {
return UpdateFolderV1Response{}, errors.NewRequestError(callUpdateFolderV1Operation, err)
}
if res.IsError() {
return UpdateFolderV1Response{}, errors.NewAPIErrorWithResponse(callUpdateFolderV1Operation, res)
}
return updateResponse, nil
}

View File

@@ -0,0 +1,27 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callKmsCreateKeyOperationV1 = "CallKmsCreateKeyV1"
func CallKmsCreateKeyV1(httpClient *resty.Client, request KmsCreateKeyV1Request) (KmsCreateKeyV1Response, error) {
kmsCreateKeyResponse := KmsCreateKeyV1Response{}
res, err := httpClient.R().
SetResult(&kmsCreateKeyResponse).
SetBody(request).
Post("/v1/kms/keys")
if err != nil {
return KmsCreateKeyV1Response{}, errors.NewRequestError(callKmsCreateKeyOperationV1, err)
}
if res.IsError() {
return KmsCreateKeyV1Response{}, errors.NewAPIErrorWithResponse(callKmsCreateKeyOperationV1, res)
}
return kmsCreateKeyResponse, nil
}

View File

@@ -0,0 +1,29 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callKmsDecryptDataOperationV1 = "CallKmsDecryptDataV1"
func CallKmsDecryptDataV1(httpClient *resty.Client, request KmsDecryptDataV1Request) (KmsDecryptDataV1Response, error) {
kmsDecryptDataResponse := KmsDecryptDataV1Response{}
res, err := httpClient.R().
SetResult(&kmsDecryptDataResponse).
SetBody(request).
Post(fmt.Sprintf("/v1/kms/keys/%s/decrypt", request.KeyId))
if err != nil {
return KmsDecryptDataV1Response{}, errors.NewRequestError(callKmsDecryptDataOperationV1, err)
}
if res.IsError() {
return KmsDecryptDataV1Response{}, errors.NewAPIErrorWithResponse(callKmsDecryptDataOperationV1, res)
}
return kmsDecryptDataResponse, nil
}

View File

@@ -0,0 +1,29 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callKmsDeleteKeyOperationV1 = "CallKmsDeleteKeyV1"
func CallKmsDeleteKeyV1(httpClient *resty.Client, request KmsDeleteKeyV1Request) (KmsDeleteKeyV1Response, error) {
kmsDeleteKeyResponse := KmsDeleteKeyV1Response{}
res, err := httpClient.R().
SetResult(&kmsDeleteKeyResponse).
SetBody(request).
Delete(fmt.Sprintf("/v1/kms/keys/%s", request.KeyId))
if err != nil {
return KmsDeleteKeyV1Response{}, errors.NewRequestError(callKmsDeleteKeyOperationV1, err)
}
if res.IsError() {
return KmsDeleteKeyV1Response{}, errors.NewAPIErrorWithResponse(callKmsDeleteKeyOperationV1, res)
}
return kmsDeleteKeyResponse, nil
}

View File

@@ -0,0 +1,29 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callKmsEncryptDataOperationV1 = "CallKmsEncryptDataV1"
func CallKmsEncryptDataV1(httpClient *resty.Client, request KmsEncryptDataV1Request) (KmsEncryptDataV1Response, error) {
kmsEncryptDataResponse := KmsEncryptDataV1Response{}
res, err := httpClient.R().
SetResult(&kmsEncryptDataResponse).
SetBody(request).
Post(fmt.Sprintf("/v1/kms/keys/%s/encrypt", request.KeyId))
if err != nil {
return KmsEncryptDataV1Response{}, errors.NewRequestError(callKmsEncryptDataOperationV1, err)
}
if res.IsError() {
return KmsEncryptDataV1Response{}, errors.NewAPIErrorWithResponse(callKmsEncryptDataOperationV1, res)
}
return kmsEncryptDataResponse, nil
}

View File

@@ -0,0 +1,28 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callKmsGetKeyByNameOperationV1 = "CallKmsGetKeyByNameV1"
func CallKmsGetKeyByNameV1(httpClient *resty.Client, request KmsGetKeyByNameV1Request) (KmsGetKeyV1Response, error) {
kmsGetKeyByNameResponse := KmsGetKeyV1Response{}
res, err := httpClient.R().
SetResult(&kmsGetKeyByNameResponse).
Get(fmt.Sprintf("/v1/kms/keys/key-name/%s?projectId=%s", request.KeyName, request.ProjectId))
if err != nil {
return KmsGetKeyV1Response{}, errors.NewRequestError(callKmsGetKeyByNameOperationV1, err)
}
if res.IsError() {
return KmsGetKeyV1Response{}, errors.NewAPIErrorWithResponse(callKmsGetKeyByNameOperationV1, res)
}
return kmsGetKeyByNameResponse, nil
}

View File

@@ -0,0 +1,28 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callKmsGetPublicKeyOperationV1 = "CallKmsGetPublicKeyV1"
func CallKmsGetPublicKeyV1(httpClient *resty.Client, request KmsGetPublicKeyV1Request) (KmsGetPublicKeyV1Response, error) {
kmsGetPublicKeyResponse := KmsGetPublicKeyV1Response{}
res, err := httpClient.R().
SetResult(&kmsGetPublicKeyResponse).
Get(fmt.Sprintf("/v1/kms/keys/%s/public-key", request.KeyId))
if err != nil {
return KmsGetPublicKeyV1Response{}, errors.NewRequestError(callKmsGetPublicKeyOperationV1, err)
}
if res.IsError() {
return KmsGetPublicKeyV1Response{}, errors.NewAPIErrorWithResponse(callKmsGetPublicKeyOperationV1, res)
}
return kmsGetPublicKeyResponse, nil
}

View File

@@ -0,0 +1,29 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callKmsGetSigningAlgorithmsOperationV1 = "CallKmsGetSigningAlgorithmsV1"
func CallKmsGetSigningAlgorithmsV1(httpClient *resty.Client, request KmsListSigningAlgorithmsV1Request) (KmsListSigningAlgorithmsV1Response, error) {
kmsListSigningAlgorithmsResponse := KmsListSigningAlgorithmsV1Response{}
res, err := httpClient.R().
SetResult(&kmsListSigningAlgorithmsResponse).
Get(fmt.Sprintf("/v1/kms/keys/%s/signing-algorithms", request.KeyId))
if err != nil {
return KmsListSigningAlgorithmsV1Response{}, errors.NewRequestError(callKmsGetSigningAlgorithmsOperationV1, err)
}
if res.IsError() {
return KmsListSigningAlgorithmsV1Response{}, errors.NewAPIErrorWithResponse(callKmsGetSigningAlgorithmsOperationV1, res)
}
return kmsListSigningAlgorithmsResponse, nil
}

View File

@@ -0,0 +1,114 @@
package api
type KmsEncryptDataV1Request struct {
KeyId string
Plaintext string `json:"plaintext"`
}
type KmsEncryptDataV1Response struct {
Ciphertext string `json:"ciphertext"`
}
type KmsDecryptDataV1Request struct {
KeyId string
Ciphertext string `json:"ciphertext"`
}
type KmsDecryptDataV1Response struct {
Plaintext string `json:"plaintext"`
}
type KmsSignDataV1Request struct {
KeyId string
Data string `json:"data"`
SigningAlgorithm string `json:"signingAlgorithm"`
IsDigest bool `json:"isDigest"`
}
type KmsSignDataV1Response struct {
Signature string `json:"signature"`
KeyId string `json:"keyId"`
SigningAlgorithm string `json:"signingAlgorithm"`
}
type KmsVerifyDataV1Request struct {
KeyId string
Data string `json:"data"` // Data must be base64 encoded
Signature string `json:"signature"`
SigningAlgorithm string `json:"signingAlgorithm"`
IsDigest bool `json:"isDigest"`
}
type KmsVerifyDataV1Response struct {
SignatureValid bool `json:"signatureValid"`
KeyId string `json:"keyId"`
SigningAlgorithm string `json:"signingAlgorithm"`
}
type KmsListSigningAlgorithmsV1Request struct {
KeyId string
}
type KmsListSigningAlgorithmsV1Response struct {
SigningAlgorithms []string `json:"signingAlgorithms"`
}
type KmsGetPublicKeyV1Request struct {
KeyId string
}
type KmsGetPublicKeyV1Response struct {
PublicKey string `json:"publicKey"`
}
type KmsCreateKeyV1Request struct {
// KeyUsage is the usage of the key. Can be either sign-verify or encrypt-decrypt
KeyUsage string `json:"keyUsage"`
// Description is the description of the key.
Description string `json:"description"`
// Name is the name of the key.
Name string `json:"name"`
// EncryptionAlgorithm is the algorithm that will be used for the key itself.
// `sign-verify algorithms`: `rsa-4096`, `ecc-nist-p256`
// `encrypt-decrypt algorithms`: `aes-256-gcm`, `aes-128-gcm`
EncryptionAlgorithm string `json:"encryptionAlgorithm"`
// ProjectId is the project ID that the key will be created in.
ProjectId string `json:"projectId"`
}
type KmsCreateKeyV1Response struct {
Key KmsKey `json:"key"`
}
type KmsDeleteKeyV1Request struct {
KeyId string
}
type KmsDeleteKeyV1Response struct {
Key KmsKey `json:"key"`
}
type KmsGetKeyByNameV1Request struct {
KeyName string
ProjectId string
}
type KmsGetKeyV1Response struct {
Key KmsKey `json:"key"`
}
type KmsKey struct {
KeyId string `json:"id"`
Description string `json:"description"`
IsDisabled bool `json:"isDisabled"`
OrgId string `json:"orgId"`
Name string `json:"name"`
ProjectId string `json:"projectId"`
KeyUsage string `json:"keyUsage"`
Version int `json:"version"`
EncryptionAlgorithm string `json:"encryptionAlgorithm"`
}

View File

@@ -0,0 +1,29 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callKmsSignDataOperationV1 = "CallKmsSignDataV1"
func CallKmsSignDataV1(httpClient *resty.Client, request KmsSignDataV1Request) (KmsSignDataV1Response, error) {
kmsSignDataResponse := KmsSignDataV1Response{}
res, err := httpClient.R().
SetResult(&kmsSignDataResponse).
SetBody(request).
Post(fmt.Sprintf("/v1/kms/keys/%s/sign", request.KeyId))
if err != nil {
return KmsSignDataV1Response{}, errors.NewRequestError(callKmsSignDataOperationV1, err)
}
if res.IsError() {
return KmsSignDataV1Response{}, errors.NewAPIErrorWithResponse(callKmsSignDataOperationV1, res)
}
return kmsSignDataResponse, nil
}

View File

@@ -0,0 +1,29 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callKmsVerifyDataOperationV1 = "CallKmsVerifyDataV1"
func CallKmsVerifyDataV1(httpClient *resty.Client, request KmsVerifyDataV1Request) (KmsVerifyDataV1Response, error) {
kmsVerifyDataResponse := KmsVerifyDataV1Response{}
res, err := httpClient.R().
SetResult(&kmsVerifyDataResponse).
SetBody(request).
Post(fmt.Sprintf("/v1/kms/keys/%s/verify", request.KeyId))
if err != nil {
return KmsVerifyDataV1Response{}, errors.NewRequestError(callKmsVerifyDataOperationV1, err)
}
if res.IsError() {
return KmsVerifyDataV1Response{}, errors.NewAPIErrorWithResponse(callKmsVerifyDataOperationV1, res)
}
return kmsVerifyDataResponse, nil
}

View File

@@ -0,0 +1,40 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callBatchCreateSecretV3RawOperation = "CallBatchCreateSecretV3Raw"
func CallBatchCreateSecretV3(httpClient *resty.Client, request BatchCreateSecretsV3RawRequest) (BatchCreateSecretsV3RawResponse, error) {
createBatchResponse := BatchCreateSecretsV3RawResponse{}
req := httpClient.R().
SetResult(&createBatchResponse).
SetBody(request)
res, err := req.Post("/v3/secrets/batch/raw")
if err != nil {
return BatchCreateSecretsV3RawResponse{}, errors.NewRequestError(callBatchCreateSecretV3RawOperation, err)
}
if res.IsError() {
return BatchCreateSecretsV3RawResponse{}, errors.NewAPIErrorWithResponse(callBatchCreateSecretV3RawOperation, res)
}
for idx := range createBatchResponse.Secrets {
secretPath := request.SecretPath
if secretPath == "" {
secretPath = "/"
}
createBatchResponse.Secrets[idx].SecretPath = secretPath
}
return createBatchResponse, nil
}

View File

@@ -0,0 +1,31 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callCreateSecretV3RawOperation = "CallCreateSecretV3Raw"
func CallCreateSecretV3(httpClient *resty.Client, request CreateSecretV3RawRequest) (CreateSecretV3RawResponse, error) {
createResponse := CreateSecretV3RawResponse{}
req := httpClient.R().
SetResult(&createResponse).
SetBody(request)
res, err := req.Post(fmt.Sprintf("/v3/secrets/raw/%s", request.SecretKey))
if err != nil {
return CreateSecretV3RawResponse{}, errors.NewRequestError(callCreateSecretV3RawOperation, err)
}
if res.IsError() {
return CreateSecretV3RawResponse{}, errors.NewAPIErrorWithResponse(callCreateSecretV3RawOperation, res)
}
return createResponse, nil
}

View File

@@ -0,0 +1,31 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callDeleteSecretV3RawOperation = "CallDeleteSecretV3Raw"
func CallDeleteSecretV3(httpClient *resty.Client, request DeleteSecretV3RawRequest) (DeleteSecretV3RawResponse, error) {
deleteResponse := DeleteSecretV3RawResponse{}
req := httpClient.R().
SetResult(&deleteResponse).
SetBody(request)
res, err := req.Delete(fmt.Sprintf("/v3/secrets/raw/%s", request.SecretKey))
if err != nil {
return DeleteSecretV3RawResponse{}, errors.NewRequestError(callDeleteSecretV3RawOperation, err)
}
if res.IsError() {
return DeleteSecretV3RawResponse{}, errors.NewAPIErrorWithResponse(callDeleteSecretV3RawOperation, res)
}
return deleteResponse, nil
}

View File

@@ -0,0 +1,75 @@
package api
import (
"encoding/json"
"fmt"
"github.com/go-resty/resty/v2"
"github.com/hashicorp/golang-lru/v2/expirable"
"github.com/infisical/go-sdk/packages/errors"
"github.com/infisical/go-sdk/packages/util"
)
const callListSecretsV3RawOperation = "CallListSecretsV3Raw"
func CallListSecretsV3(cache *expirable.LRU[string, interface{}], httpClient *resty.Client, request ListSecretsV3RawRequest) (ListSecretsV3RawResponse, error) {
var cacheKey string
if cache != nil {
reqBytes, err := json.Marshal(request)
if err != nil {
return ListSecretsV3RawResponse{}, err
}
cacheKey = util.ComputeCacheKeyFromBytes(reqBytes, callListSecretsV3RawOperation)
if cached, found := cache.Get(cacheKey); found {
if response, ok := cached.(ListSecretsV3RawResponse); ok {
return response, nil
}
cache.Remove(cacheKey)
}
}
secretsResponse := ListSecretsV3RawResponse{}
if request.SecretPath == "" {
request.SecretPath = "/"
}
req := httpClient.R().
SetResult(&secretsResponse).
SetQueryParams(map[string]string{
"workspaceId": request.ProjectID,
"workspaceSlug": request.ProjectSlug,
"environment": request.Environment,
"secretPath": request.SecretPath,
"expandSecretReferences": fmt.Sprintf("%t", request.ExpandSecretReferences),
"include_imports": fmt.Sprintf("%t", request.IncludeImports),
"recursive": fmt.Sprintf("%t", request.Recursive),
})
if request.IfNoneMatch != "" {
req.SetHeader("If-None-Match", request.IfNoneMatch)
}
res, err := req.Get("/v3/secrets/raw")
if err != nil {
return ListSecretsV3RawResponse{}, errors.NewRequestError(callListSecretsV3RawOperation, err)
}
if res.StatusCode() == 304 {
return ListSecretsV3RawResponse{}, errors.NewNotModifiedError(callListSecretsV3RawOperation)
}
if res.IsError() {
return ListSecretsV3RawResponse{}, errors.NewAPIErrorWithResponse(callListSecretsV3RawOperation, res)
}
secretsResponse.ETag = res.Header().Get("ETag")
if cache != nil {
cache.Add(cacheKey, secretsResponse)
}
return secretsResponse, nil
}

View File

@@ -0,0 +1,113 @@
package api
import "github.com/infisical/go-sdk/packages/models"
// List secrets
type ListSecretsV3RawRequest struct {
AttachToProcessEnv bool `json:"-"`
// ProjectId and ProjectSlug are used to fetch secrets from the project. Only one of them is required.
ProjectID string `json:"workspaceId,omitempty"`
ProjectSlug string `json:"workspaceSlug,omitempty"`
Environment string `json:"environment"`
ExpandSecretReferences bool `json:"expandSecretReferences"`
IncludeImports bool `json:"include_imports"`
Recursive bool `json:"recursive"`
SecretPath string `json:"secretPath,omitempty"`
SkipUniqueValidation bool `json:"skip_unique_validation,omitempty"`
IfNoneMatch string `json:"-"`
}
type ListSecretsV3RawResponse struct {
Secrets []models.Secret `json:"secrets"`
Imports []models.SecretImport `json:"imports"`
ETag string `json:"etag"`
}
// Retrieve secret
type RetrieveSecretV3RawRequest struct {
SecretKey string `json:"secretKey"`
ProjectSlug string `json:"workspaceSlug,omitempty"`
ProjectID string `json:"workspaceId,omitempty"`
Environment string `json:"environment"`
SecretPath string `json:"secretPath,omitempty"`
Type string `json:"type,omitempty"`
IncludeImports bool `json:"include_imports"`
ExpandSecretReferences bool `json:"expandSecretReferences"`
Version int `json:"version,omitempty"`
}
type RetrieveSecretV3RawResponse struct {
Secret models.Secret `json:"secret"`
}
// Update secret
type UpdateSecretV3RawRequest struct {
SecretKey string `json:"-"`
ProjectID string `json:"workspaceId"`
Environment string `json:"environment"`
SecretPath string `json:"secretPath,omitempty"`
Type string `json:"type,omitempty"`
NewSecretValue string `json:"secretValue,omitempty"`
NewSkipMultilineEncoding bool `json:"skipMultilineEncoding,omitempty"`
}
type UpdateSecretV3RawResponse struct {
Secret models.Secret `json:"secret"`
}
// Create secret
type CreateSecretV3RawRequest struct {
SecretKey string `json:"-"`
ProjectID string `json:"workspaceId"`
Environment string `json:"environment"`
SecretPath string `json:"secretPath,omitempty"`
Type string `json:"type,omitempty"`
SecretComment string `json:"secretComment,omitempty"`
SkipMultiLineEncoding bool `json:"skipMultilineEncoding"`
SecretValue string `json:"secretValue"`
}
type CreateSecretV3RawResponse struct {
Secret models.Secret `json:"secret"`
}
// Delete secret
type DeleteSecretV3RawRequest struct {
SecretKey string `json:"-"`
ProjectID string `json:"workspaceId"`
Environment string `json:"environment"`
SecretPath string `json:"secretPath,omitempty"`
Type string `json:"type,omitempty"`
}
type DeleteSecretV3RawResponse struct {
Secret models.Secret `json:"secret"`
}
type BatchCreateSecret struct {
SecretKey string `json:"secretKey"`
SecretValue string `json:"secretValue"`
SecretComment string `json:"secretComment,omitempty"`
SkipMultiLineEncoding bool `json:"skipMultilineEncoding,omitempty"`
SecretMetadata []models.SecretMetadata `json:"secretMetadata,omitempty"`
TagIDs []string `json:"tagIds,omitempty"`
}
type BatchCreateSecretsV3RawRequest struct {
Environment string `json:"environment"`
ProjectID string `json:"workspaceId"`
SecretPath string `json:"secretPath,omitempty"`
Secrets []BatchCreateSecret `json:"secrets"`
}
type BatchCreateSecretsV3RawResponse struct {
Secrets []models.Secret `json:"secrets"`
}

View File

@@ -0,0 +1,81 @@
package api
import (
"encoding/json"
"errors"
"fmt"
"github.com/go-resty/resty/v2"
"github.com/hashicorp/golang-lru/v2/expirable"
sdkErrors "github.com/infisical/go-sdk/packages/errors"
"github.com/infisical/go-sdk/packages/util"
)
const callRetrieveSecretV3RawOperation = "CallRetrieveSecretV3Raw"
func CallRetrieveSecretV3(cache *expirable.LRU[string, interface{}], httpClient *resty.Client, request RetrieveSecretV3RawRequest) (RetrieveSecretV3RawResponse, error) {
var cacheKey string
if cache != nil {
reqBytes, err := json.Marshal(request)
if err != nil {
return RetrieveSecretV3RawResponse{}, err
}
cacheKey = util.ComputeCacheKeyFromBytes(reqBytes, callRetrieveSecretV3RawOperation)
if cached, found := cache.Get(cacheKey); found {
if response, ok := cached.(RetrieveSecretV3RawResponse); ok {
return response, nil
}
cache.Remove(cacheKey)
}
}
retrieveResponse := RetrieveSecretV3RawResponse{}
if request.Type == "" {
request.Type = "shared"
}
if request.SecretPath == "" {
request.SecretPath = "/"
}
queryParams := map[string]string{
"environment": request.Environment,
"secretPath": request.SecretPath,
"expandSecretReferences": fmt.Sprintf("%t", request.ExpandSecretReferences),
"include_imports": fmt.Sprintf("%t", request.IncludeImports),
"type": request.Type,
}
if request.ProjectID != "" {
queryParams["workspaceId"] = request.ProjectID
} else if request.ProjectSlug != "" {
queryParams["workspaceSlug"] = request.ProjectSlug
} else {
return RetrieveSecretV3RawResponse{}, errors.New("projectId or projectSlug is required")
}
if request.Version != 0 {
queryParams["version"] = fmt.Sprintf("%d", request.Version)
}
req := httpClient.R().
SetResult(&retrieveResponse).
SetQueryParams(queryParams)
res, err := req.Get(fmt.Sprintf("/v3/secrets/raw/%s", request.SecretKey))
if err != nil {
return RetrieveSecretV3RawResponse{}, sdkErrors.NewRequestError(callRetrieveSecretV3RawOperation, err)
}
if res.IsError() {
return RetrieveSecretV3RawResponse{}, sdkErrors.NewAPIErrorWithResponse(callRetrieveSecretV3RawOperation, res)
}
if cache != nil {
cache.Add(cacheKey, retrieveResponse)
}
return retrieveResponse, nil
}

View File

@@ -0,0 +1,31 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callUpdateSecretV3RawOperation = "CallUpdateSecretV3Raw"
func CallUpdateSecretV3(httpClient *resty.Client, request UpdateSecretV3RawRequest) (UpdateSecretV3RawResponse, error) {
updateResponse := UpdateSecretV3RawResponse{}
req := httpClient.R().
SetResult(&updateResponse).
SetBody(request)
res, err := req.Patch(fmt.Sprintf("/v3/secrets/raw/%s", request.SecretKey))
if err != nil {
return UpdateSecretV3RawResponse{}, errors.NewRequestError(callUpdateSecretV3RawOperation, err)
}
if res.IsError() {
return UpdateSecretV3RawResponse{}, errors.NewAPIErrorWithResponse(callUpdateSecretV3RawOperation, res)
}
return updateResponse, nil
}

View File

@@ -0,0 +1,27 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callAddSshHostOperation = "CallAddSshHostV1"
func CallAddSshHostV1(httpClient *resty.Client, body AddSshHostV1Request) (AddSshHostV1Response, error) {
resp := AddSshHostV1Response{}
res, err := httpClient.R().
SetBody(body).
SetResult(&resp).
Post("/v1/ssh/hosts")
if err != nil {
return AddSshHostV1Response{}, errors.NewRequestError(callAddSshHostOperation, err)
}
if res.IsError() {
return AddSshHostV1Response{}, errors.NewAPIErrorWithResponse(callAddSshHostOperation, res)
}
return resp, nil
}

View File

@@ -0,0 +1,21 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
func GetSshHostHostCaPublicKeyV1(httpClient *resty.Client, sshHostId string) (string, error) {
res, err := httpClient.R().
Get("/v1/ssh/hosts/" + sshHostId + "/host-ca-public-key")
if err != nil {
return "", errors.NewRequestError("GetSshHostHostCaPublicKeyV1", err)
}
if res.IsError() {
return "", errors.NewAPIErrorWithResponse("GetSshHostHostCaPublicKeyV1", res)
}
return res.String(), nil
}

View File

@@ -0,0 +1,21 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
func GetSshHostUserCaPublicKeyV1(httpClient *resty.Client, sshHostId string) (string, error) {
res, err := httpClient.R().
Get("/v1/ssh/hosts/" + sshHostId + "/user-ca-public-key")
if err != nil {
return "", errors.NewRequestError("GetSshHostUserCaPublicKeyV1", err)
}
if res.IsError() {
return "", errors.NewAPIErrorWithResponse("GetSshHostUserCaPublicKeyV1", res)
}
return res.String(), nil
}

View File

@@ -0,0 +1,26 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callGetSshHostsOperation = "CallGetSshHostsV1"
func GetSshHostsV1(httpClient *resty.Client, _ GetSshHostsV1Request) (GetSshHostsV1Response, error) {
var getSshHostsResponse GetSshHostsV1Response
res, err := httpClient.R().
SetResult(&getSshHostsResponse).
Get("/v1/ssh/hosts")
if err != nil {
return nil, errors.NewRequestError(callGetSshHostsOperation, err)
}
if res.IsError() {
return nil, errors.NewAPIErrorWithResponse(callGetSshHostsOperation, res)
}
return getSshHostsResponse, nil
}

View File

@@ -0,0 +1,27 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callIssueSshCredsOperation = "CallIssueSshCredsV1"
func CallIssueSshCredsV1(httpClient *resty.Client, request IssueSshCredsV1Request) (IssueSshCredsV1Response, error) {
issueSshCredsResponse := IssueSshCredsV1Response{}
res, err := httpClient.R().
SetResult(&issueSshCredsResponse).
SetBody(request).
Post("/v1/ssh/certificates/issue")
if err != nil {
return IssueSshCredsV1Response{}, errors.NewRequestError(callIssueSshCredsOperation, err)
}
if res.IsError() {
return IssueSshCredsV1Response{}, errors.NewAPIErrorWithResponse(callIssueSshCredsOperation, res)
}
return issueSshCredsResponse, nil
}

View File

@@ -0,0 +1,29 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callIssueSshHostHostCertOperation = "CallIssueSshHostHostCertV1"
func CallIssueSshHostHostCertV1(httpClient *resty.Client, sshHostId string, body IssueSshHostHostCertV1Request) (IssueSshHostHostCertV1Response, error) {
resp := IssueSshHostHostCertV1Response{}
res, err := httpClient.R().
SetBody(body).
SetResult(&resp).
Post(fmt.Sprintf("/v1/ssh/hosts/%s/issue-host-cert", sshHostId))
if err != nil {
return IssueSshHostHostCertV1Response{}, errors.NewRequestError(callIssueSshHostHostCertOperation, err)
}
if res.IsError() {
return IssueSshHostHostCertV1Response{}, errors.NewAPIErrorWithResponse(callIssueSshHostHostCertOperation, res)
}
return resp, nil
}

View File

@@ -0,0 +1,29 @@
package api
import (
"fmt"
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callIssueSshHostUserCertOperation = "CallIssueSshHostUserCertV1"
func CallIssueSshHostUserCertV1(httpClient *resty.Client, sshHostId string, body IssueSshHostUserCertV1Request) (IssueSshHostUserCertV1Response, error) {
resp := IssueSshHostUserCertV1Response{}
res, err := httpClient.R().
SetBody(body).
SetResult(&resp).
Post(fmt.Sprintf("/v1/ssh/hosts/%s/issue-user-cert", sshHostId))
if err != nil {
return IssueSshHostUserCertV1Response{}, errors.NewRequestError(callIssueSshHostUserCertOperation, err)
}
if res.IsError() {
return IssueSshHostUserCertV1Response{}, errors.NewAPIErrorWithResponse(callIssueSshHostUserCertOperation, res)
}
return resp, nil
}

View File

@@ -0,0 +1,95 @@
package api
import (
"github.com/infisical/go-sdk/packages/util"
)
type SignSshPublicKeyV1Request struct {
CertificateTemplateID string `json:"certificateTemplateId"`
PublicKey string `json:"publicKey"`
CertType util.SshCertType `json:"certType,omitempty"`
Principals []string `json:"principals"`
TTL string `json:"ttl,omitempty"`
KeyID string `json:"keyId,omitempty"`
}
type SignSshPublicKeyV1Response struct {
SerialNumber string `json:"serialNumber"`
SignedKey string `json:"signedKey"`
}
type IssueSshCredsV1Request struct {
CertificateTemplateID string `json:"certificateTemplateId"`
KeyAlgorithm util.CertKeyAlgorithm `json:"keyAlgorithm,omitempty"`
CertType util.SshCertType `json:"certType,omitempty"`
Principals []string `json:"principals"`
TTL string `json:"ttl,omitempty"`
KeyID string `json:"keyId,omitempty"`
}
type IssueSshCredsV1Response struct {
SerialNumber string `json:"serialNumber"`
SignedKey string `json:"signedKey"`
PrivateKey string `json:"privateKey"`
PublicKey string `json:"publicKey"`
KeyAlgorithm util.CertKeyAlgorithm `json:"keyAlgorithm"`
}
type GetSshHostsV1Request struct{}
type AllowedPrincipals struct {
Usernames []string `json:"usernames"`
}
type SshHostLoginMapping struct {
LoginUser string `json:"loginUser"`
AllowedPrincipals AllowedPrincipals `json:"allowedPrincipals"`
}
type SshHost struct {
ID string `json:"id"`
ProjectID string `json:"projectId"`
Hostname string `json:"hostname"`
Alias string `json:"alias,omitempty"`
UserCertTtl string `json:"userCertTtl"`
HostCertTtl string `json:"hostCertTtl"`
UserSshCaId string `json:"userSshCaId"`
HostSshCaId string `json:"hostSshCaId"`
LoginMappings []SshHostLoginMapping `json:"loginMappings"`
}
type GetSshHostsV1Response []SshHost
type IssueSshHostUserCertV1Request struct {
LoginUser string `json:"loginUser"`
}
type IssueSshHostUserCertV1Response struct {
SerialNumber string `json:"serialNumber"`
SignedKey string `json:"signedKey"`
PrivateKey string `json:"privateKey"`
PublicKey string `json:"publicKey"`
KeyAlgorithm util.CertKeyAlgorithm `json:"keyAlgorithm"`
}
type IssueSshHostHostCertV1Request struct {
PublicKey string `json:"publicKey"`
}
type IssueSshHostHostCertV1Response struct {
SerialNumber string `json:"serialNumber"`
SignedKey string `json:"signedKey"`
}
type AddSshHostV1Request struct {
ProjectID string `json:"projectId"`
Hostname string `json:"hostname"`
Alias string `json:"alias,omitempty"`
UserCertTtl string `json:"userCertTtl,omitempty"`
HostCertTtl string `json:"hostCertTtl,omitempty"`
UserSshCaId string `json:"userSshCaId,omitempty"`
HostSshCaId string `json:"hostSshCaId,omitempty"`
LoginMappings []SshHostLoginMapping `json:"loginMappings,omitempty"`
}
type AddSshHostV1Response SshHost

View File

@@ -0,0 +1,27 @@
package api
import (
"github.com/go-resty/resty/v2"
"github.com/infisical/go-sdk/packages/errors"
)
const callSignSshPublicKeyOperation = "CallSignSshPublicKeyV1"
func CallSignSshPublicKeyV1(httpClient *resty.Client, request SignSshPublicKeyV1Request) (SignSshPublicKeyV1Response, error) {
signSshPublicKeyResponse := SignSshPublicKeyV1Response{}
res, err := httpClient.R().
SetResult(&signSshPublicKeyResponse).
SetBody(request).
Post("/v1/ssh/certificates/sign")
if err != nil {
return SignSshPublicKeyV1Response{}, errors.NewRequestError(callSignSshPublicKeyOperation, err)
}
if res.IsError() {
return SignSshPublicKeyV1Response{}, errors.NewAPIErrorWithResponse(callSignSshPublicKeyOperation, res)
}
return signSshPublicKeyResponse, nil
}