factpulse 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (671) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +17 -0
  3. data/Gemfile +9 -0
  4. data/Gemfile.lock +74 -0
  5. data/LICENSE +21 -0
  6. data/README.md +220 -0
  7. data/Rakefile +10 -0
  8. data/docs/AFNORAcknowledgement.md +20 -0
  9. data/docs/AFNORAcknowledgementDetail.md +24 -0
  10. data/docs/AFNORAddressEdit.md +30 -0
  11. data/docs/AFNORAddressPatch.md +30 -0
  12. data/docs/AFNORAddressPut.md +30 -0
  13. data/docs/AFNORAddressRead.md +32 -0
  14. data/docs/AFNORAlgorithm.md +15 -0
  15. data/docs/AFNORContainsOperator.md +15 -0
  16. data/docs/AFNORCreateDirectoryLineBody.md +20 -0
  17. data/docs/AFNORCreateDirectoryLineBodyAddressingInformation.md +24 -0
  18. data/docs/AFNORCreateDirectoryLineBodyPeriod.md +20 -0
  19. data/docs/AFNORCreateRoutingCodeBody.md +32 -0
  20. data/docs/AFNORCredentials.md +22 -0
  21. data/docs/AFNORDestination.md +26 -0
  22. data/docs/AFNORDiffusionStatus.md +15 -0
  23. data/docs/AFNORDirectoryLineField.md +15 -0
  24. data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCode.md +32 -0
  25. data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCodePlatform.md +20 -0
  26. data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCodeRoutingCode.md +28 -0
  27. data/docs/AFNORDirectoryLinePost201Response.md +22 -0
  28. data/docs/AFNORDirectoryLineSearchPost200Response.md +22 -0
  29. data/docs/AFNOREntityType.md +15 -0
  30. data/docs/AFNORError.md +26 -0
  31. data/docs/AFNORFacilityAdministrativeStatus.md +15 -0
  32. data/docs/AFNORFacilityNature.md +15 -0
  33. data/docs/AFNORFacilityPayloadHistory.md +34 -0
  34. data/docs/AFNORFacilityPayloadHistoryUleB2gAdditionalData.md +28 -0
  35. data/docs/AFNORFacilityPayloadIncluded.md +32 -0
  36. data/docs/AFNORFacilityType.md +15 -0
  37. data/docs/AFNORFlow.md +38 -0
  38. data/docs/AFNORFlowAckStatus.md +15 -0
  39. data/docs/AFNORFlowDirection.md +15 -0
  40. data/docs/AFNORFlowInfo.md +28 -0
  41. data/docs/AFNORFlowProfile.md +15 -0
  42. data/docs/AFNORFlowSyntax.md +15 -0
  43. data/docs/AFNORFlowType.md +15 -0
  44. data/docs/AFNORFullFlowInfo.md +32 -0
  45. data/docs/AFNORHealthCheckResponse.md +22 -0
  46. data/docs/AFNORLegalUnitAdministrativeStatus.md +15 -0
  47. data/docs/AFNORLegalUnitPayloadHistory.md +24 -0
  48. data/docs/AFNORLegalUnitPayloadIncluded.md +24 -0
  49. data/docs/AFNORLegalUnitPayloadIncludedNoSiren.md +22 -0
  50. data/docs/AFNORPDPPAApi.md +150 -0
  51. data/docs/AFNORPDPPADirectoryServiceApi.md +1223 -0
  52. data/docs/AFNORPDPPAFlowServiceApi.md +270 -0
  53. data/docs/AFNORPlatformStatus.md +15 -0
  54. data/docs/AFNORProcessingRule.md +15 -0
  55. data/docs/AFNORReasonCode.md +49 -0
  56. data/docs/AFNORReasonCodeEnum.md +15 -0
  57. data/docs/AFNORRecipientPlatformType.md +15 -0
  58. data/docs/AFNORResult.md +32 -0
  59. data/docs/AFNORRoutingCodeAdministrativeStatus.md +15 -0
  60. data/docs/AFNORRoutingCodeField.md +15 -0
  61. data/docs/AFNORRoutingCodePayloadHistoryLegalUnitFacility.md +34 -0
  62. data/docs/AFNORRoutingCodePost201Response.md +22 -0
  63. data/docs/AFNORRoutingCodeSearch.md +28 -0
  64. data/docs/AFNORRoutingCodeSearchFilters.md +30 -0
  65. data/docs/AFNORRoutingCodeSearchFiltersAdministrativeStatus.md +20 -0
  66. data/docs/AFNORRoutingCodeSearchFiltersRoutingCodeName.md +20 -0
  67. data/docs/AFNORRoutingCodeSearchFiltersRoutingIdentifier.md +20 -0
  68. data/docs/AFNORRoutingCodeSearchPost200Response.md +22 -0
  69. data/docs/AFNORRoutingCodeSearchSortingInner.md +20 -0
  70. data/docs/AFNORSearchDirectoryLine.md +26 -0
  71. data/docs/AFNORSearchDirectoryLineFilters.md +26 -0
  72. data/docs/AFNORSearchDirectoryLineFiltersAddressingIdentifier.md +20 -0
  73. data/docs/AFNORSearchDirectoryLineFiltersAddressingSuffix.md +20 -0
  74. data/docs/AFNORSearchDirectoryLineSortingInner.md +20 -0
  75. data/docs/AFNORSearchFlowContent.md +22 -0
  76. data/docs/AFNORSearchFlowFilters.md +30 -0
  77. data/docs/AFNORSearchFlowParams.md +20 -0
  78. data/docs/AFNORSearchSiren.md +26 -0
  79. data/docs/AFNORSearchSirenFilters.md +24 -0
  80. data/docs/AFNORSearchSirenFiltersAdministrativeStatus.md +20 -0
  81. data/docs/AFNORSearchSirenFiltersBusinessName.md +20 -0
  82. data/docs/AFNORSearchSirenFiltersEntityType.md +20 -0
  83. data/docs/AFNORSearchSirenFiltersSiren.md +20 -0
  84. data/docs/AFNORSearchSirenSortingInner.md +20 -0
  85. data/docs/AFNORSearchSiret.md +28 -0
  86. data/docs/AFNORSearchSiretFilters.md +34 -0
  87. data/docs/AFNORSearchSiretFiltersAddressLines.md +20 -0
  88. data/docs/AFNORSearchSiretFiltersAdministrativeStatus.md +20 -0
  89. data/docs/AFNORSearchSiretFiltersCountrySubdivision.md +20 -0
  90. data/docs/AFNORSearchSiretFiltersFacilityType.md +20 -0
  91. data/docs/AFNORSearchSiretFiltersLocality.md +20 -0
  92. data/docs/AFNORSearchSiretFiltersName.md +20 -0
  93. data/docs/AFNORSearchSiretFiltersPostalCode.md +20 -0
  94. data/docs/AFNORSearchSiretFiltersSiret.md +20 -0
  95. data/docs/AFNORSearchSiretSortingInner.md +20 -0
  96. data/docs/AFNORSirenField.md +15 -0
  97. data/docs/AFNORSirenSearchPost200Response.md +22 -0
  98. data/docs/AFNORSiretField.md +15 -0
  99. data/docs/AFNORSiretSearchPost200Response.md +22 -0
  100. data/docs/AFNORSortingOrder.md +15 -0
  101. data/docs/AFNORStrictOperator.md +15 -0
  102. data/docs/AFNORUpdatePatchDirectoryLineBody.md +18 -0
  103. data/docs/AFNORUpdatePatchRoutingCodeBody.md +24 -0
  104. data/docs/AFNORUpdatePutRoutingCodeBody.md +24 -0
  105. data/docs/AFNORWebhookCallbackContent.md +18 -0
  106. data/docs/APIError.md +22 -0
  107. data/docs/APIProfile.md +15 -0
  108. data/docs/AcknowledgmentStatus.md +15 -0
  109. data/docs/ActionCodeInfo.md +22 -0
  110. data/docs/ActionCodesResponse.md +22 -0
  111. data/docs/AdditionalDocument.md +26 -0
  112. data/docs/AggregatedPaymentInput.md +22 -0
  113. data/docs/AggregatedTransactionInput.md +32 -0
  114. data/docs/AllowanceCharge.md +32 -0
  115. data/docs/AllowanceChargeReasonCode.md +15 -0
  116. data/docs/AllowanceReasonCode.md +15 -0
  117. data/docs/AllowanceTotalAmount.md +15 -0
  118. data/docs/Amount.md +15 -0
  119. data/docs/Amount1.md +15 -0
  120. data/docs/Amount2.md +15 -0
  121. data/docs/AmountDue.md +15 -0
  122. data/docs/AsyncTaskStatus.md +22 -0
  123. data/docs/AsyncTasksApi.md +82 -0
  124. data/docs/BaseAmount.md +15 -0
  125. data/docs/BoundingBoxSchema.md +30 -0
  126. data/docs/Buyercountry.md +15 -0
  127. data/docs/CeleryStatus.md +15 -0
  128. data/docs/CertificateInfoResponse.md +40 -0
  129. data/docs/ChargeTotalAmount.md +15 -0
  130. data/docs/ChorusProApi.md +1207 -0
  131. data/docs/ChorusProCredentials.md +26 -0
  132. data/docs/ChorusProDestination.md +20 -0
  133. data/docs/ChorusProResult.md +22 -0
  134. data/docs/ClientActivateResponse.md +22 -0
  135. data/docs/ClientCreateRequest.md +22 -0
  136. data/docs/ClientDetail.md +38 -0
  137. data/docs/ClientListResponse.md +24 -0
  138. data/docs/ClientManagementApi.md +921 -0
  139. data/docs/ClientSummary.md +38 -0
  140. data/docs/ClientUpdateRequest.md +22 -0
  141. data/docs/Contact.md +24 -0
  142. data/docs/ConvertResumeRequest.md +18 -0
  143. data/docs/ConvertSuccessResponse.md +36 -0
  144. data/docs/ConvertValidationFailedResponse.md +34 -0
  145. data/docs/CountryCode.md +15 -0
  146. data/docs/CreateAggregatedReportRequest.md +36 -0
  147. data/docs/CreateCDARRequest.md +52 -0
  148. data/docs/CreateEReportingRequest.md +38 -0
  149. data/docs/Currency.md +15 -0
  150. data/docs/CurrencyCode.md +15 -0
  151. data/docs/DeliveryParty.md +24 -0
  152. data/docs/Destination.md +79 -0
  153. data/docs/DocType.md +15 -0
  154. data/docs/DocumentTypeInfo.md +22 -0
  155. data/docs/DownloadsApi.md +161 -0
  156. data/docs/EReportingFlowType.md +15 -0
  157. data/docs/EReportingValidationError.md +22 -0
  158. data/docs/ElectronicAddress.md +20 -0
  159. data/docs/ElectronicSignatureApi.md +339 -0
  160. data/docs/Encaisseamount.md +15 -0
  161. data/docs/Encaisseamount1.md +15 -0
  162. data/docs/EncaisseeRequest.md +40 -0
  163. data/docs/EnrichedInvoiceInfo.md +32 -0
  164. data/docs/ErrorLevel.md +15 -0
  165. data/docs/ErrorSource.md +15 -0
  166. data/docs/ExtractionInfo.md +24 -0
  167. data/docs/FacturXConversionApi.md +319 -0
  168. data/docs/FacturXGenerationApi.md +254 -0
  169. data/docs/FacturXInvoice.md +76 -0
  170. data/docs/FacturXPDFInfo.md +22 -0
  171. data/docs/FacturXPDFXMLVerificationApi.md +240 -0
  172. data/docs/FacturXValidationApi.md +256 -0
  173. data/docs/FactureElectroniqueRestApiSchemasEreportingInvoiceTypeCode.md +15 -0
  174. data/docs/FactureElectroniqueRestApiSchemasProcessingChorusProCredentials.md +26 -0
  175. data/docs/FactureElectroniqueRestApiSchemasValidationValidationErrorResponse.md +18 -0
  176. data/docs/FieldStatus.md +15 -0
  177. data/docs/FileInfo.md +20 -0
  178. data/docs/FilesInfo.md +20 -0
  179. data/docs/FlowDirection.md +15 -0
  180. data/docs/FlowProfile.md +15 -0
  181. data/docs/FlowSummary.md +32 -0
  182. data/docs/FlowSyntax.md +15 -0
  183. data/docs/FlowType.md +15 -0
  184. data/docs/Flux10EReportingApi.md +814 -0
  185. data/docs/Flux6InvoiceLifecycleCDARApi.md +698 -0
  186. data/docs/GenerateAggregatedReportResponse.md +30 -0
  187. data/docs/GenerateCDARResponse.md +26 -0
  188. data/docs/GenerateCertificateRequest.md +38 -0
  189. data/docs/GenerateCertificateResponse.md +32 -0
  190. data/docs/GenerateEReportingResponse.md +26 -0
  191. data/docs/GetChorusProIdRequest.md +22 -0
  192. data/docs/GetChorusProIdResponse.md +24 -0
  193. data/docs/GetInvoiceRequest.md +20 -0
  194. data/docs/GetInvoiceResponse.md +34 -0
  195. data/docs/GetStructureRequest.md +22 -0
  196. data/docs/GetStructureResponse.md +34 -0
  197. data/docs/GlobalAllowanceAmount.md +15 -0
  198. data/docs/GrossUnitPrice.md +15 -0
  199. data/docs/HTTPValidationError.md +18 -0
  200. data/docs/HealthApi.md +203 -0
  201. data/docs/IncomingInvoice.md +54 -0
  202. data/docs/IncomingSupplier.md +32 -0
  203. data/docs/InvoiceFormat.md +15 -0
  204. data/docs/InvoiceInput.md +50 -0
  205. data/docs/InvoiceLine.md +84 -0
  206. data/docs/InvoiceLineAllowanceAmount.md +15 -0
  207. data/docs/InvoiceNote.md +20 -0
  208. data/docs/InvoicePaymentInput.md +26 -0
  209. data/docs/InvoiceReferences.md +52 -0
  210. data/docs/InvoiceStatus.md +22 -0
  211. data/docs/InvoiceTotals.md +38 -0
  212. data/docs/InvoiceTotalsPrepayment.md +15 -0
  213. data/docs/InvoiceTypeCode.md +15 -0
  214. data/docs/InvoiceTypeCodeOutput.md +15 -0
  215. data/docs/InvoicingFramework.md +24 -0
  216. data/docs/InvoicingFrameworkCode.md +15 -0
  217. data/docs/IssuerRoleCode.md +15 -0
  218. data/docs/KeyRotationRequest.md +20 -0
  219. data/docs/KeyRotationResponse.md +24 -0
  220. data/docs/LineNetAmount.md +15 -0
  221. data/docs/LineSubType.md +15 -0
  222. data/docs/LineTotalAmount.md +15 -0
  223. data/docs/LocationInner.md +15 -0
  224. data/docs/MandatoryNoteSchema.md +30 -0
  225. data/docs/ManualRate.md +15 -0
  226. data/docs/ManualVatRate.md +15 -0
  227. data/docs/MissingField.md +28 -0
  228. data/docs/OperationNature.md +15 -0
  229. data/docs/OutputFormat.md +15 -0
  230. data/docs/PDFValidationResultAPI.md +62 -0
  231. data/docs/PDPConfigResponse.md +46 -0
  232. data/docs/PDPConfigUpdateRequest.md +30 -0
  233. data/docs/PDPCredentials.md +26 -0
  234. data/docs/PageDimensionsSchema.md +20 -0
  235. data/docs/Payee.md +32 -0
  236. data/docs/PaymentAmountByRate.md +20 -0
  237. data/docs/PaymentCard.md +20 -0
  238. data/docs/PaymentMeans.md +15 -0
  239. data/docs/Percentage.md +15 -0
  240. data/docs/PostalAddress.md +30 -0
  241. data/docs/PriceAllowanceAmount.md +15 -0
  242. data/docs/PriceBasisQuantity.md +15 -0
  243. data/docs/ProcessingOptions.md +24 -0
  244. data/docs/ProcessingRule.md +15 -0
  245. data/docs/ProductCharacteristic.md +20 -0
  246. data/docs/ProductClassification.md +22 -0
  247. data/docs/Quantity.md +15 -0
  248. data/docs/Rate.md +15 -0
  249. data/docs/Rate1.md +15 -0
  250. data/docs/ReasonCodeInfo.md +22 -0
  251. data/docs/ReasonCodesResponse.md +22 -0
  252. data/docs/Recipient.md +34 -0
  253. data/docs/RecipientInput.md +26 -0
  254. data/docs/RefuseeRequest.md +40 -0
  255. data/docs/ReportIssuer.md +24 -0
  256. data/docs/ReportPeriod.md +20 -0
  257. data/docs/ReportSender.md +22 -0
  258. data/docs/RoundingAmount.md +15 -0
  259. data/docs/SchematronValidationError.md +32 -0
  260. data/docs/SchemeID.md +15 -0
  261. data/docs/SearchFlowRequest.md +34 -0
  262. data/docs/SearchFlowResponse.md +24 -0
  263. data/docs/SearchServicesResponse.md +24 -0
  264. data/docs/SearchStructureRequest.md +26 -0
  265. data/docs/SearchStructureResponse.md +24 -0
  266. data/docs/SecretStatus.md +24 -0
  267. data/docs/Sellercountry.md +15 -0
  268. data/docs/SignatureInfo.md +22 -0
  269. data/docs/SignatureInfoAPI.md +28 -0
  270. data/docs/SignatureParameters.md +34 -0
  271. data/docs/SimplifiedCDARResponse.md +26 -0
  272. data/docs/SimplifiedInvoiceData.md +42 -0
  273. data/docs/StatusCodeInfo.md +22 -0
  274. data/docs/StatusCodesResponse.md +22 -0
  275. data/docs/StructureInfo.md +26 -0
  276. data/docs/StructureParameters.md +22 -0
  277. data/docs/StructureService.md +24 -0
  278. data/docs/SubmissionMode.md +15 -0
  279. data/docs/SubmitAggregatedReportRequest.md +28 -0
  280. data/docs/SubmitCDARRequest.md +62 -0
  281. data/docs/SubmitCDARResponse.md +24 -0
  282. data/docs/SubmitCDARXMLRequest.md +30 -0
  283. data/docs/SubmitCompleteInvoiceRequest.md +26 -0
  284. data/docs/SubmitCompleteInvoiceResponse.md +34 -0
  285. data/docs/SubmitEReportingRequest.md +28 -0
  286. data/docs/SubmitEReportingResponse.md +32 -0
  287. data/docs/SubmitFlowRequest.md +28 -0
  288. data/docs/SubmitFlowResponse.md +30 -0
  289. data/docs/SubmitGrossAmount.md +15 -0
  290. data/docs/SubmitInvoiceRequest.md +46 -0
  291. data/docs/SubmitInvoiceResponse.md +24 -0
  292. data/docs/SubmitNetAmount.md +15 -0
  293. data/docs/SubmitVatAmount.md +15 -0
  294. data/docs/SupplementaryAttachment.md +26 -0
  295. data/docs/Supplier.md +52 -0
  296. data/docs/TaskResponse.md +18 -0
  297. data/docs/TaxBreakdownInput.md +22 -0
  298. data/docs/TaxDueDateType.md +15 -0
  299. data/docs/TaxRepresentative.md +22 -0
  300. data/docs/TaxableAmount.md +15 -0
  301. data/docs/Taxableamount.md +15 -0
  302. data/docs/Taxamount.md +15 -0
  303. data/docs/Taxamount1.md +15 -0
  304. data/docs/Taxamount2.md +15 -0
  305. data/docs/Taxexclusiveamount.md +15 -0
  306. data/docs/Taxexclusiveamount1.md +15 -0
  307. data/docs/TotalGrossAmount.md +15 -0
  308. data/docs/TotalNetAmount.md +15 -0
  309. data/docs/TotalVATAmount.md +15 -0
  310. data/docs/TransactionCategory.md +15 -0
  311. data/docs/TransmissionTypeCode.md +15 -0
  312. data/docs/UnitNetPrice.md +15 -0
  313. data/docs/UnitOfMeasure.md +15 -0
  314. data/docs/VATAccountingCode.md +15 -0
  315. data/docs/VATAmount.md +15 -0
  316. data/docs/VATCategory.md +15 -0
  317. data/docs/VATLine.md +32 -0
  318. data/docs/VATPointDateCode.md +15 -0
  319. data/docs/ValidateCDARRequest.md +32 -0
  320. data/docs/ValidateCDARResponse.md +22 -0
  321. data/docs/ValidateEReportingRequest.md +18 -0
  322. data/docs/ValidateEReportingResponse.md +28 -0
  323. data/docs/ValidationError.md +22 -0
  324. data/docs/ValidationErrorDetail.md +26 -0
  325. data/docs/ValidationErrorResponse.md +24 -0
  326. data/docs/ValidationInfo.md +28 -0
  327. data/docs/ValidationSuccessResponse.md +18 -0
  328. data/docs/VatRate.md +15 -0
  329. data/docs/VerificationSuccessResponse.md +36 -0
  330. data/docs/VerifiedFieldSchema.md +34 -0
  331. data/docs/WebhookSecretDeleteResponse.md +20 -0
  332. data/docs/WebhookSecretGenerateResponse.md +24 -0
  333. data/docs/WebhookSecretStatusResponse.md +20 -0
  334. data/factpulse.gemspec +39 -0
  335. data/git_push.sh +57 -0
  336. data/lib/factpulse/api/afnorpdppa_api.rb +148 -0
  337. data/lib/factpulse/api/afnorpdppa_directory_service_api.rb +1183 -0
  338. data/lib/factpulse/api/afnorpdppa_flow_service_api.rb +289 -0
  339. data/lib/factpulse/api/async_tasks_api.rb +85 -0
  340. data/lib/factpulse/api/chorus_pro_api.rb +1105 -0
  341. data/lib/factpulse/api/client_management_api.rb +831 -0
  342. data/lib/factpulse/api/downloads_api.rb +151 -0
  343. data/lib/factpulse/api/electronic_signature_api.rb +339 -0
  344. data/lib/factpulse/api/factur_x_conversion_api.rb +306 -0
  345. data/lib/factpulse/api/factur_x_generation_api.rb +254 -0
  346. data/lib/factpulse/api/factur_x_validation_api.rb +256 -0
  347. data/lib/factpulse/api/factur_xpdfxml_verification_api.rb +232 -0
  348. data/lib/factpulse/api/flux10_e_reporting_api.rb +777 -0
  349. data/lib/factpulse/api/flux6_invoice_lifecycle_cdar_api.rb +670 -0
  350. data/lib/factpulse/api/health_api.rb +193 -0
  351. data/lib/factpulse/api_client.rb +397 -0
  352. data/lib/factpulse/api_error.rb +58 -0
  353. data/lib/factpulse/api_model_base.rb +88 -0
  354. data/lib/factpulse/configuration.rb +319 -0
  355. data/lib/factpulse/helpers/client.rb +272 -0
  356. data/lib/factpulse/helpers/exceptions.rb +45 -0
  357. data/lib/factpulse/helpers/helpers.rb +14 -0
  358. data/lib/factpulse/models/acknowledgment_status.rb +41 -0
  359. data/lib/factpulse/models/action_code_info.rb +220 -0
  360. data/lib/factpulse/models/action_codes_response.rb +207 -0
  361. data/lib/factpulse/models/additional_document.rb +206 -0
  362. data/lib/factpulse/models/afnor_acknowledgement.rb +216 -0
  363. data/lib/factpulse/models/afnor_acknowledgement_detail.rb +267 -0
  364. data/lib/factpulse/models/afnor_address_edit.rb +353 -0
  365. data/lib/factpulse/models/afnor_address_patch.rb +386 -0
  366. data/lib/factpulse/models/afnor_address_put.rb +435 -0
  367. data/lib/factpulse/models/afnor_address_read.rb +382 -0
  368. data/lib/factpulse/models/afnor_algorithm.rb +43 -0
  369. data/lib/factpulse/models/afnor_contains_operator.rb +39 -0
  370. data/lib/factpulse/models/afnor_create_directory_line_body.rb +156 -0
  371. data/lib/factpulse/models/afnor_create_directory_line_body_addressing_information.rb +294 -0
  372. data/lib/factpulse/models/afnor_create_directory_line_body_period.rb +175 -0
  373. data/lib/factpulse/models/afnor_create_routing_code_body.rb +412 -0
  374. data/lib/factpulse/models/afnor_credentials.rb +169 -0
  375. data/lib/factpulse/models/afnor_destination.rb +224 -0
  376. data/lib/factpulse/models/afnor_diffusion_status.rb +40 -0
  377. data/lib/factpulse/models/afnor_directory_line_field.rb +44 -0
  378. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code.rb +312 -0
  379. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_platform.rb +178 -0
  380. data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_routing_code.rb +308 -0
  381. data/lib/factpulse/models/afnor_directory_line_post201_response.rb +187 -0
  382. data/lib/factpulse/models/afnor_directory_line_search_post200_response.rb +168 -0
  383. data/lib/factpulse/models/afnor_entity_type.rb +40 -0
  384. data/lib/factpulse/models/afnor_error.rb +214 -0
  385. data/lib/factpulse/models/afnor_facility_administrative_status.rb +40 -0
  386. data/lib/factpulse/models/afnor_facility_nature.rb +40 -0
  387. data/lib/factpulse/models/afnor_facility_payload_history.rb +323 -0
  388. data/lib/factpulse/models/afnor_facility_payload_history_ule_b2g_additional_data.rb +198 -0
  389. data/lib/factpulse/models/afnor_facility_payload_included.rb +314 -0
  390. data/lib/factpulse/models/afnor_facility_type.rb +40 -0
  391. data/lib/factpulse/models/afnor_flow.rb +315 -0
  392. data/lib/factpulse/models/afnor_flow_ack_status.rb +41 -0
  393. data/lib/factpulse/models/afnor_flow_direction.rb +40 -0
  394. data/lib/factpulse/models/afnor_flow_info.rb +293 -0
  395. data/lib/factpulse/models/afnor_flow_profile.rb +41 -0
  396. data/lib/factpulse/models/afnor_flow_syntax.rb +43 -0
  397. data/lib/factpulse/models/afnor_flow_type.rb +51 -0
  398. data/lib/factpulse/models/afnor_full_flow_info.rb +339 -0
  399. data/lib/factpulse/models/afnor_health_check_response.rb +220 -0
  400. data/lib/factpulse/models/afnor_legal_unit_administrative_status.rb +40 -0
  401. data/lib/factpulse/models/afnor_legal_unit_payload_history.rb +247 -0
  402. data/lib/factpulse/models/afnor_legal_unit_payload_included.rb +247 -0
  403. data/lib/factpulse/models/afnor_legal_unit_payload_included_no_siren.rb +207 -0
  404. data/lib/factpulse/models/afnor_platform_status.rb +40 -0
  405. data/lib/factpulse/models/afnor_processing_rule.rb +44 -0
  406. data/lib/factpulse/models/afnor_reason_code.rb +105 -0
  407. data/lib/factpulse/models/afnor_reason_code_enum.rb +53 -0
  408. data/lib/factpulse/models/afnor_recipient_platform_type.rb +40 -0
  409. data/lib/factpulse/models/afnor_result.rb +270 -0
  410. data/lib/factpulse/models/afnor_routing_code_administrative_status.rb +40 -0
  411. data/lib/factpulse/models/afnor_routing_code_field.rb +46 -0
  412. data/lib/factpulse/models/afnor_routing_code_payload_history_legal_unit_facility.rb +366 -0
  413. data/lib/factpulse/models/afnor_routing_code_post201_response.rb +228 -0
  414. data/lib/factpulse/models/afnor_routing_code_search.rb +224 -0
  415. data/lib/factpulse/models/afnor_routing_code_search_filters.rb +201 -0
  416. data/lib/factpulse/models/afnor_routing_code_search_filters_administrative_status.rb +178 -0
  417. data/lib/factpulse/models/afnor_routing_code_search_filters_routing_code_name.rb +209 -0
  418. data/lib/factpulse/models/afnor_routing_code_search_filters_routing_identifier.rb +209 -0
  419. data/lib/factpulse/models/afnor_routing_code_search_post200_response.rb +168 -0
  420. data/lib/factpulse/models/afnor_routing_code_search_sorting_inner.rb +179 -0
  421. data/lib/factpulse/models/afnor_search_directory_line.rb +191 -0
  422. data/lib/factpulse/models/afnor_search_directory_line_filters.rb +183 -0
  423. data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_identifier.rb +198 -0
  424. data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_suffix.rb +198 -0
  425. data/lib/factpulse/models/afnor_search_directory_line_sorting_inner.rb +179 -0
  426. data/lib/factpulse/models/afnor_search_flow_content.rb +168 -0
  427. data/lib/factpulse/models/afnor_search_flow_filters.rb +250 -0
  428. data/lib/factpulse/models/afnor_search_flow_params.rb +195 -0
  429. data/lib/factpulse/models/afnor_search_siren.rb +191 -0
  430. data/lib/factpulse/models/afnor_search_siren_filters.rb +174 -0
  431. data/lib/factpulse/models/afnor_search_siren_filters_administrative_status.rb +178 -0
  432. data/lib/factpulse/models/afnor_search_siren_filters_business_name.rb +198 -0
  433. data/lib/factpulse/models/afnor_search_siren_filters_entity_type.rb +178 -0
  434. data/lib/factpulse/models/afnor_search_siren_filters_siren.rb +209 -0
  435. data/lib/factpulse/models/afnor_search_siren_sorting_inner.rb +179 -0
  436. data/lib/factpulse/models/afnor_search_siret.rb +224 -0
  437. data/lib/factpulse/models/afnor_search_siret_filters.rb +219 -0
  438. data/lib/factpulse/models/afnor_search_siret_filters_address_lines.rb +198 -0
  439. data/lib/factpulse/models/afnor_search_siret_filters_administrative_status.rb +178 -0
  440. data/lib/factpulse/models/afnor_search_siret_filters_country_subdivision.rb +198 -0
  441. data/lib/factpulse/models/afnor_search_siret_filters_facility_type.rb +178 -0
  442. data/lib/factpulse/models/afnor_search_siret_filters_locality.rb +198 -0
  443. data/lib/factpulse/models/afnor_search_siret_filters_name.rb +198 -0
  444. data/lib/factpulse/models/afnor_search_siret_filters_postal_code.rb +209 -0
  445. data/lib/factpulse/models/afnor_search_siret_filters_siret.rb +209 -0
  446. data/lib/factpulse/models/afnor_search_siret_sorting_inner.rb +179 -0
  447. data/lib/factpulse/models/afnor_siren_field.rb +43 -0
  448. data/lib/factpulse/models/afnor_siren_search_post200_response.rb +168 -0
  449. data/lib/factpulse/models/afnor_siret_field.rb +52 -0
  450. data/lib/factpulse/models/afnor_siret_search_post200_response.rb +168 -0
  451. data/lib/factpulse/models/afnor_sorting_order.rb +40 -0
  452. data/lib/factpulse/models/afnor_strict_operator.rb +39 -0
  453. data/lib/factpulse/models/afnor_update_patch_directory_line_body.rb +148 -0
  454. data/lib/factpulse/models/afnor_update_patch_routing_code_body.rb +258 -0
  455. data/lib/factpulse/models/afnor_update_put_routing_code_body.rb +289 -0
  456. data/lib/factpulse/models/afnor_webhook_callback_content.rb +148 -0
  457. data/lib/factpulse/models/aggregated_payment_input.rb +213 -0
  458. data/lib/factpulse/models/aggregated_transaction_input.rb +349 -0
  459. data/lib/factpulse/models/allowance_charge.rb +274 -0
  460. data/lib/factpulse/models/allowance_charge_reason_code.rb +76 -0
  461. data/lib/factpulse/models/allowance_reason_code.rb +45 -0
  462. data/lib/factpulse/models/allowance_total_amount.rb +104 -0
  463. data/lib/factpulse/models/amount.rb +104 -0
  464. data/lib/factpulse/models/amount1.rb +104 -0
  465. data/lib/factpulse/models/amount2.rb +104 -0
  466. data/lib/factpulse/models/amount_due.rb +104 -0
  467. data/lib/factpulse/models/api_error.rb +205 -0
  468. data/lib/factpulse/models/api_profile.rb +43 -0
  469. data/lib/factpulse/models/async_task_status.rb +227 -0
  470. data/lib/factpulse/models/base_amount.rb +104 -0
  471. data/lib/factpulse/models/bounding_box_schema.rb +332 -0
  472. data/lib/factpulse/models/buyercountry.rb +104 -0
  473. data/lib/factpulse/models/celery_status.rb +43 -0
  474. data/lib/factpulse/models/certificate_info_response.rb +446 -0
  475. data/lib/factpulse/models/charge_total_amount.rb +104 -0
  476. data/lib/factpulse/models/chorus_pro_credentials.rb +259 -0
  477. data/lib/factpulse/models/chorus_pro_destination.rb +194 -0
  478. data/lib/factpulse/models/chorus_pro_result.rb +186 -0
  479. data/lib/factpulse/models/client_activate_response.rb +220 -0
  480. data/lib/factpulse/models/client_create_request.rb +236 -0
  481. data/lib/factpulse/models/client_detail.rb +368 -0
  482. data/lib/factpulse/models/client_list_response.rb +249 -0
  483. data/lib/factpulse/models/client_summary.rb +368 -0
  484. data/lib/factpulse/models/client_update_request.rb +225 -0
  485. data/lib/factpulse/models/contact.rb +179 -0
  486. data/lib/factpulse/models/convert_resume_request.rb +151 -0
  487. data/lib/factpulse/models/convert_success_response.rb +360 -0
  488. data/lib/factpulse/models/convert_validation_failed_response.rb +339 -0
  489. data/lib/factpulse/models/country_code.rb +208 -0
  490. data/lib/factpulse/models/create_aggregated_report_request.rb +320 -0
  491. data/lib/factpulse/models/create_cdar_request.rb +414 -0
  492. data/lib/factpulse/models/create_e_reporting_request.rb +347 -0
  493. data/lib/factpulse/models/currency.rb +104 -0
  494. data/lib/factpulse/models/currency_code.rb +91 -0
  495. data/lib/factpulse/models/delivery_party.rb +179 -0
  496. data/lib/factpulse/models/destination.rb +56 -0
  497. data/lib/factpulse/models/doc_type.rb +42 -0
  498. data/lib/factpulse/models/document_type_info.rb +220 -0
  499. data/lib/factpulse/models/e_reporting_flow_type.rb +42 -0
  500. data/lib/factpulse/models/e_reporting_validation_error.rb +203 -0
  501. data/lib/factpulse/models/electronic_address.rb +198 -0
  502. data/lib/factpulse/models/encaisseamount.rb +104 -0
  503. data/lib/factpulse/models/encaisseamount1.rb +103 -0
  504. data/lib/factpulse/models/encaissee_request.rb +347 -0
  505. data/lib/factpulse/models/enriched_invoice_info.rb +354 -0
  506. data/lib/factpulse/models/error_level.rb +40 -0
  507. data/lib/factpulse/models/error_source.rb +47 -0
  508. data/lib/factpulse/models/extraction_info.rb +217 -0
  509. data/lib/factpulse/models/factur_x_invoice.rb +580 -0
  510. data/lib/factpulse/models/factur_xpdf_info.rb +205 -0
  511. data/lib/factpulse/models/facture_electronique_rest_api_schemas_ereporting_invoice_type_code.rb +43 -0
  512. data/lib/factpulse/models/facture_electronique_rest_api_schemas_processing_chorus_pro_credentials.rb +191 -0
  513. data/lib/factpulse/models/facture_electronique_rest_api_schemas_validation_validation_error_response.rb +168 -0
  514. data/lib/factpulse/models/field_status.rb +43 -0
  515. data/lib/factpulse/models/file_info.rb +161 -0
  516. data/lib/factpulse/models/files_info.rb +159 -0
  517. data/lib/factpulse/models/flow_direction.rb +40 -0
  518. data/lib/factpulse/models/flow_profile.rb +41 -0
  519. data/lib/factpulse/models/flow_summary.rb +253 -0
  520. data/lib/factpulse/models/flow_syntax.rb +43 -0
  521. data/lib/factpulse/models/flow_type.rb +51 -0
  522. data/lib/factpulse/models/generate_aggregated_report_response.rb +330 -0
  523. data/lib/factpulse/models/generate_cdar_response.rb +273 -0
  524. data/lib/factpulse/models/generate_certificate_request.rb +323 -0
  525. data/lib/factpulse/models/generate_certificate_response.rb +254 -0
  526. data/lib/factpulse/models/generate_e_reporting_response.rb +274 -0
  527. data/lib/factpulse/models/get_chorus_pro_id_request.rb +188 -0
  528. data/lib/factpulse/models/get_chorus_pro_id_response.rb +230 -0
  529. data/lib/factpulse/models/get_invoice_request.rb +176 -0
  530. data/lib/factpulse/models/get_invoice_response.rb +263 -0
  531. data/lib/factpulse/models/get_structure_request.rb +188 -0
  532. data/lib/factpulse/models/get_structure_response.rb +263 -0
  533. data/lib/factpulse/models/global_allowance_amount.rb +104 -0
  534. data/lib/factpulse/models/gross_unit_price.rb +104 -0
  535. data/lib/factpulse/models/http_validation_error.rb +149 -0
  536. data/lib/factpulse/models/incoming_invoice.rb +489 -0
  537. data/lib/factpulse/models/incoming_supplier.rb +236 -0
  538. data/lib/factpulse/models/invoice_format.rb +41 -0
  539. data/lib/factpulse/models/invoice_input.rb +439 -0
  540. data/lib/factpulse/models/invoice_line.rb +593 -0
  541. data/lib/factpulse/models/invoice_line_allowance_amount.rb +104 -0
  542. data/lib/factpulse/models/invoice_note.rb +176 -0
  543. data/lib/factpulse/models/invoice_payment_input.rb +267 -0
  544. data/lib/factpulse/models/invoice_references.rb +393 -0
  545. data/lib/factpulse/models/invoice_status.rb +203 -0
  546. data/lib/factpulse/models/invoice_totals.rb +312 -0
  547. data/lib/factpulse/models/invoice_totals_prepayment.rb +104 -0
  548. data/lib/factpulse/models/invoice_type_code.rb +54 -0
  549. data/lib/factpulse/models/invoice_type_code_output.rb +54 -0
  550. data/lib/factpulse/models/invoicing_framework.rb +218 -0
  551. data/lib/factpulse/models/invoicing_framework_code.rb +42 -0
  552. data/lib/factpulse/models/issuer_role_code.rb +40 -0
  553. data/lib/factpulse/models/key_rotation_request.rb +211 -0
  554. data/lib/factpulse/models/key_rotation_response.rb +232 -0
  555. data/lib/factpulse/models/line_net_amount.rb +104 -0
  556. data/lib/factpulse/models/line_sub_type.rb +41 -0
  557. data/lib/factpulse/models/line_total_amount.rb +104 -0
  558. data/lib/factpulse/models/location_inner.rb +103 -0
  559. data/lib/factpulse/models/mandatory_note_schema.rb +265 -0
  560. data/lib/factpulse/models/manual_rate.rb +104 -0
  561. data/lib/factpulse/models/manual_vat_rate.rb +104 -0
  562. data/lib/factpulse/models/missing_field.rb +269 -0
  563. data/lib/factpulse/models/operation_nature.rb +52 -0
  564. data/lib/factpulse/models/output_format.rb +40 -0
  565. data/lib/factpulse/models/page_dimensions_schema.rb +193 -0
  566. data/lib/factpulse/models/payee.rb +281 -0
  567. data/lib/factpulse/models/payment_amount_by_rate.rb +191 -0
  568. data/lib/factpulse/models/payment_card.rb +159 -0
  569. data/lib/factpulse/models/payment_means.rb +44 -0
  570. data/lib/factpulse/models/pdf_validation_result_api.rb +523 -0
  571. data/lib/factpulse/models/pdp_config_response.rb +306 -0
  572. data/lib/factpulse/models/pdp_config_update_request.rb +315 -0
  573. data/lib/factpulse/models/pdp_credentials.rb +257 -0
  574. data/lib/factpulse/models/percentage.rb +104 -0
  575. data/lib/factpulse/models/postal_address.rb +209 -0
  576. data/lib/factpulse/models/price_allowance_amount.rb +104 -0
  577. data/lib/factpulse/models/price_basis_quantity.rb +104 -0
  578. data/lib/factpulse/models/processing_options.rb +207 -0
  579. data/lib/factpulse/models/processing_rule.rb +44 -0
  580. data/lib/factpulse/models/product_characteristic.rb +193 -0
  581. data/lib/factpulse/models/product_classification.rb +186 -0
  582. data/lib/factpulse/models/quantity.rb +104 -0
  583. data/lib/factpulse/models/rate.rb +104 -0
  584. data/lib/factpulse/models/rate1.rb +104 -0
  585. data/lib/factpulse/models/reason_code_info.rb +220 -0
  586. data/lib/factpulse/models/reason_codes_response.rb +207 -0
  587. data/lib/factpulse/models/recipient.rb +231 -0
  588. data/lib/factpulse/models/recipient_input.rb +191 -0
  589. data/lib/factpulse/models/refusee_request.rb +346 -0
  590. data/lib/factpulse/models/report_issuer.rb +236 -0
  591. data/lib/factpulse/models/report_period.rb +193 -0
  592. data/lib/factpulse/models/report_sender.rb +221 -0
  593. data/lib/factpulse/models/rounding_amount.rb +104 -0
  594. data/lib/factpulse/models/schematron_validation_error.rb +294 -0
  595. data/lib/factpulse/models/scheme_id.rb +56 -0
  596. data/lib/factpulse/models/search_flow_request.rb +306 -0
  597. data/lib/factpulse/models/search_flow_response.rb +249 -0
  598. data/lib/factpulse/models/search_services_response.rb +217 -0
  599. data/lib/factpulse/models/search_structure_request.rb +191 -0
  600. data/lib/factpulse/models/search_structure_response.rb +216 -0
  601. data/lib/factpulse/models/secret_status.rb +213 -0
  602. data/lib/factpulse/models/sellercountry.rb +104 -0
  603. data/lib/factpulse/models/signature_info.rb +186 -0
  604. data/lib/factpulse/models/signature_info_api.rb +216 -0
  605. data/lib/factpulse/models/signature_parameters.rb +235 -0
  606. data/lib/factpulse/models/simplified_cdar_response.rb +274 -0
  607. data/lib/factpulse/models/simplified_invoice_data.rb +404 -0
  608. data/lib/factpulse/models/status_code_info.rb +220 -0
  609. data/lib/factpulse/models/status_codes_response.rb +207 -0
  610. data/lib/factpulse/models/structure_info.rb +274 -0
  611. data/lib/factpulse/models/structure_parameters.rb +175 -0
  612. data/lib/factpulse/models/structure_service.rb +247 -0
  613. data/lib/factpulse/models/submission_mode.rb +41 -0
  614. data/lib/factpulse/models/submit_aggregated_report_request.rb +216 -0
  615. data/lib/factpulse/models/submit_cdar_request.rb +466 -0
  616. data/lib/factpulse/models/submit_cdar_response.rb +213 -0
  617. data/lib/factpulse/models/submit_cdarxml_request.rb +228 -0
  618. data/lib/factpulse/models/submit_complete_invoice_request.rb +239 -0
  619. data/lib/factpulse/models/submit_complete_invoice_response.rb +355 -0
  620. data/lib/factpulse/models/submit_e_reporting_request.rb +216 -0
  621. data/lib/factpulse/models/submit_e_reporting_response.rb +306 -0
  622. data/lib/factpulse/models/submit_flow_request.rb +238 -0
  623. data/lib/factpulse/models/submit_flow_response.rb +294 -0
  624. data/lib/factpulse/models/submit_gross_amount.rb +104 -0
  625. data/lib/factpulse/models/submit_invoice_request.rb +388 -0
  626. data/lib/factpulse/models/submit_invoice_response.rb +213 -0
  627. data/lib/factpulse/models/submit_net_amount.rb +104 -0
  628. data/lib/factpulse/models/submit_vat_amount.rb +104 -0
  629. data/lib/factpulse/models/supplementary_attachment.rb +274 -0
  630. data/lib/factpulse/models/supplier.rb +337 -0
  631. data/lib/factpulse/models/task_response.rb +166 -0
  632. data/lib/factpulse/models/tax_breakdown_input.rb +217 -0
  633. data/lib/factpulse/models/tax_due_date_type.rb +44 -0
  634. data/lib/factpulse/models/tax_representative.rb +220 -0
  635. data/lib/factpulse/models/taxable_amount.rb +104 -0
  636. data/lib/factpulse/models/taxableamount.rb +104 -0
  637. data/lib/factpulse/models/taxamount.rb +104 -0
  638. data/lib/factpulse/models/taxamount1.rb +104 -0
  639. data/lib/factpulse/models/taxamount2.rb +104 -0
  640. data/lib/factpulse/models/taxexclusiveamount.rb +104 -0
  641. data/lib/factpulse/models/taxexclusiveamount1.rb +104 -0
  642. data/lib/factpulse/models/total_gross_amount.rb +104 -0
  643. data/lib/factpulse/models/total_net_amount.rb +104 -0
  644. data/lib/factpulse/models/total_vat_amount.rb +104 -0
  645. data/lib/factpulse/models/transaction_category.rb +42 -0
  646. data/lib/factpulse/models/transmission_type_code.rb +40 -0
  647. data/lib/factpulse/models/unit_net_price.rb +104 -0
  648. data/lib/factpulse/models/unit_of_measure.rb +44 -0
  649. data/lib/factpulse/models/validate_cdar_request.rb +219 -0
  650. data/lib/factpulse/models/validate_cdar_response.rb +190 -0
  651. data/lib/factpulse/models/validate_e_reporting_request.rb +166 -0
  652. data/lib/factpulse/models/validate_e_reporting_response.rb +271 -0
  653. data/lib/factpulse/models/validation_error.rb +218 -0
  654. data/lib/factpulse/models/validation_error_detail.rb +245 -0
  655. data/lib/factpulse/models/validation_error_response.rb +215 -0
  656. data/lib/factpulse/models/validation_info.rb +255 -0
  657. data/lib/factpulse/models/validation_success_response.rb +166 -0
  658. data/lib/factpulse/models/vat_accounting_code.rb +42 -0
  659. data/lib/factpulse/models/vat_amount.rb +104 -0
  660. data/lib/factpulse/models/vat_category.rb +47 -0
  661. data/lib/factpulse/models/vat_line.rb +272 -0
  662. data/lib/factpulse/models/vat_point_date_code.rb +41 -0
  663. data/lib/factpulse/models/vat_rate.rb +104 -0
  664. data/lib/factpulse/models/verification_success_response.rb +343 -0
  665. data/lib/factpulse/models/verified_field_schema.rb +334 -0
  666. data/lib/factpulse/models/webhook_secret_delete_response.rb +193 -0
  667. data/lib/factpulse/models/webhook_secret_generate_response.rb +247 -0
  668. data/lib/factpulse/models/webhook_secret_status_response.rb +176 -0
  669. data/lib/factpulse/version.rb +15 -0
  670. data/lib/factpulse.rb +369 -0
  671. metadata +806 -0
@@ -0,0 +1,186 @@
1
+ =begin
2
+ #FactPulse REST API
3
+
4
+ # REST API for electronic invoicing in France: Factur-X, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Factur-X - Generation - **Formats**: XML only or PDF/A-3 with embedded XML - **Profiles**: MINIMUM, BASIC, EN16931, EXTENDED - **Standards**: EN 16931 (EU directive 2014/55), ISO 19005-3 (PDF/A-3), CII (UN/CEFACT) - **🆕 Simplified Format**: Generation from SIRET + auto-enrichment (Chorus Pro API + Business Search) ### ✅ Factur-X - Validation - **XML Validation**: Schematron (45 to 210+ rules depending on profile) - **PDF Validation**: PDF/A-3, Factur-X XMP metadata - **VeraPDF**: Strict PDF/A validation (146+ ISO 19005-3 rules) ### ✍️ Electronic Signature - **Standards**: PAdES-B-B, PAdES-B-T (RFC 3161 timestamping), PAdES-B-LT (long-term archival) - **eIDAS Levels**: SES (self-signed), AdES (commercial CA), QES (QTSP) - **Validation**: Cryptographic integrity and certificate verification ### 📋 Flux 6 - Invoice Lifecycle (CDAR) - **CDAR Messages**: Acknowledgements, invoice statuses - **PPF Statuses**: REFUSED (210), PAID (212) ### 📊 Flux 10 - E-Reporting - **Tax Declarations**: International B2B, B2C - **Flow Types**: 10.1 (B2B transactions), 10.2 (B2B payments), 10.3 (B2C transactions), 10.4 (B2C payments) ### 📡 AFNOR PDP/PA (XP Z12-013) - **Flow Service**: Submit and search flows to PDPs - **Directory Service**: Company search (SIREN/SIRET) - **Multi-client**: Support for multiple PDP configs per user ### 🏛️ Chorus Pro - **Public Sector Invoicing**: Complete API for Chorus Pro ### ⏳ Async Tasks - **Celery**: Asynchronous generation, validation and signing - **Polling**: Status tracking via `/tasks/{task_id}/status` - **Webhooks**: Automatic notifications when tasks complete ## 🔒 Authentication All requests require a **JWT token** in the Authorization header: ``` Authorization: Bearer YOUR_JWT_TOKEN ``` ### How to obtain a JWT token? #### 🔑 Method 1: `/api/token/` API (Recommended) **URL:** `https://factpulse.fr/api/token/` This method is **recommended** for integration in your applications and CI/CD workflows. **Prerequisites:** Having set a password on your account **For users registered via email/password:** - You already have a password, use it directly **For users registered via OAuth (Google/GitHub):** - You must first set a password at: https://factpulse.fr/accounts/password/set/ - Once the password is created, you can use the API **Request example:** ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\" }' ``` **Optional `client_uid` parameter:** To select credentials for a specific client (PA/PDP, Chorus Pro, signing certificates), add `client_uid`: ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\", \"client_uid\": \"550e8400-e29b-41d4-a716-446655440000\" }' ``` The `client_uid` will be included in the JWT and allow the API to automatically use: - AFNOR/PDP credentials configured for this client - Chorus Pro credentials configured for this client - Electronic signature certificates configured for this client **Response:** ```json { \"access\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\", // Access token (validity: 30 min) \"refresh\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\" // Refresh token (validity: 7 days) } ``` **Advantages:** - ✅ Full automation (CI/CD, scripts) - ✅ Programmatic token management - ✅ Refresh token support for automatic access renewal - ✅ Easy integration in any language/tool #### 🖥️ Method 2: Dashboard Generation (Alternative) **URL:** https://factpulse.fr/api/dashboard/ This method is suitable for quick tests or occasional use via the graphical interface. **How it works:** - Log in to the dashboard - Use the \"Generate Test Token\" or \"Generate Production Token\" buttons - Works for **all** users (OAuth and email/password), without requiring a password **Token types:** - **Test Token**: 24h validity, 1000 calls/day quota (free) - **Production Token**: 7 days validity, quota based on your plan **Advantages:** - ✅ Quick for API testing - ✅ No password required - ✅ Simple visual interface **Disadvantages:** - ❌ Requires manual action - ❌ No refresh token - ❌ Less suited for automation ### 📚 Full Documentation For more information on authentication and API usage: https://factpulse.fr/documentation-api/
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: contact@factpulse.fr
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.20.0-SNAPSHOT
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module FactPulse
17
+ # Information about the electronic signature.
18
+ class SignatureInfo < ApiModelBase
19
+ # PDF was signed
20
+ attr_accessor :signed
21
+
22
+ attr_accessor :cn
23
+
24
+ attr_accessor :expiration
25
+
26
+ # Attribute mapping from ruby-style variable name to JSON key.
27
+ def self.attribute_map
28
+ {
29
+ :'signed' => :'signed',
30
+ :'cn' => :'cn',
31
+ :'expiration' => :'expiration'
32
+ }
33
+ end
34
+
35
+ # Returns attribute mapping this model knows about
36
+ def self.acceptable_attribute_map
37
+ attribute_map
38
+ end
39
+
40
+ # Returns all the JSON keys this model knows about
41
+ def self.acceptable_attributes
42
+ acceptable_attribute_map.values
43
+ end
44
+
45
+ # Attribute type mapping.
46
+ def self.openapi_types
47
+ {
48
+ :'signed' => :'Boolean',
49
+ :'cn' => :'String',
50
+ :'expiration' => :'String'
51
+ }
52
+ end
53
+
54
+ # List of attributes with nullable: true
55
+ def self.openapi_nullable
56
+ Set.new([
57
+ :'cn',
58
+ :'expiration'
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::SignatureInfo` 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::SignatureInfo`. 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?(:'signed')
79
+ self.signed = attributes[:'signed']
80
+ else
81
+ self.signed = nil
82
+ end
83
+
84
+ if attributes.key?(:'cn')
85
+ self.cn = attributes[:'cn']
86
+ end
87
+
88
+ if attributes.key?(:'expiration')
89
+ self.expiration = attributes[:'expiration']
90
+ end
91
+ end
92
+
93
+ # Show invalid properties with the reasons. Usually used together with valid?
94
+ # @return Array for valid properties with the reasons
95
+ def list_invalid_properties
96
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
97
+ invalid_properties = Array.new
98
+ if @signed.nil?
99
+ invalid_properties.push('invalid value for "signed", signed cannot be nil.')
100
+ end
101
+
102
+ invalid_properties
103
+ end
104
+
105
+ # Check to see if the all the properties in the model are valid
106
+ # @return true if the model is valid
107
+ def valid?
108
+ warn '[DEPRECATED] the `valid?` method is obsolete'
109
+ return false if @signed.nil?
110
+ true
111
+ end
112
+
113
+ # Custom attribute writer method with validation
114
+ # @param [Object] signed Value to be assigned
115
+ def signed=(signed)
116
+ if signed.nil?
117
+ fail ArgumentError, 'signed cannot be nil'
118
+ end
119
+
120
+ @signed = signed
121
+ end
122
+
123
+ # Checks equality by comparing each attribute.
124
+ # @param [Object] Object to be compared
125
+ def ==(o)
126
+ return true if self.equal?(o)
127
+ self.class == o.class &&
128
+ signed == o.signed &&
129
+ cn == o.cn &&
130
+ expiration == o.expiration
131
+ end
132
+
133
+ # @see the `==` method
134
+ # @param [Object] Object to be compared
135
+ def eql?(o)
136
+ self == o
137
+ end
138
+
139
+ # Calculates hash code according to all attributes.
140
+ # @return [Integer] Hash code
141
+ def hash
142
+ [signed, cn, expiration].hash
143
+ end
144
+
145
+ # Builds the object from hash
146
+ # @param [Hash] attributes Model attributes in the form of hash
147
+ # @return [Object] Returns the model itself
148
+ def self.build_from_hash(attributes)
149
+ return nil unless attributes.is_a?(Hash)
150
+ attributes = attributes.transform_keys(&:to_sym)
151
+ transformed_hash = {}
152
+ openapi_types.each_pair do |key, type|
153
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
154
+ transformed_hash["#{key}"] = nil
155
+ elsif type =~ /\AArray<(.*)>/i
156
+ # check to ensure the input is an array given that the attribute
157
+ # is documented as an array but the input is not
158
+ if attributes[attribute_map[key]].is_a?(Array)
159
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
160
+ end
161
+ elsif !attributes[attribute_map[key]].nil?
162
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
163
+ end
164
+ end
165
+ new(transformed_hash)
166
+ end
167
+
168
+ # Returns the object in the form of hash
169
+ # @return [Hash] Returns the object in the form of hash
170
+ def to_hash
171
+ hash = {}
172
+ self.class.attribute_map.each_pair do |attr, param|
173
+ value = self.send(attr)
174
+ if value.nil?
175
+ is_nullable = self.class.openapi_nullable.include?(attr)
176
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
177
+ end
178
+
179
+ hash[param] = _to_hash(value)
180
+ end
181
+ hash
182
+ end
183
+
184
+ end
185
+
186
+ end
@@ -0,0 +1,216 @@
1
+ =begin
2
+ #FactPulse REST API
3
+
4
+ # REST API for electronic invoicing in France: Factur-X, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Factur-X - Generation - **Formats**: XML only or PDF/A-3 with embedded XML - **Profiles**: MINIMUM, BASIC, EN16931, EXTENDED - **Standards**: EN 16931 (EU directive 2014/55), ISO 19005-3 (PDF/A-3), CII (UN/CEFACT) - **🆕 Simplified Format**: Generation from SIRET + auto-enrichment (Chorus Pro API + Business Search) ### ✅ Factur-X - Validation - **XML Validation**: Schematron (45 to 210+ rules depending on profile) - **PDF Validation**: PDF/A-3, Factur-X XMP metadata - **VeraPDF**: Strict PDF/A validation (146+ ISO 19005-3 rules) ### ✍️ Electronic Signature - **Standards**: PAdES-B-B, PAdES-B-T (RFC 3161 timestamping), PAdES-B-LT (long-term archival) - **eIDAS Levels**: SES (self-signed), AdES (commercial CA), QES (QTSP) - **Validation**: Cryptographic integrity and certificate verification ### 📋 Flux 6 - Invoice Lifecycle (CDAR) - **CDAR Messages**: Acknowledgements, invoice statuses - **PPF Statuses**: REFUSED (210), PAID (212) ### 📊 Flux 10 - E-Reporting - **Tax Declarations**: International B2B, B2C - **Flow Types**: 10.1 (B2B transactions), 10.2 (B2B payments), 10.3 (B2C transactions), 10.4 (B2C payments) ### 📡 AFNOR PDP/PA (XP Z12-013) - **Flow Service**: Submit and search flows to PDPs - **Directory Service**: Company search (SIREN/SIRET) - **Multi-client**: Support for multiple PDP configs per user ### 🏛️ Chorus Pro - **Public Sector Invoicing**: Complete API for Chorus Pro ### ⏳ Async Tasks - **Celery**: Asynchronous generation, validation and signing - **Polling**: Status tracking via `/tasks/{task_id}/status` - **Webhooks**: Automatic notifications when tasks complete ## 🔒 Authentication All requests require a **JWT token** in the Authorization header: ``` Authorization: Bearer YOUR_JWT_TOKEN ``` ### How to obtain a JWT token? #### 🔑 Method 1: `/api/token/` API (Recommended) **URL:** `https://factpulse.fr/api/token/` This method is **recommended** for integration in your applications and CI/CD workflows. **Prerequisites:** Having set a password on your account **For users registered via email/password:** - You already have a password, use it directly **For users registered via OAuth (Google/GitHub):** - You must first set a password at: https://factpulse.fr/accounts/password/set/ - Once the password is created, you can use the API **Request example:** ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\" }' ``` **Optional `client_uid` parameter:** To select credentials for a specific client (PA/PDP, Chorus Pro, signing certificates), add `client_uid`: ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\", \"client_uid\": \"550e8400-e29b-41d4-a716-446655440000\" }' ``` The `client_uid` will be included in the JWT and allow the API to automatically use: - AFNOR/PDP credentials configured for this client - Chorus Pro credentials configured for this client - Electronic signature certificates configured for this client **Response:** ```json { \"access\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\", // Access token (validity: 30 min) \"refresh\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\" // Refresh token (validity: 7 days) } ``` **Advantages:** - ✅ Full automation (CI/CD, scripts) - ✅ Programmatic token management - ✅ Refresh token support for automatic access renewal - ✅ Easy integration in any language/tool #### 🖥️ Method 2: Dashboard Generation (Alternative) **URL:** https://factpulse.fr/api/dashboard/ This method is suitable for quick tests or occasional use via the graphical interface. **How it works:** - Log in to the dashboard - Use the \"Generate Test Token\" or \"Generate Production Token\" buttons - Works for **all** users (OAuth and email/password), without requiring a password **Token types:** - **Test Token**: 24h validity, 1000 calls/day quota (free) - **Production Token**: 7 days validity, quota based on your plan **Advantages:** - ✅ Quick for API testing - ✅ No password required - ✅ Simple visual interface **Disadvantages:** - ❌ Requires manual action - ❌ No refresh token - ❌ Less suited for automation ### 📚 Full Documentation For more information on authentication and API usage: https://factpulse.fr/documentation-api/
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: contact@factpulse.fr
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.20.0-SNAPSHOT
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module FactPulse
17
+ # Information about an electronic signature in a PDF.
18
+ class SignatureInfoAPI < ApiModelBase
19
+ # Signature field name in the PDF
20
+ attr_accessor :field_name
21
+
22
+ attr_accessor :signer
23
+
24
+ attr_accessor :signing_date
25
+
26
+ attr_accessor :reason
27
+
28
+ attr_accessor :location
29
+
30
+ attr_accessor :is_valid
31
+
32
+ # Attribute mapping from ruby-style variable name to JSON key.
33
+ def self.attribute_map
34
+ {
35
+ :'field_name' => :'fieldName',
36
+ :'signer' => :'signer',
37
+ :'signing_date' => :'signingDate',
38
+ :'reason' => :'reason',
39
+ :'location' => :'location',
40
+ :'is_valid' => :'isValid'
41
+ }
42
+ end
43
+
44
+ # Returns attribute mapping this model knows about
45
+ def self.acceptable_attribute_map
46
+ attribute_map
47
+ end
48
+
49
+ # Returns all the JSON keys this model knows about
50
+ def self.acceptable_attributes
51
+ acceptable_attribute_map.values
52
+ end
53
+
54
+ # Attribute type mapping.
55
+ def self.openapi_types
56
+ {
57
+ :'field_name' => :'String',
58
+ :'signer' => :'String',
59
+ :'signing_date' => :'String',
60
+ :'reason' => :'String',
61
+ :'location' => :'String',
62
+ :'is_valid' => :'Boolean'
63
+ }
64
+ end
65
+
66
+ # List of attributes with nullable: true
67
+ def self.openapi_nullable
68
+ Set.new([
69
+ :'signer',
70
+ :'signing_date',
71
+ :'reason',
72
+ :'location',
73
+ :'is_valid'
74
+ ])
75
+ end
76
+
77
+ # Initializes the object
78
+ # @param [Hash] attributes Model attributes in the form of hash
79
+ def initialize(attributes = {})
80
+ if (!attributes.is_a?(Hash))
81
+ fail ArgumentError, "The input argument (attributes) must be a hash in `FactPulse::SignatureInfoAPI` initialize method"
82
+ end
83
+
84
+ # check to see if the attribute exists and convert string to symbol for hash key
85
+ acceptable_attribute_map = self.class.acceptable_attribute_map
86
+ attributes = attributes.each_with_object({}) { |(k, v), h|
87
+ if (!acceptable_attribute_map.key?(k.to_sym))
88
+ fail ArgumentError, "`#{k}` is not a valid attribute in `FactPulse::SignatureInfoAPI`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
89
+ end
90
+ h[k.to_sym] = v
91
+ }
92
+
93
+ if attributes.key?(:'field_name')
94
+ self.field_name = attributes[:'field_name']
95
+ else
96
+ self.field_name = nil
97
+ end
98
+
99
+ if attributes.key?(:'signer')
100
+ self.signer = attributes[:'signer']
101
+ end
102
+
103
+ if attributes.key?(:'signing_date')
104
+ self.signing_date = attributes[:'signing_date']
105
+ end
106
+
107
+ if attributes.key?(:'reason')
108
+ self.reason = attributes[:'reason']
109
+ end
110
+
111
+ if attributes.key?(:'location')
112
+ self.location = attributes[:'location']
113
+ end
114
+
115
+ if attributes.key?(:'is_valid')
116
+ self.is_valid = attributes[:'is_valid']
117
+ end
118
+ end
119
+
120
+ # Show invalid properties with the reasons. Usually used together with valid?
121
+ # @return Array for valid properties with the reasons
122
+ def list_invalid_properties
123
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
124
+ invalid_properties = Array.new
125
+ if @field_name.nil?
126
+ invalid_properties.push('invalid value for "field_name", field_name cannot be nil.')
127
+ end
128
+
129
+ invalid_properties
130
+ end
131
+
132
+ # Check to see if the all the properties in the model are valid
133
+ # @return true if the model is valid
134
+ def valid?
135
+ warn '[DEPRECATED] the `valid?` method is obsolete'
136
+ return false if @field_name.nil?
137
+ true
138
+ end
139
+
140
+ # Custom attribute writer method with validation
141
+ # @param [Object] field_name Value to be assigned
142
+ def field_name=(field_name)
143
+ if field_name.nil?
144
+ fail ArgumentError, 'field_name cannot be nil'
145
+ end
146
+
147
+ @field_name = field_name
148
+ end
149
+
150
+ # Checks equality by comparing each attribute.
151
+ # @param [Object] Object to be compared
152
+ def ==(o)
153
+ return true if self.equal?(o)
154
+ self.class == o.class &&
155
+ field_name == o.field_name &&
156
+ signer == o.signer &&
157
+ signing_date == o.signing_date &&
158
+ reason == o.reason &&
159
+ location == o.location &&
160
+ is_valid == o.is_valid
161
+ end
162
+
163
+ # @see the `==` method
164
+ # @param [Object] Object to be compared
165
+ def eql?(o)
166
+ self == o
167
+ end
168
+
169
+ # Calculates hash code according to all attributes.
170
+ # @return [Integer] Hash code
171
+ def hash
172
+ [field_name, signer, signing_date, reason, location, is_valid].hash
173
+ end
174
+
175
+ # Builds the object from hash
176
+ # @param [Hash] attributes Model attributes in the form of hash
177
+ # @return [Object] Returns the model itself
178
+ def self.build_from_hash(attributes)
179
+ return nil unless attributes.is_a?(Hash)
180
+ attributes = attributes.transform_keys(&:to_sym)
181
+ transformed_hash = {}
182
+ openapi_types.each_pair do |key, type|
183
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
184
+ transformed_hash["#{key}"] = nil
185
+ elsif type =~ /\AArray<(.*)>/i
186
+ # check to ensure the input is an array given that the attribute
187
+ # is documented as an array but the input is not
188
+ if attributes[attribute_map[key]].is_a?(Array)
189
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
190
+ end
191
+ elsif !attributes[attribute_map[key]].nil?
192
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
193
+ end
194
+ end
195
+ new(transformed_hash)
196
+ end
197
+
198
+ # Returns the object in the form of hash
199
+ # @return [Hash] Returns the object in the form of hash
200
+ def to_hash
201
+ hash = {}
202
+ self.class.attribute_map.each_pair do |attr, param|
203
+ value = self.send(attr)
204
+ if value.nil?
205
+ is_nullable = self.class.openapi_nullable.include?(attr)
206
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
207
+ end
208
+
209
+ hash[param] = _to_hash(value)
210
+ end
211
+ hash
212
+ end
213
+
214
+ end
215
+
216
+ end
@@ -0,0 +1,235 @@
1
+ =begin
2
+ #FactPulse REST API
3
+
4
+ # REST API for electronic invoicing in France: Factur-X, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Factur-X - Generation - **Formats**: XML only or PDF/A-3 with embedded XML - **Profiles**: MINIMUM, BASIC, EN16931, EXTENDED - **Standards**: EN 16931 (EU directive 2014/55), ISO 19005-3 (PDF/A-3), CII (UN/CEFACT) - **🆕 Simplified Format**: Generation from SIRET + auto-enrichment (Chorus Pro API + Business Search) ### ✅ Factur-X - Validation - **XML Validation**: Schematron (45 to 210+ rules depending on profile) - **PDF Validation**: PDF/A-3, Factur-X XMP metadata - **VeraPDF**: Strict PDF/A validation (146+ ISO 19005-3 rules) ### ✍️ Electronic Signature - **Standards**: PAdES-B-B, PAdES-B-T (RFC 3161 timestamping), PAdES-B-LT (long-term archival) - **eIDAS Levels**: SES (self-signed), AdES (commercial CA), QES (QTSP) - **Validation**: Cryptographic integrity and certificate verification ### 📋 Flux 6 - Invoice Lifecycle (CDAR) - **CDAR Messages**: Acknowledgements, invoice statuses - **PPF Statuses**: REFUSED (210), PAID (212) ### 📊 Flux 10 - E-Reporting - **Tax Declarations**: International B2B, B2C - **Flow Types**: 10.1 (B2B transactions), 10.2 (B2B payments), 10.3 (B2C transactions), 10.4 (B2C payments) ### 📡 AFNOR PDP/PA (XP Z12-013) - **Flow Service**: Submit and search flows to PDPs - **Directory Service**: Company search (SIREN/SIRET) - **Multi-client**: Support for multiple PDP configs per user ### 🏛️ Chorus Pro - **Public Sector Invoicing**: Complete API for Chorus Pro ### ⏳ Async Tasks - **Celery**: Asynchronous generation, validation and signing - **Polling**: Status tracking via `/tasks/{task_id}/status` - **Webhooks**: Automatic notifications when tasks complete ## 🔒 Authentication All requests require a **JWT token** in the Authorization header: ``` Authorization: Bearer YOUR_JWT_TOKEN ``` ### How to obtain a JWT token? #### 🔑 Method 1: `/api/token/` API (Recommended) **URL:** `https://factpulse.fr/api/token/` This method is **recommended** for integration in your applications and CI/CD workflows. **Prerequisites:** Having set a password on your account **For users registered via email/password:** - You already have a password, use it directly **For users registered via OAuth (Google/GitHub):** - You must first set a password at: https://factpulse.fr/accounts/password/set/ - Once the password is created, you can use the API **Request example:** ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\" }' ``` **Optional `client_uid` parameter:** To select credentials for a specific client (PA/PDP, Chorus Pro, signing certificates), add `client_uid`: ```bash curl -X POST https://factpulse.fr/api/token/ \\ -H \"Content-Type: application/json\" \\ -d '{ \"username\": \"your_email@example.com\", \"password\": \"your_password\", \"client_uid\": \"550e8400-e29b-41d4-a716-446655440000\" }' ``` The `client_uid` will be included in the JWT and allow the API to automatically use: - AFNOR/PDP credentials configured for this client - Chorus Pro credentials configured for this client - Electronic signature certificates configured for this client **Response:** ```json { \"access\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\", // Access token (validity: 30 min) \"refresh\": \"eyJ0eXAiOiJKV1QiLCJhbGc...\" // Refresh token (validity: 7 days) } ``` **Advantages:** - ✅ Full automation (CI/CD, scripts) - ✅ Programmatic token management - ✅ Refresh token support for automatic access renewal - ✅ Easy integration in any language/tool #### 🖥️ Method 2: Dashboard Generation (Alternative) **URL:** https://factpulse.fr/api/dashboard/ This method is suitable for quick tests or occasional use via the graphical interface. **How it works:** - Log in to the dashboard - Use the \"Generate Test Token\" or \"Generate Production Token\" buttons - Works for **all** users (OAuth and email/password), without requiring a password **Token types:** - **Test Token**: 24h validity, 1000 calls/day quota (free) - **Production Token**: 7 days validity, quota based on your plan **Advantages:** - ✅ Quick for API testing - ✅ No password required - ✅ Simple visual interface **Disadvantages:** - ❌ Requires manual action - ❌ No refresh token - ❌ Less suited for automation ### 📚 Full Documentation For more information on authentication and API usage: https://factpulse.fr/documentation-api/
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: contact@factpulse.fr
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.20.0-SNAPSHOT
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module FactPulse
17
+ # Optional parameters to sign the generated PDF. **MODE 1 - Stored certificate (recommended):** Only provide metadata (reason, location, etc.). The certificate will be automatically retrieved via client_uid from JWT. eIDAS compliant PAdES-B-LT signature. **MODE 2 - Keys in payload (tests/special cases):** Provide key_pem + cert_pem directly in the payload. Accepted PEM format: raw (\"-----BEGIN...\") or base64. **Selection rule:** - If key_pem AND cert_pem provided → Mode 2 (payload keys) - Otherwise → Mode 1 (stored certificate retrieved via client_uid)
18
+ class SignatureParameters < ApiModelBase
19
+ attr_accessor :key_pem
20
+
21
+ attr_accessor :cert_pem
22
+
23
+ attr_accessor :key_passphrase
24
+
25
+ attr_accessor :reason
26
+
27
+ attr_accessor :location
28
+
29
+ attr_accessor :contact
30
+
31
+ # PDF signature field name
32
+ attr_accessor :field_name
33
+
34
+ # Enable PAdES-B-LT (long-term archival). REQUIRES certificate with OCSP/CRL access
35
+ attr_accessor :use_pades_lt
36
+
37
+ # Enable RFC 3161 timestamping with FreeTSA (PAdES-B-T)
38
+ attr_accessor :use_timestamp
39
+
40
+ # Attribute mapping from ruby-style variable name to JSON key.
41
+ def self.attribute_map
42
+ {
43
+ :'key_pem' => :'keyPem',
44
+ :'cert_pem' => :'certPem',
45
+ :'key_passphrase' => :'keyPassphrase',
46
+ :'reason' => :'reason',
47
+ :'location' => :'location',
48
+ :'contact' => :'contact',
49
+ :'field_name' => :'fieldName',
50
+ :'use_pades_lt' => :'usePadesLt',
51
+ :'use_timestamp' => :'useTimestamp'
52
+ }
53
+ end
54
+
55
+ # Returns attribute mapping this model knows about
56
+ def self.acceptable_attribute_map
57
+ attribute_map
58
+ end
59
+
60
+ # Returns all the JSON keys this model knows about
61
+ def self.acceptable_attributes
62
+ acceptable_attribute_map.values
63
+ end
64
+
65
+ # Attribute type mapping.
66
+ def self.openapi_types
67
+ {
68
+ :'key_pem' => :'String',
69
+ :'cert_pem' => :'String',
70
+ :'key_passphrase' => :'String',
71
+ :'reason' => :'String',
72
+ :'location' => :'String',
73
+ :'contact' => :'String',
74
+ :'field_name' => :'String',
75
+ :'use_pades_lt' => :'Boolean',
76
+ :'use_timestamp' => :'Boolean'
77
+ }
78
+ end
79
+
80
+ # List of attributes with nullable: true
81
+ def self.openapi_nullable
82
+ Set.new([
83
+ :'key_pem',
84
+ :'cert_pem',
85
+ :'key_passphrase',
86
+ :'reason',
87
+ :'location',
88
+ :'contact',
89
+ ])
90
+ end
91
+
92
+ # Initializes the object
93
+ # @param [Hash] attributes Model attributes in the form of hash
94
+ def initialize(attributes = {})
95
+ if (!attributes.is_a?(Hash))
96
+ fail ArgumentError, "The input argument (attributes) must be a hash in `FactPulse::SignatureParameters` initialize method"
97
+ end
98
+
99
+ # check to see if the attribute exists and convert string to symbol for hash key
100
+ acceptable_attribute_map = self.class.acceptable_attribute_map
101
+ attributes = attributes.each_with_object({}) { |(k, v), h|
102
+ if (!acceptable_attribute_map.key?(k.to_sym))
103
+ fail ArgumentError, "`#{k}` is not a valid attribute in `FactPulse::SignatureParameters`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
104
+ end
105
+ h[k.to_sym] = v
106
+ }
107
+
108
+ if attributes.key?(:'key_pem')
109
+ self.key_pem = attributes[:'key_pem']
110
+ end
111
+
112
+ if attributes.key?(:'cert_pem')
113
+ self.cert_pem = attributes[:'cert_pem']
114
+ end
115
+
116
+ if attributes.key?(:'key_passphrase')
117
+ self.key_passphrase = attributes[:'key_passphrase']
118
+ end
119
+
120
+ if attributes.key?(:'reason')
121
+ self.reason = attributes[:'reason']
122
+ end
123
+
124
+ if attributes.key?(:'location')
125
+ self.location = attributes[:'location']
126
+ end
127
+
128
+ if attributes.key?(:'contact')
129
+ self.contact = attributes[:'contact']
130
+ end
131
+
132
+ if attributes.key?(:'field_name')
133
+ self.field_name = attributes[:'field_name']
134
+ else
135
+ self.field_name = 'FactPulseSignature'
136
+ end
137
+
138
+ if attributes.key?(:'use_pades_lt')
139
+ self.use_pades_lt = attributes[:'use_pades_lt']
140
+ else
141
+ self.use_pades_lt = false
142
+ end
143
+
144
+ if attributes.key?(:'use_timestamp')
145
+ self.use_timestamp = attributes[:'use_timestamp']
146
+ else
147
+ self.use_timestamp = true
148
+ end
149
+ end
150
+
151
+ # Show invalid properties with the reasons. Usually used together with valid?
152
+ # @return Array for valid properties with the reasons
153
+ def list_invalid_properties
154
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
155
+ invalid_properties = Array.new
156
+ invalid_properties
157
+ end
158
+
159
+ # Check to see if the all the properties in the model are valid
160
+ # @return true if the model is valid
161
+ def valid?
162
+ warn '[DEPRECATED] the `valid?` method is obsolete'
163
+ true
164
+ end
165
+
166
+ # Checks equality by comparing each attribute.
167
+ # @param [Object] Object to be compared
168
+ def ==(o)
169
+ return true if self.equal?(o)
170
+ self.class == o.class &&
171
+ key_pem == o.key_pem &&
172
+ cert_pem == o.cert_pem &&
173
+ key_passphrase == o.key_passphrase &&
174
+ reason == o.reason &&
175
+ location == o.location &&
176
+ contact == o.contact &&
177
+ field_name == o.field_name &&
178
+ use_pades_lt == o.use_pades_lt &&
179
+ use_timestamp == o.use_timestamp
180
+ end
181
+
182
+ # @see the `==` method
183
+ # @param [Object] Object to be compared
184
+ def eql?(o)
185
+ self == o
186
+ end
187
+
188
+ # Calculates hash code according to all attributes.
189
+ # @return [Integer] Hash code
190
+ def hash
191
+ [key_pem, cert_pem, key_passphrase, reason, location, contact, field_name, use_pades_lt, use_timestamp].hash
192
+ end
193
+
194
+ # Builds the object from hash
195
+ # @param [Hash] attributes Model attributes in the form of hash
196
+ # @return [Object] Returns the model itself
197
+ def self.build_from_hash(attributes)
198
+ return nil unless attributes.is_a?(Hash)
199
+ attributes = attributes.transform_keys(&:to_sym)
200
+ transformed_hash = {}
201
+ openapi_types.each_pair do |key, type|
202
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
203
+ transformed_hash["#{key}"] = nil
204
+ elsif type =~ /\AArray<(.*)>/i
205
+ # check to ensure the input is an array given that the attribute
206
+ # is documented as an array but the input is not
207
+ if attributes[attribute_map[key]].is_a?(Array)
208
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
209
+ end
210
+ elsif !attributes[attribute_map[key]].nil?
211
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
212
+ end
213
+ end
214
+ new(transformed_hash)
215
+ end
216
+
217
+ # Returns the object in the form of hash
218
+ # @return [Hash] Returns the object in the form of hash
219
+ def to_hash
220
+ hash = {}
221
+ self.class.attribute_map.each_pair do |attr, param|
222
+ value = self.send(attr)
223
+ if value.nil?
224
+ is_nullable = self.class.openapi_nullable.include?(attr)
225
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
226
+ end
227
+
228
+ hash[param] = _to_hash(value)
229
+ end
230
+ hash
231
+ end
232
+
233
+ end
234
+
235
+ end