qsafe-sdk 1.0.4

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 (313) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/README.md +134 -0
  4. data/Rakefile +10 -0
  5. data/docs/APIKeysApi.md +427 -0
  6. data/docs/ApiKey.md +40 -0
  7. data/docs/AuthResponse.md +20 -0
  8. data/docs/AuthResponseData.md +26 -0
  9. data/docs/AuthenticationApi.md +276 -0
  10. data/docs/ChangePassword200Response.md +20 -0
  11. data/docs/ChangePasswordRequest.md +20 -0
  12. data/docs/CreateApiKey201Response.md +20 -0
  13. data/docs/CreateApiKey201ResponseData.md +20 -0
  14. data/docs/CreateApiKeyRequest.md +28 -0
  15. data/docs/CryptographicOperationsApi.md +331 -0
  16. data/docs/DebugApi.md +84 -0
  17. data/docs/DebugRedisTest200Response.md +30 -0
  18. data/docs/DebugRedisTest200ResponseRateLimitTest.md +22 -0
  19. data/docs/DebugRedisTest200ResponseServicesStatus.md +24 -0
  20. data/docs/DebugRedisTest500Response.md +20 -0
  21. data/docs/DecryptData200Response.md +20 -0
  22. data/docs/DecryptData200ResponseData.md +24 -0
  23. data/docs/DecryptRequest.md +28 -0
  24. data/docs/DecryptRequestEphemeralCrypto.md +24 -0
  25. data/docs/EncryptData200Response.md +20 -0
  26. data/docs/EncryptData200ResponseData.md +28 -0
  27. data/docs/EncryptData200ResponseDataEphemeralStorage.md +22 -0
  28. data/docs/EncryptRequest.md +26 -0
  29. data/docs/EncryptRequestEphemeralStorage.md +22 -0
  30. data/docs/Error.md +28 -0
  31. data/docs/GenerateKeypair201Response.md +20 -0
  32. data/docs/GenerateKeypairRequest.md +24 -0
  33. data/docs/GenerateKeypairRequestKeyPolicy.md +20 -0
  34. data/docs/GetApiKey200Response.md +20 -0
  35. data/docs/GetApiKeyUsage200Response.md +20 -0
  36. data/docs/GetApiKeyUsage200ResponseData.md +22 -0
  37. data/docs/GetApiKeyUsage200ResponseDataDailyUsageInner.md +20 -0
  38. data/docs/GetAuthInfo200Response.md +20 -0
  39. data/docs/GetAuthInfo200ResponseData.md +26 -0
  40. data/docs/GetHealth200Response.md +22 -0
  41. data/docs/GetHealth200ResponseServices.md +22 -0
  42. data/docs/GetHealth200ResponseServicesApi.md +22 -0
  43. data/docs/GetHealth200ResponseServicesEphemeralStorage.md +18 -0
  44. data/docs/GetHealth200ResponseServicesRedis.md +20 -0
  45. data/docs/GetRateLimitStatus200Response.md +20 -0
  46. data/docs/GetRateLimitStatus200ResponseData.md +22 -0
  47. data/docs/GetRateLimitStatus200ResponseDataCurrentUsage.md +22 -0
  48. data/docs/GetRateLimitStatus200ResponseDataLimits.md +22 -0
  49. data/docs/GetRateLimitStatus200ResponseDataResetTimes.md +22 -0
  50. data/docs/HealthApi.md +69 -0
  51. data/docs/Keypair.md +40 -0
  52. data/docs/KeypairsApi.md +341 -0
  53. data/docs/ListApiKeys200Response.md +20 -0
  54. data/docs/ListApiKeys200ResponseData.md +22 -0
  55. data/docs/ListApiKeys200ResponseDataPagination.md +22 -0
  56. data/docs/ListKeypairs200Response.md +20 -0
  57. data/docs/ListKeypairs200ResponseData.md +22 -0
  58. data/docs/ListKeypairs200ResponseDataPagination.md +22 -0
  59. data/docs/LoginRequest.md +20 -0
  60. data/docs/RegisterRequest.md +24 -0
  61. data/docs/RevokeKeypair200Response.md +22 -0
  62. data/docs/RevokeKeypairRequest.md +22 -0
  63. data/docs/RotateApiKey200Response.md +20 -0
  64. data/docs/RotateApiKey200ResponseData.md +20 -0
  65. data/docs/SignData200Response.md +20 -0
  66. data/docs/SignData200ResponseData.md +30 -0
  67. data/docs/SignData200ResponseDataEphemeralStorage.md +22 -0
  68. data/docs/SignRequest.md +26 -0
  69. data/docs/SignRequestEphemeralStorage.md +20 -0
  70. data/docs/UpdateApiKeyRequest.md +28 -0
  71. data/docs/UpdateKeypair200Response.md +20 -0
  72. data/docs/UpdateKeypairRequest.md +24 -0
  73. data/docs/User.md +32 -0
  74. data/docs/UtilitiesApi.md +81 -0
  75. data/docs/VerifyRequest.md +26 -0
  76. data/docs/VerifySignature200Response.md +20 -0
  77. data/docs/VerifySignature200ResponseData.md +22 -0
  78. data/docs/VerifySignature200ResponseDataSignatureInfo.md +20 -0
  79. data/docs/VerifySignature200ResponseDataVerificationResult.md +22 -0
  80. data/git_push.sh +57 -0
  81. data/lib/qsafe/api/api_keys_api.rb +430 -0
  82. data/lib/qsafe/api/authentication_api.rb +275 -0
  83. data/lib/qsafe/api/cryptographic_operations_api.rb +314 -0
  84. data/lib/qsafe/api/debug_api.rb +79 -0
  85. data/lib/qsafe/api/health_api.rb +79 -0
  86. data/lib/qsafe/api/keypairs_api.rb +345 -0
  87. data/lib/qsafe/api/utilities_api.rb +79 -0
  88. data/lib/qsafe/api_client.rb +394 -0
  89. data/lib/qsafe/api_error.rb +58 -0
  90. data/lib/qsafe/configuration.rb +327 -0
  91. data/lib/qsafe/models/api_key.rb +325 -0
  92. data/lib/qsafe/models/auth_response.rb +223 -0
  93. data/lib/qsafe/models/auth_response_data.rb +242 -0
  94. data/lib/qsafe/models/change_password200_response.rb +223 -0
  95. data/lib/qsafe/models/change_password_request.rb +256 -0
  96. data/lib/qsafe/models/create_api_key201_response.rb +233 -0
  97. data/lib/qsafe/models/create_api_key_request.rb +350 -0
  98. data/lib/qsafe/models/debug_redis_test200_response.rb +304 -0
  99. data/lib/qsafe/models/debug_redis_test200_response_rate_limit_test.rb +232 -0
  100. data/lib/qsafe/models/debug_redis_test200_response_services_status.rb +241 -0
  101. data/lib/qsafe/models/debug_redis_test500_response.rb +223 -0
  102. data/lib/qsafe/models/decrypt_data200_response.rb +223 -0
  103. data/lib/qsafe/models/decrypt_data200_response_data.rb +242 -0
  104. data/lib/qsafe/models/decrypt_request.rb +301 -0
  105. data/lib/qsafe/models/decrypt_request_ephemeral_crypto.rb +276 -0
  106. data/lib/qsafe/models/encrypt_data200_response.rb +223 -0
  107. data/lib/qsafe/models/encrypt_data200_response_data.rb +263 -0
  108. data/lib/qsafe/models/encrypt_request.rb +322 -0
  109. data/lib/qsafe/models/encrypt_request_ephemeral_storage.rb +289 -0
  110. data/lib/qsafe/models/error.rb +275 -0
  111. data/lib/qsafe/models/generate_keypair201_response.rb +233 -0
  112. data/lib/qsafe/models/generate_keypair_request.rb +297 -0
  113. data/lib/qsafe/models/generate_keypair_request_key_policy.rb +266 -0
  114. data/lib/qsafe/models/get_api_key200_response.rb +223 -0
  115. data/lib/qsafe/models/get_api_key_usage200_response.rb +223 -0
  116. data/lib/qsafe/models/get_api_key_usage200_response_data.rb +236 -0
  117. data/lib/qsafe/models/get_api_key_usage200_response_data_daily_usage_inner.rb +223 -0
  118. data/lib/qsafe/models/get_auth_info200_response.rb +223 -0
  119. data/lib/qsafe/models/get_auth_info200_response_data.rb +284 -0
  120. data/lib/qsafe/models/get_health200_response.rb +232 -0
  121. data/lib/qsafe/models/get_health200_response_services.rb +232 -0
  122. data/lib/qsafe/models/get_health200_response_services_api.rb +232 -0
  123. data/lib/qsafe/models/get_health200_response_services_ephemeral_storage.rb +214 -0
  124. data/lib/qsafe/models/get_health200_response_services_redis.rb +223 -0
  125. data/lib/qsafe/models/get_rate_limit_status200_response.rb +223 -0
  126. data/lib/qsafe/models/get_rate_limit_status200_response_data.rb +232 -0
  127. data/lib/qsafe/models/get_rate_limit_status200_response_data_current_usage.rb +232 -0
  128. data/lib/qsafe/models/get_rate_limit_status200_response_data_limits.rb +232 -0
  129. data/lib/qsafe/models/get_rate_limit_status200_response_data_reset_times.rb +232 -0
  130. data/lib/qsafe/models/keypair.rb +379 -0
  131. data/lib/qsafe/models/list_api_keys200_response.rb +223 -0
  132. data/lib/qsafe/models/list_api_keys200_response_data.rb +234 -0
  133. data/lib/qsafe/models/list_api_keys200_response_data_pagination.rb +232 -0
  134. data/lib/qsafe/models/list_keypairs200_response.rb +223 -0
  135. data/lib/qsafe/models/list_keypairs200_response_data.rb +234 -0
  136. data/lib/qsafe/models/list_keypairs200_response_data_pagination.rb +232 -0
  137. data/lib/qsafe/models/login_request.rb +237 -0
  138. data/lib/qsafe/models/register_request.rb +345 -0
  139. data/lib/qsafe/models/revoke_keypair200_response.rb +232 -0
  140. data/lib/qsafe/models/revoke_keypair_request.rb +301 -0
  141. data/lib/qsafe/models/rotate_api_key200_response.rb +232 -0
  142. data/lib/qsafe/models/sign_data200_response.rb +223 -0
  143. data/lib/qsafe/models/sign_data200_response_data.rb +262 -0
  144. data/lib/qsafe/models/sign_request.rb +321 -0
  145. data/lib/qsafe/models/sign_request_ephemeral_storage.rb +279 -0
  146. data/lib/qsafe/models/update_api_key_request.rb +343 -0
  147. data/lib/qsafe/models/update_keypair200_response.rb +223 -0
  148. data/lib/qsafe/models/update_keypair_request.rb +317 -0
  149. data/lib/qsafe/models/user.rb +293 -0
  150. data/lib/qsafe/models/verify_request.rb +389 -0
  151. data/lib/qsafe/models/verify_signature200_response.rb +223 -0
  152. data/lib/qsafe/models/verify_signature200_response_data.rb +251 -0
  153. data/lib/qsafe/version.rb +15 -0
  154. data/lib/qsafe-sdk/api/api_keys_api.rb +430 -0
  155. data/lib/qsafe-sdk/api/authentication_api.rb +275 -0
  156. data/lib/qsafe-sdk/api/cryptographic_operations_api.rb +314 -0
  157. data/lib/qsafe-sdk/api/debug_api.rb +79 -0
  158. data/lib/qsafe-sdk/api/health_api.rb +79 -0
  159. data/lib/qsafe-sdk/api/keypairs_api.rb +345 -0
  160. data/lib/qsafe-sdk/api/utilities_api.rb +79 -0
  161. data/lib/qsafe-sdk/api_client.rb +394 -0
  162. data/lib/qsafe-sdk/api_error.rb +58 -0
  163. data/lib/qsafe-sdk/configuration.rb +327 -0
  164. data/lib/qsafe-sdk/models/api_key.rb +345 -0
  165. data/lib/qsafe-sdk/models/auth_response.rb +223 -0
  166. data/lib/qsafe-sdk/models/auth_response_data.rb +252 -0
  167. data/lib/qsafe-sdk/models/change_password200_response.rb +223 -0
  168. data/lib/qsafe-sdk/models/change_password_request.rb +256 -0
  169. data/lib/qsafe-sdk/models/create_api_key201_response.rb +223 -0
  170. data/lib/qsafe-sdk/models/create_api_key201_response_data.rb +224 -0
  171. data/lib/qsafe-sdk/models/create_api_key_request.rb +350 -0
  172. data/lib/qsafe-sdk/models/debug_redis_test200_response.rb +304 -0
  173. data/lib/qsafe-sdk/models/debug_redis_test200_response_rate_limit_test.rb +232 -0
  174. data/lib/qsafe-sdk/models/debug_redis_test200_response_services_status.rb +241 -0
  175. data/lib/qsafe-sdk/models/debug_redis_test500_response.rb +223 -0
  176. data/lib/qsafe-sdk/models/decrypt_data200_response.rb +223 -0
  177. data/lib/qsafe-sdk/models/decrypt_data200_response_data.rb +242 -0
  178. data/lib/qsafe-sdk/models/decrypt_request.rb +301 -0
  179. data/lib/qsafe-sdk/models/decrypt_request_ephemeral_crypto.rb +276 -0
  180. data/lib/qsafe-sdk/models/encrypt_data200_response.rb +223 -0
  181. data/lib/qsafe-sdk/models/encrypt_data200_response_data.rb +262 -0
  182. data/lib/qsafe-sdk/models/encrypt_data200_response_data_ephemeral_storage.rb +235 -0
  183. data/lib/qsafe-sdk/models/encrypt_request.rb +322 -0
  184. data/lib/qsafe-sdk/models/encrypt_request_ephemeral_storage.rb +289 -0
  185. data/lib/qsafe-sdk/models/error.rb +275 -0
  186. data/lib/qsafe-sdk/models/generate_keypair201_response.rb +223 -0
  187. data/lib/qsafe-sdk/models/generate_keypair_request.rb +297 -0
  188. data/lib/qsafe-sdk/models/generate_keypair_request_key_policy.rb +266 -0
  189. data/lib/qsafe-sdk/models/get_api_key200_response.rb +223 -0
  190. data/lib/qsafe-sdk/models/get_api_key_usage200_response.rb +223 -0
  191. data/lib/qsafe-sdk/models/get_api_key_usage200_response_data.rb +236 -0
  192. data/lib/qsafe-sdk/models/get_api_key_usage200_response_data_daily_usage_inner.rb +223 -0
  193. data/lib/qsafe-sdk/models/get_auth_info200_response.rb +223 -0
  194. data/lib/qsafe-sdk/models/get_auth_info200_response_data.rb +284 -0
  195. data/lib/qsafe-sdk/models/get_health200_response.rb +232 -0
  196. data/lib/qsafe-sdk/models/get_health200_response_services.rb +232 -0
  197. data/lib/qsafe-sdk/models/get_health200_response_services_api.rb +232 -0
  198. data/lib/qsafe-sdk/models/get_health200_response_services_ephemeral_storage.rb +214 -0
  199. data/lib/qsafe-sdk/models/get_health200_response_services_redis.rb +223 -0
  200. data/lib/qsafe-sdk/models/get_rate_limit_status200_response.rb +223 -0
  201. data/lib/qsafe-sdk/models/get_rate_limit_status200_response_data.rb +232 -0
  202. data/lib/qsafe-sdk/models/get_rate_limit_status200_response_data_current_usage.rb +232 -0
  203. data/lib/qsafe-sdk/models/get_rate_limit_status200_response_data_limits.rb +232 -0
  204. data/lib/qsafe-sdk/models/get_rate_limit_status200_response_data_reset_times.rb +232 -0
  205. data/lib/qsafe-sdk/models/keypair.rb +379 -0
  206. data/lib/qsafe-sdk/models/list_api_keys200_response.rb +223 -0
  207. data/lib/qsafe-sdk/models/list_api_keys200_response_data.rb +234 -0
  208. data/lib/qsafe-sdk/models/list_api_keys200_response_data_pagination.rb +232 -0
  209. data/lib/qsafe-sdk/models/list_keypairs200_response.rb +223 -0
  210. data/lib/qsafe-sdk/models/list_keypairs200_response_data.rb +234 -0
  211. data/lib/qsafe-sdk/models/list_keypairs200_response_data_pagination.rb +232 -0
  212. data/lib/qsafe-sdk/models/login_request.rb +237 -0
  213. data/lib/qsafe-sdk/models/register_request.rb +345 -0
  214. data/lib/qsafe-sdk/models/revoke_keypair200_response.rb +232 -0
  215. data/lib/qsafe-sdk/models/revoke_keypair_request.rb +301 -0
  216. data/lib/qsafe-sdk/models/rotate_api_key200_response.rb +223 -0
  217. data/lib/qsafe-sdk/models/rotate_api_key200_response_data.rb +224 -0
  218. data/lib/qsafe-sdk/models/sign_data200_response.rb +223 -0
  219. data/lib/qsafe-sdk/models/sign_data200_response_data.rb +270 -0
  220. data/lib/qsafe-sdk/models/sign_data200_response_data_ephemeral_storage.rb +234 -0
  221. data/lib/qsafe-sdk/models/sign_request.rb +321 -0
  222. data/lib/qsafe-sdk/models/sign_request_ephemeral_storage.rb +279 -0
  223. data/lib/qsafe-sdk/models/update_api_key_request.rb +343 -0
  224. data/lib/qsafe-sdk/models/update_keypair200_response.rb +223 -0
  225. data/lib/qsafe-sdk/models/update_keypair_request.rb +317 -0
  226. data/lib/qsafe-sdk/models/user.rb +312 -0
  227. data/lib/qsafe-sdk/models/verify_request.rb +389 -0
  228. data/lib/qsafe-sdk/models/verify_signature200_response.rb +223 -0
  229. data/lib/qsafe-sdk/models/verify_signature200_response_data.rb +232 -0
  230. data/lib/qsafe-sdk/models/verify_signature200_response_data_signature_info.rb +223 -0
  231. data/lib/qsafe-sdk/models/verify_signature200_response_data_verification_result.rb +233 -0
  232. data/lib/qsafe-sdk/version.rb +15 -0
  233. data/lib/qsafe-sdk.rb +114 -0
  234. data/lib/qsafe.rb +108 -0
  235. data/qsafe-sdk.gemspec +39 -0
  236. data/qsafe.gemspec +39 -0
  237. data/spec/api/api_keys_api_spec.rb +105 -0
  238. data/spec/api/authentication_api_spec.rb +78 -0
  239. data/spec/api/cryptographic_operations_api_spec.rb +85 -0
  240. data/spec/api/debug_api_spec.rb +46 -0
  241. data/spec/api/health_api_spec.rb +46 -0
  242. data/spec/api/keypairs_api_spec.rb +89 -0
  243. data/spec/api/utilities_api_spec.rb +46 -0
  244. data/spec/models/api_key_spec.rb +94 -0
  245. data/spec/models/auth_response_data_spec.rb +54 -0
  246. data/spec/models/auth_response_spec.rb +42 -0
  247. data/spec/models/change_password200_response_spec.rb +42 -0
  248. data/spec/models/change_password_request_spec.rb +42 -0
  249. data/spec/models/create_api_key201_response_data_spec.rb +42 -0
  250. data/spec/models/create_api_key201_response_spec.rb +48 -0
  251. data/spec/models/create_api_key_request_spec.rb +70 -0
  252. data/spec/models/debug_redis_test200_response_rate_limit_test_spec.rb +48 -0
  253. data/spec/models/debug_redis_test200_response_services_status_spec.rb +54 -0
  254. data/spec/models/debug_redis_test200_response_spec.rb +76 -0
  255. data/spec/models/debug_redis_test500_response_spec.rb +42 -0
  256. data/spec/models/decrypt_data200_response_data_spec.rb +54 -0
  257. data/spec/models/decrypt_data200_response_spec.rb +42 -0
  258. data/spec/models/decrypt_request_ephemeral_crypto_spec.rb +54 -0
  259. data/spec/models/decrypt_request_spec.rb +66 -0
  260. data/spec/models/encrypt_data200_response_data_ephemeral_storage_spec.rb +48 -0
  261. data/spec/models/encrypt_data200_response_data_spec.rb +66 -0
  262. data/spec/models/encrypt_data200_response_spec.rb +42 -0
  263. data/spec/models/encrypt_request_ephemeral_storage_spec.rb +48 -0
  264. data/spec/models/encrypt_request_spec.rb +64 -0
  265. data/spec/models/error_spec.rb +66 -0
  266. data/spec/models/generate_keypair201_response_spec.rb +48 -0
  267. data/spec/models/generate_keypair_request_key_policy_spec.rb +46 -0
  268. data/spec/models/generate_keypair_request_spec.rb +62 -0
  269. data/spec/models/get_api_key200_response_spec.rb +42 -0
  270. data/spec/models/get_api_key_usage200_response_data_daily_usage_inner_spec.rb +42 -0
  271. data/spec/models/get_api_key_usage200_response_data_spec.rb +48 -0
  272. data/spec/models/get_api_key_usage200_response_spec.rb +42 -0
  273. data/spec/models/get_auth_info200_response_data_spec.rb +64 -0
  274. data/spec/models/get_auth_info200_response_spec.rb +42 -0
  275. data/spec/models/get_health200_response_services_api_spec.rb +48 -0
  276. data/spec/models/get_health200_response_services_ephemeral_storage_spec.rb +36 -0
  277. data/spec/models/get_health200_response_services_redis_spec.rb +42 -0
  278. data/spec/models/get_health200_response_services_spec.rb +48 -0
  279. data/spec/models/get_health200_response_spec.rb +48 -0
  280. data/spec/models/get_rate_limit_status200_response_data_current_usage_spec.rb +48 -0
  281. data/spec/models/get_rate_limit_status200_response_data_limits_spec.rb +48 -0
  282. data/spec/models/get_rate_limit_status200_response_data_reset_times_spec.rb +48 -0
  283. data/spec/models/get_rate_limit_status200_response_data_spec.rb +48 -0
  284. data/spec/models/get_rate_limit_status200_response_spec.rb +42 -0
  285. data/spec/models/keypair_spec.rb +114 -0
  286. data/spec/models/list_api_keys200_response_data_pagination_spec.rb +48 -0
  287. data/spec/models/list_api_keys200_response_data_spec.rb +48 -0
  288. data/spec/models/list_api_keys200_response_spec.rb +42 -0
  289. data/spec/models/list_keypairs200_response_data_pagination_spec.rb +48 -0
  290. data/spec/models/list_keypairs200_response_data_spec.rb +48 -0
  291. data/spec/models/list_keypairs200_response_spec.rb +42 -0
  292. data/spec/models/login_request_spec.rb +42 -0
  293. data/spec/models/register_request_spec.rb +54 -0
  294. data/spec/models/revoke_keypair200_response_spec.rb +48 -0
  295. data/spec/models/revoke_keypair_request_spec.rb +52 -0
  296. data/spec/models/rotate_api_key200_response_data_spec.rb +42 -0
  297. data/spec/models/rotate_api_key200_response_spec.rb +48 -0
  298. data/spec/models/sign_data200_response_data_ephemeral_storage_spec.rb +48 -0
  299. data/spec/models/sign_data200_response_data_spec.rb +66 -0
  300. data/spec/models/sign_data200_response_spec.rb +42 -0
  301. data/spec/models/sign_request_ephemeral_storage_spec.rb +42 -0
  302. data/spec/models/sign_request_spec.rb +64 -0
  303. data/spec/models/update_api_key_request_spec.rb +70 -0
  304. data/spec/models/update_keypair200_response_spec.rb +42 -0
  305. data/spec/models/update_keypair_request_spec.rb +58 -0
  306. data/spec/models/user_spec.rb +70 -0
  307. data/spec/models/verify_request_spec.rb +64 -0
  308. data/spec/models/verify_signature200_response_data_signature_info_spec.rb +42 -0
  309. data/spec/models/verify_signature200_response_data_spec.rb +60 -0
  310. data/spec/models/verify_signature200_response_data_verification_result_spec.rb +48 -0
  311. data/spec/models/verify_signature200_response_spec.rb +42 -0
  312. data/spec/spec_helper.rb +111 -0
  313. metadata +477 -0
@@ -0,0 +1,301 @@
1
+ =begin
2
+ #QSafe PQC API
3
+
4
+ #Post-quantum cryptography SaaS API supporting ML-KEM (Kyber) and ML-DSA (Dilithium) algorithms. Provides keypair management and cryptographic operations (encrypt, decrypt, sign, verify). ## Authentication - **JWT Bearer Token** — user-based auth, obtained from `/auth/login` or `/auth/register` - **API Key (header)** — programmatic access via `X-API-Key` header - **API Key (query)** — programmatic access via `?api_key=` query parameter ## Quick Start 1. Register → `POST /auth/register` 2. Login → `POST /auth/login` → copy `data.token` 3. Generate keypair → `POST /generate-keypair` 4. Encrypt / Sign with the keypair ID
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: rushikesh.n.kakadiya@gmail.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.9.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module QSafe
17
+ # Provide exactly ONE of: 1. `ephemeral_id` — ID returned by a previous encrypt call with ephemeral_storage 2. `ephemeral_crypto` object (ciphertext + encapsulated_key) 3. Direct `ciphertext` + `encapsulated_key` fields
18
+ class DecryptRequest
19
+ attr_accessor :ephemeral_id
20
+
21
+ attr_accessor :ephemeral_crypto
22
+
23
+ attr_accessor :ciphertext
24
+
25
+ attr_accessor :encapsulated_key
26
+
27
+ attr_accessor :force_decrypt
28
+
29
+ attr_accessor :metadata
30
+
31
+ # Attribute mapping from ruby-style variable name to JSON key.
32
+ def self.attribute_map
33
+ {
34
+ :'ephemeral_id' => :'ephemeral_id',
35
+ :'ephemeral_crypto' => :'ephemeral_crypto',
36
+ :'ciphertext' => :'ciphertext',
37
+ :'encapsulated_key' => :'encapsulated_key',
38
+ :'force_decrypt' => :'force_decrypt',
39
+ :'metadata' => :'metadata'
40
+ }
41
+ end
42
+
43
+ # Returns all the JSON keys this model knows about
44
+ def self.acceptable_attributes
45
+ attribute_map.values
46
+ end
47
+
48
+ # Attribute type mapping.
49
+ def self.openapi_types
50
+ {
51
+ :'ephemeral_id' => :'String',
52
+ :'ephemeral_crypto' => :'DecryptRequestEphemeralCrypto',
53
+ :'ciphertext' => :'String',
54
+ :'encapsulated_key' => :'String',
55
+ :'force_decrypt' => :'Boolean',
56
+ :'metadata' => :'Hash<String, Object>'
57
+ }
58
+ end
59
+
60
+ # List of attributes with nullable: true
61
+ def self.openapi_nullable
62
+ Set.new([
63
+ ])
64
+ end
65
+
66
+ # Initializes the object
67
+ # @param [Hash] attributes Model attributes in the form of hash
68
+ def initialize(attributes = {})
69
+ if (!attributes.is_a?(Hash))
70
+ fail ArgumentError, "The input argument (attributes) must be a hash in `QSafe::DecryptRequest` initialize method"
71
+ end
72
+
73
+ # check to see if the attribute exists and convert string to symbol for hash key
74
+ attributes = attributes.each_with_object({}) { |(k, v), h|
75
+ if (!self.class.attribute_map.key?(k.to_sym))
76
+ fail ArgumentError, "`#{k}` is not a valid attribute in `QSafe::DecryptRequest`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
77
+ end
78
+ h[k.to_sym] = v
79
+ }
80
+
81
+ if attributes.key?(:'ephemeral_id')
82
+ self.ephemeral_id = attributes[:'ephemeral_id']
83
+ end
84
+
85
+ if attributes.key?(:'ephemeral_crypto')
86
+ self.ephemeral_crypto = attributes[:'ephemeral_crypto']
87
+ end
88
+
89
+ if attributes.key?(:'ciphertext')
90
+ self.ciphertext = attributes[:'ciphertext']
91
+ end
92
+
93
+ if attributes.key?(:'encapsulated_key')
94
+ self.encapsulated_key = attributes[:'encapsulated_key']
95
+ end
96
+
97
+ if attributes.key?(:'force_decrypt')
98
+ self.force_decrypt = attributes[:'force_decrypt']
99
+ end
100
+
101
+ if attributes.key?(:'metadata')
102
+ if (value = attributes[:'metadata']).is_a?(Hash)
103
+ self.metadata = value
104
+ end
105
+ end
106
+ end
107
+
108
+ # Show invalid properties with the reasons. Usually used together with valid?
109
+ # @return Array for valid properties with the reasons
110
+ def list_invalid_properties
111
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
112
+ invalid_properties = Array.new
113
+ if !@ephemeral_id.nil? && @ephemeral_id.to_s.length > 90
114
+ invalid_properties.push('invalid value for "ephemeral_id", the character length must be smaller than or equal to 90.')
115
+ end
116
+
117
+ if !@ephemeral_id.nil? && @ephemeral_id.to_s.length < 80
118
+ invalid_properties.push('invalid value for "ephemeral_id", the character length must be great than or equal to 80.')
119
+ end
120
+
121
+ pattern = Regexp.new(/^[A-Za-z0-9_-]+$/)
122
+ if !@ephemeral_id.nil? && @ephemeral_id !~ pattern
123
+ invalid_properties.push("invalid value for \"ephemeral_id\", must conform to the pattern #{pattern}.")
124
+ end
125
+
126
+ invalid_properties
127
+ end
128
+
129
+ # Check to see if the all the properties in the model are valid
130
+ # @return true if the model is valid
131
+ def valid?
132
+ warn '[DEPRECATED] the `valid?` method is obsolete'
133
+ return false if !@ephemeral_id.nil? && @ephemeral_id.to_s.length > 90
134
+ return false if !@ephemeral_id.nil? && @ephemeral_id.to_s.length < 80
135
+ return false if !@ephemeral_id.nil? && @ephemeral_id !~ Regexp.new(/^[A-Za-z0-9_-]+$/)
136
+ true
137
+ end
138
+
139
+ # Custom attribute writer method with validation
140
+ # @param [Object] ephemeral_id Value to be assigned
141
+ def ephemeral_id=(ephemeral_id)
142
+ if ephemeral_id.nil?
143
+ fail ArgumentError, 'ephemeral_id cannot be nil'
144
+ end
145
+
146
+ if ephemeral_id.to_s.length > 90
147
+ fail ArgumentError, 'invalid value for "ephemeral_id", the character length must be smaller than or equal to 90.'
148
+ end
149
+
150
+ if ephemeral_id.to_s.length < 80
151
+ fail ArgumentError, 'invalid value for "ephemeral_id", the character length must be great than or equal to 80.'
152
+ end
153
+
154
+ pattern = Regexp.new(/^[A-Za-z0-9_-]+$/)
155
+ if ephemeral_id !~ pattern
156
+ fail ArgumentError, "invalid value for \"ephemeral_id\", must conform to the pattern #{pattern}."
157
+ end
158
+
159
+ @ephemeral_id = ephemeral_id
160
+ end
161
+
162
+ # Checks equality by comparing each attribute.
163
+ # @param [Object] Object to be compared
164
+ def ==(o)
165
+ return true if self.equal?(o)
166
+ self.class == o.class &&
167
+ ephemeral_id == o.ephemeral_id &&
168
+ ephemeral_crypto == o.ephemeral_crypto &&
169
+ ciphertext == o.ciphertext &&
170
+ encapsulated_key == o.encapsulated_key &&
171
+ force_decrypt == o.force_decrypt &&
172
+ metadata == o.metadata
173
+ end
174
+
175
+ # @see the `==` method
176
+ # @param [Object] Object to be compared
177
+ def eql?(o)
178
+ self == o
179
+ end
180
+
181
+ # Calculates hash code according to all attributes.
182
+ # @return [Integer] Hash code
183
+ def hash
184
+ [ephemeral_id, ephemeral_crypto, ciphertext, encapsulated_key, force_decrypt, metadata].hash
185
+ end
186
+
187
+ # Builds the object from hash
188
+ # @param [Hash] attributes Model attributes in the form of hash
189
+ # @return [Object] Returns the model itself
190
+ def self.build_from_hash(attributes)
191
+ return nil unless attributes.is_a?(Hash)
192
+ attributes = attributes.transform_keys(&:to_sym)
193
+ transformed_hash = {}
194
+ openapi_types.each_pair do |key, type|
195
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
196
+ transformed_hash["#{key}"] = nil
197
+ elsif type =~ /\AArray<(.*)>/i
198
+ # check to ensure the input is an array given that the attribute
199
+ # is documented as an array but the input is not
200
+ if attributes[attribute_map[key]].is_a?(Array)
201
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
202
+ end
203
+ elsif !attributes[attribute_map[key]].nil?
204
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
205
+ end
206
+ end
207
+ new(transformed_hash)
208
+ end
209
+
210
+ # Deserializes the data based on type
211
+ # @param string type Data type
212
+ # @param string value Value to be deserialized
213
+ # @return [Object] Deserialized data
214
+ def self._deserialize(type, value)
215
+ case type.to_sym
216
+ when :Time
217
+ Time.parse(value)
218
+ when :Date
219
+ Date.parse(value)
220
+ when :String
221
+ value.to_s
222
+ when :Integer
223
+ value.to_i
224
+ when :Float
225
+ value.to_f
226
+ when :Boolean
227
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
228
+ true
229
+ else
230
+ false
231
+ end
232
+ when :Object
233
+ # generic object (usually a Hash), return directly
234
+ value
235
+ when /\AArray<(?<inner_type>.+)>\z/
236
+ inner_type = Regexp.last_match[:inner_type]
237
+ value.map { |v| _deserialize(inner_type, v) }
238
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
239
+ k_type = Regexp.last_match[:k_type]
240
+ v_type = Regexp.last_match[:v_type]
241
+ {}.tap do |hash|
242
+ value.each do |k, v|
243
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
244
+ end
245
+ end
246
+ else # model
247
+ # models (e.g. Pet) or oneOf
248
+ klass = QSafe.const_get(type)
249
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
250
+ end
251
+ end
252
+
253
+ # Returns the string representation of the object
254
+ # @return [String] String presentation of the object
255
+ def to_s
256
+ to_hash.to_s
257
+ end
258
+
259
+ # to_body is an alias to to_hash (backward compatibility)
260
+ # @return [Hash] Returns the object in the form of hash
261
+ def to_body
262
+ to_hash
263
+ end
264
+
265
+ # Returns the object in the form of hash
266
+ # @return [Hash] Returns the object in the form of hash
267
+ def to_hash
268
+ hash = {}
269
+ self.class.attribute_map.each_pair do |attr, param|
270
+ value = self.send(attr)
271
+ if value.nil?
272
+ is_nullable = self.class.openapi_nullable.include?(attr)
273
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
274
+ end
275
+
276
+ hash[param] = _to_hash(value)
277
+ end
278
+ hash
279
+ end
280
+
281
+ # Outputs non-array value in the form of hash
282
+ # For object, use to_hash. Otherwise, just return the value
283
+ # @param [Object] value Any valid value
284
+ # @return [Hash] Returns the value in the form of hash
285
+ def _to_hash(value)
286
+ if value.is_a?(Array)
287
+ value.compact.map { |v| _to_hash(v) }
288
+ elsif value.is_a?(Hash)
289
+ {}.tap do |hash|
290
+ value.each { |k, v| hash[k] = _to_hash(v) }
291
+ end
292
+ elsif value.respond_to? :to_hash
293
+ value.to_hash
294
+ else
295
+ value
296
+ end
297
+ end
298
+
299
+ end
300
+
301
+ end
@@ -0,0 +1,276 @@
1
+ =begin
2
+ #QSafe PQC API
3
+
4
+ #Post-quantum cryptography SaaS API supporting ML-KEM (Kyber) and ML-DSA (Dilithium) algorithms. Provides keypair management and cryptographic operations (encrypt, decrypt, sign, verify). ## Authentication - **JWT Bearer Token** — user-based auth, obtained from `/auth/login` or `/auth/register` - **API Key (header)** — programmatic access via `X-API-Key` header - **API Key (query)** — programmatic access via `?api_key=` query parameter ## Quick Start 1. Register → `POST /auth/register` 2. Login → `POST /auth/login` → copy `data.token` 3. Generate keypair → `POST /generate-keypair` 4. Encrypt / Sign with the keypair ID
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: rushikesh.n.kakadiya@gmail.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.9.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module QSafe
17
+ class DecryptRequestEphemeralCrypto
18
+ attr_accessor :ciphertext
19
+
20
+ attr_accessor :encapsulated_key
21
+
22
+ attr_accessor :integrity_hash
23
+
24
+ attr_accessor :expires_at
25
+
26
+ # Attribute mapping from ruby-style variable name to JSON key.
27
+ def self.attribute_map
28
+ {
29
+ :'ciphertext' => :'ciphertext',
30
+ :'encapsulated_key' => :'encapsulated_key',
31
+ :'integrity_hash' => :'integrity_hash',
32
+ :'expires_at' => :'expires_at'
33
+ }
34
+ end
35
+
36
+ # Returns all the JSON keys this model knows about
37
+ def self.acceptable_attributes
38
+ attribute_map.values
39
+ end
40
+
41
+ # Attribute type mapping.
42
+ def self.openapi_types
43
+ {
44
+ :'ciphertext' => :'String',
45
+ :'encapsulated_key' => :'String',
46
+ :'integrity_hash' => :'String',
47
+ :'expires_at' => :'Time'
48
+ }
49
+ end
50
+
51
+ # List of attributes with nullable: true
52
+ def self.openapi_nullable
53
+ Set.new([
54
+ ])
55
+ end
56
+
57
+ # Initializes the object
58
+ # @param [Hash] attributes Model attributes in the form of hash
59
+ def initialize(attributes = {})
60
+ if (!attributes.is_a?(Hash))
61
+ fail ArgumentError, "The input argument (attributes) must be a hash in `QSafe::DecryptRequestEphemeralCrypto` initialize method"
62
+ end
63
+
64
+ # check to see if the attribute exists and convert string to symbol for hash key
65
+ attributes = attributes.each_with_object({}) { |(k, v), h|
66
+ if (!self.class.attribute_map.key?(k.to_sym))
67
+ fail ArgumentError, "`#{k}` is not a valid attribute in `QSafe::DecryptRequestEphemeralCrypto`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
68
+ end
69
+ h[k.to_sym] = v
70
+ }
71
+
72
+ if attributes.key?(:'ciphertext')
73
+ self.ciphertext = attributes[:'ciphertext']
74
+ else
75
+ self.ciphertext = nil
76
+ end
77
+
78
+ if attributes.key?(:'encapsulated_key')
79
+ self.encapsulated_key = attributes[:'encapsulated_key']
80
+ else
81
+ self.encapsulated_key = nil
82
+ end
83
+
84
+ if attributes.key?(:'integrity_hash')
85
+ self.integrity_hash = attributes[:'integrity_hash']
86
+ end
87
+
88
+ if attributes.key?(:'expires_at')
89
+ self.expires_at = attributes[:'expires_at']
90
+ end
91
+ end
92
+
93
+ # Show invalid properties with the reasons. Usually used together with valid?
94
+ # @return Array for valid properties with the reasons
95
+ def list_invalid_properties
96
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
97
+ invalid_properties = Array.new
98
+ if @ciphertext.nil?
99
+ invalid_properties.push('invalid value for "ciphertext", ciphertext cannot be nil.')
100
+ end
101
+
102
+ if @encapsulated_key.nil?
103
+ invalid_properties.push('invalid value for "encapsulated_key", encapsulated_key cannot be nil.')
104
+ end
105
+
106
+ pattern = Regexp.new(/^[a-f0-9]{64}$/)
107
+ if !@integrity_hash.nil? && @integrity_hash !~ pattern
108
+ invalid_properties.push("invalid value for \"integrity_hash\", must conform to the pattern #{pattern}.")
109
+ end
110
+
111
+ invalid_properties
112
+ end
113
+
114
+ # Check to see if the all the properties in the model are valid
115
+ # @return true if the model is valid
116
+ def valid?
117
+ warn '[DEPRECATED] the `valid?` method is obsolete'
118
+ return false if @ciphertext.nil?
119
+ return false if @encapsulated_key.nil?
120
+ return false if !@integrity_hash.nil? && @integrity_hash !~ Regexp.new(/^[a-f0-9]{64}$/)
121
+ true
122
+ end
123
+
124
+ # Custom attribute writer method with validation
125
+ # @param [Object] integrity_hash Value to be assigned
126
+ def integrity_hash=(integrity_hash)
127
+ if integrity_hash.nil?
128
+ fail ArgumentError, 'integrity_hash cannot be nil'
129
+ end
130
+
131
+ pattern = Regexp.new(/^[a-f0-9]{64}$/)
132
+ if integrity_hash !~ pattern
133
+ fail ArgumentError, "invalid value for \"integrity_hash\", must conform to the pattern #{pattern}."
134
+ end
135
+
136
+ @integrity_hash = integrity_hash
137
+ end
138
+
139
+ # Checks equality by comparing each attribute.
140
+ # @param [Object] Object to be compared
141
+ def ==(o)
142
+ return true if self.equal?(o)
143
+ self.class == o.class &&
144
+ ciphertext == o.ciphertext &&
145
+ encapsulated_key == o.encapsulated_key &&
146
+ integrity_hash == o.integrity_hash &&
147
+ expires_at == o.expires_at
148
+ end
149
+
150
+ # @see the `==` method
151
+ # @param [Object] Object to be compared
152
+ def eql?(o)
153
+ self == o
154
+ end
155
+
156
+ # Calculates hash code according to all attributes.
157
+ # @return [Integer] Hash code
158
+ def hash
159
+ [ciphertext, encapsulated_key, integrity_hash, expires_at].hash
160
+ end
161
+
162
+ # Builds the object from hash
163
+ # @param [Hash] attributes Model attributes in the form of hash
164
+ # @return [Object] Returns the model itself
165
+ def self.build_from_hash(attributes)
166
+ return nil unless attributes.is_a?(Hash)
167
+ attributes = attributes.transform_keys(&:to_sym)
168
+ transformed_hash = {}
169
+ openapi_types.each_pair do |key, type|
170
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
171
+ transformed_hash["#{key}"] = nil
172
+ elsif type =~ /\AArray<(.*)>/i
173
+ # check to ensure the input is an array given that the attribute
174
+ # is documented as an array but the input is not
175
+ if attributes[attribute_map[key]].is_a?(Array)
176
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
177
+ end
178
+ elsif !attributes[attribute_map[key]].nil?
179
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
180
+ end
181
+ end
182
+ new(transformed_hash)
183
+ end
184
+
185
+ # Deserializes the data based on type
186
+ # @param string type Data type
187
+ # @param string value Value to be deserialized
188
+ # @return [Object] Deserialized data
189
+ def self._deserialize(type, value)
190
+ case type.to_sym
191
+ when :Time
192
+ Time.parse(value)
193
+ when :Date
194
+ Date.parse(value)
195
+ when :String
196
+ value.to_s
197
+ when :Integer
198
+ value.to_i
199
+ when :Float
200
+ value.to_f
201
+ when :Boolean
202
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
203
+ true
204
+ else
205
+ false
206
+ end
207
+ when :Object
208
+ # generic object (usually a Hash), return directly
209
+ value
210
+ when /\AArray<(?<inner_type>.+)>\z/
211
+ inner_type = Regexp.last_match[:inner_type]
212
+ value.map { |v| _deserialize(inner_type, v) }
213
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
214
+ k_type = Regexp.last_match[:k_type]
215
+ v_type = Regexp.last_match[:v_type]
216
+ {}.tap do |hash|
217
+ value.each do |k, v|
218
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
219
+ end
220
+ end
221
+ else # model
222
+ # models (e.g. Pet) or oneOf
223
+ klass = QSafe.const_get(type)
224
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
225
+ end
226
+ end
227
+
228
+ # Returns the string representation of the object
229
+ # @return [String] String presentation of the object
230
+ def to_s
231
+ to_hash.to_s
232
+ end
233
+
234
+ # to_body is an alias to to_hash (backward compatibility)
235
+ # @return [Hash] Returns the object in the form of hash
236
+ def to_body
237
+ to_hash
238
+ end
239
+
240
+ # Returns the object in the form of hash
241
+ # @return [Hash] Returns the object in the form of hash
242
+ def to_hash
243
+ hash = {}
244
+ self.class.attribute_map.each_pair do |attr, param|
245
+ value = self.send(attr)
246
+ if value.nil?
247
+ is_nullable = self.class.openapi_nullable.include?(attr)
248
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
249
+ end
250
+
251
+ hash[param] = _to_hash(value)
252
+ end
253
+ hash
254
+ end
255
+
256
+ # Outputs non-array value in the form of hash
257
+ # For object, use to_hash. Otherwise, just return the value
258
+ # @param [Object] value Any valid value
259
+ # @return [Hash] Returns the value in the form of hash
260
+ def _to_hash(value)
261
+ if value.is_a?(Array)
262
+ value.compact.map { |v| _to_hash(v) }
263
+ elsif value.is_a?(Hash)
264
+ {}.tap do |hash|
265
+ value.each { |k, v| hash[k] = _to_hash(v) }
266
+ end
267
+ elsif value.respond_to? :to_hash
268
+ value.to_hash
269
+ else
270
+ value
271
+ end
272
+ end
273
+
274
+ end
275
+
276
+ end