factpulse 2.0.37__py3-none-any.whl → 3.0.23__py3-none-any.whl

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.

Potentially problematic release.


This version of factpulse might be problematic. Click here for more details.

Files changed (400) hide show
  1. factpulse/__init__.py +542 -197
  2. factpulse/api/__init__.py +7 -4
  3. factpulse/api/afnorpdppa_api.py +49 -47
  4. factpulse/api/afnorpdppa_directory_service_api.py +1225 -310
  5. factpulse/api/afnorpdppa_flow_service_api.py +212 -81
  6. factpulse/api/chorus_pro_api.py +271 -218
  7. factpulse/api/document_conversion_api.py +1222 -0
  8. factpulse/api/downloads_api.py +1171 -0
  9. factpulse/api/e_reporting_api.py +3254 -0
  10. factpulse/api/{sant_api.py → health_api.py} +29 -22
  11. factpulse/api/invoice_processing_api.py +3634 -0
  12. factpulse/api/{vrification_pdfxml_api.py → pdfxml_verification_api.py} +331 -252
  13. factpulse/api/{utilisateur_api.py → user_api.py} +21 -17
  14. factpulse/api_client.py +4 -3
  15. factpulse/configuration.py +11 -6
  16. factpulse/exceptions.py +3 -2
  17. factpulse/models/__init__.py +265 -95
  18. factpulse/models/accept_language.py +38 -0
  19. factpulse/models/acknowledgment_status.py +39 -0
  20. factpulse/models/additional_document.py +116 -0
  21. factpulse/models/afnor_acknowledgement.py +100 -0
  22. factpulse/models/afnor_acknowledgement_detail.py +105 -0
  23. factpulse/models/afnor_address_edit.py +111 -0
  24. factpulse/models/afnor_address_patch.py +141 -0
  25. factpulse/models/afnor_address_put.py +129 -0
  26. factpulse/models/afnor_address_read.py +113 -0
  27. factpulse/models/afnor_algorithm.py +41 -0
  28. factpulse/models/afnor_contains_operator.py +37 -0
  29. factpulse/models/afnor_create_directory_line_body.py +98 -0
  30. factpulse/models/afnor_create_directory_line_body_addressing_information.py +122 -0
  31. factpulse/models/afnor_create_directory_line_body_period.py +91 -0
  32. factpulse/models/afnor_create_routing_code_body.py +153 -0
  33. factpulse/models/afnor_credentials.py +107 -0
  34. factpulse/models/afnor_destination.py +127 -0
  35. factpulse/models/afnor_diffusion_status.py +38 -0
  36. factpulse/models/afnor_directory_line_field.py +42 -0
  37. factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code.py +139 -0
  38. factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_platform.py +92 -0
  39. factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_routing_code.py +134 -0
  40. factpulse/models/afnor_directory_line_post201_response.py +94 -0
  41. factpulse/models/afnor_directory_line_search_post200_response.py +104 -0
  42. factpulse/models/afnor_entity_type.py +38 -0
  43. factpulse/models/afnor_error.py +97 -0
  44. factpulse/models/afnor_facility_administrative_status.py +38 -0
  45. factpulse/models/afnor_facility_nature.py +38 -0
  46. factpulse/models/afnor_facility_payload_history.py +140 -0
  47. factpulse/models/afnor_facility_payload_history_ule_b2g_additional_data.py +98 -0
  48. factpulse/models/afnor_facility_payload_included.py +134 -0
  49. factpulse/models/afnor_facility_type.py +38 -0
  50. factpulse/models/afnor_flow.py +129 -0
  51. factpulse/models/afnor_flow_ack_status.py +39 -0
  52. factpulse/models/afnor_flow_direction.py +38 -0
  53. factpulse/models/afnor_flow_info.py +112 -0
  54. factpulse/models/afnor_flow_profile.py +39 -0
  55. factpulse/models/afnor_flow_syntax.py +41 -0
  56. factpulse/models/afnor_flow_type.py +49 -0
  57. factpulse/models/afnor_full_flow_info.py +117 -0
  58. factpulse/models/afnor_health_check_response.py +92 -0
  59. factpulse/models/afnor_legal_unit_administrative_status.py +38 -0
  60. factpulse/models/afnor_legal_unit_payload_history.py +107 -0
  61. factpulse/models/afnor_legal_unit_payload_included.py +107 -0
  62. factpulse/models/afnor_legal_unit_payload_included_no_siren.py +95 -0
  63. factpulse/models/afnor_platform_status.py +38 -0
  64. factpulse/models/afnor_processing_rule.py +42 -0
  65. factpulse/models/afnor_reason_code.py +141 -0
  66. factpulse/models/afnor_reason_code_enum.py +51 -0
  67. factpulse/models/afnor_recipient_platform_type.py +38 -0
  68. factpulse/models/afnor_result.py +127 -0
  69. factpulse/models/afnor_routing_code_administrative_status.py +38 -0
  70. factpulse/models/afnor_routing_code_field.py +44 -0
  71. factpulse/models/afnor_routing_code_payload_history_legal_unit_facility.py +158 -0
  72. factpulse/models/afnor_routing_code_post201_response.py +113 -0
  73. factpulse/models/afnor_routing_code_search.py +122 -0
  74. factpulse/models/afnor_routing_code_search_filters.py +128 -0
  75. factpulse/models/afnor_routing_code_search_filters_administrative_status.py +92 -0
  76. factpulse/models/afnor_routing_code_search_filters_routing_code_name.py +102 -0
  77. factpulse/models/afnor_routing_code_search_filters_routing_identifier.py +102 -0
  78. factpulse/models/afnor_routing_code_search_post200_response.py +104 -0
  79. factpulse/models/afnor_routing_code_search_sorting_inner.py +92 -0
  80. factpulse/models/afnor_search_directory_line.py +109 -0
  81. factpulse/models/afnor_search_directory_line_filters.py +116 -0
  82. factpulse/models/afnor_search_directory_line_filters_addressing_identifier.py +92 -0
  83. factpulse/models/afnor_search_directory_line_filters_addressing_suffix.py +92 -0
  84. factpulse/models/afnor_search_directory_line_sorting_inner.py +92 -0
  85. factpulse/models/afnor_search_flow_content.py +104 -0
  86. factpulse/models/afnor_search_flow_filters.py +106 -0
  87. factpulse/models/afnor_search_flow_params.py +95 -0
  88. factpulse/models/afnor_search_siren.py +109 -0
  89. factpulse/models/afnor_search_siren_filters.py +110 -0
  90. factpulse/models/afnor_search_siren_filters_administrative_status.py +92 -0
  91. factpulse/models/afnor_search_siren_filters_business_name.py +92 -0
  92. factpulse/models/afnor_search_siren_filters_entity_type.py +92 -0
  93. factpulse/models/afnor_search_siren_filters_siren.py +102 -0
  94. factpulse/models/afnor_search_siren_sorting_inner.py +92 -0
  95. factpulse/models/afnor_search_siret.py +122 -0
  96. factpulse/models/afnor_search_siret_filters.py +140 -0
  97. factpulse/models/afnor_search_siret_filters_address_lines.py +92 -0
  98. factpulse/models/afnor_search_siret_filters_administrative_status.py +92 -0
  99. factpulse/models/afnor_search_siret_filters_country_subdivision.py +92 -0
  100. factpulse/models/afnor_search_siret_filters_facility_type.py +92 -0
  101. factpulse/models/afnor_search_siret_filters_locality.py +92 -0
  102. factpulse/models/afnor_search_siret_filters_name.py +92 -0
  103. factpulse/models/afnor_search_siret_filters_postal_code.py +102 -0
  104. factpulse/models/afnor_search_siret_filters_siret.py +102 -0
  105. factpulse/models/afnor_search_siret_sorting_inner.py +92 -0
  106. factpulse/models/afnor_siren_field.py +41 -0
  107. factpulse/models/afnor_siren_search_post200_response.py +104 -0
  108. factpulse/models/afnor_siret_field.py +50 -0
  109. factpulse/models/afnor_siret_search_post200_response.py +104 -0
  110. factpulse/models/afnor_sorting_order.py +38 -0
  111. factpulse/models/afnor_strict_operator.py +37 -0
  112. factpulse/models/afnor_update_patch_directory_line_body.py +89 -0
  113. factpulse/models/afnor_update_patch_routing_code_body.py +120 -0
  114. factpulse/models/afnor_update_put_routing_code_body.py +114 -0
  115. factpulse/models/afnor_webhook_callback_content.py +92 -0
  116. factpulse/models/aggregated_payment_input.py +106 -0
  117. factpulse/models/aggregated_transaction_input.py +136 -0
  118. factpulse/models/allowance_charge.py +150 -0
  119. factpulse/models/allowance_charge_reason_code.py +74 -0
  120. factpulse/models/allowance_reason_code.py +43 -0
  121. factpulse/models/allowance_total_amount.py +146 -0
  122. factpulse/models/amount.py +140 -0
  123. factpulse/models/amount1.py +140 -0
  124. factpulse/models/amount_due.py +140 -0
  125. factpulse/models/api_error.py +6 -5
  126. factpulse/models/api_profile.py +41 -0
  127. factpulse/models/async_task_status.py +98 -0
  128. factpulse/models/base_amount.py +146 -0
  129. factpulse/models/bounding_box_schema.py +11 -10
  130. factpulse/models/buyercountry.py +137 -0
  131. factpulse/models/celery_status.py +41 -0
  132. factpulse/models/certificate_info_response.py +25 -24
  133. factpulse/models/charge_total_amount.py +146 -0
  134. factpulse/models/chorus_pro_credentials.py +14 -13
  135. factpulse/models/chorus_pro_destination.py +109 -0
  136. factpulse/models/chorus_pro_result.py +102 -0
  137. factpulse/models/contact.py +114 -0
  138. factpulse/models/convert_resume_request.py +88 -0
  139. factpulse/models/convert_success_response.py +127 -0
  140. factpulse/models/convert_validation_failed_response.py +121 -0
  141. factpulse/models/country_code.py +206 -0
  142. factpulse/models/create_aggregated_report_request.py +170 -0
  143. factpulse/models/create_e_reporting_request.py +173 -0
  144. factpulse/models/currency.py +137 -0
  145. factpulse/models/currency_code.py +89 -0
  146. factpulse/models/delivery_party.py +122 -0
  147. factpulse/models/destination.py +28 -27
  148. factpulse/models/directory_line_include.py +40 -0
  149. factpulse/models/doc_type.py +40 -0
  150. factpulse/models/document_type_info.py +92 -0
  151. factpulse/models/e_reporting_flow_type.py +40 -0
  152. factpulse/models/e_reporting_validation_error.py +97 -0
  153. factpulse/models/electronic_address.py +91 -0
  154. factpulse/models/enriched_invoice_info.py +134 -0
  155. factpulse/models/error_level.py +3 -2
  156. factpulse/models/error_source.py +3 -2
  157. factpulse/models/extraction_info.py +94 -0
  158. factpulse/models/factur_x_invoice.py +321 -0
  159. factpulse/models/factur_xpdf_info.py +92 -0
  160. factpulse/models/facture_electronique_rest_api_schemas_ereporting_invoice_type_code.py +41 -0
  161. factpulse/models/facture_electronique_rest_api_schemas_processing_chorus_pro_credentials.py +116 -0
  162. factpulse/models/field_status.py +41 -0
  163. factpulse/models/file_info.py +95 -0
  164. factpulse/models/files_info.py +107 -0
  165. factpulse/models/flow_direction.py +38 -0
  166. factpulse/models/flow_profile.py +39 -0
  167. factpulse/models/flow_summary.py +132 -0
  168. factpulse/models/flow_syntax.py +41 -0
  169. factpulse/models/flow_type.py +49 -0
  170. factpulse/models/generate_aggregated_report_response.py +100 -0
  171. factpulse/models/generate_certificate_request.py +27 -26
  172. factpulse/models/generate_certificate_response.py +16 -15
  173. factpulse/models/generate_e_reporting_response.py +96 -0
  174. factpulse/models/get_chorus_pro_id_request.py +101 -0
  175. factpulse/models/get_chorus_pro_id_response.py +99 -0
  176. factpulse/models/get_invoice_request.py +99 -0
  177. factpulse/models/get_invoice_response.py +143 -0
  178. factpulse/models/get_structure_request.py +101 -0
  179. factpulse/models/get_structure_response.py +143 -0
  180. factpulse/models/global_allowance_amount.py +140 -0
  181. factpulse/models/gross_unit_price.py +146 -0
  182. factpulse/models/http_validation_error.py +3 -2
  183. factpulse/models/incoming_invoice.py +175 -0
  184. factpulse/models/incoming_supplier.py +145 -0
  185. factpulse/models/invoice_format.py +39 -0
  186. factpulse/models/invoice_input.py +179 -0
  187. factpulse/models/invoice_line.py +370 -0
  188. factpulse/models/invoice_line_allowance_amount.py +146 -0
  189. factpulse/models/invoice_note.py +95 -0
  190. factpulse/models/invoice_payment_input.py +110 -0
  191. factpulse/models/invoice_references.py +195 -0
  192. factpulse/models/invoice_status.py +97 -0
  193. factpulse/models/invoice_totals.py +178 -0
  194. factpulse/models/invoice_totals_prepayment.py +146 -0
  195. factpulse/models/invoice_type_code.py +52 -0
  196. factpulse/models/invoice_type_code_output.py +52 -0
  197. factpulse/models/invoicing_framework.py +111 -0
  198. factpulse/models/invoicing_framework_code.py +40 -0
  199. factpulse/models/line_net_amount.py +146 -0
  200. factpulse/models/line_sub_type.py +39 -0
  201. factpulse/models/line_total_amount.py +146 -0
  202. factpulse/models/location_inner.py +139 -0
  203. factpulse/models/mandatory_note_schema.py +125 -0
  204. factpulse/models/manual_rate.py +140 -0
  205. factpulse/models/manual_vat_rate.py +140 -0
  206. factpulse/models/missing_field.py +108 -0
  207. factpulse/models/operation_nature.py +50 -0
  208. factpulse/models/output_format.py +38 -0
  209. factpulse/models/page_dimensions_schema.py +90 -0
  210. factpulse/models/payee.py +169 -0
  211. factpulse/models/payment_amount_by_rate.py +98 -0
  212. factpulse/models/payment_card.py +100 -0
  213. factpulse/models/payment_means.py +42 -0
  214. factpulse/models/pdf_validation_result_api.py +170 -0
  215. factpulse/models/pdp_credentials.py +16 -15
  216. factpulse/models/percentage.py +146 -0
  217. factpulse/models/postal_address.py +135 -0
  218. factpulse/models/price_allowance_amount.py +146 -0
  219. factpulse/models/price_basis_quantity.py +146 -0
  220. factpulse/models/processing_options.py +95 -0
  221. factpulse/models/processing_rule.py +42 -0
  222. factpulse/models/product_characteristic.py +90 -0
  223. factpulse/models/product_classification.py +102 -0
  224. factpulse/models/quantity.py +140 -0
  225. factpulse/models/rate.py +140 -0
  226. factpulse/models/rate1.py +140 -0
  227. factpulse/models/recipient.py +168 -0
  228. factpulse/models/report_period.py +91 -0
  229. factpulse/models/report_sender.py +98 -0
  230. factpulse/models/rounding_amount.py +146 -0
  231. factpulse/models/routing_code_include.py +38 -0
  232. factpulse/models/schematron_validation_error.py +128 -0
  233. factpulse/models/scheme_id.py +18 -4
  234. factpulse/models/search_flow_request.py +144 -0
  235. factpulse/models/search_flow_response.py +102 -0
  236. factpulse/models/search_services_response.py +102 -0
  237. factpulse/models/search_structure_request.py +120 -0
  238. factpulse/models/search_structure_response.py +102 -0
  239. factpulse/models/sellercountry.py +137 -0
  240. factpulse/models/signature_info.py +7 -6
  241. factpulse/models/signature_info_api.py +123 -0
  242. factpulse/models/signature_parameters.py +134 -0
  243. factpulse/models/simplified_invoice_data.py +151 -0
  244. factpulse/models/siret_include.py +37 -0
  245. factpulse/models/structure_info.py +15 -14
  246. factpulse/models/structure_parameters.py +92 -0
  247. factpulse/models/structure_service.py +94 -0
  248. factpulse/models/submission_mode.py +39 -0
  249. factpulse/models/submit_aggregated_report_request.py +127 -0
  250. factpulse/models/submit_complete_invoice_request.py +117 -0
  251. factpulse/models/submit_complete_invoice_response.py +146 -0
  252. factpulse/models/submit_e_reporting_request.py +127 -0
  253. factpulse/models/submit_e_reporting_response.py +117 -0
  254. factpulse/models/submit_flow_request.py +124 -0
  255. factpulse/models/submit_flow_response.py +110 -0
  256. factpulse/models/submit_gross_amount.py +140 -0
  257. factpulse/models/submit_invoice_request.py +177 -0
  258. factpulse/models/submit_invoice_response.py +104 -0
  259. factpulse/models/submit_net_amount.py +140 -0
  260. factpulse/models/submit_vat_amount.py +140 -0
  261. factpulse/models/supplementary_attachment.py +96 -0
  262. factpulse/models/supplier.py +226 -0
  263. factpulse/models/task_response.py +88 -0
  264. factpulse/models/tax_breakdown_input.py +104 -0
  265. factpulse/models/tax_due_date_type.py +42 -0
  266. factpulse/models/tax_representative.py +96 -0
  267. factpulse/models/taxable_amount.py +140 -0
  268. factpulse/models/taxableamount.py +140 -0
  269. factpulse/models/taxamount.py +140 -0
  270. factpulse/models/taxamount1.py +140 -0
  271. factpulse/models/taxamount2.py +140 -0
  272. factpulse/models/taxexclusiveamount.py +140 -0
  273. factpulse/models/taxexclusiveamount1.py +140 -0
  274. factpulse/models/total_gross_amount.py +140 -0
  275. factpulse/models/total_net_amount.py +140 -0
  276. factpulse/models/total_vat_amount.py +140 -0
  277. factpulse/models/transaction_category.py +40 -0
  278. factpulse/models/transmission_type_code.py +38 -0
  279. factpulse/models/unit_net_price.py +140 -0
  280. factpulse/models/unit_of_measure.py +42 -0
  281. factpulse/models/validate_e_reporting_request.py +92 -0
  282. factpulse/models/validate_e_reporting_response.py +113 -0
  283. factpulse/models/validation_error.py +6 -5
  284. factpulse/models/validation_error_detail.py +7 -6
  285. factpulse/models/validation_error_response.py +88 -0
  286. factpulse/models/validation_info.py +106 -0
  287. factpulse/models/validation_success_response.py +88 -0
  288. factpulse/models/vat_accounting_code.py +40 -0
  289. factpulse/models/vat_amount.py +140 -0
  290. factpulse/models/vat_category.py +45 -0
  291. factpulse/models/vat_line.py +141 -0
  292. factpulse/models/vat_point_date_code.py +39 -0
  293. factpulse/models/vat_rate.py +146 -0
  294. factpulse/models/verification_success_response.py +136 -0
  295. factpulse/models/verified_field_schema.py +130 -0
  296. factpulse/rest.py +3 -2
  297. factpulse-3.0.23.dist-info/METADATA +294 -0
  298. factpulse-3.0.23.dist-info/RECORD +306 -0
  299. {factpulse-2.0.37.dist-info → factpulse-3.0.23.dist-info}/licenses/LICENSE +1 -1
  300. factpulse_helpers/__init__.py +34 -34
  301. factpulse_helpers/client.py +1020 -795
  302. factpulse_helpers/exceptions.py +68 -68
  303. factpulse/api/traitement_facture_api.py +0 -3437
  304. factpulse/models/adresse_electronique.py +0 -90
  305. factpulse/models/adresse_postale.py +0 -120
  306. factpulse/models/cadre_de_facturation.py +0 -110
  307. factpulse/models/categorie_tva.py +0 -44
  308. factpulse/models/champ_verifie_schema.py +0 -129
  309. factpulse/models/code_cadre_facturation.py +0 -39
  310. factpulse/models/code_raison_reduction.py +0 -42
  311. factpulse/models/consulter_facture_request.py +0 -98
  312. factpulse/models/consulter_facture_response.py +0 -142
  313. factpulse/models/consulter_structure_request.py +0 -100
  314. factpulse/models/consulter_structure_response.py +0 -142
  315. factpulse/models/credentials_afnor.py +0 -106
  316. factpulse/models/credentials_chorus_pro.py +0 -115
  317. factpulse/models/destinataire.py +0 -130
  318. factpulse/models/destination_afnor.py +0 -127
  319. factpulse/models/destination_chorus_pro.py +0 -108
  320. factpulse/models/dimension_page_schema.py +0 -89
  321. factpulse/models/direction_flux.py +0 -37
  322. factpulse/models/donnees_facture_simplifiees.py +0 -124
  323. factpulse/models/facture_enrichie_info.py +0 -133
  324. factpulse/models/facture_entrante.py +0 -196
  325. factpulse/models/facture_factur_x.py +0 -183
  326. factpulse/models/flux_resume.py +0 -131
  327. factpulse/models/format_facture.py +0 -38
  328. factpulse/models/format_sortie.py +0 -37
  329. factpulse/models/fournisseur.py +0 -153
  330. factpulse/models/fournisseur_entrant.py +0 -144
  331. factpulse/models/information_signature_api.py +0 -122
  332. factpulse/models/ligne_de_poste.py +0 -183
  333. factpulse/models/ligne_de_poste_montant_remise_ht.py +0 -145
  334. factpulse/models/ligne_de_poste_taux_tva_manuel.py +0 -145
  335. factpulse/models/ligne_de_tva.py +0 -132
  336. factpulse/models/mode_depot.py +0 -38
  337. factpulse/models/mode_paiement.py +0 -41
  338. factpulse/models/montant_a_payer.py +0 -139
  339. factpulse/models/montant_base_ht.py +0 -139
  340. factpulse/models/montant_ht_total.py +0 -139
  341. factpulse/models/montant_remise_globale_ttc.py +0 -139
  342. factpulse/models/montant_total.py +0 -133
  343. factpulse/models/montant_total_acompte.py +0 -145
  344. factpulse/models/montant_total_ligne_ht.py +0 -139
  345. factpulse/models/montant_ttc_total.py +0 -139
  346. factpulse/models/montant_tva.py +0 -139
  347. factpulse/models/montant_tva_ligne.py +0 -139
  348. factpulse/models/montant_tva_total.py +0 -139
  349. factpulse/models/montant_unitaire_ht.py +0 -139
  350. factpulse/models/nature_operation.py +0 -49
  351. factpulse/models/note.py +0 -94
  352. factpulse/models/note_obligatoire_schema.py +0 -124
  353. factpulse/models/obtenir_id_chorus_pro_request.py +0 -100
  354. factpulse/models/obtenir_id_chorus_pro_response.py +0 -98
  355. factpulse/models/options_processing.py +0 -94
  356. factpulse/models/parametres_signature.py +0 -133
  357. factpulse/models/parametres_structure.py +0 -91
  358. factpulse/models/pdf_factur_x_info.py +0 -91
  359. factpulse/models/piece_jointe_complementaire.py +0 -95
  360. factpulse/models/profil_api.py +0 -39
  361. factpulse/models/profil_flux.py +0 -38
  362. factpulse/models/quantite.py +0 -139
  363. factpulse/models/rechercher_services_response.py +0 -101
  364. factpulse/models/rechercher_structure_request.py +0 -119
  365. factpulse/models/rechercher_structure_response.py +0 -101
  366. factpulse/models/references.py +0 -124
  367. factpulse/models/reponse_healthcheck_afnor.py +0 -91
  368. factpulse/models/reponse_recherche_flux.py +0 -101
  369. factpulse/models/reponse_soumission_flux.py +0 -109
  370. factpulse/models/reponse_tache.py +0 -87
  371. factpulse/models/reponse_validation_erreur.py +0 -87
  372. factpulse/models/reponse_validation_succes.py +0 -87
  373. factpulse/models/reponse_verification_succes.py +0 -135
  374. factpulse/models/requete_recherche_flux.py +0 -143
  375. factpulse/models/requete_soumission_flux.py +0 -123
  376. factpulse/models/resultat_afnor.py +0 -105
  377. factpulse/models/resultat_chorus_pro.py +0 -101
  378. factpulse/models/resultat_validation_pdfapi.py +0 -169
  379. factpulse/models/service_structure.py +0 -93
  380. factpulse/models/soumettre_facture_complete_request.py +0 -116
  381. factpulse/models/soumettre_facture_complete_response.py +0 -145
  382. factpulse/models/soumettre_facture_request.py +0 -176
  383. factpulse/models/soumettre_facture_response.py +0 -103
  384. factpulse/models/statut_acquittement.py +0 -38
  385. factpulse/models/statut_celery.py +0 -40
  386. factpulse/models/statut_champ_api.py +0 -40
  387. factpulse/models/statut_facture.py +0 -96
  388. factpulse/models/statut_tache.py +0 -97
  389. factpulse/models/syntaxe_flux.py +0 -40
  390. factpulse/models/tauxmanuel.py +0 -139
  391. factpulse/models/type_document.py +0 -40
  392. factpulse/models/type_facture.py +0 -37
  393. factpulse/models/type_flux.py +0 -40
  394. factpulse/models/type_tva.py +0 -39
  395. factpulse/models/unite.py +0 -41
  396. factpulse/models/validation_error_loc_inner.py +0 -138
  397. factpulse-2.0.37.dist-info/METADATA +0 -292
  398. factpulse-2.0.37.dist-info/RECORD +0 -134
  399. {factpulse-2.0.37.dist-info → factpulse-3.0.23.dist-info}/WHEEL +0 -0
  400. {factpulse-2.0.37.dist-info → factpulse-3.0.23.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,1222 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ FactPulse REST API
5
+
6
+ REST API for electronic invoicing in France: Factur-X, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Factur-X Invoice 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) ### ✅ Validation and Compliance - **XML Validation**: Schematron (45 to 210+ rules depending on profile) - **PDF Validation**: PDF/A-3, Factur-X XMP metadata, electronic signatures - **VeraPDF**: Strict PDF/A validation (146+ ISO 19005-3 rules) - **Asynchronous Processing**: Celery support for heavy validations (VeraPDF) ### 📡 AFNOR PDP/PA Integration (XP Z12-013) - **Flow Submission**: Send invoices to Partner Dematerialization Platforms - **Flow Search**: View submitted invoices - **Download**: Retrieve PDF/A-3 with XML - **Directory Service**: Company search (SIREN/SIRET) - **Multi-client**: Support for multiple PDP configs per user (stored credentials or zero-storage) ### ✍️ PDF 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 - **Certificate Generation**: Self-signed X.509 certificates for testing ### 🔄 Asynchronous Processing - **Celery**: Asynchronous generation, validation and signing - **Polling**: Status tracking via `/tasks/{task_id}/status` - **No timeout**: Ideal for large files or heavy validations ## 🔒 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/
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Contact: contact@factpulse.fr
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+ import warnings
16
+ from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
17
+ from typing import Any, Dict, List, Optional, Tuple, Union
18
+ from typing_extensions import Annotated
19
+
20
+ from pydantic import Field, StrictBytes, StrictStr
21
+ from typing import Any, Dict, Optional, Tuple, Union
22
+ from typing_extensions import Annotated
23
+ from factpulse.models.convert_resume_request import ConvertResumeRequest
24
+ from factpulse.models.convert_success_response import ConvertSuccessResponse
25
+
26
+ from factpulse.api_client import ApiClient, RequestSerialized
27
+ from factpulse.api_response import ApiResponse
28
+ from factpulse.rest import RESTResponseType
29
+
30
+
31
+ class DocumentConversionApi:
32
+ """NOTE: This class is auto generated by OpenAPI Generator
33
+ Ref: https://openapi-generator.tech
34
+
35
+ Do not edit the class manually.
36
+ """
37
+
38
+ def __init__(self, api_client=None) -> None:
39
+ if api_client is None:
40
+ api_client = ApiClient.get_default()
41
+ self.api_client = api_client
42
+
43
+
44
+ @validate_call
45
+ def convert_document_async_api_v1_convert_async_post(
46
+ self,
47
+ file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="Document à convertir (PDF, DOCX, XLSX, JPG, PNG)")],
48
+ output: Annotated[Optional[StrictStr], Field(description="Format de sortie: pdf, xml, both")] = None,
49
+ callback_url: Optional[StrictStr] = None,
50
+ webhook_mode: Annotated[Optional[StrictStr], Field(description="Mode de livraison du contenu: 'inline' (base64 dans webhook) ou 'download_url' (URL temporaire 1h)")] = None,
51
+ _request_timeout: Union[
52
+ None,
53
+ Annotated[StrictFloat, Field(gt=0)],
54
+ Tuple[
55
+ Annotated[StrictFloat, Field(gt=0)],
56
+ Annotated[StrictFloat, Field(gt=0)]
57
+ ]
58
+ ] = None,
59
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
60
+ _content_type: Optional[StrictStr] = None,
61
+ _headers: Optional[Dict[StrictStr, Any]] = None,
62
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
63
+ ) -> object:
64
+ """Convertir un document en Factur-X (mode asynchrone)
65
+
66
+ Lance une conversion asynchrone via Celery. ## Workflow 1. **Upload** : Le document est envoyé en multipart/form-data 2. **Task Celery** : La tâche est mise en file d'attente 3. **Callback** : Notification par webhook à la fin ## Réponses possibles - **202** : Tâche acceptée, en cours de traitement - **400** : Fichier invalide
67
+
68
+ :param file: Document à convertir (PDF, DOCX, XLSX, JPG, PNG) (required)
69
+ :type file: bytearray
70
+ :param output: Format de sortie: pdf, xml, both
71
+ :type output: str
72
+ :param callback_url:
73
+ :type callback_url: str
74
+ :param webhook_mode: Mode de livraison du contenu: 'inline' (base64 dans webhook) ou 'download_url' (URL temporaire 1h)
75
+ :type webhook_mode: str
76
+ :param _request_timeout: timeout setting for this request. If one
77
+ number provided, it will be total request
78
+ timeout. It can also be a pair (tuple) of
79
+ (connection, read) timeouts.
80
+ :type _request_timeout: int, tuple(int, int), optional
81
+ :param _request_auth: set to override the auth_settings for an a single
82
+ request; this effectively ignores the
83
+ authentication in the spec for a single request.
84
+ :type _request_auth: dict, optional
85
+ :param _content_type: force content-type for the request.
86
+ :type _content_type: str, Optional
87
+ :param _headers: set to override the headers for a single
88
+ request; this effectively ignores the headers
89
+ in the spec for a single request.
90
+ :type _headers: dict, optional
91
+ :param _host_index: set to override the host_index for a single
92
+ request; this effectively ignores the host_index
93
+ in the spec for a single request.
94
+ :type _host_index: int, optional
95
+ :return: Returns the result object.
96
+ """ # noqa: E501
97
+
98
+ _param = self._convert_document_async_api_v1_convert_async_post_serialize(
99
+ file=file,
100
+ output=output,
101
+ callback_url=callback_url,
102
+ webhook_mode=webhook_mode,
103
+ _request_auth=_request_auth,
104
+ _content_type=_content_type,
105
+ _headers=_headers,
106
+ _host_index=_host_index
107
+ )
108
+
109
+ _response_types_map: Dict[str, Optional[str]] = {
110
+ '200': "object",
111
+ '202': None,
112
+ '400': None,
113
+ '422': "HTTPValidationError",
114
+ '401': "APIError",
115
+ }
116
+ response_data = self.api_client.call_api(
117
+ *_param,
118
+ _request_timeout=_request_timeout
119
+ )
120
+ response_data.read()
121
+ return self.api_client.response_deserialize(
122
+ response_data=response_data,
123
+ response_types_map=_response_types_map,
124
+ ).data
125
+
126
+
127
+ @validate_call
128
+ def convert_document_async_api_v1_convert_async_post_with_http_info(
129
+ self,
130
+ file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="Document à convertir (PDF, DOCX, XLSX, JPG, PNG)")],
131
+ output: Annotated[Optional[StrictStr], Field(description="Format de sortie: pdf, xml, both")] = None,
132
+ callback_url: Optional[StrictStr] = None,
133
+ webhook_mode: Annotated[Optional[StrictStr], Field(description="Mode de livraison du contenu: 'inline' (base64 dans webhook) ou 'download_url' (URL temporaire 1h)")] = None,
134
+ _request_timeout: Union[
135
+ None,
136
+ Annotated[StrictFloat, Field(gt=0)],
137
+ Tuple[
138
+ Annotated[StrictFloat, Field(gt=0)],
139
+ Annotated[StrictFloat, Field(gt=0)]
140
+ ]
141
+ ] = None,
142
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
143
+ _content_type: Optional[StrictStr] = None,
144
+ _headers: Optional[Dict[StrictStr, Any]] = None,
145
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
146
+ ) -> ApiResponse[object]:
147
+ """Convertir un document en Factur-X (mode asynchrone)
148
+
149
+ Lance une conversion asynchrone via Celery. ## Workflow 1. **Upload** : Le document est envoyé en multipart/form-data 2. **Task Celery** : La tâche est mise en file d'attente 3. **Callback** : Notification par webhook à la fin ## Réponses possibles - **202** : Tâche acceptée, en cours de traitement - **400** : Fichier invalide
150
+
151
+ :param file: Document à convertir (PDF, DOCX, XLSX, JPG, PNG) (required)
152
+ :type file: bytearray
153
+ :param output: Format de sortie: pdf, xml, both
154
+ :type output: str
155
+ :param callback_url:
156
+ :type callback_url: str
157
+ :param webhook_mode: Mode de livraison du contenu: 'inline' (base64 dans webhook) ou 'download_url' (URL temporaire 1h)
158
+ :type webhook_mode: str
159
+ :param _request_timeout: timeout setting for this request. If one
160
+ number provided, it will be total request
161
+ timeout. It can also be a pair (tuple) of
162
+ (connection, read) timeouts.
163
+ :type _request_timeout: int, tuple(int, int), optional
164
+ :param _request_auth: set to override the auth_settings for an a single
165
+ request; this effectively ignores the
166
+ authentication in the spec for a single request.
167
+ :type _request_auth: dict, optional
168
+ :param _content_type: force content-type for the request.
169
+ :type _content_type: str, Optional
170
+ :param _headers: set to override the headers for a single
171
+ request; this effectively ignores the headers
172
+ in the spec for a single request.
173
+ :type _headers: dict, optional
174
+ :param _host_index: set to override the host_index for a single
175
+ request; this effectively ignores the host_index
176
+ in the spec for a single request.
177
+ :type _host_index: int, optional
178
+ :return: Returns the result object.
179
+ """ # noqa: E501
180
+
181
+ _param = self._convert_document_async_api_v1_convert_async_post_serialize(
182
+ file=file,
183
+ output=output,
184
+ callback_url=callback_url,
185
+ webhook_mode=webhook_mode,
186
+ _request_auth=_request_auth,
187
+ _content_type=_content_type,
188
+ _headers=_headers,
189
+ _host_index=_host_index
190
+ )
191
+
192
+ _response_types_map: Dict[str, Optional[str]] = {
193
+ '200': "object",
194
+ '202': None,
195
+ '400': None,
196
+ '422': "HTTPValidationError",
197
+ '401': "APIError",
198
+ }
199
+ response_data = self.api_client.call_api(
200
+ *_param,
201
+ _request_timeout=_request_timeout
202
+ )
203
+ response_data.read()
204
+ return self.api_client.response_deserialize(
205
+ response_data=response_data,
206
+ response_types_map=_response_types_map,
207
+ )
208
+
209
+
210
+ @validate_call
211
+ def convert_document_async_api_v1_convert_async_post_without_preload_content(
212
+ self,
213
+ file: Annotated[Union[StrictBytes, StrictStr, Tuple[StrictStr, StrictBytes]], Field(description="Document à convertir (PDF, DOCX, XLSX, JPG, PNG)")],
214
+ output: Annotated[Optional[StrictStr], Field(description="Format de sortie: pdf, xml, both")] = None,
215
+ callback_url: Optional[StrictStr] = None,
216
+ webhook_mode: Annotated[Optional[StrictStr], Field(description="Mode de livraison du contenu: 'inline' (base64 dans webhook) ou 'download_url' (URL temporaire 1h)")] = None,
217
+ _request_timeout: Union[
218
+ None,
219
+ Annotated[StrictFloat, Field(gt=0)],
220
+ Tuple[
221
+ Annotated[StrictFloat, Field(gt=0)],
222
+ Annotated[StrictFloat, Field(gt=0)]
223
+ ]
224
+ ] = None,
225
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
226
+ _content_type: Optional[StrictStr] = None,
227
+ _headers: Optional[Dict[StrictStr, Any]] = None,
228
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
229
+ ) -> RESTResponseType:
230
+ """Convertir un document en Factur-X (mode asynchrone)
231
+
232
+ Lance une conversion asynchrone via Celery. ## Workflow 1. **Upload** : Le document est envoyé en multipart/form-data 2. **Task Celery** : La tâche est mise en file d'attente 3. **Callback** : Notification par webhook à la fin ## Réponses possibles - **202** : Tâche acceptée, en cours de traitement - **400** : Fichier invalide
233
+
234
+ :param file: Document à convertir (PDF, DOCX, XLSX, JPG, PNG) (required)
235
+ :type file: bytearray
236
+ :param output: Format de sortie: pdf, xml, both
237
+ :type output: str
238
+ :param callback_url:
239
+ :type callback_url: str
240
+ :param webhook_mode: Mode de livraison du contenu: 'inline' (base64 dans webhook) ou 'download_url' (URL temporaire 1h)
241
+ :type webhook_mode: str
242
+ :param _request_timeout: timeout setting for this request. If one
243
+ number provided, it will be total request
244
+ timeout. It can also be a pair (tuple) of
245
+ (connection, read) timeouts.
246
+ :type _request_timeout: int, tuple(int, int), optional
247
+ :param _request_auth: set to override the auth_settings for an a single
248
+ request; this effectively ignores the
249
+ authentication in the spec for a single request.
250
+ :type _request_auth: dict, optional
251
+ :param _content_type: force content-type for the request.
252
+ :type _content_type: str, Optional
253
+ :param _headers: set to override the headers for a single
254
+ request; this effectively ignores the headers
255
+ in the spec for a single request.
256
+ :type _headers: dict, optional
257
+ :param _host_index: set to override the host_index for a single
258
+ request; this effectively ignores the host_index
259
+ in the spec for a single request.
260
+ :type _host_index: int, optional
261
+ :return: Returns the result object.
262
+ """ # noqa: E501
263
+
264
+ _param = self._convert_document_async_api_v1_convert_async_post_serialize(
265
+ file=file,
266
+ output=output,
267
+ callback_url=callback_url,
268
+ webhook_mode=webhook_mode,
269
+ _request_auth=_request_auth,
270
+ _content_type=_content_type,
271
+ _headers=_headers,
272
+ _host_index=_host_index
273
+ )
274
+
275
+ _response_types_map: Dict[str, Optional[str]] = {
276
+ '200': "object",
277
+ '202': None,
278
+ '400': None,
279
+ '422': "HTTPValidationError",
280
+ '401': "APIError",
281
+ }
282
+ response_data = self.api_client.call_api(
283
+ *_param,
284
+ _request_timeout=_request_timeout
285
+ )
286
+ return response_data.response
287
+
288
+
289
+ def _convert_document_async_api_v1_convert_async_post_serialize(
290
+ self,
291
+ file,
292
+ output,
293
+ callback_url,
294
+ webhook_mode,
295
+ _request_auth,
296
+ _content_type,
297
+ _headers,
298
+ _host_index,
299
+ ) -> RequestSerialized:
300
+
301
+ _host = None
302
+
303
+ _collection_formats: Dict[str, str] = {
304
+ }
305
+
306
+ _path_params: Dict[str, str] = {}
307
+ _query_params: List[Tuple[str, str]] = []
308
+ _header_params: Dict[str, Optional[str]] = _headers or {}
309
+ _form_params: List[Tuple[str, str]] = []
310
+ _files: Dict[
311
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
312
+ ] = {}
313
+ _body_params: Optional[bytes] = None
314
+
315
+ # process the path parameters
316
+ # process the query parameters
317
+ # process the header parameters
318
+ # process the form parameters
319
+ if file is not None:
320
+ _files['file'] = file
321
+ if output is not None:
322
+ _form_params.append(('output', output))
323
+ if callback_url is not None:
324
+ _form_params.append(('callback_url', callback_url))
325
+ if webhook_mode is not None:
326
+ _form_params.append(('webhook_mode', webhook_mode))
327
+ # process the body parameter
328
+
329
+
330
+ # set the HTTP header `Accept`
331
+ if 'Accept' not in _header_params:
332
+ _header_params['Accept'] = self.api_client.select_header_accept(
333
+ [
334
+ 'application/json'
335
+ ]
336
+ )
337
+
338
+ # set the HTTP header `Content-Type`
339
+ if _content_type:
340
+ _header_params['Content-Type'] = _content_type
341
+ else:
342
+ _default_content_type = (
343
+ self.api_client.select_header_content_type(
344
+ [
345
+ 'multipart/form-data'
346
+ ]
347
+ )
348
+ )
349
+ if _default_content_type is not None:
350
+ _header_params['Content-Type'] = _default_content_type
351
+
352
+ # authentication setting
353
+ _auth_settings: List[str] = [
354
+ 'HTTPBearer'
355
+ ]
356
+
357
+ return self.api_client.param_serialize(
358
+ method='POST',
359
+ resource_path='/api/v1/convert/async',
360
+ path_params=_path_params,
361
+ query_params=_query_params,
362
+ header_params=_header_params,
363
+ body=_body_params,
364
+ post_params=_form_params,
365
+ files=_files,
366
+ auth_settings=_auth_settings,
367
+ collection_formats=_collection_formats,
368
+ _host=_host,
369
+ _request_auth=_request_auth
370
+ )
371
+
372
+
373
+
374
+
375
+ @validate_call
376
+ def download_file_api_v1_convert_conversion_id_download_filename_get(
377
+ self,
378
+ conversion_id: Annotated[StrictStr, Field(description="Conversion ID returned by POST /convert (UUID format)")],
379
+ filename: Annotated[StrictStr, Field(description="File to download: 'facturx.pdf' or 'facturx.xml'")],
380
+ _request_timeout: Union[
381
+ None,
382
+ Annotated[StrictFloat, Field(gt=0)],
383
+ Tuple[
384
+ Annotated[StrictFloat, Field(gt=0)],
385
+ Annotated[StrictFloat, Field(gt=0)]
386
+ ]
387
+ ] = None,
388
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
389
+ _content_type: Optional[StrictStr] = None,
390
+ _headers: Optional[Dict[StrictStr, Any]] = None,
391
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
392
+ ) -> object:
393
+ """Télécharger un fichier généré
394
+
395
+ Télécharge le fichier Factur-X PDF ou XML généré. ## Fichiers disponibles - `facturx.pdf` : PDF/A-3 avec XML embarqué - `facturx.xml` : XML CII seul (Cross Industry Invoice) Les fichiers sont disponibles pendant 24 heures après génération.
396
+
397
+ :param conversion_id: Conversion ID returned by POST /convert (UUID format) (required)
398
+ :type conversion_id: str
399
+ :param filename: File to download: 'facturx.pdf' or 'facturx.xml' (required)
400
+ :type filename: str
401
+ :param _request_timeout: timeout setting for this request. If one
402
+ number provided, it will be total request
403
+ timeout. It can also be a pair (tuple) of
404
+ (connection, read) timeouts.
405
+ :type _request_timeout: int, tuple(int, int), optional
406
+ :param _request_auth: set to override the auth_settings for an a single
407
+ request; this effectively ignores the
408
+ authentication in the spec for a single request.
409
+ :type _request_auth: dict, optional
410
+ :param _content_type: force content-type for the request.
411
+ :type _content_type: str, Optional
412
+ :param _headers: set to override the headers for a single
413
+ request; this effectively ignores the headers
414
+ in the spec for a single request.
415
+ :type _headers: dict, optional
416
+ :param _host_index: set to override the host_index for a single
417
+ request; this effectively ignores the host_index
418
+ in the spec for a single request.
419
+ :type _host_index: int, optional
420
+ :return: Returns the result object.
421
+ """ # noqa: E501
422
+
423
+ _param = self._download_file_api_v1_convert_conversion_id_download_filename_get_serialize(
424
+ conversion_id=conversion_id,
425
+ filename=filename,
426
+ _request_auth=_request_auth,
427
+ _content_type=_content_type,
428
+ _headers=_headers,
429
+ _host_index=_host_index
430
+ )
431
+
432
+ _response_types_map: Dict[str, Optional[str]] = {
433
+ '200': "object",
434
+ '404': None,
435
+ '422': "HTTPValidationError",
436
+ '401': "APIError",
437
+ }
438
+ response_data = self.api_client.call_api(
439
+ *_param,
440
+ _request_timeout=_request_timeout
441
+ )
442
+ response_data.read()
443
+ return self.api_client.response_deserialize(
444
+ response_data=response_data,
445
+ response_types_map=_response_types_map,
446
+ ).data
447
+
448
+
449
+ @validate_call
450
+ def download_file_api_v1_convert_conversion_id_download_filename_get_with_http_info(
451
+ self,
452
+ conversion_id: Annotated[StrictStr, Field(description="Conversion ID returned by POST /convert (UUID format)")],
453
+ filename: Annotated[StrictStr, Field(description="File to download: 'facturx.pdf' or 'facturx.xml'")],
454
+ _request_timeout: Union[
455
+ None,
456
+ Annotated[StrictFloat, Field(gt=0)],
457
+ Tuple[
458
+ Annotated[StrictFloat, Field(gt=0)],
459
+ Annotated[StrictFloat, Field(gt=0)]
460
+ ]
461
+ ] = None,
462
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
463
+ _content_type: Optional[StrictStr] = None,
464
+ _headers: Optional[Dict[StrictStr, Any]] = None,
465
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
466
+ ) -> ApiResponse[object]:
467
+ """Télécharger un fichier généré
468
+
469
+ Télécharge le fichier Factur-X PDF ou XML généré. ## Fichiers disponibles - `facturx.pdf` : PDF/A-3 avec XML embarqué - `facturx.xml` : XML CII seul (Cross Industry Invoice) Les fichiers sont disponibles pendant 24 heures après génération.
470
+
471
+ :param conversion_id: Conversion ID returned by POST /convert (UUID format) (required)
472
+ :type conversion_id: str
473
+ :param filename: File to download: 'facturx.pdf' or 'facturx.xml' (required)
474
+ :type filename: str
475
+ :param _request_timeout: timeout setting for this request. If one
476
+ number provided, it will be total request
477
+ timeout. It can also be a pair (tuple) of
478
+ (connection, read) timeouts.
479
+ :type _request_timeout: int, tuple(int, int), optional
480
+ :param _request_auth: set to override the auth_settings for an a single
481
+ request; this effectively ignores the
482
+ authentication in the spec for a single request.
483
+ :type _request_auth: dict, optional
484
+ :param _content_type: force content-type for the request.
485
+ :type _content_type: str, Optional
486
+ :param _headers: set to override the headers for a single
487
+ request; this effectively ignores the headers
488
+ in the spec for a single request.
489
+ :type _headers: dict, optional
490
+ :param _host_index: set to override the host_index for a single
491
+ request; this effectively ignores the host_index
492
+ in the spec for a single request.
493
+ :type _host_index: int, optional
494
+ :return: Returns the result object.
495
+ """ # noqa: E501
496
+
497
+ _param = self._download_file_api_v1_convert_conversion_id_download_filename_get_serialize(
498
+ conversion_id=conversion_id,
499
+ filename=filename,
500
+ _request_auth=_request_auth,
501
+ _content_type=_content_type,
502
+ _headers=_headers,
503
+ _host_index=_host_index
504
+ )
505
+
506
+ _response_types_map: Dict[str, Optional[str]] = {
507
+ '200': "object",
508
+ '404': None,
509
+ '422': "HTTPValidationError",
510
+ '401': "APIError",
511
+ }
512
+ response_data = self.api_client.call_api(
513
+ *_param,
514
+ _request_timeout=_request_timeout
515
+ )
516
+ response_data.read()
517
+ return self.api_client.response_deserialize(
518
+ response_data=response_data,
519
+ response_types_map=_response_types_map,
520
+ )
521
+
522
+
523
+ @validate_call
524
+ def download_file_api_v1_convert_conversion_id_download_filename_get_without_preload_content(
525
+ self,
526
+ conversion_id: Annotated[StrictStr, Field(description="Conversion ID returned by POST /convert (UUID format)")],
527
+ filename: Annotated[StrictStr, Field(description="File to download: 'facturx.pdf' or 'facturx.xml'")],
528
+ _request_timeout: Union[
529
+ None,
530
+ Annotated[StrictFloat, Field(gt=0)],
531
+ Tuple[
532
+ Annotated[StrictFloat, Field(gt=0)],
533
+ Annotated[StrictFloat, Field(gt=0)]
534
+ ]
535
+ ] = None,
536
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
537
+ _content_type: Optional[StrictStr] = None,
538
+ _headers: Optional[Dict[StrictStr, Any]] = None,
539
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
540
+ ) -> RESTResponseType:
541
+ """Télécharger un fichier généré
542
+
543
+ Télécharge le fichier Factur-X PDF ou XML généré. ## Fichiers disponibles - `facturx.pdf` : PDF/A-3 avec XML embarqué - `facturx.xml` : XML CII seul (Cross Industry Invoice) Les fichiers sont disponibles pendant 24 heures après génération.
544
+
545
+ :param conversion_id: Conversion ID returned by POST /convert (UUID format) (required)
546
+ :type conversion_id: str
547
+ :param filename: File to download: 'facturx.pdf' or 'facturx.xml' (required)
548
+ :type filename: str
549
+ :param _request_timeout: timeout setting for this request. If one
550
+ number provided, it will be total request
551
+ timeout. It can also be a pair (tuple) of
552
+ (connection, read) timeouts.
553
+ :type _request_timeout: int, tuple(int, int), optional
554
+ :param _request_auth: set to override the auth_settings for an a single
555
+ request; this effectively ignores the
556
+ authentication in the spec for a single request.
557
+ :type _request_auth: dict, optional
558
+ :param _content_type: force content-type for the request.
559
+ :type _content_type: str, Optional
560
+ :param _headers: set to override the headers for a single
561
+ request; this effectively ignores the headers
562
+ in the spec for a single request.
563
+ :type _headers: dict, optional
564
+ :param _host_index: set to override the host_index for a single
565
+ request; this effectively ignores the host_index
566
+ in the spec for a single request.
567
+ :type _host_index: int, optional
568
+ :return: Returns the result object.
569
+ """ # noqa: E501
570
+
571
+ _param = self._download_file_api_v1_convert_conversion_id_download_filename_get_serialize(
572
+ conversion_id=conversion_id,
573
+ filename=filename,
574
+ _request_auth=_request_auth,
575
+ _content_type=_content_type,
576
+ _headers=_headers,
577
+ _host_index=_host_index
578
+ )
579
+
580
+ _response_types_map: Dict[str, Optional[str]] = {
581
+ '200': "object",
582
+ '404': None,
583
+ '422': "HTTPValidationError",
584
+ '401': "APIError",
585
+ }
586
+ response_data = self.api_client.call_api(
587
+ *_param,
588
+ _request_timeout=_request_timeout
589
+ )
590
+ return response_data.response
591
+
592
+
593
+ def _download_file_api_v1_convert_conversion_id_download_filename_get_serialize(
594
+ self,
595
+ conversion_id,
596
+ filename,
597
+ _request_auth,
598
+ _content_type,
599
+ _headers,
600
+ _host_index,
601
+ ) -> RequestSerialized:
602
+
603
+ _host = None
604
+
605
+ _collection_formats: Dict[str, str] = {
606
+ }
607
+
608
+ _path_params: Dict[str, str] = {}
609
+ _query_params: List[Tuple[str, str]] = []
610
+ _header_params: Dict[str, Optional[str]] = _headers or {}
611
+ _form_params: List[Tuple[str, str]] = []
612
+ _files: Dict[
613
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
614
+ ] = {}
615
+ _body_params: Optional[bytes] = None
616
+
617
+ # process the path parameters
618
+ if conversion_id is not None:
619
+ _path_params['conversion_id'] = conversion_id
620
+ if filename is not None:
621
+ _path_params['filename'] = filename
622
+ # process the query parameters
623
+ # process the header parameters
624
+ # process the form parameters
625
+ # process the body parameter
626
+
627
+
628
+ # set the HTTP header `Accept`
629
+ if 'Accept' not in _header_params:
630
+ _header_params['Accept'] = self.api_client.select_header_accept(
631
+ [
632
+ 'application/json'
633
+ ]
634
+ )
635
+
636
+
637
+ # authentication setting
638
+ _auth_settings: List[str] = [
639
+ 'HTTPBearer'
640
+ ]
641
+
642
+ return self.api_client.param_serialize(
643
+ method='GET',
644
+ resource_path='/api/v1/convert/{conversion_id}/download/{filename}',
645
+ path_params=_path_params,
646
+ query_params=_query_params,
647
+ header_params=_header_params,
648
+ body=_body_params,
649
+ post_params=_form_params,
650
+ files=_files,
651
+ auth_settings=_auth_settings,
652
+ collection_formats=_collection_formats,
653
+ _host=_host,
654
+ _request_auth=_request_auth
655
+ )
656
+
657
+
658
+
659
+
660
+ @validate_call
661
+ def get_conversion_status_api_v1_convert_conversion_id_status_get(
662
+ self,
663
+ conversion_id: Annotated[StrictStr, Field(description="Conversion ID returned by POST /convert (UUID format)")],
664
+ _request_timeout: Union[
665
+ None,
666
+ Annotated[StrictFloat, Field(gt=0)],
667
+ Tuple[
668
+ Annotated[StrictFloat, Field(gt=0)],
669
+ Annotated[StrictFloat, Field(gt=0)]
670
+ ]
671
+ ] = None,
672
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
673
+ _content_type: Optional[StrictStr] = None,
674
+ _headers: Optional[Dict[StrictStr, Any]] = None,
675
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
676
+ ) -> Dict[str, object]:
677
+ """Vérifier le statut d'une conversion
678
+
679
+ Retourne le statut actuel d'une conversion asynchrone.
680
+
681
+ :param conversion_id: Conversion ID returned by POST /convert (UUID format) (required)
682
+ :type conversion_id: str
683
+ :param _request_timeout: timeout setting for this request. If one
684
+ number provided, it will be total request
685
+ timeout. It can also be a pair (tuple) of
686
+ (connection, read) timeouts.
687
+ :type _request_timeout: int, tuple(int, int), optional
688
+ :param _request_auth: set to override the auth_settings for an a single
689
+ request; this effectively ignores the
690
+ authentication in the spec for a single request.
691
+ :type _request_auth: dict, optional
692
+ :param _content_type: force content-type for the request.
693
+ :type _content_type: str, Optional
694
+ :param _headers: set to override the headers for a single
695
+ request; this effectively ignores the headers
696
+ in the spec for a single request.
697
+ :type _headers: dict, optional
698
+ :param _host_index: set to override the host_index for a single
699
+ request; this effectively ignores the host_index
700
+ in the spec for a single request.
701
+ :type _host_index: int, optional
702
+ :return: Returns the result object.
703
+ """ # noqa: E501
704
+
705
+ _param = self._get_conversion_status_api_v1_convert_conversion_id_status_get_serialize(
706
+ conversion_id=conversion_id,
707
+ _request_auth=_request_auth,
708
+ _content_type=_content_type,
709
+ _headers=_headers,
710
+ _host_index=_host_index
711
+ )
712
+
713
+ _response_types_map: Dict[str, Optional[str]] = {
714
+ '200': "Dict[str, object]",
715
+ '422': "HTTPValidationError",
716
+ '401': "APIError",
717
+ }
718
+ response_data = self.api_client.call_api(
719
+ *_param,
720
+ _request_timeout=_request_timeout
721
+ )
722
+ response_data.read()
723
+ return self.api_client.response_deserialize(
724
+ response_data=response_data,
725
+ response_types_map=_response_types_map,
726
+ ).data
727
+
728
+
729
+ @validate_call
730
+ def get_conversion_status_api_v1_convert_conversion_id_status_get_with_http_info(
731
+ self,
732
+ conversion_id: Annotated[StrictStr, Field(description="Conversion ID returned by POST /convert (UUID format)")],
733
+ _request_timeout: Union[
734
+ None,
735
+ Annotated[StrictFloat, Field(gt=0)],
736
+ Tuple[
737
+ Annotated[StrictFloat, Field(gt=0)],
738
+ Annotated[StrictFloat, Field(gt=0)]
739
+ ]
740
+ ] = None,
741
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
742
+ _content_type: Optional[StrictStr] = None,
743
+ _headers: Optional[Dict[StrictStr, Any]] = None,
744
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
745
+ ) -> ApiResponse[Dict[str, object]]:
746
+ """Vérifier le statut d'une conversion
747
+
748
+ Retourne le statut actuel d'une conversion asynchrone.
749
+
750
+ :param conversion_id: Conversion ID returned by POST /convert (UUID format) (required)
751
+ :type conversion_id: str
752
+ :param _request_timeout: timeout setting for this request. If one
753
+ number provided, it will be total request
754
+ timeout. It can also be a pair (tuple) of
755
+ (connection, read) timeouts.
756
+ :type _request_timeout: int, tuple(int, int), optional
757
+ :param _request_auth: set to override the auth_settings for an a single
758
+ request; this effectively ignores the
759
+ authentication in the spec for a single request.
760
+ :type _request_auth: dict, optional
761
+ :param _content_type: force content-type for the request.
762
+ :type _content_type: str, Optional
763
+ :param _headers: set to override the headers for a single
764
+ request; this effectively ignores the headers
765
+ in the spec for a single request.
766
+ :type _headers: dict, optional
767
+ :param _host_index: set to override the host_index for a single
768
+ request; this effectively ignores the host_index
769
+ in the spec for a single request.
770
+ :type _host_index: int, optional
771
+ :return: Returns the result object.
772
+ """ # noqa: E501
773
+
774
+ _param = self._get_conversion_status_api_v1_convert_conversion_id_status_get_serialize(
775
+ conversion_id=conversion_id,
776
+ _request_auth=_request_auth,
777
+ _content_type=_content_type,
778
+ _headers=_headers,
779
+ _host_index=_host_index
780
+ )
781
+
782
+ _response_types_map: Dict[str, Optional[str]] = {
783
+ '200': "Dict[str, object]",
784
+ '422': "HTTPValidationError",
785
+ '401': "APIError",
786
+ }
787
+ response_data = self.api_client.call_api(
788
+ *_param,
789
+ _request_timeout=_request_timeout
790
+ )
791
+ response_data.read()
792
+ return self.api_client.response_deserialize(
793
+ response_data=response_data,
794
+ response_types_map=_response_types_map,
795
+ )
796
+
797
+
798
+ @validate_call
799
+ def get_conversion_status_api_v1_convert_conversion_id_status_get_without_preload_content(
800
+ self,
801
+ conversion_id: Annotated[StrictStr, Field(description="Conversion ID returned by POST /convert (UUID format)")],
802
+ _request_timeout: Union[
803
+ None,
804
+ Annotated[StrictFloat, Field(gt=0)],
805
+ Tuple[
806
+ Annotated[StrictFloat, Field(gt=0)],
807
+ Annotated[StrictFloat, Field(gt=0)]
808
+ ]
809
+ ] = None,
810
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
811
+ _content_type: Optional[StrictStr] = None,
812
+ _headers: Optional[Dict[StrictStr, Any]] = None,
813
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
814
+ ) -> RESTResponseType:
815
+ """Vérifier le statut d'une conversion
816
+
817
+ Retourne le statut actuel d'une conversion asynchrone.
818
+
819
+ :param conversion_id: Conversion ID returned by POST /convert (UUID format) (required)
820
+ :type conversion_id: str
821
+ :param _request_timeout: timeout setting for this request. If one
822
+ number provided, it will be total request
823
+ timeout. It can also be a pair (tuple) of
824
+ (connection, read) timeouts.
825
+ :type _request_timeout: int, tuple(int, int), optional
826
+ :param _request_auth: set to override the auth_settings for an a single
827
+ request; this effectively ignores the
828
+ authentication in the spec for a single request.
829
+ :type _request_auth: dict, optional
830
+ :param _content_type: force content-type for the request.
831
+ :type _content_type: str, Optional
832
+ :param _headers: set to override the headers for a single
833
+ request; this effectively ignores the headers
834
+ in the spec for a single request.
835
+ :type _headers: dict, optional
836
+ :param _host_index: set to override the host_index for a single
837
+ request; this effectively ignores the host_index
838
+ in the spec for a single request.
839
+ :type _host_index: int, optional
840
+ :return: Returns the result object.
841
+ """ # noqa: E501
842
+
843
+ _param = self._get_conversion_status_api_v1_convert_conversion_id_status_get_serialize(
844
+ conversion_id=conversion_id,
845
+ _request_auth=_request_auth,
846
+ _content_type=_content_type,
847
+ _headers=_headers,
848
+ _host_index=_host_index
849
+ )
850
+
851
+ _response_types_map: Dict[str, Optional[str]] = {
852
+ '200': "Dict[str, object]",
853
+ '422': "HTTPValidationError",
854
+ '401': "APIError",
855
+ }
856
+ response_data = self.api_client.call_api(
857
+ *_param,
858
+ _request_timeout=_request_timeout
859
+ )
860
+ return response_data.response
861
+
862
+
863
+ def _get_conversion_status_api_v1_convert_conversion_id_status_get_serialize(
864
+ self,
865
+ conversion_id,
866
+ _request_auth,
867
+ _content_type,
868
+ _headers,
869
+ _host_index,
870
+ ) -> RequestSerialized:
871
+
872
+ _host = None
873
+
874
+ _collection_formats: Dict[str, str] = {
875
+ }
876
+
877
+ _path_params: Dict[str, str] = {}
878
+ _query_params: List[Tuple[str, str]] = []
879
+ _header_params: Dict[str, Optional[str]] = _headers or {}
880
+ _form_params: List[Tuple[str, str]] = []
881
+ _files: Dict[
882
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
883
+ ] = {}
884
+ _body_params: Optional[bytes] = None
885
+
886
+ # process the path parameters
887
+ if conversion_id is not None:
888
+ _path_params['conversion_id'] = conversion_id
889
+ # process the query parameters
890
+ # process the header parameters
891
+ # process the form parameters
892
+ # process the body parameter
893
+
894
+
895
+ # set the HTTP header `Accept`
896
+ if 'Accept' not in _header_params:
897
+ _header_params['Accept'] = self.api_client.select_header_accept(
898
+ [
899
+ 'application/json'
900
+ ]
901
+ )
902
+
903
+
904
+ # authentication setting
905
+ _auth_settings: List[str] = [
906
+ 'HTTPBearer'
907
+ ]
908
+
909
+ return self.api_client.param_serialize(
910
+ method='GET',
911
+ resource_path='/api/v1/convert/{conversion_id}/status',
912
+ path_params=_path_params,
913
+ query_params=_query_params,
914
+ header_params=_header_params,
915
+ body=_body_params,
916
+ post_params=_form_params,
917
+ files=_files,
918
+ auth_settings=_auth_settings,
919
+ collection_formats=_collection_formats,
920
+ _host=_host,
921
+ _request_auth=_request_auth
922
+ )
923
+
924
+
925
+
926
+
927
+ @validate_call
928
+ def resume_conversion_api_v1_convert_conversion_id_resume_post(
929
+ self,
930
+ conversion_id: Annotated[StrictStr, Field(description="Conversion ID returned by POST /convert (UUID format)")],
931
+ convert_resume_request: ConvertResumeRequest,
932
+ _request_timeout: Union[
933
+ None,
934
+ Annotated[StrictFloat, Field(gt=0)],
935
+ Tuple[
936
+ Annotated[StrictFloat, Field(gt=0)],
937
+ Annotated[StrictFloat, Field(gt=0)]
938
+ ]
939
+ ] = None,
940
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
941
+ _content_type: Optional[StrictStr] = None,
942
+ _headers: Optional[Dict[StrictStr, Any]] = None,
943
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
944
+ ) -> ConvertSuccessResponse:
945
+ """Reprendre une conversion avec corrections
946
+
947
+ Reprend une conversion après complétion des données manquantes ou correction des erreurs. L'extraction OCR est conservée, les données sont mises à jour avec les corrections, puis une nouvelle validation Schematron est effectuée.
948
+
949
+ :param conversion_id: Conversion ID returned by POST /convert (UUID format) (required)
950
+ :type conversion_id: str
951
+ :param convert_resume_request: (required)
952
+ :type convert_resume_request: ConvertResumeRequest
953
+ :param _request_timeout: timeout setting for this request. If one
954
+ number provided, it will be total request
955
+ timeout. It can also be a pair (tuple) of
956
+ (connection, read) timeouts.
957
+ :type _request_timeout: int, tuple(int, int), optional
958
+ :param _request_auth: set to override the auth_settings for an a single
959
+ request; this effectively ignores the
960
+ authentication in the spec for a single request.
961
+ :type _request_auth: dict, optional
962
+ :param _content_type: force content-type for the request.
963
+ :type _content_type: str, Optional
964
+ :param _headers: set to override the headers for a single
965
+ request; this effectively ignores the headers
966
+ in the spec for a single request.
967
+ :type _headers: dict, optional
968
+ :param _host_index: set to override the host_index for a single
969
+ request; this effectively ignores the host_index
970
+ in the spec for a single request.
971
+ :type _host_index: int, optional
972
+ :return: Returns the result object.
973
+ """ # noqa: E501
974
+
975
+ _param = self._resume_conversion_api_v1_convert_conversion_id_resume_post_serialize(
976
+ conversion_id=conversion_id,
977
+ convert_resume_request=convert_resume_request,
978
+ _request_auth=_request_auth,
979
+ _content_type=_content_type,
980
+ _headers=_headers,
981
+ _host_index=_host_index
982
+ )
983
+
984
+ _response_types_map: Dict[str, Optional[str]] = {
985
+ '200': "ConvertSuccessResponse",
986
+ '404': None,
987
+ '422': "ConvertValidationFailedResponse",
988
+ '401': "APIError",
989
+ }
990
+ response_data = self.api_client.call_api(
991
+ *_param,
992
+ _request_timeout=_request_timeout
993
+ )
994
+ response_data.read()
995
+ return self.api_client.response_deserialize(
996
+ response_data=response_data,
997
+ response_types_map=_response_types_map,
998
+ ).data
999
+
1000
+
1001
+ @validate_call
1002
+ def resume_conversion_api_v1_convert_conversion_id_resume_post_with_http_info(
1003
+ self,
1004
+ conversion_id: Annotated[StrictStr, Field(description="Conversion ID returned by POST /convert (UUID format)")],
1005
+ convert_resume_request: ConvertResumeRequest,
1006
+ _request_timeout: Union[
1007
+ None,
1008
+ Annotated[StrictFloat, Field(gt=0)],
1009
+ Tuple[
1010
+ Annotated[StrictFloat, Field(gt=0)],
1011
+ Annotated[StrictFloat, Field(gt=0)]
1012
+ ]
1013
+ ] = None,
1014
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1015
+ _content_type: Optional[StrictStr] = None,
1016
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1017
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1018
+ ) -> ApiResponse[ConvertSuccessResponse]:
1019
+ """Reprendre une conversion avec corrections
1020
+
1021
+ Reprend une conversion après complétion des données manquantes ou correction des erreurs. L'extraction OCR est conservée, les données sont mises à jour avec les corrections, puis une nouvelle validation Schematron est effectuée.
1022
+
1023
+ :param conversion_id: Conversion ID returned by POST /convert (UUID format) (required)
1024
+ :type conversion_id: str
1025
+ :param convert_resume_request: (required)
1026
+ :type convert_resume_request: ConvertResumeRequest
1027
+ :param _request_timeout: timeout setting for this request. If one
1028
+ number provided, it will be total request
1029
+ timeout. It can also be a pair (tuple) of
1030
+ (connection, read) timeouts.
1031
+ :type _request_timeout: int, tuple(int, int), optional
1032
+ :param _request_auth: set to override the auth_settings for an a single
1033
+ request; this effectively ignores the
1034
+ authentication in the spec for a single request.
1035
+ :type _request_auth: dict, optional
1036
+ :param _content_type: force content-type for the request.
1037
+ :type _content_type: str, Optional
1038
+ :param _headers: set to override the headers for a single
1039
+ request; this effectively ignores the headers
1040
+ in the spec for a single request.
1041
+ :type _headers: dict, optional
1042
+ :param _host_index: set to override the host_index for a single
1043
+ request; this effectively ignores the host_index
1044
+ in the spec for a single request.
1045
+ :type _host_index: int, optional
1046
+ :return: Returns the result object.
1047
+ """ # noqa: E501
1048
+
1049
+ _param = self._resume_conversion_api_v1_convert_conversion_id_resume_post_serialize(
1050
+ conversion_id=conversion_id,
1051
+ convert_resume_request=convert_resume_request,
1052
+ _request_auth=_request_auth,
1053
+ _content_type=_content_type,
1054
+ _headers=_headers,
1055
+ _host_index=_host_index
1056
+ )
1057
+
1058
+ _response_types_map: Dict[str, Optional[str]] = {
1059
+ '200': "ConvertSuccessResponse",
1060
+ '404': None,
1061
+ '422': "ConvertValidationFailedResponse",
1062
+ '401': "APIError",
1063
+ }
1064
+ response_data = self.api_client.call_api(
1065
+ *_param,
1066
+ _request_timeout=_request_timeout
1067
+ )
1068
+ response_data.read()
1069
+ return self.api_client.response_deserialize(
1070
+ response_data=response_data,
1071
+ response_types_map=_response_types_map,
1072
+ )
1073
+
1074
+
1075
+ @validate_call
1076
+ def resume_conversion_api_v1_convert_conversion_id_resume_post_without_preload_content(
1077
+ self,
1078
+ conversion_id: Annotated[StrictStr, Field(description="Conversion ID returned by POST /convert (UUID format)")],
1079
+ convert_resume_request: ConvertResumeRequest,
1080
+ _request_timeout: Union[
1081
+ None,
1082
+ Annotated[StrictFloat, Field(gt=0)],
1083
+ Tuple[
1084
+ Annotated[StrictFloat, Field(gt=0)],
1085
+ Annotated[StrictFloat, Field(gt=0)]
1086
+ ]
1087
+ ] = None,
1088
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1089
+ _content_type: Optional[StrictStr] = None,
1090
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1091
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1092
+ ) -> RESTResponseType:
1093
+ """Reprendre une conversion avec corrections
1094
+
1095
+ Reprend une conversion après complétion des données manquantes ou correction des erreurs. L'extraction OCR est conservée, les données sont mises à jour avec les corrections, puis une nouvelle validation Schematron est effectuée.
1096
+
1097
+ :param conversion_id: Conversion ID returned by POST /convert (UUID format) (required)
1098
+ :type conversion_id: str
1099
+ :param convert_resume_request: (required)
1100
+ :type convert_resume_request: ConvertResumeRequest
1101
+ :param _request_timeout: timeout setting for this request. If one
1102
+ number provided, it will be total request
1103
+ timeout. It can also be a pair (tuple) of
1104
+ (connection, read) timeouts.
1105
+ :type _request_timeout: int, tuple(int, int), optional
1106
+ :param _request_auth: set to override the auth_settings for an a single
1107
+ request; this effectively ignores the
1108
+ authentication in the spec for a single request.
1109
+ :type _request_auth: dict, optional
1110
+ :param _content_type: force content-type for the request.
1111
+ :type _content_type: str, Optional
1112
+ :param _headers: set to override the headers for a single
1113
+ request; this effectively ignores the headers
1114
+ in the spec for a single request.
1115
+ :type _headers: dict, optional
1116
+ :param _host_index: set to override the host_index for a single
1117
+ request; this effectively ignores the host_index
1118
+ in the spec for a single request.
1119
+ :type _host_index: int, optional
1120
+ :return: Returns the result object.
1121
+ """ # noqa: E501
1122
+
1123
+ _param = self._resume_conversion_api_v1_convert_conversion_id_resume_post_serialize(
1124
+ conversion_id=conversion_id,
1125
+ convert_resume_request=convert_resume_request,
1126
+ _request_auth=_request_auth,
1127
+ _content_type=_content_type,
1128
+ _headers=_headers,
1129
+ _host_index=_host_index
1130
+ )
1131
+
1132
+ _response_types_map: Dict[str, Optional[str]] = {
1133
+ '200': "ConvertSuccessResponse",
1134
+ '404': None,
1135
+ '422': "ConvertValidationFailedResponse",
1136
+ '401': "APIError",
1137
+ }
1138
+ response_data = self.api_client.call_api(
1139
+ *_param,
1140
+ _request_timeout=_request_timeout
1141
+ )
1142
+ return response_data.response
1143
+
1144
+
1145
+ def _resume_conversion_api_v1_convert_conversion_id_resume_post_serialize(
1146
+ self,
1147
+ conversion_id,
1148
+ convert_resume_request,
1149
+ _request_auth,
1150
+ _content_type,
1151
+ _headers,
1152
+ _host_index,
1153
+ ) -> RequestSerialized:
1154
+
1155
+ _host = None
1156
+
1157
+ _collection_formats: Dict[str, str] = {
1158
+ }
1159
+
1160
+ _path_params: Dict[str, str] = {}
1161
+ _query_params: List[Tuple[str, str]] = []
1162
+ _header_params: Dict[str, Optional[str]] = _headers or {}
1163
+ _form_params: List[Tuple[str, str]] = []
1164
+ _files: Dict[
1165
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
1166
+ ] = {}
1167
+ _body_params: Optional[bytes] = None
1168
+
1169
+ # process the path parameters
1170
+ if conversion_id is not None:
1171
+ _path_params['conversion_id'] = conversion_id
1172
+ # process the query parameters
1173
+ # process the header parameters
1174
+ # process the form parameters
1175
+ # process the body parameter
1176
+ if convert_resume_request is not None:
1177
+ _body_params = convert_resume_request
1178
+
1179
+
1180
+ # set the HTTP header `Accept`
1181
+ if 'Accept' not in _header_params:
1182
+ _header_params['Accept'] = self.api_client.select_header_accept(
1183
+ [
1184
+ 'application/json'
1185
+ ]
1186
+ )
1187
+
1188
+ # set the HTTP header `Content-Type`
1189
+ if _content_type:
1190
+ _header_params['Content-Type'] = _content_type
1191
+ else:
1192
+ _default_content_type = (
1193
+ self.api_client.select_header_content_type(
1194
+ [
1195
+ 'application/json'
1196
+ ]
1197
+ )
1198
+ )
1199
+ if _default_content_type is not None:
1200
+ _header_params['Content-Type'] = _default_content_type
1201
+
1202
+ # authentication setting
1203
+ _auth_settings: List[str] = [
1204
+ 'HTTPBearer'
1205
+ ]
1206
+
1207
+ return self.api_client.param_serialize(
1208
+ method='POST',
1209
+ resource_path='/api/v1/convert/{conversion_id}/resume',
1210
+ path_params=_path_params,
1211
+ query_params=_query_params,
1212
+ header_params=_header_params,
1213
+ body=_body_params,
1214
+ post_params=_form_params,
1215
+ files=_files,
1216
+ auth_settings=_auth_settings,
1217
+ collection_formats=_collection_formats,
1218
+ _host=_host,
1219
+ _request_auth=_request_auth
1220
+ )
1221
+
1222
+