factpulse 3.0.10 → 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,191 @@
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
+ class AFNORSearchSiren < ApiModelBase
18
+ attr_accessor :filters
19
+
20
+ # Sorting criteria on a field and an order (ascending or descending).
21
+ attr_accessor :sorting
22
+
23
+ # Allows you to filter the desired fields in the response.
24
+ attr_accessor :fields
25
+
26
+ # Maximum number of results
27
+ attr_accessor :limit
28
+
29
+ # Number of results to skip
30
+ attr_accessor :ignore
31
+
32
+ # Attribute mapping from ruby-style variable name to JSON key.
33
+ def self.attribute_map
34
+ {
35
+ :'filters' => :'filters',
36
+ :'sorting' => :'sorting',
37
+ :'fields' => :'fields',
38
+ :'limit' => :'limit',
39
+ :'ignore' => :'ignore'
40
+ }
41
+ end
42
+
43
+ # Returns attribute mapping this model knows about
44
+ def self.acceptable_attribute_map
45
+ attribute_map
46
+ end
47
+
48
+ # Returns all the JSON keys this model knows about
49
+ def self.acceptable_attributes
50
+ acceptable_attribute_map.values
51
+ end
52
+
53
+ # Attribute type mapping.
54
+ def self.openapi_types
55
+ {
56
+ :'filters' => :'AFNORSearchSirenFilters',
57
+ :'sorting' => :'Array<AFNORSearchSirenSortingInner>',
58
+ :'fields' => :'Array<AFNORSirenField>',
59
+ :'limit' => :'Integer',
60
+ :'ignore' => :'Integer'
61
+ }
62
+ end
63
+
64
+ # List of attributes with nullable: true
65
+ def self.openapi_nullable
66
+ Set.new([
67
+ ])
68
+ end
69
+
70
+ # Initializes the object
71
+ # @param [Hash] attributes Model attributes in the form of hash
72
+ def initialize(attributes = {})
73
+ if (!attributes.is_a?(Hash))
74
+ fail ArgumentError, "The input argument (attributes) must be a hash in `FactPulse::AFNORSearchSiren` initialize method"
75
+ end
76
+
77
+ # check to see if the attribute exists and convert string to symbol for hash key
78
+ acceptable_attribute_map = self.class.acceptable_attribute_map
79
+ attributes = attributes.each_with_object({}) { |(k, v), h|
80
+ if (!acceptable_attribute_map.key?(k.to_sym))
81
+ fail ArgumentError, "`#{k}` is not a valid attribute in `FactPulse::AFNORSearchSiren`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
82
+ end
83
+ h[k.to_sym] = v
84
+ }
85
+
86
+ if attributes.key?(:'filters')
87
+ self.filters = attributes[:'filters']
88
+ end
89
+
90
+ if attributes.key?(:'sorting')
91
+ if (value = attributes[:'sorting']).is_a?(Array)
92
+ self.sorting = value
93
+ end
94
+ end
95
+
96
+ if attributes.key?(:'fields')
97
+ if (value = attributes[:'fields']).is_a?(Array)
98
+ self.fields = value
99
+ end
100
+ end
101
+
102
+ if attributes.key?(:'limit')
103
+ self.limit = attributes[:'limit']
104
+ end
105
+
106
+ if attributes.key?(:'ignore')
107
+ self.ignore = attributes[:'ignore']
108
+ end
109
+ end
110
+
111
+ # Show invalid properties with the reasons. Usually used together with valid?
112
+ # @return Array for valid properties with the reasons
113
+ def list_invalid_properties
114
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
115
+ invalid_properties = Array.new
116
+ invalid_properties
117
+ end
118
+
119
+ # Check to see if the all the properties in the model are valid
120
+ # @return true if the model is valid
121
+ def valid?
122
+ warn '[DEPRECATED] the `valid?` method is obsolete'
123
+ true
124
+ end
125
+
126
+ # Checks equality by comparing each attribute.
127
+ # @param [Object] Object to be compared
128
+ def ==(o)
129
+ return true if self.equal?(o)
130
+ self.class == o.class &&
131
+ filters == o.filters &&
132
+ sorting == o.sorting &&
133
+ fields == o.fields &&
134
+ limit == o.limit &&
135
+ ignore == o.ignore
136
+ end
137
+
138
+ # @see the `==` method
139
+ # @param [Object] Object to be compared
140
+ def eql?(o)
141
+ self == o
142
+ end
143
+
144
+ # Calculates hash code according to all attributes.
145
+ # @return [Integer] Hash code
146
+ def hash
147
+ [filters, sorting, fields, limit, ignore].hash
148
+ end
149
+
150
+ # Builds the object from hash
151
+ # @param [Hash] attributes Model attributes in the form of hash
152
+ # @return [Object] Returns the model itself
153
+ def self.build_from_hash(attributes)
154
+ return nil unless attributes.is_a?(Hash)
155
+ attributes = attributes.transform_keys(&:to_sym)
156
+ transformed_hash = {}
157
+ openapi_types.each_pair do |key, type|
158
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
159
+ transformed_hash["#{key}"] = nil
160
+ elsif type =~ /\AArray<(.*)>/i
161
+ # check to ensure the input is an array given that the attribute
162
+ # is documented as an array but the input is not
163
+ if attributes[attribute_map[key]].is_a?(Array)
164
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
165
+ end
166
+ elsif !attributes[attribute_map[key]].nil?
167
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
168
+ end
169
+ end
170
+ new(transformed_hash)
171
+ end
172
+
173
+ # Returns the object in the form of hash
174
+ # @return [Hash] Returns the object in the form of hash
175
+ def to_hash
176
+ hash = {}
177
+ self.class.attribute_map.each_pair do |attr, param|
178
+ value = self.send(attr)
179
+ if value.nil?
180
+ is_nullable = self.class.openapi_nullable.include?(attr)
181
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
182
+ end
183
+
184
+ hash[param] = _to_hash(value)
185
+ end
186
+ hash
187
+ end
188
+
189
+ end
190
+
191
+ end
@@ -0,0 +1,174 @@
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
+ class AFNORSearchSirenFilters < ApiModelBase
18
+ attr_accessor :siren
19
+
20
+ attr_accessor :business_name
21
+
22
+ attr_accessor :entity_type
23
+
24
+ attr_accessor :administrative_status
25
+
26
+ # Attribute mapping from ruby-style variable name to JSON key.
27
+ def self.attribute_map
28
+ {
29
+ :'siren' => :'siren',
30
+ :'business_name' => :'businessName',
31
+ :'entity_type' => :'entityType',
32
+ :'administrative_status' => :'administrativeStatus'
33
+ }
34
+ end
35
+
36
+ # Returns attribute mapping this model knows about
37
+ def self.acceptable_attribute_map
38
+ attribute_map
39
+ end
40
+
41
+ # Returns all the JSON keys this model knows about
42
+ def self.acceptable_attributes
43
+ acceptable_attribute_map.values
44
+ end
45
+
46
+ # Attribute type mapping.
47
+ def self.openapi_types
48
+ {
49
+ :'siren' => :'AFNORSearchSirenFiltersSiren',
50
+ :'business_name' => :'AFNORSearchSirenFiltersBusinessName',
51
+ :'entity_type' => :'AFNORSearchSirenFiltersEntityType',
52
+ :'administrative_status' => :'AFNORSearchSirenFiltersAdministrativeStatus'
53
+ }
54
+ end
55
+
56
+ # List of attributes with nullable: true
57
+ def self.openapi_nullable
58
+ Set.new([
59
+ ])
60
+ end
61
+
62
+ # Initializes the object
63
+ # @param [Hash] attributes Model attributes in the form of hash
64
+ def initialize(attributes = {})
65
+ if (!attributes.is_a?(Hash))
66
+ fail ArgumentError, "The input argument (attributes) must be a hash in `FactPulse::AFNORSearchSirenFilters` initialize method"
67
+ end
68
+
69
+ # check to see if the attribute exists and convert string to symbol for hash key
70
+ acceptable_attribute_map = self.class.acceptable_attribute_map
71
+ attributes = attributes.each_with_object({}) { |(k, v), h|
72
+ if (!acceptable_attribute_map.key?(k.to_sym))
73
+ fail ArgumentError, "`#{k}` is not a valid attribute in `FactPulse::AFNORSearchSirenFilters`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
74
+ end
75
+ h[k.to_sym] = v
76
+ }
77
+
78
+ if attributes.key?(:'siren')
79
+ self.siren = attributes[:'siren']
80
+ end
81
+
82
+ if attributes.key?(:'business_name')
83
+ self.business_name = attributes[:'business_name']
84
+ end
85
+
86
+ if attributes.key?(:'entity_type')
87
+ self.entity_type = attributes[:'entity_type']
88
+ end
89
+
90
+ if attributes.key?(:'administrative_status')
91
+ self.administrative_status = attributes[:'administrative_status']
92
+ end
93
+ end
94
+
95
+ # Show invalid properties with the reasons. Usually used together with valid?
96
+ # @return Array for valid properties with the reasons
97
+ def list_invalid_properties
98
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
99
+ invalid_properties = Array.new
100
+ invalid_properties
101
+ end
102
+
103
+ # Check to see if the all the properties in the model are valid
104
+ # @return true if the model is valid
105
+ def valid?
106
+ warn '[DEPRECATED] the `valid?` method is obsolete'
107
+ true
108
+ end
109
+
110
+ # Checks equality by comparing each attribute.
111
+ # @param [Object] Object to be compared
112
+ def ==(o)
113
+ return true if self.equal?(o)
114
+ self.class == o.class &&
115
+ siren == o.siren &&
116
+ business_name == o.business_name &&
117
+ entity_type == o.entity_type &&
118
+ administrative_status == o.administrative_status
119
+ end
120
+
121
+ # @see the `==` method
122
+ # @param [Object] Object to be compared
123
+ def eql?(o)
124
+ self == o
125
+ end
126
+
127
+ # Calculates hash code according to all attributes.
128
+ # @return [Integer] Hash code
129
+ def hash
130
+ [siren, business_name, entity_type, administrative_status].hash
131
+ end
132
+
133
+ # Builds the object from hash
134
+ # @param [Hash] attributes Model attributes in the form of hash
135
+ # @return [Object] Returns the model itself
136
+ def self.build_from_hash(attributes)
137
+ return nil unless attributes.is_a?(Hash)
138
+ attributes = attributes.transform_keys(&:to_sym)
139
+ transformed_hash = {}
140
+ openapi_types.each_pair do |key, type|
141
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
142
+ transformed_hash["#{key}"] = nil
143
+ elsif type =~ /\AArray<(.*)>/i
144
+ # check to ensure the input is an array given that the attribute
145
+ # is documented as an array but the input is not
146
+ if attributes[attribute_map[key]].is_a?(Array)
147
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
148
+ end
149
+ elsif !attributes[attribute_map[key]].nil?
150
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
151
+ end
152
+ end
153
+ new(transformed_hash)
154
+ end
155
+
156
+ # Returns the object in the form of hash
157
+ # @return [Hash] Returns the object in the form of hash
158
+ def to_hash
159
+ hash = {}
160
+ self.class.attribute_map.each_pair do |attr, param|
161
+ value = self.send(attr)
162
+ if value.nil?
163
+ is_nullable = self.class.openapi_nullable.include?(attr)
164
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
165
+ end
166
+
167
+ hash[param] = _to_hash(value)
168
+ end
169
+ hash
170
+ end
171
+
172
+ end
173
+
174
+ end
@@ -0,0 +1,178 @@
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
+ class AFNORSearchSirenFiltersAdministrativeStatus < ApiModelBase
18
+ attr_accessor :op
19
+
20
+ attr_accessor :value
21
+
22
+ class EnumAttributeValidator
23
+ attr_reader :datatype
24
+ attr_reader :allowable_values
25
+
26
+ def initialize(datatype, allowable_values)
27
+ @allowable_values = allowable_values.map do |value|
28
+ case datatype.to_s
29
+ when /Integer/i
30
+ value.to_i
31
+ when /Float/i
32
+ value.to_f
33
+ else
34
+ value
35
+ end
36
+ end
37
+ end
38
+
39
+ def valid?(value)
40
+ !value || allowable_values.include?(value)
41
+ end
42
+ end
43
+
44
+ # Attribute mapping from ruby-style variable name to JSON key.
45
+ def self.attribute_map
46
+ {
47
+ :'op' => :'op',
48
+ :'value' => :'value'
49
+ }
50
+ end
51
+
52
+ # Returns attribute mapping this model knows about
53
+ def self.acceptable_attribute_map
54
+ attribute_map
55
+ end
56
+
57
+ # Returns all the JSON keys this model knows about
58
+ def self.acceptable_attributes
59
+ acceptable_attribute_map.values
60
+ end
61
+
62
+ # Attribute type mapping.
63
+ def self.openapi_types
64
+ {
65
+ :'op' => :'AFNORStrictOperator',
66
+ :'value' => :'AFNORLegalUnitAdministrativeStatus'
67
+ }
68
+ end
69
+
70
+ # List of attributes with nullable: true
71
+ def self.openapi_nullable
72
+ Set.new([
73
+ ])
74
+ end
75
+
76
+ # Initializes the object
77
+ # @param [Hash] attributes Model attributes in the form of hash
78
+ def initialize(attributes = {})
79
+ if (!attributes.is_a?(Hash))
80
+ fail ArgumentError, "The input argument (attributes) must be a hash in `FactPulse::AFNORSearchSirenFiltersAdministrativeStatus` initialize method"
81
+ end
82
+
83
+ # check to see if the attribute exists and convert string to symbol for hash key
84
+ acceptable_attribute_map = self.class.acceptable_attribute_map
85
+ attributes = attributes.each_with_object({}) { |(k, v), h|
86
+ if (!acceptable_attribute_map.key?(k.to_sym))
87
+ fail ArgumentError, "`#{k}` is not a valid attribute in `FactPulse::AFNORSearchSirenFiltersAdministrativeStatus`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
88
+ end
89
+ h[k.to_sym] = v
90
+ }
91
+
92
+ if attributes.key?(:'op')
93
+ self.op = attributes[:'op']
94
+ end
95
+
96
+ if attributes.key?(:'value')
97
+ self.value = attributes[:'value']
98
+ end
99
+ end
100
+
101
+ # Show invalid properties with the reasons. Usually used together with valid?
102
+ # @return Array for valid properties with the reasons
103
+ def list_invalid_properties
104
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
105
+ invalid_properties = Array.new
106
+ invalid_properties
107
+ end
108
+
109
+ # Check to see if the all the properties in the model are valid
110
+ # @return true if the model is valid
111
+ def valid?
112
+ warn '[DEPRECATED] the `valid?` method is obsolete'
113
+ true
114
+ end
115
+
116
+ # Checks equality by comparing each attribute.
117
+ # @param [Object] Object to be compared
118
+ def ==(o)
119
+ return true if self.equal?(o)
120
+ self.class == o.class &&
121
+ op == o.op &&
122
+ value == o.value
123
+ end
124
+
125
+ # @see the `==` method
126
+ # @param [Object] Object to be compared
127
+ def eql?(o)
128
+ self == o
129
+ end
130
+
131
+ # Calculates hash code according to all attributes.
132
+ # @return [Integer] Hash code
133
+ def hash
134
+ [op, value].hash
135
+ end
136
+
137
+ # Builds the object from hash
138
+ # @param [Hash] attributes Model attributes in the form of hash
139
+ # @return [Object] Returns the model itself
140
+ def self.build_from_hash(attributes)
141
+ return nil unless attributes.is_a?(Hash)
142
+ attributes = attributes.transform_keys(&:to_sym)
143
+ transformed_hash = {}
144
+ openapi_types.each_pair do |key, type|
145
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
146
+ transformed_hash["#{key}"] = nil
147
+ elsif type =~ /\AArray<(.*)>/i
148
+ # check to ensure the input is an array given that the attribute
149
+ # is documented as an array but the input is not
150
+ if attributes[attribute_map[key]].is_a?(Array)
151
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
152
+ end
153
+ elsif !attributes[attribute_map[key]].nil?
154
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
155
+ end
156
+ end
157
+ new(transformed_hash)
158
+ end
159
+
160
+ # Returns the object in the form of hash
161
+ # @return [Hash] Returns the object in the form of hash
162
+ def to_hash
163
+ hash = {}
164
+ self.class.attribute_map.each_pair do |attr, param|
165
+ value = self.send(attr)
166
+ if value.nil?
167
+ is_nullable = self.class.openapi_nullable.include?(attr)
168
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
169
+ end
170
+
171
+ hash[param] = _to_hash(value)
172
+ end
173
+ hash
174
+ end
175
+
176
+ end
177
+
178
+ end