akeyless 5.0.26 → 5.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -1
  3. data/docs/AccountGeneralSettings.md +4 -0
  4. data/docs/CreatePKICertIssuer.md +2 -0
  5. data/docs/DSProducerDetails.md +4 -0
  6. data/docs/DynamicSecretCreateAws.md +8 -0
  7. data/docs/DynamicSecretCreateAzure.md +8 -0
  8. data/docs/DynamicSecretCreateCassandra.md +8 -0
  9. data/docs/DynamicSecretCreateChef.md +8 -0
  10. data/docs/DynamicSecretCreateHanaDb.md +8 -0
  11. data/docs/DynamicSecretCreateLdap.md +8 -0
  12. data/docs/DynamicSecretCreateMongoDb.md +8 -0
  13. data/docs/DynamicSecretCreateMsSql.md +8 -0
  14. data/docs/DynamicSecretCreateMySql.md +8 -0
  15. data/docs/DynamicSecretCreateOracleDb.md +8 -0
  16. data/docs/DynamicSecretCreatePostgreSql.md +8 -0
  17. data/docs/DynamicSecretCreateRabbitMq.md +8 -0
  18. data/docs/DynamicSecretCreateRdp.md +8 -0
  19. data/docs/DynamicSecretCreateRedis.md +8 -0
  20. data/docs/DynamicSecretCreateRedshift.md +8 -0
  21. data/docs/DynamicSecretCreateSnowflake.md +8 -0
  22. data/docs/DynamicSecretUpdateAws.md +8 -0
  23. data/docs/DynamicSecretUpdateAzure.md +8 -0
  24. data/docs/DynamicSecretUpdateCassandra.md +8 -0
  25. data/docs/DynamicSecretUpdateChef.md +8 -0
  26. data/docs/DynamicSecretUpdateHanaDb.md +8 -0
  27. data/docs/DynamicSecretUpdateLdap.md +8 -0
  28. data/docs/DynamicSecretUpdateMongoDb.md +8 -0
  29. data/docs/DynamicSecretUpdateMsSql.md +8 -0
  30. data/docs/DynamicSecretUpdateMySql.md +8 -0
  31. data/docs/DynamicSecretUpdateOracleDb.md +8 -0
  32. data/docs/DynamicSecretUpdatePostgreSql.md +8 -0
  33. data/docs/DynamicSecretUpdateRabbitMq.md +8 -0
  34. data/docs/DynamicSecretUpdateRdp.md +8 -0
  35. data/docs/DynamicSecretUpdateRedis.md +8 -0
  36. data/docs/DynamicSecretUpdateRedshift.md +8 -0
  37. data/docs/DynamicSecretUpdateSnowflake.md +8 -0
  38. data/docs/EsmGetSecretOutput.md +7 -1
  39. data/docs/FolderDeleteSync.md +32 -0
  40. data/docs/FolderDeleteSyncOutput.md +24 -0
  41. data/docs/FolderSync.md +34 -0
  42. data/docs/FolderSyncAll.md +26 -0
  43. data/docs/FolderSyncAllOutput.md +18 -0
  44. data/docs/FolderSyncOutput.md +24 -0
  45. data/docs/FolderUSCSyncConfig.md +2 -0
  46. data/docs/GatewayCreateProducerAws.md +8 -0
  47. data/docs/GatewayCreateProducerAzure.md +8 -0
  48. data/docs/GatewayCreateProducerCassandra.md +8 -0
  49. data/docs/GatewayCreateProducerChef.md +8 -0
  50. data/docs/GatewayCreateProducerHanaDb.md +8 -0
  51. data/docs/GatewayCreateProducerLdap.md +8 -0
  52. data/docs/GatewayCreateProducerMSSQL.md +8 -0
  53. data/docs/GatewayCreateProducerMongo.md +8 -0
  54. data/docs/GatewayCreateProducerMySQL.md +8 -0
  55. data/docs/GatewayCreateProducerOracleDb.md +8 -0
  56. data/docs/GatewayCreateProducerPostgreSQL.md +8 -0
  57. data/docs/GatewayCreateProducerRabbitMQ.md +8 -0
  58. data/docs/GatewayCreateProducerRdp.md +8 -0
  59. data/docs/GatewayCreateProducerRedis.md +8 -0
  60. data/docs/GatewayCreateProducerRedshift.md +8 -0
  61. data/docs/GatewayCreateProducerSnowflake.md +8 -0
  62. data/docs/GatewayUpdateProducerAws.md +8 -0
  63. data/docs/GatewayUpdateProducerAzure.md +8 -0
  64. data/docs/GatewayUpdateProducerCassandra.md +8 -0
  65. data/docs/GatewayUpdateProducerChef.md +8 -0
  66. data/docs/GatewayUpdateProducerHanaDb.md +8 -0
  67. data/docs/GatewayUpdateProducerLdap.md +8 -0
  68. data/docs/GatewayUpdateProducerMSSQL.md +8 -0
  69. data/docs/GatewayUpdateProducerMongo.md +8 -0
  70. data/docs/GatewayUpdateProducerMySQL.md +8 -0
  71. data/docs/GatewayUpdateProducerOracleDb.md +8 -0
  72. data/docs/GatewayUpdateProducerPostgreSQL.md +8 -0
  73. data/docs/GatewayUpdateProducerRabbitMQ.md +8 -0
  74. data/docs/GatewayUpdateProducerRdp.md +8 -0
  75. data/docs/GatewayUpdateProducerRedis.md +8 -0
  76. data/docs/GatewayUpdateProducerRedshift.md +8 -0
  77. data/docs/GatewayUpdateProducerSnowflake.md +8 -0
  78. data/docs/OIDCAccessRules.md +2 -0
  79. data/docs/PKICertificateIssueDetails.md +4 -0
  80. data/docs/PersonalFolderGlobalMappingSettings.md +20 -0
  81. data/docs/RotatedSecretCreateAws.md +13 -5
  82. data/docs/RotatedSecretCreateAzure.md +14 -4
  83. data/docs/RotatedSecretCreateCassandra.md +13 -5
  84. data/docs/RotatedSecretCreateCustom.md +9 -9
  85. data/docs/RotatedSecretCreateDockerhub.md +13 -5
  86. data/docs/RotatedSecretCreateGcp.md +13 -5
  87. data/docs/RotatedSecretCreateHanadb.md +13 -5
  88. data/docs/RotatedSecretCreateHashiVault.md +60 -0
  89. data/docs/RotatedSecretCreateLdap.md +12 -4
  90. data/docs/RotatedSecretCreateMongodb.md +13 -5
  91. data/docs/RotatedSecretCreateMssql.md +13 -5
  92. data/docs/RotatedSecretCreateMysql.md +13 -5
  93. data/docs/RotatedSecretCreateOpenAI.md +13 -5
  94. data/docs/RotatedSecretCreateOracledb.md +13 -5
  95. data/docs/RotatedSecretCreatePostgresql.md +13 -5
  96. data/docs/RotatedSecretCreateRedis.md +13 -5
  97. data/docs/RotatedSecretCreateRedshift.md +13 -5
  98. data/docs/RotatedSecretCreateSnowflake.md +13 -5
  99. data/docs/RotatedSecretCreateSplunk.md +13 -5
  100. data/docs/RotatedSecretCreateSsh.md +13 -5
  101. data/docs/RotatedSecretCreateWindows.md +13 -5
  102. data/docs/RotatedSecretUpdateAws.md +13 -5
  103. data/docs/RotatedSecretUpdateAzure.md +14 -4
  104. data/docs/RotatedSecretUpdateCassandra.md +13 -5
  105. data/docs/RotatedSecretUpdateCustom.md +9 -9
  106. data/docs/RotatedSecretUpdateDockerhub.md +13 -5
  107. data/docs/RotatedSecretUpdateGcp.md +13 -5
  108. data/docs/RotatedSecretUpdateHanadb.md +13 -5
  109. data/docs/RotatedSecretUpdateHashiVault.md +64 -0
  110. data/docs/RotatedSecretUpdateLdap.md +12 -4
  111. data/docs/RotatedSecretUpdateMongodb.md +13 -5
  112. data/docs/RotatedSecretUpdateMssql.md +13 -5
  113. data/docs/RotatedSecretUpdateMysql.md +13 -5
  114. data/docs/RotatedSecretUpdateOpenAI.md +13 -5
  115. data/docs/RotatedSecretUpdateOracledb.md +13 -5
  116. data/docs/RotatedSecretUpdatePostgresql.md +13 -5
  117. data/docs/RotatedSecretUpdateRedis.md +13 -5
  118. data/docs/RotatedSecretUpdateRedshift.md +13 -5
  119. data/docs/RotatedSecretUpdateSnowflake.md +13 -5
  120. data/docs/RotatedSecretUpdateSplunk.md +13 -5
  121. data/docs/RotatedSecretUpdateSsh.md +13 -5
  122. data/docs/RotatedSecretUpdateWindows.md +13 -5
  123. data/docs/SecretInfo.md +5 -1
  124. data/docs/UpdateAccountSettings.md +5 -5
  125. data/docs/UpdatePKICertIssuer.md +2 -0
  126. data/docs/UscGetSecretOutput.md +7 -1
  127. data/docs/V2Api.md +315 -0
  128. data/lib/akeyless/api/v2_api.rb +320 -0
  129. data/lib/akeyless/models/account_general_settings.rb +19 -1
  130. data/lib/akeyless/models/create_pki_cert_issuer.rb +11 -1
  131. data/lib/akeyless/models/ds_producer_details.rb +20 -1
  132. data/lib/akeyless/models/dynamic_secret_create_aws.rb +40 -1
  133. data/lib/akeyless/models/dynamic_secret_create_azure.rb +40 -1
  134. data/lib/akeyless/models/dynamic_secret_create_cassandra.rb +40 -1
  135. data/lib/akeyless/models/dynamic_secret_create_chef.rb +40 -1
  136. data/lib/akeyless/models/dynamic_secret_create_hana_db.rb +40 -1
  137. data/lib/akeyless/models/dynamic_secret_create_ldap.rb +40 -1
  138. data/lib/akeyless/models/dynamic_secret_create_mongo_db.rb +40 -1
  139. data/lib/akeyless/models/dynamic_secret_create_ms_sql.rb +40 -1
  140. data/lib/akeyless/models/dynamic_secret_create_my_sql.rb +40 -1
  141. data/lib/akeyless/models/dynamic_secret_create_oracle_db.rb +40 -1
  142. data/lib/akeyless/models/dynamic_secret_create_postgre_sql.rb +40 -1
  143. data/lib/akeyless/models/dynamic_secret_create_rabbit_mq.rb +40 -1
  144. data/lib/akeyless/models/dynamic_secret_create_rdp.rb +40 -1
  145. data/lib/akeyless/models/dynamic_secret_create_redis.rb +40 -1
  146. data/lib/akeyless/models/dynamic_secret_create_redshift.rb +40 -1
  147. data/lib/akeyless/models/dynamic_secret_create_snowflake.rb +40 -1
  148. data/lib/akeyless/models/dynamic_secret_update_aws.rb +40 -1
  149. data/lib/akeyless/models/dynamic_secret_update_azure.rb +40 -1
  150. data/lib/akeyless/models/dynamic_secret_update_cassandra.rb +40 -1
  151. data/lib/akeyless/models/dynamic_secret_update_chef.rb +40 -1
  152. data/lib/akeyless/models/dynamic_secret_update_hana_db.rb +40 -1
  153. data/lib/akeyless/models/dynamic_secret_update_ldap.rb +40 -1
  154. data/lib/akeyless/models/dynamic_secret_update_mongo_db.rb +40 -1
  155. data/lib/akeyless/models/dynamic_secret_update_ms_sql.rb +40 -1
  156. data/lib/akeyless/models/dynamic_secret_update_my_sql.rb +40 -1
  157. data/lib/akeyless/models/dynamic_secret_update_oracle_db.rb +40 -1
  158. data/lib/akeyless/models/dynamic_secret_update_postgre_sql.rb +40 -1
  159. data/lib/akeyless/models/dynamic_secret_update_rabbit_mq.rb +40 -1
  160. data/lib/akeyless/models/dynamic_secret_update_rdp.rb +40 -1
  161. data/lib/akeyless/models/dynamic_secret_update_redis.rb +40 -1
  162. data/lib/akeyless/models/dynamic_secret_update_redshift.rb +40 -1
  163. data/lib/akeyless/models/dynamic_secret_update_snowflake.rb +40 -1
  164. data/lib/akeyless/models/esm_get_secret_output.rb +35 -4
  165. data/lib/akeyless/models/folder_delete_sync.rb +305 -0
  166. data/lib/akeyless/models/folder_delete_sync_output.rb +245 -0
  167. data/lib/akeyless/models/folder_sync.rb +306 -0
  168. data/lib/akeyless/models/folder_sync_all.rb +266 -0
  169. data/lib/akeyless/models/folder_sync_all_output.rb +214 -0
  170. data/lib/akeyless/models/folder_sync_output.rb +247 -0
  171. data/lib/akeyless/models/folder_usc_sync_config.rb +10 -1
  172. data/lib/akeyless/models/gateway_create_producer_aws.rb +40 -1
  173. data/lib/akeyless/models/gateway_create_producer_azure.rb +40 -1
  174. data/lib/akeyless/models/gateway_create_producer_cassandra.rb +40 -1
  175. data/lib/akeyless/models/gateway_create_producer_chef.rb +40 -1
  176. data/lib/akeyless/models/gateway_create_producer_hana_db.rb +40 -1
  177. data/lib/akeyless/models/gateway_create_producer_ldap.rb +40 -1
  178. data/lib/akeyless/models/gateway_create_producer_mongo.rb +40 -1
  179. data/lib/akeyless/models/gateway_create_producer_mssql.rb +40 -1
  180. data/lib/akeyless/models/gateway_create_producer_my_sql.rb +40 -1
  181. data/lib/akeyless/models/gateway_create_producer_oracle_db.rb +40 -1
  182. data/lib/akeyless/models/gateway_create_producer_postgre_sql.rb +40 -1
  183. data/lib/akeyless/models/gateway_create_producer_rabbit_mq.rb +40 -1
  184. data/lib/akeyless/models/gateway_create_producer_rdp.rb +40 -1
  185. data/lib/akeyless/models/gateway_create_producer_redis.rb +40 -1
  186. data/lib/akeyless/models/gateway_create_producer_redshift.rb +40 -1
  187. data/lib/akeyless/models/gateway_create_producer_snowflake.rb +40 -1
  188. data/lib/akeyless/models/gateway_update_producer_aws.rb +40 -1
  189. data/lib/akeyless/models/gateway_update_producer_azure.rb +40 -1
  190. data/lib/akeyless/models/gateway_update_producer_cassandra.rb +40 -1
  191. data/lib/akeyless/models/gateway_update_producer_chef.rb +40 -1
  192. data/lib/akeyless/models/gateway_update_producer_hana_db.rb +40 -1
  193. data/lib/akeyless/models/gateway_update_producer_ldap.rb +40 -1
  194. data/lib/akeyless/models/gateway_update_producer_mongo.rb +40 -1
  195. data/lib/akeyless/models/gateway_update_producer_mssql.rb +40 -1
  196. data/lib/akeyless/models/gateway_update_producer_my_sql.rb +40 -1
  197. data/lib/akeyless/models/gateway_update_producer_oracle_db.rb +40 -1
  198. data/lib/akeyless/models/gateway_update_producer_postgre_sql.rb +40 -1
  199. data/lib/akeyless/models/gateway_update_producer_rabbit_mq.rb +40 -1
  200. data/lib/akeyless/models/gateway_update_producer_rdp.rb +40 -1
  201. data/lib/akeyless/models/gateway_update_producer_redis.rb +40 -1
  202. data/lib/akeyless/models/gateway_update_producer_redshift.rb +40 -1
  203. data/lib/akeyless/models/gateway_update_producer_snowflake.rb +40 -1
  204. data/lib/akeyless/models/oidc_access_rules.rb +11 -1
  205. data/lib/akeyless/models/personal_folder_global_mapping_settings.rb +223 -0
  206. data/lib/akeyless/models/pki_certificate_issue_details.rb +19 -1
  207. data/lib/akeyless/models/rotated_secret_create_aws.rb +43 -8
  208. data/lib/akeyless/models/rotated_secret_create_azure.rb +50 -5
  209. data/lib/akeyless/models/rotated_secret_create_cassandra.rb +43 -8
  210. data/lib/akeyless/models/rotated_secret_create_custom.rb +3 -8
  211. data/lib/akeyless/models/rotated_secret_create_dockerhub.rb +43 -8
  212. data/lib/akeyless/models/rotated_secret_create_gcp.rb +43 -8
  213. data/lib/akeyless/models/rotated_secret_create_hanadb.rb +43 -8
  214. data/lib/akeyless/models/rotated_secret_create_hashi_vault.rb +446 -0
  215. data/lib/akeyless/models/rotated_secret_create_ldap.rb +40 -5
  216. data/lib/akeyless/models/rotated_secret_create_mongodb.rb +43 -8
  217. data/lib/akeyless/models/rotated_secret_create_mssql.rb +43 -8
  218. data/lib/akeyless/models/rotated_secret_create_mysql.rb +43 -8
  219. data/lib/akeyless/models/rotated_secret_create_open_ai.rb +43 -8
  220. data/lib/akeyless/models/rotated_secret_create_oracledb.rb +43 -8
  221. data/lib/akeyless/models/rotated_secret_create_postgresql.rb +43 -8
  222. data/lib/akeyless/models/rotated_secret_create_redis.rb +43 -8
  223. data/lib/akeyless/models/rotated_secret_create_redshift.rb +43 -8
  224. data/lib/akeyless/models/rotated_secret_create_snowflake.rb +43 -8
  225. data/lib/akeyless/models/rotated_secret_create_splunk.rb +43 -8
  226. data/lib/akeyless/models/rotated_secret_create_ssh.rb +43 -8
  227. data/lib/akeyless/models/rotated_secret_create_windows.rb +43 -8
  228. data/lib/akeyless/models/rotated_secret_sync.rb +1 -1
  229. data/lib/akeyless/models/rotated_secret_update_aws.rb +43 -8
  230. data/lib/akeyless/models/rotated_secret_update_azure.rb +50 -5
  231. data/lib/akeyless/models/rotated_secret_update_cassandra.rb +43 -8
  232. data/lib/akeyless/models/rotated_secret_update_custom.rb +3 -8
  233. data/lib/akeyless/models/rotated_secret_update_dockerhub.rb +43 -8
  234. data/lib/akeyless/models/rotated_secret_update_gcp.rb +43 -8
  235. data/lib/akeyless/models/rotated_secret_update_hanadb.rb +43 -8
  236. data/lib/akeyless/models/rotated_secret_update_hashi_vault.rb +463 -0
  237. data/lib/akeyless/models/rotated_secret_update_ldap.rb +40 -5
  238. data/lib/akeyless/models/rotated_secret_update_mongodb.rb +43 -8
  239. data/lib/akeyless/models/rotated_secret_update_mssql.rb +43 -8
  240. data/lib/akeyless/models/rotated_secret_update_mysql.rb +43 -8
  241. data/lib/akeyless/models/rotated_secret_update_open_ai.rb +43 -8
  242. data/lib/akeyless/models/rotated_secret_update_oracledb.rb +43 -8
  243. data/lib/akeyless/models/rotated_secret_update_postgresql.rb +43 -8
  244. data/lib/akeyless/models/rotated_secret_update_redis.rb +43 -8
  245. data/lib/akeyless/models/rotated_secret_update_redshift.rb +43 -8
  246. data/lib/akeyless/models/rotated_secret_update_snowflake.rb +43 -8
  247. data/lib/akeyless/models/rotated_secret_update_splunk.rb +43 -8
  248. data/lib/akeyless/models/rotated_secret_update_ssh.rb +43 -8
  249. data/lib/akeyless/models/rotated_secret_update_windows.rb +43 -8
  250. data/lib/akeyless/models/secret_info.rb +24 -4
  251. data/lib/akeyless/models/static_secret_sync.rb +1 -1
  252. data/lib/akeyless/models/update_account_settings.rb +3 -4
  253. data/lib/akeyless/models/update_pki_cert_issuer.rb +11 -1
  254. data/lib/akeyless/models/usc_get_secret_output.rb +35 -4
  255. data/lib/akeyless/version.rb +1 -1
  256. data/lib/akeyless.rb +9 -0
  257. data/spec/models/folder_delete_sync_output_spec.rb +54 -0
  258. data/spec/models/folder_delete_sync_spec.rb +78 -0
  259. data/spec/models/folder_sync_all_output_spec.rb +36 -0
  260. data/spec/models/folder_sync_all_spec.rb +60 -0
  261. data/spec/models/folder_sync_output_spec.rb +54 -0
  262. data/spec/models/folder_sync_spec.rb +84 -0
  263. data/spec/models/personal_folder_global_mapping_settings_spec.rb +42 -0
  264. data/spec/models/rotated_secret_create_hashi_vault_spec.rb +162 -0
  265. data/spec/models/rotated_secret_update_hashi_vault_spec.rb +174 -0
  266. metadata +1223 -1187
@@ -21,7 +21,6 @@ module Akeyless
21
21
  # The credentials to connect with use-user-creds/use-target-creds
22
22
  attr_accessor :authentication_credentials
23
23
 
24
- # Whether to automatically rotate every --rotation-interval days, or disable existing automatic rotation [true/false]
25
24
  attr_accessor :auto_rotate
26
25
 
27
26
  # Protection from accidental deletion of this object [true/false]
@@ -63,7 +62,6 @@ module Akeyless
63
62
  # Whether to keep previous version [true/false]. If not set, use default according to account settings
64
63
  attr_accessor :keep_prev_version
65
64
 
66
- # The name of a key that used to encrypt the secret value (if empty, the account default protectionKey key will be used)
67
65
  attr_accessor :key
68
66
 
69
67
  # Set the maximum number of versions, limited by the account settings defaults.
@@ -87,10 +85,8 @@ module Akeyless
87
85
  # How many days before the rotation of the item would you like to be notified
88
86
  attr_accessor :rotation_event_in
89
87
 
90
- # The Hour of the rotation in UTC
91
88
  attr_accessor :rotation_hour
92
89
 
93
- # The number of days to wait between every automatic key rotation (1-365)
94
90
  attr_accessor :rotation_interval
95
91
 
96
92
  # The rotator type. options: [target/service-account-rotator]
@@ -102,6 +98,17 @@ module Akeyless
102
98
  # The universal identity token, Required only for universal_identity authentication
103
99
  attr_accessor :uid_token
104
100
 
101
+ # Specifies whether the generated temporary password must contain at least one uppercase character from the ISO basic Latin alphabet (A to Z). [true/false]
102
+ attr_accessor :use_capital_letters
103
+
104
+ # Specifies whether the generated temporary password must contain at least one lowercase character from the ISO basic Latin alphabet (a to z). [true/false]
105
+ attr_accessor :use_lower_letters
106
+
107
+ # Specifies whether the generated temporary password must contain at least one numeric character (0 to 9). [true/false]
108
+ attr_accessor :use_numbers
109
+
110
+ attr_accessor :use_special_characters
111
+
105
112
  # Attribute mapping from ruby-style variable name to JSON key.
106
113
  def self.attribute_map
107
114
  {
@@ -133,7 +140,11 @@ module Akeyless
133
140
  :'rotation_interval' => :'rotation-interval',
134
141
  :'rotator_type' => :'rotator-type',
135
142
  :'token' => :'token',
136
- :'uid_token' => :'uid-token'
143
+ :'uid_token' => :'uid-token',
144
+ :'use_capital_letters' => :'use-capital-letters',
145
+ :'use_lower_letters' => :'use-lower-letters',
146
+ :'use_numbers' => :'use-numbers',
147
+ :'use_special_characters' => :'use-special-characters'
137
148
  }
138
149
  end
139
150
 
@@ -173,7 +184,11 @@ module Akeyless
173
184
  :'rotation_interval' => :'String',
174
185
  :'rotator_type' => :'String',
175
186
  :'token' => :'String',
176
- :'uid_token' => :'String'
187
+ :'uid_token' => :'String',
188
+ :'use_capital_letters' => :'String',
189
+ :'use_lower_letters' => :'String',
190
+ :'use_numbers' => :'String',
191
+ :'use_special_characters' => :'String'
177
192
  }
178
193
  end
179
194
 
@@ -335,6 +350,22 @@ module Akeyless
335
350
  if attributes.key?(:'uid_token')
336
351
  self.uid_token = attributes[:'uid_token']
337
352
  end
353
+
354
+ if attributes.key?(:'use_capital_letters')
355
+ self.use_capital_letters = attributes[:'use_capital_letters']
356
+ end
357
+
358
+ if attributes.key?(:'use_lower_letters')
359
+ self.use_lower_letters = attributes[:'use_lower_letters']
360
+ end
361
+
362
+ if attributes.key?(:'use_numbers')
363
+ self.use_numbers = attributes[:'use_numbers']
364
+ end
365
+
366
+ if attributes.key?(:'use_special_characters')
367
+ self.use_special_characters = attributes[:'use_special_characters']
368
+ end
338
369
  end
339
370
 
340
371
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -395,7 +426,11 @@ module Akeyless
395
426
  rotation_interval == o.rotation_interval &&
396
427
  rotator_type == o.rotator_type &&
397
428
  token == o.token &&
398
- uid_token == o.uid_token
429
+ uid_token == o.uid_token &&
430
+ use_capital_letters == o.use_capital_letters &&
431
+ use_lower_letters == o.use_lower_letters &&
432
+ use_numbers == o.use_numbers &&
433
+ use_special_characters == o.use_special_characters
399
434
  end
400
435
 
401
436
  # @see the `==` method
@@ -407,7 +442,7 @@ module Akeyless
407
442
  # Calculates hash code according to all attributes.
408
443
  # @return [Integer] Hash code
409
444
  def hash
410
- [add_tag, authentication_credentials, auto_rotate, delete_protection, description, gcp_key, gcp_service_account_email, gcp_service_account_key_id, grace_rotation, grace_rotation_hour, grace_rotation_interval, grace_rotation_timing, input_rule, item_custom_fields, json, keep_prev_version, key, max_versions, name, new_name, output_rule, password_length, rm_tag, rotation_event_in, rotation_hour, rotation_interval, rotator_type, token, uid_token].hash
445
+ [add_tag, authentication_credentials, auto_rotate, delete_protection, description, gcp_key, gcp_service_account_email, gcp_service_account_key_id, grace_rotation, grace_rotation_hour, grace_rotation_interval, grace_rotation_timing, input_rule, item_custom_fields, json, keep_prev_version, key, max_versions, name, new_name, output_rule, password_length, rm_tag, rotation_event_in, rotation_hour, rotation_interval, rotator_type, token, uid_token, use_capital_letters, use_lower_letters, use_numbers, use_special_characters].hash
411
446
  end
412
447
 
413
448
  # Builds the object from hash
@@ -21,7 +21,6 @@ module Akeyless
21
21
  # The credentials to connect with use-user-creds/use-target-creds
22
22
  attr_accessor :authentication_credentials
23
23
 
24
- # Whether to automatically rotate every --rotation-interval days, or disable existing automatic rotation [true/false]
25
24
  attr_accessor :auto_rotate
26
25
 
27
26
  # Protection from accidental deletion of this object [true/false]
@@ -42,7 +41,6 @@ module Akeyless
42
41
  # Whether to keep previous version [true/false]. If not set, use default according to account settings
43
42
  attr_accessor :keep_prev_version
44
43
 
45
- # The name of a key that used to encrypt the secret value (if empty, the account default protectionKey key will be used)
46
44
  attr_accessor :key
47
45
 
48
46
  # Set the maximum number of versions, limited by the account settings defaults.
@@ -72,10 +70,8 @@ module Akeyless
72
70
  # How many days before the rotation of the item would you like to be notified
73
71
  attr_accessor :rotation_event_in
74
72
 
75
- # The Hour of the rotation in UTC
76
73
  attr_accessor :rotation_hour
77
74
 
78
- # The number of days to wait between every automatic key rotation (1-365)
79
75
  attr_accessor :rotation_interval
80
76
 
81
77
  # Authentication token (see `/auth` and `/configure`)
@@ -84,6 +80,17 @@ module Akeyless
84
80
  # The universal identity token, Required only for universal_identity authentication
85
81
  attr_accessor :uid_token
86
82
 
83
+ # Specifies whether the generated temporary password must contain at least one uppercase character from the ISO basic Latin alphabet (A to Z). [true/false]
84
+ attr_accessor :use_capital_letters
85
+
86
+ # Specifies whether the generated temporary password must contain at least one lowercase character from the ISO basic Latin alphabet (a to z). [true/false]
87
+ attr_accessor :use_lower_letters
88
+
89
+ # Specifies whether the generated temporary password must contain at least one numeric character (0 to 9). [true/false]
90
+ attr_accessor :use_numbers
91
+
92
+ attr_accessor :use_special_characters
93
+
87
94
  # Attribute mapping from ruby-style variable name to JSON key.
88
95
  def self.attribute_map
89
96
  {
@@ -109,7 +116,11 @@ module Akeyless
109
116
  :'rotation_hour' => :'rotation-hour',
110
117
  :'rotation_interval' => :'rotation-interval',
111
118
  :'token' => :'token',
112
- :'uid_token' => :'uid-token'
119
+ :'uid_token' => :'uid-token',
120
+ :'use_capital_letters' => :'use-capital-letters',
121
+ :'use_lower_letters' => :'use-lower-letters',
122
+ :'use_numbers' => :'use-numbers',
123
+ :'use_special_characters' => :'use-special-characters'
113
124
  }
114
125
  end
115
126
 
@@ -143,7 +154,11 @@ module Akeyless
143
154
  :'rotation_hour' => :'Integer',
144
155
  :'rotation_interval' => :'String',
145
156
  :'token' => :'String',
146
- :'uid_token' => :'String'
157
+ :'uid_token' => :'String',
158
+ :'use_capital_letters' => :'String',
159
+ :'use_lower_letters' => :'String',
160
+ :'use_numbers' => :'String',
161
+ :'use_special_characters' => :'String'
147
162
  }
148
163
  end
149
164
 
@@ -279,6 +294,22 @@ module Akeyless
279
294
  if attributes.key?(:'uid_token')
280
295
  self.uid_token = attributes[:'uid_token']
281
296
  end
297
+
298
+ if attributes.key?(:'use_capital_letters')
299
+ self.use_capital_letters = attributes[:'use_capital_letters']
300
+ end
301
+
302
+ if attributes.key?(:'use_lower_letters')
303
+ self.use_lower_letters = attributes[:'use_lower_letters']
304
+ end
305
+
306
+ if attributes.key?(:'use_numbers')
307
+ self.use_numbers = attributes[:'use_numbers']
308
+ end
309
+
310
+ if attributes.key?(:'use_special_characters')
311
+ self.use_special_characters = attributes[:'use_special_characters']
312
+ end
282
313
  end
283
314
 
284
315
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -328,7 +359,11 @@ module Akeyless
328
359
  rotation_hour == o.rotation_hour &&
329
360
  rotation_interval == o.rotation_interval &&
330
361
  token == o.token &&
331
- uid_token == o.uid_token
362
+ uid_token == o.uid_token &&
363
+ use_capital_letters == o.use_capital_letters &&
364
+ use_lower_letters == o.use_lower_letters &&
365
+ use_numbers == o.use_numbers &&
366
+ use_special_characters == o.use_special_characters
332
367
  end
333
368
 
334
369
  # @see the `==` method
@@ -340,7 +375,7 @@ module Akeyless
340
375
  # Calculates hash code according to all attributes.
341
376
  # @return [Integer] Hash code
342
377
  def hash
343
- [add_tag, authentication_credentials, auto_rotate, delete_protection, description, input_rule, item_custom_fields, json, keep_prev_version, key, max_versions, name, new_name, output_rule, password_length, rm_tag, rotated_password, rotated_username, rotation_event_in, rotation_hour, rotation_interval, token, uid_token].hash
378
+ [add_tag, authentication_credentials, auto_rotate, delete_protection, description, input_rule, item_custom_fields, json, keep_prev_version, key, max_versions, name, new_name, output_rule, password_length, rm_tag, rotated_password, rotated_username, rotation_event_in, rotation_hour, rotation_interval, token, uid_token, use_capital_letters, use_lower_letters, use_numbers, use_special_characters].hash
344
379
  end
345
380
 
346
381
  # Builds the object from hash
@@ -0,0 +1,463 @@
1
+ =begin
2
+ #Akeyless API
3
+
4
+ #The purpose of this application is to provide access to Akeyless API.
5
+
6
+ The version of the OpenAPI document: 3.0
7
+ Contact: support@akeyless.io
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.10.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Akeyless
17
+ class RotatedSecretUpdateHashiVault
18
+ # List of the new tags that will be attached to this item
19
+ attr_accessor :add_tag
20
+
21
+ attr_accessor :auto_rotate
22
+
23
+ # Protection from accidental deletion of this object [true/false]
24
+ attr_accessor :delete_protection
25
+
26
+ # Description of the object
27
+ attr_accessor :description
28
+
29
+ # Agentic input rule in name=...,rule=... format (e.g. name=rule1,rule=Sanitize input)
30
+ attr_accessor :input_rule
31
+
32
+ # Additional custom fields to associate with the item
33
+ attr_accessor :item_custom_fields
34
+
35
+ # Set output format to JSON
36
+ attr_accessor :json
37
+
38
+ # Whether to keep previous version [true/false]. If not set, use default according to account settings
39
+ attr_accessor :keep_prev_version
40
+
41
+ attr_accessor :key
42
+
43
+ # Set the maximum number of versions, limited by the account settings defaults.
44
+ attr_accessor :max_versions
45
+
46
+ # Rotated secret name
47
+ attr_accessor :name
48
+
49
+ # New item name
50
+ attr_accessor :new_name
51
+
52
+ # Agentic output rule in name=...,rule=... format (e.g. name=rule1,rule=Mask secrets)
53
+ attr_accessor :output_rule
54
+
55
+ # The length of the password to be generated
56
+ attr_accessor :password_length
57
+
58
+ # List of the existent tags that will be removed from this item
59
+ attr_accessor :rm_tag
60
+
61
+ # How many days before the rotation of the item would you like to be notified
62
+ attr_accessor :rotation_event_in
63
+
64
+ attr_accessor :rotation_hour
65
+
66
+ attr_accessor :rotation_interval
67
+
68
+ # Authentication token (see `/auth` and `/configure`)
69
+ attr_accessor :token
70
+
71
+ # The universal identity token, Required only for universal_identity authentication
72
+ attr_accessor :uid_token
73
+
74
+ # Specifies whether the generated temporary password must contain at least one uppercase character from the ISO basic Latin alphabet (A to Z). [true/false]
75
+ attr_accessor :use_capital_letters
76
+
77
+ # Specifies whether the generated temporary password must contain at least one lowercase character from the ISO basic Latin alphabet (a to z). [true/false]
78
+ attr_accessor :use_lower_letters
79
+
80
+ # Specifies whether the generated temporary password must contain at least one numeric character (0 to 9). [true/false]
81
+ attr_accessor :use_numbers
82
+
83
+ attr_accessor :use_special_characters
84
+
85
+ # Attribute mapping from ruby-style variable name to JSON key.
86
+ def self.attribute_map
87
+ {
88
+ :'add_tag' => :'add-tag',
89
+ :'auto_rotate' => :'auto-rotate',
90
+ :'delete_protection' => :'delete_protection',
91
+ :'description' => :'description',
92
+ :'input_rule' => :'input-rule',
93
+ :'item_custom_fields' => :'item-custom-fields',
94
+ :'json' => :'json',
95
+ :'keep_prev_version' => :'keep-prev-version',
96
+ :'key' => :'key',
97
+ :'max_versions' => :'max-versions',
98
+ :'name' => :'name',
99
+ :'new_name' => :'new-name',
100
+ :'output_rule' => :'output-rule',
101
+ :'password_length' => :'password-length',
102
+ :'rm_tag' => :'rm-tag',
103
+ :'rotation_event_in' => :'rotation-event-in',
104
+ :'rotation_hour' => :'rotation-hour',
105
+ :'rotation_interval' => :'rotation-interval',
106
+ :'token' => :'token',
107
+ :'uid_token' => :'uid-token',
108
+ :'use_capital_letters' => :'use-capital-letters',
109
+ :'use_lower_letters' => :'use-lower-letters',
110
+ :'use_numbers' => :'use-numbers',
111
+ :'use_special_characters' => :'use-special-characters'
112
+ }
113
+ end
114
+
115
+ # Returns all the JSON keys this model knows about
116
+ def self.acceptable_attributes
117
+ attribute_map.values
118
+ end
119
+
120
+ # Attribute type mapping.
121
+ def self.openapi_types
122
+ {
123
+ :'add_tag' => :'Array<String>',
124
+ :'auto_rotate' => :'String',
125
+ :'delete_protection' => :'String',
126
+ :'description' => :'String',
127
+ :'input_rule' => :'Array<String>',
128
+ :'item_custom_fields' => :'Hash<String, String>',
129
+ :'json' => :'Boolean',
130
+ :'keep_prev_version' => :'String',
131
+ :'key' => :'String',
132
+ :'max_versions' => :'String',
133
+ :'name' => :'String',
134
+ :'new_name' => :'String',
135
+ :'output_rule' => :'Array<String>',
136
+ :'password_length' => :'String',
137
+ :'rm_tag' => :'Array<String>',
138
+ :'rotation_event_in' => :'Array<String>',
139
+ :'rotation_hour' => :'Integer',
140
+ :'rotation_interval' => :'String',
141
+ :'token' => :'String',
142
+ :'uid_token' => :'String',
143
+ :'use_capital_letters' => :'String',
144
+ :'use_lower_letters' => :'String',
145
+ :'use_numbers' => :'String',
146
+ :'use_special_characters' => :'String'
147
+ }
148
+ end
149
+
150
+ # List of attributes with nullable: true
151
+ def self.openapi_nullable
152
+ Set.new([
153
+ ])
154
+ end
155
+
156
+ # Initializes the object
157
+ # @param [Hash] attributes Model attributes in the form of hash
158
+ def initialize(attributes = {})
159
+ if (!attributes.is_a?(Hash))
160
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Akeyless::RotatedSecretUpdateHashiVault` initialize method"
161
+ end
162
+
163
+ # check to see if the attribute exists and convert string to symbol for hash key
164
+ attributes = attributes.each_with_object({}) { |(k, v), h|
165
+ if (!self.class.attribute_map.key?(k.to_sym))
166
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Akeyless::RotatedSecretUpdateHashiVault`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
167
+ end
168
+ h[k.to_sym] = v
169
+ }
170
+
171
+ if attributes.key?(:'add_tag')
172
+ if (value = attributes[:'add_tag']).is_a?(Array)
173
+ self.add_tag = value
174
+ end
175
+ end
176
+
177
+ if attributes.key?(:'auto_rotate')
178
+ self.auto_rotate = attributes[:'auto_rotate']
179
+ end
180
+
181
+ if attributes.key?(:'delete_protection')
182
+ self.delete_protection = attributes[:'delete_protection']
183
+ end
184
+
185
+ if attributes.key?(:'description')
186
+ self.description = attributes[:'description']
187
+ else
188
+ self.description = 'default_metadata'
189
+ end
190
+
191
+ if attributes.key?(:'input_rule')
192
+ if (value = attributes[:'input_rule']).is_a?(Array)
193
+ self.input_rule = value
194
+ end
195
+ end
196
+
197
+ if attributes.key?(:'item_custom_fields')
198
+ if (value = attributes[:'item_custom_fields']).is_a?(Hash)
199
+ self.item_custom_fields = value
200
+ end
201
+ end
202
+
203
+ if attributes.key?(:'json')
204
+ self.json = attributes[:'json']
205
+ else
206
+ self.json = false
207
+ end
208
+
209
+ if attributes.key?(:'keep_prev_version')
210
+ self.keep_prev_version = attributes[:'keep_prev_version']
211
+ end
212
+
213
+ if attributes.key?(:'key')
214
+ self.key = attributes[:'key']
215
+ end
216
+
217
+ if attributes.key?(:'max_versions')
218
+ self.max_versions = attributes[:'max_versions']
219
+ end
220
+
221
+ if attributes.key?(:'name')
222
+ self.name = attributes[:'name']
223
+ else
224
+ self.name = nil
225
+ end
226
+
227
+ if attributes.key?(:'new_name')
228
+ self.new_name = attributes[:'new_name']
229
+ end
230
+
231
+ if attributes.key?(:'output_rule')
232
+ if (value = attributes[:'output_rule']).is_a?(Array)
233
+ self.output_rule = value
234
+ end
235
+ end
236
+
237
+ if attributes.key?(:'password_length')
238
+ self.password_length = attributes[:'password_length']
239
+ end
240
+
241
+ if attributes.key?(:'rm_tag')
242
+ if (value = attributes[:'rm_tag']).is_a?(Array)
243
+ self.rm_tag = value
244
+ end
245
+ end
246
+
247
+ if attributes.key?(:'rotation_event_in')
248
+ if (value = attributes[:'rotation_event_in']).is_a?(Array)
249
+ self.rotation_event_in = value
250
+ end
251
+ end
252
+
253
+ if attributes.key?(:'rotation_hour')
254
+ self.rotation_hour = attributes[:'rotation_hour']
255
+ end
256
+
257
+ if attributes.key?(:'rotation_interval')
258
+ self.rotation_interval = attributes[:'rotation_interval']
259
+ end
260
+
261
+ if attributes.key?(:'token')
262
+ self.token = attributes[:'token']
263
+ end
264
+
265
+ if attributes.key?(:'uid_token')
266
+ self.uid_token = attributes[:'uid_token']
267
+ end
268
+
269
+ if attributes.key?(:'use_capital_letters')
270
+ self.use_capital_letters = attributes[:'use_capital_letters']
271
+ end
272
+
273
+ if attributes.key?(:'use_lower_letters')
274
+ self.use_lower_letters = attributes[:'use_lower_letters']
275
+ end
276
+
277
+ if attributes.key?(:'use_numbers')
278
+ self.use_numbers = attributes[:'use_numbers']
279
+ end
280
+
281
+ if attributes.key?(:'use_special_characters')
282
+ self.use_special_characters = attributes[:'use_special_characters']
283
+ end
284
+ end
285
+
286
+ # Show invalid properties with the reasons. Usually used together with valid?
287
+ # @return Array for valid properties with the reasons
288
+ def list_invalid_properties
289
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
290
+ invalid_properties = Array.new
291
+ if @name.nil?
292
+ invalid_properties.push('invalid value for "name", name cannot be nil.')
293
+ end
294
+
295
+ invalid_properties
296
+ end
297
+
298
+ # Check to see if the all the properties in the model are valid
299
+ # @return true if the model is valid
300
+ def valid?
301
+ warn '[DEPRECATED] the `valid?` method is obsolete'
302
+ return false if @name.nil?
303
+ true
304
+ end
305
+
306
+ # Checks equality by comparing each attribute.
307
+ # @param [Object] Object to be compared
308
+ def ==(o)
309
+ return true if self.equal?(o)
310
+ self.class == o.class &&
311
+ add_tag == o.add_tag &&
312
+ auto_rotate == o.auto_rotate &&
313
+ delete_protection == o.delete_protection &&
314
+ description == o.description &&
315
+ input_rule == o.input_rule &&
316
+ item_custom_fields == o.item_custom_fields &&
317
+ json == o.json &&
318
+ keep_prev_version == o.keep_prev_version &&
319
+ key == o.key &&
320
+ max_versions == o.max_versions &&
321
+ name == o.name &&
322
+ new_name == o.new_name &&
323
+ output_rule == o.output_rule &&
324
+ password_length == o.password_length &&
325
+ rm_tag == o.rm_tag &&
326
+ rotation_event_in == o.rotation_event_in &&
327
+ rotation_hour == o.rotation_hour &&
328
+ rotation_interval == o.rotation_interval &&
329
+ token == o.token &&
330
+ uid_token == o.uid_token &&
331
+ use_capital_letters == o.use_capital_letters &&
332
+ use_lower_letters == o.use_lower_letters &&
333
+ use_numbers == o.use_numbers &&
334
+ use_special_characters == o.use_special_characters
335
+ end
336
+
337
+ # @see the `==` method
338
+ # @param [Object] Object to be compared
339
+ def eql?(o)
340
+ self == o
341
+ end
342
+
343
+ # Calculates hash code according to all attributes.
344
+ # @return [Integer] Hash code
345
+ def hash
346
+ [add_tag, auto_rotate, delete_protection, description, input_rule, item_custom_fields, json, keep_prev_version, key, max_versions, name, new_name, output_rule, password_length, rm_tag, rotation_event_in, rotation_hour, rotation_interval, token, uid_token, use_capital_letters, use_lower_letters, use_numbers, use_special_characters].hash
347
+ end
348
+
349
+ # Builds the object from hash
350
+ # @param [Hash] attributes Model attributes in the form of hash
351
+ # @return [Object] Returns the model itself
352
+ def self.build_from_hash(attributes)
353
+ return nil unless attributes.is_a?(Hash)
354
+ attributes = attributes.transform_keys(&:to_sym)
355
+ transformed_hash = {}
356
+ openapi_types.each_pair do |key, type|
357
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
358
+ transformed_hash["#{key}"] = nil
359
+ elsif type =~ /\AArray<(.*)>/i
360
+ # check to ensure the input is an array given that the attribute
361
+ # is documented as an array but the input is not
362
+ if attributes[attribute_map[key]].is_a?(Array)
363
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
364
+ end
365
+ elsif !attributes[attribute_map[key]].nil?
366
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
367
+ end
368
+ end
369
+ new(transformed_hash)
370
+ end
371
+
372
+ # Deserializes the data based on type
373
+ # @param string type Data type
374
+ # @param string value Value to be deserialized
375
+ # @return [Object] Deserialized data
376
+ def self._deserialize(type, value)
377
+ case type.to_sym
378
+ when :Time
379
+ Time.parse(value)
380
+ when :Date
381
+ Date.parse(value)
382
+ when :String
383
+ value.to_s
384
+ when :Integer
385
+ value.to_i
386
+ when :Float
387
+ value.to_f
388
+ when :Boolean
389
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
390
+ true
391
+ else
392
+ false
393
+ end
394
+ when :Object
395
+ # generic object (usually a Hash), return directly
396
+ value
397
+ when /\AArray<(?<inner_type>.+)>\z/
398
+ inner_type = Regexp.last_match[:inner_type]
399
+ value.map { |v| _deserialize(inner_type, v) }
400
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
401
+ k_type = Regexp.last_match[:k_type]
402
+ v_type = Regexp.last_match[:v_type]
403
+ {}.tap do |hash|
404
+ value.each do |k, v|
405
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
406
+ end
407
+ end
408
+ else # model
409
+ # models (e.g. Pet) or oneOf
410
+ klass = Akeyless.const_get(type)
411
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
412
+ end
413
+ end
414
+
415
+ # Returns the string representation of the object
416
+ # @return [String] String presentation of the object
417
+ def to_s
418
+ to_hash.to_s
419
+ end
420
+
421
+ # to_body is an alias to to_hash (backward compatibility)
422
+ # @return [Hash] Returns the object in the form of hash
423
+ def to_body
424
+ to_hash
425
+ end
426
+
427
+ # Returns the object in the form of hash
428
+ # @return [Hash] Returns the object in the form of hash
429
+ def to_hash
430
+ hash = {}
431
+ self.class.attribute_map.each_pair do |attr, param|
432
+ value = self.send(attr)
433
+ if value.nil?
434
+ is_nullable = self.class.openapi_nullable.include?(attr)
435
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
436
+ end
437
+
438
+ hash[param] = _to_hash(value)
439
+ end
440
+ hash
441
+ end
442
+
443
+ # Outputs non-array value in the form of hash
444
+ # For object, use to_hash. Otherwise, just return the value
445
+ # @param [Object] value Any valid value
446
+ # @return [Hash] Returns the value in the form of hash
447
+ def _to_hash(value)
448
+ if value.is_a?(Array)
449
+ value.compact.map { |v| _to_hash(v) }
450
+ elsif value.is_a?(Hash)
451
+ {}.tap do |hash|
452
+ value.each { |k, v| hash[k] = _to_hash(v) }
453
+ end
454
+ elsif value.respond_to? :to_hash
455
+ value.to_hash
456
+ else
457
+ value
458
+ end
459
+ end
460
+
461
+ end
462
+
463
+ end