factpulse 4.0.2 → 4.1.2

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 (434) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -4
  3. data/Gemfile.lock +3 -3
  4. data/README.md +12 -0
  5. data/docs/AFNORErrorDetail.md +26 -0
  6. data/docs/AFNORPDPPAApi.md +9 -2
  7. data/docs/AsyncTasksApi.md +231 -1
  8. data/docs/ChorusProApi.md +96 -16
  9. data/docs/ClientManagementApi.md +371 -25
  10. data/docs/ConversionErrorResult.md +30 -0
  11. data/docs/ConversionExtractionInfo.md +20 -0
  12. data/docs/ConversionPendingInputResult.md +30 -0
  13. data/docs/ConversionSuccessTaskResult.md +36 -0
  14. data/docs/ConversionTaskStatus.md +22 -0
  15. data/docs/ConversionTaskStatusResult.md +85 -0
  16. data/docs/ConversionValidationFailedResult.md +34 -0
  17. data/docs/ConvertResumeRequest.md +5 -1
  18. data/docs/DownloadsApi.md +16 -6
  19. data/docs/ElectronicSignatureApi.md +24 -4
  20. data/docs/FacturXConversionApi.md +176 -4
  21. data/docs/FacturXInvoice.md +1 -1
  22. data/docs/FacturXPDFXMLVerificationApi.md +93 -3
  23. data/docs/FacturXValidationApi.md +12 -78
  24. data/docs/FactureElectroniqueModelsInvoiceTypeCode.md +15 -0
  25. data/docs/FactureElectroniqueRestApiSchemasValidationValidationErrorResponse.md +18 -0
  26. data/docs/Flux10EReportingApi.md +36 -6
  27. data/docs/Flux6InvoiceLifecycleCDARApi.md +100 -3
  28. data/docs/GenerationSuccessResult.md +24 -0
  29. data/docs/GenerationTaskStatus.md +22 -0
  30. data/docs/GenerationTaskStatusResult.md +79 -0
  31. data/docs/HealthApi.md +6 -125
  32. data/docs/{FacturXGenerationApi.md → InvoiceGenerationApi.md} +39 -24
  33. data/docs/InvoiceInput.md +1 -1
  34. data/docs/InvoiceLifecycle.md +24 -0
  35. data/docs/InvoicingFramework.md +1 -1
  36. data/docs/KeyRotationRequest.md +20 -0
  37. data/docs/KeyRotationResponse.md +24 -0
  38. data/docs/LifecycleEvent.md +38 -0
  39. data/docs/LifecycleResponse.md +22 -0
  40. data/docs/PDPConfigResponse.md +2 -0
  41. data/docs/PDPConfigUpdateRequest.md +3 -1
  42. data/docs/ParseApi.md +161 -0
  43. data/docs/ParseFacturXResponse.md +26 -0
  44. data/docs/ReferencesApi.md +74 -0
  45. data/docs/SecretStatus.md +5 -1
  46. data/docs/SignatureSuccessResult.md +34 -0
  47. data/docs/SignatureTaskStatus.md +22 -0
  48. data/docs/SignatureTaskStatusResult.md +79 -0
  49. data/docs/SimplifiedInvoiceData.md +1 -1
  50. data/docs/SubmitCompleteInvoiceResponse.md +3 -1
  51. data/docs/Supplier.md +1 -1
  52. data/docs/TaskErrorResult.md +26 -0
  53. data/docs/VATEXCodeInfo.md +24 -0
  54. data/docs/VATEXCodesResponse.md +22 -0
  55. data/docs/ValidateCDARResponse.md +2 -2
  56. data/docs/ValidationApi.md +88 -0
  57. data/docs/ValidationErrorResponse.md +8 -2
  58. data/docs/ValidationSuccessTaskResult.md +20 -0
  59. data/docs/ValidationTaskStatus.md +22 -0
  60. data/docs/ValidationTaskStatusResult.md +79 -0
  61. data/docs/VerificationSuccessTaskResult.md +20 -0
  62. data/docs/VerificationTypedTaskStatus.md +22 -0
  63. data/docs/VerificationTypedTaskStatusResult.md +79 -0
  64. data/docs/WebhookSecretDeleteResponse.md +20 -0
  65. data/docs/WebhookSecretGenerateResponse.md +24 -0
  66. data/docs/WebhookSecretStatusResponse.md +20 -0
  67. data/factpulse.gemspec +3 -3
  68. data/lib/factpulse/api/afnorpdppa_api.rb +6 -3
  69. data/lib/factpulse/api/afnorpdppa_directory_service_api.rb +2 -2
  70. data/lib/factpulse/api/afnorpdppa_flow_service_api.rb +2 -2
  71. data/lib/factpulse/api/async_tasks_api.rb +192 -3
  72. data/lib/factpulse/api/chorus_pro_api.rb +18 -18
  73. data/lib/factpulse/api/client_management_api.rb +290 -24
  74. data/lib/factpulse/api/downloads_api.rb +8 -8
  75. data/lib/factpulse/api/electronic_signature_api.rb +6 -6
  76. data/lib/factpulse/api/factur_x_conversion_api.rb +143 -6
  77. data/lib/factpulse/api/factur_x_validation_api.rb +4 -79
  78. data/lib/factpulse/api/factur_xpdfxml_verification_api.rb +68 -5
  79. data/lib/factpulse/api/flux10_e_reporting_api.rb +8 -8
  80. data/lib/factpulse/api/flux6_invoice_lifecycle_cdar_api.rb +88 -5
  81. data/lib/factpulse/api/health_api.rb +3 -117
  82. data/lib/factpulse/api/{factur_x_generation_api.rb → invoice_generation_api.rb} +26 -26
  83. data/lib/factpulse/api/parse_api.rb +163 -0
  84. data/lib/factpulse/api/references_api.rb +82 -0
  85. data/lib/factpulse/api/validation_api.rb +97 -0
  86. data/lib/factpulse/api_client.rb +2 -2
  87. data/lib/factpulse/api_error.rb +2 -2
  88. data/lib/factpulse/api_model_base.rb +2 -2
  89. data/lib/factpulse/configuration.rb +9 -2
  90. data/lib/factpulse/models/acknowledgment_status.rb +2 -2
  91. data/lib/factpulse/models/action_code_info.rb +2 -2
  92. data/lib/factpulse/models/action_codes_response.rb +2 -2
  93. data/lib/factpulse/models/additional_document.rb +2 -2
  94. data/lib/factpulse/models/afnor_acknowledgement.rb +2 -2
  95. data/lib/factpulse/models/afnor_acknowledgement_detail.rb +2 -2
  96. data/lib/factpulse/models/afnor_address_edit.rb +2 -2
  97. data/lib/factpulse/models/afnor_address_patch.rb +2 -2
  98. data/lib/factpulse/models/afnor_address_put.rb +2 -2
  99. data/lib/factpulse/models/afnor_address_read.rb +2 -2
  100. data/lib/factpulse/models/afnor_algorithm.rb +2 -2
  101. data/lib/factpulse/models/afnor_contains_operator.rb +2 -2
  102. data/lib/factpulse/models/afnor_create_directory_line_body.rb +2 -2
  103. data/lib/factpulse/models/afnor_create_directory_line_body_addressing_information.rb +2 -2
  104. data/lib/factpulse/models/afnor_create_directory_line_body_period.rb +2 -2
  105. data/lib/factpulse/models/afnor_create_routing_code_body.rb +2 -2
  106. data/lib/factpulse/models/afnor_credentials.rb +2 -2
  107. data/lib/factpulse/models/afnor_destination.rb +2 -2
  108. data/lib/factpulse/models/afnor_diffusion_status.rb +2 -2
  109. data/lib/factpulse/models/afnor_directory_line_field.rb +2 -2
  110. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code.rb +2 -2
  111. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_platform.rb +2 -2
  112. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_routing_code.rb +2 -2
  113. data/lib/factpulse/models/afnor_directory_line_post201_response.rb +2 -2
  114. data/lib/factpulse/models/afnor_directory_line_search_post200_response.rb +2 -2
  115. data/lib/factpulse/models/afnor_entity_type.rb +2 -2
  116. data/lib/factpulse/models/afnor_error.rb +2 -2
  117. data/lib/factpulse/models/afnor_error_detail.rb +237 -0
  118. data/lib/factpulse/models/afnor_facility_administrative_status.rb +2 -2
  119. data/lib/factpulse/models/afnor_facility_nature.rb +2 -2
  120. data/lib/factpulse/models/afnor_facility_payload_history.rb +2 -2
  121. data/lib/factpulse/models/afnor_facility_payload_history_ule_b2g_additional_data.rb +2 -2
  122. data/lib/factpulse/models/afnor_facility_payload_included.rb +2 -2
  123. data/lib/factpulse/models/afnor_facility_type.rb +2 -2
  124. data/lib/factpulse/models/afnor_flow.rb +2 -2
  125. data/lib/factpulse/models/afnor_flow_ack_status.rb +2 -2
  126. data/lib/factpulse/models/afnor_flow_direction.rb +2 -2
  127. data/lib/factpulse/models/afnor_flow_info.rb +2 -2
  128. data/lib/factpulse/models/afnor_flow_profile.rb +2 -2
  129. data/lib/factpulse/models/afnor_flow_syntax.rb +2 -2
  130. data/lib/factpulse/models/afnor_flow_type.rb +2 -2
  131. data/lib/factpulse/models/afnor_full_flow_info.rb +2 -2
  132. data/lib/factpulse/models/afnor_health_check_response.rb +2 -2
  133. data/lib/factpulse/models/afnor_legal_unit_administrative_status.rb +2 -2
  134. data/lib/factpulse/models/afnor_legal_unit_payload_history.rb +2 -2
  135. data/lib/factpulse/models/afnor_legal_unit_payload_included.rb +2 -2
  136. data/lib/factpulse/models/afnor_legal_unit_payload_included_no_siren.rb +2 -2
  137. data/lib/factpulse/models/afnor_platform_status.rb +2 -2
  138. data/lib/factpulse/models/afnor_processing_rule.rb +2 -2
  139. data/lib/factpulse/models/afnor_reason_code.rb +2 -2
  140. data/lib/factpulse/models/afnor_reason_code_enum.rb +2 -2
  141. data/lib/factpulse/models/afnor_recipient_platform_type.rb +2 -2
  142. data/lib/factpulse/models/afnor_result.rb +2 -2
  143. data/lib/factpulse/models/afnor_routing_code_administrative_status.rb +2 -2
  144. data/lib/factpulse/models/afnor_routing_code_field.rb +2 -2
  145. data/lib/factpulse/models/afnor_routing_code_payload_history_legal_unit_facility.rb +2 -2
  146. data/lib/factpulse/models/afnor_routing_code_post201_response.rb +2 -2
  147. data/lib/factpulse/models/afnor_routing_code_search.rb +2 -2
  148. data/lib/factpulse/models/afnor_routing_code_search_filters.rb +2 -2
  149. data/lib/factpulse/models/afnor_routing_code_search_filters_administrative_status.rb +2 -2
  150. data/lib/factpulse/models/afnor_routing_code_search_filters_routing_code_name.rb +2 -2
  151. data/lib/factpulse/models/afnor_routing_code_search_filters_routing_identifier.rb +2 -2
  152. data/lib/factpulse/models/afnor_routing_code_search_post200_response.rb +2 -2
  153. data/lib/factpulse/models/afnor_routing_code_search_sorting_inner.rb +2 -2
  154. data/lib/factpulse/models/afnor_search_directory_line.rb +2 -2
  155. data/lib/factpulse/models/afnor_search_directory_line_filters.rb +2 -2
  156. data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_identifier.rb +2 -2
  157. data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_suffix.rb +2 -2
  158. data/lib/factpulse/models/afnor_search_directory_line_sorting_inner.rb +2 -2
  159. data/lib/factpulse/models/afnor_search_flow_content.rb +2 -2
  160. data/lib/factpulse/models/afnor_search_flow_filters.rb +2 -2
  161. data/lib/factpulse/models/afnor_search_flow_params.rb +2 -2
  162. data/lib/factpulse/models/afnor_search_siren.rb +2 -2
  163. data/lib/factpulse/models/afnor_search_siren_filters.rb +2 -2
  164. data/lib/factpulse/models/afnor_search_siren_filters_administrative_status.rb +2 -2
  165. data/lib/factpulse/models/afnor_search_siren_filters_business_name.rb +2 -2
  166. data/lib/factpulse/models/afnor_search_siren_filters_entity_type.rb +2 -2
  167. data/lib/factpulse/models/afnor_search_siren_filters_siren.rb +2 -2
  168. data/lib/factpulse/models/afnor_search_siren_sorting_inner.rb +2 -2
  169. data/lib/factpulse/models/afnor_search_siret.rb +2 -2
  170. data/lib/factpulse/models/afnor_search_siret_filters.rb +2 -2
  171. data/lib/factpulse/models/afnor_search_siret_filters_address_lines.rb +2 -2
  172. data/lib/factpulse/models/afnor_search_siret_filters_administrative_status.rb +2 -2
  173. data/lib/factpulse/models/afnor_search_siret_filters_country_subdivision.rb +2 -2
  174. data/lib/factpulse/models/afnor_search_siret_filters_facility_type.rb +2 -2
  175. data/lib/factpulse/models/afnor_search_siret_filters_locality.rb +2 -2
  176. data/lib/factpulse/models/afnor_search_siret_filters_name.rb +2 -2
  177. data/lib/factpulse/models/afnor_search_siret_filters_postal_code.rb +2 -2
  178. data/lib/factpulse/models/afnor_search_siret_filters_siret.rb +2 -2
  179. data/lib/factpulse/models/afnor_search_siret_sorting_inner.rb +2 -2
  180. data/lib/factpulse/models/afnor_siren_field.rb +2 -2
  181. data/lib/factpulse/models/afnor_siren_search_post200_response.rb +2 -2
  182. data/lib/factpulse/models/afnor_siret_field.rb +2 -2
  183. data/lib/factpulse/models/afnor_siret_search_post200_response.rb +2 -2
  184. data/lib/factpulse/models/afnor_sorting_order.rb +2 -2
  185. data/lib/factpulse/models/afnor_strict_operator.rb +2 -2
  186. data/lib/factpulse/models/afnor_update_patch_directory_line_body.rb +2 -2
  187. data/lib/factpulse/models/afnor_update_patch_routing_code_body.rb +2 -2
  188. data/lib/factpulse/models/afnor_update_put_routing_code_body.rb +2 -2
  189. data/lib/factpulse/models/afnor_webhook_callback_content.rb +2 -2
  190. data/lib/factpulse/models/aggregated_payment_input.rb +2 -2
  191. data/lib/factpulse/models/aggregated_transaction_input.rb +2 -2
  192. data/lib/factpulse/models/allowance_charge.rb +2 -2
  193. data/lib/factpulse/models/allowance_charge_reason_code.rb +2 -2
  194. data/lib/factpulse/models/allowance_reason_code.rb +2 -2
  195. data/lib/factpulse/models/allowance_total_amount.rb +2 -2
  196. data/lib/factpulse/models/amount.rb +2 -2
  197. data/lib/factpulse/models/amount1.rb +2 -2
  198. data/lib/factpulse/models/amount2.rb +2 -2
  199. data/lib/factpulse/models/amount_due.rb +2 -2
  200. data/lib/factpulse/models/api_error.rb +2 -2
  201. data/lib/factpulse/models/api_profile.rb +2 -2
  202. data/lib/factpulse/models/async_task_status.rb +2 -2
  203. data/lib/factpulse/models/base_amount.rb +2 -2
  204. data/lib/factpulse/models/bounding_box_schema.rb +2 -2
  205. data/lib/factpulse/models/buyercountry.rb +2 -2
  206. data/lib/factpulse/models/celery_status.rb +2 -2
  207. data/lib/factpulse/models/certificate_info_response.rb +2 -2
  208. data/lib/factpulse/models/charge_total_amount.rb +2 -2
  209. data/lib/factpulse/models/chorus_pro_credentials.rb +2 -2
  210. data/lib/factpulse/models/chorus_pro_destination.rb +2 -2
  211. data/lib/factpulse/models/chorus_pro_result.rb +2 -2
  212. data/lib/factpulse/models/client_activate_response.rb +2 -2
  213. data/lib/factpulse/models/client_create_request.rb +2 -2
  214. data/lib/factpulse/models/client_detail.rb +2 -2
  215. data/lib/factpulse/models/client_list_response.rb +2 -2
  216. data/lib/factpulse/models/client_summary.rb +2 -2
  217. data/lib/factpulse/models/client_update_request.rb +2 -2
  218. data/lib/factpulse/models/contact.rb +2 -2
  219. data/lib/factpulse/models/conversion_error_result.rb +277 -0
  220. data/lib/factpulse/models/conversion_extraction_info.rb +176 -0
  221. data/lib/factpulse/models/conversion_pending_input_result.rb +344 -0
  222. data/lib/factpulse/models/conversion_success_task_result.rb +355 -0
  223. data/lib/factpulse/models/conversion_task_status.rb +223 -0
  224. data/lib/factpulse/models/conversion_task_status_result.rb +59 -0
  225. data/lib/factpulse/models/conversion_validation_failed_result.rb +348 -0
  226. data/lib/factpulse/models/convert_resume_request.rb +29 -7
  227. data/lib/factpulse/models/convert_success_response.rb +2 -2
  228. data/lib/factpulse/models/convert_validation_failed_response.rb +2 -2
  229. data/lib/factpulse/models/country_code.rb +2 -2
  230. data/lib/factpulse/models/create_aggregated_report_request.rb +2 -2
  231. data/lib/factpulse/models/create_cdar_request.rb +2 -2
  232. data/lib/factpulse/models/create_e_reporting_request.rb +2 -2
  233. data/lib/factpulse/models/currency.rb +2 -2
  234. data/lib/factpulse/models/currency_code.rb +2 -2
  235. data/lib/factpulse/models/delivery_party.rb +2 -2
  236. data/lib/factpulse/models/destination.rb +2 -2
  237. data/lib/factpulse/models/doc_type.rb +2 -2
  238. data/lib/factpulse/models/document_type_info.rb +2 -2
  239. data/lib/factpulse/models/e_reporting_flow_type.rb +2 -2
  240. data/lib/factpulse/models/e_reporting_validation_error.rb +2 -2
  241. data/lib/factpulse/models/electronic_address.rb +2 -2
  242. data/lib/factpulse/models/encaisseamount.rb +2 -2
  243. data/lib/factpulse/models/encaisseamount1.rb +2 -2
  244. data/lib/factpulse/models/encaissee_request.rb +2 -2
  245. data/lib/factpulse/models/enriched_invoice_info.rb +2 -2
  246. data/lib/factpulse/models/error_level.rb +2 -2
  247. data/lib/factpulse/models/error_source.rb +2 -2
  248. data/lib/factpulse/models/extraction_info.rb +2 -2
  249. data/lib/factpulse/models/factur_x_invoice.rb +3 -19
  250. data/lib/factpulse/models/factur_xpdf_info.rb +2 -2
  251. data/lib/factpulse/models/facture_electronique_models_invoice_type_code.rb +54 -0
  252. data/lib/factpulse/models/facture_electronique_rest_api_schemas_chorus_pro_chorus_pro_credentials.rb +2 -2
  253. data/lib/factpulse/models/facture_electronique_rest_api_schemas_validation_validation_error_response.rb +168 -0
  254. data/lib/factpulse/models/field_status.rb +2 -2
  255. data/lib/factpulse/models/file_info.rb +2 -2
  256. data/lib/factpulse/models/files_info.rb +2 -2
  257. data/lib/factpulse/models/flow_direction.rb +2 -2
  258. data/lib/factpulse/models/flow_profile.rb +2 -2
  259. data/lib/factpulse/models/flow_summary.rb +2 -2
  260. data/lib/factpulse/models/flow_syntax.rb +2 -2
  261. data/lib/factpulse/models/flow_type.rb +2 -2
  262. data/lib/factpulse/models/generate_aggregated_report_response.rb +2 -2
  263. data/lib/factpulse/models/generate_cdar_response.rb +2 -2
  264. data/lib/factpulse/models/generate_certificate_request.rb +2 -2
  265. data/lib/factpulse/models/generate_certificate_response.rb +2 -2
  266. data/lib/factpulse/models/generate_e_reporting_response.rb +2 -2
  267. data/lib/factpulse/models/generation_success_result.rb +230 -0
  268. data/lib/factpulse/models/generation_task_status.rb +223 -0
  269. data/lib/factpulse/models/generation_task_status_result.rb +55 -0
  270. data/lib/factpulse/models/get_chorus_pro_id_request.rb +2 -2
  271. data/lib/factpulse/models/get_chorus_pro_id_response.rb +2 -2
  272. data/lib/factpulse/models/get_invoice_request.rb +2 -2
  273. data/lib/factpulse/models/get_invoice_response.rb +2 -2
  274. data/lib/factpulse/models/get_structure_request.rb +2 -2
  275. data/lib/factpulse/models/get_structure_response.rb +2 -2
  276. data/lib/factpulse/models/global_allowance_amount.rb +2 -2
  277. data/lib/factpulse/models/gross_unit_price.rb +2 -2
  278. data/lib/factpulse/models/http_validation_error.rb +2 -2
  279. data/lib/factpulse/models/incoming_invoice.rb +2 -2
  280. data/lib/factpulse/models/incoming_supplier.rb +2 -2
  281. data/lib/factpulse/models/invoice_format.rb +2 -2
  282. data/lib/factpulse/models/invoice_input.rb +3 -3
  283. data/lib/factpulse/models/invoice_lifecycle.rb +215 -0
  284. data/lib/factpulse/models/invoice_line.rb +2 -2
  285. data/lib/factpulse/models/invoice_line_allowance_amount.rb +2 -2
  286. data/lib/factpulse/models/invoice_note.rb +2 -2
  287. data/lib/factpulse/models/invoice_payment_input.rb +2 -2
  288. data/lib/factpulse/models/invoice_references.rb +2 -2
  289. data/lib/factpulse/models/invoice_status.rb +2 -2
  290. data/lib/factpulse/models/invoice_totals.rb +2 -2
  291. data/lib/factpulse/models/invoice_totals_prepayment.rb +2 -2
  292. data/lib/factpulse/models/invoice_type_code.rb +8 -19
  293. data/lib/factpulse/models/invoice_type_code_output.rb +2 -2
  294. data/lib/factpulse/models/invoicing_framework.rb +3 -20
  295. data/lib/factpulse/models/invoicing_framework_code.rb +2 -2
  296. data/lib/factpulse/models/issuer_role_code.rb +2 -2
  297. data/lib/factpulse/models/key_rotation_request.rb +211 -0
  298. data/lib/factpulse/models/key_rotation_response.rb +232 -0
  299. data/lib/factpulse/models/lifecycle_event.rb +300 -0
  300. data/lib/factpulse/models/lifecycle_response.rb +205 -0
  301. data/lib/factpulse/models/line_net_amount.rb +2 -2
  302. data/lib/factpulse/models/line_sub_type.rb +2 -2
  303. data/lib/factpulse/models/line_total_amount.rb +2 -2
  304. data/lib/factpulse/models/location_inner.rb +2 -2
  305. data/lib/factpulse/models/mandatory_note_schema.rb +2 -2
  306. data/lib/factpulse/models/manual_rate.rb +2 -2
  307. data/lib/factpulse/models/manual_vat_rate.rb +2 -2
  308. data/lib/factpulse/models/missing_field.rb +2 -2
  309. data/lib/factpulse/models/operation_nature.rb +2 -2
  310. data/lib/factpulse/models/output_format.rb +5 -3
  311. data/lib/factpulse/models/page_dimensions_schema.rb +2 -2
  312. data/lib/factpulse/models/parse_factur_x_response.rb +249 -0
  313. data/lib/factpulse/models/payee.rb +2 -2
  314. data/lib/factpulse/models/payment_amount_by_rate.rb +2 -2
  315. data/lib/factpulse/models/payment_card.rb +2 -2
  316. data/lib/factpulse/models/payment_means.rb +2 -2
  317. data/lib/factpulse/models/pdf_validation_result_api.rb +2 -2
  318. data/lib/factpulse/models/pdp_config_response.rb +13 -3
  319. data/lib/factpulse/models/pdp_config_update_request.rb +51 -7
  320. data/lib/factpulse/models/pdp_credentials.rb +2 -2
  321. data/lib/factpulse/models/percentage.rb +2 -2
  322. data/lib/factpulse/models/postal_address.rb +2 -2
  323. data/lib/factpulse/models/price_allowance_amount.rb +2 -2
  324. data/lib/factpulse/models/price_basis_quantity.rb +2 -2
  325. data/lib/factpulse/models/processing_options.rb +2 -2
  326. data/lib/factpulse/models/processing_rule.rb +2 -2
  327. data/lib/factpulse/models/product_characteristic.rb +2 -2
  328. data/lib/factpulse/models/product_classification.rb +2 -2
  329. data/lib/factpulse/models/quantity.rb +2 -2
  330. data/lib/factpulse/models/rate.rb +2 -2
  331. data/lib/factpulse/models/rate1.rb +2 -2
  332. data/lib/factpulse/models/reason_code_info.rb +2 -2
  333. data/lib/factpulse/models/reason_codes_response.rb +2 -2
  334. data/lib/factpulse/models/recipient.rb +2 -2
  335. data/lib/factpulse/models/recipient_input.rb +2 -2
  336. data/lib/factpulse/models/refusee_request.rb +2 -2
  337. data/lib/factpulse/models/report_issuer.rb +2 -2
  338. data/lib/factpulse/models/report_period.rb +2 -2
  339. data/lib/factpulse/models/report_sender.rb +2 -2
  340. data/lib/factpulse/models/rounding_amount.rb +2 -2
  341. data/lib/factpulse/models/schematron_validation_error.rb +2 -2
  342. data/lib/factpulse/models/scheme_id.rb +2 -2
  343. data/lib/factpulse/models/search_flow_request.rb +2 -2
  344. data/lib/factpulse/models/search_flow_response.rb +2 -2
  345. data/lib/factpulse/models/search_services_response.rb +2 -2
  346. data/lib/factpulse/models/search_structure_request.rb +2 -2
  347. data/lib/factpulse/models/search_structure_response.rb +2 -2
  348. data/lib/factpulse/models/secret_status.rb +26 -6
  349. data/lib/factpulse/models/sellercountry.rb +2 -2
  350. data/lib/factpulse/models/signature_info.rb +2 -2
  351. data/lib/factpulse/models/signature_info_api.rb +2 -2
  352. data/lib/factpulse/models/signature_parameters.rb +2 -2
  353. data/lib/factpulse/models/signature_success_result.rb +394 -0
  354. data/lib/factpulse/models/signature_task_status.rb +223 -0
  355. data/lib/factpulse/models/signature_task_status_result.rb +55 -0
  356. data/lib/factpulse/models/simplified_cdar_response.rb +2 -2
  357. data/lib/factpulse/models/simplified_invoice_data.rb +3 -3
  358. data/lib/factpulse/models/status_code_info.rb +2 -2
  359. data/lib/factpulse/models/status_codes_response.rb +2 -2
  360. data/lib/factpulse/models/structure_info.rb +2 -2
  361. data/lib/factpulse/models/structure_parameters.rb +2 -2
  362. data/lib/factpulse/models/structure_service.rb +2 -2
  363. data/lib/factpulse/models/submission_mode.rb +2 -2
  364. data/lib/factpulse/models/submit_aggregated_report_request.rb +2 -2
  365. data/lib/factpulse/models/submit_cdar_request.rb +2 -2
  366. data/lib/factpulse/models/submit_cdar_response.rb +2 -2
  367. data/lib/factpulse/models/submit_cdarxml_request.rb +2 -2
  368. data/lib/factpulse/models/submit_complete_invoice_request.rb +2 -2
  369. data/lib/factpulse/models/submit_complete_invoice_response.rb +33 -4
  370. data/lib/factpulse/models/submit_e_reporting_request.rb +2 -2
  371. data/lib/factpulse/models/submit_e_reporting_response.rb +2 -2
  372. data/lib/factpulse/models/submit_flow_request.rb +2 -2
  373. data/lib/factpulse/models/submit_flow_response.rb +2 -2
  374. data/lib/factpulse/models/submit_gross_amount.rb +2 -2
  375. data/lib/factpulse/models/submit_invoice_request.rb +2 -2
  376. data/lib/factpulse/models/submit_invoice_response.rb +2 -2
  377. data/lib/factpulse/models/submit_net_amount.rb +2 -2
  378. data/lib/factpulse/models/submit_vat_amount.rb +2 -2
  379. data/lib/factpulse/models/supplementary_attachment.rb +2 -2
  380. data/lib/factpulse/models/supplier.rb +4 -18
  381. data/lib/factpulse/models/task_error_result.rb +257 -0
  382. data/lib/factpulse/models/task_response.rb +2 -2
  383. data/lib/factpulse/models/tax_breakdown_input.rb +2 -2
  384. data/lib/factpulse/models/tax_due_date_type.rb +2 -2
  385. data/lib/factpulse/models/tax_representative.rb +2 -2
  386. data/lib/factpulse/models/taxable_amount.rb +2 -2
  387. data/lib/factpulse/models/taxableamount.rb +2 -2
  388. data/lib/factpulse/models/taxamount.rb +2 -2
  389. data/lib/factpulse/models/taxamount1.rb +2 -2
  390. data/lib/factpulse/models/taxamount2.rb +2 -2
  391. data/lib/factpulse/models/taxexclusiveamount.rb +2 -2
  392. data/lib/factpulse/models/taxexclusiveamount1.rb +2 -2
  393. data/lib/factpulse/models/total_gross_amount.rb +2 -2
  394. data/lib/factpulse/models/total_net_amount.rb +2 -2
  395. data/lib/factpulse/models/total_vat_amount.rb +2 -2
  396. data/lib/factpulse/models/transaction_category.rb +2 -2
  397. data/lib/factpulse/models/transmission_type_code.rb +2 -2
  398. data/lib/factpulse/models/unit_net_price.rb +2 -2
  399. data/lib/factpulse/models/unit_of_measure.rb +17 -3
  400. data/lib/factpulse/models/validate_cdar_request.rb +2 -2
  401. data/lib/factpulse/models/validate_cdar_response.rb +4 -4
  402. data/lib/factpulse/models/validate_e_reporting_request.rb +2 -2
  403. data/lib/factpulse/models/validate_e_reporting_response.rb +2 -2
  404. data/lib/factpulse/models/validation_error.rb +2 -2
  405. data/lib/factpulse/models/validation_error_detail.rb +2 -2
  406. data/lib/factpulse/models/validation_error_response.rb +69 -22
  407. data/lib/factpulse/models/validation_info.rb +2 -2
  408. data/lib/factpulse/models/validation_success_response.rb +2 -2
  409. data/lib/factpulse/models/validation_success_task_result.rb +210 -0
  410. data/lib/factpulse/models/validation_task_status.rb +223 -0
  411. data/lib/factpulse/models/validation_task_status_result.rb +55 -0
  412. data/lib/factpulse/models/vat_accounting_code.rb +2 -2
  413. data/lib/factpulse/models/vat_amount.rb +2 -2
  414. data/lib/factpulse/models/vat_category.rb +2 -2
  415. data/lib/factpulse/models/vat_line.rb +2 -2
  416. data/lib/factpulse/models/vat_point_date_code.rb +2 -2
  417. data/lib/factpulse/models/vat_rate.rb +2 -2
  418. data/lib/factpulse/models/vatex_code_info.rb +247 -0
  419. data/lib/factpulse/models/vatex_codes_response.rb +204 -0
  420. data/lib/factpulse/models/verification_success_response.rb +2 -2
  421. data/lib/factpulse/models/verification_success_task_result.rb +210 -0
  422. data/lib/factpulse/models/verification_typed_task_status.rb +223 -0
  423. data/lib/factpulse/models/verification_typed_task_status_result.rb +55 -0
  424. data/lib/factpulse/models/verified_field_schema.rb +2 -2
  425. data/lib/factpulse/models/webhook_secret_delete_response.rb +193 -0
  426. data/lib/factpulse/models/webhook_secret_generate_response.rb +247 -0
  427. data/lib/factpulse/models/webhook_secret_status_response.rb +176 -0
  428. data/lib/factpulse/version.rb +3 -3
  429. data/lib/factpulse.rb +40 -5
  430. metadata +133 -63
  431. data/docs/FactureElectroniqueRestApiSchemasCdarValidationErrorResponse.md +0 -24
  432. data/docs/FactureElectroniqueRestApiSchemasEreportingInvoiceTypeCode.md +0 -15
  433. data/lib/factpulse/models/facture_electronique_rest_api_schemas_cdar_validation_error_response.rb +0 -215
  434. data/lib/factpulse/models/facture_electronique_rest_api_schemas_ereporting_invoice_type_code.rb +0 -43
@@ -1,12 +1,12 @@
1
1
  =begin
2
2
  #FactPulse REST API
3
3
 
4
- # REST API for electronic invoicing in France: Factur-X, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Factur-X - Generation - **Formats**: XML only or PDF/A-3 with embedded XML - **Profiles**: MINIMUM, BASIC, EN16931, EXTENDED - **Standards**: EN 16931 (EU directive 2014/55), ISO 19005-3 (PDF/A-3), CII (UN/CEFACT) - **🆕 Simplified Format**: Generation from SIRET + auto-enrichment (Chorus Pro API + Business Search) ### ✅ Factur-X - Validation - **XML Validation**: Schematron (45 to 210+ rules depending on profile) - **PDF Validation**: PDF/A-3, Factur-X XMP metadata - **VeraPDF**: Strict PDF/A validation (146+ ISO 19005-3 rules) ### ✍️ Electronic Signature - **Standards**: PAdES-B-B, PAdES-B-T (RFC 3161 timestamping), PAdES-B-LT (long-term archival) - **eIDAS Levels**: SES (self-signed), AdES (commercial CA), QES (QTSP) - **Validation**: Cryptographic integrity and certificate verification ### 📋 Flux 6 - Invoice Lifecycle (CDAR) - **CDAR Messages**: Acknowledgements, invoice statuses - **PPF Statuses**: REFUSED (210), PAID (212) ### 📊 Flux 10 - E-Reporting - **Tax Declarations**: International B2B, B2C - **Flow Types**: 10.1 (B2B transactions), 10.2 (B2B payments), 10.3 (B2C transactions), 10.4 (B2C payments) ### 📡 AFNOR PDP/PA (XP Z12-013) - **Flow Service**: Submit and search flows to PDPs - **Directory Service**: Company search (SIREN/SIRET) - **Multi-client**: Support for multiple PDP configs per user ### 🏛️ Chorus Pro - **Public Sector Invoicing**: Complete API for Chorus Pro ### ⏳ Async Tasks - **Celery**: Asynchronous generation, validation and signing - **Polling**: Status tracking via `/tasks/{task_id}/status` - **Webhooks**: Automatic notifications when tasks complete ## 🔒 Authentication All requests require a **JWT token** in the Authorization header: ``` Authorization: Bearer YOUR_JWT_TOKEN ``` ### How to obtain a JWT token? #### 🔑 Method 1: `/api/token/` API (Recommended) **URL:** `https://factpulse.fr/api/token/` This method is **recommended** for integration in your applications and CI/CD workflows. **Prerequisites:** Having set a password on your account **For users registered via email/password:** - You already have a password, use it directly **For users registered via OAuth (Google/GitHub):** - You must first set a password at: https://factpulse.fr/accounts/password/set/ - Once the password is created, you can use the API **Request example:** ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\" }' ``` **Optional `client_uid` parameter:** To select credentials for a specific client (PA/PDP, Chorus Pro, signing certificates), add `client_uid`: ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\", \"client_uid\": \"550e8400-e29b-41d4-a716-446655440000\" }' ``` The `client_uid` will be included in the JWT and allow the API to automatically use: - AFNOR/PDP credentials configured for this client - Chorus Pro credentials configured for this client - Electronic signature certificates configured for this client **Response:** ```json { \"access\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\", // Access token (validity: 30 min) \"refresh\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\" // Refresh token (validity: 7 days) } ``` **Advantages:** - ✅ Full automation (CI/CD, scripts) - ✅ Programmatic token management - ✅ Refresh token support for automatic access renewal - ✅ Easy integration in any language/tool #### 🖥️ Method 2: Dashboard Generation (Alternative) **URL:** https://factpulse.fr/api/dashboard/ This method is suitable for quick tests or occasional use via the graphical interface. **How it works:** - Log in to the dashboard - Use the \"Generate Test Token\" or \"Generate Production Token\" buttons - Works for **all** users (OAuth and email/password), without requiring a password **Token types:** - **Test Token**: 24h validity, 1000 calls/day quota (free) - **Production Token**: 7 days validity, quota based on your plan **Advantages:** - ✅ Quick for API testing - ✅ No password required - ✅ Simple visual interface **Disadvantages:** - ❌ Requires manual action - ❌ No refresh token - ❌ Less suited for automation ### 📚 Full Documentation For more information on authentication and API usage: https://factpulse.fr/documentation-api/
4
+ # REST API for electronic invoicing in France: Factur-X (CII), UBL 2.1, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Invoice Generation - **Formats**: CII XML, UBL 2.1 XML, or Factur-X PDF/A-3 - **Profiles** (CII/PDF): MINIMUM, BASIC, EN16931, EXTENDED - **UBL**: Always EN16931 compliant - **Standards**: EN 16931 (EU directive 2014/55), ISO 19005-3 (PDF/A-3), CII (UN/CEFACT), UBL 2.1 (OASIS) - **Simplified Format**: Generation from SIRET + auto-enrichment (Chorus Pro API + Business Search) ### ✅ Factur-X - Validation - **XML Validation**: Schematron (45 to 210+ rules depending on profile) - **PDF Validation**: PDF/A-3, Factur-X XMP metadata - **VeraPDF**: Strict PDF/A validation (146+ ISO 19005-3 rules) ### ✍️ Electronic Signature - **Standards**: PAdES-B-B, PAdES-B-T (RFC 3161 timestamping), PAdES-B-LT (long-term archival) - **eIDAS Levels**: SES (self-signed), AdES (commercial CA), QES (QTSP) - **Validation**: Cryptographic integrity and certificate verification ### 📋 Flux 6 - Invoice Lifecycle (CDAR) - **CDAR Messages**: Acknowledgements, invoice statuses - **PPF Statuses**: REFUSED (210), PAID (212) ### 📊 Flux 10 - E-Reporting - **Tax Declarations**: International B2B, B2C - **Flow Types**: 10.1 (B2B transactions), 10.2 (B2B payments), 10.3 (B2C transactions), 10.4 (B2C payments) ### 📡 AFNOR PDP/PA (XP Z12-013) - **Flow Service**: Submit and search flows to PDPs - **Directory Service**: Company search (SIREN/SIRET) - **Multi-client**: Support for multiple PDP configs per user ### 🏛️ Chorus Pro - **Public Sector Invoicing**: Complete API for Chorus Pro ### ⏳ Async Tasks - **Celery**: Asynchronous generation, validation and signing - **Polling**: Status tracking via `/tasks/{task_id}/status` - **Webhooks**: Automatic notifications when tasks complete ## 🔒 Authentication All requests require a **JWT token** in the Authorization header: ``` Authorization: Bearer YOUR_JWT_TOKEN ``` ### How to obtain a JWT token? #### 🔑 Method 1: `/api/token/` API (Recommended) **URL:** `https://factpulse.fr/api/token/` This method is **recommended** for integration in your applications and CI/CD workflows. **Prerequisites:** Having set a password on your account **For users registered via email/password:** - You already have a password, use it directly **For users registered via OAuth (Google/GitHub):** - You must first set a password at: https://factpulse.fr/accounts/password/set/ - Once the password is created, you can use the API **Request example:** ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\" }' ``` **Optional `client_uid` parameter:** To select credentials for a specific client (PA/PDP, Chorus Pro, signing certificates), add `client_uid`: ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\", \"client_uid\": \"550e8400-e29b-41d4-a716-446655440000\" }' ``` The `client_uid` will be included in the JWT and allow the API to automatically use: - AFNOR/PDP credentials configured for this client - Chorus Pro credentials configured for this client - Electronic signature certificates configured for this client **Response:** ```json { \"access\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\", // Access token (validity: 30 min) \"refresh\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\" // Refresh token (validity: 7 days) } ``` **Advantages:** - ✅ Full automation (CI/CD, scripts) - ✅ Programmatic token management - ✅ Refresh token support for automatic access renewal - ✅ Easy integration in any language/tool #### 🖥️ Method 2: Dashboard Generation (Alternative) **URL:** https://factpulse.fr/api/dashboard/ This method is suitable for quick tests or occasional use via the graphical interface. **How it works:** - Log in to the dashboard - Use the \"Generate Test Token\" or \"Generate Production Token\" buttons - Works for **all** users (OAuth and email/password), without requiring a password **Token types:** - **Test Token**: 24h validity, 1000 calls/day quota (free) - **Production Token**: 7 days validity, quota based on your plan **Advantages:** - ✅ Quick for API testing - ✅ No password required - ✅ Simple visual interface **Disadvantages:** - ❌ Requires manual action - ❌ No refresh token - ❌ Less suited for automation ### 📚 Full Documentation For more information on authentication and API usage: https://factpulse.fr/documentation-api/
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: contact@factpulse.fr
8
8
  Generated by: https://openapi-generator.tech
9
- Generator version: 7.20.0-SNAPSHOT
9
+ Generator version: 7.21.0-SNAPSHOT
10
10
 
11
11
  =end
12
12
 
@@ -21,7 +21,7 @@ module FactPulse
21
21
  end
22
22
  # Activate a client
23
23
  # Activate a deactivated client. **Scope**: Client level (JWT with client_uid that must match {uid})
24
- # @param uid [String]
24
+ # @param uid [String] Client unique identifier (UUID)
25
25
  # @param [Hash] opts the optional parameters
26
26
  # @return [ClientActivateResponse]
27
27
  def activate_client_api_v1_clients_uid_activer_post(uid, opts = {})
@@ -31,7 +31,7 @@ module FactPulse
31
31
 
32
32
  # Activate a client
33
33
  # Activate a deactivated client. **Scope**: Client level (JWT with client_uid that must match {uid})
34
- # @param uid [String]
34
+ # @param uid [String] Client unique identifier (UUID)
35
35
  # @param [Hash] opts the optional parameters
36
36
  # @return [Array<(ClientActivateResponse, Integer, Hash)>] ClientActivateResponse data, response status code and response headers
37
37
  def activate_client_api_v1_clients_uid_activer_post_with_http_info(uid, opts = {})
@@ -63,7 +63,7 @@ module FactPulse
63
63
  return_type = opts[:debug_return_type] || 'ClientActivateResponse'
64
64
 
65
65
  # auth_names
66
- auth_names = opts[:debug_auth_names] || ['HTTPBearer']
66
+ auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
67
67
 
68
68
  new_options = opts.merge(
69
69
  :operation => :"ClientManagementApi.activate_client_api_v1_clients_uid_activer_post",
@@ -131,7 +131,7 @@ module FactPulse
131
131
  return_type = opts[:debug_return_type] || 'ClientDetail'
132
132
 
133
133
  # auth_names
134
- auth_names = opts[:debug_auth_names] || ['HTTPBearer']
134
+ auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
135
135
 
136
136
  new_options = opts.merge(
137
137
  :operation => :"ClientManagementApi.create_client_api_v1_clients_post",
@@ -152,7 +152,7 @@ module FactPulse
152
152
 
153
153
  # Deactivate a client
154
154
  # Deactivate an active client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Note**: A deactivated client cannot be used for API calls (AFNOR, Chorus Pro, etc.).
155
- # @param uid [String]
155
+ # @param uid [String] Client unique identifier (UUID)
156
156
  # @param [Hash] opts the optional parameters
157
157
  # @return [ClientActivateResponse]
158
158
  def deactivate_client_api_v1_clients_uid_desactiver_post(uid, opts = {})
@@ -162,7 +162,7 @@ module FactPulse
162
162
 
163
163
  # Deactivate a client
164
164
  # Deactivate an active client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Note**: A deactivated client cannot be used for API calls (AFNOR, Chorus Pro, etc.).
165
- # @param uid [String]
165
+ # @param uid [String] Client unique identifier (UUID)
166
166
  # @param [Hash] opts the optional parameters
167
167
  # @return [Array<(ClientActivateResponse, Integer, Hash)>] ClientActivateResponse data, response status code and response headers
168
168
  def deactivate_client_api_v1_clients_uid_desactiver_post_with_http_info(uid, opts = {})
@@ -194,7 +194,7 @@ module FactPulse
194
194
  return_type = opts[:debug_return_type] || 'ClientActivateResponse'
195
195
 
196
196
  # auth_names
197
- auth_names = opts[:debug_auth_names] || ['HTTPBearer']
197
+ auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
198
198
 
199
199
  new_options = opts.merge(
200
200
  :operation => :"ClientManagementApi.deactivate_client_api_v1_clients_uid_desactiver_post",
@@ -213,9 +213,135 @@ module FactPulse
213
213
  return data, status_code, headers
214
214
  end
215
215
 
216
+ # Delete webhook secret
217
+ # Delete the webhook secret for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **After deletion**: Webhooks for this client will use the global server key for HMAC signature instead of a client-specific key.
218
+ # @param uid [String] Client unique identifier (UUID)
219
+ # @param [Hash] opts the optional parameters
220
+ # @return [WebhookSecretDeleteResponse]
221
+ def delete_webhook_secret_api_v1_clients_uid_webhook_secret_delete(uid, opts = {})
222
+ data, _status_code, _headers = delete_webhook_secret_api_v1_clients_uid_webhook_secret_delete_with_http_info(uid, opts)
223
+ data
224
+ end
225
+
226
+ # Delete webhook secret
227
+ # Delete the webhook secret for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **After deletion**: Webhooks for this client will use the global server key for HMAC signature instead of a client-specific key.
228
+ # @param uid [String] Client unique identifier (UUID)
229
+ # @param [Hash] opts the optional parameters
230
+ # @return [Array<(WebhookSecretDeleteResponse, Integer, Hash)>] WebhookSecretDeleteResponse data, response status code and response headers
231
+ def delete_webhook_secret_api_v1_clients_uid_webhook_secret_delete_with_http_info(uid, opts = {})
232
+ if @api_client.config.debugging
233
+ @api_client.config.logger.debug 'Calling API: ClientManagementApi.delete_webhook_secret_api_v1_clients_uid_webhook_secret_delete ...'
234
+ end
235
+ # verify the required parameter 'uid' is set
236
+ if @api_client.config.client_side_validation && uid.nil?
237
+ fail ArgumentError, "Missing the required parameter 'uid' when calling ClientManagementApi.delete_webhook_secret_api_v1_clients_uid_webhook_secret_delete"
238
+ end
239
+ # resource path
240
+ local_var_path = '/api/v1/clients/{uid}/webhook-secret'.sub('{' + 'uid' + '}', CGI.escape(uid.to_s))
241
+
242
+ # query parameters
243
+ query_params = opts[:query_params] || {}
244
+
245
+ # header parameters
246
+ header_params = opts[:header_params] || {}
247
+ # HTTP header 'Accept' (if needed)
248
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
249
+
250
+ # form parameters
251
+ form_params = opts[:form_params] || {}
252
+
253
+ # http body (model)
254
+ post_body = opts[:debug_body]
255
+
256
+ # return_type
257
+ return_type = opts[:debug_return_type] || 'WebhookSecretDeleteResponse'
258
+
259
+ # auth_names
260
+ auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
261
+
262
+ new_options = opts.merge(
263
+ :operation => :"ClientManagementApi.delete_webhook_secret_api_v1_clients_uid_webhook_secret_delete",
264
+ :header_params => header_params,
265
+ :query_params => query_params,
266
+ :form_params => form_params,
267
+ :body => post_body,
268
+ :auth_names => auth_names,
269
+ :return_type => return_type
270
+ )
271
+
272
+ data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
273
+ if @api_client.config.debugging
274
+ @api_client.config.logger.debug "API called: ClientManagementApi#delete_webhook_secret_api_v1_clients_uid_webhook_secret_delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
275
+ end
276
+ return data, status_code, headers
277
+ end
278
+
279
+ # Generate webhook secret
280
+ # Generate or regenerate the webhook secret for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Important**: Save the returned secret immediately - it will never be shown again. The secret is used to sign webhooks sent by the server (HMAC-SHA256). **If a secret already exists**: It will be replaced by the new one.
281
+ # @param uid [String] Client unique identifier (UUID)
282
+ # @param [Hash] opts the optional parameters
283
+ # @return [WebhookSecretGenerateResponse]
284
+ def generate_webhook_secret_api_v1_clients_uid_webhook_secret_generate_post(uid, opts = {})
285
+ data, _status_code, _headers = generate_webhook_secret_api_v1_clients_uid_webhook_secret_generate_post_with_http_info(uid, opts)
286
+ data
287
+ end
288
+
289
+ # Generate webhook secret
290
+ # Generate or regenerate the webhook secret for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Important**: Save the returned secret immediately - it will never be shown again. The secret is used to sign webhooks sent by the server (HMAC-SHA256). **If a secret already exists**: It will be replaced by the new one.
291
+ # @param uid [String] Client unique identifier (UUID)
292
+ # @param [Hash] opts the optional parameters
293
+ # @return [Array<(WebhookSecretGenerateResponse, Integer, Hash)>] WebhookSecretGenerateResponse data, response status code and response headers
294
+ def generate_webhook_secret_api_v1_clients_uid_webhook_secret_generate_post_with_http_info(uid, opts = {})
295
+ if @api_client.config.debugging
296
+ @api_client.config.logger.debug 'Calling API: ClientManagementApi.generate_webhook_secret_api_v1_clients_uid_webhook_secret_generate_post ...'
297
+ end
298
+ # verify the required parameter 'uid' is set
299
+ if @api_client.config.client_side_validation && uid.nil?
300
+ fail ArgumentError, "Missing the required parameter 'uid' when calling ClientManagementApi.generate_webhook_secret_api_v1_clients_uid_webhook_secret_generate_post"
301
+ end
302
+ # resource path
303
+ local_var_path = '/api/v1/clients/{uid}/webhook-secret/generate'.sub('{' + 'uid' + '}', CGI.escape(uid.to_s))
304
+
305
+ # query parameters
306
+ query_params = opts[:query_params] || {}
307
+
308
+ # header parameters
309
+ header_params = opts[:header_params] || {}
310
+ # HTTP header 'Accept' (if needed)
311
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
312
+
313
+ # form parameters
314
+ form_params = opts[:form_params] || {}
315
+
316
+ # http body (model)
317
+ post_body = opts[:debug_body]
318
+
319
+ # return_type
320
+ return_type = opts[:debug_return_type] || 'WebhookSecretGenerateResponse'
321
+
322
+ # auth_names
323
+ auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
324
+
325
+ new_options = opts.merge(
326
+ :operation => :"ClientManagementApi.generate_webhook_secret_api_v1_clients_uid_webhook_secret_generate_post",
327
+ :header_params => header_params,
328
+ :query_params => query_params,
329
+ :form_params => form_params,
330
+ :body => post_body,
331
+ :auth_names => auth_names,
332
+ :return_type => return_type
333
+ )
334
+
335
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
336
+ if @api_client.config.debugging
337
+ @api_client.config.logger.debug "API called: ClientManagementApi#generate_webhook_secret_api_v1_clients_uid_webhook_secret_generate_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
338
+ end
339
+ return data, status_code, headers
340
+ end
341
+
216
342
  # Get client details
217
343
  # Get details of a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Security**: If the JWT contains a client_uid, it must match the {uid} in the URL, otherwise a 403 error is returned.
218
- # @param uid [String]
344
+ # @param uid [String] Client unique identifier (UUID)
219
345
  # @param [Hash] opts the optional parameters
220
346
  # @return [ClientDetail]
221
347
  def get_client_api_v1_clients_uid_get(uid, opts = {})
@@ -225,7 +351,7 @@ module FactPulse
225
351
 
226
352
  # Get client details
227
353
  # Get details of a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Security**: If the JWT contains a client_uid, it must match the {uid} in the URL, otherwise a 403 error is returned.
228
- # @param uid [String]
354
+ # @param uid [String] Client unique identifier (UUID)
229
355
  # @param [Hash] opts the optional parameters
230
356
  # @return [Array<(ClientDetail, Integer, Hash)>] ClientDetail data, response status code and response headers
231
357
  def get_client_api_v1_clients_uid_get_with_http_info(uid, opts = {})
@@ -257,7 +383,7 @@ module FactPulse
257
383
  return_type = opts[:debug_return_type] || 'ClientDetail'
258
384
 
259
385
  # auth_names
260
- auth_names = opts[:debug_auth_names] || ['HTTPBearer']
386
+ auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
261
387
 
262
388
  new_options = opts.merge(
263
389
  :operation => :"ClientManagementApi.get_client_api_v1_clients_uid_get",
@@ -278,7 +404,7 @@ module FactPulse
278
404
 
279
405
  # Get client PDP configuration
280
406
  # Get the PDP (PA/PDP) configuration for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Security**: The client secret is never returned. Only a status (`secretStatus`) indicates whether a secret is configured. **Response**: - If configured: all config details (URLs, client_id, secret status) - If not configured: `isConfigured: false` with a message
281
- # @param uid [String]
407
+ # @param uid [String] Client unique identifier (UUID)
282
408
  # @param [Hash] opts the optional parameters
283
409
  # @return [PDPConfigResponse]
284
410
  def get_pdp_config_api_v1_clients_uid_pdp_config_get(uid, opts = {})
@@ -288,7 +414,7 @@ module FactPulse
288
414
 
289
415
  # Get client PDP configuration
290
416
  # Get the PDP (PA/PDP) configuration for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Security**: The client secret is never returned. Only a status (&#x60;secretStatus&#x60;) indicates whether a secret is configured. **Response**: - If configured: all config details (URLs, client_id, secret status) - If not configured: &#x60;isConfigured: false&#x60; with a message
291
- # @param uid [String]
417
+ # @param uid [String] Client unique identifier (UUID)
292
418
  # @param [Hash] opts the optional parameters
293
419
  # @return [Array<(PDPConfigResponse, Integer, Hash)>] PDPConfigResponse data, response status code and response headers
294
420
  def get_pdp_config_api_v1_clients_uid_pdp_config_get_with_http_info(uid, opts = {})
@@ -320,7 +446,7 @@ module FactPulse
320
446
  return_type = opts[:debug_return_type] || 'PDPConfigResponse'
321
447
 
322
448
  # auth_names
323
- auth_names = opts[:debug_auth_names] || ['HTTPBearer']
449
+ auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
324
450
 
325
451
  new_options = opts.merge(
326
452
  :operation => :"ClientManagementApi.get_pdp_config_api_v1_clients_uid_pdp_config_get",
@@ -339,6 +465,69 @@ module FactPulse
339
465
  return data, status_code, headers
340
466
  end
341
467
 
468
+ # Get webhook secret status
469
+ # Check if a webhook secret is configured for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Response**: - `hasSecret`: Whether a webhook secret is configured - `createdAt`: When the secret was created (if exists) **Note**: The secret value is never returned, only its status.
470
+ # @param uid [String] Client unique identifier (UUID)
471
+ # @param [Hash] opts the optional parameters
472
+ # @return [WebhookSecretStatusResponse]
473
+ def get_webhook_secret_status_api_v1_clients_uid_webhook_secret_status_get(uid, opts = {})
474
+ data, _status_code, _headers = get_webhook_secret_status_api_v1_clients_uid_webhook_secret_status_get_with_http_info(uid, opts)
475
+ data
476
+ end
477
+
478
+ # Get webhook secret status
479
+ # Check if a webhook secret is configured for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Response**: - &#x60;hasSecret&#x60;: Whether a webhook secret is configured - &#x60;createdAt&#x60;: When the secret was created (if exists) **Note**: The secret value is never returned, only its status.
480
+ # @param uid [String] Client unique identifier (UUID)
481
+ # @param [Hash] opts the optional parameters
482
+ # @return [Array<(WebhookSecretStatusResponse, Integer, Hash)>] WebhookSecretStatusResponse data, response status code and response headers
483
+ def get_webhook_secret_status_api_v1_clients_uid_webhook_secret_status_get_with_http_info(uid, opts = {})
484
+ if @api_client.config.debugging
485
+ @api_client.config.logger.debug 'Calling API: ClientManagementApi.get_webhook_secret_status_api_v1_clients_uid_webhook_secret_status_get ...'
486
+ end
487
+ # verify the required parameter 'uid' is set
488
+ if @api_client.config.client_side_validation && uid.nil?
489
+ fail ArgumentError, "Missing the required parameter 'uid' when calling ClientManagementApi.get_webhook_secret_status_api_v1_clients_uid_webhook_secret_status_get"
490
+ end
491
+ # resource path
492
+ local_var_path = '/api/v1/clients/{uid}/webhook-secret/status'.sub('{' + 'uid' + '}', CGI.escape(uid.to_s))
493
+
494
+ # query parameters
495
+ query_params = opts[:query_params] || {}
496
+
497
+ # header parameters
498
+ header_params = opts[:header_params] || {}
499
+ # HTTP header 'Accept' (if needed)
500
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
501
+
502
+ # form parameters
503
+ form_params = opts[:form_params] || {}
504
+
505
+ # http body (model)
506
+ post_body = opts[:debug_body]
507
+
508
+ # return_type
509
+ return_type = opts[:debug_return_type] || 'WebhookSecretStatusResponse'
510
+
511
+ # auth_names
512
+ auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
513
+
514
+ new_options = opts.merge(
515
+ :operation => :"ClientManagementApi.get_webhook_secret_status_api_v1_clients_uid_webhook_secret_status_get",
516
+ :header_params => header_params,
517
+ :query_params => query_params,
518
+ :form_params => form_params,
519
+ :body => post_body,
520
+ :auth_names => auth_names,
521
+ :return_type => return_type
522
+ )
523
+
524
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
525
+ if @api_client.config.debugging
526
+ @api_client.config.logger.debug "API called: ClientManagementApi#get_webhook_secret_status_api_v1_clients_uid_webhook_secret_status_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
527
+ end
528
+ return data, status_code, headers
529
+ end
530
+
342
531
  # List clients
343
532
  # Paginated list of clients for the account. **Scope**: Account level (JWT without client_uid) **Pagination**: - `page`: Page number (default: 1) - `pageSize`: Page size (default: 20, max: 100)
344
533
  # @param [Hash] opts the optional parameters
@@ -395,7 +584,7 @@ module FactPulse
395
584
  return_type = opts[:debug_return_type] || 'ClientListResponse'
396
585
 
397
586
  # auth_names
398
- auth_names = opts[:debug_auth_names] || ['HTTPBearer']
587
+ auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
399
588
 
400
589
  new_options = opts.merge(
401
590
  :operation => :"ClientManagementApi.list_clients_api_v1_clients_get",
@@ -414,9 +603,83 @@ module FactPulse
414
603
  return data, status_code, headers
415
604
  end
416
605
 
606
+ # Rotate client encryption key
607
+ # Rotate the client encryption key for all secrets in double encryption mode. **Scope**: Client level (JWT with client_uid that must match {uid}) **What this does**: 1. Decrypts all secrets (PDP, Chorus Pro) using the old key 2. Re-encrypts them using the new key 3. Saves to database **Important notes**: - Both keys must be base64-encoded AES-256 keys (32 bytes each) - The old key becomes invalid immediately after rotation - Only secrets encrypted with `encryptionMode: \"double\"` are affected - If the client has no double-encrypted secrets, returns 404 **Security**: - The old key must be valid (decryption is verified) - If decryption fails, rotation is aborted (atomic operation) - Neither key is logged or stored by the server
608
+ # @param uid [String] Client unique identifier (UUID)
609
+ # @param key_rotation_request [KeyRotationRequest]
610
+ # @param [Hash] opts the optional parameters
611
+ # @return [KeyRotationResponse]
612
+ def rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post(uid, key_rotation_request, opts = {})
613
+ data, _status_code, _headers = rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post_with_http_info(uid, key_rotation_request, opts)
614
+ data
615
+ end
616
+
617
+ # Rotate client encryption key
618
+ # Rotate the client encryption key for all secrets in double encryption mode. **Scope**: Client level (JWT with client_uid that must match {uid}) **What this does**: 1. Decrypts all secrets (PDP, Chorus Pro) using the old key 2. Re-encrypts them using the new key 3. Saves to database **Important notes**: - Both keys must be base64-encoded AES-256 keys (32 bytes each) - The old key becomes invalid immediately after rotation - Only secrets encrypted with &#x60;encryptionMode: \&quot;double\&quot;&#x60; are affected - If the client has no double-encrypted secrets, returns 404 **Security**: - The old key must be valid (decryption is verified) - If decryption fails, rotation is aborted (atomic operation) - Neither key is logged or stored by the server
619
+ # @param uid [String] Client unique identifier (UUID)
620
+ # @param key_rotation_request [KeyRotationRequest]
621
+ # @param [Hash] opts the optional parameters
622
+ # @return [Array<(KeyRotationResponse, Integer, Hash)>] KeyRotationResponse data, response status code and response headers
623
+ def rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post_with_http_info(uid, key_rotation_request, opts = {})
624
+ if @api_client.config.debugging
625
+ @api_client.config.logger.debug 'Calling API: ClientManagementApi.rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post ...'
626
+ end
627
+ # verify the required parameter 'uid' is set
628
+ if @api_client.config.client_side_validation && uid.nil?
629
+ fail ArgumentError, "Missing the required parameter 'uid' when calling ClientManagementApi.rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post"
630
+ end
631
+ # verify the required parameter 'key_rotation_request' is set
632
+ if @api_client.config.client_side_validation && key_rotation_request.nil?
633
+ fail ArgumentError, "Missing the required parameter 'key_rotation_request' when calling ClientManagementApi.rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post"
634
+ end
635
+ # resource path
636
+ local_var_path = '/api/v1/clients/{uid}/rotate-encryption-key'.sub('{' + 'uid' + '}', CGI.escape(uid.to_s))
637
+
638
+ # query parameters
639
+ query_params = opts[:query_params] || {}
640
+
641
+ # header parameters
642
+ header_params = opts[:header_params] || {}
643
+ # HTTP header 'Accept' (if needed)
644
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
645
+ # HTTP header 'Content-Type'
646
+ content_type = @api_client.select_header_content_type(['application/json'])
647
+ if !content_type.nil?
648
+ header_params['Content-Type'] = content_type
649
+ end
650
+
651
+ # form parameters
652
+ form_params = opts[:form_params] || {}
653
+
654
+ # http body (model)
655
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(key_rotation_request)
656
+
657
+ # return_type
658
+ return_type = opts[:debug_return_type] || 'KeyRotationResponse'
659
+
660
+ # auth_names
661
+ auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
662
+
663
+ new_options = opts.merge(
664
+ :operation => :"ClientManagementApi.rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post",
665
+ :header_params => header_params,
666
+ :query_params => query_params,
667
+ :form_params => form_params,
668
+ :body => post_body,
669
+ :auth_names => auth_names,
670
+ :return_type => return_type
671
+ )
672
+
673
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
674
+ if @api_client.config.debugging
675
+ @api_client.config.logger.debug "API called: ClientManagementApi#rotate_encryption_key_api_v1_clients_uid_rotate_encryption_key_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
676
+ end
677
+ return data, status_code, headers
678
+ end
679
+
417
680
  # Update a client
418
681
  # Update client information (partial update). **Scope**: Client level (JWT with client_uid that must match {uid}) **Updatable fields**: - `name`: Client name - `description`: Description - `siret`: SIRET (14 digits) Only provided fields are updated.
419
- # @param uid [String]
682
+ # @param uid [String] Client unique identifier (UUID)
420
683
  # @param client_update_request [ClientUpdateRequest]
421
684
  # @param [Hash] opts the optional parameters
422
685
  # @return [ClientDetail]
@@ -427,7 +690,7 @@ module FactPulse
427
690
 
428
691
  # Update a client
429
692
  # Update client information (partial update). **Scope**: Client level (JWT with client_uid that must match {uid}) **Updatable fields**: - &#x60;name&#x60;: Client name - &#x60;description&#x60;: Description - &#x60;siret&#x60;: SIRET (14 digits) Only provided fields are updated.
430
- # @param uid [String]
693
+ # @param uid [String] Client unique identifier (UUID)
431
694
  # @param client_update_request [ClientUpdateRequest]
432
695
  # @param [Hash] opts the optional parameters
433
696
  # @return [Array<(ClientDetail, Integer, Hash)>] ClientDetail data, response status code and response headers
@@ -469,7 +732,7 @@ module FactPulse
469
732
  return_type = opts[:debug_return_type] || 'ClientDetail'
470
733
 
471
734
  # auth_names
472
- auth_names = opts[:debug_auth_names] || ['HTTPBearer']
735
+ auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
473
736
 
474
737
  new_options = opts.merge(
475
738
  :operation => :"ClientManagementApi.update_client_api_v1_clients_uid_patch",
@@ -489,10 +752,11 @@ module FactPulse
489
752
  end
490
753
 
491
754
  # Configure client PDP
492
- # Configure or update the PDP (PA/PDP) configuration for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Required fields**: - `flowServiceUrl`: PDP Flow Service URL - `tokenUrl`: PDP OAuth token URL - `oauthClientId`: OAuth Client ID - `clientSecret`: OAuth Client Secret (sent but NEVER returned) **Optional fields**: - `isActive`: Enable/disable the config (default: true) - `modeSandbox`: Sandbox mode (default: false) **Security**: The `clientSecret` is stored encrypted on Django side and is never returned in API responses.
493
- # @param uid [String]
755
+ # Configure or update the PDP (PA/PDP) configuration for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Required fields**: - `flowServiceUrl`: PDP Flow Service URL - `tokenUrl`: PDP OAuth token URL - `oauthClientId`: OAuth Client ID - `clientSecret`: OAuth Client Secret (sent but NEVER returned) **Optional fields**: - `isActive`: Enable/disable the config (default: true) - `modeSandbox`: Sandbox mode (default: false) - `encryptionMode`: Encryption mode (default: \"fernet\") - \"fernet\": Server-side encryption only - \"double\": Client AES-256-GCM + Server Fernet (requires X-Encryption-Key header) **Double Encryption Mode**: When `encryptionMode` is set to \"double\", you MUST also provide the `X-Encryption-Key` header containing a base64-encoded AES-256 key (32 bytes). This key is used to encrypt the `clientSecret` on the client side before the server encrypts it again with Fernet. The server cannot decrypt the secret without the client key. **Security**: The `clientSecret` is stored encrypted on Django side and is never returned in API responses.
756
+ # @param uid [String] Client unique identifier (UUID)
494
757
  # @param pdp_config_update_request [PDPConfigUpdateRequest]
495
758
  # @param [Hash] opts the optional parameters
759
+ # @option opts [String] :x_encryption_key Client encryption key for double encryption mode. Must be a base64-encoded AES-256 key (32 bytes). Required only when accessing resources encrypted with encryption_mode&#x3D;&#39;double&#39;.
496
760
  # @return [PDPConfigResponse]
497
761
  def update_pdp_config_api_v1_clients_uid_pdp_config_put(uid, pdp_config_update_request, opts = {})
498
762
  data, _status_code, _headers = update_pdp_config_api_v1_clients_uid_pdp_config_put_with_http_info(uid, pdp_config_update_request, opts)
@@ -500,10 +764,11 @@ module FactPulse
500
764
  end
501
765
 
502
766
  # Configure client PDP
503
- # Configure or update the PDP (PA/PDP) configuration for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Required fields**: - &#x60;flowServiceUrl&#x60;: PDP Flow Service URL - &#x60;tokenUrl&#x60;: PDP OAuth token URL - &#x60;oauthClientId&#x60;: OAuth Client ID - &#x60;clientSecret&#x60;: OAuth Client Secret (sent but NEVER returned) **Optional fields**: - &#x60;isActive&#x60;: Enable/disable the config (default: true) - &#x60;modeSandbox&#x60;: Sandbox mode (default: false) **Security**: The &#x60;clientSecret&#x60; is stored encrypted on Django side and is never returned in API responses.
504
- # @param uid [String]
767
+ # Configure or update the PDP (PA/PDP) configuration for a client. **Scope**: Client level (JWT with client_uid that must match {uid}) **Required fields**: - &#x60;flowServiceUrl&#x60;: PDP Flow Service URL - &#x60;tokenUrl&#x60;: PDP OAuth token URL - &#x60;oauthClientId&#x60;: OAuth Client ID - &#x60;clientSecret&#x60;: OAuth Client Secret (sent but NEVER returned) **Optional fields**: - &#x60;isActive&#x60;: Enable/disable the config (default: true) - &#x60;modeSandbox&#x60;: Sandbox mode (default: false) - &#x60;encryptionMode&#x60;: Encryption mode (default: \&quot;fernet\&quot;) - \&quot;fernet\&quot;: Server-side encryption only - \&quot;double\&quot;: Client AES-256-GCM + Server Fernet (requires X-Encryption-Key header) **Double Encryption Mode**: When &#x60;encryptionMode&#x60; is set to \&quot;double\&quot;, you MUST also provide the &#x60;X-Encryption-Key&#x60; header containing a base64-encoded AES-256 key (32 bytes). This key is used to encrypt the &#x60;clientSecret&#x60; on the client side before the server encrypts it again with Fernet. The server cannot decrypt the secret without the client key. **Security**: The &#x60;clientSecret&#x60; is stored encrypted on Django side and is never returned in API responses.
768
+ # @param uid [String] Client unique identifier (UUID)
505
769
  # @param pdp_config_update_request [PDPConfigUpdateRequest]
506
770
  # @param [Hash] opts the optional parameters
771
+ # @option opts [String] :x_encryption_key Client encryption key for double encryption mode. Must be a base64-encoded AES-256 key (32 bytes). Required only when accessing resources encrypted with encryption_mode&#x3D;&#39;double&#39;.
507
772
  # @return [Array<(PDPConfigResponse, Integer, Hash)>] PDPConfigResponse data, response status code and response headers
508
773
  def update_pdp_config_api_v1_clients_uid_pdp_config_put_with_http_info(uid, pdp_config_update_request, opts = {})
509
774
  if @api_client.config.debugging
@@ -532,6 +797,7 @@ module FactPulse
532
797
  if !content_type.nil?
533
798
  header_params['Content-Type'] = content_type
534
799
  end
800
+ header_params[:'X-Encryption-Key'] = opts[:'x_encryption_key'] if !opts[:'x_encryption_key'].nil?
535
801
 
536
802
  # form parameters
537
803
  form_params = opts[:form_params] || {}
@@ -543,7 +809,7 @@ module FactPulse
543
809
  return_type = opts[:debug_return_type] || 'PDPConfigResponse'
544
810
 
545
811
  # auth_names
546
- auth_names = opts[:debug_auth_names] || ['HTTPBearer']
812
+ auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
547
813
 
548
814
  new_options = opts.merge(
549
815
  :operation => :"ClientManagementApi.update_pdp_config_api_v1_clients_uid_pdp_config_put",
@@ -1,12 +1,12 @@
1
1
  =begin
2
2
  #FactPulse REST API
3
3
 
4
- # REST API for electronic invoicing in France: Factur-X, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Factur-X - Generation - **Formats**: XML only or PDF/A-3 with embedded XML - **Profiles**: MINIMUM, BASIC, EN16931, EXTENDED - **Standards**: EN 16931 (EU directive 2014/55), ISO 19005-3 (PDF/A-3), CII (UN/CEFACT) - **🆕 Simplified Format**: Generation from SIRET + auto-enrichment (Chorus Pro API + Business Search) ### ✅ Factur-X - Validation - **XML Validation**: Schematron (45 to 210+ rules depending on profile) - **PDF Validation**: PDF/A-3, Factur-X XMP metadata - **VeraPDF**: Strict PDF/A validation (146+ ISO 19005-3 rules) ### ✍️ Electronic Signature - **Standards**: PAdES-B-B, PAdES-B-T (RFC 3161 timestamping), PAdES-B-LT (long-term archival) - **eIDAS Levels**: SES (self-signed), AdES (commercial CA), QES (QTSP) - **Validation**: Cryptographic integrity and certificate verification ### 📋 Flux 6 - Invoice Lifecycle (CDAR) - **CDAR Messages**: Acknowledgements, invoice statuses - **PPF Statuses**: REFUSED (210), PAID (212) ### 📊 Flux 10 - E-Reporting - **Tax Declarations**: International B2B, B2C - **Flow Types**: 10.1 (B2B transactions), 10.2 (B2B payments), 10.3 (B2C transactions), 10.4 (B2C payments) ### 📡 AFNOR PDP/PA (XP Z12-013) - **Flow Service**: Submit and search flows to PDPs - **Directory Service**: Company search (SIREN/SIRET) - **Multi-client**: Support for multiple PDP configs per user ### 🏛️ Chorus Pro - **Public Sector Invoicing**: Complete API for Chorus Pro ### ⏳ Async Tasks - **Celery**: Asynchronous generation, validation and signing - **Polling**: Status tracking via `/tasks/{task_id}/status` - **Webhooks**: Automatic notifications when tasks complete ## 🔒 Authentication All requests require a **JWT token** in the Authorization header: ``` Authorization: Bearer YOUR_JWT_TOKEN ``` ### How to obtain a JWT token? #### 🔑 Method 1: `/api/token/` API (Recommended) **URL:** `https://factpulse.fr/api/token/` This method is **recommended** for integration in your applications and CI/CD workflows. **Prerequisites:** Having set a password on your account **For users registered via email/password:** - You already have a password, use it directly **For users registered via OAuth (Google/GitHub):** - You must first set a password at: https://factpulse.fr/accounts/password/set/ - Once the password is created, you can use the API **Request example:** ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\" }' ``` **Optional `client_uid` parameter:** To select credentials for a specific client (PA/PDP, Chorus Pro, signing certificates), add `client_uid`: ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\", \"client_uid\": \"550e8400-e29b-41d4-a716-446655440000\" }' ``` The `client_uid` will be included in the JWT and allow the API to automatically use: - AFNOR/PDP credentials configured for this client - Chorus Pro credentials configured for this client - Electronic signature certificates configured for this client **Response:** ```json { \"access\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\", // Access token (validity: 30 min) \"refresh\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\" // Refresh token (validity: 7 days) } ``` **Advantages:** - ✅ Full automation (CI/CD, scripts) - ✅ Programmatic token management - ✅ Refresh token support for automatic access renewal - ✅ Easy integration in any language/tool #### 🖥️ Method 2: Dashboard Generation (Alternative) **URL:** https://factpulse.fr/api/dashboard/ This method is suitable for quick tests or occasional use via the graphical interface. **How it works:** - Log in to the dashboard - Use the \"Generate Test Token\" or \"Generate Production Token\" buttons - Works for **all** users (OAuth and email/password), without requiring a password **Token types:** - **Test Token**: 24h validity, 1000 calls/day quota (free) - **Production Token**: 7 days validity, quota based on your plan **Advantages:** - ✅ Quick for API testing - ✅ No password required - ✅ Simple visual interface **Disadvantages:** - ❌ Requires manual action - ❌ No refresh token - ❌ Less suited for automation ### 📚 Full Documentation For more information on authentication and API usage: https://factpulse.fr/documentation-api/
4
+ # REST API for electronic invoicing in France: Factur-X (CII), UBL 2.1, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Invoice Generation - **Formats**: CII XML, UBL 2.1 XML, or Factur-X PDF/A-3 - **Profiles** (CII/PDF): MINIMUM, BASIC, EN16931, EXTENDED - **UBL**: Always EN16931 compliant - **Standards**: EN 16931 (EU directive 2014/55), ISO 19005-3 (PDF/A-3), CII (UN/CEFACT), UBL 2.1 (OASIS) - **Simplified Format**: Generation from SIRET + auto-enrichment (Chorus Pro API + Business Search) ### ✅ Factur-X - Validation - **XML Validation**: Schematron (45 to 210+ rules depending on profile) - **PDF Validation**: PDF/A-3, Factur-X XMP metadata - **VeraPDF**: Strict PDF/A validation (146+ ISO 19005-3 rules) ### ✍️ Electronic Signature - **Standards**: PAdES-B-B, PAdES-B-T (RFC 3161 timestamping), PAdES-B-LT (long-term archival) - **eIDAS Levels**: SES (self-signed), AdES (commercial CA), QES (QTSP) - **Validation**: Cryptographic integrity and certificate verification ### 📋 Flux 6 - Invoice Lifecycle (CDAR) - **CDAR Messages**: Acknowledgements, invoice statuses - **PPF Statuses**: REFUSED (210), PAID (212) ### 📊 Flux 10 - E-Reporting - **Tax Declarations**: International B2B, B2C - **Flow Types**: 10.1 (B2B transactions), 10.2 (B2B payments), 10.3 (B2C transactions), 10.4 (B2C payments) ### 📡 AFNOR PDP/PA (XP Z12-013) - **Flow Service**: Submit and search flows to PDPs - **Directory Service**: Company search (SIREN/SIRET) - **Multi-client**: Support for multiple PDP configs per user ### 🏛️ Chorus Pro - **Public Sector Invoicing**: Complete API for Chorus Pro ### ⏳ Async Tasks - **Celery**: Asynchronous generation, validation and signing - **Polling**: Status tracking via `/tasks/{task_id}/status` - **Webhooks**: Automatic notifications when tasks complete ## 🔒 Authentication All requests require a **JWT token** in the Authorization header: ``` Authorization: Bearer YOUR_JWT_TOKEN ``` ### How to obtain a JWT token? #### 🔑 Method 1: `/api/token/` API (Recommended) **URL:** `https://factpulse.fr/api/token/` This method is **recommended** for integration in your applications and CI/CD workflows. **Prerequisites:** Having set a password on your account **For users registered via email/password:** - You already have a password, use it directly **For users registered via OAuth (Google/GitHub):** - You must first set a password at: https://factpulse.fr/accounts/password/set/ - Once the password is created, you can use the API **Request example:** ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\" }' ``` **Optional `client_uid` parameter:** To select credentials for a specific client (PA/PDP, Chorus Pro, signing certificates), add `client_uid`: ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\", \"client_uid\": \"550e8400-e29b-41d4-a716-446655440000\" }' ``` The `client_uid` will be included in the JWT and allow the API to automatically use: - AFNOR/PDP credentials configured for this client - Chorus Pro credentials configured for this client - Electronic signature certificates configured for this client **Response:** ```json { \"access\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\", // Access token (validity: 30 min) \"refresh\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\" // Refresh token (validity: 7 days) } ``` **Advantages:** - ✅ Full automation (CI/CD, scripts) - ✅ Programmatic token management - ✅ Refresh token support for automatic access renewal - ✅ Easy integration in any language/tool #### 🖥️ Method 2: Dashboard Generation (Alternative) **URL:** https://factpulse.fr/api/dashboard/ This method is suitable for quick tests or occasional use via the graphical interface. **How it works:** - Log in to the dashboard - Use the \"Generate Test Token\" or \"Generate Production Token\" buttons - Works for **all** users (OAuth and email/password), without requiring a password **Token types:** - **Test Token**: 24h validity, 1000 calls/day quota (free) - **Production Token**: 7 days validity, quota based on your plan **Advantages:** - ✅ Quick for API testing - ✅ No password required - ✅ Simple visual interface **Disadvantages:** - ❌ Requires manual action - ❌ No refresh token - ❌ Less suited for automation ### 📚 Full Documentation For more information on authentication and API usage: https://factpulse.fr/documentation-api/
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: contact@factpulse.fr
8
8
  Generated by: https://openapi-generator.tech
9
- Generator version: 7.20.0-SNAPSHOT
9
+ Generator version: 7.21.0-SNAPSHOT
10
10
 
11
11
  =end
12
12
 
@@ -21,7 +21,7 @@ module FactPulse
21
21
  end
22
22
  # Check if a file exists
23
23
  # Check if a temporary file exists and get its metadata without downloading. Useful for: - Verifying a download URL is still valid - Getting file size before downloading - Checking expiration time **Security**: Requires authentication, only file owner can check.
24
- # @param download_id [String]
24
+ # @param download_id [String] Unique identifier of the temporary file to check
25
25
  # @param [Hash] opts the optional parameters
26
26
  # @return [Object]
27
27
  def check_file_api_v1_download_download_id_head(download_id, opts = {})
@@ -31,7 +31,7 @@ module FactPulse
31
31
 
32
32
  # Check if a file exists
33
33
  # Check if a temporary file exists and get its metadata without downloading. Useful for: - Verifying a download URL is still valid - Getting file size before downloading - Checking expiration time **Security**: Requires authentication, only file owner can check.
34
- # @param download_id [String]
34
+ # @param download_id [String] Unique identifier of the temporary file to check
35
35
  # @param [Hash] opts the optional parameters
36
36
  # @return [Array<(Object, Integer, Hash)>] Object data, response status code and response headers
37
37
  def check_file_api_v1_download_download_id_head_with_http_info(download_id, opts = {})
@@ -63,7 +63,7 @@ module FactPulse
63
63
  return_type = opts[:debug_return_type] || 'Object'
64
64
 
65
65
  # auth_names
66
- auth_names = opts[:debug_auth_names] || ['HTTPBearer']
66
+ auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
67
67
 
68
68
  new_options = opts.merge(
69
69
  :operation => :"DownloadsApi.check_file_api_v1_download_download_id_head",
@@ -84,7 +84,7 @@ module FactPulse
84
84
 
85
85
  # Download a temporary file
86
86
  # Download a file stored temporarily after asynchronous processing. **Usage**: - This URL is provided in webhook notifications when using `webhook_mode: \"download_url\"` - Files are automatically deleted after 1 hour - Each file can only be downloaded until it expires **Security**: - Requires a valid JWT token - Only the user who initiated the task can download the file
87
- # @param download_id [String]
87
+ # @param download_id [String] Unique identifier of the temporary file to download
88
88
  # @param [Hash] opts the optional parameters
89
89
  # @option opts [Boolean] :delete_after If true, delete the file after download (one-time download) (default to false)
90
90
  # @return [Object]
@@ -95,7 +95,7 @@ module FactPulse
95
95
 
96
96
  # Download a temporary file
97
97
  # Download a file stored temporarily after asynchronous processing. **Usage**: - This URL is provided in webhook notifications when using &#x60;webhook_mode: \&quot;download_url\&quot;&#x60; - Files are automatically deleted after 1 hour - Each file can only be downloaded until it expires **Security**: - Requires a valid JWT token - Only the user who initiated the task can download the file
98
- # @param download_id [String]
98
+ # @param download_id [String] Unique identifier of the temporary file to download
99
99
  # @param [Hash] opts the optional parameters
100
100
  # @option opts [Boolean] :delete_after If true, delete the file after download (one-time download) (default to false)
101
101
  # @return [Array<(Object, Integer, Hash)>] Object data, response status code and response headers
@@ -129,7 +129,7 @@ module FactPulse
129
129
  return_type = opts[:debug_return_type] || 'Object'
130
130
 
131
131
  # auth_names
132
- auth_names = opts[:debug_auth_names] || ['HTTPBearer']
132
+ auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
133
133
 
134
134
  new_options = opts.merge(
135
135
  :operation => :"DownloadsApi.download_file_api_v1_download_download_id_get",