factpulse 3.0.9 → 3.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (476) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -3
  3. data/Gemfile.lock +3 -3
  4. data/LICENSE +1 -1
  5. data/docs/AFNORAcknowledgement.md +20 -0
  6. data/docs/AFNORAcknowledgementDetail.md +24 -0
  7. data/docs/AFNORAddressEdit.md +30 -0
  8. data/docs/AFNORAddressPatch.md +30 -0
  9. data/docs/AFNORAddressPut.md +30 -0
  10. data/docs/AFNORAddressRead.md +32 -0
  11. data/docs/{ValidationErrorLocInner.md → AFNORAlgorithm.md} +2 -2
  12. data/docs/AFNORContainsOperator.md +15 -0
  13. data/docs/AFNORCreateDirectoryLineBody.md +20 -0
  14. data/docs/AFNORCreateDirectoryLineBodyAddressingInformation.md +24 -0
  15. data/docs/AFNORCreateDirectoryLineBodyPeriod.md +20 -0
  16. data/docs/AFNORCreateRoutingCodeBody.md +32 -0
  17. data/docs/AFNORDestination.md +4 -2
  18. data/docs/AFNORDiffusionStatus.md +15 -0
  19. data/docs/AFNORDirectoryLineField.md +15 -0
  20. data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCode.md +32 -0
  21. data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCodePlatform.md +20 -0
  22. data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCodeRoutingCode.md +28 -0
  23. data/docs/AFNORDirectoryLinePost201Response.md +22 -0
  24. data/docs/AFNORDirectoryLineSearchPost200Response.md +22 -0
  25. data/docs/AFNOREntityType.md +15 -0
  26. data/docs/AFNORError.md +26 -0
  27. data/docs/AFNORFacilityAdministrativeStatus.md +15 -0
  28. data/docs/AFNORFacilityNature.md +15 -0
  29. data/docs/AFNORFacilityPayloadHistory.md +34 -0
  30. data/docs/AFNORFacilityPayloadHistoryUleB2gAdditionalData.md +28 -0
  31. data/docs/AFNORFacilityPayloadIncluded.md +32 -0
  32. data/docs/AFNORFacilityType.md +15 -0
  33. data/docs/AFNORFlow.md +38 -0
  34. data/docs/AFNORFlowAckStatus.md +15 -0
  35. data/docs/AFNORFlowDirection.md +15 -0
  36. data/docs/AFNORFlowInfo.md +28 -0
  37. data/docs/AFNORFlowProfile.md +15 -0
  38. data/docs/AFNORFlowSyntax.md +15 -0
  39. data/docs/AFNORFlowType.md +15 -0
  40. data/docs/AFNORFullFlowInfo.md +32 -0
  41. data/docs/AFNORLegalUnitAdministrativeStatus.md +15 -0
  42. data/docs/AFNORLegalUnitPayloadHistory.md +24 -0
  43. data/docs/AFNORLegalUnitPayloadIncluded.md +24 -0
  44. data/docs/AFNORLegalUnitPayloadIncludedNoSiren.md +22 -0
  45. data/docs/AFNORPDPPAApi.md +5 -5
  46. data/docs/AFNORPDPPADirectoryServiceApi.md +278 -178
  47. data/docs/AFNORPDPPAFlowServiceApi.md +39 -27
  48. data/docs/AFNORPlatformStatus.md +15 -0
  49. data/docs/AFNORProcessingRule.md +15 -0
  50. data/docs/AFNORReasonCode.md +49 -0
  51. data/docs/AFNORReasonCodeEnum.md +15 -0
  52. data/docs/AFNORRecipientPlatformType.md +15 -0
  53. data/docs/AFNORResult.md +7 -1
  54. data/docs/AFNORRoutingCodeAdministrativeStatus.md +15 -0
  55. data/docs/AFNORRoutingCodeField.md +15 -0
  56. data/docs/AFNORRoutingCodePayloadHistoryLegalUnitFacility.md +34 -0
  57. data/docs/AFNORRoutingCodePost201Response.md +22 -0
  58. data/docs/AFNORRoutingCodeSearch.md +28 -0
  59. data/docs/AFNORRoutingCodeSearchFilters.md +30 -0
  60. data/docs/AFNORRoutingCodeSearchFiltersAdministrativeStatus.md +20 -0
  61. data/docs/AFNORRoutingCodeSearchFiltersRoutingCodeName.md +20 -0
  62. data/docs/AFNORRoutingCodeSearchFiltersRoutingIdentifier.md +20 -0
  63. data/docs/AFNORRoutingCodeSearchPost200Response.md +22 -0
  64. data/docs/AFNORRoutingCodeSearchSortingInner.md +20 -0
  65. data/docs/AFNORSearchDirectoryLine.md +26 -0
  66. data/docs/AFNORSearchDirectoryLineFilters.md +26 -0
  67. data/docs/AFNORSearchDirectoryLineFiltersAddressingIdentifier.md +20 -0
  68. data/docs/AFNORSearchDirectoryLineFiltersAddressingSuffix.md +20 -0
  69. data/docs/AFNORSearchDirectoryLineSortingInner.md +20 -0
  70. data/docs/AFNORSearchFlowContent.md +22 -0
  71. data/docs/AFNORSearchFlowFilters.md +30 -0
  72. data/docs/AFNORSearchFlowParams.md +20 -0
  73. data/docs/AFNORSearchSiren.md +26 -0
  74. data/docs/AFNORSearchSirenFilters.md +24 -0
  75. data/docs/AFNORSearchSirenFiltersAdministrativeStatus.md +20 -0
  76. data/docs/AFNORSearchSirenFiltersBusinessName.md +20 -0
  77. data/docs/AFNORSearchSirenFiltersEntityType.md +20 -0
  78. data/docs/AFNORSearchSirenFiltersSiren.md +20 -0
  79. data/docs/AFNORSearchSirenSortingInner.md +20 -0
  80. data/docs/AFNORSearchSiret.md +28 -0
  81. data/docs/AFNORSearchSiretFilters.md +34 -0
  82. data/docs/AFNORSearchSiretFiltersAddressLines.md +20 -0
  83. data/docs/AFNORSearchSiretFiltersAdministrativeStatus.md +20 -0
  84. data/docs/AFNORSearchSiretFiltersCountrySubdivision.md +20 -0
  85. data/docs/AFNORSearchSiretFiltersFacilityType.md +20 -0
  86. data/docs/AFNORSearchSiretFiltersLocality.md +20 -0
  87. data/docs/AFNORSearchSiretFiltersName.md +20 -0
  88. data/docs/AFNORSearchSiretFiltersPostalCode.md +20 -0
  89. data/docs/AFNORSearchSiretFiltersSiret.md +20 -0
  90. data/docs/AFNORSearchSiretSortingInner.md +20 -0
  91. data/docs/AFNORSirenField.md +15 -0
  92. data/docs/AFNORSirenSearchPost200Response.md +22 -0
  93. data/docs/AFNORSiretField.md +15 -0
  94. data/docs/AFNORSiretSearchPost200Response.md +22 -0
  95. data/docs/AFNORSortingOrder.md +15 -0
  96. data/docs/AFNORStrictOperator.md +15 -0
  97. data/docs/AFNORUpdatePatchDirectoryLineBody.md +18 -0
  98. data/docs/AFNORUpdatePatchRoutingCodeBody.md +24 -0
  99. data/docs/AFNORUpdatePutRoutingCodeBody.md +24 -0
  100. data/docs/AFNORWebhookCallbackContent.md +18 -0
  101. data/docs/AcceptLanguage.md +15 -0
  102. data/docs/AggregatedPaymentInput.md +22 -0
  103. data/docs/AggregatedTransactionInput.md +32 -0
  104. data/docs/AllowanceCharge.md +3 -3
  105. data/docs/AllowanceChargeReasonCode.md +15 -0
  106. data/docs/Amount1.md +15 -0
  107. data/docs/Buyercountry.md +15 -0
  108. data/docs/ChorusProApi.md +5 -3
  109. data/docs/{FactureElectroniqueRestApiSchemasChorusProChorusProCredentials.md → ChorusProCredentials.md} +2 -2
  110. data/docs/ConvertValidationFailedResponse.md +5 -5
  111. data/docs/CountryCode.md +15 -0
  112. data/docs/CreateAggregatedReportRequest.md +34 -0
  113. data/docs/CreateEReportingRequest.md +36 -0
  114. data/docs/Currency.md +15 -0
  115. data/docs/CurrencyCode.md +15 -0
  116. data/docs/DirectoryLineInclude.md +15 -0
  117. data/docs/DocType.md +15 -0
  118. data/docs/DocumentConversionApi.md +12 -86
  119. data/docs/DownloadsApi.md +295 -0
  120. data/docs/EReportingApi.md +782 -0
  121. data/docs/EReportingFlowType.md +15 -0
  122. data/docs/ElectronicAddress.md +2 -2
  123. data/docs/EnrichedInvoiceInfo.md +6 -6
  124. data/docs/FactureElectroniqueModelsInvoiceTypeCode.md +15 -0
  125. data/docs/FactureElectroniqueRestApiSchemasConvertValidationError.md +32 -0
  126. data/docs/FlowSummary.md +2 -2
  127. data/docs/GenerateAggregatedReportResponse.md +30 -0
  128. data/docs/GenerateEReportingResponse.md +26 -0
  129. data/docs/GetChorusProIdRequest.md +1 -1
  130. data/docs/GetInvoiceRequest.md +1 -1
  131. data/docs/GetInvoiceResponse.md +2 -2
  132. data/docs/GetStructureRequest.md +1 -1
  133. data/docs/GetStructureResponse.md +2 -2
  134. data/docs/HealthApi.md +1 -1
  135. data/docs/IncomingInvoice.md +1 -1
  136. data/docs/InvoiceInput.md +48 -0
  137. data/docs/InvoiceLine.md +4 -0
  138. data/docs/InvoiceNote.md +1 -1
  139. data/docs/InvoicePaymentInput.md +26 -0
  140. data/docs/InvoiceProcessingApi.md +41 -17
  141. data/docs/InvoiceTypeCodeOutput.md +15 -0
  142. data/docs/InvoicingFramework.md +1 -1
  143. data/docs/LineSubType.md +15 -0
  144. data/docs/LocationInner.md +15 -0
  145. data/docs/PDFXMLVerificationApi.md +17 -9
  146. data/docs/PaymentAmountByRate.md +20 -0
  147. data/docs/ProcessingRule.md +15 -0
  148. data/docs/Rate.md +15 -0
  149. data/docs/Rate1.md +15 -0
  150. data/docs/ReportPeriod.md +20 -0
  151. data/docs/ReportSender.md +22 -0
  152. data/docs/RoutingCodeInclude.md +15 -0
  153. data/docs/SearchServicesResponse.md +3 -3
  154. data/docs/SearchStructureRequest.md +1 -1
  155. data/docs/Sellercountry.md +15 -0
  156. data/docs/SimplifiedInvoiceData.md +9 -1
  157. data/docs/SiretInclude.md +15 -0
  158. data/docs/SubmitAggregatedReportRequest.md +28 -0
  159. data/docs/SubmitEReportingRequest.md +28 -0
  160. data/docs/SubmitEReportingResponse.md +32 -0
  161. data/docs/SubmitInvoiceRequest.md +1 -1
  162. data/docs/SupplementaryAttachment.md +5 -5
  163. data/docs/TaxBreakdownInput.md +22 -0
  164. data/docs/TaxDueDateType.md +15 -0
  165. data/docs/Taxableamount.md +15 -0
  166. data/docs/Taxamount.md +15 -0
  167. data/docs/Taxamount1.md +15 -0
  168. data/docs/Taxamount2.md +15 -0
  169. data/docs/Taxexclusiveamount.md +15 -0
  170. data/docs/Taxexclusiveamount1.md +15 -0
  171. data/docs/TransactionCategory.md +15 -0
  172. data/docs/TransmissionTypeCode.md +15 -0
  173. data/docs/UserApi.md +1 -1
  174. data/docs/ValidateEReportingRequest.md +18 -0
  175. data/docs/ValidateEReportingResponse.md +28 -0
  176. data/docs/ValidationError.md +1 -1
  177. data/docs/ValidationInfo.md +1 -1
  178. data/factpulse.gemspec +4 -4
  179. data/lib/factpulse/api/afnorpdppa_api.rb +6 -6
  180. data/lib/factpulse/api/afnorpdppa_directory_service_api.rb +210 -123
  181. data/lib/factpulse/api/afnorpdppa_flow_service_api.rb +57 -24
  182. data/lib/factpulse/api/chorus_pro_api.rb +6 -4
  183. data/lib/factpulse/api/document_conversion_api.rb +13 -85
  184. data/lib/factpulse/api/downloads_api.rb +280 -0
  185. data/lib/factpulse/api/e_reporting_api.rb +774 -0
  186. data/lib/factpulse/api/health_api.rb +2 -2
  187. data/lib/factpulse/api/invoice_processing_api.rb +47 -14
  188. data/lib/factpulse/api/pdfxml_verification_api.rb +22 -10
  189. data/lib/factpulse/api/user_api.rb +2 -2
  190. data/lib/factpulse/api_client.rb +2 -2
  191. data/lib/factpulse/api_error.rb +2 -2
  192. data/lib/factpulse/api_model_base.rb +2 -2
  193. data/lib/factpulse/configuration.rb +10 -6
  194. data/lib/factpulse/models/accept_language.rb +40 -0
  195. data/lib/factpulse/models/acknowledgment_status.rb +2 -2
  196. data/lib/factpulse/models/additional_document.rb +2 -2
  197. data/lib/factpulse/models/afnor_acknowledgement.rb +216 -0
  198. data/lib/factpulse/models/afnor_acknowledgement_detail.rb +267 -0
  199. data/lib/factpulse/models/afnor_address_edit.rb +353 -0
  200. data/lib/factpulse/models/afnor_address_patch.rb +386 -0
  201. data/lib/factpulse/models/afnor_address_put.rb +435 -0
  202. data/lib/factpulse/models/afnor_address_read.rb +382 -0
  203. data/lib/factpulse/models/afnor_algorithm.rb +43 -0
  204. data/lib/factpulse/models/afnor_contains_operator.rb +39 -0
  205. data/lib/factpulse/models/afnor_create_directory_line_body.rb +156 -0
  206. data/lib/factpulse/models/afnor_create_directory_line_body_addressing_information.rb +294 -0
  207. data/lib/factpulse/models/afnor_create_directory_line_body_period.rb +175 -0
  208. data/lib/factpulse/models/afnor_create_routing_code_body.rb +412 -0
  209. data/lib/factpulse/models/afnor_credentials.rb +2 -2
  210. data/lib/factpulse/models/afnor_destination.rb +19 -23
  211. data/lib/factpulse/models/afnor_diffusion_status.rb +40 -0
  212. data/lib/factpulse/models/afnor_directory_line_field.rb +44 -0
  213. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code.rb +312 -0
  214. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_platform.rb +178 -0
  215. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_routing_code.rb +308 -0
  216. data/lib/factpulse/models/afnor_directory_line_post201_response.rb +187 -0
  217. data/lib/factpulse/models/afnor_directory_line_search_post200_response.rb +168 -0
  218. data/lib/factpulse/models/afnor_entity_type.rb +40 -0
  219. data/lib/factpulse/models/{convert_error_response.rb → afnor_error.rb} +51 -61
  220. data/lib/factpulse/models/afnor_facility_administrative_status.rb +40 -0
  221. data/lib/factpulse/models/afnor_facility_nature.rb +40 -0
  222. data/lib/factpulse/models/afnor_facility_payload_history.rb +323 -0
  223. data/lib/factpulse/models/afnor_facility_payload_history_ule_b2g_additional_data.rb +198 -0
  224. data/lib/factpulse/models/afnor_facility_payload_included.rb +314 -0
  225. data/lib/factpulse/models/afnor_facility_type.rb +40 -0
  226. data/lib/factpulse/models/afnor_flow.rb +315 -0
  227. data/lib/factpulse/models/afnor_flow_ack_status.rb +41 -0
  228. data/lib/factpulse/models/afnor_flow_direction.rb +40 -0
  229. data/lib/factpulse/models/afnor_flow_info.rb +293 -0
  230. data/lib/factpulse/models/afnor_flow_profile.rb +41 -0
  231. data/lib/factpulse/models/afnor_flow_syntax.rb +43 -0
  232. data/lib/factpulse/models/afnor_flow_type.rb +51 -0
  233. data/lib/factpulse/models/afnor_full_flow_info.rb +339 -0
  234. data/lib/factpulse/models/afnor_health_check_response.rb +2 -2
  235. data/lib/factpulse/models/afnor_legal_unit_administrative_status.rb +40 -0
  236. data/lib/factpulse/models/afnor_legal_unit_payload_history.rb +247 -0
  237. data/lib/factpulse/models/afnor_legal_unit_payload_included.rb +247 -0
  238. data/lib/factpulse/models/afnor_legal_unit_payload_included_no_siren.rb +207 -0
  239. data/lib/factpulse/models/afnor_platform_status.rb +40 -0
  240. data/lib/factpulse/models/afnor_processing_rule.rb +44 -0
  241. data/lib/factpulse/models/afnor_reason_code.rb +105 -0
  242. data/lib/factpulse/models/afnor_reason_code_enum.rb +53 -0
  243. data/lib/factpulse/models/afnor_recipient_platform_type.rb +40 -0
  244. data/lib/factpulse/models/afnor_result.rb +37 -7
  245. data/lib/factpulse/models/afnor_routing_code_administrative_status.rb +40 -0
  246. data/lib/factpulse/models/afnor_routing_code_field.rb +46 -0
  247. data/lib/factpulse/models/afnor_routing_code_payload_history_legal_unit_facility.rb +366 -0
  248. data/lib/factpulse/models/afnor_routing_code_post201_response.rb +228 -0
  249. data/lib/factpulse/models/afnor_routing_code_search.rb +224 -0
  250. data/lib/factpulse/models/afnor_routing_code_search_filters.rb +201 -0
  251. data/lib/factpulse/models/afnor_routing_code_search_filters_administrative_status.rb +178 -0
  252. data/lib/factpulse/models/afnor_routing_code_search_filters_routing_code_name.rb +209 -0
  253. data/lib/factpulse/models/afnor_routing_code_search_filters_routing_identifier.rb +209 -0
  254. data/lib/factpulse/models/afnor_routing_code_search_post200_response.rb +168 -0
  255. data/lib/factpulse/models/afnor_routing_code_search_sorting_inner.rb +179 -0
  256. data/lib/factpulse/models/afnor_search_directory_line.rb +191 -0
  257. data/lib/factpulse/models/afnor_search_directory_line_filters.rb +183 -0
  258. data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_identifier.rb +198 -0
  259. data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_suffix.rb +198 -0
  260. data/lib/factpulse/models/afnor_search_directory_line_sorting_inner.rb +179 -0
  261. data/lib/factpulse/models/afnor_search_flow_content.rb +168 -0
  262. data/lib/factpulse/models/afnor_search_flow_filters.rb +250 -0
  263. data/lib/factpulse/models/afnor_search_flow_params.rb +195 -0
  264. data/lib/factpulse/models/afnor_search_siren.rb +191 -0
  265. data/lib/factpulse/models/afnor_search_siren_filters.rb +174 -0
  266. data/lib/factpulse/models/afnor_search_siren_filters_administrative_status.rb +178 -0
  267. data/lib/factpulse/models/afnor_search_siren_filters_business_name.rb +198 -0
  268. data/lib/factpulse/models/afnor_search_siren_filters_entity_type.rb +178 -0
  269. data/lib/factpulse/models/afnor_search_siren_filters_siren.rb +209 -0
  270. data/lib/factpulse/models/afnor_search_siren_sorting_inner.rb +179 -0
  271. data/lib/factpulse/models/afnor_search_siret.rb +224 -0
  272. data/lib/factpulse/models/afnor_search_siret_filters.rb +219 -0
  273. data/lib/factpulse/models/afnor_search_siret_filters_address_lines.rb +198 -0
  274. data/lib/factpulse/models/afnor_search_siret_filters_administrative_status.rb +178 -0
  275. data/lib/factpulse/models/afnor_search_siret_filters_country_subdivision.rb +198 -0
  276. data/lib/factpulse/models/afnor_search_siret_filters_facility_type.rb +178 -0
  277. data/lib/factpulse/models/afnor_search_siret_filters_locality.rb +198 -0
  278. data/lib/factpulse/models/afnor_search_siret_filters_name.rb +198 -0
  279. data/lib/factpulse/models/afnor_search_siret_filters_postal_code.rb +209 -0
  280. data/lib/factpulse/models/afnor_search_siret_filters_siret.rb +209 -0
  281. data/lib/factpulse/models/afnor_search_siret_sorting_inner.rb +179 -0
  282. data/lib/factpulse/models/afnor_siren_field.rb +43 -0
  283. data/lib/factpulse/models/afnor_siren_search_post200_response.rb +168 -0
  284. data/lib/factpulse/models/afnor_siret_field.rb +52 -0
  285. data/lib/factpulse/models/afnor_siret_search_post200_response.rb +168 -0
  286. data/lib/factpulse/models/afnor_sorting_order.rb +40 -0
  287. data/lib/factpulse/models/afnor_strict_operator.rb +39 -0
  288. data/lib/factpulse/models/afnor_update_patch_directory_line_body.rb +148 -0
  289. data/lib/factpulse/models/afnor_update_patch_routing_code_body.rb +258 -0
  290. data/lib/factpulse/models/afnor_update_put_routing_code_body.rb +289 -0
  291. data/lib/factpulse/models/afnor_webhook_callback_content.rb +148 -0
  292. data/lib/factpulse/models/aggregated_payment_input.rb +213 -0
  293. data/lib/factpulse/models/aggregated_transaction_input.rb +349 -0
  294. data/lib/factpulse/models/allowance_charge.rb +27 -5
  295. data/lib/factpulse/models/allowance_charge_reason_code.rb +76 -0
  296. data/lib/factpulse/models/allowance_reason_code.rb +2 -2
  297. data/lib/factpulse/models/allowance_total_amount.rb +2 -2
  298. data/lib/factpulse/models/amount.rb +3 -3
  299. data/lib/factpulse/models/amount1.rb +104 -0
  300. data/lib/factpulse/models/amount_due.rb +2 -2
  301. data/lib/factpulse/models/api_error.rb +2 -2
  302. data/lib/factpulse/models/api_profile.rb +4 -3
  303. data/lib/factpulse/models/async_task_status.rb +2 -2
  304. data/lib/factpulse/models/base_amount.rb +2 -2
  305. data/lib/factpulse/models/bounding_box_schema.rb +2 -2
  306. data/lib/factpulse/models/buyercountry.rb +104 -0
  307. data/lib/factpulse/models/celery_status.rb +2 -2
  308. data/lib/factpulse/models/certificate_info_response.rb +2 -2
  309. data/lib/factpulse/models/charge_total_amount.rb +2 -2
  310. data/lib/factpulse/models/{facture_electronique_rest_api_schemas_chorus_pro_chorus_pro_credentials.rb → chorus_pro_credentials.rb} +5 -5
  311. data/lib/factpulse/models/chorus_pro_destination.rb +2 -2
  312. data/lib/factpulse/models/chorus_pro_result.rb +2 -2
  313. data/lib/factpulse/models/contact.rb +2 -2
  314. data/lib/factpulse/models/convert_resume_request.rb +2 -2
  315. data/lib/factpulse/models/convert_success_response.rb +2 -2
  316. data/lib/factpulse/models/convert_validation_failed_response.rb +7 -2
  317. data/lib/factpulse/models/country_code.rb +208 -0
  318. data/lib/factpulse/models/create_aggregated_report_request.rb +310 -0
  319. data/lib/factpulse/models/create_e_reporting_request.rb +337 -0
  320. data/lib/factpulse/models/currency.rb +104 -0
  321. data/lib/factpulse/models/currency_code.rb +91 -0
  322. data/lib/factpulse/models/delivery_party.rb +2 -2
  323. data/lib/factpulse/models/destination.rb +2 -2
  324. data/lib/factpulse/models/directory_line_include.rb +42 -0
  325. data/lib/factpulse/models/doc_type.rb +42 -0
  326. data/lib/factpulse/models/document_type_info.rb +2 -2
  327. data/lib/factpulse/models/e_reporting_flow_type.rb +42 -0
  328. data/lib/factpulse/models/electronic_address.rb +4 -2
  329. data/lib/factpulse/models/enriched_invoice_info.rb +8 -2
  330. data/lib/factpulse/models/error_level.rb +2 -2
  331. data/lib/factpulse/models/error_source.rb +2 -2
  332. data/lib/factpulse/models/extraction_info.rb +2 -2
  333. data/lib/factpulse/models/factur_x_invoice.rb +2 -2
  334. data/lib/factpulse/models/factur_xpdf_info.rb +2 -2
  335. data/lib/factpulse/models/facture_electronique_models_invoice_type_code.rb +54 -0
  336. data/lib/factpulse/models/facture_electronique_rest_api_schemas_convert_validation_error.rb +294 -0
  337. data/lib/factpulse/models/facture_electronique_rest_api_schemas_processing_chorus_pro_credentials.rb +2 -2
  338. data/lib/factpulse/models/field_status.rb +2 -2
  339. data/lib/factpulse/models/file_info.rb +2 -2
  340. data/lib/factpulse/models/files_info.rb +2 -2
  341. data/lib/factpulse/models/flow_direction.rb +2 -2
  342. data/lib/factpulse/models/flow_profile.rb +2 -2
  343. data/lib/factpulse/models/flow_summary.rb +4 -2
  344. data/lib/factpulse/models/flow_syntax.rb +2 -2
  345. data/lib/factpulse/models/flow_type.rb +12 -4
  346. data/lib/factpulse/models/generate_aggregated_report_response.rb +330 -0
  347. data/lib/factpulse/models/generate_certificate_request.rb +2 -2
  348. data/lib/factpulse/models/generate_certificate_response.rb +2 -2
  349. data/lib/factpulse/models/generate_e_reporting_response.rb +274 -0
  350. data/lib/factpulse/models/get_chorus_pro_id_request.rb +3 -3
  351. data/lib/factpulse/models/get_chorus_pro_id_response.rb +2 -2
  352. data/lib/factpulse/models/get_invoice_request.rb +3 -3
  353. data/lib/factpulse/models/get_invoice_response.rb +4 -2
  354. data/lib/factpulse/models/get_structure_request.rb +3 -3
  355. data/lib/factpulse/models/get_structure_response.rb +4 -2
  356. data/lib/factpulse/models/global_allowance_amount.rb +2 -2
  357. data/lib/factpulse/models/gross_unit_price.rb +2 -2
  358. data/lib/factpulse/models/http_validation_error.rb +2 -2
  359. data/lib/factpulse/models/incoming_invoice.rb +3 -36
  360. data/lib/factpulse/models/incoming_supplier.rb +2 -2
  361. data/lib/factpulse/models/invoice_format.rb +2 -2
  362. data/lib/factpulse/models/invoice_input.rb +446 -0
  363. data/lib/factpulse/models/invoice_line.rb +23 -3
  364. data/lib/factpulse/models/invoice_line_allowance_amount.rb +2 -2
  365. data/lib/factpulse/models/invoice_note.rb +3 -2
  366. data/lib/factpulse/models/invoice_payment_input.rb +267 -0
  367. data/lib/factpulse/models/invoice_references.rb +2 -2
  368. data/lib/factpulse/models/invoice_status.rb +2 -2
  369. data/lib/factpulse/models/invoice_totals.rb +2 -2
  370. data/lib/factpulse/models/invoice_totals_prepayment.rb +2 -2
  371. data/lib/factpulse/models/invoice_type_code.rb +8 -19
  372. data/lib/factpulse/models/invoice_type_code_output.rb +54 -0
  373. data/lib/factpulse/models/invoicing_framework.rb +3 -2
  374. data/lib/factpulse/models/invoicing_framework_code.rb +2 -2
  375. data/lib/factpulse/models/line_net_amount.rb +2 -2
  376. data/lib/factpulse/models/line_sub_type.rb +41 -0
  377. data/lib/factpulse/models/line_total_amount.rb +2 -2
  378. data/lib/factpulse/models/{validation_error_loc_inner.rb → location_inner.rb} +3 -3
  379. data/lib/factpulse/models/mandatory_note_schema.rb +2 -2
  380. data/lib/factpulse/models/manual_rate.rb +2 -2
  381. data/lib/factpulse/models/manual_vat_rate.rb +2 -2
  382. data/lib/factpulse/models/missing_field.rb +2 -2
  383. data/lib/factpulse/models/operation_nature.rb +2 -2
  384. data/lib/factpulse/models/output_format.rb +2 -2
  385. data/lib/factpulse/models/page_dimensions_schema.rb +2 -2
  386. data/lib/factpulse/models/payee.rb +2 -2
  387. data/lib/factpulse/models/payment_amount_by_rate.rb +191 -0
  388. data/lib/factpulse/models/payment_card.rb +2 -2
  389. data/lib/factpulse/models/payment_means.rb +2 -2
  390. data/lib/factpulse/models/pdf_validation_result_api.rb +2 -2
  391. data/lib/factpulse/models/pdp_credentials.rb +2 -2
  392. data/lib/factpulse/models/percentage.rb +2 -2
  393. data/lib/factpulse/models/postal_address.rb +2 -2
  394. data/lib/factpulse/models/price_allowance_amount.rb +2 -2
  395. data/lib/factpulse/models/price_basis_quantity.rb +2 -2
  396. data/lib/factpulse/models/processing_options.rb +2 -2
  397. data/lib/factpulse/models/processing_rule.rb +44 -0
  398. data/lib/factpulse/models/product_characteristic.rb +2 -2
  399. data/lib/factpulse/models/product_classification.rb +2 -2
  400. data/lib/factpulse/models/quantity.rb +2 -2
  401. data/lib/factpulse/models/rate.rb +104 -0
  402. data/lib/factpulse/models/rate1.rb +104 -0
  403. data/lib/factpulse/models/recipient.rb +2 -2
  404. data/lib/factpulse/models/report_period.rb +193 -0
  405. data/lib/factpulse/models/report_sender.rb +221 -0
  406. data/lib/factpulse/models/rounding_amount.rb +2 -2
  407. data/lib/factpulse/models/routing_code_include.rb +40 -0
  408. data/lib/factpulse/models/scheme_id.rb +10 -3
  409. data/lib/factpulse/models/search_flow_request.rb +2 -2
  410. data/lib/factpulse/models/search_flow_response.rb +2 -2
  411. data/lib/factpulse/models/search_services_response.rb +5 -2
  412. data/lib/factpulse/models/search_structure_request.rb +3 -3
  413. data/lib/factpulse/models/search_structure_response.rb +2 -2
  414. data/lib/factpulse/models/sellercountry.rb +104 -0
  415. data/lib/factpulse/models/signature_info.rb +2 -2
  416. data/lib/factpulse/models/signature_info_api.rb +2 -2
  417. data/lib/factpulse/models/signature_parameters.rb +2 -2
  418. data/lib/factpulse/models/simplified_invoice_data.rb +69 -7
  419. data/lib/factpulse/models/siret_include.rb +39 -0
  420. data/lib/factpulse/models/structure_info.rb +2 -2
  421. data/lib/factpulse/models/structure_parameters.rb +2 -2
  422. data/lib/factpulse/models/structure_service.rb +2 -2
  423. data/lib/factpulse/models/submission_mode.rb +2 -2
  424. data/lib/factpulse/models/submit_aggregated_report_request.rb +216 -0
  425. data/lib/factpulse/models/submit_complete_invoice_request.rb +2 -2
  426. data/lib/factpulse/models/submit_complete_invoice_response.rb +2 -2
  427. data/lib/factpulse/models/submit_e_reporting_request.rb +216 -0
  428. data/lib/factpulse/models/submit_e_reporting_response.rb +306 -0
  429. data/lib/factpulse/models/submit_flow_request.rb +2 -2
  430. data/lib/factpulse/models/submit_flow_response.rb +2 -2
  431. data/lib/factpulse/models/submit_gross_amount.rb +2 -2
  432. data/lib/factpulse/models/submit_invoice_request.rb +3 -3
  433. data/lib/factpulse/models/submit_invoice_response.rb +2 -2
  434. data/lib/factpulse/models/submit_net_amount.rb +2 -2
  435. data/lib/factpulse/models/submit_vat_amount.rb +2 -2
  436. data/lib/factpulse/models/supplementary_attachment.rb +7 -2
  437. data/lib/factpulse/models/supplier.rb +2 -2
  438. data/lib/factpulse/models/task_response.rb +2 -2
  439. data/lib/factpulse/models/tax_breakdown_input.rb +217 -0
  440. data/lib/factpulse/models/tax_due_date_type.rb +44 -0
  441. data/lib/factpulse/models/tax_representative.rb +2 -2
  442. data/lib/factpulse/models/taxable_amount.rb +2 -2
  443. data/lib/factpulse/models/taxableamount0.rb +104 -0
  444. data/lib/factpulse/models/taxamount.rb +104 -0
  445. data/lib/factpulse/models/taxamount1.rb +104 -0
  446. data/lib/factpulse/models/taxamount2.rb +104 -0
  447. data/lib/factpulse/models/taxexclusiveamount.rb +104 -0
  448. data/lib/factpulse/models/taxexclusiveamount1.rb +104 -0
  449. data/lib/factpulse/models/total_gross_amount.rb +2 -2
  450. data/lib/factpulse/models/total_net_amount.rb +2 -2
  451. data/lib/factpulse/models/total_vat_amount.rb +2 -2
  452. data/lib/factpulse/models/transaction_category.rb +42 -0
  453. data/lib/factpulse/models/transmission_type_code.rb +40 -0
  454. data/lib/factpulse/models/unit_net_price.rb +2 -2
  455. data/lib/factpulse/models/unit_of_measure.rb +2 -2
  456. data/lib/factpulse/models/validate_e_reporting_request.rb +166 -0
  457. data/lib/factpulse/models/validate_e_reporting_response.rb +271 -0
  458. data/lib/factpulse/models/validation_error.rb +3 -3
  459. data/lib/factpulse/models/validation_error_detail.rb +2 -2
  460. data/lib/factpulse/models/validation_error_response.rb +2 -2
  461. data/lib/factpulse/models/validation_info.rb +3 -3
  462. data/lib/factpulse/models/validation_success_response.rb +2 -2
  463. data/lib/factpulse/models/vat_accounting_code.rb +2 -2
  464. data/lib/factpulse/models/vat_amount.rb +2 -2
  465. data/lib/factpulse/models/vat_category.rb +2 -2
  466. data/lib/factpulse/models/vat_line.rb +2 -2
  467. data/lib/factpulse/models/vat_point_date_code.rb +2 -2
  468. data/lib/factpulse/models/vat_rate.rb +2 -2
  469. data/lib/factpulse/models/verification_success_response.rb +2 -2
  470. data/lib/factpulse/models/verified_field_schema.rb +2 -2
  471. data/lib/factpulse/version.rb +3 -3
  472. data/lib/factpulse.rb +143 -6
  473. metadata +291 -17
  474. data/docs/ConvertErrorResponse.md +0 -26
  475. data/docs/ConvertPendingInputResponse.md +0 -32
  476. data/lib/factpulse/models/convert_pending_input_response.rb +0 -322
@@ -0,0 +1,446 @@
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 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/
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.19.0-SNAPSHOT
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module FactPulse
17
+ # Invoice for B2B international reporting (flux 10.1). Used for unitary declaration of international B2B invoices.
18
+ class InvoiceInput < ApiModelBase
19
+ # Invoice identifier
20
+ attr_accessor :invoice_id
21
+
22
+ # Invoice issue date
23
+ attr_accessor :issue_date
24
+
25
+ # Invoice type code
26
+ attr_accessor :type_code
27
+
28
+ attr_accessor :currency
29
+
30
+ attr_accessor :due_date
31
+
32
+ # Seller SIREN/SIRET
33
+ attr_accessor :seller_siren
34
+
35
+ attr_accessor :seller_vat_id
36
+
37
+ attr_accessor :seller_country
38
+
39
+ attr_accessor :buyer_id
40
+
41
+ attr_accessor :buyer_vat_id
42
+
43
+ attr_accessor :buyer_country
44
+
45
+ attr_accessor :tax_exclusive_amount
46
+
47
+ attr_accessor :tax_amount
48
+
49
+ # VAT breakdown
50
+ attr_accessor :tax_breakdown
51
+
52
+ attr_accessor :referenced_invoice_id
53
+
54
+ attr_accessor :referenced_invoice_date
55
+
56
+ class EnumAttributeValidator
57
+ attr_reader :datatype
58
+ attr_reader :allowable_values
59
+
60
+ def initialize(datatype, allowable_values)
61
+ @allowable_values = allowable_values.map do |value|
62
+ case datatype.to_s
63
+ when /Integer/i
64
+ value.to_i
65
+ when /Float/i
66
+ value.to_f
67
+ else
68
+ value
69
+ end
70
+ end
71
+ end
72
+
73
+ def valid?(value)
74
+ !value || allowable_values.include?(value)
75
+ end
76
+ end
77
+
78
+ # Attribute mapping from ruby-style variable name to JSON key.
79
+ def self.attribute_map
80
+ {
81
+ :'invoice_id' => :'invoiceId',
82
+ :'issue_date' => :'issueDate',
83
+ :'type_code' => :'typeCode',
84
+ :'currency' => :'currency',
85
+ :'due_date' => :'dueDate',
86
+ :'seller_siren' => :'sellerSiren',
87
+ :'seller_vat_id' => :'sellerVatId',
88
+ :'seller_country' => :'sellerCountry',
89
+ :'buyer_id' => :'buyerId',
90
+ :'buyer_vat_id' => :'buyerVatId',
91
+ :'buyer_country' => :'buyerCountry',
92
+ :'tax_exclusive_amount' => :'taxExclusiveAmount',
93
+ :'tax_amount' => :'taxAmount',
94
+ :'tax_breakdown' => :'taxBreakdown',
95
+ :'referenced_invoice_id' => :'referencedInvoiceId',
96
+ :'referenced_invoice_date' => :'referencedInvoiceDate'
97
+ }
98
+ end
99
+
100
+ # Returns attribute mapping this model knows about
101
+ def self.acceptable_attribute_map
102
+ attribute_map
103
+ end
104
+
105
+ # Returns all the JSON keys this model knows about
106
+ def self.acceptable_attributes
107
+ acceptable_attribute_map.values
108
+ end
109
+
110
+ # Attribute type mapping.
111
+ def self.openapi_types
112
+ {
113
+ :'invoice_id' => :'String',
114
+ :'issue_date' => :'Date',
115
+ :'type_code' => :'InvoiceTypeCode',
116
+ :'currency' => :'Currency',
117
+ :'due_date' => :'Date',
118
+ :'seller_siren' => :'String',
119
+ :'seller_vat_id' => :'String',
120
+ :'seller_country' => :'Sellercountry',
121
+ :'buyer_id' => :'String',
122
+ :'buyer_vat_id' => :'String',
123
+ :'buyer_country' => :'Buyercountry',
124
+ :'tax_exclusive_amount' => :'Taxexclusiveamount1',
125
+ :'tax_amount' => :'Taxamount1',
126
+ :'tax_breakdown' => :'Array<TaxBreakdownInput>',
127
+ :'referenced_invoice_id' => :'String',
128
+ :'referenced_invoice_date' => :'Date'
129
+ }
130
+ end
131
+
132
+ # List of attributes with nullable: true
133
+ def self.openapi_nullable
134
+ Set.new([
135
+ :'due_date',
136
+ :'seller_vat_id',
137
+ :'buyer_id',
138
+ :'buyer_vat_id',
139
+ :'referenced_invoice_id',
140
+ :'referenced_invoice_date'
141
+ ])
142
+ end
143
+
144
+ # Initializes the object
145
+ # @param [Hash] attributes Model attributes in the form of hash
146
+ def initialize(attributes = {})
147
+ if (!attributes.is_a?(Hash))
148
+ fail ArgumentError, "The input argument (attributes) must be a hash in `FactPulse::InvoiceInput` initialize method"
149
+ end
150
+
151
+ # check to see if the attribute exists and convert string to symbol for hash key
152
+ acceptable_attribute_map = self.class.acceptable_attribute_map
153
+ attributes = attributes.each_with_object({}) { |(k, v), h|
154
+ if (!acceptable_attribute_map.key?(k.to_sym))
155
+ fail ArgumentError, "`#{k}` is not a valid attribute in `FactPulse::InvoiceInput`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
156
+ end
157
+ h[k.to_sym] = v
158
+ }
159
+
160
+ if attributes.key?(:'invoice_id')
161
+ self.invoice_id = attributes[:'invoice_id']
162
+ else
163
+ self.invoice_id = nil
164
+ end
165
+
166
+ if attributes.key?(:'issue_date')
167
+ self.issue_date = attributes[:'issue_date']
168
+ else
169
+ self.issue_date = nil
170
+ end
171
+
172
+ if attributes.key?(:'type_code')
173
+ self.type_code = attributes[:'type_code']
174
+ end
175
+
176
+ if attributes.key?(:'currency')
177
+ self.currency = attributes[:'currency']
178
+ end
179
+
180
+ if attributes.key?(:'due_date')
181
+ self.due_date = attributes[:'due_date']
182
+ end
183
+
184
+ if attributes.key?(:'seller_siren')
185
+ self.seller_siren = attributes[:'seller_siren']
186
+ else
187
+ self.seller_siren = nil
188
+ end
189
+
190
+ if attributes.key?(:'seller_vat_id')
191
+ self.seller_vat_id = attributes[:'seller_vat_id']
192
+ end
193
+
194
+ if attributes.key?(:'seller_country')
195
+ self.seller_country = attributes[:'seller_country']
196
+ end
197
+
198
+ if attributes.key?(:'buyer_id')
199
+ self.buyer_id = attributes[:'buyer_id']
200
+ end
201
+
202
+ if attributes.key?(:'buyer_vat_id')
203
+ self.buyer_vat_id = attributes[:'buyer_vat_id']
204
+ end
205
+
206
+ if attributes.key?(:'buyer_country')
207
+ self.buyer_country = attributes[:'buyer_country']
208
+ else
209
+ self.buyer_country = nil
210
+ end
211
+
212
+ if attributes.key?(:'tax_exclusive_amount')
213
+ self.tax_exclusive_amount = attributes[:'tax_exclusive_amount']
214
+ else
215
+ self.tax_exclusive_amount = nil
216
+ end
217
+
218
+ if attributes.key?(:'tax_amount')
219
+ self.tax_amount = attributes[:'tax_amount']
220
+ else
221
+ self.tax_amount = nil
222
+ end
223
+
224
+ if attributes.key?(:'tax_breakdown')
225
+ if (value = attributes[:'tax_breakdown']).is_a?(Array)
226
+ self.tax_breakdown = value
227
+ end
228
+ else
229
+ self.tax_breakdown = nil
230
+ end
231
+
232
+ if attributes.key?(:'referenced_invoice_id')
233
+ self.referenced_invoice_id = attributes[:'referenced_invoice_id']
234
+ end
235
+
236
+ if attributes.key?(:'referenced_invoice_date')
237
+ self.referenced_invoice_date = attributes[:'referenced_invoice_date']
238
+ end
239
+ end
240
+
241
+ # Show invalid properties with the reasons. Usually used together with valid?
242
+ # @return Array for valid properties with the reasons
243
+ def list_invalid_properties
244
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
245
+ invalid_properties = Array.new
246
+ if @invoice_id.nil?
247
+ invalid_properties.push('invalid value for "invoice_id", invoice_id cannot be nil.')
248
+ end
249
+
250
+ if @issue_date.nil?
251
+ invalid_properties.push('invalid value for "issue_date", issue_date cannot be nil.')
252
+ end
253
+
254
+ if @seller_siren.nil?
255
+ invalid_properties.push('invalid value for "seller_siren", seller_siren cannot be nil.')
256
+ end
257
+
258
+ if @buyer_country.nil?
259
+ invalid_properties.push('invalid value for "buyer_country", buyer_country cannot be nil.')
260
+ end
261
+
262
+ if @tax_exclusive_amount.nil?
263
+ invalid_properties.push('invalid value for "tax_exclusive_amount", tax_exclusive_amount cannot be nil.')
264
+ end
265
+
266
+ if @tax_amount.nil?
267
+ invalid_properties.push('invalid value for "tax_amount", tax_amount cannot be nil.')
268
+ end
269
+
270
+ if @tax_breakdown.nil?
271
+ invalid_properties.push('invalid value for "tax_breakdown", tax_breakdown cannot be nil.')
272
+ end
273
+
274
+ if @tax_breakdown.length < 1
275
+ invalid_properties.push('invalid value for "tax_breakdown", number of items must be greater than or equal to 1.')
276
+ end
277
+
278
+ invalid_properties
279
+ end
280
+
281
+ # Check to see if the all the properties in the model are valid
282
+ # @return true if the model is valid
283
+ def valid?
284
+ warn '[DEPRECATED] the `valid?` method is obsolete'
285
+ return false if @invoice_id.nil?
286
+ return false if @issue_date.nil?
287
+ return false if @seller_siren.nil?
288
+ return false if @buyer_country.nil?
289
+ return false if @tax_exclusive_amount.nil?
290
+ return false if @tax_amount.nil?
291
+ return false if @tax_breakdown.nil?
292
+ return false if @tax_breakdown.length < 1
293
+ true
294
+ end
295
+
296
+ # Custom attribute writer method with validation
297
+ # @param [Object] invoice_id Value to be assigned
298
+ def invoice_id=(invoice_id)
299
+ if invoice_id.nil?
300
+ fail ArgumentError, 'invoice_id cannot be nil'
301
+ end
302
+
303
+ @invoice_id = invoice_id
304
+ end
305
+
306
+ # Custom attribute writer method with validation
307
+ # @param [Object] issue_date Value to be assigned
308
+ def issue_date=(issue_date)
309
+ if issue_date.nil?
310
+ fail ArgumentError, 'issue_date cannot be nil'
311
+ end
312
+
313
+ @issue_date = issue_date
314
+ end
315
+
316
+ # Custom attribute writer method with validation
317
+ # @param [Object] seller_siren Value to be assigned
318
+ def seller_siren=(seller_siren)
319
+ if seller_siren.nil?
320
+ fail ArgumentError, 'seller_siren cannot be nil'
321
+ end
322
+
323
+ @seller_siren = seller_siren
324
+ end
325
+
326
+ # Custom attribute writer method with validation
327
+ # @param [Object] buyer_country Value to be assigned
328
+ def buyer_country=(buyer_country)
329
+ if buyer_country.nil?
330
+ fail ArgumentError, 'buyer_country cannot be nil'
331
+ end
332
+
333
+ @buyer_country = buyer_country
334
+ end
335
+
336
+ # Custom attribute writer method with validation
337
+ # @param [Object] tax_exclusive_amount Value to be assigned
338
+ def tax_exclusive_amount=(tax_exclusive_amount)
339
+ if tax_exclusive_amount.nil?
340
+ fail ArgumentError, 'tax_exclusive_amount cannot be nil'
341
+ end
342
+
343
+ @tax_exclusive_amount = tax_exclusive_amount
344
+ end
345
+
346
+ # Custom attribute writer method with validation
347
+ # @param [Object] tax_amount Value to be assigned
348
+ def tax_amount=(tax_amount)
349
+ if tax_amount.nil?
350
+ fail ArgumentError, 'tax_amount cannot be nil'
351
+ end
352
+
353
+ @tax_amount = tax_amount
354
+ end
355
+
356
+ # Custom attribute writer method with validation
357
+ # @param [Object] tax_breakdown Value to be assigned
358
+ def tax_breakdown=(tax_breakdown)
359
+ if tax_breakdown.nil?
360
+ fail ArgumentError, 'tax_breakdown cannot be nil'
361
+ end
362
+
363
+ if tax_breakdown.length < 1
364
+ fail ArgumentError, 'invalid value for "tax_breakdown", number of items must be greater than or equal to 1.'
365
+ end
366
+
367
+ @tax_breakdown = tax_breakdown
368
+ end
369
+
370
+ # Checks equality by comparing each attribute.
371
+ # @param [Object] Object to be compared
372
+ def ==(o)
373
+ return true if self.equal?(o)
374
+ self.class == o.class &&
375
+ invoice_id == o.invoice_id &&
376
+ issue_date == o.issue_date &&
377
+ type_code == o.type_code &&
378
+ currency == o.currency &&
379
+ due_date == o.due_date &&
380
+ seller_siren == o.seller_siren &&
381
+ seller_vat_id == o.seller_vat_id &&
382
+ seller_country == o.seller_country &&
383
+ buyer_id == o.buyer_id &&
384
+ buyer_vat_id == o.buyer_vat_id &&
385
+ buyer_country == o.buyer_country &&
386
+ tax_exclusive_amount == o.tax_exclusive_amount &&
387
+ tax_amount == o.tax_amount &&
388
+ tax_breakdown == o.tax_breakdown &&
389
+ referenced_invoice_id == o.referenced_invoice_id &&
390
+ referenced_invoice_date == o.referenced_invoice_date
391
+ end
392
+
393
+ # @see the `==` method
394
+ # @param [Object] Object to be compared
395
+ def eql?(o)
396
+ self == o
397
+ end
398
+
399
+ # Calculates hash code according to all attributes.
400
+ # @return [Integer] Hash code
401
+ def hash
402
+ [invoice_id, issue_date, type_code, currency, due_date, seller_siren, seller_vat_id, seller_country, buyer_id, buyer_vat_id, buyer_country, tax_exclusive_amount, tax_amount, tax_breakdown, referenced_invoice_id, referenced_invoice_date].hash
403
+ end
404
+
405
+ # Builds the object from hash
406
+ # @param [Hash] attributes Model attributes in the form of hash
407
+ # @return [Object] Returns the model itself
408
+ def self.build_from_hash(attributes)
409
+ return nil unless attributes.is_a?(Hash)
410
+ attributes = attributes.transform_keys(&:to_sym)
411
+ transformed_hash = {}
412
+ openapi_types.each_pair do |key, type|
413
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
414
+ transformed_hash["#{key}"] = nil
415
+ elsif type =~ /\AArray<(.*)>/i
416
+ # check to ensure the input is an array given that the attribute
417
+ # is documented as an array but the input is not
418
+ if attributes[attribute_map[key]].is_a?(Array)
419
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
420
+ end
421
+ elsif !attributes[attribute_map[key]].nil?
422
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
423
+ end
424
+ end
425
+ new(transformed_hash)
426
+ end
427
+
428
+ # Returns the object in the form of hash
429
+ # @return [Hash] Returns the object in the form of hash
430
+ def to_hash
431
+ hash = {}
432
+ self.class.attribute_map.each_pair do |attr, param|
433
+ value = self.send(attr)
434
+ if value.nil?
435
+ is_nullable = self.class.openapi_nullable.include?(attr)
436
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
437
+ end
438
+
439
+ hash[param] = _to_hash(value)
440
+ end
441
+ hash
442
+ end
443
+
444
+ end
445
+
446
+ end
@@ -1,10 +1,10 @@
1
1
  =begin
2
2
  #FactPulse REST API
3
3
 
4
- # REST API for electronic invoicing in France: Factur-X, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Factur-X 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://www.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://www.factpulse.fr/accounts/password/set/ - Once the password is created, you can use the API **Request example:** ```bash curl -X POST https://www.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://www.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://www.factpulse.fr/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://www.factpulse.fr/documentation-api/
4
+ # 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/
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
-
7
+ Contact: contact@factpulse.fr
8
8
  Generated by: https://openapi-generator.tech
9
9
  Generator version: 7.19.0-SNAPSHOT
10
10
 
@@ -21,6 +21,10 @@ module FactPulse
21
21
 
22
22
  attr_accessor :line_note
23
23
 
24
+ attr_accessor :parent_line_id
25
+
26
+ attr_accessor :line_sub_type
27
+
24
28
  attr_accessor :reference
25
29
 
26
30
  attr_accessor :buyer_assigned_id
@@ -110,6 +114,8 @@ module FactPulse
110
114
  {
111
115
  :'line_number' => :'line_number',
112
116
  :'line_note' => :'line_note',
117
+ :'parent_line_id' => :'parent_line_id',
118
+ :'line_sub_type' => :'line_sub_type',
113
119
  :'reference' => :'reference',
114
120
  :'buyer_assigned_id' => :'buyer_assigned_id',
115
121
  :'product_global_id' => :'product_global_id',
@@ -158,6 +164,8 @@ module FactPulse
158
164
  {
159
165
  :'line_number' => :'Integer',
160
166
  :'line_note' => :'String',
167
+ :'parent_line_id' => :'String',
168
+ :'line_sub_type' => :'LineSubType',
161
169
  :'reference' => :'String',
162
170
  :'buyer_assigned_id' => :'String',
163
171
  :'product_global_id' => :'String',
@@ -195,6 +203,8 @@ module FactPulse
195
203
  def self.openapi_nullable
196
204
  Set.new([
197
205
  :'line_note',
206
+ :'parent_line_id',
207
+ :'line_sub_type',
198
208
  :'reference',
199
209
  :'buyer_assigned_id',
200
210
  :'product_global_id',
@@ -249,6 +259,14 @@ module FactPulse
249
259
  self.line_note = attributes[:'line_note']
250
260
  end
251
261
 
262
+ if attributes.key?(:'parent_line_id')
263
+ self.parent_line_id = attributes[:'parent_line_id']
264
+ end
265
+
266
+ if attributes.key?(:'line_sub_type')
267
+ self.line_sub_type = attributes[:'line_sub_type']
268
+ end
269
+
252
270
  if attributes.key?(:'reference')
253
271
  self.reference = attributes[:'reference']
254
272
  end
@@ -485,6 +503,8 @@ module FactPulse
485
503
  self.class == o.class &&
486
504
  line_number == o.line_number &&
487
505
  line_note == o.line_note &&
506
+ parent_line_id == o.parent_line_id &&
507
+ line_sub_type == o.line_sub_type &&
488
508
  reference == o.reference &&
489
509
  buyer_assigned_id == o.buyer_assigned_id &&
490
510
  product_global_id == o.product_global_id &&
@@ -526,7 +546,7 @@ module FactPulse
526
546
  # Calculates hash code according to all attributes.
527
547
  # @return [Integer] Hash code
528
548
  def hash
529
- [line_number, line_note, reference, buyer_assigned_id, product_global_id, product_global_id_scheme, item_name, item_description, origin_country, characteristics, classifications, quantity, unit, gross_unit_price, unit_net_price, price_basis_quantity, price_basis_unit, price_allowance_amount, line_net_amount, allowance_amount, allowance_reason_code, allowance_reason, allowances_charges, vat_rate, manual_vat_rate, vat_category, period_start_date, period_end_date, purchase_order_line_ref, accounting_account, additional_documents, line_notes].hash
549
+ [line_number, line_note, parent_line_id, line_sub_type, reference, buyer_assigned_id, product_global_id, product_global_id_scheme, item_name, item_description, origin_country, characteristics, classifications, quantity, unit, gross_unit_price, unit_net_price, price_basis_quantity, price_basis_unit, price_allowance_amount, line_net_amount, allowance_amount, allowance_reason_code, allowance_reason, allowances_charges, vat_rate, manual_vat_rate, vat_category, period_start_date, period_end_date, purchase_order_line_ref, accounting_account, additional_documents, line_notes].hash
530
550
  end
531
551
 
532
552
  # Builds the object from hash
@@ -1,10 +1,10 @@
1
1
  =begin
2
2
  #FactPulse REST API
3
3
 
4
- # REST API for electronic invoicing in France: Factur-X, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Factur-X 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://www.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://www.factpulse.fr/accounts/password/set/ - Once the password is created, you can use the API **Request example:** ```bash curl -X POST https://www.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://www.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://www.factpulse.fr/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://www.factpulse.fr/documentation-api/
4
+ # 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/
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
-
7
+ Contact: contact@factpulse.fr
8
8
  Generated by: https://openapi-generator.tech
9
9
  Generator version: 7.19.0-SNAPSHOT
10
10
 
@@ -1,10 +1,10 @@
1
1
  =begin
2
2
  #FactPulse REST API
3
3
 
4
- # REST API for electronic invoicing in France: Factur-X, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Factur-X 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://www.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://www.factpulse.fr/accounts/password/set/ - Once the password is created, you can use the API **Request example:** ```bash curl -X POST https://www.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://www.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://www.factpulse.fr/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://www.factpulse.fr/documentation-api/
4
+ # 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/
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
-
7
+ Contact: contact@factpulse.fr
8
8
  Generated by: https://openapi-generator.tech
9
9
  Generator version: 7.19.0-SNAPSHOT
10
10
 
@@ -18,6 +18,7 @@ module FactPulse
18
18
  class InvoiceNote < ApiModelBase
19
19
  attr_accessor :subject_code
20
20
 
21
+ # Note content
21
22
  attr_accessor :content
22
23
 
23
24
  # Attribute mapping from ruby-style variable name to JSON key.