factpulse 3.0.37 → 4.0.1

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 (370) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -12
  3. data/Gemfile.lock +1 -1
  4. data/README.md +136 -138
  5. data/docs/AllowanceCharge.md +1 -1
  6. data/docs/Amount2.md +15 -0
  7. data/docs/CDARCycleDeVieApi.md +154 -30
  8. data/docs/ChorusProCredentials.md +8 -8
  9. data/docs/ChorusProDestination.md +1 -1
  10. data/docs/ClientActivateResponse.md +22 -0
  11. data/docs/ClientCreateRequest.md +22 -0
  12. data/docs/ClientDetail.md +38 -0
  13. data/docs/ClientListResponse.md +24 -0
  14. data/docs/ClientManagementApi.md +575 -0
  15. data/docs/ClientSummary.md +38 -0
  16. data/docs/ClientUpdateRequest.md +22 -0
  17. data/docs/DownloadsApi.md +0 -144
  18. data/docs/EncaisseeRequest.md +36 -0
  19. data/docs/FactureElectroniqueRestApiSchemasCdarValidationErrorResponse.md +24 -0
  20. data/docs/FactureElectroniqueRestApiSchemasProcessingChorusProCredentials.md +26 -0
  21. data/docs/GetChorusProIdRequest.md +1 -1
  22. data/docs/GetInvoiceRequest.md +1 -1
  23. data/docs/GetStructureRequest.md +1 -1
  24. data/docs/PDPConfigResponse.md +44 -0
  25. data/docs/PDPConfigUpdateRequest.md +28 -0
  26. data/docs/PaymentAmountByRate.md +1 -1
  27. data/docs/Recipient.md +1 -1
  28. data/docs/RefuseeRequest.md +36 -0
  29. data/docs/SearchStructureRequest.md +1 -1
  30. data/docs/SecretStatus.md +20 -0
  31. data/docs/SimplifiedCDARResponse.md +26 -0
  32. data/docs/SubmitCDARRequest.md +9 -1
  33. data/docs/SubmitCDARXMLRequest.md +9 -1
  34. data/docs/SubmitCompleteInvoiceResponse.md +2 -2
  35. data/docs/SubmitInvoiceRequest.md +1 -1
  36. data/docs/Supplier.md +1 -1
  37. data/docs/ValidateCDARResponse.md +2 -2
  38. data/docs/ValidationErrorResponse.md +2 -8
  39. data/factpulse.gemspec +1 -1
  40. data/lib/factpulse/api/afnorpdppa_api.rb +1 -1
  41. data/lib/factpulse/api/afnorpdppa_directory_service_api.rb +1 -1
  42. data/lib/factpulse/api/afnorpdppa_flow_service_api.rb +1 -1
  43. data/lib/factpulse/api/cdar_cycle_de_vie_api.rb +159 -49
  44. data/lib/factpulse/api/chorus_pro_api.rb +1 -1
  45. data/lib/factpulse/api/client_management_api.rb +565 -0
  46. data/lib/factpulse/api/document_conversion_api.rb +1 -1
  47. data/lib/factpulse/api/downloads_api.rb +1 -130
  48. data/lib/factpulse/api/e_reporting_api.rb +1 -1
  49. data/lib/factpulse/api/health_api.rb +1 -1
  50. data/lib/factpulse/api/invoice_processing_api.rb +1 -1
  51. data/lib/factpulse/api/pdfxml_verification_api.rb +1 -1
  52. data/lib/factpulse/api/user_api.rb +1 -1
  53. data/lib/factpulse/api_client.rb +1 -1
  54. data/lib/factpulse/api_error.rb +1 -1
  55. data/lib/factpulse/api_model_base.rb +1 -1
  56. data/lib/factpulse/configuration.rb +1 -1
  57. data/lib/factpulse/helpers/client.rb +199 -754
  58. data/lib/factpulse/helpers/exceptions.rb +38 -14
  59. data/lib/factpulse/helpers/helpers.rb +8 -7
  60. data/lib/factpulse/models/acknowledgment_status.rb +1 -1
  61. data/lib/factpulse/models/action_code_info.rb +1 -1
  62. data/lib/factpulse/models/action_codes_response.rb +1 -1
  63. data/lib/factpulse/models/additional_document.rb +1 -1
  64. data/lib/factpulse/models/afnor_acknowledgement.rb +1 -1
  65. data/lib/factpulse/models/afnor_acknowledgement_detail.rb +1 -1
  66. data/lib/factpulse/models/afnor_address_edit.rb +1 -1
  67. data/lib/factpulse/models/afnor_address_patch.rb +1 -1
  68. data/lib/factpulse/models/afnor_address_put.rb +1 -1
  69. data/lib/factpulse/models/afnor_address_read.rb +1 -1
  70. data/lib/factpulse/models/afnor_algorithm.rb +1 -1
  71. data/lib/factpulse/models/afnor_contains_operator.rb +1 -1
  72. data/lib/factpulse/models/afnor_create_directory_line_body.rb +1 -1
  73. data/lib/factpulse/models/afnor_create_directory_line_body_addressing_information.rb +1 -1
  74. data/lib/factpulse/models/afnor_create_directory_line_body_period.rb +1 -1
  75. data/lib/factpulse/models/afnor_create_routing_code_body.rb +1 -1
  76. data/lib/factpulse/models/afnor_credentials.rb +1 -1
  77. data/lib/factpulse/models/afnor_destination.rb +1 -1
  78. data/lib/factpulse/models/afnor_diffusion_status.rb +1 -1
  79. data/lib/factpulse/models/afnor_directory_line_field.rb +1 -1
  80. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code.rb +1 -1
  81. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_platform.rb +1 -1
  82. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_routing_code.rb +1 -1
  83. data/lib/factpulse/models/afnor_directory_line_post201_response.rb +1 -1
  84. data/lib/factpulse/models/afnor_directory_line_search_post200_response.rb +1 -1
  85. data/lib/factpulse/models/afnor_entity_type.rb +1 -1
  86. data/lib/factpulse/models/afnor_error.rb +1 -1
  87. data/lib/factpulse/models/afnor_facility_administrative_status.rb +1 -1
  88. data/lib/factpulse/models/afnor_facility_nature.rb +1 -1
  89. data/lib/factpulse/models/afnor_facility_payload_history.rb +1 -1
  90. data/lib/factpulse/models/afnor_facility_payload_history_ule_b2g_additional_data.rb +1 -1
  91. data/lib/factpulse/models/afnor_facility_payload_included.rb +1 -1
  92. data/lib/factpulse/models/afnor_facility_type.rb +1 -1
  93. data/lib/factpulse/models/afnor_flow.rb +1 -1
  94. data/lib/factpulse/models/afnor_flow_ack_status.rb +1 -1
  95. data/lib/factpulse/models/afnor_flow_direction.rb +1 -1
  96. data/lib/factpulse/models/afnor_flow_info.rb +1 -1
  97. data/lib/factpulse/models/afnor_flow_profile.rb +1 -1
  98. data/lib/factpulse/models/afnor_flow_syntax.rb +1 -1
  99. data/lib/factpulse/models/afnor_flow_type.rb +1 -1
  100. data/lib/factpulse/models/afnor_full_flow_info.rb +1 -1
  101. data/lib/factpulse/models/afnor_health_check_response.rb +1 -1
  102. data/lib/factpulse/models/afnor_legal_unit_administrative_status.rb +1 -1
  103. data/lib/factpulse/models/afnor_legal_unit_payload_history.rb +1 -1
  104. data/lib/factpulse/models/afnor_legal_unit_payload_included.rb +1 -1
  105. data/lib/factpulse/models/afnor_legal_unit_payload_included_no_siren.rb +1 -1
  106. data/lib/factpulse/models/afnor_platform_status.rb +1 -1
  107. data/lib/factpulse/models/afnor_processing_rule.rb +1 -1
  108. data/lib/factpulse/models/afnor_reason_code.rb +1 -1
  109. data/lib/factpulse/models/afnor_reason_code_enum.rb +1 -1
  110. data/lib/factpulse/models/afnor_recipient_platform_type.rb +1 -1
  111. data/lib/factpulse/models/afnor_result.rb +1 -1
  112. data/lib/factpulse/models/afnor_routing_code_administrative_status.rb +1 -1
  113. data/lib/factpulse/models/afnor_routing_code_field.rb +1 -1
  114. data/lib/factpulse/models/afnor_routing_code_payload_history_legal_unit_facility.rb +1 -1
  115. data/lib/factpulse/models/afnor_routing_code_post201_response.rb +1 -1
  116. data/lib/factpulse/models/afnor_routing_code_search.rb +1 -1
  117. data/lib/factpulse/models/afnor_routing_code_search_filters.rb +1 -1
  118. data/lib/factpulse/models/afnor_routing_code_search_filters_administrative_status.rb +1 -1
  119. data/lib/factpulse/models/afnor_routing_code_search_filters_routing_code_name.rb +1 -1
  120. data/lib/factpulse/models/afnor_routing_code_search_filters_routing_identifier.rb +1 -1
  121. data/lib/factpulse/models/afnor_routing_code_search_post200_response.rb +1 -1
  122. data/lib/factpulse/models/afnor_routing_code_search_sorting_inner.rb +1 -1
  123. data/lib/factpulse/models/afnor_search_directory_line.rb +1 -1
  124. data/lib/factpulse/models/afnor_search_directory_line_filters.rb +1 -1
  125. data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_identifier.rb +1 -1
  126. data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_suffix.rb +1 -1
  127. data/lib/factpulse/models/afnor_search_directory_line_sorting_inner.rb +1 -1
  128. data/lib/factpulse/models/afnor_search_flow_content.rb +1 -1
  129. data/lib/factpulse/models/afnor_search_flow_filters.rb +1 -1
  130. data/lib/factpulse/models/afnor_search_flow_params.rb +1 -1
  131. data/lib/factpulse/models/afnor_search_siren.rb +1 -1
  132. data/lib/factpulse/models/afnor_search_siren_filters.rb +1 -1
  133. data/lib/factpulse/models/afnor_search_siren_filters_administrative_status.rb +1 -1
  134. data/lib/factpulse/models/afnor_search_siren_filters_business_name.rb +1 -1
  135. data/lib/factpulse/models/afnor_search_siren_filters_entity_type.rb +1 -1
  136. data/lib/factpulse/models/afnor_search_siren_filters_siren.rb +1 -1
  137. data/lib/factpulse/models/afnor_search_siren_sorting_inner.rb +1 -1
  138. data/lib/factpulse/models/afnor_search_siret.rb +1 -1
  139. data/lib/factpulse/models/afnor_search_siret_filters.rb +1 -1
  140. data/lib/factpulse/models/afnor_search_siret_filters_address_lines.rb +1 -1
  141. data/lib/factpulse/models/afnor_search_siret_filters_administrative_status.rb +1 -1
  142. data/lib/factpulse/models/afnor_search_siret_filters_country_subdivision.rb +1 -1
  143. data/lib/factpulse/models/afnor_search_siret_filters_facility_type.rb +1 -1
  144. data/lib/factpulse/models/afnor_search_siret_filters_locality.rb +1 -1
  145. data/lib/factpulse/models/afnor_search_siret_filters_name.rb +1 -1
  146. data/lib/factpulse/models/afnor_search_siret_filters_postal_code.rb +1 -1
  147. data/lib/factpulse/models/afnor_search_siret_filters_siret.rb +1 -1
  148. data/lib/factpulse/models/afnor_search_siret_sorting_inner.rb +1 -1
  149. data/lib/factpulse/models/afnor_siren_field.rb +1 -1
  150. data/lib/factpulse/models/afnor_siren_search_post200_response.rb +1 -1
  151. data/lib/factpulse/models/afnor_siret_field.rb +1 -1
  152. data/lib/factpulse/models/afnor_siret_search_post200_response.rb +1 -1
  153. data/lib/factpulse/models/afnor_sorting_order.rb +1 -1
  154. data/lib/factpulse/models/afnor_strict_operator.rb +1 -1
  155. data/lib/factpulse/models/afnor_update_patch_directory_line_body.rb +1 -1
  156. data/lib/factpulse/models/afnor_update_patch_routing_code_body.rb +1 -1
  157. data/lib/factpulse/models/afnor_update_put_routing_code_body.rb +1 -1
  158. data/lib/factpulse/models/afnor_webhook_callback_content.rb +1 -1
  159. data/lib/factpulse/models/aggregated_payment_input.rb +1 -1
  160. data/lib/factpulse/models/aggregated_transaction_input.rb +1 -1
  161. data/lib/factpulse/models/allowance_charge.rb +2 -2
  162. data/lib/factpulse/models/allowance_charge_reason_code.rb +1 -1
  163. data/lib/factpulse/models/allowance_reason_code.rb +1 -1
  164. data/lib/factpulse/models/allowance_total_amount.rb +1 -1
  165. data/lib/factpulse/models/amount.rb +2 -2
  166. data/lib/factpulse/models/amount1.rb +2 -2
  167. data/lib/factpulse/models/amount2.rb +104 -0
  168. data/lib/factpulse/models/amount_due.rb +1 -1
  169. data/lib/factpulse/models/api_error.rb +1 -1
  170. data/lib/factpulse/models/api_profile.rb +1 -1
  171. data/lib/factpulse/models/async_task_status.rb +1 -1
  172. data/lib/factpulse/models/base_amount.rb +1 -1
  173. data/lib/factpulse/models/bounding_box_schema.rb +1 -1
  174. data/lib/factpulse/models/buyercountry.rb +1 -1
  175. data/lib/factpulse/models/celery_status.rb +1 -1
  176. data/lib/factpulse/models/certificate_info_response.rb +1 -1
  177. data/lib/factpulse/models/charge_total_amount.rb +1 -1
  178. data/lib/factpulse/models/chorus_pro_credentials.rb +95 -27
  179. data/lib/factpulse/models/chorus_pro_destination.rb +2 -2
  180. data/lib/factpulse/models/chorus_pro_result.rb +1 -1
  181. data/lib/factpulse/models/{facture_electronique_rest_api_schemas_validation_validation_error_response.rb → client_activate_response.rb} +76 -24
  182. data/lib/factpulse/models/client_create_request.rb +236 -0
  183. data/lib/factpulse/models/client_detail.rb +368 -0
  184. data/lib/factpulse/models/client_list_response.rb +249 -0
  185. data/lib/factpulse/models/client_summary.rb +368 -0
  186. data/lib/factpulse/models/client_update_request.rb +225 -0
  187. data/lib/factpulse/models/contact.rb +1 -1
  188. data/lib/factpulse/models/convert_resume_request.rb +1 -1
  189. data/lib/factpulse/models/convert_success_response.rb +1 -1
  190. data/lib/factpulse/models/convert_validation_failed_response.rb +1 -1
  191. data/lib/factpulse/models/country_code.rb +1 -1
  192. data/lib/factpulse/models/create_aggregated_report_request.rb +1 -1
  193. data/lib/factpulse/models/create_cdar_request.rb +1 -1
  194. data/lib/factpulse/models/create_e_reporting_request.rb +1 -1
  195. data/lib/factpulse/models/currency.rb +1 -1
  196. data/lib/factpulse/models/currency_code.rb +1 -1
  197. data/lib/factpulse/models/delivery_party.rb +1 -1
  198. data/lib/factpulse/models/destination.rb +1 -1
  199. data/lib/factpulse/models/doc_type.rb +1 -1
  200. data/lib/factpulse/models/document_type_info.rb +1 -1
  201. data/lib/factpulse/models/e_reporting_flow_type.rb +1 -1
  202. data/lib/factpulse/models/e_reporting_validation_error.rb +1 -1
  203. data/lib/factpulse/models/electronic_address.rb +1 -1
  204. data/lib/factpulse/models/encaisseamount.rb +1 -1
  205. data/lib/factpulse/models/encaisseamount1.rb +1 -1
  206. data/lib/factpulse/models/encaissee_request.rb +293 -0
  207. data/lib/factpulse/models/enriched_invoice_info.rb +1 -1
  208. data/lib/factpulse/models/error_level.rb +1 -1
  209. data/lib/factpulse/models/error_source.rb +1 -1
  210. data/lib/factpulse/models/extraction_info.rb +1 -1
  211. data/lib/factpulse/models/factur_x_invoice.rb +1 -1
  212. data/lib/factpulse/models/factur_xpdf_info.rb +1 -1
  213. data/lib/factpulse/models/{body_submit_cdar_xml_api_v1_cdar_submit_xml_post.rb → facture_electronique_rest_api_schemas_cdar_validation_error_response.rb} +68 -27
  214. data/lib/factpulse/models/facture_electronique_rest_api_schemas_ereporting_invoice_type_code.rb +1 -1
  215. data/lib/factpulse/models/{facture_electronique_rest_api_schemas_chorus_pro_chorus_pro_credentials.rb → facture_electronique_rest_api_schemas_processing_chorus_pro_credentials.rb} +30 -98
  216. data/lib/factpulse/models/field_status.rb +1 -1
  217. data/lib/factpulse/models/file_info.rb +1 -1
  218. data/lib/factpulse/models/files_info.rb +1 -1
  219. data/lib/factpulse/models/flow_direction.rb +1 -1
  220. data/lib/factpulse/models/flow_profile.rb +1 -1
  221. data/lib/factpulse/models/flow_summary.rb +1 -1
  222. data/lib/factpulse/models/flow_syntax.rb +1 -1
  223. data/lib/factpulse/models/flow_type.rb +1 -1
  224. data/lib/factpulse/models/generate_aggregated_report_response.rb +1 -1
  225. data/lib/factpulse/models/generate_cdar_response.rb +1 -1
  226. data/lib/factpulse/models/generate_certificate_request.rb +1 -1
  227. data/lib/factpulse/models/generate_certificate_response.rb +1 -1
  228. data/lib/factpulse/models/generate_e_reporting_response.rb +1 -1
  229. data/lib/factpulse/models/get_chorus_pro_id_request.rb +2 -2
  230. data/lib/factpulse/models/get_chorus_pro_id_response.rb +1 -1
  231. data/lib/factpulse/models/get_invoice_request.rb +2 -2
  232. data/lib/factpulse/models/get_invoice_response.rb +1 -1
  233. data/lib/factpulse/models/get_structure_request.rb +2 -2
  234. data/lib/factpulse/models/get_structure_response.rb +1 -1
  235. data/lib/factpulse/models/global_allowance_amount.rb +1 -1
  236. data/lib/factpulse/models/gross_unit_price.rb +1 -1
  237. data/lib/factpulse/models/http_validation_error.rb +1 -1
  238. data/lib/factpulse/models/incoming_invoice.rb +1 -1
  239. data/lib/factpulse/models/incoming_supplier.rb +1 -1
  240. data/lib/factpulse/models/invoice_format.rb +1 -1
  241. data/lib/factpulse/models/invoice_input.rb +1 -1
  242. data/lib/factpulse/models/invoice_line.rb +1 -1
  243. data/lib/factpulse/models/invoice_line_allowance_amount.rb +1 -1
  244. data/lib/factpulse/models/invoice_note.rb +1 -1
  245. data/lib/factpulse/models/invoice_payment_input.rb +1 -1
  246. data/lib/factpulse/models/invoice_references.rb +1 -1
  247. data/lib/factpulse/models/invoice_status.rb +1 -1
  248. data/lib/factpulse/models/invoice_totals.rb +1 -1
  249. data/lib/factpulse/models/invoice_totals_prepayment.rb +1 -1
  250. data/lib/factpulse/models/invoice_type_code.rb +1 -1
  251. data/lib/factpulse/models/invoice_type_code_output.rb +1 -1
  252. data/lib/factpulse/models/invoicing_framework.rb +1 -1
  253. data/lib/factpulse/models/invoicing_framework_code.rb +1 -1
  254. data/lib/factpulse/models/line_net_amount.rb +1 -1
  255. data/lib/factpulse/models/line_sub_type.rb +1 -1
  256. data/lib/factpulse/models/line_total_amount.rb +1 -1
  257. data/lib/factpulse/models/location_inner.rb +1 -1
  258. data/lib/factpulse/models/mandatory_note_schema.rb +1 -1
  259. data/lib/factpulse/models/manual_rate.rb +1 -1
  260. data/lib/factpulse/models/manual_vat_rate.rb +1 -1
  261. data/lib/factpulse/models/missing_field.rb +1 -1
  262. data/lib/factpulse/models/operation_nature.rb +1 -1
  263. data/lib/factpulse/models/output_format.rb +1 -1
  264. data/lib/factpulse/models/page_dimensions_schema.rb +1 -1
  265. data/lib/factpulse/models/payee.rb +1 -1
  266. data/lib/factpulse/models/payment_amount_by_rate.rb +2 -2
  267. data/lib/factpulse/models/payment_card.rb +1 -1
  268. data/lib/factpulse/models/payment_means.rb +1 -1
  269. data/lib/factpulse/models/pdf_validation_result_api.rb +1 -1
  270. data/lib/factpulse/models/pdp_config_response.rb +296 -0
  271. data/lib/factpulse/models/pdp_config_update_request.rb +271 -0
  272. data/lib/factpulse/models/pdp_credentials.rb +1 -1
  273. data/lib/factpulse/models/percentage.rb +1 -1
  274. data/lib/factpulse/models/postal_address.rb +1 -1
  275. data/lib/factpulse/models/price_allowance_amount.rb +1 -1
  276. data/lib/factpulse/models/price_basis_quantity.rb +1 -1
  277. data/lib/factpulse/models/processing_options.rb +1 -1
  278. data/lib/factpulse/models/processing_rule.rb +1 -1
  279. data/lib/factpulse/models/product_characteristic.rb +1 -1
  280. data/lib/factpulse/models/product_classification.rb +1 -1
  281. data/lib/factpulse/models/quantity.rb +1 -1
  282. data/lib/factpulse/models/rate.rb +1 -1
  283. data/lib/factpulse/models/rate1.rb +1 -1
  284. data/lib/factpulse/models/reason_code_info.rb +1 -1
  285. data/lib/factpulse/models/reason_codes_response.rb +1 -1
  286. data/lib/factpulse/models/recipient.rb +1 -3
  287. data/lib/factpulse/models/recipient_input.rb +1 -1
  288. data/lib/factpulse/models/refusee_request.rb +292 -0
  289. data/lib/factpulse/models/report_period.rb +1 -1
  290. data/lib/factpulse/models/report_sender.rb +1 -1
  291. data/lib/factpulse/models/rounding_amount.rb +1 -1
  292. data/lib/factpulse/models/schematron_validation_error.rb +1 -1
  293. data/lib/factpulse/models/scheme_id.rb +4 -4
  294. data/lib/factpulse/models/search_flow_request.rb +1 -1
  295. data/lib/factpulse/models/search_flow_response.rb +1 -1
  296. data/lib/factpulse/models/search_services_response.rb +1 -1
  297. data/lib/factpulse/models/search_structure_request.rb +2 -2
  298. data/lib/factpulse/models/search_structure_response.rb +1 -1
  299. data/lib/factpulse/models/{body_submit_cdar_api_v1_cdar_submit_post.rb → secret_status.rb} +46 -27
  300. data/lib/factpulse/models/sellercountry.rb +1 -1
  301. data/lib/factpulse/models/signature_info.rb +1 -1
  302. data/lib/factpulse/models/signature_info_api.rb +1 -1
  303. data/lib/factpulse/models/signature_parameters.rb +1 -1
  304. data/lib/factpulse/models/simplified_cdar_response.rb +274 -0
  305. data/lib/factpulse/models/simplified_invoice_data.rb +1 -1
  306. data/lib/factpulse/models/status_code_info.rb +1 -1
  307. data/lib/factpulse/models/status_codes_response.rb +1 -1
  308. data/lib/factpulse/models/structure_info.rb +1 -1
  309. data/lib/factpulse/models/structure_parameters.rb +1 -1
  310. data/lib/factpulse/models/structure_service.rb +1 -1
  311. data/lib/factpulse/models/submission_mode.rb +1 -1
  312. data/lib/factpulse/models/submit_aggregated_report_request.rb +1 -1
  313. data/lib/factpulse/models/submit_cdar_request.rb +45 -5
  314. data/lib/factpulse/models/submit_cdar_response.rb +1 -1
  315. data/lib/factpulse/models/submit_cdarxml_request.rb +46 -6
  316. data/lib/factpulse/models/submit_complete_invoice_request.rb +1 -1
  317. data/lib/factpulse/models/submit_complete_invoice_response.rb +17 -17
  318. data/lib/factpulse/models/submit_e_reporting_request.rb +1 -1
  319. data/lib/factpulse/models/submit_e_reporting_response.rb +1 -1
  320. data/lib/factpulse/models/submit_flow_request.rb +1 -1
  321. data/lib/factpulse/models/submit_flow_response.rb +1 -1
  322. data/lib/factpulse/models/submit_gross_amount.rb +1 -1
  323. data/lib/factpulse/models/submit_invoice_request.rb +2 -2
  324. data/lib/factpulse/models/submit_invoice_response.rb +1 -1
  325. data/lib/factpulse/models/submit_net_amount.rb +1 -1
  326. data/lib/factpulse/models/submit_vat_amount.rb +1 -1
  327. data/lib/factpulse/models/supplementary_attachment.rb +1 -1
  328. data/lib/factpulse/models/supplier.rb +1 -3
  329. data/lib/factpulse/models/task_response.rb +1 -1
  330. data/lib/factpulse/models/tax_breakdown_input.rb +1 -1
  331. data/lib/factpulse/models/tax_due_date_type.rb +1 -1
  332. data/lib/factpulse/models/tax_representative.rb +1 -1
  333. data/lib/factpulse/models/taxable_amount.rb +1 -1
  334. data/lib/factpulse/models/taxableamount.rb +1 -1
  335. data/lib/factpulse/models/taxamount.rb +1 -1
  336. data/lib/factpulse/models/taxamount1.rb +1 -1
  337. data/lib/factpulse/models/taxamount2.rb +1 -1
  338. data/lib/factpulse/models/taxexclusiveamount.rb +1 -1
  339. data/lib/factpulse/models/taxexclusiveamount1.rb +1 -1
  340. data/lib/factpulse/models/total_gross_amount.rb +1 -1
  341. data/lib/factpulse/models/total_net_amount.rb +1 -1
  342. data/lib/factpulse/models/total_vat_amount.rb +1 -1
  343. data/lib/factpulse/models/transaction_category.rb +1 -1
  344. data/lib/factpulse/models/transmission_type_code.rb +1 -1
  345. data/lib/factpulse/models/unit_net_price.rb +1 -1
  346. data/lib/factpulse/models/unit_of_measure.rb +1 -1
  347. data/lib/factpulse/models/validate_cdar_request.rb +1 -1
  348. data/lib/factpulse/models/validate_cdar_response.rb +3 -3
  349. data/lib/factpulse/models/validate_e_reporting_request.rb +1 -1
  350. data/lib/factpulse/models/validate_e_reporting_response.rb +1 -1
  351. data/lib/factpulse/models/validation_error.rb +1 -1
  352. data/lib/factpulse/models/validation_error_detail.rb +1 -1
  353. data/lib/factpulse/models/validation_error_response.rb +21 -68
  354. data/lib/factpulse/models/validation_info.rb +1 -1
  355. data/lib/factpulse/models/validation_success_response.rb +1 -1
  356. data/lib/factpulse/models/vat_accounting_code.rb +1 -1
  357. data/lib/factpulse/models/vat_amount.rb +1 -1
  358. data/lib/factpulse/models/vat_category.rb +1 -1
  359. data/lib/factpulse/models/vat_line.rb +1 -1
  360. data/lib/factpulse/models/vat_point_date_code.rb +1 -1
  361. data/lib/factpulse/models/vat_rate.rb +1 -1
  362. data/lib/factpulse/models/verification_success_response.rb +1 -1
  363. data/lib/factpulse/models/verified_field_schema.rb +1 -1
  364. data/lib/factpulse/version.rb +2 -2
  365. data/lib/factpulse.rb +17 -5
  366. metadata +34 -10
  367. data/docs/BodySubmitCdarApiV1CdarSubmitPost.md +0 -20
  368. data/docs/BodySubmitCdarXmlApiV1CdarSubmitXmlPost.md +0 -20
  369. data/docs/FactureElectroniqueRestApiSchemasChorusProChorusProCredentials.md +0 -26
  370. data/docs/FactureElectroniqueRestApiSchemasValidationValidationErrorResponse.md +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 042423d8a45da018867073e59b0173cdea776ce1d91e9155df003e4b584cda35
4
- data.tar.gz: a1a81f9968d061000feea31ea45210afaecbef46f3e06fcef5d97a2ba47f91e5
3
+ metadata.gz: 0061473ad13efd96d8c31a87f167aa5c1d8722e43f960266fce4a50b66adee83
4
+ data.tar.gz: 6d066ab2f7b58959051286436f2a7f5d267873d105ba5fffa8b715a31f6bf57a
5
5
  SHA512:
6
- metadata.gz: 01a510615ea1d102201119fa8d5b006c5d194a049b6ab97bfda1b9f2ffb6055c5c46ab4e755e420efa32f4eeb53d8112722a389f1fab928cf1e5ecac7f310313
7
- data.tar.gz: 5b8e610cee66c82ca4543a2e7038854f822da21dbb6871ddd7fc46483ee3fd1187e31ec4d81f2bbefbaea829b3bcb6028708958e1bebef2119b2edcac4a6ddd2
6
+ metadata.gz: 3d4487a0f6b114af93c883946f6b5ac51973de38f8de2161e5d125e42e505c14dd6f06f6f1ff9a5c48cf5baaea86971ab626f60af374f7de5aa72ff4c239e9c6
7
+ data.tar.gz: acec505dcfe90e493a3b5b61b3a479ef507935d5ad7888988f338f64b603a3520ab42a21788ff4c8f441ee2256888b1e2554de46e7e8c9fb2bc04b7b6815197d
data/CHANGELOG.md CHANGED
@@ -7,18 +7,11 @@ et ce projet adhère au [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ## [3.0.37] - 2026-01-17
10
+ ## [4.0.1] - 2026-01-20
11
11
 
12
- ### Added
13
- - Version initiale du SDK ruby
14
- - Support complet de l'API FactPulse
15
- - Endpoints Factur-X (génération, validation)
16
- - Endpoints AFNOR PDP/PA (Flow Service, Directory Service)
17
- - Endpoints Chorus Pro (recherche entreprise, soumission factures)
18
- - Endpoints Signature électronique (PAdES-B-B, PAdES-B-T, PAdES-B-LT)
19
- - Support des deux modes d'authentification (stored credentials et zero-trust)
20
- - Documentation complète et exemples
12
+ ### Fixed
13
+ - Gestion post multipart
21
14
 
22
15
 
23
- [Unreleased]: https://github.com/factpulse/sdk-ruby/compare/v3.0.37...HEAD
24
- [3.0.37]: https://github.com/factpulse/sdk-ruby/releases/tag/v3.0.37
16
+ [Unreleased]: https://github.com/factpulse/sdk-ruby/compare/v4.0.1...HEAD
17
+ [4.0.1]: https://github.com/factpulse/sdk-ruby/releases/tag/v4.0.1
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- factpulse (3.0.37)
4
+ factpulse (4.0.1)
5
5
  typhoeus (~> 1.0, >= 1.0.1)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -5,10 +5,10 @@ Official Ruby client for the FactPulse API - French electronic invoicing.
5
5
  ## Features
6
6
 
7
7
  - **Factur-X**: Generation and validation of electronic invoices (MINIMUM, BASIC, EN16931, EXTENDED profiles)
8
- - **Chorus Pro**: Integration with the French public sector invoicing platform
9
- - **AFNOR PDP/PA**: Submission of flows compliant with the XP Z12-013 standard
10
- - **Electronic signature**: PDF signature (PAdES-B-B, PAdES-B-T, PAdES-B-LT)
11
- - **Simplified client**: JWT authentication and integrated polling via `helpers`
8
+ - **Chorus Pro**: Integration with the French public invoicing platform
9
+ - **AFNOR PDP/PA**: Submission of flows compliant with XP Z12-013 standard
10
+ - **Electronic signature**: PDF signing (PAdES-B-B, PAdES-B-T, PAdES-B-LT)
11
+ - **Thin HTTP wrapper**: Generic `post` and `get` methods with automatic JWT auth and polling
12
12
 
13
13
  ## Installation
14
14
 
@@ -24,180 +24,178 @@ gem 'factpulse'
24
24
 
25
25
  ## Quick Start
26
26
 
27
- The `FactPulse::Helpers` module provides a simplified API with automatic authentication and polling:
28
-
29
27
  ```ruby
30
28
  require 'factpulse'
31
-
32
- include FactPulse::Helpers
29
+ require 'base64'
33
30
 
34
31
  # Create the client
35
- client = FactPulseClient.new(
32
+ client = FactPulse::Client.new(
36
33
  email: 'your_email@example.com',
37
- password: 'your_password'
34
+ password: 'your_password',
35
+ client_uid: 'your-client-uuid' # From dashboard: Configuration > Clients
38
36
  )
39
37
 
40
- # Build the invoice using simplified format (auto-calculates totals)
41
- invoice_data = {
42
- 'number' => 'INV-2025-001',
43
- 'supplier' => {
44
- 'name' => 'My Company SAS',
45
- 'siret' => '12345678901234',
46
- 'iban' => 'FR7630001007941234567890185'
47
- },
48
- 'recipient' => {
49
- 'name' => 'Client SARL',
50
- 'siret' => '98765432109876'
38
+ # Read your source PDF
39
+ pdf_b64 = Base64.strict_encode64(File.binread('source_invoice.pdf'))
40
+
41
+ # Generate Factur-X and submit to PDP in one call
42
+ result = client.post('processing/invoices/submit-complete-async',
43
+ invoiceData: {
44
+ number: 'INV-2025-001',
45
+ supplier: {
46
+ siret: '12345678901234',
47
+ iban: 'FR7630001007941234567890185',
48
+ routing_address: '12345678901234'
49
+ },
50
+ recipient: {
51
+ siret: '98765432109876',
52
+ routing_address: '98765432109876'
53
+ },
54
+ lines: [
55
+ {
56
+ description: 'Consulting services',
57
+ quantity: 10,
58
+ unitPrice: 100.0,
59
+ vatRate: 20.0
60
+ }
61
+ ]
51
62
  },
52
- 'lines' => [
53
- {
54
- 'description' => 'Consulting services',
55
- 'quantity' => 10,
56
- 'unitPrice' => 100.0,
57
- 'vatRate' => 20
58
- }
59
- ]
60
- }
61
-
62
- # Generate the Factur-X PDF
63
- pdf_bytes = client.generate_facturx(invoice_data, 'source_invoice.pdf')
64
-
65
- File.binwrite('invoice_facturx.pdf', pdf_bytes)
66
- ```
67
-
68
- ## Available Helpers (FactPulse::Helpers::AmountHelpers module)
69
-
70
- ### amount(value)
71
-
72
- Converts a value to a formatted string for monetary amounts.
63
+ sourcePdf: pdf_b64,
64
+ profile: 'EN16931',
65
+ destination: { type: 'afnor' }
66
+ )
73
67
 
74
- ```ruby
75
- include FactPulse::Helpers
68
+ # PDF is in result['content'] (auto-polled, auto-decoded)
69
+ File.binwrite('facturx_invoice.pdf', result['content'])
76
70
 
77
- AmountHelpers.amount(1234.5) # "1234.50"
78
- AmountHelpers.amount('1234.56') # "1234.56"
79
- AmountHelpers.amount(nil) # "0.00"
71
+ puts "Flow ID: #{result['afnorResult']['flowId']}"
80
72
  ```
81
73
 
82
- ### invoice_totals(excl_tax, vat, incl_tax, amount_due, ...)
74
+ ## API Methods
83
75
 
84
- Creates a complete invoice totals object.
76
+ The SDK provides two generic methods that map directly to API endpoints:
85
77
 
86
78
  ```ruby
87
- totals = AmountHelpers.invoice_totals(
88
- 1000.00, # excl_tax
89
- 200.00, # vat
90
- 1200.00, # incl_tax
91
- 1200.00, # amount_due
92
- discount_incl_tax: 50.00, # optional
93
- discount_reason: 'Loyalty discount', # optional
94
- prepayment: 100.00 # optional
95
- )
96
- ```
79
+ # POST /api/v1/{path}
80
+ result = client.post('path/to/endpoint', key1: value1, key2: value2)
97
81
 
98
- ### invoice_line(number, description, quantity, unit_price_excl_tax, line_total_excl_tax, ...)
82
+ # GET /api/v1/{path}
83
+ result = client.get('path/to/endpoint', param1: value1)
84
+ ```
99
85
 
100
- Creates an invoice line.
86
+ ### Common Endpoints
101
87
 
102
- ```ruby
103
- line = AmountHelpers.invoice_line(
104
- 1,
105
- 'Consulting services',
106
- 5,
107
- 200.00,
108
- 1000.00,
109
- vat_rate: '20.00', # vatRateManual
110
- vat_category: 'S', # S, Z, E, AE, K
111
- unit: 'LUMP_SUM', # LUMP_SUM, PIECE, HOUR, DAY...
112
- reference: 'REF-001' # optional
113
- )
114
- ```
88
+ | Endpoint | Method | Description |
89
+ |----------|--------|-------------|
90
+ | `processing/invoices/submit-complete-async` | POST | Generate Factur-X + submit to PDP |
91
+ | `processing/generate-invoice` | POST | Generate Factur-X XML or PDF |
92
+ | `processing/validate-xml` | POST | Validate Factur-X XML |
93
+ | `processing/validate-facturx-pdf` | POST | Validate Factur-X PDF |
94
+ | `processing/sign-pdf` | POST | Sign PDF with certificate |
95
+ | `afnor/flow/v1/flows` | POST | Submit flow to AFNOR PDP |
96
+ | `afnor/incoming-flows/{flow_id}` | GET | Get incoming invoice |
97
+ | `chorus-pro/factures/soumettre` | POST | Submit to Chorus Pro |
115
98
 
116
- ### vat_line(rate_manual, base_amount_excl_tax, vat_amount, category)
99
+ ## Webhooks
117
100
 
118
- Creates a VAT breakdown line.
101
+ Instead of polling, you can receive results via webhook by adding `callbackUrl`:
119
102
 
120
103
  ```ruby
121
- vat = AmountHelpers.vat_line(
122
- '20.00', # rate_manual
123
- 1000.00, # base_amount_excl_tax
124
- 200.00, # vat_amount
125
- category: 'S' # S, Z, E, AE, K
104
+ result = client.post('processing/invoices/submit-complete-async',
105
+ invoiceData: invoice_data,
106
+ sourcePdf: pdf_b64,
107
+ destination: { type: 'afnor' },
108
+ callbackUrl: 'https://your-server.com/webhook/factpulse',
109
+ webhookMode: 'INLINE' # or 'DOWNLOAD_URL'
126
110
  )
127
- ```
128
111
 
129
- ### postal_address(line1, postal_code, city, ...)
112
+ task_id = result['taskId']
113
+ # Result will be POSTed to your webhook URL
114
+ ```
130
115
 
131
- Creates a structured postal address.
116
+ ### Webhook Receiver Example (Sinatra)
132
117
 
133
118
  ```ruby
134
- address = AmountHelpers.postal_address(
135
- '123 Republic Street',
136
- '75001',
137
- 'Paris',
138
- country: 'FR', # default: 'FR'
139
- line2: 'Building A' # optional
140
- )
119
+ require 'sinatra'
120
+ require 'json'
121
+ require 'openssl'
122
+
123
+ WEBHOOK_SECRET = 'your-shared-secret'
124
+
125
+ def verify_signature(payload, signature)
126
+ return false unless signature&.start_with?('sha256=')
127
+
128
+ expected = OpenSSL::HMAC.hexdigest('SHA256', WEBHOOK_SECRET, payload)
129
+ Rack::Utils.secure_compare(expected, signature[7..])
130
+ end
131
+
132
+ post '/webhook/factpulse' do
133
+ payload = request.body.read
134
+ signature = request.env['HTTP_X_WEBHOOK_SIGNATURE']
135
+
136
+ unless verify_signature(payload, signature)
137
+ halt 401, { error: 'Invalid signature' }.to_json
138
+ end
139
+
140
+ event = JSON.parse(payload)
141
+ event_type = event['event_type']
142
+ data = event['data']
143
+
144
+ case event_type
145
+ when 'submission.completed'
146
+ flow_id = data.dig('afnorResult', 'flowId')
147
+ puts "Invoice submitted: #{flow_id}"
148
+ when 'submission.failed'
149
+ puts "Submission failed: #{data['error']}"
150
+ end
151
+
152
+ content_type :json
153
+ { status: 'received' }.to_json
154
+ end
141
155
  ```
142
156
 
143
- ### supplier(name, siret, address_line1, postal_code, city, options)
144
-
145
- Creates a complete supplier with automatic calculation of SIREN and intra-community VAT.
157
+ ### Webhook Event Types
146
158
 
147
- ```ruby
148
- s = AmountHelpers.supplier(
149
- 'My Company SAS',
150
- '12345678901234',
151
- '123 Example Street',
152
- '75001',
153
- 'Paris',
154
- iban: 'FR7630006000011234567890189'
155
- )
156
- # SIREN and intra-community VAT automatically calculated
157
- ```
159
+ | Event | Description |
160
+ |-------|-------------|
161
+ | `generation.completed` | Factur-X generated successfully |
162
+ | `generation.failed` | Generation failed |
163
+ | `validation.completed` | Validation passed |
164
+ | `validation.failed` | Validation failed |
165
+ | `signature.completed` | PDF signed |
166
+ | `submission.completed` | Submitted to PDP/Chorus |
167
+ | `submission.failed` | Submission failed |
158
168
 
159
- ### recipient(name, siret, address_line1, postal_code, city, options)
169
+ ## Zero-Storage Mode
160
170
 
161
- Creates a recipient (customer) with automatic calculation of SIREN.
171
+ Pass PDP credentials directly in the request (no server-side storage):
162
172
 
163
173
  ```ruby
164
- r = AmountHelpers.recipient(
165
- 'Client SARL',
166
- '98765432109876',
167
- '456 Test Avenue',
168
- '69001',
169
- 'Lyon'
174
+ result = client.post('processing/invoices/submit-complete-async',
175
+ invoiceData: invoice_data,
176
+ sourcePdf: pdf_b64,
177
+ destination: {
178
+ type: 'afnor',
179
+ flowServiceUrl: 'https://api.pdp.example.com/flow/v1',
180
+ tokenUrl: 'https://auth.pdp.example.com/oauth/token',
181
+ clientId: 'your_pdp_client_id',
182
+ clientSecret: 'your_pdp_client_secret'
183
+ }
170
184
  )
171
185
  ```
172
186
 
173
- ## Zero-Trust Mode (Chorus Pro / AFNOR)
174
-
175
- To pass your own credentials without server-side storage:
187
+ ## Error Handling
176
188
 
177
189
  ```ruby
178
- include FactPulse::Helpers
179
-
180
- chorus_creds = ChorusProCredentials.new(
181
- piste_client_id: 'your_client_id',
182
- piste_client_secret: 'your_client_secret',
183
- chorus_pro_login: 'your_login',
184
- chorus_pro_password: 'your_password',
185
- sandbox: true
186
- )
187
-
188
- afnor_creds = AFNORCredentials.new(
189
- flow_service_url: 'https://api.pdp.fr/flow/v1',
190
- token_url: 'https://auth.pdp.fr/oauth/token',
191
- client_id: 'your_client_id',
192
- client_secret: 'your_client_secret'
193
- )
190
+ require 'factpulse'
194
191
 
195
- client = FactPulseClient.new(
196
- email: 'your_email@example.com',
197
- password: 'your_password',
198
- chorus_credentials: chorus_creds,
199
- afnor_credentials: afnor_creds
200
- )
192
+ begin
193
+ result = client.post('processing/validate-xml', xmlContent: xml_string)
194
+ rescue FactPulse::Error => e
195
+ puts "Error: #{e.message}"
196
+ puts "Status code: #{e.status_code}"
197
+ puts "Details: #{e.details}"
198
+ end
201
199
  ```
202
200
 
203
201
  ## Resources
@@ -5,7 +5,7 @@
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **is_charge** | **Boolean** | True for charge, False for allowance (ChargeIndicator). | |
8
- | **amount** | [**Amount1**](Amount1.md) | | |
8
+ | **amount** | [**Amount2**](Amount2.md) | | |
9
9
  | **base_amount** | [**BaseAmount**](BaseAmount.md) | | [optional] |
10
10
  | **percentage** | [**Percentage**](Percentage.md) | | [optional] |
11
11
  | **reason** | **String** | | [optional] |
data/docs/Amount2.md ADDED
@@ -0,0 +1,15 @@
1
+ # FactPulse::Amount2
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+
8
+ ## Example
9
+
10
+ ```ruby
11
+ require 'factpulse'
12
+
13
+ instance = FactPulse::Amount2.new()
14
+ ```
15
+