diff --git a/v24/api/keyfactor/v1/client.go b/v24/api/keyfactor/v1/client.go index f4e2b06..73112a9 100644 --- a/v24/api/keyfactor/v1/client.go +++ b/v24/api/keyfactor/v1/client.go @@ -174,6 +174,69 @@ type service struct { // NewAPIClient creates a new API client. Requires a userAgent string describing your application. // optionally a custom http.Client to allow for advanced features such as caching. +// NewAPIClientWithAuth creates an APIClient with a pre-built AuthConfig, bypassing +// the Authenticate() network call. Used in unit tests with VCR cassettes. +func NewAPIClientWithAuth(auth AuthConfig) *APIClient { + c := &APIClient{} + c.AuthClient = auth + c.common.client = c + + // API Services + c.AgentApi = (*AgentApiService)(&c.common) + c.AgentBlueprintApi = (*AgentBlueprintApiService)(&c.common) + c.AgentPoolApi = (*AgentPoolApiService)(&c.common) + c.AppSettingApi = (*AppSettingApiService)(&c.common) + c.AuditLogApi = (*AuditLogApiService)(&c.common) + c.CAConnectorApi = (*CAConnectorApiService)(&c.common) + c.CSRGenerationApi = (*CSRGenerationApiService)(&c.common) + c.CertificateApi = (*CertificateApiService)(&c.common) + c.CertificateAuthorityApi = (*CertificateAuthorityApiService)(&c.common) + c.CertificateCollectionApi = (*CertificateCollectionApiService)(&c.common) + c.CertificateStoreApi = (*CertificateStoreApiService)(&c.common) + c.CertificateStoreContainerApi = (*CertificateStoreContainerApiService)(&c.common) + c.CertificateStoreTypeApi = (*CertificateStoreTypeApiService)(&c.common) + c.ComponentInstallationApi = (*ComponentInstallationApiService)(&c.common) + c.CustomJobTypeApi = (*CustomJobTypeApiService)(&c.common) + c.DeniedAlertApi = (*DeniedAlertApiService)(&c.common) + c.EnrollmentApi = (*EnrollmentApiService)(&c.common) + c.EventHandlerRegistrationApi = (*EventHandlerRegistrationApiService)(&c.common) + c.ExpirationAlertApi = (*ExpirationAlertApiService)(&c.common) + c.ExtensionsApi = (*ExtensionsApiService)(&c.common) + c.IdentityProviderApi = (*IdentityProviderApiService)(&c.common) + c.IssuedAlertApi = (*IssuedAlertApiService)(&c.common) + c.KeyApi = (*KeyApiService)(&c.common) + c.KeyRotationAlertApi = (*KeyRotationAlertApiService)(&c.common) + c.LicenseApi = (*LicenseApiService)(&c.common) + c.LogonApi = (*LogonApiService)(&c.common) + c.MacEnrollmentApi = (*MacEnrollmentApiService)(&c.common) + c.MetadataFieldApi = (*MetadataFieldApiService)(&c.common) + c.MonitoringApi = (*MonitoringApiService)(&c.common) + c.OrchestratorJobApi = (*OrchestratorJobApiService)(&c.common) + c.PAMLocalEntriesApi = (*PAMLocalEntriesApiService)(&c.common) + c.PAMProviderApi = (*PAMProviderApiService)(&c.common) + c.PendingAlertApi = (*PendingAlertApiService)(&c.common) + c.PermissionSetApi = (*PermissionSetApiService)(&c.common) + c.PermissionsApi = (*PermissionsApiService)(&c.common) + c.ReportsApi = (*ReportsApiService)(&c.common) + c.SMTPApi = (*SMTPApiService)(&c.common) + c.SchedulingApi = (*SchedulingApiService)(&c.common) + c.SecurityApi = (*SecurityApiService)(&c.common) + c.SecurityClaimsApi = (*SecurityClaimsApiService)(&c.common) + c.SecurityRolePermissionsApi = (*SecurityRolePermissionsApiService)(&c.common) + c.SecurityRolesApi = (*SecurityRolesApiService)(&c.common) + c.ServerApi = (*ServerApiService)(&c.common) + c.ServerGroupApi = (*ServerGroupApiService)(&c.common) + c.ServiceAccountApi = (*ServiceAccountApiService)(&c.common) + c.SslApi = (*SslApiService)(&c.common) + c.StatusApi = (*StatusApiService)(&c.common) + c.TemplateApi = (*TemplateApiService)(&c.common) + c.UserApi = (*UserApiService)(&c.common) + c.WorkflowApi = (*WorkflowApiService)(&c.common) + c.WorkflowDefinitionApi = (*WorkflowDefinitionApiService)(&c.common) + c.WorkflowInstanceApi = (*WorkflowInstanceApiService)(&c.common) + return c +} + func NewAPIClient(cfg *auth_providers.Server) (*APIClient, error) { var err error diff --git a/v24/api/keyfactor/v1/model_css_cms_core_enums_enrollment_type.go b/v24/api/keyfactor/v1/model_css_cms_core_enums_enrollment_type.go index c829571..34f18de 100644 --- a/v24/api/keyfactor/v1/model_css_cms_core_enums_enrollment_type.go +++ b/v24/api/keyfactor/v1/model_css_cms_core_enums_enrollment_type.go @@ -34,6 +34,7 @@ const ( CSSCMSCOREENUMSENROLLMENTTYPE__0 CSSCMSCoreEnumsEnrollmentType = 0 CSSCMSCOREENUMSENROLLMENTTYPE__1 CSSCMSCoreEnumsEnrollmentType = 1 CSSCMSCOREENUMSENROLLMENTTYPE__2 CSSCMSCoreEnumsEnrollmentType = 2 + CSSCMSCOREENUMSENROLLMENTTYPE__3 CSSCMSCoreEnumsEnrollmentType = 3 CSSCMSCOREENUMSENROLLMENTTYPE__4 CSSCMSCoreEnumsEnrollmentType = 4 ) @@ -59,11 +60,16 @@ func (c *CSSCMSCoreEnumsEnrollmentType) Parse(s string) error { } // All allowed values of CSSCMSCoreEnumsEnrollmentType enum +// This is a bitmask field: 1=PFX, 2=CSR, 4=... so combined values (3=PFX+CSR, 5, 6, 7) are valid. var AllowedCSSCMSCoreEnumsEnrollmentTypeEnumValues = []CSSCMSCoreEnumsEnrollmentType{ 0, 1, 2, + 3, 4, + 5, + 6, + 7, } func (v *CSSCMSCoreEnumsEnrollmentType) UnmarshalJSON(src []byte) error { diff --git a/v24/api/keyfactor/v1/model_css_cms_core_enums_key_retention_policy.go b/v24/api/keyfactor/v1/model_css_cms_core_enums_key_retention_policy.go index 70ef56b..0b05465 100644 --- a/v24/api/keyfactor/v1/model_css_cms_core_enums_key_retention_policy.go +++ b/v24/api/keyfactor/v1/model_css_cms_core_enums_key_retention_policy.go @@ -66,21 +66,39 @@ var AllowedCSSCMSCoreEnumsKeyRetentionPolicyEnumValues = []CSSCMSCoreEnumsKeyRet 3, } +// keyRetentionPolicyStringToInt maps string names returned by EJBCA to integer values. +var keyRetentionPolicyStringToInt = map[string]CSSCMSCoreEnumsKeyRetentionPolicy{ + "None": CSSCMSCOREENUMSKEYRETENTIONPOLICY__0, + "ShortTerm": CSSCMSCOREENUMSKEYRETENTIONPOLICY__1, + "LongTerm": CSSCMSCOREENUMSKEYRETENTIONPOLICY__2, + "Indefinite": CSSCMSCOREENUMSKEYRETENTIONPOLICY__3, +} + func (v *CSSCMSCoreEnumsKeyRetentionPolicy) UnmarshalJSON(src []byte) error { - var value int32 - err := json.Unmarshal(src, &value) - if err != nil { - return err + // Try integer first (MSCA/standard Keyfactor response) + var intValue int32 + if err := json.Unmarshal(src, &intValue); err == nil { + enumTypeValue := CSSCMSCoreEnumsKeyRetentionPolicy(intValue) + for _, existing := range AllowedCSSCMSCoreEnumsKeyRetentionPolicyEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + return fmt.Errorf("%+v is not a valid CSSCMSCoreEnumsKeyRetentionPolicy", intValue) } - enumTypeValue := CSSCMSCoreEnumsKeyRetentionPolicy(value) - for _, existing := range AllowedCSSCMSCoreEnumsKeyRetentionPolicyEnumValues { - if existing == enumTypeValue { - *v = enumTypeValue + // Try string (EJBCA response returns e.g. "None") + var strValue string + if err := json.Unmarshal(src, &strValue); err == nil { + if mapped, ok := keyRetentionPolicyStringToInt[strValue]; ok { + *v = mapped return nil } + // Unknown string — treat as 0 (None) to avoid breaking reads + *v = CSSCMSCOREENUMSKEYRETENTIONPOLICY__0 + return nil } - - return fmt.Errorf("%+v is not a valid CSSCMSCoreEnumsKeyRetentionPolicy", value) + return fmt.Errorf("cannot unmarshal %s into CSSCMSCoreEnumsKeyRetentionPolicy", src) } // NewCSSCMSCoreEnumsKeyRetentionPolicyFromValue returns a pointer to a valid CSSCMSCoreEnumsKeyRetentionPolicy diff --git a/v24/api/keyfactor/v1/model_css_cms_data_model_enums_certificate_cleanup_time_units.go b/v24/api/keyfactor/v1/model_css_cms_data_model_enums_certificate_cleanup_time_units.go new file mode 100644 index 0000000..c4b1bf0 --- /dev/null +++ b/v24/api/keyfactor/v1/model_css_cms_data_model_enums_certificate_cleanup_time_units.go @@ -0,0 +1,144 @@ +/* +Copyright 2024 Keyfactor +Licensed under the Apache License, Version 2.0 (the "License"); you may +not use this file except in compliance with the License. You may obtain a +copy of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless +required by applicable law or agreed to in writing, software distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES +OR CONDITIONS OF ANY KIND, either express or implied. See the License for +thespecific language governing permissions and limitations under the +License. + +This reference serves to document REST-based methods to manage and integrate with Keyfactor. In addition, an embedded interface allows for the execution of calls against the current Keyfactor API instance. + +Keyfactor Command Version: 24.4.2 + +API version: 1 +*/ + +// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT. + +package v1 + +import ( + "encoding/json" + "errors" + "fmt" +) + +// CSSCMSDataModelEnumsCertificateCleanupTimeUnits the model 'CSSCMSDataModelEnumsCertificateCleanupTimeUnits' +type CSSCMSDataModelEnumsCertificateCleanupTimeUnits int32 + +// List of CSS.CMS.Data.Model.Enums.CertificateCleanupTimeUnits +const ( + CSSCMSDATAMODELENUMSCERTIFICATECLEANUPTIMEUNITS__0 CSSCMSDataModelEnumsCertificateCleanupTimeUnits = 0 + CSSCMSDATAMODELENUMSCERTIFICATECLEANUPTIMEUNITS__1 CSSCMSDataModelEnumsCertificateCleanupTimeUnits = 1 + CSSCMSDATAMODELENUMSCERTIFICATECLEANUPTIMEUNITS__2 CSSCMSDataModelEnumsCertificateCleanupTimeUnits = 2 +) + +func ParseCSSCMSDataModelEnumsCertificateCleanupTimeUnits(s string) (*CSSCMSDataModelEnumsCertificateCleanupTimeUnits, error) { + var claimType CSSCMSDataModelEnumsCertificateCleanupTimeUnits + err := claimType.Parse(s) + if err != nil { + return nil, err + } + return &claimType, err +} + +func (c *CSSCMSDataModelEnumsCertificateCleanupTimeUnits) Parse(s string) error { + var stringsToEnum = map[string]CSSCMSDataModelEnumsCertificateCleanupTimeUnits{} + + return errors.New(fmt.Sprintf("Parse could not be completed. The length of string maps is %d", len(stringsToEnum))) + + if val, ok := stringsToEnum[s]; ok { + *c = val + return nil + } + return errors.New(fmt.Sprintf("Could not map to enum CSSCMSDataModelEnumsCertificateCleanupTimeUnits. Value: %s ", s)) +} + +// All allowed values of CSSCMSDataModelEnumsCertificateCleanupTimeUnits enum +var AllowedCSSCMSDataModelEnumsCertificateCleanupTimeUnitsEnumValues = []CSSCMSDataModelEnumsCertificateCleanupTimeUnits{ + 0, + 1, + 2, +} + +func (v *CSSCMSDataModelEnumsCertificateCleanupTimeUnits) UnmarshalJSON(src []byte) error { + var value int32 + err := json.Unmarshal(src, &value) + if err != nil { + return err + } + enumTypeValue := CSSCMSDataModelEnumsCertificateCleanupTimeUnits(value) + for _, existing := range AllowedCSSCMSDataModelEnumsCertificateCleanupTimeUnitsEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + + return fmt.Errorf("%+v is not a valid CSSCMSDataModelEnumsCertificateCleanupTimeUnits", value) +} + +// NewCSSCMSDataModelEnumsCertificateCleanupTimeUnitsFromValue returns a pointer to a valid CSSCMSDataModelEnumsCertificateCleanupTimeUnits +// for the value passed as argument, or an error if the value passed is not allowed by the enum +func NewCSSCMSDataModelEnumsCertificateCleanupTimeUnitsFromValue(v int32) (*CSSCMSDataModelEnumsCertificateCleanupTimeUnits, error) { + ev := CSSCMSDataModelEnumsCertificateCleanupTimeUnits(v) + if ev.IsValid() { + return &ev, nil + } else { + return nil, fmt.Errorf("invalid value '%v' for CSSCMSDataModelEnumsCertificateCleanupTimeUnits: valid values are %v", v, AllowedCSSCMSDataModelEnumsCertificateCleanupTimeUnitsEnumValues) + } +} + +// IsValid return true if the value is valid for the enum, false otherwise +func (v CSSCMSDataModelEnumsCertificateCleanupTimeUnits) IsValid() bool { + for _, existing := range AllowedCSSCMSDataModelEnumsCertificateCleanupTimeUnitsEnumValues { + if existing == v { + return true + } + } + return false +} + +// Ptr returns reference to CSS.CMS.Data.Model.Enums.CertificateCleanupTimeUnits value +func (v CSSCMSDataModelEnumsCertificateCleanupTimeUnits) Ptr() *CSSCMSDataModelEnumsCertificateCleanupTimeUnits { + return &v +} + +type NullableCSSCMSDataModelEnumsCertificateCleanupTimeUnits struct { + value *CSSCMSDataModelEnumsCertificateCleanupTimeUnits + isSet bool +} + +func (v NullableCSSCMSDataModelEnumsCertificateCleanupTimeUnits) Get() *CSSCMSDataModelEnumsCertificateCleanupTimeUnits { + return v.value +} + +func (v *NullableCSSCMSDataModelEnumsCertificateCleanupTimeUnits) Set(val *CSSCMSDataModelEnumsCertificateCleanupTimeUnits) { + v.value = val + v.isSet = true +} + +func (v NullableCSSCMSDataModelEnumsCertificateCleanupTimeUnits) IsSet() bool { + return v.isSet +} + +func (v *NullableCSSCMSDataModelEnumsCertificateCleanupTimeUnits) Unset() { + v.value = nil + v.isSet = false +} + +func NewNullableCSSCMSDataModelEnumsCertificateCleanupTimeUnits(val *CSSCMSDataModelEnumsCertificateCleanupTimeUnits) *NullableCSSCMSDataModelEnumsCertificateCleanupTimeUnits { + return &NullableCSSCMSDataModelEnumsCertificateCleanupTimeUnits{value: val, isSet: true} +} + +func (v NullableCSSCMSDataModelEnumsCertificateCleanupTimeUnits) MarshalJSON() ([]byte, error) { + return json.Marshal(v.value) +} + +func (v *NullableCSSCMSDataModelEnumsCertificateCleanupTimeUnits) UnmarshalJSON(src []byte) error { + v.isSet = true + return json.Unmarshal(src, &v.value) +} diff --git a/v24/api/keyfactor/v1/model_templates_template_retrieval_response.go b/v24/api/keyfactor/v1/model_templates_template_retrieval_response.go index c48870b..3bcb74f 100644 --- a/v24/api/keyfactor/v1/model_templates_template_retrieval_response.go +++ b/v24/api/keyfactor/v1/model_templates_template_retrieval_response.go @@ -56,8 +56,13 @@ type TemplatesTemplateRetrievalResponse struct { KeyUsage *int32 `json:"KeyUsage,omitempty"` ExtendedKeyUsages []TemplatesExtendedKeyUsageResponseModel `json:"ExtendedKeyUsages,omitempty"` Curve NullableString `json:"Curve,omitempty"` - AllowOneClickRenewals *bool `json:"AllowOneClickRenewals,omitempty"` - KeyTypes NullableString `json:"KeyTypes,omitempty"` + AllowOneClickRenewals *bool `json:"AllowOneClickRenewals,omitempty"` + KeyTypes NullableString `json:"KeyTypes,omitempty"` + CertificateCleanupEnabled NullableBool `json:"CertificateCleanupEnabled,omitempty"` + TimeAfterExpiration NullableInt32 `json:"TimeAfterExpiration,omitempty"` + TimeAfterExpirationUnits *CSSCMSDataModelEnumsCertificateCleanupTimeUnits `json:"TimeAfterExpirationUnits,omitempty"` + DeleteWithArchivedKey NullableBool `json:"DeleteWithArchivedKey,omitempty"` + Manageability NullableInt32 `json:"Manageability,omitempty"` } // NewTemplatesTemplateRetrievalResponse instantiates a new TemplatesTemplateRetrievalResponse object @@ -1240,9 +1245,85 @@ func (o TemplatesTemplateRetrievalResponse) ToMap() (map[string]interface{}, err if o.KeyTypes.IsSet() { toSerialize["KeyTypes"] = o.KeyTypes.Get() } + if o.CertificateCleanupEnabled.IsSet() { + toSerialize["CertificateCleanupEnabled"] = o.CertificateCleanupEnabled.Get() + } + if o.TimeAfterExpiration.IsSet() { + toSerialize["TimeAfterExpiration"] = o.TimeAfterExpiration.Get() + } + if !isNil(o.TimeAfterExpirationUnits) { + toSerialize["TimeAfterExpirationUnits"] = o.TimeAfterExpirationUnits + } + if o.DeleteWithArchivedKey.IsSet() { + toSerialize["DeleteWithArchivedKey"] = o.DeleteWithArchivedKey.Get() + } + if o.Manageability.IsSet() { + toSerialize["Manageability"] = o.Manageability.Get() + } return toSerialize, nil } +func (o *TemplatesTemplateRetrievalResponse) GetCertificateCleanupEnabled() bool { + if o == nil || !o.CertificateCleanupEnabled.IsSet() || o.CertificateCleanupEnabled.Get() == nil { + var ret bool + return ret + } + return *o.CertificateCleanupEnabled.Get() +} + +func (o *TemplatesTemplateRetrievalResponse) SetCertificateCleanupEnabled(v bool) { + o.CertificateCleanupEnabled.Set(&v) +} + +func (o *TemplatesTemplateRetrievalResponse) GetTimeAfterExpiration() int32 { + if o == nil || !o.TimeAfterExpiration.IsSet() || o.TimeAfterExpiration.Get() == nil { + var ret int32 + return ret + } + return *o.TimeAfterExpiration.Get() +} + +func (o *TemplatesTemplateRetrievalResponse) SetTimeAfterExpiration(v int32) { + o.TimeAfterExpiration.Set(&v) +} + +func (o *TemplatesTemplateRetrievalResponse) GetTimeAfterExpirationUnits() CSSCMSDataModelEnumsCertificateCleanupTimeUnits { + if o == nil || isNil(o.TimeAfterExpirationUnits) { + var ret CSSCMSDataModelEnumsCertificateCleanupTimeUnits + return ret + } + return *o.TimeAfterExpirationUnits +} + +func (o *TemplatesTemplateRetrievalResponse) SetTimeAfterExpirationUnits(v CSSCMSDataModelEnumsCertificateCleanupTimeUnits) { + o.TimeAfterExpirationUnits = &v +} + +func (o *TemplatesTemplateRetrievalResponse) GetDeleteWithArchivedKey() bool { + if o == nil || !o.DeleteWithArchivedKey.IsSet() || o.DeleteWithArchivedKey.Get() == nil { + var ret bool + return ret + } + return *o.DeleteWithArchivedKey.Get() +} + +func (o *TemplatesTemplateRetrievalResponse) SetDeleteWithArchivedKey(v bool) { + o.DeleteWithArchivedKey.Set(&v) +} + + +func (o *TemplatesTemplateRetrievalResponse) GetManageability() int32 { + if o == nil || !o.Manageability.IsSet() || o.Manageability.Get() == nil { + var ret int32 + return ret + } + return *o.Manageability.Get() +} + +func (o *TemplatesTemplateRetrievalResponse) SetManageability(v int32) { + o.Manageability.Set(&v) +} + type NullableTemplatesTemplateRetrievalResponse struct { value *TemplatesTemplateRetrievalResponse isSet bool diff --git a/v24/api/keyfactor/v1/model_templates_template_update_request.go b/v24/api/keyfactor/v1/model_templates_template_update_request.go index 1c6d350..2adcf94 100644 --- a/v24/api/keyfactor/v1/model_templates_template_update_request.go +++ b/v24/api/keyfactor/v1/model_templates_template_update_request.go @@ -44,7 +44,11 @@ type TemplatesTemplateUpdateRequest struct { AllowedRequesters []string `json:"AllowedRequesters,omitempty"` RequiresApproval *bool `json:"RequiresApproval,omitempty"` KeyUsage *int32 `json:"KeyUsage,omitempty"` - AllowOneClickRenewals *bool `json:"AllowOneClickRenewals,omitempty"` + AllowOneClickRenewals *bool `json:"AllowOneClickRenewals,omitempty"` + CertificateCleanupEnabled NullableBool `json:"CertificateCleanupEnabled,omitempty"` + TimeAfterExpiration NullableInt32 `json:"TimeAfterExpiration,omitempty"` + TimeAfterExpirationUnits *CSSCMSDataModelEnumsCertificateCleanupTimeUnits `json:"TimeAfterExpirationUnits,omitempty"` + DeleteWithArchivedKey NullableBool `json:"DeleteWithArchivedKey,omitempty"` } // NewTemplatesTemplateUpdateRequest instantiates a new TemplatesTemplateUpdateRequest object @@ -661,9 +665,69 @@ func (o TemplatesTemplateUpdateRequest) ToMap() (map[string]interface{}, error) if !isNil(o.AllowOneClickRenewals) { toSerialize["AllowOneClickRenewals"] = o.AllowOneClickRenewals } + if o.CertificateCleanupEnabled.IsSet() { + toSerialize["CertificateCleanupEnabled"] = o.CertificateCleanupEnabled.Get() + } + if o.TimeAfterExpiration.IsSet() { + toSerialize["TimeAfterExpiration"] = o.TimeAfterExpiration.Get() + } + if !isNil(o.TimeAfterExpirationUnits) { + toSerialize["TimeAfterExpirationUnits"] = o.TimeAfterExpirationUnits + } + if o.DeleteWithArchivedKey.IsSet() { + toSerialize["DeleteWithArchivedKey"] = o.DeleteWithArchivedKey.Get() + } return toSerialize, nil } +func (o *TemplatesTemplateUpdateRequest) GetCertificateCleanupEnabled() bool { + if o == nil || !o.CertificateCleanupEnabled.IsSet() || o.CertificateCleanupEnabled.Get() == nil { + var ret bool + return ret + } + return *o.CertificateCleanupEnabled.Get() +} + +func (o *TemplatesTemplateUpdateRequest) SetCertificateCleanupEnabled(v bool) { + o.CertificateCleanupEnabled.Set(&v) +} + +func (o *TemplatesTemplateUpdateRequest) GetTimeAfterExpiration() int32 { + if o == nil || !o.TimeAfterExpiration.IsSet() || o.TimeAfterExpiration.Get() == nil { + var ret int32 + return ret + } + return *o.TimeAfterExpiration.Get() +} + +func (o *TemplatesTemplateUpdateRequest) SetTimeAfterExpiration(v int32) { + o.TimeAfterExpiration.Set(&v) +} + +func (o *TemplatesTemplateUpdateRequest) GetTimeAfterExpirationUnits() CSSCMSDataModelEnumsCertificateCleanupTimeUnits { + if o == nil || isNil(o.TimeAfterExpirationUnits) { + var ret CSSCMSDataModelEnumsCertificateCleanupTimeUnits + return ret + } + return *o.TimeAfterExpirationUnits +} + +func (o *TemplatesTemplateUpdateRequest) SetTimeAfterExpirationUnits(v CSSCMSDataModelEnumsCertificateCleanupTimeUnits) { + o.TimeAfterExpirationUnits = &v +} + +func (o *TemplatesTemplateUpdateRequest) GetDeleteWithArchivedKey() bool { + if o == nil || !o.DeleteWithArchivedKey.IsSet() || o.DeleteWithArchivedKey.Get() == nil { + var ret bool + return ret + } + return *o.DeleteWithArchivedKey.Get() +} + +func (o *TemplatesTemplateUpdateRequest) SetDeleteWithArchivedKey(v bool) { + o.DeleteWithArchivedKey.Set(&v) +} + type NullableTemplatesTemplateUpdateRequest struct { value *TemplatesTemplateUpdateRequest isSet bool diff --git a/v24/api/keyfactor/v2/client.go b/v24/api/keyfactor/v2/client.go index 3056804..473cef9 100644 --- a/v24/api/keyfactor/v2/client.go +++ b/v24/api/keyfactor/v2/client.go @@ -80,6 +80,22 @@ type service struct { // NewAPIClient creates a new API client. Requires a userAgent string describing your application. // optionally a custom http.Client to allow for advanced features such as caching. +// NewAPIClientWithAuth creates an APIClient with a pre-built AuthConfig, bypassing +// the Authenticate() network call. Used in unit tests with VCR cassettes. +func NewAPIClientWithAuth(auth AuthConfig) *APIClient { + c := &APIClient{} + c.AuthClient = auth + c.common.client = c + + // API Services + c.CertificateApi = (*CertificateApiService)(&c.common) + c.EnrollmentApi = (*EnrollmentApiService)(&c.common) + c.PAMProviderApi = (*PAMProviderApiService)(&c.common) + c.SecurityRolesApi = (*SecurityRolesApiService)(&c.common) + c.UserApi = (*UserApiService)(&c.common) + return c +} + func NewAPIClient(cfg *auth_providers.Server) (*APIClient, error) { var err error diff --git a/v24/client.go b/v24/client.go index 11190c0..dd419a7 100644 --- a/v24/client.go +++ b/v24/client.go @@ -1,6 +1,8 @@ package keyfactor import ( + "net/http" + "github.com/Keyfactor/keyfactor-auth-client-go/auth_providers" v1 "github.com/Keyfactor/keyfactor-go-client-sdk/v24/api/keyfactor/v1" v2 "github.com/Keyfactor/keyfactor-go-client-sdk/v24/api/keyfactor/v2" @@ -11,6 +13,25 @@ type APIClient struct { V2 *v2.APIClient } +// AuthConfig is a common interface implemented by VCR auth stubs and real auth configs. +// Structurally equivalent to v1.AuthConfig and v2.AuthConfig. +type AuthConfig interface { + Authenticate() error + GetHttpClient() (*http.Client, error) + GetServerConfig() *auth_providers.Server +} + +// NewAPIClientWithAuth creates an APIClient with a pre-built AuthConfig, bypassing +// the Authenticate() network call. Used in unit tests with VCR cassettes. +func NewAPIClientWithAuth(auth AuthConfig) *APIClient { + var v1a v1.AuthConfig = auth + var v2a v2.AuthConfig = auth + return &APIClient{ + V1: v1.NewAPIClientWithAuth(v1a), + V2: v2.NewAPIClientWithAuth(v2a), + } +} + func NewAPIClient(cfg *auth_providers.Server) (*APIClient, error) { var err error diff --git a/v25/api/keyfactor/v1/model_css_cms_core_enums_key_retention_policy.go b/v25/api/keyfactor/v1/model_css_cms_core_enums_key_retention_policy.go index 853f475..b36f080 100644 --- a/v25/api/keyfactor/v1/model_css_cms_core_enums_key_retention_policy.go +++ b/v25/api/keyfactor/v1/model_css_cms_core_enums_key_retention_policy.go @@ -66,21 +66,39 @@ var AllowedCSSCMSCoreEnumsKeyRetentionPolicyEnumValues = []CSSCMSCoreEnumsKeyRet 3, } +// keyRetentionPolicyStringToInt maps string names returned by EJBCA to integer values. +var keyRetentionPolicyStringToInt = map[string]CSSCMSCoreEnumsKeyRetentionPolicy{ + "None": CSSCMSCOREENUMSKEYRETENTIONPOLICY__0, + "ShortTerm": CSSCMSCOREENUMSKEYRETENTIONPOLICY__1, + "LongTerm": CSSCMSCOREENUMSKEYRETENTIONPOLICY__2, + "Indefinite": CSSCMSCOREENUMSKEYRETENTIONPOLICY__3, +} + func (v *CSSCMSCoreEnumsKeyRetentionPolicy) UnmarshalJSON(src []byte) error { - var value int32 - err := json.Unmarshal(src, &value) - if err != nil { - return err + // Try integer first (MSCA/standard Keyfactor response) + var intValue int32 + if err := json.Unmarshal(src, &intValue); err == nil { + enumTypeValue := CSSCMSCoreEnumsKeyRetentionPolicy(intValue) + for _, existing := range AllowedCSSCMSCoreEnumsKeyRetentionPolicyEnumValues { + if existing == enumTypeValue { + *v = enumTypeValue + return nil + } + } + return fmt.Errorf("%+v is not a valid CSSCMSCoreEnumsKeyRetentionPolicy", intValue) } - enumTypeValue := CSSCMSCoreEnumsKeyRetentionPolicy(value) - for _, existing := range AllowedCSSCMSCoreEnumsKeyRetentionPolicyEnumValues { - if existing == enumTypeValue { - *v = enumTypeValue + // Try string (EJBCA response returns e.g. "None") + var strValue string + if err := json.Unmarshal(src, &strValue); err == nil { + if mapped, ok := keyRetentionPolicyStringToInt[strValue]; ok { + *v = mapped return nil } + // Unknown string — treat as 0 (None) to avoid breaking reads + *v = CSSCMSCOREENUMSKEYRETENTIONPOLICY__0 + return nil } - - return fmt.Errorf("%+v is not a valid CSSCMSCoreEnumsKeyRetentionPolicy", value) + return fmt.Errorf("cannot unmarshal %s into CSSCMSCoreEnumsKeyRetentionPolicy", src) } // NewCSSCMSCoreEnumsKeyRetentionPolicyFromValue returns a pointer to a valid CSSCMSCoreEnumsKeyRetentionPolicy diff --git a/v25/api/keyfactor/v1/model_templates_template_retrieval_response.go b/v25/api/keyfactor/v1/model_templates_template_retrieval_response.go index 0e97549..1b972c3 100644 --- a/v25/api/keyfactor/v1/model_templates_template_retrieval_response.go +++ b/v25/api/keyfactor/v1/model_templates_template_retrieval_response.go @@ -62,6 +62,7 @@ type TemplatesTemplateRetrievalResponse struct { TimeAfterExpiration NullableInt32 `json:"TimeAfterExpiration,omitempty"` TimeAfterExpirationUnits *CSSCMSDataModelEnumsCertificateCleanupTimeUnits `json:"TimeAfterExpirationUnits,omitempty"` DeleteWithArchivedKey NullableBool `json:"DeleteWithArchivedKey,omitempty"` + Manageability NullableInt32 `json:"Manageability,omitempty"` } // NewTemplatesTemplateRetrievalResponse instantiates a new TemplatesTemplateRetrievalResponse object @@ -1417,9 +1418,25 @@ func (o TemplatesTemplateRetrievalResponse) ToMap() (map[string]interface{}, err if o.DeleteWithArchivedKey.IsSet() { toSerialize["DeleteWithArchivedKey"] = o.DeleteWithArchivedKey.Get() } + if o.Manageability.IsSet() { + toSerialize["Manageability"] = o.Manageability.Get() + } return toSerialize, nil } + +func (o *TemplatesTemplateRetrievalResponse) GetManageability() int32 { + if o == nil || !o.Manageability.IsSet() || o.Manageability.Get() == nil { + var ret int32 + return ret + } + return *o.Manageability.Get() +} + +func (o *TemplatesTemplateRetrievalResponse) SetManageability(v int32) { + o.Manageability.Set(&v) +} + type NullableTemplatesTemplateRetrievalResponse struct { value *TemplatesTemplateRetrievalResponse isSet bool