factpulse 3.0.10 → 3.0.14

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 (476) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -3
  3. data/Gemfile.lock +3 -3
  4. data/LICENSE +1 -1
  5. data/docs/AFNORAcknowledgement.md +20 -0
  6. data/docs/AFNORAcknowledgementDetail.md +24 -0
  7. data/docs/AFNORAddressEdit.md +30 -0
  8. data/docs/AFNORAddressPatch.md +30 -0
  9. data/docs/AFNORAddressPut.md +30 -0
  10. data/docs/AFNORAddressRead.md +32 -0
  11. data/docs/{ValidationErrorLocInner.md → AFNORAlgorithm.md} +2 -2
  12. data/docs/AFNORContainsOperator.md +15 -0
  13. data/docs/AFNORCreateDirectoryLineBody.md +20 -0
  14. data/docs/AFNORCreateDirectoryLineBodyAddressingInformation.md +24 -0
  15. data/docs/AFNORCreateDirectoryLineBodyPeriod.md +20 -0
  16. data/docs/AFNORCreateRoutingCodeBody.md +32 -0
  17. data/docs/AFNORDestination.md +4 -2
  18. data/docs/AFNORDiffusionStatus.md +15 -0
  19. data/docs/AFNORDirectoryLineField.md +15 -0
  20. data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCode.md +32 -0
  21. data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCodePlatform.md +20 -0
  22. data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCodeRoutingCode.md +28 -0
  23. data/docs/AFNORDirectoryLinePost201Response.md +22 -0
  24. data/docs/AFNORDirectoryLineSearchPost200Response.md +22 -0
  25. data/docs/AFNOREntityType.md +15 -0
  26. data/docs/AFNORError.md +26 -0
  27. data/docs/AFNORFacilityAdministrativeStatus.md +15 -0
  28. data/docs/AFNORFacilityNature.md +15 -0
  29. data/docs/AFNORFacilityPayloadHistory.md +34 -0
  30. data/docs/AFNORFacilityPayloadHistoryUleB2gAdditionalData.md +28 -0
  31. data/docs/AFNORFacilityPayloadIncluded.md +32 -0
  32. data/docs/AFNORFacilityType.md +15 -0
  33. data/docs/AFNORFlow.md +38 -0
  34. data/docs/AFNORFlowAckStatus.md +15 -0
  35. data/docs/AFNORFlowDirection.md +15 -0
  36. data/docs/AFNORFlowInfo.md +28 -0
  37. data/docs/AFNORFlowProfile.md +15 -0
  38. data/docs/AFNORFlowSyntax.md +15 -0
  39. data/docs/AFNORFlowType.md +15 -0
  40. data/docs/AFNORFullFlowInfo.md +32 -0
  41. data/docs/AFNORLegalUnitAdministrativeStatus.md +15 -0
  42. data/docs/AFNORLegalUnitPayloadHistory.md +24 -0
  43. data/docs/AFNORLegalUnitPayloadIncluded.md +24 -0
  44. data/docs/AFNORLegalUnitPayloadIncludedNoSiren.md +22 -0
  45. data/docs/AFNORPDPPAApi.md +5 -5
  46. data/docs/AFNORPDPPADirectoryServiceApi.md +278 -178
  47. data/docs/AFNORPDPPAFlowServiceApi.md +39 -27
  48. data/docs/AFNORPlatformStatus.md +15 -0
  49. data/docs/AFNORProcessingRule.md +15 -0
  50. data/docs/AFNORReasonCode.md +49 -0
  51. data/docs/AFNORReasonCodeEnum.md +15 -0
  52. data/docs/AFNORRecipientPlatformType.md +15 -0
  53. data/docs/AFNORResult.md +7 -1
  54. data/docs/AFNORRoutingCodeAdministrativeStatus.md +15 -0
  55. data/docs/AFNORRoutingCodeField.md +15 -0
  56. data/docs/AFNORRoutingCodePayloadHistoryLegalUnitFacility.md +34 -0
  57. data/docs/AFNORRoutingCodePost201Response.md +22 -0
  58. data/docs/AFNORRoutingCodeSearch.md +28 -0
  59. data/docs/AFNORRoutingCodeSearchFilters.md +30 -0
  60. data/docs/AFNORRoutingCodeSearchFiltersAdministrativeStatus.md +20 -0
  61. data/docs/AFNORRoutingCodeSearchFiltersRoutingCodeName.md +20 -0
  62. data/docs/AFNORRoutingCodeSearchFiltersRoutingIdentifier.md +20 -0
  63. data/docs/AFNORRoutingCodeSearchPost200Response.md +22 -0
  64. data/docs/AFNORRoutingCodeSearchSortingInner.md +20 -0
  65. data/docs/AFNORSearchDirectoryLine.md +26 -0
  66. data/docs/AFNORSearchDirectoryLineFilters.md +26 -0
  67. data/docs/AFNORSearchDirectoryLineFiltersAddressingIdentifier.md +20 -0
  68. data/docs/AFNORSearchDirectoryLineFiltersAddressingSuffix.md +20 -0
  69. data/docs/AFNORSearchDirectoryLineSortingInner.md +20 -0
  70. data/docs/AFNORSearchFlowContent.md +22 -0
  71. data/docs/AFNORSearchFlowFilters.md +30 -0
  72. data/docs/AFNORSearchFlowParams.md +20 -0
  73. data/docs/AFNORSearchSiren.md +26 -0
  74. data/docs/AFNORSearchSirenFilters.md +24 -0
  75. data/docs/AFNORSearchSirenFiltersAdministrativeStatus.md +20 -0
  76. data/docs/AFNORSearchSirenFiltersBusinessName.md +20 -0
  77. data/docs/AFNORSearchSirenFiltersEntityType.md +20 -0
  78. data/docs/AFNORSearchSirenFiltersSiren.md +20 -0
  79. data/docs/AFNORSearchSirenSortingInner.md +20 -0
  80. data/docs/AFNORSearchSiret.md +28 -0
  81. data/docs/AFNORSearchSiretFilters.md +34 -0
  82. data/docs/AFNORSearchSiretFiltersAddressLines.md +20 -0
  83. data/docs/AFNORSearchSiretFiltersAdministrativeStatus.md +20 -0
  84. data/docs/AFNORSearchSiretFiltersCountrySubdivision.md +20 -0
  85. data/docs/AFNORSearchSiretFiltersFacilityType.md +20 -0
  86. data/docs/AFNORSearchSiretFiltersLocality.md +20 -0
  87. data/docs/AFNORSearchSiretFiltersName.md +20 -0
  88. data/docs/AFNORSearchSiretFiltersPostalCode.md +20 -0
  89. data/docs/AFNORSearchSiretFiltersSiret.md +20 -0
  90. data/docs/AFNORSearchSiretSortingInner.md +20 -0
  91. data/docs/AFNORSirenField.md +15 -0
  92. data/docs/AFNORSirenSearchPost200Response.md +22 -0
  93. data/docs/AFNORSiretField.md +15 -0
  94. data/docs/AFNORSiretSearchPost200Response.md +22 -0
  95. data/docs/AFNORSortingOrder.md +15 -0
  96. data/docs/AFNORStrictOperator.md +15 -0
  97. data/docs/AFNORUpdatePatchDirectoryLineBody.md +18 -0
  98. data/docs/AFNORUpdatePatchRoutingCodeBody.md +24 -0
  99. data/docs/AFNORUpdatePutRoutingCodeBody.md +24 -0
  100. data/docs/AFNORWebhookCallbackContent.md +18 -0
  101. data/docs/AcceptLanguage.md +15 -0
  102. data/docs/AggregatedPaymentInput.md +22 -0
  103. data/docs/AggregatedTransactionInput.md +32 -0
  104. data/docs/AllowanceCharge.md +3 -3
  105. data/docs/AllowanceChargeReasonCode.md +15 -0
  106. data/docs/Amount1.md +15 -0
  107. data/docs/Buyercountry.md +15 -0
  108. data/docs/ChorusProApi.md +5 -3
  109. data/docs/{FactureElectroniqueRestApiSchemasChorusProChorusProCredentials.md → ChorusProCredentials.md} +2 -2
  110. data/docs/ConvertValidationFailedResponse.md +5 -5
  111. data/docs/CountryCode.md +15 -0
  112. data/docs/CreateAggregatedReportRequest.md +34 -0
  113. data/docs/CreateEReportingRequest.md +36 -0
  114. data/docs/Currency.md +15 -0
  115. data/docs/CurrencyCode.md +15 -0
  116. data/docs/DirectoryLineInclude.md +15 -0
  117. data/docs/DocType.md +15 -0
  118. data/docs/DocumentConversionApi.md +12 -86
  119. data/docs/DownloadsApi.md +295 -0
  120. data/docs/EReportingApi.md +782 -0
  121. data/docs/EReportingFlowType.md +15 -0
  122. data/docs/ElectronicAddress.md +2 -2
  123. data/docs/EnrichedInvoiceInfo.md +6 -6
  124. data/docs/FactureElectroniqueModelsInvoiceTypeCode.md +15 -0
  125. data/docs/FactureElectroniqueRestApiSchemasConvertValidationError.md +32 -0
  126. data/docs/FlowSummary.md +2 -2
  127. data/docs/GenerateAggregatedReportResponse.md +30 -0
  128. data/docs/GenerateEReportingResponse.md +26 -0
  129. data/docs/GetChorusProIdRequest.md +1 -1
  130. data/docs/GetInvoiceRequest.md +1 -1
  131. data/docs/GetInvoiceResponse.md +2 -2
  132. data/docs/GetStructureRequest.md +1 -1
  133. data/docs/GetStructureResponse.md +2 -2
  134. data/docs/HealthApi.md +1 -1
  135. data/docs/IncomingInvoice.md +1 -1
  136. data/docs/InvoiceInput.md +48 -0
  137. data/docs/InvoiceLine.md +4 -0
  138. data/docs/InvoiceNote.md +1 -1
  139. data/docs/InvoicePaymentInput.md +26 -0
  140. data/docs/InvoiceProcessingApi.md +41 -17
  141. data/docs/InvoiceTypeCodeOutput.md +15 -0
  142. data/docs/InvoicingFramework.md +1 -1
  143. data/docs/LineSubType.md +15 -0
  144. data/docs/LocationInner.md +15 -0
  145. data/docs/PDFXMLVerificationApi.md +17 -9
  146. data/docs/PaymentAmountByRate.md +20 -0
  147. data/docs/ProcessingRule.md +15 -0
  148. data/docs/Rate.md +15 -0
  149. data/docs/Rate1.md +15 -0
  150. data/docs/ReportPeriod.md +20 -0
  151. data/docs/ReportSender.md +22 -0
  152. data/docs/RoutingCodeInclude.md +15 -0
  153. data/docs/SearchServicesResponse.md +3 -3
  154. data/docs/SearchStructureRequest.md +1 -1
  155. data/docs/Sellercountry.md +15 -0
  156. data/docs/SimplifiedInvoiceData.md +9 -1
  157. data/docs/SiretInclude.md +15 -0
  158. data/docs/SubmitAggregatedReportRequest.md +28 -0
  159. data/docs/SubmitEReportingRequest.md +28 -0
  160. data/docs/SubmitEReportingResponse.md +32 -0
  161. data/docs/SubmitInvoiceRequest.md +1 -1
  162. data/docs/SupplementaryAttachment.md +5 -5
  163. data/docs/TaxBreakdownInput.md +22 -0
  164. data/docs/TaxDueDateType.md +15 -0
  165. data/docs/Taxableamount.md +15 -0
  166. data/docs/Taxamount.md +15 -0
  167. data/docs/Taxamount1.md +15 -0
  168. data/docs/Taxamount2.md +15 -0
  169. data/docs/Taxexclusiveamount.md +15 -0
  170. data/docs/Taxexclusiveamount1.md +15 -0
  171. data/docs/TransactionCategory.md +15 -0
  172. data/docs/TransmissionTypeCode.md +15 -0
  173. data/docs/UserApi.md +1 -1
  174. data/docs/ValidateEReportingRequest.md +18 -0
  175. data/docs/ValidateEReportingResponse.md +28 -0
  176. data/docs/ValidationError.md +1 -1
  177. data/docs/ValidationInfo.md +1 -1
  178. data/factpulse.gemspec +4 -4
  179. data/lib/factpulse/api/afnorpdppa_api.rb +6 -6
  180. data/lib/factpulse/api/afnorpdppa_directory_service_api.rb +210 -123
  181. data/lib/factpulse/api/afnorpdppa_flow_service_api.rb +57 -24
  182. data/lib/factpulse/api/chorus_pro_api.rb +6 -4
  183. data/lib/factpulse/api/document_conversion_api.rb +13 -85
  184. data/lib/factpulse/api/downloads_api.rb +280 -0
  185. data/lib/factpulse/api/e_reporting_api.rb +774 -0
  186. data/lib/factpulse/api/health_api.rb +2 -2
  187. data/lib/factpulse/api/invoice_processing_api.rb +47 -14
  188. data/lib/factpulse/api/pdfxml_verification_api.rb +22 -10
  189. data/lib/factpulse/api/user_api.rb +2 -2
  190. data/lib/factpulse/api_client.rb +2 -2
  191. data/lib/factpulse/api_error.rb +2 -2
  192. data/lib/factpulse/api_model_base.rb +2 -2
  193. data/lib/factpulse/configuration.rb +10 -6
  194. data/lib/factpulse/models/accept_language.rb +40 -0
  195. data/lib/factpulse/models/acknowledgment_status.rb +2 -2
  196. data/lib/factpulse/models/additional_document.rb +2 -2
  197. data/lib/factpulse/models/afnor_acknowledgement.rb +216 -0
  198. data/lib/factpulse/models/afnor_acknowledgement_detail.rb +267 -0
  199. data/lib/factpulse/models/afnor_address_edit.rb +353 -0
  200. data/lib/factpulse/models/afnor_address_patch.rb +386 -0
  201. data/lib/factpulse/models/afnor_address_put.rb +435 -0
  202. data/lib/factpulse/models/afnor_address_read.rb +382 -0
  203. data/lib/factpulse/models/afnor_algorithm.rb +43 -0
  204. data/lib/factpulse/models/afnor_contains_operator.rb +39 -0
  205. data/lib/factpulse/models/afnor_create_directory_line_body.rb +156 -0
  206. data/lib/factpulse/models/afnor_create_directory_line_body_addressing_information.rb +294 -0
  207. data/lib/factpulse/models/afnor_create_directory_line_body_period.rb +175 -0
  208. data/lib/factpulse/models/afnor_create_routing_code_body.rb +412 -0
  209. data/lib/factpulse/models/afnor_credentials.rb +2 -2
  210. data/lib/factpulse/models/afnor_destination.rb +19 -23
  211. data/lib/factpulse/models/afnor_diffusion_status.rb +40 -0
  212. data/lib/factpulse/models/afnor_directory_line_field.rb +44 -0
  213. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code.rb +312 -0
  214. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_platform.rb +178 -0
  215. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_routing_code.rb +308 -0
  216. data/lib/factpulse/models/afnor_directory_line_post201_response.rb +187 -0
  217. data/lib/factpulse/models/afnor_directory_line_search_post200_response.rb +168 -0
  218. data/lib/factpulse/models/afnor_entity_type.rb +40 -0
  219. data/lib/factpulse/models/{convert_error_response.rb → afnor_error.rb} +51 -61
  220. data/lib/factpulse/models/afnor_facility_administrative_status.rb +40 -0
  221. data/lib/factpulse/models/afnor_facility_nature.rb +40 -0
  222. data/lib/factpulse/models/afnor_facility_payload_history.rb +323 -0
  223. data/lib/factpulse/models/afnor_facility_payload_history_ule_b2g_additional_data.rb +198 -0
  224. data/lib/factpulse/models/afnor_facility_payload_included.rb +314 -0
  225. data/lib/factpulse/models/afnor_facility_type.rb +40 -0
  226. data/lib/factpulse/models/afnor_flow.rb +315 -0
  227. data/lib/factpulse/models/afnor_flow_ack_status.rb +41 -0
  228. data/lib/factpulse/models/afnor_flow_direction.rb +40 -0
  229. data/lib/factpulse/models/afnor_flow_info.rb +293 -0
  230. data/lib/factpulse/models/afnor_flow_profile.rb +41 -0
  231. data/lib/factpulse/models/afnor_flow_syntax.rb +43 -0
  232. data/lib/factpulse/models/afnor_flow_type.rb +51 -0
  233. data/lib/factpulse/models/afnor_full_flow_info.rb +339 -0
  234. data/lib/factpulse/models/afnor_health_check_response.rb +2 -2
  235. data/lib/factpulse/models/afnor_legal_unit_administrative_status.rb +40 -0
  236. data/lib/factpulse/models/afnor_legal_unit_payload_history.rb +247 -0
  237. data/lib/factpulse/models/afnor_legal_unit_payload_included.rb +247 -0
  238. data/lib/factpulse/models/afnor_legal_unit_payload_included_no_siren.rb +207 -0
  239. data/lib/factpulse/models/afnor_platform_status.rb +40 -0
  240. data/lib/factpulse/models/afnor_processing_rule.rb +44 -0
  241. data/lib/factpulse/models/afnor_reason_code.rb +105 -0
  242. data/lib/factpulse/models/afnor_reason_code_enum.rb +53 -0
  243. data/lib/factpulse/models/afnor_recipient_platform_type.rb +40 -0
  244. data/lib/factpulse/models/afnor_result.rb +37 -7
  245. data/lib/factpulse/models/afnor_routing_code_administrative_status.rb +40 -0
  246. data/lib/factpulse/models/afnor_routing_code_field.rb +46 -0
  247. data/lib/factpulse/models/afnor_routing_code_payload_history_legal_unit_facility.rb +366 -0
  248. data/lib/factpulse/models/afnor_routing_code_post201_response.rb +228 -0
  249. data/lib/factpulse/models/afnor_routing_code_search.rb +224 -0
  250. data/lib/factpulse/models/afnor_routing_code_search_filters.rb +201 -0
  251. data/lib/factpulse/models/afnor_routing_code_search_filters_administrative_status.rb +178 -0
  252. data/lib/factpulse/models/afnor_routing_code_search_filters_routing_code_name.rb +209 -0
  253. data/lib/factpulse/models/afnor_routing_code_search_filters_routing_identifier.rb +209 -0
  254. data/lib/factpulse/models/afnor_routing_code_search_post200_response.rb +168 -0
  255. data/lib/factpulse/models/afnor_routing_code_search_sorting_inner.rb +179 -0
  256. data/lib/factpulse/models/afnor_search_directory_line.rb +191 -0
  257. data/lib/factpulse/models/afnor_search_directory_line_filters.rb +183 -0
  258. data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_identifier.rb +198 -0
  259. data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_suffix.rb +198 -0
  260. data/lib/factpulse/models/afnor_search_directory_line_sorting_inner.rb +179 -0
  261. data/lib/factpulse/models/afnor_search_flow_content.rb +168 -0
  262. data/lib/factpulse/models/afnor_search_flow_filters.rb +250 -0
  263. data/lib/factpulse/models/afnor_search_flow_params.rb +195 -0
  264. data/lib/factpulse/models/afnor_search_siren.rb +191 -0
  265. data/lib/factpulse/models/afnor_search_siren_filters.rb +174 -0
  266. data/lib/factpulse/models/afnor_search_siren_filters_administrative_status.rb +178 -0
  267. data/lib/factpulse/models/afnor_search_siren_filters_business_name.rb +198 -0
  268. data/lib/factpulse/models/afnor_search_siren_filters_entity_type.rb +178 -0
  269. data/lib/factpulse/models/afnor_search_siren_filters_siren.rb +209 -0
  270. data/lib/factpulse/models/afnor_search_siren_sorting_inner.rb +179 -0
  271. data/lib/factpulse/models/afnor_search_siret.rb +224 -0
  272. data/lib/factpulse/models/afnor_search_siret_filters.rb +219 -0
  273. data/lib/factpulse/models/afnor_search_siret_filters_address_lines.rb +198 -0
  274. data/lib/factpulse/models/afnor_search_siret_filters_administrative_status.rb +178 -0
  275. data/lib/factpulse/models/afnor_search_siret_filters_country_subdivision.rb +198 -0
  276. data/lib/factpulse/models/afnor_search_siret_filters_facility_type.rb +178 -0
  277. data/lib/factpulse/models/afnor_search_siret_filters_locality.rb +198 -0
  278. data/lib/factpulse/models/afnor_search_siret_filters_name.rb +198 -0
  279. data/lib/factpulse/models/afnor_search_siret_filters_postal_code.rb +209 -0
  280. data/lib/factpulse/models/afnor_search_siret_filters_siret.rb +209 -0
  281. data/lib/factpulse/models/afnor_search_siret_sorting_inner.rb +179 -0
  282. data/lib/factpulse/models/afnor_siren_field.rb +43 -0
  283. data/lib/factpulse/models/afnor_siren_search_post200_response.rb +168 -0
  284. data/lib/factpulse/models/afnor_siret_field.rb +52 -0
  285. data/lib/factpulse/models/afnor_siret_search_post200_response.rb +168 -0
  286. data/lib/factpulse/models/afnor_sorting_order.rb +40 -0
  287. data/lib/factpulse/models/afnor_strict_operator.rb +39 -0
  288. data/lib/factpulse/models/afnor_update_patch_directory_line_body.rb +148 -0
  289. data/lib/factpulse/models/afnor_update_patch_routing_code_body.rb +258 -0
  290. data/lib/factpulse/models/afnor_update_put_routing_code_body.rb +289 -0
  291. data/lib/factpulse/models/afnor_webhook_callback_content.rb +148 -0
  292. data/lib/factpulse/models/aggregated_payment_input.rb +213 -0
  293. data/lib/factpulse/models/aggregated_transaction_input.rb +349 -0
  294. data/lib/factpulse/models/allowance_charge.rb +27 -5
  295. data/lib/factpulse/models/allowance_charge_reason_code.rb +76 -0
  296. data/lib/factpulse/models/allowance_reason_code.rb +2 -2
  297. data/lib/factpulse/models/allowance_total_amount.rb +2 -2
  298. data/lib/factpulse/models/amount.rb +3 -3
  299. data/lib/factpulse/models/amount1.rb +104 -0
  300. data/lib/factpulse/models/amount_due.rb +2 -2
  301. data/lib/factpulse/models/api_error.rb +2 -2
  302. data/lib/factpulse/models/api_profile.rb +4 -3
  303. data/lib/factpulse/models/async_task_status.rb +2 -2
  304. data/lib/factpulse/models/base_amount.rb +2 -2
  305. data/lib/factpulse/models/bounding_box_schema.rb +2 -2
  306. data/lib/factpulse/models/buyercountry.rb +104 -0
  307. data/lib/factpulse/models/celery_status.rb +2 -2
  308. data/lib/factpulse/models/certificate_info_response.rb +2 -2
  309. data/lib/factpulse/models/charge_total_amount.rb +2 -2
  310. data/lib/factpulse/models/{facture_electronique_rest_api_schemas_chorus_pro_chorus_pro_credentials.rb → chorus_pro_credentials.rb} +5 -5
  311. data/lib/factpulse/models/chorus_pro_destination.rb +2 -2
  312. data/lib/factpulse/models/chorus_pro_result.rb +2 -2
  313. data/lib/factpulse/models/contact.rb +2 -2
  314. data/lib/factpulse/models/convert_resume_request.rb +2 -2
  315. data/lib/factpulse/models/convert_success_response.rb +2 -2
  316. data/lib/factpulse/models/convert_validation_failed_response.rb +7 -2
  317. data/lib/factpulse/models/country_code.rb +208 -0
  318. data/lib/factpulse/models/create_aggregated_report_request.rb +310 -0
  319. data/lib/factpulse/models/create_e_reporting_request.rb +337 -0
  320. data/lib/factpulse/models/currency.rb +104 -0
  321. data/lib/factpulse/models/currency_code.rb +91 -0
  322. data/lib/factpulse/models/delivery_party.rb +2 -2
  323. data/lib/factpulse/models/destination.rb +2 -2
  324. data/lib/factpulse/models/directory_line_include.rb +42 -0
  325. data/lib/factpulse/models/doc_type.rb +42 -0
  326. data/lib/factpulse/models/document_type_info.rb +2 -2
  327. data/lib/factpulse/models/e_reporting_flow_type.rb +42 -0
  328. data/lib/factpulse/models/electronic_address.rb +4 -2
  329. data/lib/factpulse/models/enriched_invoice_info.rb +8 -2
  330. data/lib/factpulse/models/error_level.rb +2 -2
  331. data/lib/factpulse/models/error_source.rb +2 -2
  332. data/lib/factpulse/models/extraction_info.rb +2 -2
  333. data/lib/factpulse/models/factur_x_invoice.rb +2 -2
  334. data/lib/factpulse/models/factur_xpdf_info.rb +2 -2
  335. data/lib/factpulse/models/facture_electronique_models_invoice_type_code.rb +54 -0
  336. data/lib/factpulse/models/facture_electronique_rest_api_schemas_convert_validation_error.rb +294 -0
  337. data/lib/factpulse/models/facture_electronique_rest_api_schemas_processing_chorus_pro_credentials.rb +2 -2
  338. data/lib/factpulse/models/field_status.rb +2 -2
  339. data/lib/factpulse/models/file_info.rb +2 -2
  340. data/lib/factpulse/models/files_info.rb +2 -2
  341. data/lib/factpulse/models/flow_direction.rb +2 -2
  342. data/lib/factpulse/models/flow_profile.rb +2 -2
  343. data/lib/factpulse/models/flow_summary.rb +4 -2
  344. data/lib/factpulse/models/flow_syntax.rb +2 -2
  345. data/lib/factpulse/models/flow_type.rb +12 -4
  346. data/lib/factpulse/models/generate_aggregated_report_response.rb +330 -0
  347. data/lib/factpulse/models/generate_certificate_request.rb +2 -2
  348. data/lib/factpulse/models/generate_certificate_response.rb +2 -2
  349. data/lib/factpulse/models/generate_e_reporting_response.rb +274 -0
  350. data/lib/factpulse/models/get_chorus_pro_id_request.rb +3 -3
  351. data/lib/factpulse/models/get_chorus_pro_id_response.rb +2 -2
  352. data/lib/factpulse/models/get_invoice_request.rb +3 -3
  353. data/lib/factpulse/models/get_invoice_response.rb +4 -2
  354. data/lib/factpulse/models/get_structure_request.rb +3 -3
  355. data/lib/factpulse/models/get_structure_response.rb +4 -2
  356. data/lib/factpulse/models/global_allowance_amount.rb +2 -2
  357. data/lib/factpulse/models/gross_unit_price.rb +2 -2
  358. data/lib/factpulse/models/http_validation_error.rb +2 -2
  359. data/lib/factpulse/models/incoming_invoice.rb +3 -36
  360. data/lib/factpulse/models/incoming_supplier.rb +2 -2
  361. data/lib/factpulse/models/invoice_format.rb +2 -2
  362. data/lib/factpulse/models/invoice_input.rb +446 -0
  363. data/lib/factpulse/models/invoice_line.rb +23 -3
  364. data/lib/factpulse/models/invoice_line_allowance_amount.rb +2 -2
  365. data/lib/factpulse/models/invoice_note.rb +3 -2
  366. data/lib/factpulse/models/invoice_payment_input.rb +267 -0
  367. data/lib/factpulse/models/invoice_references.rb +2 -2
  368. data/lib/factpulse/models/invoice_status.rb +2 -2
  369. data/lib/factpulse/models/invoice_totals.rb +2 -2
  370. data/lib/factpulse/models/invoice_totals_prepayment.rb +2 -2
  371. data/lib/factpulse/models/invoice_type_code.rb +8 -19
  372. data/lib/factpulse/models/invoice_type_code_output.rb +54 -0
  373. data/lib/factpulse/models/invoicing_framework.rb +3 -2
  374. data/lib/factpulse/models/invoicing_framework_code.rb +2 -2
  375. data/lib/factpulse/models/line_net_amount.rb +2 -2
  376. data/lib/factpulse/models/line_sub_type.rb +41 -0
  377. data/lib/factpulse/models/line_total_amount.rb +2 -2
  378. data/lib/factpulse/models/{validation_error_loc_inner.rb → location_inner.rb} +3 -3
  379. data/lib/factpulse/models/mandatory_note_schema.rb +2 -2
  380. data/lib/factpulse/models/manual_rate.rb +2 -2
  381. data/lib/factpulse/models/manual_vat_rate.rb +2 -2
  382. data/lib/factpulse/models/missing_field.rb +2 -2
  383. data/lib/factpulse/models/operation_nature.rb +2 -2
  384. data/lib/factpulse/models/output_format.rb +2 -2
  385. data/lib/factpulse/models/page_dimensions_schema.rb +2 -2
  386. data/lib/factpulse/models/payee.rb +2 -2
  387. data/lib/factpulse/models/payment_amount_by_rate.rb +191 -0
  388. data/lib/factpulse/models/payment_card.rb +2 -2
  389. data/lib/factpulse/models/payment_means.rb +2 -2
  390. data/lib/factpulse/models/pdf_validation_result_api.rb +2 -2
  391. data/lib/factpulse/models/pdp_credentials.rb +2 -2
  392. data/lib/factpulse/models/percentage.rb +2 -2
  393. data/lib/factpulse/models/postal_address.rb +2 -2
  394. data/lib/factpulse/models/price_allowance_amount.rb +2 -2
  395. data/lib/factpulse/models/price_basis_quantity.rb +2 -2
  396. data/lib/factpulse/models/processing_options.rb +2 -2
  397. data/lib/factpulse/models/processing_rule.rb +44 -0
  398. data/lib/factpulse/models/product_characteristic.rb +2 -2
  399. data/lib/factpulse/models/product_classification.rb +2 -2
  400. data/lib/factpulse/models/quantity.rb +2 -2
  401. data/lib/factpulse/models/rate.rb +104 -0
  402. data/lib/factpulse/models/rate1.rb +104 -0
  403. data/lib/factpulse/models/recipient.rb +2 -2
  404. data/lib/factpulse/models/report_period.rb +193 -0
  405. data/lib/factpulse/models/report_sender.rb +221 -0
  406. data/lib/factpulse/models/rounding_amount.rb +2 -2
  407. data/lib/factpulse/models/routing_code_include.rb +40 -0
  408. data/lib/factpulse/models/scheme_id.rb +10 -3
  409. data/lib/factpulse/models/search_flow_request.rb +2 -2
  410. data/lib/factpulse/models/search_flow_response.rb +2 -2
  411. data/lib/factpulse/models/search_services_response.rb +5 -2
  412. data/lib/factpulse/models/search_structure_request.rb +3 -3
  413. data/lib/factpulse/models/search_structure_response.rb +2 -2
  414. data/lib/factpulse/models/sellercountry.rb +104 -0
  415. data/lib/factpulse/models/signature_info.rb +2 -2
  416. data/lib/factpulse/models/signature_info_api.rb +2 -2
  417. data/lib/factpulse/models/signature_parameters.rb +2 -2
  418. data/lib/factpulse/models/simplified_invoice_data.rb +69 -7
  419. data/lib/factpulse/models/siret_include.rb +39 -0
  420. data/lib/factpulse/models/structure_info.rb +2 -2
  421. data/lib/factpulse/models/structure_parameters.rb +2 -2
  422. data/lib/factpulse/models/structure_service.rb +2 -2
  423. data/lib/factpulse/models/submission_mode.rb +2 -2
  424. data/lib/factpulse/models/submit_aggregated_report_request.rb +216 -0
  425. data/lib/factpulse/models/submit_complete_invoice_request.rb +2 -2
  426. data/lib/factpulse/models/submit_complete_invoice_response.rb +2 -2
  427. data/lib/factpulse/models/submit_e_reporting_request.rb +216 -0
  428. data/lib/factpulse/models/submit_e_reporting_response.rb +306 -0
  429. data/lib/factpulse/models/submit_flow_request.rb +2 -2
  430. data/lib/factpulse/models/submit_flow_response.rb +2 -2
  431. data/lib/factpulse/models/submit_gross_amount.rb +2 -2
  432. data/lib/factpulse/models/submit_invoice_request.rb +3 -3
  433. data/lib/factpulse/models/submit_invoice_response.rb +2 -2
  434. data/lib/factpulse/models/submit_net_amount.rb +2 -2
  435. data/lib/factpulse/models/submit_vat_amount.rb +2 -2
  436. data/lib/factpulse/models/supplementary_attachment.rb +7 -2
  437. data/lib/factpulse/models/supplier.rb +2 -2
  438. data/lib/factpulse/models/task_response.rb +2 -2
  439. data/lib/factpulse/models/tax_breakdown_input.rb +217 -0
  440. data/lib/factpulse/models/tax_due_date_type.rb +44 -0
  441. data/lib/factpulse/models/tax_representative.rb +2 -2
  442. data/lib/factpulse/models/taxable_amount.rb +2 -2
  443. data/lib/factpulse/models/taxableamount0.rb +104 -0
  444. data/lib/factpulse/models/taxamount.rb +104 -0
  445. data/lib/factpulse/models/taxamount1.rb +104 -0
  446. data/lib/factpulse/models/taxamount2.rb +104 -0
  447. data/lib/factpulse/models/taxexclusiveamount.rb +104 -0
  448. data/lib/factpulse/models/taxexclusiveamount1.rb +104 -0
  449. data/lib/factpulse/models/total_gross_amount.rb +2 -2
  450. data/lib/factpulse/models/total_net_amount.rb +2 -2
  451. data/lib/factpulse/models/total_vat_amount.rb +2 -2
  452. data/lib/factpulse/models/transaction_category.rb +42 -0
  453. data/lib/factpulse/models/transmission_type_code.rb +40 -0
  454. data/lib/factpulse/models/unit_net_price.rb +2 -2
  455. data/lib/factpulse/models/unit_of_measure.rb +2 -2
  456. data/lib/factpulse/models/validate_e_reporting_request.rb +166 -0
  457. data/lib/factpulse/models/validate_e_reporting_response.rb +271 -0
  458. data/lib/factpulse/models/validation_error.rb +3 -3
  459. data/lib/factpulse/models/validation_error_detail.rb +2 -2
  460. data/lib/factpulse/models/validation_error_response.rb +2 -2
  461. data/lib/factpulse/models/validation_info.rb +3 -3
  462. data/lib/factpulse/models/validation_success_response.rb +2 -2
  463. data/lib/factpulse/models/vat_accounting_code.rb +2 -2
  464. data/lib/factpulse/models/vat_amount.rb +2 -2
  465. data/lib/factpulse/models/vat_category.rb +2 -2
  466. data/lib/factpulse/models/vat_line.rb +2 -2
  467. data/lib/factpulse/models/vat_point_date_code.rb +2 -2
  468. data/lib/factpulse/models/vat_rate.rb +2 -2
  469. data/lib/factpulse/models/verification_success_response.rb +2 -2
  470. data/lib/factpulse/models/verified_field_schema.rb +2 -2
  471. data/lib/factpulse/version.rb +3 -3
  472. data/lib/factpulse.rb +143 -6
  473. metadata +291 -17
  474. data/docs/ConvertErrorResponse.md +0 -26
  475. data/docs/ConvertPendingInputResponse.md +0 -32
  476. data/lib/factpulse/models/convert_pending_input_response.rb +0 -322
@@ -0,0 +1,15 @@
1
+ # FactPulse::EReportingFlowType
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+
8
+ ## Example
9
+
10
+ ```ruby
11
+ require 'factpulse'
12
+
13
+ instance = FactPulse::EReportingFlowType.new()
14
+ ```
15
+
@@ -4,8 +4,8 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **identifier** | **String** | | |
8
- | **scheme_id** | [**SchemeID**](SchemeID.md) | | [optional] |
7
+ | **identifier** | **String** | Electronic address identifier (e.g., SIREN, SIRET, routing code) | |
8
+ | **scheme_id** | [**SchemeID**](SchemeID.md) | Identification scheme (EAS code) | [optional] |
9
9
 
10
10
  ## Example
11
11
 
@@ -4,14 +4,14 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **invoice_number** | **String** | | |
7
+ | **invoice_number** | **String** | Invoice number | |
8
8
  | **supplier_id** | **Integer** | | [optional] |
9
9
  | **recipient_id** | **Integer** | | [optional] |
10
- | **supplier_name** | **String** | | |
11
- | **recipient_name** | **String** | | |
12
- | **total_net_amount** | **String** | | |
13
- | **vat_amount** | **String** | | |
14
- | **total_gross_amount** | **String** | | |
10
+ | **supplier_name** | **String** | Supplier name | |
11
+ | **recipient_name** | **String** | Recipient name | |
12
+ | **total_net_amount** | **String** | Total net amount (HT) | |
13
+ | **vat_amount** | **String** | VAT amount | |
14
+ | **total_gross_amount** | **String** | Total gross amount (TTC) | |
15
15
 
16
16
  ## Example
17
17
 
@@ -0,0 +1,15 @@
1
+ # FactPulse::FactureElectroniqueModelsInvoiceTypeCode
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+
8
+ ## Example
9
+
10
+ ```ruby
11
+ require 'factpulse'
12
+
13
+ instance = FactPulse::FactureElectroniqueModelsInvoiceTypeCode.new()
14
+ ```
15
+
@@ -0,0 +1,32 @@
1
+ # FactPulse::FactureElectroniqueRestApiSchemasConvertValidationError
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **rule** | **String** | Code de la regle (BR-XX, BR-FR-XX) | |
8
+ | **bt_code** | **String** | | [optional] |
9
+ | **severity** | **String** | Gravite: error, warning | |
10
+ | **message** | **String** | Message d'erreur | |
11
+ | **suggested_value** | **String** | | [optional] |
12
+ | **suggested_field** | **String** | | [optional] |
13
+ | **explanation** | **String** | | [optional] |
14
+ | **confidence** | **Float** | | [optional] |
15
+
16
+ ## Example
17
+
18
+ ```ruby
19
+ require 'factpulse'
20
+
21
+ instance = FactPulse::FactureElectroniqueRestApiSchemasConvertValidationError.new(
22
+ rule: null,
23
+ bt_code: null,
24
+ severity: null,
25
+ message: null,
26
+ suggested_value: null,
27
+ suggested_field: null,
28
+ explanation: null,
29
+ confidence: null
30
+ )
31
+ ```
32
+
data/docs/FlowSummary.md CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **flow_id** | **String** | | |
7
+ | **flow_id** | **String** | Unique flow identifier | |
8
8
  | **tracking_id** | **String** | | [optional] |
9
- | **name** | **String** | | |
9
+ | **name** | **String** | Flow name | |
10
10
  | **flow_type** | **String** | | [optional] |
11
11
  | **flow_direction** | **String** | | [optional] |
12
12
  | **acknowledgment_status** | **String** | | [optional] |
@@ -0,0 +1,30 @@
1
+ # FactPulse::GenerateAggregatedReportResponse
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **report_id** | **String** | Report identifier | |
8
+ | **transmission_type** | **String** | Transmission type (IN or RE) | |
9
+ | **flow_type** | **String** | AFNOR FlowType determined from content | |
10
+ | **xml** | **String** | Generated XML content | |
11
+ | **xml_size** | **Integer** | XML size in bytes | |
12
+ | **content_summary** | **Hash<String, Object>** | Summary of content (counts by flux type) | |
13
+ | **message** | **String** | Status message | |
14
+
15
+ ## Example
16
+
17
+ ```ruby
18
+ require 'factpulse'
19
+
20
+ instance = FactPulse::GenerateAggregatedReportResponse.new(
21
+ report_id: null,
22
+ transmission_type: null,
23
+ flow_type: null,
24
+ xml: null,
25
+ xml_size: null,
26
+ content_summary: null,
27
+ message: null
28
+ )
29
+ ```
30
+
@@ -0,0 +1,26 @@
1
+ # FactPulse::GenerateEReportingResponse
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **report_id** | **String** | Report identifier | |
8
+ | **flow_type** | **String** | Flux type | |
9
+ | **xml** | **String** | Generated XML content | |
10
+ | **xml_size** | **Integer** | XML size in bytes | |
11
+ | **message** | **String** | Status message | |
12
+
13
+ ## Example
14
+
15
+ ```ruby
16
+ require 'factpulse'
17
+
18
+ instance = FactPulse::GenerateEReportingResponse.new(
19
+ report_id: null,
20
+ flow_type: null,
21
+ xml: null,
22
+ xml_size: null,
23
+ message: null
24
+ )
25
+ ```
26
+
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **credentials** | [**FactureElectroniqueRestApiSchemasChorusProChorusProCredentials**](FactureElectroniqueRestApiSchemasChorusProChorusProCredentials.md) | | [optional] |
7
+ | **credentials** | [**ChorusProCredentials**](ChorusProCredentials.md) | | [optional] |
8
8
  | **siret** | **String** | Structure SIRET (14 digits) | |
9
9
  | **identifier_type** | **String** | Identifier type (SIRET, SIREN, UE_HORS_FRANCE, etc.) | [optional][default to 'SIRET'] |
10
10
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **credentials** | [**FactureElectroniqueRestApiSchemasChorusProChorusProCredentials**](FactureElectroniqueRestApiSchemasChorusProChorusProCredentials.md) | | [optional] |
7
+ | **credentials** | [**ChorusProCredentials**](ChorusProCredentials.md) | | [optional] |
8
8
  | **chorus_invoice_id** | **Integer** | Chorus Pro invoice ID | |
9
9
 
10
10
  ## Example
@@ -4,8 +4,8 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **return_code** | **Integer** | | |
8
- | **message** | **String** | | |
7
+ | **return_code** | **Integer** | Return code (0 = success) | |
8
+ | **message** | **String** | Response message | |
9
9
  | **chorus_invoice_id** | **Integer** | | [optional] |
10
10
  | **invoice_number** | **String** | | [optional] |
11
11
  | **invoice_date** | **String** | | [optional] |
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **credentials** | [**FactureElectroniqueRestApiSchemasChorusProChorusProCredentials**](FactureElectroniqueRestApiSchemasChorusProChorusProCredentials.md) | | [optional] |
7
+ | **credentials** | [**ChorusProCredentials**](ChorusProCredentials.md) | | [optional] |
8
8
  | **structure_id** | **Integer** | Chorus Pro structure ID | |
9
9
  | **language_code** | **String** | Language code (fr, en) | [optional][default to 'fr'] |
10
10
 
@@ -4,8 +4,8 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **return_code** | **Integer** | | |
8
- | **message** | **String** | | |
7
+ | **return_code** | **Integer** | Return code (0 = success) | |
8
+ | **message** | **String** | Response message | |
9
9
  | **structure_id** | **Integer** | | [optional] |
10
10
  | **structure_identifier** | **String** | | [optional] |
11
11
  | **structure_label** | **String** | | [optional] |
data/docs/HealthApi.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # FactPulse::HealthApi
2
2
 
3
- All URIs are relative to *http://localhost*
3
+ All URIs are relative to *https://factpulse.fr*
4
4
 
5
5
  | Method | HTTP request | Description |
6
6
  | ------ | ------------ | ----------- |
@@ -7,7 +7,7 @@
7
7
  | **flow_id** | **String** | | [optional] |
8
8
  | **source_format** | [**InvoiceFormat**](InvoiceFormat.md) | Invoice source format | |
9
9
  | **supplier_reference** | **String** | Invoice number issued by the supplier (BT-1) | |
10
- | **document_type** | [**InvoiceTypeCode**](InvoiceTypeCode.md) | Document type (BT-3) | [optional] |
10
+ | **document_type** | [**InvoiceTypeCodeOutput**](InvoiceTypeCodeOutput.md) | Document type (BT-3) | [optional] |
11
11
  | **supplier** | [**IncomingSupplier**](IncomingSupplier.md) | Invoice issuer (SellerTradeParty) | |
12
12
  | **billing_site_name** | **String** | Recipient name / your company (BT-44) | |
13
13
  | **billing_site_siret** | **String** | | [optional] |
@@ -0,0 +1,48 @@
1
+ # FactPulse::InvoiceInput
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **invoice_id** | **String** | Invoice identifier | |
8
+ | **issue_date** | **Date** | Invoice issue date | |
9
+ | **type_code** | [**InvoiceTypeCode**](InvoiceTypeCode.md) | Invoice type code | [optional] |
10
+ | **currency** | [**Currency**](Currency.md) | | [optional] |
11
+ | **due_date** | **Date** | | [optional] |
12
+ | **seller_siren** | **String** | Seller SIREN/SIRET | |
13
+ | **seller_vat_id** | **String** | | [optional] |
14
+ | **seller_country** | [**Sellercountry**](Sellercountry.md) | | [optional] |
15
+ | **buyer_id** | **String** | | [optional] |
16
+ | **buyer_vat_id** | **String** | | [optional] |
17
+ | **buyer_country** | [**Buyercountry**](Buyercountry.md) | | |
18
+ | **tax_exclusive_amount** | [**Taxexclusiveamount1**](Taxexclusiveamount1.md) | | |
19
+ | **tax_amount** | [**Taxamount1**](Taxamount1.md) | | |
20
+ | **tax_breakdown** | [**Array<TaxBreakdownInput>**](TaxBreakdownInput.md) | VAT breakdown | |
21
+ | **referenced_invoice_id** | **String** | | [optional] |
22
+ | **referenced_invoice_date** | **Date** | | [optional] |
23
+
24
+ ## Example
25
+
26
+ ```ruby
27
+ require 'factpulse'
28
+
29
+ instance = FactPulse::InvoiceInput.new(
30
+ invoice_id: FAC-2025-001,
31
+ issue_date: 2025-01-15,
32
+ type_code: null,
33
+ currency: null,
34
+ due_date: null,
35
+ seller_siren: 123456789,
36
+ seller_vat_id: null,
37
+ seller_country: null,
38
+ buyer_id: null,
39
+ buyer_vat_id: null,
40
+ buyer_country: null,
41
+ tax_exclusive_amount: null,
42
+ tax_amount: null,
43
+ tax_breakdown: null,
44
+ referenced_invoice_id: null,
45
+ referenced_invoice_date: null
46
+ )
47
+ ```
48
+
data/docs/InvoiceLine.md CHANGED
@@ -6,6 +6,8 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **line_number** | **Integer** | Invoice line identifier (BT-126). | |
8
8
  | **line_note** | **String** | | [optional] |
9
+ | **parent_line_id** | **String** | | [optional] |
10
+ | **line_sub_type** | [**LineSubType**](LineSubType.md) | | [optional] |
9
11
  | **reference** | **String** | | [optional] |
10
12
  | **buyer_assigned_id** | **String** | | [optional] |
11
13
  | **product_global_id** | **String** | | [optional] |
@@ -45,6 +47,8 @@ require 'factpulse'
45
47
  instance = FactPulse::InvoiceLine.new(
46
48
  line_number: null,
47
49
  line_note: null,
50
+ parent_line_id: null,
51
+ line_sub_type: null,
48
52
  reference: null,
49
53
  buyer_assigned_id: null,
50
54
  product_global_id: null,
data/docs/InvoiceNote.md CHANGED
@@ -5,7 +5,7 @@
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **subject_code** | **String** | | [optional] |
8
- | **content** | **String** | | |
8
+ | **content** | **String** | Note content | |
9
9
 
10
10
  ## Example
11
11
 
@@ -0,0 +1,26 @@
1
+ # FactPulse::InvoicePaymentInput
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **invoice_id** | **String** | Invoice identifier | |
8
+ | **invoice_date** | **Date** | Original invoice date | |
9
+ | **payment_date** | **Date** | Payment date | |
10
+ | **currency** | [**Currency**](Currency.md) | | [optional] |
11
+ | **amounts_by_rate** | [**Array<PaymentAmountByRate>**](PaymentAmountByRate.md) | Payment amounts by VAT rate | |
12
+
13
+ ## Example
14
+
15
+ ```ruby
16
+ require 'factpulse'
17
+
18
+ instance = FactPulse::InvoicePaymentInput.new(
19
+ invoice_id: FAC-2025-001,
20
+ invoice_date: 2025-01-15,
21
+ payment_date: 2025-01-25,
22
+ currency: null,
23
+ amounts_by_rate: null
24
+ )
25
+ ```
26
+
@@ -1,6 +1,6 @@
1
1
  # FactPulse::InvoiceProcessingApi
2
2
 
3
- All URIs are relative to *http://localhost*
3
+ All URIs are relative to *https://factpulse.fr*
4
4
 
5
5
  | Method | HTTP request | Description |
6
6
  | ------ | ------------ | ----------- |
@@ -23,7 +23,7 @@ All URIs are relative to *http://localhost*
23
23
 
24
24
  Generate a Factur-X invoice
25
25
 
26
- Generates an electronic invoice in Factur-X format compliant with European standards. ## Applied Standards - **Factur-X** (France): FNFE-MPE standard (Forum National de la Facture Électronique) - **ZUGFeRD** (Germany): German format compatible with Factur-X - **EN 16931**: European semantic standard for electronic invoicing - **ISO 19005-3** (PDF/A-3): Long-term electronic archiving - **Cross Industry Invoice (CII)**: UN/CEFACT XML syntax ## 🆕 New: Simplified format with auto-enrichment (P0.1) You can now create an invoice by providing only: - An invoice number - A sender SIRET + **IBAN** (required) - A recipient SIRET - Invoice lines (description, quantity, net price) **Simplified format example**: ```json { \"number\": \"FACT-2025-001\", \"sender\": { \"siret\": \"92019522900017\", \"iban\": \"FR7630001007941234567890185\" }, \"recipient\": {\"siret\": \"35600000000048\"}, \"lines\": [ {\"description\": \"Service\", \"quantity\": 10, \"unitPrice\": 100.00, \"vatRate\": 20.0} ] } ``` **⚠️ Required fields (simplified format)**: - `number`: Unique invoice number - `sender.siret`: Sender's SIRET (14 digits) - `sender.iban`: Bank account IBAN (no public API to retrieve it) - `recipient.siret`: Recipient's SIRET - `lines[]`: At least one invoice line **What happens automatically with `auto_enrich=True`**: - ✅ Name enrichment from Chorus Pro API - ✅ Address enrichment from Business Search API (free, public) - ✅ Automatic intra-EU VAT calculation (FR + key + SIREN) - ✅ Chorus Pro ID retrieval for electronic invoicing - ✅ Net/VAT/Gross totals calculation - ✅ Date generation (today + 30-day due date) - ✅ Multi-rate VAT handling **Supported identifiers**: - SIRET (14 digits): Specific establishment ⭐ Recommended - SIREN (9 digits): Company (auto-selection of headquarters) - Special types: UE_HORS_FRANCE, RIDET, TAHITI, etc. ## Checks performed during generation ### 1. Data validation (Pydantic) - Data types (amounts as Decimal, ISO 8601 dates) - Formats (14-digit SIRET, 9-digit SIREN, IBAN) - Required fields per profile - Amount consistency (Net + VAT = Gross) ### 2. CII-compliant XML generation - Serialization according to Cross Industry Invoice XSD schema - Correct UN/CEFACT namespaces - Hierarchical structure respected - UTF-8 encoding without BOM ### 3. Schematron validation - Business rules for selected profile (MINIMUM, BASIC, EN16931, EXTENDED) - Element cardinality (required, optional, repeatable) - Calculation rules (totals, VAT, discounts) - European EN 16931 compliance ### 4. PDF/A-3 conversion (if output_format='pdf') - Source PDF conversion to PDF/A-3 via Ghostscript - Factur-X XML embedding in PDF - Compliant XMP metadata - ICC sRGB color profile - Removal of forbidden elements (JavaScript, forms) ## How it works 1. **Submission**: Invoice is queued in Celery for asynchronous processing 2. **Immediate return**: You receive a `task_id` (HTTP 202 Accepted) 3. **Tracking**: Use the `/tasks/{task_id}/status` endpoint to track progress ## Output formats - **xml**: Generates only Factur-X XML (recommended for testing) - **pdf**: Generates PDF/A-3 with embedded XML (requires `source_pdf`) ## Factur-X profiles - **MINIMUM**: Minimal data (simplified invoice) - **BASIC**: Basic information (SMEs) - **EN16931**: European standard (recommended, compliant with directive 2014/55/EU) - **EXTENDED**: All available data (large accounts) ## What you get After successful processing (status `completed`): - **XML only**: Base64-encoded Factur-X compliant XML file - **PDF/A-3**: PDF with embedded XML, ready for sending/archiving - **Metadata**: Profile, Factur-X version, file size - **Validation**: Schematron compliance confirmation ## Validation Data is automatically validated according to detected format. On error, a 422 status is returned with invalid field details.
26
+ Generates an electronic invoice in Factur-X format compliant with European standards. ## Applied Standards - **Factur-X** (France): FNFE-MPE standard (Forum National de la Facture Électronique) - **ZUGFeRD** (Germany): German format compatible with Factur-X - **EN 16931**: European semantic standard for electronic invoicing - **ISO 19005-3** (PDF/A-3): Long-term electronic archiving - **Cross Industry Invoice (CII)**: UN/CEFACT XML syntax ## 🆕 New: Simplified format with auto-enrichment (P0.1) You can now create an invoice by providing only: - An invoice number - A supplier SIRET + **IBAN** (required) - A recipient SIRET - Invoice lines (description, quantity, net price) **Simplified format example**: ```json { \"number\": \"FACT-2025-001\", \"supplier\": { \"siret\": \"92019522900017\", \"iban\": \"FR7630001007941234567890185\" }, \"recipient\": {\"siret\": \"35600000000048\"}, \"lines\": [ {\"description\": \"Service\", \"quantity\": 10, \"unitPrice\": 100.00, \"vatRate\": 20.0} ] } ``` **⚠️ Required fields (simplified format)**: - `number`: Unique invoice number - `supplier.siret`: Supplier's SIRET (14 digits) - `supplier.iban`: Bank account IBAN (no public API to retrieve it) - `recipient.siret`: Recipient's SIRET - `lines[]`: At least one invoice line **What happens automatically with `auto_enrich=True`**: - ✅ Name enrichment from Chorus Pro API - ✅ Address enrichment from Business Search API (free, public) - ✅ Automatic intra-EU VAT calculation (FR + key + SIREN) - ✅ Chorus Pro ID retrieval for electronic invoicing - ✅ Net/VAT/Gross totals calculation - ✅ Date generation (today + 30-day due date) - ✅ Multi-rate VAT handling **Supported identifiers**: - SIRET (14 digits): Specific establishment ⭐ Recommended - SIREN (9 digits): Company (auto-selection of headquarters) - Special types: UE_HORS_FRANCE, RIDET, TAHITI, etc. ## Checks performed during generation ### 1. Data validation (Pydantic) - Data types (amounts as Decimal, ISO 8601 dates) - Formats (14-digit SIRET, 9-digit SIREN, IBAN) - Required fields per profile - Amount consistency (Net + VAT = Gross) ### 2. CII-compliant XML generation - Serialization according to Cross Industry Invoice XSD schema - Correct UN/CEFACT namespaces - Hierarchical structure respected - UTF-8 encoding without BOM ### 3. Schematron validation - Business rules for selected profile (MINIMUM, BASIC, EN16931, EXTENDED) - Element cardinality (required, optional, repeatable) - Calculation rules (totals, VAT, discounts) - European EN 16931 compliance ### 4. PDF/A-3 conversion (if output_format='pdf') - Source PDF conversion to PDF/A-3 via Ghostscript - Factur-X XML embedding in PDF - Compliant XMP metadata - ICC sRGB color profile - Removal of forbidden elements (JavaScript, forms) ## How it works 1. **Submission**: Invoice is queued in Celery for asynchronous processing 2. **Immediate return**: You receive a `task_id` (HTTP 202 Accepted) 3. **Tracking**: Use the `/tasks/{task_id}/status` endpoint to track progress ## Webhook notification (recommended) Instead of polling, you can receive a webhook notification when the task completes: ``` callback_url=https://your-server.com/webhook ``` The webhook will POST a JSON payload with: - `event_type`: `generation.completed` or `generation.failed` - `data.task_id`: The Celery task ID - `data.content_b64` or `data.xml_content`: The generated content - `X-Webhook-Signature` header for HMAC verification See `/docs/WEBHOOKS.md` for full documentation. ## Output formats - **xml**: Generates only Factur-X XML (recommended for testing) - **pdf**: Generates PDF/A-3 with embedded XML (requires `source_pdf`) ## Factur-X profiles - **MINIMUM**: Minimal data (simplified invoice) - **BASIC**: Basic information (SMEs) - **EN16931**: European standard (recommended, compliant with directive 2014/55/EU) - **EXTENDED**: All available data (large accounts) ## What you get After successful processing (status `completed`): - **XML only**: Base64-encoded Factur-X compliant XML file - **PDF/A-3**: PDF with embedded XML, ready for sending/archiving - **Metadata**: Profile, Factur-X version, file size - **Validation**: Schematron compliance confirmation ## Validation Data is automatically validated according to detected format. On error, a 422 status is returned with invalid field details.
27
27
 
28
28
  ### Examples
29
29
 
@@ -37,12 +37,15 @@ FactPulse.configure do |config|
37
37
  end
38
38
 
39
39
  api_instance = FactPulse::InvoiceProcessingApi.new
40
- invoice_data = 'invoice_data_example' # String | Invoice data in JSON format. Two formats accepted: 1. **Classic format**: Complete FactureFacturX structure (all fields) 2. **Simplified format** (🆕 P0.1): Minimal structure with auto-enrichment Format is detected automatically!
40
+ invoice_data = 'invoice_data_example' # String | Invoice data in JSON format. Two formats accepted: 1. **Classic format**: Complete FacturXInvoice structure (all fields) 2. **Simplified format** (🆕 P0.1): Minimal structure with auto-enrichment Format is detected automatically!
41
41
  opts = {
42
42
  profile: FactPulse::APIProfile::MINIMUM, # APIProfile | Factur-X profile: MINIMUM, BASIC, EN16931 or EXTENDED.
43
43
  output_format: FactPulse::OutputFormat::XML, # OutputFormat | Output format: 'xml' (XML only) or 'pdf' (Factur-X PDF with embedded XML).
44
44
  auto_enrich: true, # Boolean | 🆕 Enable auto-enrichment from SIRET/SIREN (simplified format only)
45
- source_pdf: File.new('/path/to/some/file') # File |
45
+ source_pdf: File.new('/path/to/some/file'), # File |
46
+ callback_url: 'callback_url_example', # String |
47
+ webhook_mode: 'webhook_mode_example', # String | Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL)
48
+ skip_br_fr: true # Boolean |
46
49
  }
47
50
 
48
51
  begin
@@ -76,11 +79,14 @@ end
76
79
 
77
80
  | Name | Type | Description | Notes |
78
81
  | ---- | ---- | ----------- | ----- |
79
- | **invoice_data** | **String** | Invoice data in JSON format. Two formats accepted: 1. **Classic format**: Complete FactureFacturX structure (all fields) 2. **Simplified format** (🆕 P0.1): Minimal structure with auto-enrichment Format is detected automatically! | |
82
+ | **invoice_data** | **String** | Invoice data in JSON format. Two formats accepted: 1. **Classic format**: Complete FacturXInvoice structure (all fields) 2. **Simplified format** (🆕 P0.1): Minimal structure with auto-enrichment Format is detected automatically! | |
80
83
  | **profile** | [**APIProfile**](APIProfile.md) | Factur-X profile: MINIMUM, BASIC, EN16931 or EXTENDED. | [optional] |
81
84
  | **output_format** | [**OutputFormat**](OutputFormat.md) | Output format: 'xml' (XML only) or 'pdf' (Factur-X PDF with embedded XML). | [optional] |
82
85
  | **auto_enrich** | **Boolean** | 🆕 Enable auto-enrichment from SIRET/SIREN (simplified format only) | [optional][default to true] |
83
86
  | **source_pdf** | **File** | | [optional] |
87
+ | **callback_url** | **String** | | [optional] |
88
+ | **webhook_mode** | **String** | Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL) | [optional][default to 'inline'] |
89
+ | **skip_br_fr** | **Boolean** | | [optional] |
84
90
 
85
91
  ### Return type
86
92
 
@@ -102,7 +108,7 @@ end
102
108
 
103
109
  Generate a self-signed X.509 test certificate
104
110
 
105
- Generates a self-signed X.509 certificate for PDF electronic signature testing. **⚠️ WARNING: TEST certificate only!** This certificate is: - ✅ Suitable for testing and development - ✅ Compatible with PDF signing (PAdES) - ✅ Compliant with eIDAS **SES** level (Simple Electronic Signature) - ❌ **NEVER usable in production** - ❌ **Not recognized** by browsers and PDF readers - ❌ **No legal value** ## eIDAS levels - **SES** (Simple): Self-signed certificate ← Generated by this endpoint - **AdES** (Advanced): Commercial CA certificate (Let's Encrypt, etc.) - **QES** (Qualified): Qualified certificate from QTSP (CertEurope, Universign, etc.) ## Usage Once generated, the certificate can be: 1. **Saved in Django** (recommended): - Django Admin > Signing Certificates - Upload `certificate_pem` and `private_key_pem` 2. **Used directly**: - Sign a PDF with `/sign-pdf` - The certificate will be automatically used ## Example call ```bash curl -X POST \"https://www.factpulse.fr/api/v1/processing/generate-test-certificate\" \\ -H \"Authorization: Bearer eyJ0eXAi...\" \\ -H \"Content-Type: application/json\" \\ -d '{ \"cn\": \"Test Client XYZ\", \"organization\": \"Client XYZ Ltd\", \"email\": \"contact@xyz.com\", \"validity_days\": 365 }' ``` ## Use cases - PDF signature testing in development - Electronic signature POC - Training and demos - Automated integration tests ## Technical compliance Certificate generated with: - RSA key 2048 or 4096 bits - SHA-256 algorithm - Key Usage extensions: `digitalSignature`, `contentCommitment` (non-repudiation) - Extended Key Usage extensions: `codeSigning`, `emailProtection` - Validity: 1 day to 10 years (configurable) - Format: PEM (certificate and key) - Optional: PKCS#12 (.p12)
111
+ Generates a self-signed X.509 certificate for PDF electronic signature testing. **⚠️ WARNING: TEST certificate only!** This certificate is: - ✅ Suitable for testing and development - ✅ Compatible with PDF signing (PAdES) - ✅ Compliant with eIDAS **SES** level (Simple Electronic Signature) - ❌ **NEVER usable in production** - ❌ **Not recognized** by browsers and PDF readers - ❌ **No legal value** ## eIDAS levels - **SES** (Simple): Self-signed certificate ← Generated by this endpoint - **AdES** (Advanced): Commercial CA certificate (Let's Encrypt, etc.) - **QES** (Qualified): Qualified certificate from QTSP (CertEurope, Universign, etc.) ## Usage Once generated, the certificate can be: 1. **Saved in Django** (recommended): - Django Admin > Signing Certificates - Upload `certificate_pem` and `private_key_pem` 2. **Used directly**: - Sign a PDF with `/sign-pdf` - The certificate will be automatically used ## Example call ```bash curl -X POST \"https://factpulse.fr/api/v1/processing/generate-test-certificate\" \\ -H \"Authorization: Bearer eyJ0eXAi...\" \\ -H \"Content-Type: application/json\" \\ -d '{ \"cn\": \"Test Client XYZ\", \"organization\": \"Client XYZ Ltd\", \"email\": \"contact@xyz.com\", \"validity_days\": 365 }' ``` ## Use cases - PDF signature testing in development - Electronic signature POC - Training and demos - Automated integration tests ## Technical compliance Certificate generated with: - RSA key 2048 or 4096 bits - SHA-256 algorithm - Key Usage extensions: `digitalSignature`, `contentCommitment` (non-repudiation) - Extended Key Usage extensions: `codeSigning`, `emailProtection` - Validity: 1 day to 10 years (configurable) - Format: PEM (certificate and key) - Optional: PKCS#12 (.p12)
106
112
 
107
113
  ### Examples
108
114
 
@@ -185,7 +191,7 @@ FactPulse.configure do |config|
185
191
  end
186
192
 
187
193
  api_instance = FactPulse::InvoiceProcessingApi.new
188
- task_id = 'task_id_example' # String |
194
+ task_id = 'task_id_example' # String | Celery task ID returned by async endpoints (UUID format)
189
195
 
190
196
  begin
191
197
  # Get task generation status
@@ -218,7 +224,7 @@ end
218
224
 
219
225
  | Name | Type | Description | Notes |
220
226
  | ---- | ---- | ----------- | ----- |
221
- | **task_id** | **String** | | |
227
+ | **task_id** | **String** | Celery task ID returned by async endpoints (UUID format) | |
222
228
 
223
229
  ### Return type
224
230
 
@@ -339,6 +345,8 @@ end
339
345
  api_instance = FactPulse::InvoiceProcessingApi.new
340
346
  pdf_file = File.new('/path/to/some/file') # File | PDF file to sign (processed asynchronously)
341
347
  opts = {
348
+ callback_url: 'callback_url_example', # String |
349
+ webhook_mode: 'webhook_mode_example', # String | Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL)
342
350
  reason: 'reason_example', # String |
343
351
  location: 'location_example', # String |
344
352
  contact: 'contact_example', # String |
@@ -379,6 +387,8 @@ end
379
387
  | Name | Type | Description | Notes |
380
388
  | ---- | ---- | ----------- | ----- |
381
389
  | **pdf_file** | **File** | PDF file to sign (processed asynchronously) | |
390
+ | **callback_url** | **String** | | [optional] |
391
+ | **webhook_mode** | **String** | Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL) | [optional][default to 'inline'] |
382
392
  | **reason** | **String** | | [optional] |
383
393
  | **location** | **String** | | [optional] |
384
394
  | **contact** | **String** | | [optional] |
@@ -471,11 +481,11 @@ end
471
481
 
472
482
  ## submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post
473
483
 
474
- > <TaskResponse> submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post(submit_complete_invoice_request)
484
+ > <TaskResponse> submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post(submit_complete_invoice_request, opts)
475
485
 
476
486
  Submit a complete invoice (asynchronous with Celery)
477
487
 
478
- Asynchronous version of the `/invoices/submit-complete` endpoint using Celery for background processing. **Automated workflow (same as synchronous version):** 1. **Auto-enrichment** (optional): retrieves data via public APIs and Chorus Pro/AFNOR 2. **Factur-X PDF generation**: creates a PDF/A-3 with embedded XML 3. **Electronic signature** (optional): signs the PDF with a certificate 4. **Submission**: sends to the chosen destination (Chorus Pro or AFNOR PDP) **Supported destinations:** - **Chorus Pro**: French B2G platform (invoices to public sector) - **AFNOR PDP**: Partner Dematerialization Platforms **Differences with synchronous version:** - ✅ **Non-blocking**: Returns immediately with a `task_id` (HTTP 202 Accepted) - ✅ **Background processing**: Invoice is processed by a Celery worker - ✅ **Progress tracking**: Use `/tasks/{task_id}/status` to track status - ✅ **Ideal for high volumes**: Allows processing many invoices in parallel **How to use:** 1. **Submission**: Call this endpoint with your invoice data 2. **Immediate return**: You receive a `task_id` (e.g., \"abc123-def456\") 3. **Tracking**: Call `/tasks/{task_id}/status` to check progress 4. **Result**: When `status = \"SUCCESS\"`, the `result` field contains the complete response **Credentials and signature**: Same modes as the synchronous version (JWT or payload).
488
+ Asynchronous version of the `/invoices/submit-complete` endpoint using Celery for background processing. **Automated workflow (same as synchronous version):** 1. **Auto-enrichment** (optional): retrieves data via public APIs and Chorus Pro/AFNOR 2. **Factur-X PDF generation**: creates a PDF/A-3 with embedded XML 3. **Electronic signature** (optional): signs the PDF with a certificate 4. **Submission**: sends to the chosen destination (Chorus Pro or AFNOR PDP) **Supported destinations:** - **Chorus Pro**: French B2G platform (invoices to public sector) - **AFNOR PDP**: Partner Dematerialization Platforms **Differences with synchronous version:** - ✅ **Non-blocking**: Returns immediately with a `task_id` (HTTP 202 Accepted) - ✅ **Background processing**: Invoice is processed by a Celery worker - ✅ **Progress tracking**: Use `/tasks/{task_id}/status` to track status - ✅ **Ideal for high volumes**: Allows processing many invoices in parallel **How to use:** 1. **Submission**: Call this endpoint with your invoice data 2. **Immediate return**: You receive a `task_id` (e.g., \"abc123-def456\") 3. **Tracking**: Call `/tasks/{task_id}/status` to check progress 4. **Result**: When `status = \"SUCCESS\"`, the `result` field contains the complete response **Webhook notification (recommended):** Instead of polling, add `?callback_url=https://your-server.com/webhook` to receive automatic notification: - `event_type`: `submission.completed`, `submission.failed`, or `submission.partial` - `data.submission_result`: Complete submission result - `X-Webhook-Signature` header for HMAC verification **Credentials and signature**: Same modes as the synchronous version (JWT or payload).
479
489
 
480
490
  ### Examples
481
491
 
@@ -490,10 +500,14 @@ end
490
500
 
491
501
  api_instance = FactPulse::InvoiceProcessingApi.new
492
502
  submit_complete_invoice_request = FactPulse::SubmitCompleteInvoiceRequest.new({invoice_data: FactPulse::SimplifiedInvoiceData.new({number: 'number_example', supplier: { key: 3.56}, recipient: { key: 3.56}, lines: [{ key: 3.56}]}), source_pdf: 'source_pdf_example', destination: FactPulse::AFNORDestination.new}) # SubmitCompleteInvoiceRequest |
503
+ opts = {
504
+ callback_url: 'callback_url_example', # String | Webhook URL for async notification when submission completes.
505
+ webhook_mode: 'webhook_mode_example' # String | Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL)
506
+ }
493
507
 
494
508
  begin
495
509
  # Submit a complete invoice (asynchronous with Celery)
496
- result = api_instance.submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post(submit_complete_invoice_request)
510
+ result = api_instance.submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post(submit_complete_invoice_request, opts)
497
511
  p result
498
512
  rescue FactPulse::ApiError => e
499
513
  puts "Error when calling InvoiceProcessingApi->submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post: #{e}"
@@ -504,12 +518,12 @@ end
504
518
 
505
519
  This returns an Array which contains the response data, status code and headers.
506
520
 
507
- > <Array(<TaskResponse>, Integer, Hash)> submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post_with_http_info(submit_complete_invoice_request)
521
+ > <Array(<TaskResponse>, Integer, Hash)> submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post_with_http_info(submit_complete_invoice_request, opts)
508
522
 
509
523
  ```ruby
510
524
  begin
511
525
  # Submit a complete invoice (asynchronous with Celery)
512
- data, status_code, headers = api_instance.submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post_with_http_info(submit_complete_invoice_request)
526
+ data, status_code, headers = api_instance.submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post_with_http_info(submit_complete_invoice_request, opts)
513
527
  p status_code # => 2xx
514
528
  p headers # => { ... }
515
529
  p data # => <TaskResponse>
@@ -523,6 +537,8 @@ end
523
537
  | Name | Type | Description | Notes |
524
538
  | ---- | ---- | ----------- | ----- |
525
539
  | **submit_complete_invoice_request** | [**SubmitCompleteInvoiceRequest**](SubmitCompleteInvoiceRequest.md) | | |
540
+ | **callback_url** | **String** | Webhook URL for async notification when submission completes. | [optional] |
541
+ | **webhook_mode** | **String** | Webhook content delivery: &#39;inline&#39; (base64 in payload) or &#39;download_url&#39; (temporary URL, 1h TTL) | [optional][default to &#39;inline&#39;] |
526
542
 
527
543
  ### Return type
528
544
 
@@ -561,7 +577,8 @@ api_instance = FactPulse::InvoiceProcessingApi.new
561
577
  pdf_file = File.new('/path/to/some/file') # File | Factur-X PDF file to validate (.pdf format).
562
578
  opts = {
563
579
  profile: FactPulse::APIProfile::MINIMUM, # APIProfile |
564
- use_verapdf: true # Boolean | Enable strict PDF/A validation with VeraPDF (recommended for production). If False, uses basic metadata validation.
580
+ use_verapdf: true, # Boolean | Enable strict PDF/A validation with VeraPDF (recommended for production). If False, uses basic metadata validation.
581
+ skip_br_fr: true # Boolean |
565
582
  }
566
583
 
567
584
  begin
@@ -598,6 +615,7 @@ end
598
615
  | **pdf_file** | **File** | Factur-X PDF file to validate (.pdf format). | |
599
616
  | **profile** | [**APIProfile**](APIProfile.md) | | [optional] |
600
617
  | **use_verapdf** | **Boolean** | Enable strict PDF/A validation with VeraPDF (recommended for production). If False, uses basic metadata validation. | [optional][default to false] |
618
+ | **skip_br_fr** | **Boolean** | | [optional] |
601
619
 
602
620
  ### Return type
603
621
 
@@ -619,7 +637,7 @@ end
619
637
 
620
638
  Validate a Factur-X PDF (asynchronous with polling)
621
639
 
622
- Validates a Factur-X PDF asynchronously with polling system. ## How it works 1. **Submission**: PDF is queued for asynchronous validation 2. **Immediate return**: You receive a `task_id` (HTTP 202) 3. **Tracking**: Use the `/tasks/{task_id}/status` endpoint to track progress ## Advantages of asynchronous mode - **No timeout**: Ideal for large PDFs or VeraPDF validation (which can take several seconds) - **Scalability**: Validations are processed by dedicated Celery workers - **Status tracking**: Allows you to monitor validation progress - **Non-blocking**: Your client doesn't wait during validation ## When to use this mode? - **VeraPDF validation enabled** (`use_verapdf=True`): Strict validation can take 2-10 seconds - **Large PDF files**: PDFs > 1 MB - **Batch processing**: Validating multiple invoices in parallel - **Asynchronous integration**: Your system supports polling ## Checks performed ### 1. Factur-X XML extraction and validation - Verifies presence of Factur-X compliant embedded XML file - Automatically detects profile used (MINIMUM, BASIC, EN16931, EXTENDED) - Validates XML against detected profile's Schematron rules ### 2. PDF/A compliance - **Without VeraPDF**: Basic metadata validation (fast, ~100ms) - **With VeraPDF**: Strict ISO 19005 validation (146+ rules, 2-10s) - Detects PDF/A version (PDF/A-1, PDF/A-3, etc.) - Detailed non-compliance reports ### 3. XMP metadata - Verifies presence of XMP metadata in PDF - Validates Factur-X metadata compliance (profile, version) - Extracts all available XMP metadata ### 4. Electronic signatures - Detects presence of electronic signatures or seals - Extracts information about each signature (signer, date, reason) - Counts number of signatures present ## Parameters - **pdf_file**: The Factur-X PDF file to validate - **profile**: Expected Factur-X profile (optional). If not specified, profile will be auto-detected from embedded XML file. - **use_verapdf**: Enable strict PDF/A validation with VeraPDF. ⚠️ **Warning**: VeraPDF can take 2-10 seconds depending on PDF size. Recommended only in asynchronous mode to avoid timeouts. ## Retrieving results After submission, use `GET /tasks/{task_id}/status` endpoint to retrieve the result. **Polling example**: ```python import requests import time # 1. Submit task response = requests.post(\"/validate-facturx-async\", files={\"pdf_file\": pdf_file}) task_id = response.json()[\"taskId\"] # 2. Poll every 2 seconds while True: status_response = requests.get(f\"/tasks/{task_id}/status\") status = status_response.json() if status[\"status\"] == \"SUCCESS\": result = status[\"result\"][\"validation_result\"] print(f\"Compliant: {result['is_compliant']}\") break elif status[\"status\"] == \"FAILURE\": print(f\"Error: {status['result']['errorMessage']}\") break time.sleep(2) # Wait 2 seconds before next check ``` ## Use cases - Validate invoices before sending with VeraPDF (strict validation) - Process invoice batches in parallel - Integrate validation into an asynchronous pipeline - Validate large PDFs without timeout risk
640
+ Validates a Factur-X PDF asynchronously with polling system. ## How it works 1. **Submission**: PDF is queued for asynchronous validation 2. **Immediate return**: You receive a `task_id` (HTTP 202) 3. **Tracking**: Use the `/tasks/{task_id}/status` endpoint to track progress ## Advantages of asynchronous mode - **No timeout**: Ideal for large PDFs or VeraPDF validation (which can take several seconds) - **Scalability**: Validations are processed by dedicated Celery workers - **Status tracking**: Allows you to monitor validation progress - **Non-blocking**: Your client doesn't wait during validation ## Webhook notification (recommended) Instead of polling, you can receive a webhook notification when validation completes: ``` callback_url=https://your-server.com/webhook webhook_mode=download_url # Optional: get download URL instead of base64 ``` The webhook will POST a JSON payload with: - `event_type`: `validation.completed` or `validation.failed` - `data.is_compliant`: Whether the PDF is Factur-X compliant - `data.detected_profile`: The detected Factur-X profile - `X-Webhook-Signature` header for HMAC verification ## When to use this mode? - **VeraPDF validation enabled** (`use_verapdf=True`): Strict validation can take 2-10 seconds - **Large PDF files**: PDFs > 1 MB - **Batch processing**: Validating multiple invoices in parallel - **Asynchronous integration**: Your system supports polling ## Checks performed ### 1. Factur-X XML extraction and validation - Verifies presence of Factur-X compliant embedded XML file - Automatically detects profile used (MINIMUM, BASIC, EN16931, EXTENDED) - Validates XML against detected profile's Schematron rules ### 2. PDF/A compliance - **Without VeraPDF**: Basic metadata validation (fast, ~100ms) - **With VeraPDF**: Strict ISO 19005 validation (146+ rules, 2-10s) - Detects PDF/A version (PDF/A-1, PDF/A-3, etc.) - Detailed non-compliance reports ### 3. XMP metadata - Verifies presence of XMP metadata in PDF - Validates Factur-X metadata compliance (profile, version) - Extracts all available XMP metadata ### 4. Electronic signatures - Detects presence of electronic signatures or seals - Extracts information about each signature (signer, date, reason) - Counts number of signatures present ## Parameters - **pdf_file**: The Factur-X PDF file to validate - **profile**: Expected Factur-X profile (optional). If not specified, profile will be auto-detected from embedded XML file. - **use_verapdf**: Enable strict PDF/A validation with VeraPDF. ⚠️ **Warning**: VeraPDF can take 2-10 seconds depending on PDF size. Recommended only in asynchronous mode to avoid timeouts. ## Retrieving results After submission, use `GET /tasks/{task_id}/status` endpoint to retrieve the result. **Polling example**: ```python import requests import time # 1. Submit task response = requests.post(\"/validate-facturx-async\", files={\"pdf_file\": pdf_file}) task_id = response.json()[\"taskId\"] # 2. Poll every 2 seconds while True: status_response = requests.get(f\"/tasks/{task_id}/status\") status = status_response.json() if status[\"status\"] == \"SUCCESS\": result = status[\"result\"][\"validation_result\"] print(f\"Compliant: {result['is_compliant']}\") break elif status[\"status\"] == \"FAILURE\": print(f\"Error: {status['result']['errorMessage']}\") break time.sleep(2) # Wait 2 seconds before next check ``` ## Use cases - Validate invoices before sending with VeraPDF (strict validation) - Process invoice batches in parallel - Integrate validation into an asynchronous pipeline - Validate large PDFs without timeout risk
623
641
 
624
642
  ### Examples
625
643
 
@@ -636,7 +654,9 @@ api_instance = FactPulse::InvoiceProcessingApi.new
636
654
  pdf_file = File.new('/path/to/some/file') # File | Factur-X PDF file to validate (.pdf format).
637
655
  opts = {
638
656
  profile: FactPulse::APIProfile::MINIMUM, # APIProfile |
639
- use_verapdf: true # Boolean | Enable strict PDF/A validation with VeraPDF (recommended for production). May take several seconds.
657
+ use_verapdf: true, # Boolean | Enable strict PDF/A validation with VeraPDF (recommended for production). May take several seconds.
658
+ callback_url: 'callback_url_example', # String |
659
+ webhook_mode: 'webhook_mode_example' # String | Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL)
640
660
  }
641
661
 
642
662
  begin
@@ -673,6 +693,8 @@ end
673
693
  | **pdf_file** | **File** | Factur-X PDF file to validate (.pdf format). | |
674
694
  | **profile** | [**APIProfile**](APIProfile.md) | | [optional] |
675
695
  | **use_verapdf** | **Boolean** | Enable strict PDF/A validation with VeraPDF (recommended for production). May take several seconds. | [optional][default to false] |
696
+ | **callback_url** | **String** | | [optional] |
697
+ | **webhook_mode** | **String** | Webhook content delivery: &#39;inline&#39; (base64 in payload) or &#39;download_url&#39; (temporary URL, 1h TTL) | [optional][default to &#39;inline&#39;] |
676
698
 
677
699
  ### Return type
678
700
 
@@ -779,7 +801,8 @@ end
779
801
  api_instance = FactPulse::InvoiceProcessingApi.new
780
802
  xml_file = File.new('/path/to/some/file') # File | Factur-X XML file to validate (.xml format).
781
803
  opts = {
782
- profile: FactPulse::APIProfile::MINIMUM # APIProfile | Validation profile (MINIMUM, BASIC, EN16931, EXTENDED).
804
+ profile: FactPulse::APIProfile::MINIMUM, # APIProfile | Validation profile (MINIMUM, BASIC, EN16931, EXTENDED).
805
+ skip_br_fr: true # Boolean |
783
806
  }
784
807
 
785
808
  begin
@@ -815,6 +838,7 @@ end
815
838
  | ---- | ---- | ----------- | ----- |
816
839
  | **xml_file** | **File** | Factur-X XML file to validate (.xml format). | |
817
840
  | **profile** | [**APIProfile**](APIProfile.md) | Validation profile (MINIMUM, BASIC, EN16931, EXTENDED). | [optional] |
841
+ | **skip_br_fr** | **Boolean** | | [optional] |
818
842
 
819
843
  ### Return type
820
844
 
@@ -0,0 +1,15 @@
1
+ # FactPulse::InvoiceTypeCodeOutput
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+
8
+ ## Example
9
+
10
+ ```ruby
11
+ require 'factpulse'
12
+
13
+ instance = FactPulse::InvoiceTypeCodeOutput.new()
14
+ ```
15
+
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **invoicing_framework_code** | [**InvoicingFrameworkCode**](InvoicingFrameworkCode.md) | | |
7
+ | **invoicing_framework_code** | [**InvoicingFrameworkCode**](InvoicingFrameworkCode.md) | Chorus Pro framework code (A1, A2, A9, A12) | |
8
8
  | **operation_nature** | [**OperationNature**](OperationNature.md) | | [optional] |
9
9
  | **approver_service_code** | **String** | | [optional] |
10
10
  | **approver_structure_code** | **String** | | [optional] |
@@ -0,0 +1,15 @@
1
+ # FactPulse::LineSubType
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+
8
+ ## Example
9
+
10
+ ```ruby
11
+ require 'factpulse'
12
+
13
+ instance = FactPulse::LineSubType.new()
14
+ ```
15
+