factpulse 3.0.10 → 3.0.14
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -3
- data/Gemfile.lock +3 -3
- data/LICENSE +1 -1
- data/docs/AFNORAcknowledgement.md +20 -0
- data/docs/AFNORAcknowledgementDetail.md +24 -0
- data/docs/AFNORAddressEdit.md +30 -0
- data/docs/AFNORAddressPatch.md +30 -0
- data/docs/AFNORAddressPut.md +30 -0
- data/docs/AFNORAddressRead.md +32 -0
- data/docs/{ValidationErrorLocInner.md → AFNORAlgorithm.md} +2 -2
- data/docs/AFNORContainsOperator.md +15 -0
- data/docs/AFNORCreateDirectoryLineBody.md +20 -0
- data/docs/AFNORCreateDirectoryLineBodyAddressingInformation.md +24 -0
- data/docs/AFNORCreateDirectoryLineBodyPeriod.md +20 -0
- data/docs/AFNORCreateRoutingCodeBody.md +32 -0
- data/docs/AFNORDestination.md +4 -2
- data/docs/AFNORDiffusionStatus.md +15 -0
- data/docs/AFNORDirectoryLineField.md +15 -0
- data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCode.md +32 -0
- data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCodePlatform.md +20 -0
- data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCodeRoutingCode.md +28 -0
- data/docs/AFNORDirectoryLinePost201Response.md +22 -0
- data/docs/AFNORDirectoryLineSearchPost200Response.md +22 -0
- data/docs/AFNOREntityType.md +15 -0
- data/docs/AFNORError.md +26 -0
- data/docs/AFNORFacilityAdministrativeStatus.md +15 -0
- data/docs/AFNORFacilityNature.md +15 -0
- data/docs/AFNORFacilityPayloadHistory.md +34 -0
- data/docs/AFNORFacilityPayloadHistoryUleB2gAdditionalData.md +28 -0
- data/docs/AFNORFacilityPayloadIncluded.md +32 -0
- data/docs/AFNORFacilityType.md +15 -0
- data/docs/AFNORFlow.md +38 -0
- data/docs/AFNORFlowAckStatus.md +15 -0
- data/docs/AFNORFlowDirection.md +15 -0
- data/docs/AFNORFlowInfo.md +28 -0
- data/docs/AFNORFlowProfile.md +15 -0
- data/docs/AFNORFlowSyntax.md +15 -0
- data/docs/AFNORFlowType.md +15 -0
- data/docs/AFNORFullFlowInfo.md +32 -0
- data/docs/AFNORLegalUnitAdministrativeStatus.md +15 -0
- data/docs/AFNORLegalUnitPayloadHistory.md +24 -0
- data/docs/AFNORLegalUnitPayloadIncluded.md +24 -0
- data/docs/AFNORLegalUnitPayloadIncludedNoSiren.md +22 -0
- data/docs/AFNORPDPPAApi.md +5 -5
- data/docs/AFNORPDPPADirectoryServiceApi.md +278 -178
- data/docs/AFNORPDPPAFlowServiceApi.md +39 -27
- data/docs/AFNORPlatformStatus.md +15 -0
- data/docs/AFNORProcessingRule.md +15 -0
- data/docs/AFNORReasonCode.md +49 -0
- data/docs/AFNORReasonCodeEnum.md +15 -0
- data/docs/AFNORRecipientPlatformType.md +15 -0
- data/docs/AFNORResult.md +7 -1
- data/docs/AFNORRoutingCodeAdministrativeStatus.md +15 -0
- data/docs/AFNORRoutingCodeField.md +15 -0
- data/docs/AFNORRoutingCodePayloadHistoryLegalUnitFacility.md +34 -0
- data/docs/AFNORRoutingCodePost201Response.md +22 -0
- data/docs/AFNORRoutingCodeSearch.md +28 -0
- data/docs/AFNORRoutingCodeSearchFilters.md +30 -0
- data/docs/AFNORRoutingCodeSearchFiltersAdministrativeStatus.md +20 -0
- data/docs/AFNORRoutingCodeSearchFiltersRoutingCodeName.md +20 -0
- data/docs/AFNORRoutingCodeSearchFiltersRoutingIdentifier.md +20 -0
- data/docs/AFNORRoutingCodeSearchPost200Response.md +22 -0
- data/docs/AFNORRoutingCodeSearchSortingInner.md +20 -0
- data/docs/AFNORSearchDirectoryLine.md +26 -0
- data/docs/AFNORSearchDirectoryLineFilters.md +26 -0
- data/docs/AFNORSearchDirectoryLineFiltersAddressingIdentifier.md +20 -0
- data/docs/AFNORSearchDirectoryLineFiltersAddressingSuffix.md +20 -0
- data/docs/AFNORSearchDirectoryLineSortingInner.md +20 -0
- data/docs/AFNORSearchFlowContent.md +22 -0
- data/docs/AFNORSearchFlowFilters.md +30 -0
- data/docs/AFNORSearchFlowParams.md +20 -0
- data/docs/AFNORSearchSiren.md +26 -0
- data/docs/AFNORSearchSirenFilters.md +24 -0
- data/docs/AFNORSearchSirenFiltersAdministrativeStatus.md +20 -0
- data/docs/AFNORSearchSirenFiltersBusinessName.md +20 -0
- data/docs/AFNORSearchSirenFiltersEntityType.md +20 -0
- data/docs/AFNORSearchSirenFiltersSiren.md +20 -0
- data/docs/AFNORSearchSirenSortingInner.md +20 -0
- data/docs/AFNORSearchSiret.md +28 -0
- data/docs/AFNORSearchSiretFilters.md +34 -0
- data/docs/AFNORSearchSiretFiltersAddressLines.md +20 -0
- data/docs/AFNORSearchSiretFiltersAdministrativeStatus.md +20 -0
- data/docs/AFNORSearchSiretFiltersCountrySubdivision.md +20 -0
- data/docs/AFNORSearchSiretFiltersFacilityType.md +20 -0
- data/docs/AFNORSearchSiretFiltersLocality.md +20 -0
- data/docs/AFNORSearchSiretFiltersName.md +20 -0
- data/docs/AFNORSearchSiretFiltersPostalCode.md +20 -0
- data/docs/AFNORSearchSiretFiltersSiret.md +20 -0
- data/docs/AFNORSearchSiretSortingInner.md +20 -0
- data/docs/AFNORSirenField.md +15 -0
- data/docs/AFNORSirenSearchPost200Response.md +22 -0
- data/docs/AFNORSiretField.md +15 -0
- data/docs/AFNORSiretSearchPost200Response.md +22 -0
- data/docs/AFNORSortingOrder.md +15 -0
- data/docs/AFNORStrictOperator.md +15 -0
- data/docs/AFNORUpdatePatchDirectoryLineBody.md +18 -0
- data/docs/AFNORUpdatePatchRoutingCodeBody.md +24 -0
- data/docs/AFNORUpdatePutRoutingCodeBody.md +24 -0
- data/docs/AFNORWebhookCallbackContent.md +18 -0
- data/docs/AcceptLanguage.md +15 -0
- data/docs/AggregatedPaymentInput.md +22 -0
- data/docs/AggregatedTransactionInput.md +32 -0
- data/docs/AllowanceCharge.md +3 -3
- data/docs/AllowanceChargeReasonCode.md +15 -0
- data/docs/Amount1.md +15 -0
- data/docs/Buyercountry.md +15 -0
- data/docs/ChorusProApi.md +5 -3
- data/docs/{FactureElectroniqueRestApiSchemasChorusProChorusProCredentials.md → ChorusProCredentials.md} +2 -2
- data/docs/ConvertValidationFailedResponse.md +5 -5
- data/docs/CountryCode.md +15 -0
- data/docs/CreateAggregatedReportRequest.md +34 -0
- data/docs/CreateEReportingRequest.md +36 -0
- data/docs/Currency.md +15 -0
- data/docs/CurrencyCode.md +15 -0
- data/docs/DirectoryLineInclude.md +15 -0
- data/docs/DocType.md +15 -0
- data/docs/DocumentConversionApi.md +12 -86
- data/docs/DownloadsApi.md +295 -0
- data/docs/EReportingApi.md +782 -0
- data/docs/EReportingFlowType.md +15 -0
- data/docs/ElectronicAddress.md +2 -2
- data/docs/EnrichedInvoiceInfo.md +6 -6
- data/docs/FactureElectroniqueModelsInvoiceTypeCode.md +15 -0
- data/docs/FactureElectroniqueRestApiSchemasConvertValidationError.md +32 -0
- data/docs/FlowSummary.md +2 -2
- data/docs/GenerateAggregatedReportResponse.md +30 -0
- data/docs/GenerateEReportingResponse.md +26 -0
- data/docs/GetChorusProIdRequest.md +1 -1
- data/docs/GetInvoiceRequest.md +1 -1
- data/docs/GetInvoiceResponse.md +2 -2
- data/docs/GetStructureRequest.md +1 -1
- data/docs/GetStructureResponse.md +2 -2
- data/docs/HealthApi.md +1 -1
- data/docs/IncomingInvoice.md +1 -1
- data/docs/InvoiceInput.md +48 -0
- data/docs/InvoiceLine.md +4 -0
- data/docs/InvoiceNote.md +1 -1
- data/docs/InvoicePaymentInput.md +26 -0
- data/docs/InvoiceProcessingApi.md +41 -17
- data/docs/InvoiceTypeCodeOutput.md +15 -0
- data/docs/InvoicingFramework.md +1 -1
- data/docs/LineSubType.md +15 -0
- data/docs/LocationInner.md +15 -0
- data/docs/PDFXMLVerificationApi.md +17 -9
- data/docs/PaymentAmountByRate.md +20 -0
- data/docs/ProcessingRule.md +15 -0
- data/docs/Rate.md +15 -0
- data/docs/Rate1.md +15 -0
- data/docs/ReportPeriod.md +20 -0
- data/docs/ReportSender.md +22 -0
- data/docs/RoutingCodeInclude.md +15 -0
- data/docs/SearchServicesResponse.md +3 -3
- data/docs/SearchStructureRequest.md +1 -1
- data/docs/Sellercountry.md +15 -0
- data/docs/SimplifiedInvoiceData.md +9 -1
- data/docs/SiretInclude.md +15 -0
- data/docs/SubmitAggregatedReportRequest.md +28 -0
- data/docs/SubmitEReportingRequest.md +28 -0
- data/docs/SubmitEReportingResponse.md +32 -0
- data/docs/SubmitInvoiceRequest.md +1 -1
- data/docs/SupplementaryAttachment.md +5 -5
- data/docs/TaxBreakdownInput.md +22 -0
- data/docs/TaxDueDateType.md +15 -0
- data/docs/Taxableamount.md +15 -0
- data/docs/Taxamount.md +15 -0
- data/docs/Taxamount1.md +15 -0
- data/docs/Taxamount2.md +15 -0
- data/docs/Taxexclusiveamount.md +15 -0
- data/docs/Taxexclusiveamount1.md +15 -0
- data/docs/TransactionCategory.md +15 -0
- data/docs/TransmissionTypeCode.md +15 -0
- data/docs/UserApi.md +1 -1
- data/docs/ValidateEReportingRequest.md +18 -0
- data/docs/ValidateEReportingResponse.md +28 -0
- data/docs/ValidationError.md +1 -1
- data/docs/ValidationInfo.md +1 -1
- data/factpulse.gemspec +4 -4
- data/lib/factpulse/api/afnorpdppa_api.rb +6 -6
- data/lib/factpulse/api/afnorpdppa_directory_service_api.rb +210 -123
- data/lib/factpulse/api/afnorpdppa_flow_service_api.rb +57 -24
- data/lib/factpulse/api/chorus_pro_api.rb +6 -4
- data/lib/factpulse/api/document_conversion_api.rb +13 -85
- data/lib/factpulse/api/downloads_api.rb +280 -0
- data/lib/factpulse/api/e_reporting_api.rb +774 -0
- data/lib/factpulse/api/health_api.rb +2 -2
- data/lib/factpulse/api/invoice_processing_api.rb +47 -14
- data/lib/factpulse/api/pdfxml_verification_api.rb +22 -10
- data/lib/factpulse/api/user_api.rb +2 -2
- data/lib/factpulse/api_client.rb +2 -2
- data/lib/factpulse/api_error.rb +2 -2
- data/lib/factpulse/api_model_base.rb +2 -2
- data/lib/factpulse/configuration.rb +10 -6
- data/lib/factpulse/models/accept_language.rb +40 -0
- data/lib/factpulse/models/acknowledgment_status.rb +2 -2
- data/lib/factpulse/models/additional_document.rb +2 -2
- data/lib/factpulse/models/afnor_acknowledgement.rb +216 -0
- data/lib/factpulse/models/afnor_acknowledgement_detail.rb +267 -0
- data/lib/factpulse/models/afnor_address_edit.rb +353 -0
- data/lib/factpulse/models/afnor_address_patch.rb +386 -0
- data/lib/factpulse/models/afnor_address_put.rb +435 -0
- data/lib/factpulse/models/afnor_address_read.rb +382 -0
- data/lib/factpulse/models/afnor_algorithm.rb +43 -0
- data/lib/factpulse/models/afnor_contains_operator.rb +39 -0
- data/lib/factpulse/models/afnor_create_directory_line_body.rb +156 -0
- data/lib/factpulse/models/afnor_create_directory_line_body_addressing_information.rb +294 -0
- data/lib/factpulse/models/afnor_create_directory_line_body_period.rb +175 -0
- data/lib/factpulse/models/afnor_create_routing_code_body.rb +412 -0
- data/lib/factpulse/models/afnor_credentials.rb +2 -2
- data/lib/factpulse/models/afnor_destination.rb +19 -23
- data/lib/factpulse/models/afnor_diffusion_status.rb +40 -0
- data/lib/factpulse/models/afnor_directory_line_field.rb +44 -0
- data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code.rb +312 -0
- data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_platform.rb +178 -0
- data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_routing_code.rb +308 -0
- data/lib/factpulse/models/afnor_directory_line_post201_response.rb +187 -0
- data/lib/factpulse/models/afnor_directory_line_search_post200_response.rb +168 -0
- data/lib/factpulse/models/afnor_entity_type.rb +40 -0
- data/lib/factpulse/models/{convert_error_response.rb → afnor_error.rb} +51 -61
- data/lib/factpulse/models/afnor_facility_administrative_status.rb +40 -0
- data/lib/factpulse/models/afnor_facility_nature.rb +40 -0
- data/lib/factpulse/models/afnor_facility_payload_history.rb +323 -0
- data/lib/factpulse/models/afnor_facility_payload_history_ule_b2g_additional_data.rb +198 -0
- data/lib/factpulse/models/afnor_facility_payload_included.rb +314 -0
- data/lib/factpulse/models/afnor_facility_type.rb +40 -0
- data/lib/factpulse/models/afnor_flow.rb +315 -0
- data/lib/factpulse/models/afnor_flow_ack_status.rb +41 -0
- data/lib/factpulse/models/afnor_flow_direction.rb +40 -0
- data/lib/factpulse/models/afnor_flow_info.rb +293 -0
- data/lib/factpulse/models/afnor_flow_profile.rb +41 -0
- data/lib/factpulse/models/afnor_flow_syntax.rb +43 -0
- data/lib/factpulse/models/afnor_flow_type.rb +51 -0
- data/lib/factpulse/models/afnor_full_flow_info.rb +339 -0
- data/lib/factpulse/models/afnor_health_check_response.rb +2 -2
- data/lib/factpulse/models/afnor_legal_unit_administrative_status.rb +40 -0
- data/lib/factpulse/models/afnor_legal_unit_payload_history.rb +247 -0
- data/lib/factpulse/models/afnor_legal_unit_payload_included.rb +247 -0
- data/lib/factpulse/models/afnor_legal_unit_payload_included_no_siren.rb +207 -0
- data/lib/factpulse/models/afnor_platform_status.rb +40 -0
- data/lib/factpulse/models/afnor_processing_rule.rb +44 -0
- data/lib/factpulse/models/afnor_reason_code.rb +105 -0
- data/lib/factpulse/models/afnor_reason_code_enum.rb +53 -0
- data/lib/factpulse/models/afnor_recipient_platform_type.rb +40 -0
- data/lib/factpulse/models/afnor_result.rb +37 -7
- data/lib/factpulse/models/afnor_routing_code_administrative_status.rb +40 -0
- data/lib/factpulse/models/afnor_routing_code_field.rb +46 -0
- data/lib/factpulse/models/afnor_routing_code_payload_history_legal_unit_facility.rb +366 -0
- data/lib/factpulse/models/afnor_routing_code_post201_response.rb +228 -0
- data/lib/factpulse/models/afnor_routing_code_search.rb +224 -0
- data/lib/factpulse/models/afnor_routing_code_search_filters.rb +201 -0
- data/lib/factpulse/models/afnor_routing_code_search_filters_administrative_status.rb +178 -0
- data/lib/factpulse/models/afnor_routing_code_search_filters_routing_code_name.rb +209 -0
- data/lib/factpulse/models/afnor_routing_code_search_filters_routing_identifier.rb +209 -0
- data/lib/factpulse/models/afnor_routing_code_search_post200_response.rb +168 -0
- data/lib/factpulse/models/afnor_routing_code_search_sorting_inner.rb +179 -0
- data/lib/factpulse/models/afnor_search_directory_line.rb +191 -0
- data/lib/factpulse/models/afnor_search_directory_line_filters.rb +183 -0
- data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_identifier.rb +198 -0
- data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_suffix.rb +198 -0
- data/lib/factpulse/models/afnor_search_directory_line_sorting_inner.rb +179 -0
- data/lib/factpulse/models/afnor_search_flow_content.rb +168 -0
- data/lib/factpulse/models/afnor_search_flow_filters.rb +250 -0
- data/lib/factpulse/models/afnor_search_flow_params.rb +195 -0
- data/lib/factpulse/models/afnor_search_siren.rb +191 -0
- data/lib/factpulse/models/afnor_search_siren_filters.rb +174 -0
- data/lib/factpulse/models/afnor_search_siren_filters_administrative_status.rb +178 -0
- data/lib/factpulse/models/afnor_search_siren_filters_business_name.rb +198 -0
- data/lib/factpulse/models/afnor_search_siren_filters_entity_type.rb +178 -0
- data/lib/factpulse/models/afnor_search_siren_filters_siren.rb +209 -0
- data/lib/factpulse/models/afnor_search_siren_sorting_inner.rb +179 -0
- data/lib/factpulse/models/afnor_search_siret.rb +224 -0
- data/lib/factpulse/models/afnor_search_siret_filters.rb +219 -0
- data/lib/factpulse/models/afnor_search_siret_filters_address_lines.rb +198 -0
- data/lib/factpulse/models/afnor_search_siret_filters_administrative_status.rb +178 -0
- data/lib/factpulse/models/afnor_search_siret_filters_country_subdivision.rb +198 -0
- data/lib/factpulse/models/afnor_search_siret_filters_facility_type.rb +178 -0
- data/lib/factpulse/models/afnor_search_siret_filters_locality.rb +198 -0
- data/lib/factpulse/models/afnor_search_siret_filters_name.rb +198 -0
- data/lib/factpulse/models/afnor_search_siret_filters_postal_code.rb +209 -0
- data/lib/factpulse/models/afnor_search_siret_filters_siret.rb +209 -0
- data/lib/factpulse/models/afnor_search_siret_sorting_inner.rb +179 -0
- data/lib/factpulse/models/afnor_siren_field.rb +43 -0
- data/lib/factpulse/models/afnor_siren_search_post200_response.rb +168 -0
- data/lib/factpulse/models/afnor_siret_field.rb +52 -0
- data/lib/factpulse/models/afnor_siret_search_post200_response.rb +168 -0
- data/lib/factpulse/models/afnor_sorting_order.rb +40 -0
- data/lib/factpulse/models/afnor_strict_operator.rb +39 -0
- data/lib/factpulse/models/afnor_update_patch_directory_line_body.rb +148 -0
- data/lib/factpulse/models/afnor_update_patch_routing_code_body.rb +258 -0
- data/lib/factpulse/models/afnor_update_put_routing_code_body.rb +289 -0
- data/lib/factpulse/models/afnor_webhook_callback_content.rb +148 -0
- data/lib/factpulse/models/aggregated_payment_input.rb +213 -0
- data/lib/factpulse/models/aggregated_transaction_input.rb +349 -0
- data/lib/factpulse/models/allowance_charge.rb +27 -5
- data/lib/factpulse/models/allowance_charge_reason_code.rb +76 -0
- data/lib/factpulse/models/allowance_reason_code.rb +2 -2
- data/lib/factpulse/models/allowance_total_amount.rb +2 -2
- data/lib/factpulse/models/amount.rb +3 -3
- data/lib/factpulse/models/amount1.rb +104 -0
- data/lib/factpulse/models/amount_due.rb +2 -2
- data/lib/factpulse/models/api_error.rb +2 -2
- data/lib/factpulse/models/api_profile.rb +4 -3
- data/lib/factpulse/models/async_task_status.rb +2 -2
- data/lib/factpulse/models/base_amount.rb +2 -2
- data/lib/factpulse/models/bounding_box_schema.rb +2 -2
- data/lib/factpulse/models/buyercountry.rb +104 -0
- data/lib/factpulse/models/celery_status.rb +2 -2
- data/lib/factpulse/models/certificate_info_response.rb +2 -2
- data/lib/factpulse/models/charge_total_amount.rb +2 -2
- data/lib/factpulse/models/{facture_electronique_rest_api_schemas_chorus_pro_chorus_pro_credentials.rb → chorus_pro_credentials.rb} +5 -5
- data/lib/factpulse/models/chorus_pro_destination.rb +2 -2
- data/lib/factpulse/models/chorus_pro_result.rb +2 -2
- data/lib/factpulse/models/contact.rb +2 -2
- data/lib/factpulse/models/convert_resume_request.rb +2 -2
- data/lib/factpulse/models/convert_success_response.rb +2 -2
- data/lib/factpulse/models/convert_validation_failed_response.rb +7 -2
- data/lib/factpulse/models/country_code.rb +208 -0
- data/lib/factpulse/models/create_aggregated_report_request.rb +310 -0
- data/lib/factpulse/models/create_e_reporting_request.rb +337 -0
- data/lib/factpulse/models/currency.rb +104 -0
- data/lib/factpulse/models/currency_code.rb +91 -0
- data/lib/factpulse/models/delivery_party.rb +2 -2
- data/lib/factpulse/models/destination.rb +2 -2
- data/lib/factpulse/models/directory_line_include.rb +42 -0
- data/lib/factpulse/models/doc_type.rb +42 -0
- data/lib/factpulse/models/document_type_info.rb +2 -2
- data/lib/factpulse/models/e_reporting_flow_type.rb +42 -0
- data/lib/factpulse/models/electronic_address.rb +4 -2
- data/lib/factpulse/models/enriched_invoice_info.rb +8 -2
- data/lib/factpulse/models/error_level.rb +2 -2
- data/lib/factpulse/models/error_source.rb +2 -2
- data/lib/factpulse/models/extraction_info.rb +2 -2
- data/lib/factpulse/models/factur_x_invoice.rb +2 -2
- data/lib/factpulse/models/factur_xpdf_info.rb +2 -2
- data/lib/factpulse/models/facture_electronique_models_invoice_type_code.rb +54 -0
- data/lib/factpulse/models/facture_electronique_rest_api_schemas_convert_validation_error.rb +294 -0
- data/lib/factpulse/models/facture_electronique_rest_api_schemas_processing_chorus_pro_credentials.rb +2 -2
- data/lib/factpulse/models/field_status.rb +2 -2
- data/lib/factpulse/models/file_info.rb +2 -2
- data/lib/factpulse/models/files_info.rb +2 -2
- data/lib/factpulse/models/flow_direction.rb +2 -2
- data/lib/factpulse/models/flow_profile.rb +2 -2
- data/lib/factpulse/models/flow_summary.rb +4 -2
- data/lib/factpulse/models/flow_syntax.rb +2 -2
- data/lib/factpulse/models/flow_type.rb +12 -4
- data/lib/factpulse/models/generate_aggregated_report_response.rb +330 -0
- data/lib/factpulse/models/generate_certificate_request.rb +2 -2
- data/lib/factpulse/models/generate_certificate_response.rb +2 -2
- data/lib/factpulse/models/generate_e_reporting_response.rb +274 -0
- data/lib/factpulse/models/get_chorus_pro_id_request.rb +3 -3
- data/lib/factpulse/models/get_chorus_pro_id_response.rb +2 -2
- data/lib/factpulse/models/get_invoice_request.rb +3 -3
- data/lib/factpulse/models/get_invoice_response.rb +4 -2
- data/lib/factpulse/models/get_structure_request.rb +3 -3
- data/lib/factpulse/models/get_structure_response.rb +4 -2
- data/lib/factpulse/models/global_allowance_amount.rb +2 -2
- data/lib/factpulse/models/gross_unit_price.rb +2 -2
- data/lib/factpulse/models/http_validation_error.rb +2 -2
- data/lib/factpulse/models/incoming_invoice.rb +3 -36
- data/lib/factpulse/models/incoming_supplier.rb +2 -2
- data/lib/factpulse/models/invoice_format.rb +2 -2
- data/lib/factpulse/models/invoice_input.rb +446 -0
- data/lib/factpulse/models/invoice_line.rb +23 -3
- data/lib/factpulse/models/invoice_line_allowance_amount.rb +2 -2
- data/lib/factpulse/models/invoice_note.rb +3 -2
- data/lib/factpulse/models/invoice_payment_input.rb +267 -0
- data/lib/factpulse/models/invoice_references.rb +2 -2
- data/lib/factpulse/models/invoice_status.rb +2 -2
- data/lib/factpulse/models/invoice_totals.rb +2 -2
- data/lib/factpulse/models/invoice_totals_prepayment.rb +2 -2
- data/lib/factpulse/models/invoice_type_code.rb +8 -19
- data/lib/factpulse/models/invoice_type_code_output.rb +54 -0
- data/lib/factpulse/models/invoicing_framework.rb +3 -2
- data/lib/factpulse/models/invoicing_framework_code.rb +2 -2
- data/lib/factpulse/models/line_net_amount.rb +2 -2
- data/lib/factpulse/models/line_sub_type.rb +41 -0
- data/lib/factpulse/models/line_total_amount.rb +2 -2
- data/lib/factpulse/models/{validation_error_loc_inner.rb → location_inner.rb} +3 -3
- data/lib/factpulse/models/mandatory_note_schema.rb +2 -2
- data/lib/factpulse/models/manual_rate.rb +2 -2
- data/lib/factpulse/models/manual_vat_rate.rb +2 -2
- data/lib/factpulse/models/missing_field.rb +2 -2
- data/lib/factpulse/models/operation_nature.rb +2 -2
- data/lib/factpulse/models/output_format.rb +2 -2
- data/lib/factpulse/models/page_dimensions_schema.rb +2 -2
- data/lib/factpulse/models/payee.rb +2 -2
- data/lib/factpulse/models/payment_amount_by_rate.rb +191 -0
- data/lib/factpulse/models/payment_card.rb +2 -2
- data/lib/factpulse/models/payment_means.rb +2 -2
- data/lib/factpulse/models/pdf_validation_result_api.rb +2 -2
- data/lib/factpulse/models/pdp_credentials.rb +2 -2
- data/lib/factpulse/models/percentage.rb +2 -2
- data/lib/factpulse/models/postal_address.rb +2 -2
- data/lib/factpulse/models/price_allowance_amount.rb +2 -2
- data/lib/factpulse/models/price_basis_quantity.rb +2 -2
- data/lib/factpulse/models/processing_options.rb +2 -2
- data/lib/factpulse/models/processing_rule.rb +44 -0
- data/lib/factpulse/models/product_characteristic.rb +2 -2
- data/lib/factpulse/models/product_classification.rb +2 -2
- data/lib/factpulse/models/quantity.rb +2 -2
- data/lib/factpulse/models/rate.rb +104 -0
- data/lib/factpulse/models/rate1.rb +104 -0
- data/lib/factpulse/models/recipient.rb +2 -2
- data/lib/factpulse/models/report_period.rb +193 -0
- data/lib/factpulse/models/report_sender.rb +221 -0
- data/lib/factpulse/models/rounding_amount.rb +2 -2
- data/lib/factpulse/models/routing_code_include.rb +40 -0
- data/lib/factpulse/models/scheme_id.rb +10 -3
- data/lib/factpulse/models/search_flow_request.rb +2 -2
- data/lib/factpulse/models/search_flow_response.rb +2 -2
- data/lib/factpulse/models/search_services_response.rb +5 -2
- data/lib/factpulse/models/search_structure_request.rb +3 -3
- data/lib/factpulse/models/search_structure_response.rb +2 -2
- data/lib/factpulse/models/sellercountry.rb +104 -0
- data/lib/factpulse/models/signature_info.rb +2 -2
- data/lib/factpulse/models/signature_info_api.rb +2 -2
- data/lib/factpulse/models/signature_parameters.rb +2 -2
- data/lib/factpulse/models/simplified_invoice_data.rb +69 -7
- data/lib/factpulse/models/siret_include.rb +39 -0
- data/lib/factpulse/models/structure_info.rb +2 -2
- data/lib/factpulse/models/structure_parameters.rb +2 -2
- data/lib/factpulse/models/structure_service.rb +2 -2
- data/lib/factpulse/models/submission_mode.rb +2 -2
- data/lib/factpulse/models/submit_aggregated_report_request.rb +216 -0
- data/lib/factpulse/models/submit_complete_invoice_request.rb +2 -2
- data/lib/factpulse/models/submit_complete_invoice_response.rb +2 -2
- data/lib/factpulse/models/submit_e_reporting_request.rb +216 -0
- data/lib/factpulse/models/submit_e_reporting_response.rb +306 -0
- data/lib/factpulse/models/submit_flow_request.rb +2 -2
- data/lib/factpulse/models/submit_flow_response.rb +2 -2
- data/lib/factpulse/models/submit_gross_amount.rb +2 -2
- data/lib/factpulse/models/submit_invoice_request.rb +3 -3
- data/lib/factpulse/models/submit_invoice_response.rb +2 -2
- data/lib/factpulse/models/submit_net_amount.rb +2 -2
- data/lib/factpulse/models/submit_vat_amount.rb +2 -2
- data/lib/factpulse/models/supplementary_attachment.rb +7 -2
- data/lib/factpulse/models/supplier.rb +2 -2
- data/lib/factpulse/models/task_response.rb +2 -2
- data/lib/factpulse/models/tax_breakdown_input.rb +217 -0
- data/lib/factpulse/models/tax_due_date_type.rb +44 -0
- data/lib/factpulse/models/tax_representative.rb +2 -2
- data/lib/factpulse/models/taxable_amount.rb +2 -2
- data/lib/factpulse/models/taxableamount0.rb +104 -0
- data/lib/factpulse/models/taxamount.rb +104 -0
- data/lib/factpulse/models/taxamount1.rb +104 -0
- data/lib/factpulse/models/taxamount2.rb +104 -0
- data/lib/factpulse/models/taxexclusiveamount.rb +104 -0
- data/lib/factpulse/models/taxexclusiveamount1.rb +104 -0
- data/lib/factpulse/models/total_gross_amount.rb +2 -2
- data/lib/factpulse/models/total_net_amount.rb +2 -2
- data/lib/factpulse/models/total_vat_amount.rb +2 -2
- data/lib/factpulse/models/transaction_category.rb +42 -0
- data/lib/factpulse/models/transmission_type_code.rb +40 -0
- data/lib/factpulse/models/unit_net_price.rb +2 -2
- data/lib/factpulse/models/unit_of_measure.rb +2 -2
- data/lib/factpulse/models/validate_e_reporting_request.rb +166 -0
- data/lib/factpulse/models/validate_e_reporting_response.rb +271 -0
- data/lib/factpulse/models/validation_error.rb +3 -3
- data/lib/factpulse/models/validation_error_detail.rb +2 -2
- data/lib/factpulse/models/validation_error_response.rb +2 -2
- data/lib/factpulse/models/validation_info.rb +3 -3
- data/lib/factpulse/models/validation_success_response.rb +2 -2
- data/lib/factpulse/models/vat_accounting_code.rb +2 -2
- data/lib/factpulse/models/vat_amount.rb +2 -2
- data/lib/factpulse/models/vat_category.rb +2 -2
- data/lib/factpulse/models/vat_line.rb +2 -2
- data/lib/factpulse/models/vat_point_date_code.rb +2 -2
- data/lib/factpulse/models/vat_rate.rb +2 -2
- data/lib/factpulse/models/verification_success_response.rb +2 -2
- data/lib/factpulse/models/verified_field_schema.rb +2 -2
- data/lib/factpulse/version.rb +3 -3
- data/lib/factpulse.rb +143 -6
- metadata +291 -17
- data/docs/ConvertErrorResponse.md +0 -26
- data/docs/ConvertPendingInputResponse.md +0 -32
- data/lib/factpulse/models/convert_pending_input_response.rb +0 -322
data/docs/ElectronicAddress.md
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **identifier** | **String** |
|
|
8
|
-
| **scheme_id** | [**SchemeID**](SchemeID.md) |
|
|
7
|
+
| **identifier** | **String** | Electronic address identifier (e.g., SIREN, SIRET, routing code) | |
|
|
8
|
+
| **scheme_id** | [**SchemeID**](SchemeID.md) | Identification scheme (EAS code) | [optional] |
|
|
9
9
|
|
|
10
10
|
## Example
|
|
11
11
|
|
data/docs/EnrichedInvoiceInfo.md
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **invoice_number** | **String** |
|
|
7
|
+
| **invoice_number** | **String** | Invoice number | |
|
|
8
8
|
| **supplier_id** | **Integer** | | [optional] |
|
|
9
9
|
| **recipient_id** | **Integer** | | [optional] |
|
|
10
|
-
| **supplier_name** | **String** |
|
|
11
|
-
| **recipient_name** | **String** |
|
|
12
|
-
| **total_net_amount** | **String** |
|
|
13
|
-
| **vat_amount** | **String** |
|
|
14
|
-
| **total_gross_amount** | **String** |
|
|
10
|
+
| **supplier_name** | **String** | Supplier name | |
|
|
11
|
+
| **recipient_name** | **String** | Recipient name | |
|
|
12
|
+
| **total_net_amount** | **String** | Total net amount (HT) | |
|
|
13
|
+
| **vat_amount** | **String** | VAT amount | |
|
|
14
|
+
| **total_gross_amount** | **String** | Total gross amount (TTC) | |
|
|
15
15
|
|
|
16
16
|
## Example
|
|
17
17
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# FactPulse::FactureElectroniqueModelsInvoiceTypeCode
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
|
|
8
|
+
## Example
|
|
9
|
+
|
|
10
|
+
```ruby
|
|
11
|
+
require 'factpulse'
|
|
12
|
+
|
|
13
|
+
instance = FactPulse::FactureElectroniqueModelsInvoiceTypeCode.new()
|
|
14
|
+
```
|
|
15
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# FactPulse::FactureElectroniqueRestApiSchemasConvertValidationError
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **rule** | **String** | Code de la regle (BR-XX, BR-FR-XX) | |
|
|
8
|
+
| **bt_code** | **String** | | [optional] |
|
|
9
|
+
| **severity** | **String** | Gravite: error, warning | |
|
|
10
|
+
| **message** | **String** | Message d'erreur | |
|
|
11
|
+
| **suggested_value** | **String** | | [optional] |
|
|
12
|
+
| **suggested_field** | **String** | | [optional] |
|
|
13
|
+
| **explanation** | **String** | | [optional] |
|
|
14
|
+
| **confidence** | **Float** | | [optional] |
|
|
15
|
+
|
|
16
|
+
## Example
|
|
17
|
+
|
|
18
|
+
```ruby
|
|
19
|
+
require 'factpulse'
|
|
20
|
+
|
|
21
|
+
instance = FactPulse::FactureElectroniqueRestApiSchemasConvertValidationError.new(
|
|
22
|
+
rule: null,
|
|
23
|
+
bt_code: null,
|
|
24
|
+
severity: null,
|
|
25
|
+
message: null,
|
|
26
|
+
suggested_value: null,
|
|
27
|
+
suggested_field: null,
|
|
28
|
+
explanation: null,
|
|
29
|
+
confidence: null
|
|
30
|
+
)
|
|
31
|
+
```
|
|
32
|
+
|
data/docs/FlowSummary.md
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **flow_id** | **String** |
|
|
7
|
+
| **flow_id** | **String** | Unique flow identifier | |
|
|
8
8
|
| **tracking_id** | **String** | | [optional] |
|
|
9
|
-
| **name** | **String** |
|
|
9
|
+
| **name** | **String** | Flow name | |
|
|
10
10
|
| **flow_type** | **String** | | [optional] |
|
|
11
11
|
| **flow_direction** | **String** | | [optional] |
|
|
12
12
|
| **acknowledgment_status** | **String** | | [optional] |
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# FactPulse::GenerateAggregatedReportResponse
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **report_id** | **String** | Report identifier | |
|
|
8
|
+
| **transmission_type** | **String** | Transmission type (IN or RE) | |
|
|
9
|
+
| **flow_type** | **String** | AFNOR FlowType determined from content | |
|
|
10
|
+
| **xml** | **String** | Generated XML content | |
|
|
11
|
+
| **xml_size** | **Integer** | XML size in bytes | |
|
|
12
|
+
| **content_summary** | **Hash<String, Object>** | Summary of content (counts by flux type) | |
|
|
13
|
+
| **message** | **String** | Status message | |
|
|
14
|
+
|
|
15
|
+
## Example
|
|
16
|
+
|
|
17
|
+
```ruby
|
|
18
|
+
require 'factpulse'
|
|
19
|
+
|
|
20
|
+
instance = FactPulse::GenerateAggregatedReportResponse.new(
|
|
21
|
+
report_id: null,
|
|
22
|
+
transmission_type: null,
|
|
23
|
+
flow_type: null,
|
|
24
|
+
xml: null,
|
|
25
|
+
xml_size: null,
|
|
26
|
+
content_summary: null,
|
|
27
|
+
message: null
|
|
28
|
+
)
|
|
29
|
+
```
|
|
30
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# FactPulse::GenerateEReportingResponse
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **report_id** | **String** | Report identifier | |
|
|
8
|
+
| **flow_type** | **String** | Flux type | |
|
|
9
|
+
| **xml** | **String** | Generated XML content | |
|
|
10
|
+
| **xml_size** | **Integer** | XML size in bytes | |
|
|
11
|
+
| **message** | **String** | Status message | |
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```ruby
|
|
16
|
+
require 'factpulse'
|
|
17
|
+
|
|
18
|
+
instance = FactPulse::GenerateEReportingResponse.new(
|
|
19
|
+
report_id: null,
|
|
20
|
+
flow_type: null,
|
|
21
|
+
xml: null,
|
|
22
|
+
xml_size: null,
|
|
23
|
+
message: null
|
|
24
|
+
)
|
|
25
|
+
```
|
|
26
|
+
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **credentials** | [**
|
|
7
|
+
| **credentials** | [**ChorusProCredentials**](ChorusProCredentials.md) | | [optional] |
|
|
8
8
|
| **siret** | **String** | Structure SIRET (14 digits) | |
|
|
9
9
|
| **identifier_type** | **String** | Identifier type (SIRET, SIREN, UE_HORS_FRANCE, etc.) | [optional][default to 'SIRET'] |
|
|
10
10
|
|
data/docs/GetInvoiceRequest.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **credentials** | [**
|
|
7
|
+
| **credentials** | [**ChorusProCredentials**](ChorusProCredentials.md) | | [optional] |
|
|
8
8
|
| **chorus_invoice_id** | **Integer** | Chorus Pro invoice ID | |
|
|
9
9
|
|
|
10
10
|
## Example
|
data/docs/GetInvoiceResponse.md
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **return_code** | **Integer** |
|
|
8
|
-
| **message** | **String** |
|
|
7
|
+
| **return_code** | **Integer** | Return code (0 = success) | |
|
|
8
|
+
| **message** | **String** | Response message | |
|
|
9
9
|
| **chorus_invoice_id** | **Integer** | | [optional] |
|
|
10
10
|
| **invoice_number** | **String** | | [optional] |
|
|
11
11
|
| **invoice_date** | **String** | | [optional] |
|
data/docs/GetStructureRequest.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **credentials** | [**
|
|
7
|
+
| **credentials** | [**ChorusProCredentials**](ChorusProCredentials.md) | | [optional] |
|
|
8
8
|
| **structure_id** | **Integer** | Chorus Pro structure ID | |
|
|
9
9
|
| **language_code** | **String** | Language code (fr, en) | [optional][default to 'fr'] |
|
|
10
10
|
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **return_code** | **Integer** |
|
|
8
|
-
| **message** | **String** |
|
|
7
|
+
| **return_code** | **Integer** | Return code (0 = success) | |
|
|
8
|
+
| **message** | **String** | Response message | |
|
|
9
9
|
| **structure_id** | **Integer** | | [optional] |
|
|
10
10
|
| **structure_identifier** | **String** | | [optional] |
|
|
11
11
|
| **structure_label** | **String** | | [optional] |
|
data/docs/HealthApi.md
CHANGED
data/docs/IncomingInvoice.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
| **flow_id** | **String** | | [optional] |
|
|
8
8
|
| **source_format** | [**InvoiceFormat**](InvoiceFormat.md) | Invoice source format | |
|
|
9
9
|
| **supplier_reference** | **String** | Invoice number issued by the supplier (BT-1) | |
|
|
10
|
-
| **document_type** | [**
|
|
10
|
+
| **document_type** | [**InvoiceTypeCodeOutput**](InvoiceTypeCodeOutput.md) | Document type (BT-3) | [optional] |
|
|
11
11
|
| **supplier** | [**IncomingSupplier**](IncomingSupplier.md) | Invoice issuer (SellerTradeParty) | |
|
|
12
12
|
| **billing_site_name** | **String** | Recipient name / your company (BT-44) | |
|
|
13
13
|
| **billing_site_siret** | **String** | | [optional] |
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# FactPulse::InvoiceInput
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **invoice_id** | **String** | Invoice identifier | |
|
|
8
|
+
| **issue_date** | **Date** | Invoice issue date | |
|
|
9
|
+
| **type_code** | [**InvoiceTypeCode**](InvoiceTypeCode.md) | Invoice type code | [optional] |
|
|
10
|
+
| **currency** | [**Currency**](Currency.md) | | [optional] |
|
|
11
|
+
| **due_date** | **Date** | | [optional] |
|
|
12
|
+
| **seller_siren** | **String** | Seller SIREN/SIRET | |
|
|
13
|
+
| **seller_vat_id** | **String** | | [optional] |
|
|
14
|
+
| **seller_country** | [**Sellercountry**](Sellercountry.md) | | [optional] |
|
|
15
|
+
| **buyer_id** | **String** | | [optional] |
|
|
16
|
+
| **buyer_vat_id** | **String** | | [optional] |
|
|
17
|
+
| **buyer_country** | [**Buyercountry**](Buyercountry.md) | | |
|
|
18
|
+
| **tax_exclusive_amount** | [**Taxexclusiveamount1**](Taxexclusiveamount1.md) | | |
|
|
19
|
+
| **tax_amount** | [**Taxamount1**](Taxamount1.md) | | |
|
|
20
|
+
| **tax_breakdown** | [**Array<TaxBreakdownInput>**](TaxBreakdownInput.md) | VAT breakdown | |
|
|
21
|
+
| **referenced_invoice_id** | **String** | | [optional] |
|
|
22
|
+
| **referenced_invoice_date** | **Date** | | [optional] |
|
|
23
|
+
|
|
24
|
+
## Example
|
|
25
|
+
|
|
26
|
+
```ruby
|
|
27
|
+
require 'factpulse'
|
|
28
|
+
|
|
29
|
+
instance = FactPulse::InvoiceInput.new(
|
|
30
|
+
invoice_id: FAC-2025-001,
|
|
31
|
+
issue_date: 2025-01-15,
|
|
32
|
+
type_code: null,
|
|
33
|
+
currency: null,
|
|
34
|
+
due_date: null,
|
|
35
|
+
seller_siren: 123456789,
|
|
36
|
+
seller_vat_id: null,
|
|
37
|
+
seller_country: null,
|
|
38
|
+
buyer_id: null,
|
|
39
|
+
buyer_vat_id: null,
|
|
40
|
+
buyer_country: null,
|
|
41
|
+
tax_exclusive_amount: null,
|
|
42
|
+
tax_amount: null,
|
|
43
|
+
tax_breakdown: null,
|
|
44
|
+
referenced_invoice_id: null,
|
|
45
|
+
referenced_invoice_date: null
|
|
46
|
+
)
|
|
47
|
+
```
|
|
48
|
+
|
data/docs/InvoiceLine.md
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **line_number** | **Integer** | Invoice line identifier (BT-126). | |
|
|
8
8
|
| **line_note** | **String** | | [optional] |
|
|
9
|
+
| **parent_line_id** | **String** | | [optional] |
|
|
10
|
+
| **line_sub_type** | [**LineSubType**](LineSubType.md) | | [optional] |
|
|
9
11
|
| **reference** | **String** | | [optional] |
|
|
10
12
|
| **buyer_assigned_id** | **String** | | [optional] |
|
|
11
13
|
| **product_global_id** | **String** | | [optional] |
|
|
@@ -45,6 +47,8 @@ require 'factpulse'
|
|
|
45
47
|
instance = FactPulse::InvoiceLine.new(
|
|
46
48
|
line_number: null,
|
|
47
49
|
line_note: null,
|
|
50
|
+
parent_line_id: null,
|
|
51
|
+
line_sub_type: null,
|
|
48
52
|
reference: null,
|
|
49
53
|
buyer_assigned_id: null,
|
|
50
54
|
product_global_id: null,
|
data/docs/InvoiceNote.md
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# FactPulse::InvoicePaymentInput
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **invoice_id** | **String** | Invoice identifier | |
|
|
8
|
+
| **invoice_date** | **Date** | Original invoice date | |
|
|
9
|
+
| **payment_date** | **Date** | Payment date | |
|
|
10
|
+
| **currency** | [**Currency**](Currency.md) | | [optional] |
|
|
11
|
+
| **amounts_by_rate** | [**Array<PaymentAmountByRate>**](PaymentAmountByRate.md) | Payment amounts by VAT rate | |
|
|
12
|
+
|
|
13
|
+
## Example
|
|
14
|
+
|
|
15
|
+
```ruby
|
|
16
|
+
require 'factpulse'
|
|
17
|
+
|
|
18
|
+
instance = FactPulse::InvoicePaymentInput.new(
|
|
19
|
+
invoice_id: FAC-2025-001,
|
|
20
|
+
invoice_date: 2025-01-15,
|
|
21
|
+
payment_date: 2025-01-25,
|
|
22
|
+
currency: null,
|
|
23
|
+
amounts_by_rate: null
|
|
24
|
+
)
|
|
25
|
+
```
|
|
26
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# FactPulse::InvoiceProcessingApi
|
|
2
2
|
|
|
3
|
-
All URIs are relative to *
|
|
3
|
+
All URIs are relative to *https://factpulse.fr*
|
|
4
4
|
|
|
5
5
|
| Method | HTTP request | Description |
|
|
6
6
|
| ------ | ------------ | ----------- |
|
|
@@ -23,7 +23,7 @@ All URIs are relative to *http://localhost*
|
|
|
23
23
|
|
|
24
24
|
Generate a Factur-X invoice
|
|
25
25
|
|
|
26
|
-
Generates an electronic invoice in Factur-X format compliant with European standards. ## Applied Standards - **Factur-X** (France): FNFE-MPE standard (Forum National de la Facture Électronique) - **ZUGFeRD** (Germany): German format compatible with Factur-X - **EN 16931**: European semantic standard for electronic invoicing - **ISO 19005-3** (PDF/A-3): Long-term electronic archiving - **Cross Industry Invoice (CII)**: UN/CEFACT XML syntax ## 🆕 New: Simplified format with auto-enrichment (P0.1) You can now create an invoice by providing only: - An invoice number - A
|
|
26
|
+
Generates an electronic invoice in Factur-X format compliant with European standards. ## Applied Standards - **Factur-X** (France): FNFE-MPE standard (Forum National de la Facture Électronique) - **ZUGFeRD** (Germany): German format compatible with Factur-X - **EN 16931**: European semantic standard for electronic invoicing - **ISO 19005-3** (PDF/A-3): Long-term electronic archiving - **Cross Industry Invoice (CII)**: UN/CEFACT XML syntax ## 🆕 New: Simplified format with auto-enrichment (P0.1) You can now create an invoice by providing only: - An invoice number - A supplier SIRET + **IBAN** (required) - A recipient SIRET - Invoice lines (description, quantity, net price) **Simplified format example**: ```json { \"number\": \"FACT-2025-001\", \"supplier\": { \"siret\": \"92019522900017\", \"iban\": \"FR7630001007941234567890185\" }, \"recipient\": {\"siret\": \"35600000000048\"}, \"lines\": [ {\"description\": \"Service\", \"quantity\": 10, \"unitPrice\": 100.00, \"vatRate\": 20.0} ] } ``` **⚠️ Required fields (simplified format)**: - `number`: Unique invoice number - `supplier.siret`: Supplier's SIRET (14 digits) - `supplier.iban`: Bank account IBAN (no public API to retrieve it) - `recipient.siret`: Recipient's SIRET - `lines[]`: At least one invoice line **What happens automatically with `auto_enrich=True`**: - ✅ Name enrichment from Chorus Pro API - ✅ Address enrichment from Business Search API (free, public) - ✅ Automatic intra-EU VAT calculation (FR + key + SIREN) - ✅ Chorus Pro ID retrieval for electronic invoicing - ✅ Net/VAT/Gross totals calculation - ✅ Date generation (today + 30-day due date) - ✅ Multi-rate VAT handling **Supported identifiers**: - SIRET (14 digits): Specific establishment ⭐ Recommended - SIREN (9 digits): Company (auto-selection of headquarters) - Special types: UE_HORS_FRANCE, RIDET, TAHITI, etc. ## Checks performed during generation ### 1. Data validation (Pydantic) - Data types (amounts as Decimal, ISO 8601 dates) - Formats (14-digit SIRET, 9-digit SIREN, IBAN) - Required fields per profile - Amount consistency (Net + VAT = Gross) ### 2. CII-compliant XML generation - Serialization according to Cross Industry Invoice XSD schema - Correct UN/CEFACT namespaces - Hierarchical structure respected - UTF-8 encoding without BOM ### 3. Schematron validation - Business rules for selected profile (MINIMUM, BASIC, EN16931, EXTENDED) - Element cardinality (required, optional, repeatable) - Calculation rules (totals, VAT, discounts) - European EN 16931 compliance ### 4. PDF/A-3 conversion (if output_format='pdf') - Source PDF conversion to PDF/A-3 via Ghostscript - Factur-X XML embedding in PDF - Compliant XMP metadata - ICC sRGB color profile - Removal of forbidden elements (JavaScript, forms) ## How it works 1. **Submission**: Invoice is queued in Celery for asynchronous processing 2. **Immediate return**: You receive a `task_id` (HTTP 202 Accepted) 3. **Tracking**: Use the `/tasks/{task_id}/status` endpoint to track progress ## Webhook notification (recommended) Instead of polling, you can receive a webhook notification when the task completes: ``` callback_url=https://your-server.com/webhook ``` The webhook will POST a JSON payload with: - `event_type`: `generation.completed` or `generation.failed` - `data.task_id`: The Celery task ID - `data.content_b64` or `data.xml_content`: The generated content - `X-Webhook-Signature` header for HMAC verification See `/docs/WEBHOOKS.md` for full documentation. ## Output formats - **xml**: Generates only Factur-X XML (recommended for testing) - **pdf**: Generates PDF/A-3 with embedded XML (requires `source_pdf`) ## Factur-X profiles - **MINIMUM**: Minimal data (simplified invoice) - **BASIC**: Basic information (SMEs) - **EN16931**: European standard (recommended, compliant with directive 2014/55/EU) - **EXTENDED**: All available data (large accounts) ## What you get After successful processing (status `completed`): - **XML only**: Base64-encoded Factur-X compliant XML file - **PDF/A-3**: PDF with embedded XML, ready for sending/archiving - **Metadata**: Profile, Factur-X version, file size - **Validation**: Schematron compliance confirmation ## Validation Data is automatically validated according to detected format. On error, a 422 status is returned with invalid field details.
|
|
27
27
|
|
|
28
28
|
### Examples
|
|
29
29
|
|
|
@@ -37,12 +37,15 @@ FactPulse.configure do |config|
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
api_instance = FactPulse::InvoiceProcessingApi.new
|
|
40
|
-
invoice_data = 'invoice_data_example' # String | Invoice data in JSON format. Two formats accepted: 1. **Classic format**: Complete
|
|
40
|
+
invoice_data = 'invoice_data_example' # String | Invoice data in JSON format. Two formats accepted: 1. **Classic format**: Complete FacturXInvoice structure (all fields) 2. **Simplified format** (🆕 P0.1): Minimal structure with auto-enrichment Format is detected automatically!
|
|
41
41
|
opts = {
|
|
42
42
|
profile: FactPulse::APIProfile::MINIMUM, # APIProfile | Factur-X profile: MINIMUM, BASIC, EN16931 or EXTENDED.
|
|
43
43
|
output_format: FactPulse::OutputFormat::XML, # OutputFormat | Output format: 'xml' (XML only) or 'pdf' (Factur-X PDF with embedded XML).
|
|
44
44
|
auto_enrich: true, # Boolean | 🆕 Enable auto-enrichment from SIRET/SIREN (simplified format only)
|
|
45
|
-
source_pdf: File.new('/path/to/some/file') # File |
|
|
45
|
+
source_pdf: File.new('/path/to/some/file'), # File |
|
|
46
|
+
callback_url: 'callback_url_example', # String |
|
|
47
|
+
webhook_mode: 'webhook_mode_example', # String | Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL)
|
|
48
|
+
skip_br_fr: true # Boolean |
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
begin
|
|
@@ -76,11 +79,14 @@ end
|
|
|
76
79
|
|
|
77
80
|
| Name | Type | Description | Notes |
|
|
78
81
|
| ---- | ---- | ----------- | ----- |
|
|
79
|
-
| **invoice_data** | **String** | Invoice data in JSON format. Two formats accepted: 1. **Classic format**: Complete
|
|
82
|
+
| **invoice_data** | **String** | Invoice data in JSON format. Two formats accepted: 1. **Classic format**: Complete FacturXInvoice structure (all fields) 2. **Simplified format** (🆕 P0.1): Minimal structure with auto-enrichment Format is detected automatically! | |
|
|
80
83
|
| **profile** | [**APIProfile**](APIProfile.md) | Factur-X profile: MINIMUM, BASIC, EN16931 or EXTENDED. | [optional] |
|
|
81
84
|
| **output_format** | [**OutputFormat**](OutputFormat.md) | Output format: 'xml' (XML only) or 'pdf' (Factur-X PDF with embedded XML). | [optional] |
|
|
82
85
|
| **auto_enrich** | **Boolean** | 🆕 Enable auto-enrichment from SIRET/SIREN (simplified format only) | [optional][default to true] |
|
|
83
86
|
| **source_pdf** | **File** | | [optional] |
|
|
87
|
+
| **callback_url** | **String** | | [optional] |
|
|
88
|
+
| **webhook_mode** | **String** | Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL) | [optional][default to 'inline'] |
|
|
89
|
+
| **skip_br_fr** | **Boolean** | | [optional] |
|
|
84
90
|
|
|
85
91
|
### Return type
|
|
86
92
|
|
|
@@ -102,7 +108,7 @@ end
|
|
|
102
108
|
|
|
103
109
|
Generate a self-signed X.509 test certificate
|
|
104
110
|
|
|
105
|
-
Generates a self-signed X.509 certificate for PDF electronic signature testing. **⚠️ WARNING: TEST certificate only!** This certificate is: - ✅ Suitable for testing and development - ✅ Compatible with PDF signing (PAdES) - ✅ Compliant with eIDAS **SES** level (Simple Electronic Signature) - ❌ **NEVER usable in production** - ❌ **Not recognized** by browsers and PDF readers - ❌ **No legal value** ## eIDAS levels - **SES** (Simple): Self-signed certificate ← Generated by this endpoint - **AdES** (Advanced): Commercial CA certificate (Let's Encrypt, etc.) - **QES** (Qualified): Qualified certificate from QTSP (CertEurope, Universign, etc.) ## Usage Once generated, the certificate can be: 1. **Saved in Django** (recommended): - Django Admin > Signing Certificates - Upload `certificate_pem` and `private_key_pem` 2. **Used directly**: - Sign a PDF with `/sign-pdf` - The certificate will be automatically used ## Example call ```bash curl -X POST \"https://
|
|
111
|
+
Generates a self-signed X.509 certificate for PDF electronic signature testing. **⚠️ WARNING: TEST certificate only!** This certificate is: - ✅ Suitable for testing and development - ✅ Compatible with PDF signing (PAdES) - ✅ Compliant with eIDAS **SES** level (Simple Electronic Signature) - ❌ **NEVER usable in production** - ❌ **Not recognized** by browsers and PDF readers - ❌ **No legal value** ## eIDAS levels - **SES** (Simple): Self-signed certificate ← Generated by this endpoint - **AdES** (Advanced): Commercial CA certificate (Let's Encrypt, etc.) - **QES** (Qualified): Qualified certificate from QTSP (CertEurope, Universign, etc.) ## Usage Once generated, the certificate can be: 1. **Saved in Django** (recommended): - Django Admin > Signing Certificates - Upload `certificate_pem` and `private_key_pem` 2. **Used directly**: - Sign a PDF with `/sign-pdf` - The certificate will be automatically used ## Example call ```bash curl -X POST \"https://factpulse.fr/api/v1/processing/generate-test-certificate\" \\ -H \"Authorization: Bearer eyJ0eXAi...\" \\ -H \"Content-Type: application/json\" \\ -d '{ \"cn\": \"Test Client XYZ\", \"organization\": \"Client XYZ Ltd\", \"email\": \"contact@xyz.com\", \"validity_days\": 365 }' ``` ## Use cases - PDF signature testing in development - Electronic signature POC - Training and demos - Automated integration tests ## Technical compliance Certificate generated with: - RSA key 2048 or 4096 bits - SHA-256 algorithm - Key Usage extensions: `digitalSignature`, `contentCommitment` (non-repudiation) - Extended Key Usage extensions: `codeSigning`, `emailProtection` - Validity: 1 day to 10 years (configurable) - Format: PEM (certificate and key) - Optional: PKCS#12 (.p12)
|
|
106
112
|
|
|
107
113
|
### Examples
|
|
108
114
|
|
|
@@ -185,7 +191,7 @@ FactPulse.configure do |config|
|
|
|
185
191
|
end
|
|
186
192
|
|
|
187
193
|
api_instance = FactPulse::InvoiceProcessingApi.new
|
|
188
|
-
task_id = 'task_id_example' # String |
|
|
194
|
+
task_id = 'task_id_example' # String | Celery task ID returned by async endpoints (UUID format)
|
|
189
195
|
|
|
190
196
|
begin
|
|
191
197
|
# Get task generation status
|
|
@@ -218,7 +224,7 @@ end
|
|
|
218
224
|
|
|
219
225
|
| Name | Type | Description | Notes |
|
|
220
226
|
| ---- | ---- | ----------- | ----- |
|
|
221
|
-
| **task_id** | **String** |
|
|
227
|
+
| **task_id** | **String** | Celery task ID returned by async endpoints (UUID format) | |
|
|
222
228
|
|
|
223
229
|
### Return type
|
|
224
230
|
|
|
@@ -339,6 +345,8 @@ end
|
|
|
339
345
|
api_instance = FactPulse::InvoiceProcessingApi.new
|
|
340
346
|
pdf_file = File.new('/path/to/some/file') # File | PDF file to sign (processed asynchronously)
|
|
341
347
|
opts = {
|
|
348
|
+
callback_url: 'callback_url_example', # String |
|
|
349
|
+
webhook_mode: 'webhook_mode_example', # String | Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL)
|
|
342
350
|
reason: 'reason_example', # String |
|
|
343
351
|
location: 'location_example', # String |
|
|
344
352
|
contact: 'contact_example', # String |
|
|
@@ -379,6 +387,8 @@ end
|
|
|
379
387
|
| Name | Type | Description | Notes |
|
|
380
388
|
| ---- | ---- | ----------- | ----- |
|
|
381
389
|
| **pdf_file** | **File** | PDF file to sign (processed asynchronously) | |
|
|
390
|
+
| **callback_url** | **String** | | [optional] |
|
|
391
|
+
| **webhook_mode** | **String** | Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL) | [optional][default to 'inline'] |
|
|
382
392
|
| **reason** | **String** | | [optional] |
|
|
383
393
|
| **location** | **String** | | [optional] |
|
|
384
394
|
| **contact** | **String** | | [optional] |
|
|
@@ -471,11 +481,11 @@ end
|
|
|
471
481
|
|
|
472
482
|
## submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post
|
|
473
483
|
|
|
474
|
-
> <TaskResponse> submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post(submit_complete_invoice_request)
|
|
484
|
+
> <TaskResponse> submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post(submit_complete_invoice_request, opts)
|
|
475
485
|
|
|
476
486
|
Submit a complete invoice (asynchronous with Celery)
|
|
477
487
|
|
|
478
|
-
Asynchronous version of the `/invoices/submit-complete` endpoint using Celery for background processing. **Automated workflow (same as synchronous version):** 1. **Auto-enrichment** (optional): retrieves data via public APIs and Chorus Pro/AFNOR 2. **Factur-X PDF generation**: creates a PDF/A-3 with embedded XML 3. **Electronic signature** (optional): signs the PDF with a certificate 4. **Submission**: sends to the chosen destination (Chorus Pro or AFNOR PDP) **Supported destinations:** - **Chorus Pro**: French B2G platform (invoices to public sector) - **AFNOR PDP**: Partner Dematerialization Platforms **Differences with synchronous version:** - ✅ **Non-blocking**: Returns immediately with a `task_id` (HTTP 202 Accepted) - ✅ **Background processing**: Invoice is processed by a Celery worker - ✅ **Progress tracking**: Use `/tasks/{task_id}/status` to track status - ✅ **Ideal for high volumes**: Allows processing many invoices in parallel **How to use:** 1. **Submission**: Call this endpoint with your invoice data 2. **Immediate return**: You receive a `task_id` (e.g., \"abc123-def456\") 3. **Tracking**: Call `/tasks/{task_id}/status` to check progress 4. **Result**: When `status = \"SUCCESS\"`, the `result` field contains the complete response **Credentials and signature**: Same modes as the synchronous version (JWT or payload).
|
|
488
|
+
Asynchronous version of the `/invoices/submit-complete` endpoint using Celery for background processing. **Automated workflow (same as synchronous version):** 1. **Auto-enrichment** (optional): retrieves data via public APIs and Chorus Pro/AFNOR 2. **Factur-X PDF generation**: creates a PDF/A-3 with embedded XML 3. **Electronic signature** (optional): signs the PDF with a certificate 4. **Submission**: sends to the chosen destination (Chorus Pro or AFNOR PDP) **Supported destinations:** - **Chorus Pro**: French B2G platform (invoices to public sector) - **AFNOR PDP**: Partner Dematerialization Platforms **Differences with synchronous version:** - ✅ **Non-blocking**: Returns immediately with a `task_id` (HTTP 202 Accepted) - ✅ **Background processing**: Invoice is processed by a Celery worker - ✅ **Progress tracking**: Use `/tasks/{task_id}/status` to track status - ✅ **Ideal for high volumes**: Allows processing many invoices in parallel **How to use:** 1. **Submission**: Call this endpoint with your invoice data 2. **Immediate return**: You receive a `task_id` (e.g., \"abc123-def456\") 3. **Tracking**: Call `/tasks/{task_id}/status` to check progress 4. **Result**: When `status = \"SUCCESS\"`, the `result` field contains the complete response **Webhook notification (recommended):** Instead of polling, add `?callback_url=https://your-server.com/webhook` to receive automatic notification: - `event_type`: `submission.completed`, `submission.failed`, or `submission.partial` - `data.submission_result`: Complete submission result - `X-Webhook-Signature` header for HMAC verification **Credentials and signature**: Same modes as the synchronous version (JWT or payload).
|
|
479
489
|
|
|
480
490
|
### Examples
|
|
481
491
|
|
|
@@ -490,10 +500,14 @@ end
|
|
|
490
500
|
|
|
491
501
|
api_instance = FactPulse::InvoiceProcessingApi.new
|
|
492
502
|
submit_complete_invoice_request = FactPulse::SubmitCompleteInvoiceRequest.new({invoice_data: FactPulse::SimplifiedInvoiceData.new({number: 'number_example', supplier: { key: 3.56}, recipient: { key: 3.56}, lines: [{ key: 3.56}]}), source_pdf: 'source_pdf_example', destination: FactPulse::AFNORDestination.new}) # SubmitCompleteInvoiceRequest |
|
|
503
|
+
opts = {
|
|
504
|
+
callback_url: 'callback_url_example', # String | Webhook URL for async notification when submission completes.
|
|
505
|
+
webhook_mode: 'webhook_mode_example' # String | Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL)
|
|
506
|
+
}
|
|
493
507
|
|
|
494
508
|
begin
|
|
495
509
|
# Submit a complete invoice (asynchronous with Celery)
|
|
496
|
-
result = api_instance.submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post(submit_complete_invoice_request)
|
|
510
|
+
result = api_instance.submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post(submit_complete_invoice_request, opts)
|
|
497
511
|
p result
|
|
498
512
|
rescue FactPulse::ApiError => e
|
|
499
513
|
puts "Error when calling InvoiceProcessingApi->submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post: #{e}"
|
|
@@ -504,12 +518,12 @@ end
|
|
|
504
518
|
|
|
505
519
|
This returns an Array which contains the response data, status code and headers.
|
|
506
520
|
|
|
507
|
-
> <Array(<TaskResponse>, Integer, Hash)> submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post_with_http_info(submit_complete_invoice_request)
|
|
521
|
+
> <Array(<TaskResponse>, Integer, Hash)> submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post_with_http_info(submit_complete_invoice_request, opts)
|
|
508
522
|
|
|
509
523
|
```ruby
|
|
510
524
|
begin
|
|
511
525
|
# Submit a complete invoice (asynchronous with Celery)
|
|
512
|
-
data, status_code, headers = api_instance.submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post_with_http_info(submit_complete_invoice_request)
|
|
526
|
+
data, status_code, headers = api_instance.submit_complete_invoice_async_api_v1_processing_invoices_submit_complete_async_post_with_http_info(submit_complete_invoice_request, opts)
|
|
513
527
|
p status_code # => 2xx
|
|
514
528
|
p headers # => { ... }
|
|
515
529
|
p data # => <TaskResponse>
|
|
@@ -523,6 +537,8 @@ end
|
|
|
523
537
|
| Name | Type | Description | Notes |
|
|
524
538
|
| ---- | ---- | ----------- | ----- |
|
|
525
539
|
| **submit_complete_invoice_request** | [**SubmitCompleteInvoiceRequest**](SubmitCompleteInvoiceRequest.md) | | |
|
|
540
|
+
| **callback_url** | **String** | Webhook URL for async notification when submission completes. | [optional] |
|
|
541
|
+
| **webhook_mode** | **String** | Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL) | [optional][default to 'inline'] |
|
|
526
542
|
|
|
527
543
|
### Return type
|
|
528
544
|
|
|
@@ -561,7 +577,8 @@ api_instance = FactPulse::InvoiceProcessingApi.new
|
|
|
561
577
|
pdf_file = File.new('/path/to/some/file') # File | Factur-X PDF file to validate (.pdf format).
|
|
562
578
|
opts = {
|
|
563
579
|
profile: FactPulse::APIProfile::MINIMUM, # APIProfile |
|
|
564
|
-
use_verapdf: true # Boolean | Enable strict PDF/A validation with VeraPDF (recommended for production). If False, uses basic metadata validation.
|
|
580
|
+
use_verapdf: true, # Boolean | Enable strict PDF/A validation with VeraPDF (recommended for production). If False, uses basic metadata validation.
|
|
581
|
+
skip_br_fr: true # Boolean |
|
|
565
582
|
}
|
|
566
583
|
|
|
567
584
|
begin
|
|
@@ -598,6 +615,7 @@ end
|
|
|
598
615
|
| **pdf_file** | **File** | Factur-X PDF file to validate (.pdf format). | |
|
|
599
616
|
| **profile** | [**APIProfile**](APIProfile.md) | | [optional] |
|
|
600
617
|
| **use_verapdf** | **Boolean** | Enable strict PDF/A validation with VeraPDF (recommended for production). If False, uses basic metadata validation. | [optional][default to false] |
|
|
618
|
+
| **skip_br_fr** | **Boolean** | | [optional] |
|
|
601
619
|
|
|
602
620
|
### Return type
|
|
603
621
|
|
|
@@ -619,7 +637,7 @@ end
|
|
|
619
637
|
|
|
620
638
|
Validate a Factur-X PDF (asynchronous with polling)
|
|
621
639
|
|
|
622
|
-
Validates a Factur-X PDF asynchronously with polling system. ## How it works 1. **Submission**: PDF is queued for asynchronous validation 2. **Immediate return**: You receive a `task_id` (HTTP 202) 3. **Tracking**: Use the `/tasks/{task_id}/status` endpoint to track progress ## Advantages of asynchronous mode - **No timeout**: Ideal for large PDFs or VeraPDF validation (which can take several seconds) - **Scalability**: Validations are processed by dedicated Celery workers - **Status tracking**: Allows you to monitor validation progress - **Non-blocking**: Your client doesn't wait during validation ## When to use this mode? - **VeraPDF validation enabled** (`use_verapdf=True`): Strict validation can take 2-10 seconds - **Large PDF files**: PDFs > 1 MB - **Batch processing**: Validating multiple invoices in parallel - **Asynchronous integration**: Your system supports polling ## Checks performed ### 1. Factur-X XML extraction and validation - Verifies presence of Factur-X compliant embedded XML file - Automatically detects profile used (MINIMUM, BASIC, EN16931, EXTENDED) - Validates XML against detected profile's Schematron rules ### 2. PDF/A compliance - **Without VeraPDF**: Basic metadata validation (fast, ~100ms) - **With VeraPDF**: Strict ISO 19005 validation (146+ rules, 2-10s) - Detects PDF/A version (PDF/A-1, PDF/A-3, etc.) - Detailed non-compliance reports ### 3. XMP metadata - Verifies presence of XMP metadata in PDF - Validates Factur-X metadata compliance (profile, version) - Extracts all available XMP metadata ### 4. Electronic signatures - Detects presence of electronic signatures or seals - Extracts information about each signature (signer, date, reason) - Counts number of signatures present ## Parameters - **pdf_file**: The Factur-X PDF file to validate - **profile**: Expected Factur-X profile (optional). If not specified, profile will be auto-detected from embedded XML file. - **use_verapdf**: Enable strict PDF/A validation with VeraPDF. ⚠️ **Warning**: VeraPDF can take 2-10 seconds depending on PDF size. Recommended only in asynchronous mode to avoid timeouts. ## Retrieving results After submission, use `GET /tasks/{task_id}/status` endpoint to retrieve the result. **Polling example**: ```python import requests import time # 1. Submit task response = requests.post(\"/validate-facturx-async\", files={\"pdf_file\": pdf_file}) task_id = response.json()[\"taskId\"] # 2. Poll every 2 seconds while True: status_response = requests.get(f\"/tasks/{task_id}/status\") status = status_response.json() if status[\"status\"] == \"SUCCESS\": result = status[\"result\"][\"validation_result\"] print(f\"Compliant: {result['is_compliant']}\") break elif status[\"status\"] == \"FAILURE\": print(f\"Error: {status['result']['errorMessage']}\") break time.sleep(2) # Wait 2 seconds before next check ``` ## Use cases - Validate invoices before sending with VeraPDF (strict validation) - Process invoice batches in parallel - Integrate validation into an asynchronous pipeline - Validate large PDFs without timeout risk
|
|
640
|
+
Validates a Factur-X PDF asynchronously with polling system. ## How it works 1. **Submission**: PDF is queued for asynchronous validation 2. **Immediate return**: You receive a `task_id` (HTTP 202) 3. **Tracking**: Use the `/tasks/{task_id}/status` endpoint to track progress ## Advantages of asynchronous mode - **No timeout**: Ideal for large PDFs or VeraPDF validation (which can take several seconds) - **Scalability**: Validations are processed by dedicated Celery workers - **Status tracking**: Allows you to monitor validation progress - **Non-blocking**: Your client doesn't wait during validation ## Webhook notification (recommended) Instead of polling, you can receive a webhook notification when validation completes: ``` callback_url=https://your-server.com/webhook webhook_mode=download_url # Optional: get download URL instead of base64 ``` The webhook will POST a JSON payload with: - `event_type`: `validation.completed` or `validation.failed` - `data.is_compliant`: Whether the PDF is Factur-X compliant - `data.detected_profile`: The detected Factur-X profile - `X-Webhook-Signature` header for HMAC verification ## When to use this mode? - **VeraPDF validation enabled** (`use_verapdf=True`): Strict validation can take 2-10 seconds - **Large PDF files**: PDFs > 1 MB - **Batch processing**: Validating multiple invoices in parallel - **Asynchronous integration**: Your system supports polling ## Checks performed ### 1. Factur-X XML extraction and validation - Verifies presence of Factur-X compliant embedded XML file - Automatically detects profile used (MINIMUM, BASIC, EN16931, EXTENDED) - Validates XML against detected profile's Schematron rules ### 2. PDF/A compliance - **Without VeraPDF**: Basic metadata validation (fast, ~100ms) - **With VeraPDF**: Strict ISO 19005 validation (146+ rules, 2-10s) - Detects PDF/A version (PDF/A-1, PDF/A-3, etc.) - Detailed non-compliance reports ### 3. XMP metadata - Verifies presence of XMP metadata in PDF - Validates Factur-X metadata compliance (profile, version) - Extracts all available XMP metadata ### 4. Electronic signatures - Detects presence of electronic signatures or seals - Extracts information about each signature (signer, date, reason) - Counts number of signatures present ## Parameters - **pdf_file**: The Factur-X PDF file to validate - **profile**: Expected Factur-X profile (optional). If not specified, profile will be auto-detected from embedded XML file. - **use_verapdf**: Enable strict PDF/A validation with VeraPDF. ⚠️ **Warning**: VeraPDF can take 2-10 seconds depending on PDF size. Recommended only in asynchronous mode to avoid timeouts. ## Retrieving results After submission, use `GET /tasks/{task_id}/status` endpoint to retrieve the result. **Polling example**: ```python import requests import time # 1. Submit task response = requests.post(\"/validate-facturx-async\", files={\"pdf_file\": pdf_file}) task_id = response.json()[\"taskId\"] # 2. Poll every 2 seconds while True: status_response = requests.get(f\"/tasks/{task_id}/status\") status = status_response.json() if status[\"status\"] == \"SUCCESS\": result = status[\"result\"][\"validation_result\"] print(f\"Compliant: {result['is_compliant']}\") break elif status[\"status\"] == \"FAILURE\": print(f\"Error: {status['result']['errorMessage']}\") break time.sleep(2) # Wait 2 seconds before next check ``` ## Use cases - Validate invoices before sending with VeraPDF (strict validation) - Process invoice batches in parallel - Integrate validation into an asynchronous pipeline - Validate large PDFs without timeout risk
|
|
623
641
|
|
|
624
642
|
### Examples
|
|
625
643
|
|
|
@@ -636,7 +654,9 @@ api_instance = FactPulse::InvoiceProcessingApi.new
|
|
|
636
654
|
pdf_file = File.new('/path/to/some/file') # File | Factur-X PDF file to validate (.pdf format).
|
|
637
655
|
opts = {
|
|
638
656
|
profile: FactPulse::APIProfile::MINIMUM, # APIProfile |
|
|
639
|
-
use_verapdf: true # Boolean | Enable strict PDF/A validation with VeraPDF (recommended for production). May take several seconds.
|
|
657
|
+
use_verapdf: true, # Boolean | Enable strict PDF/A validation with VeraPDF (recommended for production). May take several seconds.
|
|
658
|
+
callback_url: 'callback_url_example', # String |
|
|
659
|
+
webhook_mode: 'webhook_mode_example' # String | Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL)
|
|
640
660
|
}
|
|
641
661
|
|
|
642
662
|
begin
|
|
@@ -673,6 +693,8 @@ end
|
|
|
673
693
|
| **pdf_file** | **File** | Factur-X PDF file to validate (.pdf format). | |
|
|
674
694
|
| **profile** | [**APIProfile**](APIProfile.md) | | [optional] |
|
|
675
695
|
| **use_verapdf** | **Boolean** | Enable strict PDF/A validation with VeraPDF (recommended for production). May take several seconds. | [optional][default to false] |
|
|
696
|
+
| **callback_url** | **String** | | [optional] |
|
|
697
|
+
| **webhook_mode** | **String** | Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL) | [optional][default to 'inline'] |
|
|
676
698
|
|
|
677
699
|
### Return type
|
|
678
700
|
|
|
@@ -779,7 +801,8 @@ end
|
|
|
779
801
|
api_instance = FactPulse::InvoiceProcessingApi.new
|
|
780
802
|
xml_file = File.new('/path/to/some/file') # File | Factur-X XML file to validate (.xml format).
|
|
781
803
|
opts = {
|
|
782
|
-
profile: FactPulse::APIProfile::MINIMUM # APIProfile | Validation profile (MINIMUM, BASIC, EN16931, EXTENDED).
|
|
804
|
+
profile: FactPulse::APIProfile::MINIMUM, # APIProfile | Validation profile (MINIMUM, BASIC, EN16931, EXTENDED).
|
|
805
|
+
skip_br_fr: true # Boolean |
|
|
783
806
|
}
|
|
784
807
|
|
|
785
808
|
begin
|
|
@@ -815,6 +838,7 @@ end
|
|
|
815
838
|
| ---- | ---- | ----------- | ----- |
|
|
816
839
|
| **xml_file** | **File** | Factur-X XML file to validate (.xml format). | |
|
|
817
840
|
| **profile** | [**APIProfile**](APIProfile.md) | Validation profile (MINIMUM, BASIC, EN16931, EXTENDED). | [optional] |
|
|
841
|
+
| **skip_br_fr** | **Boolean** | | [optional] |
|
|
818
842
|
|
|
819
843
|
### Return type
|
|
820
844
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# FactPulse::InvoiceTypeCodeOutput
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
|
|
8
|
+
## Example
|
|
9
|
+
|
|
10
|
+
```ruby
|
|
11
|
+
require 'factpulse'
|
|
12
|
+
|
|
13
|
+
instance = FactPulse::InvoiceTypeCodeOutput.new()
|
|
14
|
+
```
|
|
15
|
+
|
data/docs/InvoicingFramework.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
|
-
| **invoicing_framework_code** | [**InvoicingFrameworkCode**](InvoicingFrameworkCode.md) |
|
|
7
|
+
| **invoicing_framework_code** | [**InvoicingFrameworkCode**](InvoicingFrameworkCode.md) | Chorus Pro framework code (A1, A2, A9, A12) | |
|
|
8
8
|
| **operation_nature** | [**OperationNature**](OperationNature.md) | | [optional] |
|
|
9
9
|
| **approver_service_code** | **String** | | [optional] |
|
|
10
10
|
| **approver_structure_code** | **String** | | [optional] |
|
data/docs/LineSubType.md
ADDED