factpulse 0.1.0 → 1.0.0

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 (794) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -4
  3. data/Gemfile.lock +7 -7
  4. data/LICENSE +1 -1
  5. data/README.md +146 -159
  6. data/docs/AFNORPDPPAApi.md +6 -87
  7. data/docs/AFNORPDPPADirectoryServiceApi.md +238 -148
  8. data/docs/AFNORPDPPAFlowServiceApi.md +40 -52
  9. data/docs/APIError.md +2 -2
  10. data/docs/AdresseElectronique.md +20 -0
  11. data/docs/AdressePostale.md +26 -0
  12. data/docs/CadreDeFacturation.md +22 -0
  13. data/docs/CategorieTVA.md +15 -0
  14. data/docs/CertificateInfoResponse.md +20 -20
  15. data/docs/ChorusProApi.md +142 -224
  16. data/docs/ChorusProCredentials.md +5 -5
  17. data/docs/{AFNORDiffusionStatus.md → CodeCadreFacturation.md} +2 -2
  18. data/docs/{AFNORFacilityType.md → CodeRaisonReduction.md} +2 -2
  19. data/docs/{GetInvoiceRequest.md → ConsulterFactureRequest.md} +4 -4
  20. data/docs/ConsulterFactureResponse.md +34 -0
  21. data/docs/ConsulterStructureRequest.md +22 -0
  22. data/docs/ConsulterStructureResponse.md +34 -0
  23. data/docs/{AFNORCredentials.md → CredentialsAFNOR.md} +2 -2
  24. data/docs/{FactureElectroniqueRestApiSchemasProcessingChorusProCredentials.md → CredentialsChorusPro.md} +4 -4
  25. data/docs/Destinataire.md +28 -0
  26. data/docs/Destination.md +7 -7
  27. data/docs/DestinationAFNOR.md +24 -0
  28. data/docs/DestinationChorusPro.md +20 -0
  29. data/docs/DonneesFactureSimplifiees.md +34 -0
  30. data/docs/FactureEnrichieInfo.md +32 -0
  31. data/docs/FactureFacturX.md +46 -0
  32. data/docs/FormatSortie.md +15 -0
  33. data/docs/Fournisseur.md +36 -0
  34. data/docs/GenerateCertificateRequest.md +19 -19
  35. data/docs/GenerateCertificateResponse.md +8 -8
  36. data/docs/InformationSignatureAPI.md +28 -0
  37. data/docs/LigneDePoste.md +46 -0
  38. data/docs/LigneDePosteMontantRemiseHt.md +15 -0
  39. data/docs/LigneDePosteTauxTvaManuel.md +15 -0
  40. data/docs/LigneDeTVA.md +26 -0
  41. data/docs/{AmountDue.md → ModeDepot.md} +2 -2
  42. data/docs/ModePaiement.md +15 -0
  43. data/docs/{AFNORFlowType.md → MontantAPayer.md} +2 -2
  44. data/docs/MontantBaseHt.md +15 -0
  45. data/docs/{AFNORAlgorithm.md → MontantHtTotal.md} +2 -2
  46. data/docs/{AFNORContainsOperator.md → MontantRemiseGlobaleTtc.md} +2 -2
  47. data/docs/MontantTotal.md +30 -0
  48. data/docs/{AFNORFacilityNature.md → MontantTotalAcompte.md} +2 -2
  49. data/docs/MontantTotalLigneHt.md +15 -0
  50. data/docs/{AFNORFlowSyntax.md → MontantTtcTotal.md} +2 -2
  51. data/docs/{APIProfile.md → MontantTva.md} +2 -2
  52. data/docs/{AFNOREntityType.md → MontantTvaLigne.md} +2 -2
  53. data/docs/MontantTvaTotal.md +15 -0
  54. data/docs/{AFNORFlowProfile.md → MontantUnitaireHt.md} +2 -2
  55. data/docs/{InvoiceNote.md → Note.md} +3 -3
  56. data/docs/ObtenirIdChorusProRequest.md +22 -0
  57. data/docs/ObtenirIdChorusProResponse.md +24 -0
  58. data/docs/OptionsProcessing.md +24 -0
  59. data/docs/PDFFacturXInfo.md +22 -0
  60. data/docs/ParametresSignature.md +34 -0
  61. data/docs/ParametresStructure.md +22 -0
  62. data/docs/PieceJointeComplementaire.md +26 -0
  63. data/docs/{Amount.md → ProfilAPI.md} +2 -2
  64. data/docs/{Amount2.md → Quantite.md} +2 -2
  65. data/docs/RechercherServicesResponse.md +24 -0
  66. data/docs/RechercherStructureRequest.md +26 -0
  67. data/docs/RechercherStructureResponse.md +24 -0
  68. data/docs/References.md +32 -0
  69. data/docs/ReponseTache.md +18 -0
  70. data/docs/ReponseValidationErreur.md +18 -0
  71. data/docs/ReponseValidationSucces.md +18 -0
  72. data/docs/ResultatAFNOR.md +26 -0
  73. data/docs/ResultatChorusPro.md +22 -0
  74. data/docs/ResultatValidationPDFAPI.md +62 -0
  75. data/docs/SantApi.md +131 -0
  76. data/docs/ServiceStructure.md +24 -0
  77. data/docs/SignatureInfo.md +2 -2
  78. data/docs/SoumettreFactureCompleteRequest.md +26 -0
  79. data/docs/SoumettreFactureCompleteResponse.md +34 -0
  80. data/docs/SoumettreFactureRequest.md +46 -0
  81. data/docs/SoumettreFactureResponse.md +24 -0
  82. data/docs/StatutCelery.md +15 -0
  83. data/docs/{InvoiceStatus.md → StatutFacture.md} +5 -5
  84. data/docs/StatutTache.md +22 -0
  85. data/docs/StructureInfo.md +10 -10
  86. data/docs/Tauxmanuel.md +15 -0
  87. data/docs/TraitementFactureApi.md +831 -0
  88. data/docs/TypeFacture.md +15 -0
  89. data/docs/{Amount1.md → TypeTVA.md} +2 -2
  90. data/docs/{Rate.md → Unite.md} +2 -2
  91. data/docs/UtilisateurApi.md +74 -0
  92. data/docs/ValidationError.md +1 -1
  93. data/docs/ValidationErrorDetail.md +3 -3
  94. data/docs/{AFNORDirectoryLineField.md → ValidationErrorLocInner.md} +2 -2
  95. data/factpulse.gemspec +7 -7
  96. data/lib/factpulse/api/afnorpdppa_api.rb +8 -77
  97. data/lib/factpulse/api/afnorpdppa_directory_service_api.rb +143 -143
  98. data/lib/factpulse/api/afnorpdppa_flow_service_api.rb +34 -67
  99. data/lib/factpulse/api/chorus_pro_api.rb +147 -149
  100. data/lib/factpulse/api/sant_api.rb +136 -0
  101. data/lib/factpulse/api/traitement_facture_api.rb +835 -0
  102. data/lib/factpulse/api/utilisateur_api.rb +79 -0
  103. data/lib/factpulse/api_client.rb +4 -4
  104. data/lib/factpulse/api_error.rb +4 -4
  105. data/lib/factpulse/api_model_base.rb +4 -4
  106. data/lib/factpulse/configuration.rb +8 -19
  107. data/lib/factpulse/helpers/client.rb +246 -218
  108. data/lib/factpulse/helpers/exceptions.rb +14 -38
  109. data/lib/factpulse/helpers.rb +13 -0
  110. data/lib/factpulse/models/adresse_electronique.rb +196 -0
  111. data/lib/factpulse/models/adresse_postale.rb +189 -0
  112. data/lib/factpulse/models/api_error.rb +7 -7
  113. data/lib/factpulse/models/cadre_de_facturation.rb +207 -0
  114. data/lib/factpulse/models/categorie_tva.rb +47 -0
  115. data/lib/factpulse/models/certificate_info_response.rb +166 -166
  116. data/lib/factpulse/models/chorus_pro_credentials.rb +14 -14
  117. data/lib/factpulse/models/code_cadre_facturation.rb +42 -0
  118. data/lib/factpulse/models/code_raison_reduction.rb +45 -0
  119. data/lib/factpulse/models/consulter_facture_request.rb +176 -0
  120. data/lib/factpulse/models/consulter_facture_response.rb +261 -0
  121. data/lib/factpulse/models/consulter_structure_request.rb +188 -0
  122. data/lib/factpulse/models/consulter_structure_response.rb +261 -0
  123. data/lib/factpulse/models/credentials_afnor.rb +169 -0
  124. data/lib/factpulse/models/credentials_chorus_pro.rb +191 -0
  125. data/lib/factpulse/models/destinataire.rb +215 -0
  126. data/lib/factpulse/models/destination.rb +9 -9
  127. data/lib/factpulse/models/destination_afnor.rb +228 -0
  128. data/lib/factpulse/models/destination_chorus_pro.rb +194 -0
  129. data/lib/factpulse/models/donnees_facture_simplifiees.rb +342 -0
  130. data/lib/factpulse/models/error_level.rb +4 -4
  131. data/lib/factpulse/models/error_source.rb +5 -6
  132. data/lib/factpulse/models/facture_enrichie_info.rb +348 -0
  133. data/lib/factpulse/models/facture_factur_x.rb +443 -0
  134. data/lib/factpulse/models/format_sortie.rb +40 -0
  135. data/lib/factpulse/models/fournisseur.rb +271 -0
  136. data/lib/factpulse/models/generate_certificate_request.rb +108 -108
  137. data/lib/factpulse/models/generate_certificate_response.rb +49 -49
  138. data/lib/factpulse/models/http_validation_error.rb +4 -4
  139. data/lib/factpulse/models/information_signature_api.rb +216 -0
  140. data/lib/factpulse/models/ligne_de_poste.rb +390 -0
  141. data/lib/factpulse/models/ligne_de_poste_montant_remise_ht.rb +104 -0
  142. data/lib/factpulse/models/ligne_de_poste_taux_tva_manuel.rb +104 -0
  143. data/lib/factpulse/models/ligne_de_tva.rb +242 -0
  144. data/lib/factpulse/models/mode_depot.rb +41 -0
  145. data/lib/factpulse/models/mode_paiement.rb +44 -0
  146. data/lib/factpulse/models/montant_a_payer.rb +104 -0
  147. data/lib/factpulse/models/montant_base_ht.rb +104 -0
  148. data/lib/factpulse/models/montant_ht_total.rb +104 -0
  149. data/lib/factpulse/models/montant_remise_globale_ttc.rb +104 -0
  150. data/lib/factpulse/models/montant_total.rb +272 -0
  151. data/lib/factpulse/models/montant_total_acompte.rb +104 -0
  152. data/lib/factpulse/models/montant_total_ligne_ht.rb +104 -0
  153. data/lib/factpulse/models/montant_ttc_total.rb +104 -0
  154. data/lib/factpulse/models/montant_tva.rb +104 -0
  155. data/lib/factpulse/models/montant_tva_ligne.rb +104 -0
  156. data/lib/factpulse/models/montant_tva_total.rb +104 -0
  157. data/lib/factpulse/models/montant_unitaire_ht.rb +104 -0
  158. data/lib/factpulse/models/note.rb +175 -0
  159. data/lib/factpulse/models/obtenir_id_chorus_pro_request.rb +188 -0
  160. data/lib/factpulse/models/obtenir_id_chorus_pro_response.rb +230 -0
  161. data/lib/factpulse/models/options_processing.rb +207 -0
  162. data/lib/factpulse/models/parametres_signature.rb +235 -0
  163. data/lib/factpulse/models/parametres_structure.rb +175 -0
  164. data/lib/factpulse/models/pdf_factur_x_info.rb +205 -0
  165. data/lib/factpulse/models/piece_jointe_complementaire.rb +269 -0
  166. data/lib/factpulse/models/profil_api.rb +42 -0
  167. data/lib/factpulse/models/quantite.rb +104 -0
  168. data/lib/factpulse/models/rechercher_services_response.rb +214 -0
  169. data/lib/factpulse/models/rechercher_structure_request.rb +191 -0
  170. data/lib/factpulse/models/rechercher_structure_response.rb +216 -0
  171. data/lib/factpulse/models/references.rb +290 -0
  172. data/lib/factpulse/models/reponse_tache.rb +165 -0
  173. data/lib/factpulse/models/reponse_validation_erreur.rb +167 -0
  174. data/lib/factpulse/models/reponse_validation_succes.rb +165 -0
  175. data/lib/factpulse/models/resultat_afnor.rb +240 -0
  176. data/lib/factpulse/models/resultat_chorus_pro.rb +186 -0
  177. data/lib/factpulse/models/resultat_validation_pdfapi.rb +523 -0
  178. data/lib/factpulse/models/scheme_id.rb +7 -20
  179. data/lib/factpulse/models/service_structure.rb +247 -0
  180. data/lib/factpulse/models/signature_info.rb +22 -22
  181. data/lib/factpulse/models/soumettre_facture_complete_request.rb +239 -0
  182. data/lib/factpulse/models/soumettre_facture_complete_response.rb +355 -0
  183. data/lib/factpulse/models/soumettre_facture_request.rb +388 -0
  184. data/lib/factpulse/models/soumettre_facture_response.rb +213 -0
  185. data/lib/factpulse/models/statut_celery.rb +43 -0
  186. data/lib/factpulse/models/statut_facture.rb +203 -0
  187. data/lib/factpulse/models/statut_tache.rb +226 -0
  188. data/lib/factpulse/models/structure_info.rb +86 -86
  189. data/lib/factpulse/models/tauxmanuel.rb +104 -0
  190. data/lib/factpulse/models/type_facture.rb +40 -0
  191. data/lib/factpulse/models/type_tva.rb +42 -0
  192. data/lib/factpulse/models/unite.rb +44 -0
  193. data/lib/factpulse/models/validation_error.rb +5 -5
  194. data/lib/factpulse/models/validation_error_detail.rb +8 -8
  195. data/lib/factpulse/models/validation_error_loc_inner.rb +103 -0
  196. data/lib/factpulse/version.rb +5 -5
  197. data/lib/factpulse.rb +79 -315
  198. metadata +215 -676
  199. data/docs/AFNORAcknowledgement.md +0 -20
  200. data/docs/AFNORAcknowledgementDetail.md +0 -24
  201. data/docs/AFNORAddressEdit.md +0 -30
  202. data/docs/AFNORAddressPatch.md +0 -30
  203. data/docs/AFNORAddressPut.md +0 -30
  204. data/docs/AFNORAddressRead.md +0 -32
  205. data/docs/AFNORCreateDirectoryLineBody.md +0 -20
  206. data/docs/AFNORCreateDirectoryLineBodyAddressingInformation.md +0 -24
  207. data/docs/AFNORCreateDirectoryLineBodyPeriod.md +0 -20
  208. data/docs/AFNORCreateRoutingCodeBody.md +0 -32
  209. data/docs/AFNORDestination.md +0 -26
  210. data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCode.md +0 -32
  211. data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCodePlatform.md +0 -20
  212. data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCodeRoutingCode.md +0 -28
  213. data/docs/AFNORDirectoryLinePost201Response.md +0 -22
  214. data/docs/AFNORDirectoryLineSearchPost200Response.md +0 -22
  215. data/docs/AFNORError.md +0 -26
  216. data/docs/AFNORFacilityAdministrativeStatus.md +0 -15
  217. data/docs/AFNORFacilityPayloadHistory.md +0 -34
  218. data/docs/AFNORFacilityPayloadHistoryUleB2gAdditionalData.md +0 -28
  219. data/docs/AFNORFacilityPayloadIncluded.md +0 -32
  220. data/docs/AFNORFlow.md +0 -38
  221. data/docs/AFNORFlowAckStatus.md +0 -15
  222. data/docs/AFNORFlowDirection.md +0 -15
  223. data/docs/AFNORFlowInfo.md +0 -28
  224. data/docs/AFNORFullFlowInfo.md +0 -32
  225. data/docs/AFNORHealthCheckResponse.md +0 -22
  226. data/docs/AFNORLegalUnitAdministrativeStatus.md +0 -15
  227. data/docs/AFNORLegalUnitPayloadHistory.md +0 -24
  228. data/docs/AFNORLegalUnitPayloadIncluded.md +0 -24
  229. data/docs/AFNORLegalUnitPayloadIncludedNoSiren.md +0 -22
  230. data/docs/AFNORPlatformStatus.md +0 -15
  231. data/docs/AFNORProcessingRule.md +0 -15
  232. data/docs/AFNORReasonCode.md +0 -49
  233. data/docs/AFNORReasonCodeEnum.md +0 -15
  234. data/docs/AFNORRecipientPlatformType.md +0 -15
  235. data/docs/AFNORResult.md +0 -32
  236. data/docs/AFNORRoutingCodeAdministrativeStatus.md +0 -15
  237. data/docs/AFNORRoutingCodeField.md +0 -15
  238. data/docs/AFNORRoutingCodePayloadHistoryLegalUnitFacility.md +0 -34
  239. data/docs/AFNORRoutingCodePost201Response.md +0 -22
  240. data/docs/AFNORRoutingCodeSearch.md +0 -28
  241. data/docs/AFNORRoutingCodeSearchFilters.md +0 -30
  242. data/docs/AFNORRoutingCodeSearchFiltersAdministrativeStatus.md +0 -20
  243. data/docs/AFNORRoutingCodeSearchFiltersRoutingCodeName.md +0 -20
  244. data/docs/AFNORRoutingCodeSearchFiltersRoutingIdentifier.md +0 -20
  245. data/docs/AFNORRoutingCodeSearchPost200Response.md +0 -22
  246. data/docs/AFNORRoutingCodeSearchSortingInner.md +0 -20
  247. data/docs/AFNORSearchDirectoryLine.md +0 -26
  248. data/docs/AFNORSearchDirectoryLineFilters.md +0 -26
  249. data/docs/AFNORSearchDirectoryLineFiltersAddressingIdentifier.md +0 -20
  250. data/docs/AFNORSearchDirectoryLineFiltersAddressingSuffix.md +0 -20
  251. data/docs/AFNORSearchDirectoryLineSortingInner.md +0 -20
  252. data/docs/AFNORSearchFlowContent.md +0 -22
  253. data/docs/AFNORSearchFlowFilters.md +0 -30
  254. data/docs/AFNORSearchFlowParams.md +0 -20
  255. data/docs/AFNORSearchSiren.md +0 -26
  256. data/docs/AFNORSearchSirenFilters.md +0 -24
  257. data/docs/AFNORSearchSirenFiltersAdministrativeStatus.md +0 -20
  258. data/docs/AFNORSearchSirenFiltersBusinessName.md +0 -20
  259. data/docs/AFNORSearchSirenFiltersEntityType.md +0 -20
  260. data/docs/AFNORSearchSirenFiltersSiren.md +0 -20
  261. data/docs/AFNORSearchSirenSortingInner.md +0 -20
  262. data/docs/AFNORSearchSiret.md +0 -28
  263. data/docs/AFNORSearchSiretFilters.md +0 -34
  264. data/docs/AFNORSearchSiretFiltersAddressLines.md +0 -20
  265. data/docs/AFNORSearchSiretFiltersAdministrativeStatus.md +0 -20
  266. data/docs/AFNORSearchSiretFiltersCountrySubdivision.md +0 -20
  267. data/docs/AFNORSearchSiretFiltersFacilityType.md +0 -20
  268. data/docs/AFNORSearchSiretFiltersLocality.md +0 -20
  269. data/docs/AFNORSearchSiretFiltersName.md +0 -20
  270. data/docs/AFNORSearchSiretFiltersPostalCode.md +0 -20
  271. data/docs/AFNORSearchSiretFiltersSiret.md +0 -20
  272. data/docs/AFNORSearchSiretSortingInner.md +0 -20
  273. data/docs/AFNORSirenField.md +0 -15
  274. data/docs/AFNORSirenSearchPost200Response.md +0 -22
  275. data/docs/AFNORSiretField.md +0 -15
  276. data/docs/AFNORSiretSearchPost200Response.md +0 -22
  277. data/docs/AFNORSortingOrder.md +0 -15
  278. data/docs/AFNORStrictOperator.md +0 -15
  279. data/docs/AFNORUpdatePatchDirectoryLineBody.md +0 -18
  280. data/docs/AFNORUpdatePatchRoutingCodeBody.md +0 -24
  281. data/docs/AFNORUpdatePutRoutingCodeBody.md +0 -24
  282. data/docs/AFNORWebhookCallbackContent.md +0 -18
  283. data/docs/AcknowledgmentStatus.md +0 -15
  284. data/docs/ActionCodeInfo.md +0 -22
  285. data/docs/ActionCodesResponse.md +0 -22
  286. data/docs/AdditionalDocument.md +0 -26
  287. data/docs/AggregatedPaymentInput.md +0 -22
  288. data/docs/AggregatedTransactionInput.md +0 -32
  289. data/docs/AllowanceCharge.md +0 -32
  290. data/docs/AllowanceChargeReasonCode.md +0 -15
  291. data/docs/AllowanceReasonCode.md +0 -15
  292. data/docs/AllowanceTotalAmount.md +0 -15
  293. data/docs/AsyncTaskStatus.md +0 -22
  294. data/docs/AsyncTasksApi.md +0 -82
  295. data/docs/BaseAmount.md +0 -15
  296. data/docs/BoundingBoxSchema.md +0 -30
  297. data/docs/Buyercountry.md +0 -15
  298. data/docs/CeleryStatus.md +0 -15
  299. data/docs/ChargeTotalAmount.md +0 -15
  300. data/docs/ChorusProDestination.md +0 -20
  301. data/docs/ChorusProResult.md +0 -22
  302. data/docs/ClientActivateResponse.md +0 -22
  303. data/docs/ClientCreateRequest.md +0 -22
  304. data/docs/ClientDetail.md +0 -38
  305. data/docs/ClientListResponse.md +0 -24
  306. data/docs/ClientManagementApi.md +0 -921
  307. data/docs/ClientSummary.md +0 -38
  308. data/docs/ClientUpdateRequest.md +0 -22
  309. data/docs/Contact.md +0 -24
  310. data/docs/ConvertResumeRequest.md +0 -18
  311. data/docs/ConvertSuccessResponse.md +0 -36
  312. data/docs/ConvertValidationFailedResponse.md +0 -34
  313. data/docs/CountryCode.md +0 -15
  314. data/docs/CreateAggregatedReportRequest.md +0 -36
  315. data/docs/CreateCDARRequest.md +0 -52
  316. data/docs/CreateEReportingRequest.md +0 -38
  317. data/docs/Currency.md +0 -15
  318. data/docs/CurrencyCode.md +0 -15
  319. data/docs/DeliveryParty.md +0 -24
  320. data/docs/DocType.md +0 -15
  321. data/docs/DocumentTypeInfo.md +0 -22
  322. data/docs/DownloadsApi.md +0 -161
  323. data/docs/EReportingFlowType.md +0 -15
  324. data/docs/EReportingValidationError.md +0 -22
  325. data/docs/ElectronicAddress.md +0 -20
  326. data/docs/ElectronicSignatureApi.md +0 -339
  327. data/docs/Encaisseamount.md +0 -15
  328. data/docs/Encaisseamount1.md +0 -15
  329. data/docs/EncaisseeRequest.md +0 -40
  330. data/docs/EnrichedInvoiceInfo.md +0 -32
  331. data/docs/ExtractionInfo.md +0 -24
  332. data/docs/FacturXConversionApi.md +0 -319
  333. data/docs/FacturXGenerationApi.md +0 -254
  334. data/docs/FacturXInvoice.md +0 -76
  335. data/docs/FacturXPDFInfo.md +0 -22
  336. data/docs/FacturXPDFXMLVerificationApi.md +0 -240
  337. data/docs/FacturXValidationApi.md +0 -256
  338. data/docs/FactureElectroniqueRestApiSchemasEreportingInvoiceTypeCode.md +0 -15
  339. data/docs/FactureElectroniqueRestApiSchemasValidationValidationErrorResponse.md +0 -18
  340. data/docs/FieldStatus.md +0 -15
  341. data/docs/FileInfo.md +0 -20
  342. data/docs/FilesInfo.md +0 -20
  343. data/docs/FlowDirection.md +0 -15
  344. data/docs/FlowProfile.md +0 -15
  345. data/docs/FlowSummary.md +0 -32
  346. data/docs/FlowSyntax.md +0 -15
  347. data/docs/FlowType.md +0 -15
  348. data/docs/Flux10EReportingApi.md +0 -814
  349. data/docs/Flux6InvoiceLifecycleCDARApi.md +0 -698
  350. data/docs/GenerateAggregatedReportResponse.md +0 -30
  351. data/docs/GenerateCDARResponse.md +0 -26
  352. data/docs/GenerateEReportingResponse.md +0 -26
  353. data/docs/GetChorusProIdRequest.md +0 -22
  354. data/docs/GetChorusProIdResponse.md +0 -24
  355. data/docs/GetInvoiceResponse.md +0 -34
  356. data/docs/GetStructureRequest.md +0 -22
  357. data/docs/GetStructureResponse.md +0 -34
  358. data/docs/GlobalAllowanceAmount.md +0 -15
  359. data/docs/GrossUnitPrice.md +0 -15
  360. data/docs/HealthApi.md +0 -203
  361. data/docs/IncomingInvoice.md +0 -54
  362. data/docs/IncomingSupplier.md +0 -32
  363. data/docs/InvoiceFormat.md +0 -15
  364. data/docs/InvoiceInput.md +0 -50
  365. data/docs/InvoiceLine.md +0 -84
  366. data/docs/InvoiceLineAllowanceAmount.md +0 -15
  367. data/docs/InvoicePaymentInput.md +0 -26
  368. data/docs/InvoiceReferences.md +0 -52
  369. data/docs/InvoiceTotals.md +0 -38
  370. data/docs/InvoiceTotalsPrepayment.md +0 -15
  371. data/docs/InvoiceTypeCode.md +0 -15
  372. data/docs/InvoiceTypeCodeOutput.md +0 -15
  373. data/docs/InvoicingFramework.md +0 -24
  374. data/docs/InvoicingFrameworkCode.md +0 -15
  375. data/docs/IssuerRoleCode.md +0 -15
  376. data/docs/KeyRotationRequest.md +0 -20
  377. data/docs/KeyRotationResponse.md +0 -24
  378. data/docs/LineNetAmount.md +0 -15
  379. data/docs/LineSubType.md +0 -15
  380. data/docs/LineTotalAmount.md +0 -15
  381. data/docs/LocationInner.md +0 -15
  382. data/docs/MandatoryNoteSchema.md +0 -30
  383. data/docs/ManualRate.md +0 -15
  384. data/docs/ManualVatRate.md +0 -15
  385. data/docs/MissingField.md +0 -28
  386. data/docs/OperationNature.md +0 -15
  387. data/docs/OutputFormat.md +0 -15
  388. data/docs/PDFValidationResultAPI.md +0 -62
  389. data/docs/PDPConfigResponse.md +0 -46
  390. data/docs/PDPConfigUpdateRequest.md +0 -30
  391. data/docs/PDPCredentials.md +0 -26
  392. data/docs/PageDimensionsSchema.md +0 -20
  393. data/docs/Payee.md +0 -32
  394. data/docs/PaymentAmountByRate.md +0 -20
  395. data/docs/PaymentCard.md +0 -20
  396. data/docs/PaymentMeans.md +0 -15
  397. data/docs/Percentage.md +0 -15
  398. data/docs/PostalAddress.md +0 -30
  399. data/docs/PriceAllowanceAmount.md +0 -15
  400. data/docs/PriceBasisQuantity.md +0 -15
  401. data/docs/ProcessingOptions.md +0 -24
  402. data/docs/ProcessingRule.md +0 -15
  403. data/docs/ProductCharacteristic.md +0 -20
  404. data/docs/ProductClassification.md +0 -22
  405. data/docs/Quantity.md +0 -15
  406. data/docs/Rate1.md +0 -15
  407. data/docs/ReasonCodeInfo.md +0 -22
  408. data/docs/ReasonCodesResponse.md +0 -22
  409. data/docs/Recipient.md +0 -34
  410. data/docs/RecipientInput.md +0 -26
  411. data/docs/RefuseeRequest.md +0 -40
  412. data/docs/ReportIssuer.md +0 -24
  413. data/docs/ReportPeriod.md +0 -20
  414. data/docs/ReportSender.md +0 -22
  415. data/docs/RoundingAmount.md +0 -15
  416. data/docs/SchematronValidationError.md +0 -32
  417. data/docs/SearchFlowRequest.md +0 -34
  418. data/docs/SearchFlowResponse.md +0 -24
  419. data/docs/SearchServicesResponse.md +0 -24
  420. data/docs/SearchStructureRequest.md +0 -26
  421. data/docs/SearchStructureResponse.md +0 -24
  422. data/docs/SecretStatus.md +0 -24
  423. data/docs/Sellercountry.md +0 -15
  424. data/docs/SignatureInfoAPI.md +0 -28
  425. data/docs/SignatureParameters.md +0 -34
  426. data/docs/SimplifiedCDARResponse.md +0 -26
  427. data/docs/SimplifiedInvoiceData.md +0 -42
  428. data/docs/StatusCodeInfo.md +0 -22
  429. data/docs/StatusCodesResponse.md +0 -22
  430. data/docs/StructureParameters.md +0 -22
  431. data/docs/StructureService.md +0 -24
  432. data/docs/SubmissionMode.md +0 -15
  433. data/docs/SubmitAggregatedReportRequest.md +0 -28
  434. data/docs/SubmitCDARRequest.md +0 -62
  435. data/docs/SubmitCDARResponse.md +0 -24
  436. data/docs/SubmitCDARXMLRequest.md +0 -30
  437. data/docs/SubmitCompleteInvoiceRequest.md +0 -26
  438. data/docs/SubmitCompleteInvoiceResponse.md +0 -34
  439. data/docs/SubmitEReportingRequest.md +0 -28
  440. data/docs/SubmitEReportingResponse.md +0 -32
  441. data/docs/SubmitFlowRequest.md +0 -28
  442. data/docs/SubmitFlowResponse.md +0 -30
  443. data/docs/SubmitGrossAmount.md +0 -15
  444. data/docs/SubmitInvoiceRequest.md +0 -46
  445. data/docs/SubmitInvoiceResponse.md +0 -24
  446. data/docs/SubmitNetAmount.md +0 -15
  447. data/docs/SubmitVatAmount.md +0 -15
  448. data/docs/SupplementaryAttachment.md +0 -26
  449. data/docs/Supplier.md +0 -52
  450. data/docs/TaskResponse.md +0 -18
  451. data/docs/TaxBreakdownInput.md +0 -22
  452. data/docs/TaxDueDateType.md +0 -15
  453. data/docs/TaxRepresentative.md +0 -22
  454. data/docs/TaxableAmount.md +0 -15
  455. data/docs/Taxableamount.md +0 -15
  456. data/docs/Taxamount.md +0 -15
  457. data/docs/Taxamount1.md +0 -15
  458. data/docs/Taxamount2.md +0 -15
  459. data/docs/Taxexclusiveamount.md +0 -15
  460. data/docs/Taxexclusiveamount1.md +0 -15
  461. data/docs/TotalGrossAmount.md +0 -15
  462. data/docs/TotalNetAmount.md +0 -15
  463. data/docs/TotalVATAmount.md +0 -15
  464. data/docs/TransactionCategory.md +0 -15
  465. data/docs/TransmissionTypeCode.md +0 -15
  466. data/docs/UnitNetPrice.md +0 -15
  467. data/docs/UnitOfMeasure.md +0 -15
  468. data/docs/VATAccountingCode.md +0 -15
  469. data/docs/VATAmount.md +0 -15
  470. data/docs/VATCategory.md +0 -15
  471. data/docs/VATLine.md +0 -32
  472. data/docs/VATPointDateCode.md +0 -15
  473. data/docs/ValidateCDARRequest.md +0 -32
  474. data/docs/ValidateCDARResponse.md +0 -22
  475. data/docs/ValidateEReportingRequest.md +0 -18
  476. data/docs/ValidateEReportingResponse.md +0 -28
  477. data/docs/ValidationErrorResponse.md +0 -24
  478. data/docs/ValidationInfo.md +0 -28
  479. data/docs/ValidationSuccessResponse.md +0 -18
  480. data/docs/VatRate.md +0 -15
  481. data/docs/VerificationSuccessResponse.md +0 -36
  482. data/docs/VerifiedFieldSchema.md +0 -34
  483. data/docs/WebhookSecretDeleteResponse.md +0 -20
  484. data/docs/WebhookSecretGenerateResponse.md +0 -24
  485. data/docs/WebhookSecretStatusResponse.md +0 -20
  486. data/lib/factpulse/api/async_tasks_api.rb +0 -85
  487. data/lib/factpulse/api/client_management_api.rb +0 -831
  488. data/lib/factpulse/api/downloads_api.rb +0 -151
  489. data/lib/factpulse/api/electronic_signature_api.rb +0 -339
  490. data/lib/factpulse/api/factur_x_conversion_api.rb +0 -306
  491. data/lib/factpulse/api/factur_x_generation_api.rb +0 -254
  492. data/lib/factpulse/api/factur_x_validation_api.rb +0 -256
  493. data/lib/factpulse/api/factur_xpdfxml_verification_api.rb +0 -232
  494. data/lib/factpulse/api/flux10_e_reporting_api.rb +0 -777
  495. data/lib/factpulse/api/flux6_invoice_lifecycle_cdar_api.rb +0 -670
  496. data/lib/factpulse/api/health_api.rb +0 -193
  497. data/lib/factpulse/helpers/helpers.rb +0 -14
  498. data/lib/factpulse/models/acknowledgment_status.rb +0 -41
  499. data/lib/factpulse/models/action_code_info.rb +0 -220
  500. data/lib/factpulse/models/action_codes_response.rb +0 -207
  501. data/lib/factpulse/models/additional_document.rb +0 -206
  502. data/lib/factpulse/models/afnor_acknowledgement.rb +0 -216
  503. data/lib/factpulse/models/afnor_acknowledgement_detail.rb +0 -267
  504. data/lib/factpulse/models/afnor_address_edit.rb +0 -353
  505. data/lib/factpulse/models/afnor_address_patch.rb +0 -386
  506. data/lib/factpulse/models/afnor_address_put.rb +0 -435
  507. data/lib/factpulse/models/afnor_address_read.rb +0 -382
  508. data/lib/factpulse/models/afnor_algorithm.rb +0 -43
  509. data/lib/factpulse/models/afnor_contains_operator.rb +0 -39
  510. data/lib/factpulse/models/afnor_create_directory_line_body.rb +0 -156
  511. data/lib/factpulse/models/afnor_create_directory_line_body_addressing_information.rb +0 -294
  512. data/lib/factpulse/models/afnor_create_directory_line_body_period.rb +0 -175
  513. data/lib/factpulse/models/afnor_create_routing_code_body.rb +0 -412
  514. data/lib/factpulse/models/afnor_credentials.rb +0 -169
  515. data/lib/factpulse/models/afnor_destination.rb +0 -224
  516. data/lib/factpulse/models/afnor_diffusion_status.rb +0 -40
  517. data/lib/factpulse/models/afnor_directory_line_field.rb +0 -44
  518. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code.rb +0 -312
  519. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_platform.rb +0 -178
  520. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_routing_code.rb +0 -308
  521. data/lib/factpulse/models/afnor_directory_line_post201_response.rb +0 -187
  522. data/lib/factpulse/models/afnor_directory_line_search_post200_response.rb +0 -168
  523. data/lib/factpulse/models/afnor_entity_type.rb +0 -40
  524. data/lib/factpulse/models/afnor_error.rb +0 -214
  525. data/lib/factpulse/models/afnor_facility_administrative_status.rb +0 -40
  526. data/lib/factpulse/models/afnor_facility_nature.rb +0 -40
  527. data/lib/factpulse/models/afnor_facility_payload_history.rb +0 -323
  528. data/lib/factpulse/models/afnor_facility_payload_history_ule_b2g_additional_data.rb +0 -198
  529. data/lib/factpulse/models/afnor_facility_payload_included.rb +0 -314
  530. data/lib/factpulse/models/afnor_facility_type.rb +0 -40
  531. data/lib/factpulse/models/afnor_flow.rb +0 -315
  532. data/lib/factpulse/models/afnor_flow_ack_status.rb +0 -41
  533. data/lib/factpulse/models/afnor_flow_direction.rb +0 -40
  534. data/lib/factpulse/models/afnor_flow_info.rb +0 -293
  535. data/lib/factpulse/models/afnor_flow_profile.rb +0 -41
  536. data/lib/factpulse/models/afnor_flow_syntax.rb +0 -43
  537. data/lib/factpulse/models/afnor_flow_type.rb +0 -51
  538. data/lib/factpulse/models/afnor_full_flow_info.rb +0 -339
  539. data/lib/factpulse/models/afnor_health_check_response.rb +0 -220
  540. data/lib/factpulse/models/afnor_legal_unit_administrative_status.rb +0 -40
  541. data/lib/factpulse/models/afnor_legal_unit_payload_history.rb +0 -247
  542. data/lib/factpulse/models/afnor_legal_unit_payload_included.rb +0 -247
  543. data/lib/factpulse/models/afnor_legal_unit_payload_included_no_siren.rb +0 -207
  544. data/lib/factpulse/models/afnor_platform_status.rb +0 -40
  545. data/lib/factpulse/models/afnor_processing_rule.rb +0 -44
  546. data/lib/factpulse/models/afnor_reason_code.rb +0 -105
  547. data/lib/factpulse/models/afnor_reason_code_enum.rb +0 -53
  548. data/lib/factpulse/models/afnor_recipient_platform_type.rb +0 -40
  549. data/lib/factpulse/models/afnor_result.rb +0 -270
  550. data/lib/factpulse/models/afnor_routing_code_administrative_status.rb +0 -40
  551. data/lib/factpulse/models/afnor_routing_code_field.rb +0 -46
  552. data/lib/factpulse/models/afnor_routing_code_payload_history_legal_unit_facility.rb +0 -366
  553. data/lib/factpulse/models/afnor_routing_code_post201_response.rb +0 -228
  554. data/lib/factpulse/models/afnor_routing_code_search.rb +0 -224
  555. data/lib/factpulse/models/afnor_routing_code_search_filters.rb +0 -201
  556. data/lib/factpulse/models/afnor_routing_code_search_filters_administrative_status.rb +0 -178
  557. data/lib/factpulse/models/afnor_routing_code_search_filters_routing_code_name.rb +0 -209
  558. data/lib/factpulse/models/afnor_routing_code_search_filters_routing_identifier.rb +0 -209
  559. data/lib/factpulse/models/afnor_routing_code_search_post200_response.rb +0 -168
  560. data/lib/factpulse/models/afnor_routing_code_search_sorting_inner.rb +0 -179
  561. data/lib/factpulse/models/afnor_search_directory_line.rb +0 -191
  562. data/lib/factpulse/models/afnor_search_directory_line_filters.rb +0 -183
  563. data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_identifier.rb +0 -198
  564. data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_suffix.rb +0 -198
  565. data/lib/factpulse/models/afnor_search_directory_line_sorting_inner.rb +0 -179
  566. data/lib/factpulse/models/afnor_search_flow_content.rb +0 -168
  567. data/lib/factpulse/models/afnor_search_flow_filters.rb +0 -250
  568. data/lib/factpulse/models/afnor_search_flow_params.rb +0 -195
  569. data/lib/factpulse/models/afnor_search_siren.rb +0 -191
  570. data/lib/factpulse/models/afnor_search_siren_filters.rb +0 -174
  571. data/lib/factpulse/models/afnor_search_siren_filters_administrative_status.rb +0 -178
  572. data/lib/factpulse/models/afnor_search_siren_filters_business_name.rb +0 -198
  573. data/lib/factpulse/models/afnor_search_siren_filters_entity_type.rb +0 -178
  574. data/lib/factpulse/models/afnor_search_siren_filters_siren.rb +0 -209
  575. data/lib/factpulse/models/afnor_search_siren_sorting_inner.rb +0 -179
  576. data/lib/factpulse/models/afnor_search_siret.rb +0 -224
  577. data/lib/factpulse/models/afnor_search_siret_filters.rb +0 -219
  578. data/lib/factpulse/models/afnor_search_siret_filters_address_lines.rb +0 -198
  579. data/lib/factpulse/models/afnor_search_siret_filters_administrative_status.rb +0 -178
  580. data/lib/factpulse/models/afnor_search_siret_filters_country_subdivision.rb +0 -198
  581. data/lib/factpulse/models/afnor_search_siret_filters_facility_type.rb +0 -178
  582. data/lib/factpulse/models/afnor_search_siret_filters_locality.rb +0 -198
  583. data/lib/factpulse/models/afnor_search_siret_filters_name.rb +0 -198
  584. data/lib/factpulse/models/afnor_search_siret_filters_postal_code.rb +0 -209
  585. data/lib/factpulse/models/afnor_search_siret_filters_siret.rb +0 -209
  586. data/lib/factpulse/models/afnor_search_siret_sorting_inner.rb +0 -179
  587. data/lib/factpulse/models/afnor_siren_field.rb +0 -43
  588. data/lib/factpulse/models/afnor_siren_search_post200_response.rb +0 -168
  589. data/lib/factpulse/models/afnor_siret_field.rb +0 -52
  590. data/lib/factpulse/models/afnor_siret_search_post200_response.rb +0 -168
  591. data/lib/factpulse/models/afnor_sorting_order.rb +0 -40
  592. data/lib/factpulse/models/afnor_strict_operator.rb +0 -39
  593. data/lib/factpulse/models/afnor_update_patch_directory_line_body.rb +0 -148
  594. data/lib/factpulse/models/afnor_update_patch_routing_code_body.rb +0 -258
  595. data/lib/factpulse/models/afnor_update_put_routing_code_body.rb +0 -289
  596. data/lib/factpulse/models/afnor_webhook_callback_content.rb +0 -148
  597. data/lib/factpulse/models/aggregated_payment_input.rb +0 -213
  598. data/lib/factpulse/models/aggregated_transaction_input.rb +0 -349
  599. data/lib/factpulse/models/allowance_charge.rb +0 -274
  600. data/lib/factpulse/models/allowance_charge_reason_code.rb +0 -76
  601. data/lib/factpulse/models/allowance_reason_code.rb +0 -45
  602. data/lib/factpulse/models/allowance_total_amount.rb +0 -104
  603. data/lib/factpulse/models/amount.rb +0 -104
  604. data/lib/factpulse/models/amount1.rb +0 -104
  605. data/lib/factpulse/models/amount2.rb +0 -104
  606. data/lib/factpulse/models/amount_due.rb +0 -104
  607. data/lib/factpulse/models/api_profile.rb +0 -43
  608. data/lib/factpulse/models/async_task_status.rb +0 -227
  609. data/lib/factpulse/models/base_amount.rb +0 -104
  610. data/lib/factpulse/models/bounding_box_schema.rb +0 -332
  611. data/lib/factpulse/models/buyercountry.rb +0 -104
  612. data/lib/factpulse/models/celery_status.rb +0 -43
  613. data/lib/factpulse/models/charge_total_amount.rb +0 -104
  614. data/lib/factpulse/models/chorus_pro_destination.rb +0 -194
  615. data/lib/factpulse/models/chorus_pro_result.rb +0 -186
  616. data/lib/factpulse/models/client_activate_response.rb +0 -220
  617. data/lib/factpulse/models/client_create_request.rb +0 -236
  618. data/lib/factpulse/models/client_detail.rb +0 -368
  619. data/lib/factpulse/models/client_list_response.rb +0 -249
  620. data/lib/factpulse/models/client_summary.rb +0 -368
  621. data/lib/factpulse/models/client_update_request.rb +0 -225
  622. data/lib/factpulse/models/contact.rb +0 -179
  623. data/lib/factpulse/models/convert_resume_request.rb +0 -151
  624. data/lib/factpulse/models/convert_success_response.rb +0 -360
  625. data/lib/factpulse/models/convert_validation_failed_response.rb +0 -339
  626. data/lib/factpulse/models/country_code.rb +0 -208
  627. data/lib/factpulse/models/create_aggregated_report_request.rb +0 -320
  628. data/lib/factpulse/models/create_cdar_request.rb +0 -414
  629. data/lib/factpulse/models/create_e_reporting_request.rb +0 -347
  630. data/lib/factpulse/models/currency.rb +0 -104
  631. data/lib/factpulse/models/currency_code.rb +0 -91
  632. data/lib/factpulse/models/delivery_party.rb +0 -179
  633. data/lib/factpulse/models/doc_type.rb +0 -42
  634. data/lib/factpulse/models/document_type_info.rb +0 -220
  635. data/lib/factpulse/models/e_reporting_flow_type.rb +0 -42
  636. data/lib/factpulse/models/e_reporting_validation_error.rb +0 -203
  637. data/lib/factpulse/models/electronic_address.rb +0 -198
  638. data/lib/factpulse/models/encaisseamount.rb +0 -104
  639. data/lib/factpulse/models/encaisseamount1.rb +0 -103
  640. data/lib/factpulse/models/encaissee_request.rb +0 -347
  641. data/lib/factpulse/models/enriched_invoice_info.rb +0 -354
  642. data/lib/factpulse/models/extraction_info.rb +0 -217
  643. data/lib/factpulse/models/factur_x_invoice.rb +0 -580
  644. data/lib/factpulse/models/factur_xpdf_info.rb +0 -205
  645. data/lib/factpulse/models/facture_electronique_rest_api_schemas_ereporting_invoice_type_code.rb +0 -43
  646. data/lib/factpulse/models/facture_electronique_rest_api_schemas_processing_chorus_pro_credentials.rb +0 -191
  647. data/lib/factpulse/models/facture_electronique_rest_api_schemas_validation_validation_error_response.rb +0 -168
  648. data/lib/factpulse/models/field_status.rb +0 -43
  649. data/lib/factpulse/models/file_info.rb +0 -161
  650. data/lib/factpulse/models/files_info.rb +0 -159
  651. data/lib/factpulse/models/flow_direction.rb +0 -40
  652. data/lib/factpulse/models/flow_profile.rb +0 -41
  653. data/lib/factpulse/models/flow_summary.rb +0 -253
  654. data/lib/factpulse/models/flow_syntax.rb +0 -43
  655. data/lib/factpulse/models/flow_type.rb +0 -51
  656. data/lib/factpulse/models/generate_aggregated_report_response.rb +0 -330
  657. data/lib/factpulse/models/generate_cdar_response.rb +0 -273
  658. data/lib/factpulse/models/generate_e_reporting_response.rb +0 -274
  659. data/lib/factpulse/models/get_chorus_pro_id_request.rb +0 -188
  660. data/lib/factpulse/models/get_chorus_pro_id_response.rb +0 -230
  661. data/lib/factpulse/models/get_invoice_request.rb +0 -176
  662. data/lib/factpulse/models/get_invoice_response.rb +0 -263
  663. data/lib/factpulse/models/get_structure_request.rb +0 -188
  664. data/lib/factpulse/models/get_structure_response.rb +0 -263
  665. data/lib/factpulse/models/global_allowance_amount.rb +0 -104
  666. data/lib/factpulse/models/gross_unit_price.rb +0 -104
  667. data/lib/factpulse/models/incoming_invoice.rb +0 -489
  668. data/lib/factpulse/models/incoming_supplier.rb +0 -236
  669. data/lib/factpulse/models/invoice_format.rb +0 -41
  670. data/lib/factpulse/models/invoice_input.rb +0 -439
  671. data/lib/factpulse/models/invoice_line.rb +0 -593
  672. data/lib/factpulse/models/invoice_line_allowance_amount.rb +0 -104
  673. data/lib/factpulse/models/invoice_note.rb +0 -176
  674. data/lib/factpulse/models/invoice_payment_input.rb +0 -267
  675. data/lib/factpulse/models/invoice_references.rb +0 -393
  676. data/lib/factpulse/models/invoice_status.rb +0 -203
  677. data/lib/factpulse/models/invoice_totals.rb +0 -312
  678. data/lib/factpulse/models/invoice_totals_prepayment.rb +0 -104
  679. data/lib/factpulse/models/invoice_type_code.rb +0 -54
  680. data/lib/factpulse/models/invoice_type_code_output.rb +0 -54
  681. data/lib/factpulse/models/invoicing_framework.rb +0 -218
  682. data/lib/factpulse/models/invoicing_framework_code.rb +0 -42
  683. data/lib/factpulse/models/issuer_role_code.rb +0 -40
  684. data/lib/factpulse/models/key_rotation_request.rb +0 -211
  685. data/lib/factpulse/models/key_rotation_response.rb +0 -232
  686. data/lib/factpulse/models/line_net_amount.rb +0 -104
  687. data/lib/factpulse/models/line_sub_type.rb +0 -41
  688. data/lib/factpulse/models/line_total_amount.rb +0 -104
  689. data/lib/factpulse/models/location_inner.rb +0 -103
  690. data/lib/factpulse/models/mandatory_note_schema.rb +0 -265
  691. data/lib/factpulse/models/manual_rate.rb +0 -104
  692. data/lib/factpulse/models/manual_vat_rate.rb +0 -104
  693. data/lib/factpulse/models/missing_field.rb +0 -269
  694. data/lib/factpulse/models/operation_nature.rb +0 -52
  695. data/lib/factpulse/models/output_format.rb +0 -40
  696. data/lib/factpulse/models/page_dimensions_schema.rb +0 -193
  697. data/lib/factpulse/models/payee.rb +0 -281
  698. data/lib/factpulse/models/payment_amount_by_rate.rb +0 -191
  699. data/lib/factpulse/models/payment_card.rb +0 -159
  700. data/lib/factpulse/models/payment_means.rb +0 -44
  701. data/lib/factpulse/models/pdf_validation_result_api.rb +0 -523
  702. data/lib/factpulse/models/pdp_config_response.rb +0 -306
  703. data/lib/factpulse/models/pdp_config_update_request.rb +0 -315
  704. data/lib/factpulse/models/pdp_credentials.rb +0 -257
  705. data/lib/factpulse/models/percentage.rb +0 -104
  706. data/lib/factpulse/models/postal_address.rb +0 -209
  707. data/lib/factpulse/models/price_allowance_amount.rb +0 -104
  708. data/lib/factpulse/models/price_basis_quantity.rb +0 -104
  709. data/lib/factpulse/models/processing_options.rb +0 -207
  710. data/lib/factpulse/models/processing_rule.rb +0 -44
  711. data/lib/factpulse/models/product_characteristic.rb +0 -193
  712. data/lib/factpulse/models/product_classification.rb +0 -186
  713. data/lib/factpulse/models/quantity.rb +0 -104
  714. data/lib/factpulse/models/rate.rb +0 -104
  715. data/lib/factpulse/models/rate1.rb +0 -104
  716. data/lib/factpulse/models/reason_code_info.rb +0 -220
  717. data/lib/factpulse/models/reason_codes_response.rb +0 -207
  718. data/lib/factpulse/models/recipient.rb +0 -231
  719. data/lib/factpulse/models/recipient_input.rb +0 -191
  720. data/lib/factpulse/models/refusee_request.rb +0 -346
  721. data/lib/factpulse/models/report_issuer.rb +0 -236
  722. data/lib/factpulse/models/report_period.rb +0 -193
  723. data/lib/factpulse/models/report_sender.rb +0 -221
  724. data/lib/factpulse/models/rounding_amount.rb +0 -104
  725. data/lib/factpulse/models/schematron_validation_error.rb +0 -294
  726. data/lib/factpulse/models/search_flow_request.rb +0 -306
  727. data/lib/factpulse/models/search_flow_response.rb +0 -249
  728. data/lib/factpulse/models/search_services_response.rb +0 -217
  729. data/lib/factpulse/models/search_structure_request.rb +0 -191
  730. data/lib/factpulse/models/search_structure_response.rb +0 -216
  731. data/lib/factpulse/models/secret_status.rb +0 -213
  732. data/lib/factpulse/models/sellercountry.rb +0 -104
  733. data/lib/factpulse/models/signature_info_api.rb +0 -216
  734. data/lib/factpulse/models/signature_parameters.rb +0 -235
  735. data/lib/factpulse/models/simplified_cdar_response.rb +0 -274
  736. data/lib/factpulse/models/simplified_invoice_data.rb +0 -404
  737. data/lib/factpulse/models/status_code_info.rb +0 -220
  738. data/lib/factpulse/models/status_codes_response.rb +0 -207
  739. data/lib/factpulse/models/structure_parameters.rb +0 -175
  740. data/lib/factpulse/models/structure_service.rb +0 -247
  741. data/lib/factpulse/models/submission_mode.rb +0 -41
  742. data/lib/factpulse/models/submit_aggregated_report_request.rb +0 -216
  743. data/lib/factpulse/models/submit_cdar_request.rb +0 -466
  744. data/lib/factpulse/models/submit_cdar_response.rb +0 -213
  745. data/lib/factpulse/models/submit_cdarxml_request.rb +0 -228
  746. data/lib/factpulse/models/submit_complete_invoice_request.rb +0 -239
  747. data/lib/factpulse/models/submit_complete_invoice_response.rb +0 -355
  748. data/lib/factpulse/models/submit_e_reporting_request.rb +0 -216
  749. data/lib/factpulse/models/submit_e_reporting_response.rb +0 -306
  750. data/lib/factpulse/models/submit_flow_request.rb +0 -238
  751. data/lib/factpulse/models/submit_flow_response.rb +0 -294
  752. data/lib/factpulse/models/submit_gross_amount.rb +0 -104
  753. data/lib/factpulse/models/submit_invoice_request.rb +0 -388
  754. data/lib/factpulse/models/submit_invoice_response.rb +0 -213
  755. data/lib/factpulse/models/submit_net_amount.rb +0 -104
  756. data/lib/factpulse/models/submit_vat_amount.rb +0 -104
  757. data/lib/factpulse/models/supplementary_attachment.rb +0 -274
  758. data/lib/factpulse/models/supplier.rb +0 -337
  759. data/lib/factpulse/models/task_response.rb +0 -166
  760. data/lib/factpulse/models/tax_breakdown_input.rb +0 -217
  761. data/lib/factpulse/models/tax_due_date_type.rb +0 -44
  762. data/lib/factpulse/models/tax_representative.rb +0 -220
  763. data/lib/factpulse/models/taxable_amount.rb +0 -104
  764. data/lib/factpulse/models/taxableamount.rb +0 -104
  765. data/lib/factpulse/models/taxamount.rb +0 -104
  766. data/lib/factpulse/models/taxamount1.rb +0 -104
  767. data/lib/factpulse/models/taxamount2.rb +0 -104
  768. data/lib/factpulse/models/taxexclusiveamount.rb +0 -104
  769. data/lib/factpulse/models/taxexclusiveamount1.rb +0 -104
  770. data/lib/factpulse/models/total_gross_amount.rb +0 -104
  771. data/lib/factpulse/models/total_net_amount.rb +0 -104
  772. data/lib/factpulse/models/total_vat_amount.rb +0 -104
  773. data/lib/factpulse/models/transaction_category.rb +0 -42
  774. data/lib/factpulse/models/transmission_type_code.rb +0 -40
  775. data/lib/factpulse/models/unit_net_price.rb +0 -104
  776. data/lib/factpulse/models/unit_of_measure.rb +0 -44
  777. data/lib/factpulse/models/validate_cdar_request.rb +0 -219
  778. data/lib/factpulse/models/validate_cdar_response.rb +0 -190
  779. data/lib/factpulse/models/validate_e_reporting_request.rb +0 -166
  780. data/lib/factpulse/models/validate_e_reporting_response.rb +0 -271
  781. data/lib/factpulse/models/validation_error_response.rb +0 -215
  782. data/lib/factpulse/models/validation_info.rb +0 -255
  783. data/lib/factpulse/models/validation_success_response.rb +0 -166
  784. data/lib/factpulse/models/vat_accounting_code.rb +0 -42
  785. data/lib/factpulse/models/vat_amount.rb +0 -104
  786. data/lib/factpulse/models/vat_category.rb +0 -47
  787. data/lib/factpulse/models/vat_line.rb +0 -272
  788. data/lib/factpulse/models/vat_point_date_code.rb +0 -41
  789. data/lib/factpulse/models/vat_rate.rb +0 -104
  790. data/lib/factpulse/models/verification_success_response.rb +0 -343
  791. data/lib/factpulse/models/verified_field_schema.rb +0 -334
  792. data/lib/factpulse/models/webhook_secret_delete_response.rb +0 -193
  793. data/lib/factpulse/models/webhook_secret_generate_response.rb +0 -247
  794. data/lib/factpulse/models/webhook_secret_status_response.rb +0 -176
@@ -1,256 +0,0 @@
1
- =begin
2
- #FactPulse REST API
3
-
4
- # REST API for electronic invoicing in France: Factur-X, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Factur-X - Generation - **Formats**: XML only or PDF/A-3 with embedded XML - **Profiles**: MINIMUM, BASIC, EN16931, EXTENDED - **Standards**: EN 16931 (EU directive 2014/55), ISO 19005-3 (PDF/A-3), CII (UN/CEFACT) - **🆕 Simplified Format**: Generation from SIRET + auto-enrichment (Chorus Pro API + Business Search) ### ✅ Factur-X - Validation - **XML Validation**: Schematron (45 to 210+ rules depending on profile) - **PDF Validation**: PDF/A-3, Factur-X XMP metadata - **VeraPDF**: Strict PDF/A validation (146+ ISO 19005-3 rules) ### ✍️ Electronic Signature - **Standards**: PAdES-B-B, PAdES-B-T (RFC 3161 timestamping), PAdES-B-LT (long-term archival) - **eIDAS Levels**: SES (self-signed), AdES (commercial CA), QES (QTSP) - **Validation**: Cryptographic integrity and certificate verification ### 📋 Flux 6 - Invoice Lifecycle (CDAR) - **CDAR Messages**: Acknowledgements, invoice statuses - **PPF Statuses**: REFUSED (210), PAID (212) ### 📊 Flux 10 - E-Reporting - **Tax Declarations**: International B2B, B2C - **Flow Types**: 10.1 (B2B transactions), 10.2 (B2B payments), 10.3 (B2C transactions), 10.4 (B2C payments) ### 📡 AFNOR PDP/PA (XP Z12-013) - **Flow Service**: Submit and search flows to PDPs - **Directory Service**: Company search (SIREN/SIRET) - **Multi-client**: Support for multiple PDP configs per user ### 🏛️ Chorus Pro - **Public Sector Invoicing**: Complete API for Chorus Pro ### ⏳ Async Tasks - **Celery**: Asynchronous generation, validation and signing - **Polling**: Status tracking via `/tasks/{task_id}/status` - **Webhooks**: Automatic notifications when tasks complete ## 🔒 Authentication All requests require a **JWT token** in the Authorization header: ``` Authorization: Bearer YOUR_JWT_TOKEN ``` ### How to obtain a JWT token? #### 🔑 Method 1: `/api/token/` API (Recommended) **URL:** `https://factpulse.fr/api/token/` This method is **recommended** for integration in your applications and CI/CD workflows. **Prerequisites:** Having set a password on your account **For users registered via email/password:** - You already have a password, use it directly **For users registered via OAuth (Google/GitHub):** - You must first set a password at: https://factpulse.fr/accounts/password/set/ - Once the password is created, you can use the API **Request example:** ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\" }' ``` **Optional `client_uid` parameter:** To select credentials for a specific client (PA/PDP, Chorus Pro, signing certificates), add `client_uid`: ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\", \"client_uid\": \"550e8400-e29b-41d4-a716-446655440000\" }' ``` The `client_uid` will be included in the JWT and allow the API to automatically use: - AFNOR/PDP credentials configured for this client - Chorus Pro credentials configured for this client - Electronic signature certificates configured for this client **Response:** ```json { \"access\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\", // Access token (validity: 30 min) \"refresh\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\" // Refresh token (validity: 7 days) } ``` **Advantages:** - ✅ Full automation (CI/CD, scripts) - ✅ Programmatic token management - ✅ Refresh token support for automatic access renewal - ✅ Easy integration in any language/tool #### 🖥️ Method 2: Dashboard Generation (Alternative) **URL:** https://factpulse.fr/api/dashboard/ This method is suitable for quick tests or occasional use via the graphical interface. **How it works:** - Log in to the dashboard - Use the \"Generate Test Token\" or \"Generate Production Token\" buttons - Works for **all** users (OAuth and email/password), without requiring a password **Token types:** - **Test Token**: 24h validity, 1000 calls/day quota (free) - **Production Token**: 7 days validity, quota based on your plan **Advantages:** - ✅ Quick for API testing - ✅ No password required - ✅ Simple visual interface **Disadvantages:** - ❌ Requires manual action - ❌ No refresh token - ❌ Less suited for automation ### 📚 Full Documentation For more information on authentication and API usage: https://factpulse.fr/documentation-api/
5
-
6
- The version of the OpenAPI document: 1.0.0
7
- Contact: contact@factpulse.fr
8
- Generated by: https://openapi-generator.tech
9
- Generator version: 7.20.0-SNAPSHOT
10
-
11
- =end
12
-
13
- require 'cgi'
14
-
15
- module FactPulse
16
- class FacturXValidationApi
17
- attr_accessor :api_client
18
-
19
- def initialize(api_client = ApiClient.default)
20
- @api_client = api_client
21
- end
22
- # Validate a complete Factur-X PDF
23
- # Validates a complete Factur-X PDF according to European and French standards. ## Applied validation standards - **EN 16931**: European semantic standard (directive 2014/55/EU) - **ISO 19005-3** (PDF/A-3): Long-term electronic archiving - **Factur-X / ZUGFeRD**: Franco-German specification - **Schematron**: XML business rules validation - **eIDAS**: European regulation on electronic identification (signatures) ## Checks performed ### 1. Factur-X XML extraction and validation **Checks performed:** - Presence of embedded XML file (`factur-x.xml` or `zugferd-invoice.xml`) - Automatic profile detection (MINIMUM, BASIC, EN16931, EXTENDED) - XML parsing with UTF-8 validation - GuidelineSpecifiedDocumentContextParameter/ID extraction **Schematron validation:** - Business rules for detected profile (MINIMUM: 45 rules, EN16931: 178 rules) - Cardinality of required elements - Calculation consistency (net, VAT, gross amounts, discounts) - Identifier formats (SIRET, intra-EU VAT, IBAN) - Standardized codes (ISO country codes, UN/ECE units, VAT codes) **What is verified:** - ✅ XML structure conforming to Cross Industry Invoice XSD - ✅ Correct UN/CEFACT namespace - ✅ European business rules (BR-xx) - ✅ French-specific rules (FR-xx) ### 2. PDF/A-3 compliance **Basic validation (metadata):** - Presence of `/Type` field set to `Catalog` - Metadata `pdfaid:part` = 3 (PDF/A-3) - Metadata `pdfaid:conformance` = B or U - PDF version >= 1.4 **Strict VeraPDF validation (if use_verapdf=True):** - 146+ ISO 19005-3 rules (PDF/A-3B) - Absence of forbidden content (JavaScript, multimedia, dynamic forms) - Correctly embedded fonts and subsets - Compliant color spaces (sRGB, DeviceGray) - Valid file structure (cross-reference table) - XMP metadata conforming to ISO 16684-1 **What is verified:** - ✅ Long-term archivable file (20+ years) - ✅ Guaranteed readability (embedded fonts) - ✅ Legal compliance (France, Germany, EU) ### 3. XMP metadata (eXtensible Metadata Platform) **Checks performed:** - Presence of `<?xpacket>` block with XMP metadata - `fx:` namespace for Factur-X: `urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#` - Required Factur-X fields: - `fx:ConformanceLevel`: Profile (MINIMUM, BASIC, EN16931, EXTENDED) - `fx:DocumentFileName`: Embedded XML name - `fx:DocumentType`: \"INVOICE\" - `fx:Version`: Factur-X version (1.0.07) **What is verified:** - ✅ Metadata conforming to ISO 16684-1 - ✅ Correct declared Factur-X profile - ✅ Supported Factur-X version ### 4. Electronic signatures **Detection and analysis:** - Presence of `/Sig` dictionaries in PDF - Signature type: PAdES (PDF Advanced Electronic Signature) - Information extraction: - Signer name (`/Name`) - Signing date (`/M`) - Signature reason (`/Reason`) - Signature location (`/Location`) - Signature type (approval, certification) **What is verified:** - ✅ Presence of signatures or seals - ✅ Number of signatures (single or multi-signature) - ℹ️ No cryptographic verification (requires certificates) ## Parameters - **pdf_file** (required): The Factur-X PDF file to validate - **profile** (optional): Expected profile. If absent, auto-detected from XML - **use_verapdf** (optional, default=false): Enable strict PDF/A validation with VeraPDF - `false`: Fast metadata validation (2-3 seconds) - `true`: Complete ISO 19005-3 validation (15-30 seconds, **recommended for production**) ## Detailed response ```json { \"isCompliant\": true, \"xml\": { \"present\": true, \"compliant\": true, \"profile\": \"EN16931\", \"errors\": [] }, \"pdfa\": { \"compliant\": true, \"version\": \"PDF/A-3B\", \"method\": \"verapdf\", \"errors\": [] }, \"xmp\": { \"present\": true, \"compliant\": true, \"metadata\": {...} }, \"signatures\": { \"present\": true, \"count\": 1, \"details\": [...] } } ``` ## Use cases - **Before sending**: Validate generated invoice before transmission to client - **On reception**: Verify compliance of invoice received from supplier - **Audit**: Check quality of invoice batches - **Legal compliance**: Ensure B2B/B2G obligations are met in France - **Debugging**: Identify issues in generation process - **Archiving**: Guarantee long-term validity (PDF/A-3) ## Processing time - Basic validation: 2-3 seconds - VeraPDF validation: 15-30 seconds (depends on PDF size)
24
- # @param pdf_file [File] Factur-X PDF file to validate (.pdf format).
25
- # @param [Hash] opts the optional parameters
26
- # @option opts [APIProfile] :profile
27
- # @option opts [Boolean] :use_verapdf Enable strict PDF/A validation with VeraPDF (recommended for production). If False, uses basic metadata validation. (default to false)
28
- # @option opts [Boolean] :skip_br_fr
29
- # @return [PDFValidationResultAPI]
30
- def validate_facturx_pdf_api_v1_processing_validate_facturx_pdf_post(pdf_file, opts = {})
31
- data, _status_code, _headers = validate_facturx_pdf_api_v1_processing_validate_facturx_pdf_post_with_http_info(pdf_file, opts)
32
- data
33
- end
34
-
35
- # Validate a complete Factur-X PDF
36
- # Validates a complete Factur-X PDF according to European and French standards. ## Applied validation standards - **EN 16931**: European semantic standard (directive 2014/55/EU) - **ISO 19005-3** (PDF/A-3): Long-term electronic archiving - **Factur-X / ZUGFeRD**: Franco-German specification - **Schematron**: XML business rules validation - **eIDAS**: European regulation on electronic identification (signatures) ## Checks performed ### 1. Factur-X XML extraction and validation **Checks performed:** - Presence of embedded XML file (&#x60;factur-x.xml&#x60; or &#x60;zugferd-invoice.xml&#x60;) - Automatic profile detection (MINIMUM, BASIC, EN16931, EXTENDED) - XML parsing with UTF-8 validation - GuidelineSpecifiedDocumentContextParameter/ID extraction **Schematron validation:** - Business rules for detected profile (MINIMUM: 45 rules, EN16931: 178 rules) - Cardinality of required elements - Calculation consistency (net, VAT, gross amounts, discounts) - Identifier formats (SIRET, intra-EU VAT, IBAN) - Standardized codes (ISO country codes, UN/ECE units, VAT codes) **What is verified:** - ✅ XML structure conforming to Cross Industry Invoice XSD - ✅ Correct UN/CEFACT namespace - ✅ European business rules (BR-xx) - ✅ French-specific rules (FR-xx) ### 2. PDF/A-3 compliance **Basic validation (metadata):** - Presence of &#x60;/Type&#x60; field set to &#x60;Catalog&#x60; - Metadata &#x60;pdfaid:part&#x60; &#x3D; 3 (PDF/A-3) - Metadata &#x60;pdfaid:conformance&#x60; &#x3D; B or U - PDF version &gt;&#x3D; 1.4 **Strict VeraPDF validation (if use_verapdf&#x3D;True):** - 146+ ISO 19005-3 rules (PDF/A-3B) - Absence of forbidden content (JavaScript, multimedia, dynamic forms) - Correctly embedded fonts and subsets - Compliant color spaces (sRGB, DeviceGray) - Valid file structure (cross-reference table) - XMP metadata conforming to ISO 16684-1 **What is verified:** - ✅ Long-term archivable file (20+ years) - ✅ Guaranteed readability (embedded fonts) - ✅ Legal compliance (France, Germany, EU) ### 3. XMP metadata (eXtensible Metadata Platform) **Checks performed:** - Presence of &#x60;&lt;?xpacket&gt;&#x60; block with XMP metadata - &#x60;fx:&#x60; namespace for Factur-X: &#x60;urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#&#x60; - Required Factur-X fields: - &#x60;fx:ConformanceLevel&#x60;: Profile (MINIMUM, BASIC, EN16931, EXTENDED) - &#x60;fx:DocumentFileName&#x60;: Embedded XML name - &#x60;fx:DocumentType&#x60;: \&quot;INVOICE\&quot; - &#x60;fx:Version&#x60;: Factur-X version (1.0.07) **What is verified:** - ✅ Metadata conforming to ISO 16684-1 - ✅ Correct declared Factur-X profile - ✅ Supported Factur-X version ### 4. Electronic signatures **Detection and analysis:** - Presence of &#x60;/Sig&#x60; dictionaries in PDF - Signature type: PAdES (PDF Advanced Electronic Signature) - Information extraction: - Signer name (&#x60;/Name&#x60;) - Signing date (&#x60;/M&#x60;) - Signature reason (&#x60;/Reason&#x60;) - Signature location (&#x60;/Location&#x60;) - Signature type (approval, certification) **What is verified:** - ✅ Presence of signatures or seals - ✅ Number of signatures (single or multi-signature) - ℹ️ No cryptographic verification (requires certificates) ## Parameters - **pdf_file** (required): The Factur-X PDF file to validate - **profile** (optional): Expected profile. If absent, auto-detected from XML - **use_verapdf** (optional, default&#x3D;false): Enable strict PDF/A validation with VeraPDF - &#x60;false&#x60;: Fast metadata validation (2-3 seconds) - &#x60;true&#x60;: Complete ISO 19005-3 validation (15-30 seconds, **recommended for production**) ## Detailed response &#x60;&#x60;&#x60;json { \&quot;isCompliant\&quot;: true, \&quot;xml\&quot;: { \&quot;present\&quot;: true, \&quot;compliant\&quot;: true, \&quot;profile\&quot;: \&quot;EN16931\&quot;, \&quot;errors\&quot;: [] }, \&quot;pdfa\&quot;: { \&quot;compliant\&quot;: true, \&quot;version\&quot;: \&quot;PDF/A-3B\&quot;, \&quot;method\&quot;: \&quot;verapdf\&quot;, \&quot;errors\&quot;: [] }, \&quot;xmp\&quot;: { \&quot;present\&quot;: true, \&quot;compliant\&quot;: true, \&quot;metadata\&quot;: {...} }, \&quot;signatures\&quot;: { \&quot;present\&quot;: true, \&quot;count\&quot;: 1, \&quot;details\&quot;: [...] } } &#x60;&#x60;&#x60; ## Use cases - **Before sending**: Validate generated invoice before transmission to client - **On reception**: Verify compliance of invoice received from supplier - **Audit**: Check quality of invoice batches - **Legal compliance**: Ensure B2B/B2G obligations are met in France - **Debugging**: Identify issues in generation process - **Archiving**: Guarantee long-term validity (PDF/A-3) ## Processing time - Basic validation: 2-3 seconds - VeraPDF validation: 15-30 seconds (depends on PDF size)
37
- # @param pdf_file [File] Factur-X PDF file to validate (.pdf format).
38
- # @param [Hash] opts the optional parameters
39
- # @option opts [APIProfile] :profile
40
- # @option opts [Boolean] :use_verapdf Enable strict PDF/A validation with VeraPDF (recommended for production). If False, uses basic metadata validation. (default to false)
41
- # @option opts [Boolean] :skip_br_fr
42
- # @return [Array<(PDFValidationResultAPI, Integer, Hash)>] PDFValidationResultAPI data, response status code and response headers
43
- def validate_facturx_pdf_api_v1_processing_validate_facturx_pdf_post_with_http_info(pdf_file, opts = {})
44
- if @api_client.config.debugging
45
- @api_client.config.logger.debug 'Calling API: FacturXValidationApi.validate_facturx_pdf_api_v1_processing_validate_facturx_pdf_post ...'
46
- end
47
- # verify the required parameter 'pdf_file' is set
48
- if @api_client.config.client_side_validation && pdf_file.nil?
49
- fail ArgumentError, "Missing the required parameter 'pdf_file' when calling FacturXValidationApi.validate_facturx_pdf_api_v1_processing_validate_facturx_pdf_post"
50
- end
51
- # resource path
52
- local_var_path = '/api/v1/processing/validate-facturx-pdf'
53
-
54
- # query parameters
55
- query_params = opts[:query_params] || {}
56
-
57
- # header parameters
58
- header_params = opts[:header_params] || {}
59
- # HTTP header 'Accept' (if needed)
60
- header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
61
- # HTTP header 'Content-Type'
62
- content_type = @api_client.select_header_content_type(['multipart/form-data'])
63
- if !content_type.nil?
64
- header_params['Content-Type'] = content_type
65
- end
66
-
67
- # form parameters
68
- form_params = opts[:form_params] || {}
69
- form_params['pdf_file'] = pdf_file
70
- form_params['profile'] = opts[:'profile'] if !opts[:'profile'].nil?
71
- form_params['use_verapdf'] = opts[:'use_verapdf'] if !opts[:'use_verapdf'].nil?
72
- form_params['skip_br_fr'] = opts[:'skip_br_fr'] if !opts[:'skip_br_fr'].nil?
73
-
74
- # http body (model)
75
- post_body = opts[:debug_body]
76
-
77
- # return_type
78
- return_type = opts[:debug_return_type] || 'PDFValidationResultAPI'
79
-
80
- # auth_names
81
- auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
82
-
83
- new_options = opts.merge(
84
- :operation => :"FacturXValidationApi.validate_facturx_pdf_api_v1_processing_validate_facturx_pdf_post",
85
- :header_params => header_params,
86
- :query_params => query_params,
87
- :form_params => form_params,
88
- :body => post_body,
89
- :auth_names => auth_names,
90
- :return_type => return_type
91
- )
92
-
93
- data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
94
- if @api_client.config.debugging
95
- @api_client.config.logger.debug "API called: FacturXValidationApi#validate_facturx_pdf_api_v1_processing_validate_facturx_pdf_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
96
- end
97
- return data, status_code, headers
98
- end
99
-
100
- # Validate a Factur-X PDF (asynchronous with polling)
101
- # 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
102
- # @param pdf_file [File] Factur-X PDF file to validate (.pdf format).
103
- # @param [Hash] opts the optional parameters
104
- # @option opts [APIProfile] :profile
105
- # @option opts [Boolean] :use_verapdf Enable strict PDF/A validation with VeraPDF (recommended for production). May take several seconds. (default to false)
106
- # @option opts [String] :callback_url
107
- # @option opts [String] :webhook_mode Webhook content delivery: &#39;inline&#39; (base64 in payload) or &#39;download_url&#39; (temporary URL, 1h TTL) (default to 'inline')
108
- # @return [TaskResponse]
109
- def validate_facturx_pdf_async_api_v1_processing_validate_facturx_async_post(pdf_file, opts = {})
110
- data, _status_code, _headers = validate_facturx_pdf_async_api_v1_processing_validate_facturx_async_post_with_http_info(pdf_file, opts)
111
- data
112
- end
113
-
114
- # Validate a Factur-X PDF (asynchronous with polling)
115
- # 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 &#x60;task_id&#x60; (HTTP 202) 3. **Tracking**: Use the &#x60;/tasks/{task_id}/status&#x60; 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&#39;t wait during validation ## Webhook notification (recommended) Instead of polling, you can receive a webhook notification when validation completes: &#x60;&#x60;&#x60; callback_url&#x3D;https://your-server.com/webhook webhook_mode&#x3D;download_url # Optional: get download URL instead of base64 &#x60;&#x60;&#x60; The webhook will POST a JSON payload with: - &#x60;event_type&#x60;: &#x60;validation.completed&#x60; or &#x60;validation.failed&#x60; - &#x60;data.is_compliant&#x60;: Whether the PDF is Factur-X compliant - &#x60;data.detected_profile&#x60;: The detected Factur-X profile - &#x60;X-Webhook-Signature&#x60; header for HMAC verification ## When to use this mode? - **VeraPDF validation enabled** (&#x60;use_verapdf&#x3D;True&#x60;): Strict validation can take 2-10 seconds - **Large PDF files**: PDFs &gt; 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&#39;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 &#x60;GET /tasks/{task_id}/status&#x60; endpoint to retrieve the result. **Polling example**: &#x60;&#x60;&#x60;python import requests import time # 1. Submit task response &#x3D; requests.post(\&quot;/validate-facturx-async\&quot;, files&#x3D;{\&quot;pdf_file\&quot;: pdf_file}) task_id &#x3D; response.json()[\&quot;taskId\&quot;] # 2. Poll every 2 seconds while True: status_response &#x3D; requests.get(f\&quot;/tasks/{task_id}/status\&quot;) status &#x3D; status_response.json() if status[\&quot;status\&quot;] &#x3D;&#x3D; \&quot;SUCCESS\&quot;: result &#x3D; status[\&quot;result\&quot;][\&quot;validation_result\&quot;] print(f\&quot;Compliant: {result[&#39;is_compliant&#39;]}\&quot;) break elif status[\&quot;status\&quot;] &#x3D;&#x3D; \&quot;FAILURE\&quot;: print(f\&quot;Error: {status[&#39;result&#39;][&#39;errorMessage&#39;]}\&quot;) break time.sleep(2) # Wait 2 seconds before next check &#x60;&#x60;&#x60; ## 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
116
- # @param pdf_file [File] Factur-X PDF file to validate (.pdf format).
117
- # @param [Hash] opts the optional parameters
118
- # @option opts [APIProfile] :profile
119
- # @option opts [Boolean] :use_verapdf Enable strict PDF/A validation with VeraPDF (recommended for production). May take several seconds. (default to false)
120
- # @option opts [String] :callback_url
121
- # @option opts [String] :webhook_mode Webhook content delivery: &#39;inline&#39; (base64 in payload) or &#39;download_url&#39; (temporary URL, 1h TTL) (default to 'inline')
122
- # @return [Array<(TaskResponse, Integer, Hash)>] TaskResponse data, response status code and response headers
123
- def validate_facturx_pdf_async_api_v1_processing_validate_facturx_async_post_with_http_info(pdf_file, opts = {})
124
- if @api_client.config.debugging
125
- @api_client.config.logger.debug 'Calling API: FacturXValidationApi.validate_facturx_pdf_async_api_v1_processing_validate_facturx_async_post ...'
126
- end
127
- # verify the required parameter 'pdf_file' is set
128
- if @api_client.config.client_side_validation && pdf_file.nil?
129
- fail ArgumentError, "Missing the required parameter 'pdf_file' when calling FacturXValidationApi.validate_facturx_pdf_async_api_v1_processing_validate_facturx_async_post"
130
- end
131
- # resource path
132
- local_var_path = '/api/v1/processing/validate-facturx-async'
133
-
134
- # query parameters
135
- query_params = opts[:query_params] || {}
136
-
137
- # header parameters
138
- header_params = opts[:header_params] || {}
139
- # HTTP header 'Accept' (if needed)
140
- header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
141
- # HTTP header 'Content-Type'
142
- content_type = @api_client.select_header_content_type(['multipart/form-data'])
143
- if !content_type.nil?
144
- header_params['Content-Type'] = content_type
145
- end
146
-
147
- # form parameters
148
- form_params = opts[:form_params] || {}
149
- form_params['pdf_file'] = pdf_file
150
- form_params['profile'] = opts[:'profile'] if !opts[:'profile'].nil?
151
- form_params['use_verapdf'] = opts[:'use_verapdf'] if !opts[:'use_verapdf'].nil?
152
- form_params['callback_url'] = opts[:'callback_url'] if !opts[:'callback_url'].nil?
153
- form_params['webhook_mode'] = opts[:'webhook_mode'] if !opts[:'webhook_mode'].nil?
154
-
155
- # http body (model)
156
- post_body = opts[:debug_body]
157
-
158
- # return_type
159
- return_type = opts[:debug_return_type] || 'TaskResponse'
160
-
161
- # auth_names
162
- auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
163
-
164
- new_options = opts.merge(
165
- :operation => :"FacturXValidationApi.validate_facturx_pdf_async_api_v1_processing_validate_facturx_async_post",
166
- :header_params => header_params,
167
- :query_params => query_params,
168
- :form_params => form_params,
169
- :body => post_body,
170
- :auth_names => auth_names,
171
- :return_type => return_type
172
- )
173
-
174
- data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
175
- if @api_client.config.debugging
176
- @api_client.config.logger.debug "API called: FacturXValidationApi#validate_facturx_pdf_async_api_v1_processing_validate_facturx_async_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
177
- end
178
- return data, status_code, headers
179
- end
180
-
181
- # Validate an existing Factur-X XML
182
- # Validates a Factur-X XML file against Schematron business rules according to EN 16931 standard. ## Applied Standard **Schematron ISO/IEC 19757-3**: Business rules validation language for XML - Semantic validation (beyond XSD syntax) - European EN 16931 business rules - French-specific Factur-X rules - Arithmetic calculations and data consistency ## Profiles and validated rules ### MINIMUM (45 rules) - Unique invoice identifier - Dates (issue, due date) - Party identifiers (SIRET/SIREN) - Total gross amount ### BASIC (102 rules) - All MINIMUM rules - Detailed invoice lines - Basic VAT calculations - Payment methods - References (order, contract) ### EN16931 (178 rules) - All BASIC rules - **European rules (BR-xx)**: 81 business rules - **French rules (FR-xx)**: 12 France-specific rules - **Advanced calculations (CR-xx)**: 32 calculation rules - **Standardized codes (CL-xx)**: 52 code lists ### EXTENDED (210+ rules) - All EN16931 rules - Logistics information - Advanced accounting data - Multiple external references ## Checks performed ### 1. Syntax validation - Correct XML parsing (UTF-8, well-formed) - UN/CEFACT namespaces present - Hierarchical structure respected ### 2. Business rules (BR-xx) Examples: - `BR-1`: Invoice total must equal sum of line totals + document-level amounts - `BR-CO-10`: Sum of VAT base amounts must equal invoice net total - `BR-16`: Invoice currency code must be in ISO 4217 list ### 3. French rules (FR-xx) Examples: - `FR-1`: Supplier SIRET must have 14 digits - `FR-2`: Customer SIRET must have 14 digits (if present) - `FR-5`: Intra-EU VAT number must be in format FRxx999999999 ### 4. Calculation rules (CR-xx) - Net + VAT = Gross amounts - Sum of lines = Document total - Discounts and surcharges correctly applied - Compliant rounding (2 decimals for amounts) ### 5. Standardized codes (CL-xx) - ISO 3166-1 alpha-2 country codes - ISO 4217 currency codes - UN/ECE Rec 20 measurement units - VAT codes (types, categories, exemptions) - SchemeID for identifiers (0002=SIREN, 0009=SIRET, etc.) ## Validation process 1. **XSLT loading**: Schematron file converted to XSLT (Saxon-HE) 2. **Transformation**: Rules applied to XML 3. **Results analysis**: Extraction of errors (`failed-assert`) and warnings (`successful-report`) 4. **Report**: Structured list of non-conformities ## Responses **200 OK**: Compliant XML ```json { \"message\": \"XML is compliant with EN16931 profile\" } ``` **400 Bad Request**: Non-compliant XML ```json { \"detail\": [ \"[BR-1] Invoice total (120.00) does not match calculated sum (100.00 + 20.00)\", \"[FR-1] Supplier SIRET must contain exactly 14 digits\" ] } ``` ## Use cases - **Pre-validation**: Verify XML before PDF/A integration - **Debugging**: Precisely identify generation errors - **Testing**: Validate test or example XMLs - **Compliance**: Ensure European and French rules are met - **Development**: Quick testing without PDF generation ## Processing time - MINIMUM profile: ~0.5 second - EN16931 profile: ~1-2 seconds - EXTENDED profile: ~2-3 seconds
183
- # @param xml_file [File] Factur-X XML file to validate (.xml format).
184
- # @param [Hash] opts the optional parameters
185
- # @option opts [APIProfile] :profile Validation profile (MINIMUM, BASIC, EN16931, EXTENDED).
186
- # @option opts [Boolean] :skip_br_fr
187
- # @return [ValidationSuccessResponse]
188
- def validate_xml_api_v1_processing_validate_xml_post(xml_file, opts = {})
189
- data, _status_code, _headers = validate_xml_api_v1_processing_validate_xml_post_with_http_info(xml_file, opts)
190
- data
191
- end
192
-
193
- # Validate an existing Factur-X XML
194
- # Validates a Factur-X XML file against Schematron business rules according to EN 16931 standard. ## Applied Standard **Schematron ISO/IEC 19757-3**: Business rules validation language for XML - Semantic validation (beyond XSD syntax) - European EN 16931 business rules - French-specific Factur-X rules - Arithmetic calculations and data consistency ## Profiles and validated rules ### MINIMUM (45 rules) - Unique invoice identifier - Dates (issue, due date) - Party identifiers (SIRET/SIREN) - Total gross amount ### BASIC (102 rules) - All MINIMUM rules - Detailed invoice lines - Basic VAT calculations - Payment methods - References (order, contract) ### EN16931 (178 rules) - All BASIC rules - **European rules (BR-xx)**: 81 business rules - **French rules (FR-xx)**: 12 France-specific rules - **Advanced calculations (CR-xx)**: 32 calculation rules - **Standardized codes (CL-xx)**: 52 code lists ### EXTENDED (210+ rules) - All EN16931 rules - Logistics information - Advanced accounting data - Multiple external references ## Checks performed ### 1. Syntax validation - Correct XML parsing (UTF-8, well-formed) - UN/CEFACT namespaces present - Hierarchical structure respected ### 2. Business rules (BR-xx) Examples: - &#x60;BR-1&#x60;: Invoice total must equal sum of line totals + document-level amounts - &#x60;BR-CO-10&#x60;: Sum of VAT base amounts must equal invoice net total - &#x60;BR-16&#x60;: Invoice currency code must be in ISO 4217 list ### 3. French rules (FR-xx) Examples: - &#x60;FR-1&#x60;: Supplier SIRET must have 14 digits - &#x60;FR-2&#x60;: Customer SIRET must have 14 digits (if present) - &#x60;FR-5&#x60;: Intra-EU VAT number must be in format FRxx999999999 ### 4. Calculation rules (CR-xx) - Net + VAT &#x3D; Gross amounts - Sum of lines &#x3D; Document total - Discounts and surcharges correctly applied - Compliant rounding (2 decimals for amounts) ### 5. Standardized codes (CL-xx) - ISO 3166-1 alpha-2 country codes - ISO 4217 currency codes - UN/ECE Rec 20 measurement units - VAT codes (types, categories, exemptions) - SchemeID for identifiers (0002&#x3D;SIREN, 0009&#x3D;SIRET, etc.) ## Validation process 1. **XSLT loading**: Schematron file converted to XSLT (Saxon-HE) 2. **Transformation**: Rules applied to XML 3. **Results analysis**: Extraction of errors (&#x60;failed-assert&#x60;) and warnings (&#x60;successful-report&#x60;) 4. **Report**: Structured list of non-conformities ## Responses **200 OK**: Compliant XML &#x60;&#x60;&#x60;json { \&quot;message\&quot;: \&quot;XML is compliant with EN16931 profile\&quot; } &#x60;&#x60;&#x60; **400 Bad Request**: Non-compliant XML &#x60;&#x60;&#x60;json { \&quot;detail\&quot;: [ \&quot;[BR-1] Invoice total (120.00) does not match calculated sum (100.00 + 20.00)\&quot;, \&quot;[FR-1] Supplier SIRET must contain exactly 14 digits\&quot; ] } &#x60;&#x60;&#x60; ## Use cases - **Pre-validation**: Verify XML before PDF/A integration - **Debugging**: Precisely identify generation errors - **Testing**: Validate test or example XMLs - **Compliance**: Ensure European and French rules are met - **Development**: Quick testing without PDF generation ## Processing time - MINIMUM profile: ~0.5 second - EN16931 profile: ~1-2 seconds - EXTENDED profile: ~2-3 seconds
195
- # @param xml_file [File] Factur-X XML file to validate (.xml format).
196
- # @param [Hash] opts the optional parameters
197
- # @option opts [APIProfile] :profile Validation profile (MINIMUM, BASIC, EN16931, EXTENDED).
198
- # @option opts [Boolean] :skip_br_fr
199
- # @return [Array<(ValidationSuccessResponse, Integer, Hash)>] ValidationSuccessResponse data, response status code and response headers
200
- def validate_xml_api_v1_processing_validate_xml_post_with_http_info(xml_file, opts = {})
201
- if @api_client.config.debugging
202
- @api_client.config.logger.debug 'Calling API: FacturXValidationApi.validate_xml_api_v1_processing_validate_xml_post ...'
203
- end
204
- # verify the required parameter 'xml_file' is set
205
- if @api_client.config.client_side_validation && xml_file.nil?
206
- fail ArgumentError, "Missing the required parameter 'xml_file' when calling FacturXValidationApi.validate_xml_api_v1_processing_validate_xml_post"
207
- end
208
- # resource path
209
- local_var_path = '/api/v1/processing/validate-xml'
210
-
211
- # query parameters
212
- query_params = opts[:query_params] || {}
213
-
214
- # header parameters
215
- header_params = opts[:header_params] || {}
216
- # HTTP header 'Accept' (if needed)
217
- header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
218
- # HTTP header 'Content-Type'
219
- content_type = @api_client.select_header_content_type(['multipart/form-data'])
220
- if !content_type.nil?
221
- header_params['Content-Type'] = content_type
222
- end
223
-
224
- # form parameters
225
- form_params = opts[:form_params] || {}
226
- form_params['xml_file'] = xml_file
227
- form_params['profile'] = opts[:'profile'] if !opts[:'profile'].nil?
228
- form_params['skip_br_fr'] = opts[:'skip_br_fr'] if !opts[:'skip_br_fr'].nil?
229
-
230
- # http body (model)
231
- post_body = opts[:debug_body]
232
-
233
- # return_type
234
- return_type = opts[:debug_return_type] || 'ValidationSuccessResponse'
235
-
236
- # auth_names
237
- auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
238
-
239
- new_options = opts.merge(
240
- :operation => :"FacturXValidationApi.validate_xml_api_v1_processing_validate_xml_post",
241
- :header_params => header_params,
242
- :query_params => query_params,
243
- :form_params => form_params,
244
- :body => post_body,
245
- :auth_names => auth_names,
246
- :return_type => return_type
247
- )
248
-
249
- data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
250
- if @api_client.config.debugging
251
- @api_client.config.logger.debug "API called: FacturXValidationApi#validate_xml_api_v1_processing_validate_xml_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
252
- end
253
- return data, status_code, headers
254
- end
255
- end
256
- end
@@ -1,232 +0,0 @@
1
- =begin
2
- #FactPulse REST API
3
-
4
- # REST API for electronic invoicing in France: Factur-X, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Factur-X - Generation - **Formats**: XML only or PDF/A-3 with embedded XML - **Profiles**: MINIMUM, BASIC, EN16931, EXTENDED - **Standards**: EN 16931 (EU directive 2014/55), ISO 19005-3 (PDF/A-3), CII (UN/CEFACT) - **🆕 Simplified Format**: Generation from SIRET + auto-enrichment (Chorus Pro API + Business Search) ### ✅ Factur-X - Validation - **XML Validation**: Schematron (45 to 210+ rules depending on profile) - **PDF Validation**: PDF/A-3, Factur-X XMP metadata - **VeraPDF**: Strict PDF/A validation (146+ ISO 19005-3 rules) ### ✍️ Electronic Signature - **Standards**: PAdES-B-B, PAdES-B-T (RFC 3161 timestamping), PAdES-B-LT (long-term archival) - **eIDAS Levels**: SES (self-signed), AdES (commercial CA), QES (QTSP) - **Validation**: Cryptographic integrity and certificate verification ### 📋 Flux 6 - Invoice Lifecycle (CDAR) - **CDAR Messages**: Acknowledgements, invoice statuses - **PPF Statuses**: REFUSED (210), PAID (212) ### 📊 Flux 10 - E-Reporting - **Tax Declarations**: International B2B, B2C - **Flow Types**: 10.1 (B2B transactions), 10.2 (B2B payments), 10.3 (B2C transactions), 10.4 (B2C payments) ### 📡 AFNOR PDP/PA (XP Z12-013) - **Flow Service**: Submit and search flows to PDPs - **Directory Service**: Company search (SIREN/SIRET) - **Multi-client**: Support for multiple PDP configs per user ### 🏛️ Chorus Pro - **Public Sector Invoicing**: Complete API for Chorus Pro ### ⏳ Async Tasks - **Celery**: Asynchronous generation, validation and signing - **Polling**: Status tracking via `/tasks/{task_id}/status` - **Webhooks**: Automatic notifications when tasks complete ## 🔒 Authentication All requests require a **JWT token** in the Authorization header: ``` Authorization: Bearer YOUR_JWT_TOKEN ``` ### How to obtain a JWT token? #### 🔑 Method 1: `/api/token/` API (Recommended) **URL:** `https://factpulse.fr/api/token/` This method is **recommended** for integration in your applications and CI/CD workflows. **Prerequisites:** Having set a password on your account **For users registered via email/password:** - You already have a password, use it directly **For users registered via OAuth (Google/GitHub):** - You must first set a password at: https://factpulse.fr/accounts/password/set/ - Once the password is created, you can use the API **Request example:** ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\" }' ``` **Optional `client_uid` parameter:** To select credentials for a specific client (PA/PDP, Chorus Pro, signing certificates), add `client_uid`: ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\", \"client_uid\": \"550e8400-e29b-41d4-a716-446655440000\" }' ``` The `client_uid` will be included in the JWT and allow the API to automatically use: - AFNOR/PDP credentials configured for this client - Chorus Pro credentials configured for this client - Electronic signature certificates configured for this client **Response:** ```json { \"access\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\", // Access token (validity: 30 min) \"refresh\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\" // Refresh token (validity: 7 days) } ``` **Advantages:** - ✅ Full automation (CI/CD, scripts) - ✅ Programmatic token management - ✅ Refresh token support for automatic access renewal - ✅ Easy integration in any language/tool #### 🖥️ Method 2: Dashboard Generation (Alternative) **URL:** https://factpulse.fr/api/dashboard/ This method is suitable for quick tests or occasional use via the graphical interface. **How it works:** - Log in to the dashboard - Use the \"Generate Test Token\" or \"Generate Production Token\" buttons - Works for **all** users (OAuth and email/password), without requiring a password **Token types:** - **Test Token**: 24h validity, 1000 calls/day quota (free) - **Production Token**: 7 days validity, quota based on your plan **Advantages:** - ✅ Quick for API testing - ✅ No password required - ✅ Simple visual interface **Disadvantages:** - ❌ Requires manual action - ❌ No refresh token - ❌ Less suited for automation ### 📚 Full Documentation For more information on authentication and API usage: https://factpulse.fr/documentation-api/
5
-
6
- The version of the OpenAPI document: 1.0.0
7
- Contact: contact@factpulse.fr
8
- Generated by: https://openapi-generator.tech
9
- Generator version: 7.20.0-SNAPSHOT
10
-
11
- =end
12
-
13
- require 'cgi'
14
-
15
- module FactPulse
16
- class FacturXPDFXMLVerificationApi
17
- attr_accessor :api_client
18
-
19
- def initialize(api_client = ApiClient.default)
20
- @api_client = api_client
21
- end
22
- # Get status of an asynchronous verification
23
- # Retrieves the status and result of an asynchronous verification task. **Possible statuses:** - `PENDING`: Task waiting in queue - `STARTED`: Task currently running - `SUCCESS`: Task completed successfully (see `result`) - `FAILURE`: System error (unhandled exception) **Note:** The `result.status` field can be \"SUCCESS\" or \"ERROR\" independently of Celery status (which will always be SUCCESS if the task ran).
24
- # @param task_id [String] Celery task ID returned by /verify-async endpoint
25
- # @param [Hash] opts the optional parameters
26
- # @return [AsyncTaskStatus]
27
- def get_verification_status_api_v1_verification_verify_async_task_id_status_get(task_id, opts = {})
28
- data, _status_code, _headers = get_verification_status_api_v1_verification_verify_async_task_id_status_get_with_http_info(task_id, opts)
29
- data
30
- end
31
-
32
- # Get status of an asynchronous verification
33
- # Retrieves the status and result of an asynchronous verification task. **Possible statuses:** - &#x60;PENDING&#x60;: Task waiting in queue - &#x60;STARTED&#x60;: Task currently running - &#x60;SUCCESS&#x60;: Task completed successfully (see &#x60;result&#x60;) - &#x60;FAILURE&#x60;: System error (unhandled exception) **Note:** The &#x60;result.status&#x60; field can be \&quot;SUCCESS\&quot; or \&quot;ERROR\&quot; independently of Celery status (which will always be SUCCESS if the task ran).
34
- # @param task_id [String] Celery task ID returned by /verify-async endpoint
35
- # @param [Hash] opts the optional parameters
36
- # @return [Array<(AsyncTaskStatus, Integer, Hash)>] AsyncTaskStatus data, response status code and response headers
37
- def get_verification_status_api_v1_verification_verify_async_task_id_status_get_with_http_info(task_id, opts = {})
38
- if @api_client.config.debugging
39
- @api_client.config.logger.debug 'Calling API: FacturXPDFXMLVerificationApi.get_verification_status_api_v1_verification_verify_async_task_id_status_get ...'
40
- end
41
- # verify the required parameter 'task_id' is set
42
- if @api_client.config.client_side_validation && task_id.nil?
43
- fail ArgumentError, "Missing the required parameter 'task_id' when calling FacturXPDFXMLVerificationApi.get_verification_status_api_v1_verification_verify_async_task_id_status_get"
44
- end
45
- # resource path
46
- local_var_path = '/api/v1/verification/verify-async/{task_id}/status'.sub('{' + 'task_id' + '}', CGI.escape(task_id.to_s))
47
-
48
- # query parameters
49
- query_params = opts[:query_params] || {}
50
-
51
- # header parameters
52
- header_params = opts[:header_params] || {}
53
- # HTTP header 'Accept' (if needed)
54
- header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
55
-
56
- # form parameters
57
- form_params = opts[:form_params] || {}
58
-
59
- # http body (model)
60
- post_body = opts[:debug_body]
61
-
62
- # return_type
63
- return_type = opts[:debug_return_type] || 'AsyncTaskStatus'
64
-
65
- # auth_names
66
- auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
67
-
68
- new_options = opts.merge(
69
- :operation => :"FacturXPDFXMLVerificationApi.get_verification_status_api_v1_verification_verify_async_task_id_status_get",
70
- :header_params => header_params,
71
- :query_params => query_params,
72
- :form_params => form_params,
73
- :body => post_body,
74
- :auth_names => auth_names,
75
- :return_type => return_type
76
- )
77
-
78
- data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
79
- if @api_client.config.debugging
80
- @api_client.config.logger.debug "API called: FacturXPDFXMLVerificationApi#get_verification_status_api_v1_verification_verify_async_task_id_status_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
81
- end
82
- return data, status_code, headers
83
- end
84
-
85
- # Verify PDF/XML Factur-X compliance (asynchronous)
86
- # Verifies PDF/XML Factur-X compliance asynchronously. **IMPORTANT**: Only Factur-X PDFs (with embedded XML) are accepted. PDFs without Factur-X XML will return a `NOT_FACTURX` error in the result. This version uses a Celery task and can call the OCR service if the PDF is an image or if `force_ocr=true`. **Returns immediately** a task ID. Use `/verify-async/{task_id}/status` to retrieve the result. **Verification principle (Factur-X 1.08):** - Principle #2: XML can only contain info present in the PDF - Principle #4: All XML info must be present and compliant in the PDF **Verified fields:** - Identification: BT-1 (invoice #), BT-2 (date), BT-3 (type), BT-5 (currency), BT-23 (framework) - Seller: BT-27 (name), BT-29 (SIRET), BT-30 (SIREN), BT-31 (VAT) - Buyer: BT-44 (name), BT-46 (SIRET), BT-47 (SIREN), BT-48 (VAT) - Amounts: BT-109 (excl. tax), BT-110 (VAT), BT-112 (incl. tax), BT-115 (amount due) - VAT breakdown: BT-116, BT-117, BT-118, BT-119 - Invoice lines: BT-153, BT-129, BT-146, BT-131 - Mandatory notes: PMT, PMD, AAB - Rule BR-FR-09: SIRET/SIREN consistency **Advantages over synchronous version:** - OCR support for image PDFs (via DocTR service) - Longer timeout for large documents - Doesn't block the server ## Webhook notification (recommended) Instead of polling, you can receive a webhook notification when verification completes: ``` callback_url=https://your-server.com/webhook ``` The webhook will POST a JSON payload with: - `event_type`: `verification.completed` or `verification.failed` - `data.is_compliant`: Whether the PDF/XML are consistent - `data.compliance_score`: Compliance score (0-1) - `X-Webhook-Signature` header for HMAC verification
87
- # @param pdf_file [File] Factur-X PDF file to verify
88
- # @param [Hash] opts the optional parameters
89
- # @option opts [Boolean] :force_ocr Force OCR usage even if PDF contains native text (default to false)
90
- # @option opts [String] :callback_url
91
- # @option opts [String] :webhook_mode Webhook content delivery: &#39;inline&#39; (base64 in payload) or &#39;download_url&#39; (temporary URL, 1h TTL) (default to 'inline')
92
- # @return [TaskResponse]
93
- def verify_pdf_async_api_v1_verification_verify_async_post(pdf_file, opts = {})
94
- data, _status_code, _headers = verify_pdf_async_api_v1_verification_verify_async_post_with_http_info(pdf_file, opts)
95
- data
96
- end
97
-
98
- # Verify PDF/XML Factur-X compliance (asynchronous)
99
- # Verifies PDF/XML Factur-X compliance asynchronously. **IMPORTANT**: Only Factur-X PDFs (with embedded XML) are accepted. PDFs without Factur-X XML will return a &#x60;NOT_FACTURX&#x60; error in the result. This version uses a Celery task and can call the OCR service if the PDF is an image or if &#x60;force_ocr&#x3D;true&#x60;. **Returns immediately** a task ID. Use &#x60;/verify-async/{task_id}/status&#x60; to retrieve the result. **Verification principle (Factur-X 1.08):** - Principle #2: XML can only contain info present in the PDF - Principle #4: All XML info must be present and compliant in the PDF **Verified fields:** - Identification: BT-1 (invoice #), BT-2 (date), BT-3 (type), BT-5 (currency), BT-23 (framework) - Seller: BT-27 (name), BT-29 (SIRET), BT-30 (SIREN), BT-31 (VAT) - Buyer: BT-44 (name), BT-46 (SIRET), BT-47 (SIREN), BT-48 (VAT) - Amounts: BT-109 (excl. tax), BT-110 (VAT), BT-112 (incl. tax), BT-115 (amount due) - VAT breakdown: BT-116, BT-117, BT-118, BT-119 - Invoice lines: BT-153, BT-129, BT-146, BT-131 - Mandatory notes: PMT, PMD, AAB - Rule BR-FR-09: SIRET/SIREN consistency **Advantages over synchronous version:** - OCR support for image PDFs (via DocTR service) - Longer timeout for large documents - Doesn&#39;t block the server ## Webhook notification (recommended) Instead of polling, you can receive a webhook notification when verification completes: &#x60;&#x60;&#x60; callback_url&#x3D;https://your-server.com/webhook &#x60;&#x60;&#x60; The webhook will POST a JSON payload with: - &#x60;event_type&#x60;: &#x60;verification.completed&#x60; or &#x60;verification.failed&#x60; - &#x60;data.is_compliant&#x60;: Whether the PDF/XML are consistent - &#x60;data.compliance_score&#x60;: Compliance score (0-1) - &#x60;X-Webhook-Signature&#x60; header for HMAC verification
100
- # @param pdf_file [File] Factur-X PDF file to verify
101
- # @param [Hash] opts the optional parameters
102
- # @option opts [Boolean] :force_ocr Force OCR usage even if PDF contains native text (default to false)
103
- # @option opts [String] :callback_url
104
- # @option opts [String] :webhook_mode Webhook content delivery: &#39;inline&#39; (base64 in payload) or &#39;download_url&#39; (temporary URL, 1h TTL) (default to 'inline')
105
- # @return [Array<(TaskResponse, Integer, Hash)>] TaskResponse data, response status code and response headers
106
- def verify_pdf_async_api_v1_verification_verify_async_post_with_http_info(pdf_file, opts = {})
107
- if @api_client.config.debugging
108
- @api_client.config.logger.debug 'Calling API: FacturXPDFXMLVerificationApi.verify_pdf_async_api_v1_verification_verify_async_post ...'
109
- end
110
- # verify the required parameter 'pdf_file' is set
111
- if @api_client.config.client_side_validation && pdf_file.nil?
112
- fail ArgumentError, "Missing the required parameter 'pdf_file' when calling FacturXPDFXMLVerificationApi.verify_pdf_async_api_v1_verification_verify_async_post"
113
- end
114
- # resource path
115
- local_var_path = '/api/v1/verification/verify-async'
116
-
117
- # query parameters
118
- query_params = opts[:query_params] || {}
119
-
120
- # header parameters
121
- header_params = opts[:header_params] || {}
122
- # HTTP header 'Accept' (if needed)
123
- header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
124
- # HTTP header 'Content-Type'
125
- content_type = @api_client.select_header_content_type(['multipart/form-data'])
126
- if !content_type.nil?
127
- header_params['Content-Type'] = content_type
128
- end
129
-
130
- # form parameters
131
- form_params = opts[:form_params] || {}
132
- form_params['pdf_file'] = pdf_file
133
- form_params['force_ocr'] = opts[:'force_ocr'] if !opts[:'force_ocr'].nil?
134
- form_params['callback_url'] = opts[:'callback_url'] if !opts[:'callback_url'].nil?
135
- form_params['webhook_mode'] = opts[:'webhook_mode'] if !opts[:'webhook_mode'].nil?
136
-
137
- # http body (model)
138
- post_body = opts[:debug_body]
139
-
140
- # return_type
141
- return_type = opts[:debug_return_type] || 'TaskResponse'
142
-
143
- # auth_names
144
- auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
145
-
146
- new_options = opts.merge(
147
- :operation => :"FacturXPDFXMLVerificationApi.verify_pdf_async_api_v1_verification_verify_async_post",
148
- :header_params => header_params,
149
- :query_params => query_params,
150
- :form_params => form_params,
151
- :body => post_body,
152
- :auth_names => auth_names,
153
- :return_type => return_type
154
- )
155
-
156
- data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
157
- if @api_client.config.debugging
158
- @api_client.config.logger.debug "API called: FacturXPDFXMLVerificationApi#verify_pdf_async_api_v1_verification_verify_async_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
159
- end
160
- return data, status_code, headers
161
- end
162
-
163
- # Verify PDF/XML Factur-X compliance (synchronous)
164
- # Verifies compliance between the PDF and its embedded Factur-X XML. **IMPORTANT**: Only Factur-X PDFs (with embedded XML) are accepted. PDFs without Factur-X XML will be rejected with a 400 error. This synchronous version uses only native PDF extraction (pdfplumber). For image PDFs requiring OCR, use the `/verify-async` endpoint. **Verification principle (Factur-X 1.08):** - Principle #2: XML can only contain info present in the PDF - Principle #4: All XML info must be present and compliant in the PDF **Verified fields:** - Identification: BT-1 (invoice #), BT-2 (date), BT-3 (type), BT-5 (currency), BT-23 (framework) - Seller: BT-27 (name), BT-29 (SIRET), BT-30 (SIREN), BT-31 (VAT) - Buyer: BT-44 (name), BT-46 (SIRET), BT-47 (SIREN), BT-48 (VAT) - Amounts: BT-109 (excl. tax), BT-110 (VAT), BT-112 (incl. tax), BT-115 (amount due) - VAT breakdown: BT-116, BT-117, BT-118, BT-119 - Invoice lines: BT-153, BT-129, BT-146, BT-131 - Mandatory notes: PMT, PMD, AAB - Rule BR-FR-09: SIRET/SIREN consistency
165
- # @param pdf_file [File] Factur-X PDF file to verify
166
- # @param [Hash] opts the optional parameters
167
- # @return [VerificationSuccessResponse]
168
- def verify_pdf_sync_api_v1_verification_verify_post(pdf_file, opts = {})
169
- data, _status_code, _headers = verify_pdf_sync_api_v1_verification_verify_post_with_http_info(pdf_file, opts)
170
- data
171
- end
172
-
173
- # Verify PDF/XML Factur-X compliance (synchronous)
174
- # Verifies compliance between the PDF and its embedded Factur-X XML. **IMPORTANT**: Only Factur-X PDFs (with embedded XML) are accepted. PDFs without Factur-X XML will be rejected with a 400 error. This synchronous version uses only native PDF extraction (pdfplumber). For image PDFs requiring OCR, use the &#x60;/verify-async&#x60; endpoint. **Verification principle (Factur-X 1.08):** - Principle #2: XML can only contain info present in the PDF - Principle #4: All XML info must be present and compliant in the PDF **Verified fields:** - Identification: BT-1 (invoice #), BT-2 (date), BT-3 (type), BT-5 (currency), BT-23 (framework) - Seller: BT-27 (name), BT-29 (SIRET), BT-30 (SIREN), BT-31 (VAT) - Buyer: BT-44 (name), BT-46 (SIRET), BT-47 (SIREN), BT-48 (VAT) - Amounts: BT-109 (excl. tax), BT-110 (VAT), BT-112 (incl. tax), BT-115 (amount due) - VAT breakdown: BT-116, BT-117, BT-118, BT-119 - Invoice lines: BT-153, BT-129, BT-146, BT-131 - Mandatory notes: PMT, PMD, AAB - Rule BR-FR-09: SIRET/SIREN consistency
175
- # @param pdf_file [File] Factur-X PDF file to verify
176
- # @param [Hash] opts the optional parameters
177
- # @return [Array<(VerificationSuccessResponse, Integer, Hash)>] VerificationSuccessResponse data, response status code and response headers
178
- def verify_pdf_sync_api_v1_verification_verify_post_with_http_info(pdf_file, opts = {})
179
- if @api_client.config.debugging
180
- @api_client.config.logger.debug 'Calling API: FacturXPDFXMLVerificationApi.verify_pdf_sync_api_v1_verification_verify_post ...'
181
- end
182
- # verify the required parameter 'pdf_file' is set
183
- if @api_client.config.client_side_validation && pdf_file.nil?
184
- fail ArgumentError, "Missing the required parameter 'pdf_file' when calling FacturXPDFXMLVerificationApi.verify_pdf_sync_api_v1_verification_verify_post"
185
- end
186
- # resource path
187
- local_var_path = '/api/v1/verification/verify'
188
-
189
- # query parameters
190
- query_params = opts[:query_params] || {}
191
-
192
- # header parameters
193
- header_params = opts[:header_params] || {}
194
- # HTTP header 'Accept' (if needed)
195
- header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
196
- # HTTP header 'Content-Type'
197
- content_type = @api_client.select_header_content_type(['multipart/form-data'])
198
- if !content_type.nil?
199
- header_params['Content-Type'] = content_type
200
- end
201
-
202
- # form parameters
203
- form_params = opts[:form_params] || {}
204
- form_params['pdf_file'] = pdf_file
205
-
206
- # http body (model)
207
- post_body = opts[:debug_body]
208
-
209
- # return_type
210
- return_type = opts[:debug_return_type] || 'VerificationSuccessResponse'
211
-
212
- # auth_names
213
- auth_names = opts[:debug_auth_names] || ['APIKeyHeader', 'HTTPBearer']
214
-
215
- new_options = opts.merge(
216
- :operation => :"FacturXPDFXMLVerificationApi.verify_pdf_sync_api_v1_verification_verify_post",
217
- :header_params => header_params,
218
- :query_params => query_params,
219
- :form_params => form_params,
220
- :body => post_body,
221
- :auth_names => auth_names,
222
- :return_type => return_type
223
- )
224
-
225
- data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
226
- if @api_client.config.debugging
227
- @api_client.config.logger.debug "API called: FacturXPDFXMLVerificationApi#verify_pdf_sync_api_v1_verification_verify_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
228
- end
229
- return data, status_code, headers
230
- end
231
- end
232
- end