factpulse 4.0.1 → 4.0.2
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 +4 -4
- data/Gemfile.lock +1 -1
- data/docs/AFNORPDPPAApi.md +5 -72
- data/docs/AsyncTasksApi.md +77 -0
- data/docs/ChorusProCredentials.md +8 -8
- data/docs/ChorusProDestination.md +1 -1
- data/docs/CreateAggregatedReportRequest.md +3 -1
- data/docs/CreateEReportingRequest.md +3 -1
- data/docs/ElectronicSignatureApi.md +319 -0
- data/docs/EncaisseeRequest.md +10 -6
- data/docs/{DocumentConversionApi.md → FacturXConversionApi.md} +39 -39
- data/docs/FacturXGenerationApi.md +239 -0
- data/docs/FacturXInvoice.md +1 -1
- data/docs/FacturXPDFXMLVerificationApi.md +225 -0
- data/docs/FacturXValidationApi.md +241 -0
- data/docs/FactureElectroniqueRestApiSchemasChorusProChorusProCredentials.md +26 -0
- data/docs/{EReportingApi.md → Flux10EReportingApi.md} +53 -51
- data/docs/{CDARCycleDeVieApi.md → Flux6InvoiceLifecycleCDARApi.md} +145 -75
- data/docs/GetChorusProIdRequest.md +1 -1
- data/docs/GetInvoiceRequest.md +1 -1
- data/docs/GetStructureRequest.md +1 -1
- data/docs/HealthApi.md +67 -0
- data/docs/InvoiceInput.md +4 -2
- data/docs/IssuerRoleCode.md +15 -0
- data/docs/RefuseeRequest.md +10 -6
- data/docs/ReportIssuer.md +24 -0
- data/docs/ReportSender.md +1 -1
- data/docs/SearchStructureRequest.md +1 -1
- data/docs/SubmitInvoiceRequest.md +1 -1
- data/factpulse.gemspec +2 -2
- data/lib/factpulse/api/afnorpdppa_api.rb +5 -62
- data/lib/factpulse/api/afnorpdppa_directory_service_api.rb +1 -1
- data/lib/factpulse/api/afnorpdppa_flow_service_api.rb +1 -1
- data/lib/factpulse/api/async_tasks_api.rb +85 -0
- data/lib/factpulse/api/chorus_pro_api.rb +1 -1
- data/lib/factpulse/api/client_management_api.rb +1 -1
- data/lib/factpulse/api/downloads_api.rb +1 -1
- data/lib/factpulse/api/electronic_signature_api.rb +339 -0
- data/lib/factpulse/api/{document_conversion_api.rb → factur_x_conversion_api.rb} +42 -42
- data/lib/factpulse/api/factur_x_generation_api.rb +254 -0
- data/lib/factpulse/api/factur_x_validation_api.rb +256 -0
- data/lib/factpulse/api/factur_xpdfxml_verification_api.rb +232 -0
- data/lib/factpulse/api/{e_reporting_api.rb → flux10_e_reporting_api.rb} +54 -51
- data/lib/factpulse/api/flux6_invoice_lifecycle_cdar_api.rb +670 -0
- data/lib/factpulse/api/health_api.rb +58 -1
- data/lib/factpulse/api_client.rb +1 -1
- data/lib/factpulse/api_error.rb +1 -1
- data/lib/factpulse/api_model_base.rb +1 -1
- data/lib/factpulse/configuration.rb +1 -1
- data/lib/factpulse/models/acknowledgment_status.rb +1 -1
- data/lib/factpulse/models/action_code_info.rb +1 -1
- data/lib/factpulse/models/action_codes_response.rb +1 -1
- data/lib/factpulse/models/additional_document.rb +1 -1
- data/lib/factpulse/models/afnor_acknowledgement.rb +1 -1
- data/lib/factpulse/models/afnor_acknowledgement_detail.rb +1 -1
- data/lib/factpulse/models/afnor_address_edit.rb +1 -1
- data/lib/factpulse/models/afnor_address_patch.rb +1 -1
- data/lib/factpulse/models/afnor_address_put.rb +1 -1
- data/lib/factpulse/models/afnor_address_read.rb +1 -1
- data/lib/factpulse/models/afnor_algorithm.rb +1 -1
- data/lib/factpulse/models/afnor_contains_operator.rb +1 -1
- data/lib/factpulse/models/afnor_create_directory_line_body.rb +1 -1
- data/lib/factpulse/models/afnor_create_directory_line_body_addressing_information.rb +1 -1
- data/lib/factpulse/models/afnor_create_directory_line_body_period.rb +1 -1
- data/lib/factpulse/models/afnor_create_routing_code_body.rb +1 -1
- data/lib/factpulse/models/afnor_credentials.rb +1 -1
- data/lib/factpulse/models/afnor_destination.rb +1 -1
- data/lib/factpulse/models/afnor_diffusion_status.rb +1 -1
- data/lib/factpulse/models/afnor_directory_line_field.rb +1 -1
- data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code.rb +1 -1
- data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_platform.rb +1 -1
- data/lib/factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_routing_code.rb +1 -1
- data/lib/factpulse/models/afnor_directory_line_post201_response.rb +1 -1
- data/lib/factpulse/models/afnor_directory_line_search_post200_response.rb +1 -1
- data/lib/factpulse/models/afnor_entity_type.rb +1 -1
- data/lib/factpulse/models/afnor_error.rb +1 -1
- data/lib/factpulse/models/afnor_facility_administrative_status.rb +1 -1
- data/lib/factpulse/models/afnor_facility_nature.rb +1 -1
- data/lib/factpulse/models/afnor_facility_payload_history.rb +1 -1
- data/lib/factpulse/models/afnor_facility_payload_history_ule_b2g_additional_data.rb +1 -1
- data/lib/factpulse/models/afnor_facility_payload_included.rb +1 -1
- data/lib/factpulse/models/afnor_facility_type.rb +1 -1
- data/lib/factpulse/models/afnor_flow.rb +1 -1
- data/lib/factpulse/models/afnor_flow_ack_status.rb +1 -1
- data/lib/factpulse/models/afnor_flow_direction.rb +1 -1
- data/lib/factpulse/models/afnor_flow_info.rb +1 -1
- data/lib/factpulse/models/afnor_flow_profile.rb +1 -1
- data/lib/factpulse/models/afnor_flow_syntax.rb +1 -1
- data/lib/factpulse/models/afnor_flow_type.rb +1 -1
- data/lib/factpulse/models/afnor_full_flow_info.rb +1 -1
- data/lib/factpulse/models/afnor_health_check_response.rb +1 -1
- data/lib/factpulse/models/afnor_legal_unit_administrative_status.rb +1 -1
- data/lib/factpulse/models/afnor_legal_unit_payload_history.rb +1 -1
- data/lib/factpulse/models/afnor_legal_unit_payload_included.rb +1 -1
- data/lib/factpulse/models/afnor_legal_unit_payload_included_no_siren.rb +1 -1
- data/lib/factpulse/models/afnor_platform_status.rb +1 -1
- data/lib/factpulse/models/afnor_processing_rule.rb +1 -1
- data/lib/factpulse/models/afnor_reason_code.rb +1 -1
- data/lib/factpulse/models/afnor_reason_code_enum.rb +1 -1
- data/lib/factpulse/models/afnor_recipient_platform_type.rb +1 -1
- data/lib/factpulse/models/afnor_result.rb +1 -1
- data/lib/factpulse/models/afnor_routing_code_administrative_status.rb +1 -1
- data/lib/factpulse/models/afnor_routing_code_field.rb +1 -1
- data/lib/factpulse/models/afnor_routing_code_payload_history_legal_unit_facility.rb +1 -1
- data/lib/factpulse/models/afnor_routing_code_post201_response.rb +1 -1
- data/lib/factpulse/models/afnor_routing_code_search.rb +1 -1
- data/lib/factpulse/models/afnor_routing_code_search_filters.rb +1 -1
- data/lib/factpulse/models/afnor_routing_code_search_filters_administrative_status.rb +1 -1
- data/lib/factpulse/models/afnor_routing_code_search_filters_routing_code_name.rb +1 -1
- data/lib/factpulse/models/afnor_routing_code_search_filters_routing_identifier.rb +1 -1
- data/lib/factpulse/models/afnor_routing_code_search_post200_response.rb +1 -1
- data/lib/factpulse/models/afnor_routing_code_search_sorting_inner.rb +1 -1
- data/lib/factpulse/models/afnor_search_directory_line.rb +1 -1
- data/lib/factpulse/models/afnor_search_directory_line_filters.rb +1 -1
- data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_identifier.rb +1 -1
- data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_suffix.rb +1 -1
- data/lib/factpulse/models/afnor_search_directory_line_sorting_inner.rb +1 -1
- data/lib/factpulse/models/afnor_search_flow_content.rb +1 -1
- data/lib/factpulse/models/afnor_search_flow_filters.rb +1 -1
- data/lib/factpulse/models/afnor_search_flow_params.rb +1 -1
- data/lib/factpulse/models/afnor_search_siren.rb +1 -1
- data/lib/factpulse/models/afnor_search_siren_filters.rb +1 -1
- data/lib/factpulse/models/afnor_search_siren_filters_administrative_status.rb +1 -1
- data/lib/factpulse/models/afnor_search_siren_filters_business_name.rb +1 -1
- data/lib/factpulse/models/afnor_search_siren_filters_entity_type.rb +1 -1
- data/lib/factpulse/models/afnor_search_siren_filters_siren.rb +1 -1
- data/lib/factpulse/models/afnor_search_siren_sorting_inner.rb +1 -1
- data/lib/factpulse/models/afnor_search_siret.rb +1 -1
- data/lib/factpulse/models/afnor_search_siret_filters.rb +1 -1
- data/lib/factpulse/models/afnor_search_siret_filters_address_lines.rb +1 -1
- data/lib/factpulse/models/afnor_search_siret_filters_administrative_status.rb +1 -1
- data/lib/factpulse/models/afnor_search_siret_filters_country_subdivision.rb +1 -1
- data/lib/factpulse/models/afnor_search_siret_filters_facility_type.rb +1 -1
- data/lib/factpulse/models/afnor_search_siret_filters_locality.rb +1 -1
- data/lib/factpulse/models/afnor_search_siret_filters_name.rb +1 -1
- data/lib/factpulse/models/afnor_search_siret_filters_postal_code.rb +1 -1
- data/lib/factpulse/models/afnor_search_siret_filters_siret.rb +1 -1
- data/lib/factpulse/models/afnor_search_siret_sorting_inner.rb +1 -1
- data/lib/factpulse/models/afnor_siren_field.rb +1 -1
- data/lib/factpulse/models/afnor_siren_search_post200_response.rb +1 -1
- data/lib/factpulse/models/afnor_siret_field.rb +1 -1
- data/lib/factpulse/models/afnor_siret_search_post200_response.rb +1 -1
- data/lib/factpulse/models/afnor_sorting_order.rb +1 -1
- data/lib/factpulse/models/afnor_strict_operator.rb +1 -1
- data/lib/factpulse/models/afnor_update_patch_directory_line_body.rb +1 -1
- data/lib/factpulse/models/afnor_update_patch_routing_code_body.rb +1 -1
- data/lib/factpulse/models/afnor_update_put_routing_code_body.rb +1 -1
- data/lib/factpulse/models/afnor_webhook_callback_content.rb +1 -1
- data/lib/factpulse/models/aggregated_payment_input.rb +1 -1
- data/lib/factpulse/models/aggregated_transaction_input.rb +1 -1
- data/lib/factpulse/models/allowance_charge.rb +1 -1
- data/lib/factpulse/models/allowance_charge_reason_code.rb +1 -1
- data/lib/factpulse/models/allowance_reason_code.rb +1 -1
- data/lib/factpulse/models/allowance_total_amount.rb +1 -1
- data/lib/factpulse/models/amount.rb +1 -1
- data/lib/factpulse/models/amount1.rb +1 -1
- data/lib/factpulse/models/amount2.rb +1 -1
- data/lib/factpulse/models/amount_due.rb +1 -1
- data/lib/factpulse/models/api_error.rb +1 -1
- data/lib/factpulse/models/api_profile.rb +1 -1
- data/lib/factpulse/models/async_task_status.rb +1 -1
- data/lib/factpulse/models/base_amount.rb +1 -1
- data/lib/factpulse/models/bounding_box_schema.rb +1 -1
- data/lib/factpulse/models/buyercountry.rb +2 -2
- data/lib/factpulse/models/celery_status.rb +1 -1
- data/lib/factpulse/models/certificate_info_response.rb +1 -1
- data/lib/factpulse/models/charge_total_amount.rb +1 -1
- data/lib/factpulse/models/chorus_pro_credentials.rb +27 -95
- data/lib/factpulse/models/chorus_pro_destination.rb +2 -2
- data/lib/factpulse/models/chorus_pro_result.rb +1 -1
- data/lib/factpulse/models/client_activate_response.rb +1 -1
- data/lib/factpulse/models/client_create_request.rb +1 -1
- data/lib/factpulse/models/client_detail.rb +1 -1
- data/lib/factpulse/models/client_list_response.rb +1 -1
- data/lib/factpulse/models/client_summary.rb +1 -1
- data/lib/factpulse/models/client_update_request.rb +1 -1
- data/lib/factpulse/models/contact.rb +1 -1
- data/lib/factpulse/models/convert_resume_request.rb +1 -1
- data/lib/factpulse/models/convert_success_response.rb +1 -1
- data/lib/factpulse/models/convert_validation_failed_response.rb +1 -1
- data/lib/factpulse/models/country_code.rb +1 -1
- data/lib/factpulse/models/create_aggregated_report_request.rb +13 -3
- data/lib/factpulse/models/create_cdar_request.rb +1 -1
- data/lib/factpulse/models/create_e_reporting_request.rb +13 -3
- data/lib/factpulse/models/currency.rb +1 -1
- data/lib/factpulse/models/currency_code.rb +1 -1
- data/lib/factpulse/models/delivery_party.rb +1 -1
- data/lib/factpulse/models/destination.rb +1 -1
- data/lib/factpulse/models/doc_type.rb +1 -1
- data/lib/factpulse/models/document_type_info.rb +1 -1
- data/lib/factpulse/models/e_reporting_flow_type.rb +1 -1
- data/lib/factpulse/models/e_reporting_validation_error.rb +1 -1
- data/lib/factpulse/models/electronic_address.rb +1 -1
- data/lib/factpulse/models/encaisseamount.rb +1 -1
- data/lib/factpulse/models/encaisseamount1.rb +1 -1
- data/lib/factpulse/models/encaissee_request.rb +86 -32
- data/lib/factpulse/models/enriched_invoice_info.rb +1 -1
- data/lib/factpulse/models/error_level.rb +1 -1
- data/lib/factpulse/models/error_source.rb +3 -2
- data/lib/factpulse/models/extraction_info.rb +1 -1
- data/lib/factpulse/models/factur_x_invoice.rb +1 -18
- data/lib/factpulse/models/factur_xpdf_info.rb +1 -1
- data/lib/factpulse/models/facture_electronique_rest_api_schemas_cdar_validation_error_response.rb +1 -1
- data/lib/factpulse/models/facture_electronique_rest_api_schemas_chorus_pro_chorus_pro_credentials.rb +259 -0
- data/lib/factpulse/models/facture_electronique_rest_api_schemas_ereporting_invoice_type_code.rb +1 -1
- data/lib/factpulse/models/field_status.rb +1 -1
- data/lib/factpulse/models/file_info.rb +1 -1
- data/lib/factpulse/models/files_info.rb +1 -1
- data/lib/factpulse/models/flow_direction.rb +1 -1
- data/lib/factpulse/models/flow_profile.rb +1 -1
- data/lib/factpulse/models/flow_summary.rb +1 -1
- data/lib/factpulse/models/flow_syntax.rb +1 -1
- data/lib/factpulse/models/flow_type.rb +1 -1
- data/lib/factpulse/models/generate_aggregated_report_response.rb +1 -1
- data/lib/factpulse/models/generate_cdar_response.rb +1 -1
- data/lib/factpulse/models/generate_certificate_request.rb +1 -1
- data/lib/factpulse/models/generate_certificate_response.rb +1 -1
- data/lib/factpulse/models/generate_e_reporting_response.rb +1 -1
- data/lib/factpulse/models/get_chorus_pro_id_request.rb +2 -2
- data/lib/factpulse/models/get_chorus_pro_id_response.rb +1 -1
- data/lib/factpulse/models/get_invoice_request.rb +2 -2
- data/lib/factpulse/models/get_invoice_response.rb +1 -1
- data/lib/factpulse/models/get_structure_request.rb +2 -2
- data/lib/factpulse/models/get_structure_response.rb +1 -1
- data/lib/factpulse/models/global_allowance_amount.rb +1 -1
- data/lib/factpulse/models/gross_unit_price.rb +1 -1
- data/lib/factpulse/models/http_validation_error.rb +1 -1
- data/lib/factpulse/models/incoming_invoice.rb +1 -1
- data/lib/factpulse/models/incoming_supplier.rb +1 -1
- data/lib/factpulse/models/invoice_format.rb +1 -1
- data/lib/factpulse/models/invoice_input.rb +14 -21
- data/lib/factpulse/models/invoice_line.rb +1 -1
- data/lib/factpulse/models/invoice_line_allowance_amount.rb +1 -1
- data/lib/factpulse/models/invoice_note.rb +1 -1
- data/lib/factpulse/models/invoice_payment_input.rb +1 -1
- data/lib/factpulse/models/invoice_references.rb +1 -1
- data/lib/factpulse/models/invoice_status.rb +1 -1
- data/lib/factpulse/models/invoice_totals.rb +1 -1
- data/lib/factpulse/models/invoice_totals_prepayment.rb +1 -1
- data/lib/factpulse/models/invoice_type_code.rb +1 -1
- data/lib/factpulse/models/invoice_type_code_output.rb +1 -1
- data/lib/factpulse/models/invoicing_framework.rb +1 -1
- data/lib/factpulse/models/invoicing_framework_code.rb +1 -1
- data/lib/factpulse/models/issuer_role_code.rb +40 -0
- data/lib/factpulse/models/line_net_amount.rb +1 -1
- data/lib/factpulse/models/line_sub_type.rb +1 -1
- data/lib/factpulse/models/line_total_amount.rb +1 -1
- data/lib/factpulse/models/location_inner.rb +1 -1
- data/lib/factpulse/models/mandatory_note_schema.rb +1 -1
- data/lib/factpulse/models/manual_rate.rb +1 -1
- data/lib/factpulse/models/manual_vat_rate.rb +1 -1
- data/lib/factpulse/models/missing_field.rb +1 -1
- data/lib/factpulse/models/operation_nature.rb +1 -1
- data/lib/factpulse/models/output_format.rb +1 -1
- data/lib/factpulse/models/page_dimensions_schema.rb +1 -1
- data/lib/factpulse/models/payee.rb +1 -1
- data/lib/factpulse/models/payment_amount_by_rate.rb +1 -1
- data/lib/factpulse/models/payment_card.rb +1 -1
- data/lib/factpulse/models/payment_means.rb +1 -1
- data/lib/factpulse/models/pdf_validation_result_api.rb +1 -1
- data/lib/factpulse/models/pdp_config_response.rb +1 -1
- data/lib/factpulse/models/pdp_config_update_request.rb +1 -1
- data/lib/factpulse/models/pdp_credentials.rb +1 -1
- data/lib/factpulse/models/percentage.rb +1 -1
- data/lib/factpulse/models/postal_address.rb +1 -1
- data/lib/factpulse/models/price_allowance_amount.rb +1 -1
- data/lib/factpulse/models/price_basis_quantity.rb +1 -1
- data/lib/factpulse/models/processing_options.rb +1 -1
- data/lib/factpulse/models/processing_rule.rb +1 -1
- data/lib/factpulse/models/product_characteristic.rb +1 -1
- data/lib/factpulse/models/product_classification.rb +1 -1
- data/lib/factpulse/models/quantity.rb +1 -1
- data/lib/factpulse/models/rate.rb +1 -1
- data/lib/factpulse/models/rate1.rb +1 -1
- data/lib/factpulse/models/reason_code_info.rb +1 -1
- data/lib/factpulse/models/reason_codes_response.rb +1 -1
- data/lib/factpulse/models/recipient.rb +1 -1
- data/lib/factpulse/models/recipient_input.rb +1 -1
- data/lib/factpulse/models/refusee_request.rb +84 -30
- data/lib/factpulse/models/report_issuer.rb +236 -0
- data/lib/factpulse/models/report_period.rb +1 -1
- data/lib/factpulse/models/report_sender.rb +3 -3
- data/lib/factpulse/models/rounding_amount.rb +1 -1
- data/lib/factpulse/models/schematron_validation_error.rb +1 -1
- data/lib/factpulse/models/scheme_id.rb +1 -1
- data/lib/factpulse/models/search_flow_request.rb +1 -1
- data/lib/factpulse/models/search_flow_response.rb +1 -1
- data/lib/factpulse/models/search_services_response.rb +1 -1
- data/lib/factpulse/models/search_structure_request.rb +2 -2
- data/lib/factpulse/models/search_structure_response.rb +1 -1
- data/lib/factpulse/models/secret_status.rb +1 -1
- data/lib/factpulse/models/sellercountry.rb +2 -2
- data/lib/factpulse/models/signature_info.rb +1 -1
- data/lib/factpulse/models/signature_info_api.rb +1 -1
- data/lib/factpulse/models/signature_parameters.rb +1 -1
- data/lib/factpulse/models/simplified_cdar_response.rb +1 -1
- data/lib/factpulse/models/simplified_invoice_data.rb +1 -1
- data/lib/factpulse/models/status_code_info.rb +1 -1
- data/lib/factpulse/models/status_codes_response.rb +1 -1
- data/lib/factpulse/models/structure_info.rb +1 -1
- data/lib/factpulse/models/structure_parameters.rb +1 -1
- data/lib/factpulse/models/structure_service.rb +1 -1
- data/lib/factpulse/models/submission_mode.rb +1 -1
- data/lib/factpulse/models/submit_aggregated_report_request.rb +1 -1
- data/lib/factpulse/models/submit_cdar_request.rb +1 -1
- data/lib/factpulse/models/submit_cdar_response.rb +1 -1
- data/lib/factpulse/models/submit_cdarxml_request.rb +1 -1
- data/lib/factpulse/models/submit_complete_invoice_request.rb +1 -1
- data/lib/factpulse/models/submit_complete_invoice_response.rb +1 -1
- data/lib/factpulse/models/submit_e_reporting_request.rb +1 -1
- data/lib/factpulse/models/submit_e_reporting_response.rb +1 -1
- data/lib/factpulse/models/submit_flow_request.rb +1 -1
- data/lib/factpulse/models/submit_flow_response.rb +1 -1
- data/lib/factpulse/models/submit_gross_amount.rb +1 -1
- data/lib/factpulse/models/submit_invoice_request.rb +2 -2
- data/lib/factpulse/models/submit_invoice_response.rb +1 -1
- data/lib/factpulse/models/submit_net_amount.rb +1 -1
- data/lib/factpulse/models/submit_vat_amount.rb +1 -1
- data/lib/factpulse/models/supplementary_attachment.rb +1 -1
- data/lib/factpulse/models/supplier.rb +1 -1
- data/lib/factpulse/models/task_response.rb +1 -1
- data/lib/factpulse/models/tax_breakdown_input.rb +1 -1
- data/lib/factpulse/models/tax_due_date_type.rb +1 -1
- data/lib/factpulse/models/tax_representative.rb +1 -1
- data/lib/factpulse/models/taxable_amount.rb +1 -1
- data/lib/factpulse/models/taxableamount.rb +1 -1
- data/lib/factpulse/models/taxamount.rb +1 -1
- data/lib/factpulse/models/taxamount1.rb +1 -1
- data/lib/factpulse/models/taxamount2.rb +1 -1
- data/lib/factpulse/models/taxexclusiveamount.rb +1 -1
- data/lib/factpulse/models/taxexclusiveamount1.rb +1 -1
- data/lib/factpulse/models/total_gross_amount.rb +1 -1
- data/lib/factpulse/models/total_net_amount.rb +1 -1
- data/lib/factpulse/models/total_vat_amount.rb +1 -1
- data/lib/factpulse/models/transaction_category.rb +1 -1
- data/lib/factpulse/models/transmission_type_code.rb +1 -1
- data/lib/factpulse/models/unit_net_price.rb +1 -1
- data/lib/factpulse/models/unit_of_measure.rb +1 -1
- data/lib/factpulse/models/validate_cdar_request.rb +1 -1
- data/lib/factpulse/models/validate_cdar_response.rb +1 -1
- data/lib/factpulse/models/validate_e_reporting_request.rb +1 -1
- data/lib/factpulse/models/validate_e_reporting_response.rb +1 -1
- data/lib/factpulse/models/validation_error.rb +1 -1
- data/lib/factpulse/models/validation_error_detail.rb +1 -1
- data/lib/factpulse/models/validation_error_response.rb +1 -1
- data/lib/factpulse/models/validation_info.rb +1 -1
- data/lib/factpulse/models/validation_success_response.rb +1 -1
- data/lib/factpulse/models/vat_accounting_code.rb +1 -1
- data/lib/factpulse/models/vat_amount.rb +1 -1
- data/lib/factpulse/models/vat_category.rb +1 -1
- data/lib/factpulse/models/vat_line.rb +1 -1
- data/lib/factpulse/models/vat_point_date_code.rb +1 -1
- data/lib/factpulse/models/vat_rate.rb +1 -1
- data/lib/factpulse/models/verification_success_response.rb +1 -1
- data/lib/factpulse/models/verified_field_schema.rb +1 -1
- data/lib/factpulse/version.rb +2 -2
- data/lib/factpulse.rb +12 -8
- metadata +46 -37
- data/docs/FactureElectroniqueRestApiSchemasProcessingChorusProCredentials.md +0 -26
- data/docs/InvoiceProcessingApi.md +0 -855
- data/docs/PDFXMLVerificationApi.md +0 -443
- data/docs/UserApi.md +0 -74
- data/lib/factpulse/api/cdar_cycle_de_vie_api.rb +0 -601
- data/lib/factpulse/api/invoice_processing_api.rb +0 -868
- data/lib/factpulse/api/pdfxml_verification_api.rb +0 -442
- data/lib/factpulse/api/user_api.rb +0 -79
- data/lib/factpulse/models/facture_electronique_rest_api_schemas_processing_chorus_pro_credentials.rb +0 -191
|
@@ -0,0 +1,339 @@
|
|
|
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 'cgi'
|
|
14
|
+
|
|
15
|
+
module FactPulse
|
|
16
|
+
class ElectronicSignatureApi
|
|
17
|
+
attr_accessor :api_client
|
|
18
|
+
|
|
19
|
+
def initialize(api_client = ApiClient.default)
|
|
20
|
+
@api_client = api_client
|
|
21
|
+
end
|
|
22
|
+
# Generate a self-signed X.509 test certificate
|
|
23
|
+
# 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)
|
|
24
|
+
# @param generate_certificate_request [GenerateCertificateRequest]
|
|
25
|
+
# @param [Hash] opts the optional parameters
|
|
26
|
+
# @return [GenerateCertificateResponse]
|
|
27
|
+
def generate_test_certificate_api_v1_processing_generate_test_certificate_post(generate_certificate_request, opts = {})
|
|
28
|
+
data, _status_code, _headers = generate_test_certificate_api_v1_processing_generate_test_certificate_post_with_http_info(generate_certificate_request, opts)
|
|
29
|
+
data
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Generate a self-signed X.509 test certificate
|
|
33
|
+
# 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)
|
|
34
|
+
# @param generate_certificate_request [GenerateCertificateRequest]
|
|
35
|
+
# @param [Hash] opts the optional parameters
|
|
36
|
+
# @return [Array<(GenerateCertificateResponse, Integer, Hash)>] GenerateCertificateResponse data, response status code and response headers
|
|
37
|
+
def generate_test_certificate_api_v1_processing_generate_test_certificate_post_with_http_info(generate_certificate_request, opts = {})
|
|
38
|
+
if @api_client.config.debugging
|
|
39
|
+
@api_client.config.logger.debug 'Calling API: ElectronicSignatureApi.generate_test_certificate_api_v1_processing_generate_test_certificate_post ...'
|
|
40
|
+
end
|
|
41
|
+
# verify the required parameter 'generate_certificate_request' is set
|
|
42
|
+
if @api_client.config.client_side_validation && generate_certificate_request.nil?
|
|
43
|
+
fail ArgumentError, "Missing the required parameter 'generate_certificate_request' when calling ElectronicSignatureApi.generate_test_certificate_api_v1_processing_generate_test_certificate_post"
|
|
44
|
+
end
|
|
45
|
+
# resource path
|
|
46
|
+
local_var_path = '/api/v1/processing/generate-test-certificate'
|
|
47
|
+
|
|
48
|
+
# query parameters
|
|
49
|
+
query_params = opts[:query_params] || {}
|
|
50
|
+
|
|
51
|
+
# header parameters
|
|
52
|
+
header_params = opts[:header_params] || {}
|
|
53
|
+
# HTTP header 'Accept' (if needed)
|
|
54
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
55
|
+
# HTTP header 'Content-Type'
|
|
56
|
+
content_type = @api_client.select_header_content_type(['application/json'])
|
|
57
|
+
if !content_type.nil?
|
|
58
|
+
header_params['Content-Type'] = content_type
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# form parameters
|
|
62
|
+
form_params = opts[:form_params] || {}
|
|
63
|
+
|
|
64
|
+
# http body (model)
|
|
65
|
+
post_body = opts[:debug_body] || @api_client.object_to_http_body(generate_certificate_request)
|
|
66
|
+
|
|
67
|
+
# return_type
|
|
68
|
+
return_type = opts[:debug_return_type] || 'GenerateCertificateResponse'
|
|
69
|
+
|
|
70
|
+
# auth_names
|
|
71
|
+
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
72
|
+
|
|
73
|
+
new_options = opts.merge(
|
|
74
|
+
:operation => :"ElectronicSignatureApi.generate_test_certificate_api_v1_processing_generate_test_certificate_post",
|
|
75
|
+
:header_params => header_params,
|
|
76
|
+
:query_params => query_params,
|
|
77
|
+
:form_params => form_params,
|
|
78
|
+
:body => post_body,
|
|
79
|
+
:auth_names => auth_names,
|
|
80
|
+
:return_type => return_type
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
|
84
|
+
if @api_client.config.debugging
|
|
85
|
+
@api_client.config.logger.debug "API called: ElectronicSignatureApi#generate_test_certificate_api_v1_processing_generate_test_certificate_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
86
|
+
end
|
|
87
|
+
return data, status_code, headers
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Sign a PDF with client's certificate (PAdES-B-LT)
|
|
91
|
+
# Signs an uploaded PDF with the electronic certificate configured for the client (via client_uid from JWT). **Supported standards**: PAdES-B-B, PAdES-B-T (timestamping), PAdES-B-LT (long-term archiving). **eIDAS levels**: SES (self-signed), AdES (commercial CA), QES (PSCO - out of scope). **Security**: Double authentication X-Internal-Secret + JWT Bearer to retrieve the certificate. **⚠️ Legal disclaimer**: Generated signatures are electronic seals as defined by the eIDAS regulation. The level of legal validity depends on the certificate used (SES/AdES/QES). FactPulse does not provide QES qualified certificates - you must obtain a certificate from a PSCO (qualified Trust Service Provider) for maximum legal validity.
|
|
92
|
+
# @param pdf_file [File] PDF file to sign (will be processed and returned signed in base64)
|
|
93
|
+
# @param [Hash] opts the optional parameters
|
|
94
|
+
# @option opts [String] :reason
|
|
95
|
+
# @option opts [String] :location
|
|
96
|
+
# @option opts [String] :contact
|
|
97
|
+
# @option opts [String] :field_name PDF signature field name (default to 'FactPulseSignature')
|
|
98
|
+
# @option opts [Boolean] :use_pades_lt Enable PAdES-B-LT (long-term archiving with embedded validation data). REQUIRES a certificate with OCSP/CRL access. (default to false)
|
|
99
|
+
# @option opts [Boolean] :use_timestamp Enable RFC 3161 timestamping with FreeTSA (PAdES-B-T) (default to true)
|
|
100
|
+
# @return [Object]
|
|
101
|
+
def sign_pdf_api_v1_processing_sign_pdf_post(pdf_file, opts = {})
|
|
102
|
+
data, _status_code, _headers = sign_pdf_api_v1_processing_sign_pdf_post_with_http_info(pdf_file, opts)
|
|
103
|
+
data
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Sign a PDF with client's certificate (PAdES-B-LT)
|
|
107
|
+
# Signs an uploaded PDF with the electronic certificate configured for the client (via client_uid from JWT). **Supported standards**: PAdES-B-B, PAdES-B-T (timestamping), PAdES-B-LT (long-term archiving). **eIDAS levels**: SES (self-signed), AdES (commercial CA), QES (PSCO - out of scope). **Security**: Double authentication X-Internal-Secret + JWT Bearer to retrieve the certificate. **⚠️ Legal disclaimer**: Generated signatures are electronic seals as defined by the eIDAS regulation. The level of legal validity depends on the certificate used (SES/AdES/QES). FactPulse does not provide QES qualified certificates - you must obtain a certificate from a PSCO (qualified Trust Service Provider) for maximum legal validity.
|
|
108
|
+
# @param pdf_file [File] PDF file to sign (will be processed and returned signed in base64)
|
|
109
|
+
# @param [Hash] opts the optional parameters
|
|
110
|
+
# @option opts [String] :reason
|
|
111
|
+
# @option opts [String] :location
|
|
112
|
+
# @option opts [String] :contact
|
|
113
|
+
# @option opts [String] :field_name PDF signature field name (default to 'FactPulseSignature')
|
|
114
|
+
# @option opts [Boolean] :use_pades_lt Enable PAdES-B-LT (long-term archiving with embedded validation data). REQUIRES a certificate with OCSP/CRL access. (default to false)
|
|
115
|
+
# @option opts [Boolean] :use_timestamp Enable RFC 3161 timestamping with FreeTSA (PAdES-B-T) (default to true)
|
|
116
|
+
# @return [Array<(Object, Integer, Hash)>] Object data, response status code and response headers
|
|
117
|
+
def sign_pdf_api_v1_processing_sign_pdf_post_with_http_info(pdf_file, opts = {})
|
|
118
|
+
if @api_client.config.debugging
|
|
119
|
+
@api_client.config.logger.debug 'Calling API: ElectronicSignatureApi.sign_pdf_api_v1_processing_sign_pdf_post ...'
|
|
120
|
+
end
|
|
121
|
+
# verify the required parameter 'pdf_file' is set
|
|
122
|
+
if @api_client.config.client_side_validation && pdf_file.nil?
|
|
123
|
+
fail ArgumentError, "Missing the required parameter 'pdf_file' when calling ElectronicSignatureApi.sign_pdf_api_v1_processing_sign_pdf_post"
|
|
124
|
+
end
|
|
125
|
+
# resource path
|
|
126
|
+
local_var_path = '/api/v1/processing/sign-pdf'
|
|
127
|
+
|
|
128
|
+
# query parameters
|
|
129
|
+
query_params = opts[:query_params] || {}
|
|
130
|
+
|
|
131
|
+
# header parameters
|
|
132
|
+
header_params = opts[:header_params] || {}
|
|
133
|
+
# HTTP header 'Accept' (if needed)
|
|
134
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
135
|
+
# HTTP header 'Content-Type'
|
|
136
|
+
content_type = @api_client.select_header_content_type(['multipart/form-data'])
|
|
137
|
+
if !content_type.nil?
|
|
138
|
+
header_params['Content-Type'] = content_type
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# form parameters
|
|
142
|
+
form_params = opts[:form_params] || {}
|
|
143
|
+
form_params['pdf_file'] = pdf_file
|
|
144
|
+
form_params['reason'] = opts[:'reason'] if !opts[:'reason'].nil?
|
|
145
|
+
form_params['location'] = opts[:'location'] if !opts[:'location'].nil?
|
|
146
|
+
form_params['contact'] = opts[:'contact'] if !opts[:'contact'].nil?
|
|
147
|
+
form_params['field_name'] = opts[:'field_name'] if !opts[:'field_name'].nil?
|
|
148
|
+
form_params['use_pades_lt'] = opts[:'use_pades_lt'] if !opts[:'use_pades_lt'].nil?
|
|
149
|
+
form_params['use_timestamp'] = opts[:'use_timestamp'] if !opts[:'use_timestamp'].nil?
|
|
150
|
+
|
|
151
|
+
# http body (model)
|
|
152
|
+
post_body = opts[:debug_body]
|
|
153
|
+
|
|
154
|
+
# return_type
|
|
155
|
+
return_type = opts[:debug_return_type] || 'Object'
|
|
156
|
+
|
|
157
|
+
# auth_names
|
|
158
|
+
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
159
|
+
|
|
160
|
+
new_options = opts.merge(
|
|
161
|
+
:operation => :"ElectronicSignatureApi.sign_pdf_api_v1_processing_sign_pdf_post",
|
|
162
|
+
:header_params => header_params,
|
|
163
|
+
:query_params => query_params,
|
|
164
|
+
:form_params => form_params,
|
|
165
|
+
:body => post_body,
|
|
166
|
+
:auth_names => auth_names,
|
|
167
|
+
:return_type => return_type
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
|
171
|
+
if @api_client.config.debugging
|
|
172
|
+
@api_client.config.logger.debug "API called: ElectronicSignatureApi#sign_pdf_api_v1_processing_sign_pdf_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
173
|
+
end
|
|
174
|
+
return data, status_code, headers
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# Sign a PDF asynchronously (Celery)
|
|
178
|
+
# Signs an uploaded PDF asynchronously via a Celery task. **Difference with /sign-pdf**: - `/sign-pdf`: Synchronous signature (blocking until completion) - `/sign-pdf-async`: Asynchronous signature (returns immediately with task_id) **Async advantages**: - No timeout for large files - No blocking of FastAPI worker - Progress tracking via task_id - Ideal for batch processing **Supported standards**: PAdES-B-B, PAdES-B-T (timestamping), PAdES-B-LT (long-term archiving). **⚠️ Legal disclaimer**: Same as /sign-pdf (see that endpoint's documentation).
|
|
179
|
+
# @param pdf_file [File] PDF file to sign (processed asynchronously)
|
|
180
|
+
# @param [Hash] opts the optional parameters
|
|
181
|
+
# @option opts [String] :callback_url
|
|
182
|
+
# @option opts [String] :webhook_mode Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL) (default to 'inline')
|
|
183
|
+
# @option opts [String] :reason
|
|
184
|
+
# @option opts [String] :location
|
|
185
|
+
# @option opts [String] :contact
|
|
186
|
+
# @option opts [String] :field_name PDF signature field name (default to 'FactPulseSignature')
|
|
187
|
+
# @option opts [Boolean] :use_pades_lt Enable PAdES-B-LT (long-term archiving with embedded validation data). REQUIRES a certificate with OCSP/CRL access. (default to false)
|
|
188
|
+
# @option opts [Boolean] :use_timestamp Enable RFC 3161 timestamping with FreeTSA (PAdES-B-T) (default to true)
|
|
189
|
+
# @return [Object]
|
|
190
|
+
def sign_pdf_async_api_v1_processing_sign_pdf_async_post(pdf_file, opts = {})
|
|
191
|
+
data, _status_code, _headers = sign_pdf_async_api_v1_processing_sign_pdf_async_post_with_http_info(pdf_file, opts)
|
|
192
|
+
data
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# Sign a PDF asynchronously (Celery)
|
|
196
|
+
# Signs an uploaded PDF asynchronously via a Celery task. **Difference with /sign-pdf**: - `/sign-pdf`: Synchronous signature (blocking until completion) - `/sign-pdf-async`: Asynchronous signature (returns immediately with task_id) **Async advantages**: - No timeout for large files - No blocking of FastAPI worker - Progress tracking via task_id - Ideal for batch processing **Supported standards**: PAdES-B-B, PAdES-B-T (timestamping), PAdES-B-LT (long-term archiving). **⚠️ Legal disclaimer**: Same as /sign-pdf (see that endpoint's documentation).
|
|
197
|
+
# @param pdf_file [File] PDF file to sign (processed asynchronously)
|
|
198
|
+
# @param [Hash] opts the optional parameters
|
|
199
|
+
# @option opts [String] :callback_url
|
|
200
|
+
# @option opts [String] :webhook_mode Webhook content delivery: 'inline' (base64 in payload) or 'download_url' (temporary URL, 1h TTL) (default to 'inline')
|
|
201
|
+
# @option opts [String] :reason
|
|
202
|
+
# @option opts [String] :location
|
|
203
|
+
# @option opts [String] :contact
|
|
204
|
+
# @option opts [String] :field_name PDF signature field name (default to 'FactPulseSignature')
|
|
205
|
+
# @option opts [Boolean] :use_pades_lt Enable PAdES-B-LT (long-term archiving with embedded validation data). REQUIRES a certificate with OCSP/CRL access. (default to false)
|
|
206
|
+
# @option opts [Boolean] :use_timestamp Enable RFC 3161 timestamping with FreeTSA (PAdES-B-T) (default to true)
|
|
207
|
+
# @return [Array<(Object, Integer, Hash)>] Object data, response status code and response headers
|
|
208
|
+
def sign_pdf_async_api_v1_processing_sign_pdf_async_post_with_http_info(pdf_file, opts = {})
|
|
209
|
+
if @api_client.config.debugging
|
|
210
|
+
@api_client.config.logger.debug 'Calling API: ElectronicSignatureApi.sign_pdf_async_api_v1_processing_sign_pdf_async_post ...'
|
|
211
|
+
end
|
|
212
|
+
# verify the required parameter 'pdf_file' is set
|
|
213
|
+
if @api_client.config.client_side_validation && pdf_file.nil?
|
|
214
|
+
fail ArgumentError, "Missing the required parameter 'pdf_file' when calling ElectronicSignatureApi.sign_pdf_async_api_v1_processing_sign_pdf_async_post"
|
|
215
|
+
end
|
|
216
|
+
# resource path
|
|
217
|
+
local_var_path = '/api/v1/processing/sign-pdf-async'
|
|
218
|
+
|
|
219
|
+
# query parameters
|
|
220
|
+
query_params = opts[:query_params] || {}
|
|
221
|
+
|
|
222
|
+
# header parameters
|
|
223
|
+
header_params = opts[:header_params] || {}
|
|
224
|
+
# HTTP header 'Accept' (if needed)
|
|
225
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
226
|
+
# HTTP header 'Content-Type'
|
|
227
|
+
content_type = @api_client.select_header_content_type(['multipart/form-data'])
|
|
228
|
+
if !content_type.nil?
|
|
229
|
+
header_params['Content-Type'] = content_type
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
# form parameters
|
|
233
|
+
form_params = opts[:form_params] || {}
|
|
234
|
+
form_params['pdf_file'] = pdf_file
|
|
235
|
+
form_params['callback_url'] = opts[:'callback_url'] if !opts[:'callback_url'].nil?
|
|
236
|
+
form_params['webhook_mode'] = opts[:'webhook_mode'] if !opts[:'webhook_mode'].nil?
|
|
237
|
+
form_params['reason'] = opts[:'reason'] if !opts[:'reason'].nil?
|
|
238
|
+
form_params['location'] = opts[:'location'] if !opts[:'location'].nil?
|
|
239
|
+
form_params['contact'] = opts[:'contact'] if !opts[:'contact'].nil?
|
|
240
|
+
form_params['field_name'] = opts[:'field_name'] if !opts[:'field_name'].nil?
|
|
241
|
+
form_params['use_pades_lt'] = opts[:'use_pades_lt'] if !opts[:'use_pades_lt'].nil?
|
|
242
|
+
form_params['use_timestamp'] = opts[:'use_timestamp'] if !opts[:'use_timestamp'].nil?
|
|
243
|
+
|
|
244
|
+
# http body (model)
|
|
245
|
+
post_body = opts[:debug_body]
|
|
246
|
+
|
|
247
|
+
# return_type
|
|
248
|
+
return_type = opts[:debug_return_type] || 'Object'
|
|
249
|
+
|
|
250
|
+
# auth_names
|
|
251
|
+
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
252
|
+
|
|
253
|
+
new_options = opts.merge(
|
|
254
|
+
:operation => :"ElectronicSignatureApi.sign_pdf_async_api_v1_processing_sign_pdf_async_post",
|
|
255
|
+
:header_params => header_params,
|
|
256
|
+
:query_params => query_params,
|
|
257
|
+
:form_params => form_params,
|
|
258
|
+
:body => post_body,
|
|
259
|
+
:auth_names => auth_names,
|
|
260
|
+
:return_type => return_type
|
|
261
|
+
)
|
|
262
|
+
|
|
263
|
+
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
|
264
|
+
if @api_client.config.debugging
|
|
265
|
+
@api_client.config.logger.debug "API called: ElectronicSignatureApi#sign_pdf_async_api_v1_processing_sign_pdf_async_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
266
|
+
end
|
|
267
|
+
return data, status_code, headers
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
# Validate electronic signatures of a PDF
|
|
271
|
+
# Validates electronic signatures present in an uploaded PDF. **Verifications performed**: - Presence of signatures - Document integrity (not modified since signing) - Certificate validity - Chain of trust (if available) - Presence of timestamp (PAdES-B-T) - Validation data (PAdES-B-LT) **Supported standards**: PAdES-B-B, PAdES-B-T, PAdES-B-LT, ISO 32000-2. **⚠️ Note**: This validation is technical (cryptographic integrity). Legal validity depends on the eIDAS level of the certificate (SES/AdES/QES) and the context of use.
|
|
272
|
+
# @param pdf_file [File] PDF file to validate (will be analyzed to detect and validate signatures)
|
|
273
|
+
# @param [Hash] opts the optional parameters
|
|
274
|
+
# @return [Object]
|
|
275
|
+
def validate_pdf_signature_endpoint_api_v1_processing_validate_pdf_signature_post(pdf_file, opts = {})
|
|
276
|
+
data, _status_code, _headers = validate_pdf_signature_endpoint_api_v1_processing_validate_pdf_signature_post_with_http_info(pdf_file, opts)
|
|
277
|
+
data
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
# Validate electronic signatures of a PDF
|
|
281
|
+
# Validates electronic signatures present in an uploaded PDF. **Verifications performed**: - Presence of signatures - Document integrity (not modified since signing) - Certificate validity - Chain of trust (if available) - Presence of timestamp (PAdES-B-T) - Validation data (PAdES-B-LT) **Supported standards**: PAdES-B-B, PAdES-B-T, PAdES-B-LT, ISO 32000-2. **⚠️ Note**: This validation is technical (cryptographic integrity). Legal validity depends on the eIDAS level of the certificate (SES/AdES/QES) and the context of use.
|
|
282
|
+
# @param pdf_file [File] PDF file to validate (will be analyzed to detect and validate signatures)
|
|
283
|
+
# @param [Hash] opts the optional parameters
|
|
284
|
+
# @return [Array<(Object, Integer, Hash)>] Object data, response status code and response headers
|
|
285
|
+
def validate_pdf_signature_endpoint_api_v1_processing_validate_pdf_signature_post_with_http_info(pdf_file, opts = {})
|
|
286
|
+
if @api_client.config.debugging
|
|
287
|
+
@api_client.config.logger.debug 'Calling API: ElectronicSignatureApi.validate_pdf_signature_endpoint_api_v1_processing_validate_pdf_signature_post ...'
|
|
288
|
+
end
|
|
289
|
+
# verify the required parameter 'pdf_file' is set
|
|
290
|
+
if @api_client.config.client_side_validation && pdf_file.nil?
|
|
291
|
+
fail ArgumentError, "Missing the required parameter 'pdf_file' when calling ElectronicSignatureApi.validate_pdf_signature_endpoint_api_v1_processing_validate_pdf_signature_post"
|
|
292
|
+
end
|
|
293
|
+
# resource path
|
|
294
|
+
local_var_path = '/api/v1/processing/validate-pdf-signature'
|
|
295
|
+
|
|
296
|
+
# query parameters
|
|
297
|
+
query_params = opts[:query_params] || {}
|
|
298
|
+
|
|
299
|
+
# header parameters
|
|
300
|
+
header_params = opts[:header_params] || {}
|
|
301
|
+
# HTTP header 'Accept' (if needed)
|
|
302
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
|
|
303
|
+
# HTTP header 'Content-Type'
|
|
304
|
+
content_type = @api_client.select_header_content_type(['multipart/form-data'])
|
|
305
|
+
if !content_type.nil?
|
|
306
|
+
header_params['Content-Type'] = content_type
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
# form parameters
|
|
310
|
+
form_params = opts[:form_params] || {}
|
|
311
|
+
form_params['pdf_file'] = pdf_file
|
|
312
|
+
|
|
313
|
+
# http body (model)
|
|
314
|
+
post_body = opts[:debug_body]
|
|
315
|
+
|
|
316
|
+
# return_type
|
|
317
|
+
return_type = opts[:debug_return_type] || 'Object'
|
|
318
|
+
|
|
319
|
+
# auth_names
|
|
320
|
+
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
321
|
+
|
|
322
|
+
new_options = opts.merge(
|
|
323
|
+
:operation => :"ElectronicSignatureApi.validate_pdf_signature_endpoint_api_v1_processing_validate_pdf_signature_post",
|
|
324
|
+
:header_params => header_params,
|
|
325
|
+
:query_params => query_params,
|
|
326
|
+
:form_params => form_params,
|
|
327
|
+
:body => post_body,
|
|
328
|
+
:auth_names => auth_names,
|
|
329
|
+
:return_type => return_type
|
|
330
|
+
)
|
|
331
|
+
|
|
332
|
+
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
|
333
|
+
if @api_client.config.debugging
|
|
334
|
+
@api_client.config.logger.debug "API called: ElectronicSignatureApi#validate_pdf_signature_endpoint_api_v1_processing_validate_pdf_signature_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
335
|
+
end
|
|
336
|
+
return data, status_code, headers
|
|
337
|
+
end
|
|
338
|
+
end
|
|
339
|
+
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
=begin
|
|
2
2
|
#FactPulse REST API
|
|
3
3
|
|
|
4
|
-
# REST API for electronic invoicing in France: Factur-X, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Factur-X
|
|
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
5
|
|
|
6
6
|
The version of the OpenAPI document: 1.0.0
|
|
7
7
|
Contact: contact@factpulse.fr
|
|
@@ -13,40 +13,40 @@ Generator version: 7.20.0-SNAPSHOT
|
|
|
13
13
|
require 'cgi'
|
|
14
14
|
|
|
15
15
|
module FactPulse
|
|
16
|
-
class
|
|
16
|
+
class FacturXConversionApi
|
|
17
17
|
attr_accessor :api_client
|
|
18
18
|
|
|
19
19
|
def initialize(api_client = ApiClient.default)
|
|
20
20
|
@api_client = api_client
|
|
21
21
|
end
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
# @param file [File] Document
|
|
22
|
+
# Convert a document to Factur-X (async mode)
|
|
23
|
+
# Launch an asynchronous conversion via Celery. ## Workflow 1. **Upload**: Document is sent as multipart/form-data 2. **Celery Task**: Task is queued for processing 3. **Callback**: Webhook notification on completion ## Possible responses - **202**: Task accepted, processing - **400**: Invalid file
|
|
24
|
+
# @param file [File] Document to convert (PDF, DOCX, XLSX, JPG, PNG)
|
|
25
25
|
# @param [Hash] opts the optional parameters
|
|
26
|
-
# @option opts [String] :output
|
|
26
|
+
# @option opts [String] :output Output format: pdf, xml, both (default to 'pdf')
|
|
27
27
|
# @option opts [String] :callback_url
|
|
28
|
-
# @option opts [String] :webhook_mode
|
|
28
|
+
# @option opts [String] :webhook_mode Content delivery mode: 'inline' (base64 in webhook) or 'download_url' (temporary URL, 1h TTL) (default to 'inline')
|
|
29
29
|
# @return [Object]
|
|
30
30
|
def convert_document_async_api_v1_convert_async_post(file, opts = {})
|
|
31
31
|
data, _status_code, _headers = convert_document_async_api_v1_convert_async_post_with_http_info(file, opts)
|
|
32
32
|
data
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
#
|
|
36
|
-
#
|
|
37
|
-
# @param file [File] Document
|
|
35
|
+
# Convert a document to Factur-X (async mode)
|
|
36
|
+
# Launch an asynchronous conversion via Celery. ## Workflow 1. **Upload**: Document is sent as multipart/form-data 2. **Celery Task**: Task is queued for processing 3. **Callback**: Webhook notification on completion ## Possible responses - **202**: Task accepted, processing - **400**: Invalid file
|
|
37
|
+
# @param file [File] Document to convert (PDF, DOCX, XLSX, JPG, PNG)
|
|
38
38
|
# @param [Hash] opts the optional parameters
|
|
39
|
-
# @option opts [String] :output
|
|
39
|
+
# @option opts [String] :output Output format: pdf, xml, both (default to 'pdf')
|
|
40
40
|
# @option opts [String] :callback_url
|
|
41
|
-
# @option opts [String] :webhook_mode
|
|
41
|
+
# @option opts [String] :webhook_mode Content delivery mode: 'inline' (base64 in webhook) or 'download_url' (temporary URL, 1h TTL) (default to 'inline')
|
|
42
42
|
# @return [Array<(Object, Integer, Hash)>] Object data, response status code and response headers
|
|
43
43
|
def convert_document_async_api_v1_convert_async_post_with_http_info(file, opts = {})
|
|
44
44
|
if @api_client.config.debugging
|
|
45
|
-
@api_client.config.logger.debug 'Calling API:
|
|
45
|
+
@api_client.config.logger.debug 'Calling API: FacturXConversionApi.convert_document_async_api_v1_convert_async_post ...'
|
|
46
46
|
end
|
|
47
47
|
# verify the required parameter 'file' is set
|
|
48
48
|
if @api_client.config.client_side_validation && file.nil?
|
|
49
|
-
fail ArgumentError, "Missing the required parameter 'file' when calling
|
|
49
|
+
fail ArgumentError, "Missing the required parameter 'file' when calling FacturXConversionApi.convert_document_async_api_v1_convert_async_post"
|
|
50
50
|
end
|
|
51
51
|
# resource path
|
|
52
52
|
local_var_path = '/api/v1/convert/async'
|
|
@@ -81,7 +81,7 @@ module FactPulse
|
|
|
81
81
|
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
82
82
|
|
|
83
83
|
new_options = opts.merge(
|
|
84
|
-
:operation => :"
|
|
84
|
+
:operation => :"FacturXConversionApi.convert_document_async_api_v1_convert_async_post",
|
|
85
85
|
:header_params => header_params,
|
|
86
86
|
:query_params => query_params,
|
|
87
87
|
:form_params => form_params,
|
|
@@ -92,13 +92,13 @@ module FactPulse
|
|
|
92
92
|
|
|
93
93
|
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
|
94
94
|
if @api_client.config.debugging
|
|
95
|
-
@api_client.config.logger.debug "API called:
|
|
95
|
+
@api_client.config.logger.debug "API called: FacturXConversionApi#convert_document_async_api_v1_convert_async_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
96
96
|
end
|
|
97
97
|
return data, status_code, headers
|
|
98
98
|
end
|
|
99
99
|
|
|
100
|
-
#
|
|
101
|
-
#
|
|
100
|
+
# Download a generated file
|
|
101
|
+
# Download the generated Factur-X PDF or XML file. ## Available files - `facturx.pdf`: PDF/A-3 with embedded XML - `facturx.xml`: XML CII only (Cross Industry Invoice) Files are available for 24 hours after generation.
|
|
102
102
|
# @param conversion_id [String] Conversion ID returned by POST /convert (UUID format)
|
|
103
103
|
# @param filename [String] File to download: 'facturx.pdf' or 'facturx.xml'
|
|
104
104
|
# @param [Hash] opts the optional parameters
|
|
@@ -108,23 +108,23 @@ module FactPulse
|
|
|
108
108
|
data
|
|
109
109
|
end
|
|
110
110
|
|
|
111
|
-
#
|
|
112
|
-
#
|
|
111
|
+
# Download a generated file
|
|
112
|
+
# Download the generated Factur-X PDF or XML file. ## Available files - `facturx.pdf`: PDF/A-3 with embedded XML - `facturx.xml`: XML CII only (Cross Industry Invoice) Files are available for 24 hours after generation.
|
|
113
113
|
# @param conversion_id [String] Conversion ID returned by POST /convert (UUID format)
|
|
114
114
|
# @param filename [String] File to download: 'facturx.pdf' or 'facturx.xml'
|
|
115
115
|
# @param [Hash] opts the optional parameters
|
|
116
116
|
# @return [Array<(Object, Integer, Hash)>] Object data, response status code and response headers
|
|
117
117
|
def download_file_api_v1_convert_conversion_id_download_filename_get_with_http_info(conversion_id, filename, opts = {})
|
|
118
118
|
if @api_client.config.debugging
|
|
119
|
-
@api_client.config.logger.debug 'Calling API:
|
|
119
|
+
@api_client.config.logger.debug 'Calling API: FacturXConversionApi.download_file_api_v1_convert_conversion_id_download_filename_get ...'
|
|
120
120
|
end
|
|
121
121
|
# verify the required parameter 'conversion_id' is set
|
|
122
122
|
if @api_client.config.client_side_validation && conversion_id.nil?
|
|
123
|
-
fail ArgumentError, "Missing the required parameter 'conversion_id' when calling
|
|
123
|
+
fail ArgumentError, "Missing the required parameter 'conversion_id' when calling FacturXConversionApi.download_file_api_v1_convert_conversion_id_download_filename_get"
|
|
124
124
|
end
|
|
125
125
|
# verify the required parameter 'filename' is set
|
|
126
126
|
if @api_client.config.client_side_validation && filename.nil?
|
|
127
|
-
fail ArgumentError, "Missing the required parameter 'filename' when calling
|
|
127
|
+
fail ArgumentError, "Missing the required parameter 'filename' when calling FacturXConversionApi.download_file_api_v1_convert_conversion_id_download_filename_get"
|
|
128
128
|
end
|
|
129
129
|
# resource path
|
|
130
130
|
local_var_path = '/api/v1/convert/{conversion_id}/download/{filename}'.sub('{' + 'conversion_id' + '}', CGI.escape(conversion_id.to_s)).sub('{' + 'filename' + '}', CGI.escape(filename.to_s))
|
|
@@ -150,7 +150,7 @@ module FactPulse
|
|
|
150
150
|
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
151
151
|
|
|
152
152
|
new_options = opts.merge(
|
|
153
|
-
:operation => :"
|
|
153
|
+
:operation => :"FacturXConversionApi.download_file_api_v1_convert_conversion_id_download_filename_get",
|
|
154
154
|
:header_params => header_params,
|
|
155
155
|
:query_params => query_params,
|
|
156
156
|
:form_params => form_params,
|
|
@@ -161,13 +161,13 @@ module FactPulse
|
|
|
161
161
|
|
|
162
162
|
data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
|
|
163
163
|
if @api_client.config.debugging
|
|
164
|
-
@api_client.config.logger.debug "API called:
|
|
164
|
+
@api_client.config.logger.debug "API called: FacturXConversionApi#download_file_api_v1_convert_conversion_id_download_filename_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
165
165
|
end
|
|
166
166
|
return data, status_code, headers
|
|
167
167
|
end
|
|
168
168
|
|
|
169
|
-
#
|
|
170
|
-
#
|
|
169
|
+
# Check conversion status
|
|
170
|
+
# Returns the current status of an asynchronous conversion.
|
|
171
171
|
# @param conversion_id [String] Conversion ID returned by POST /convert (UUID format)
|
|
172
172
|
# @param [Hash] opts the optional parameters
|
|
173
173
|
# @return [Hash<String, Object>]
|
|
@@ -176,18 +176,18 @@ module FactPulse
|
|
|
176
176
|
data
|
|
177
177
|
end
|
|
178
178
|
|
|
179
|
-
#
|
|
180
|
-
#
|
|
179
|
+
# Check conversion status
|
|
180
|
+
# Returns the current status of an asynchronous conversion.
|
|
181
181
|
# @param conversion_id [String] Conversion ID returned by POST /convert (UUID format)
|
|
182
182
|
# @param [Hash] opts the optional parameters
|
|
183
183
|
# @return [Array<(Hash<String, Object>, Integer, Hash)>] Hash<String, Object> data, response status code and response headers
|
|
184
184
|
def get_conversion_status_api_v1_convert_conversion_id_status_get_with_http_info(conversion_id, opts = {})
|
|
185
185
|
if @api_client.config.debugging
|
|
186
|
-
@api_client.config.logger.debug 'Calling API:
|
|
186
|
+
@api_client.config.logger.debug 'Calling API: FacturXConversionApi.get_conversion_status_api_v1_convert_conversion_id_status_get ...'
|
|
187
187
|
end
|
|
188
188
|
# verify the required parameter 'conversion_id' is set
|
|
189
189
|
if @api_client.config.client_side_validation && conversion_id.nil?
|
|
190
|
-
fail ArgumentError, "Missing the required parameter 'conversion_id' when calling
|
|
190
|
+
fail ArgumentError, "Missing the required parameter 'conversion_id' when calling FacturXConversionApi.get_conversion_status_api_v1_convert_conversion_id_status_get"
|
|
191
191
|
end
|
|
192
192
|
# resource path
|
|
193
193
|
local_var_path = '/api/v1/convert/{conversion_id}/status'.sub('{' + 'conversion_id' + '}', CGI.escape(conversion_id.to_s))
|
|
@@ -213,7 +213,7 @@ module FactPulse
|
|
|
213
213
|
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
214
214
|
|
|
215
215
|
new_options = opts.merge(
|
|
216
|
-
:operation => :"
|
|
216
|
+
:operation => :"FacturXConversionApi.get_conversion_status_api_v1_convert_conversion_id_status_get",
|
|
217
217
|
:header_params => header_params,
|
|
218
218
|
:query_params => query_params,
|
|
219
219
|
:form_params => form_params,
|
|
@@ -224,13 +224,13 @@ module FactPulse
|
|
|
224
224
|
|
|
225
225
|
data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
|
|
226
226
|
if @api_client.config.debugging
|
|
227
|
-
@api_client.config.logger.debug "API called:
|
|
227
|
+
@api_client.config.logger.debug "API called: FacturXConversionApi#get_conversion_status_api_v1_convert_conversion_id_status_get\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
228
228
|
end
|
|
229
229
|
return data, status_code, headers
|
|
230
230
|
end
|
|
231
231
|
|
|
232
|
-
#
|
|
233
|
-
#
|
|
232
|
+
# Resume a conversion with corrections
|
|
233
|
+
# Resume a conversion after completing missing data or correcting errors. The OCR extraction is preserved, data is updated with corrections, then a new Schematron validation is performed.
|
|
234
234
|
# @param conversion_id [String] Conversion ID returned by POST /convert (UUID format)
|
|
235
235
|
# @param convert_resume_request [ConvertResumeRequest]
|
|
236
236
|
# @param [Hash] opts the optional parameters
|
|
@@ -240,23 +240,23 @@ module FactPulse
|
|
|
240
240
|
data
|
|
241
241
|
end
|
|
242
242
|
|
|
243
|
-
#
|
|
244
|
-
#
|
|
243
|
+
# Resume a conversion with corrections
|
|
244
|
+
# Resume a conversion after completing missing data or correcting errors. The OCR extraction is preserved, data is updated with corrections, then a new Schematron validation is performed.
|
|
245
245
|
# @param conversion_id [String] Conversion ID returned by POST /convert (UUID format)
|
|
246
246
|
# @param convert_resume_request [ConvertResumeRequest]
|
|
247
247
|
# @param [Hash] opts the optional parameters
|
|
248
248
|
# @return [Array<(ConvertSuccessResponse, Integer, Hash)>] ConvertSuccessResponse data, response status code and response headers
|
|
249
249
|
def resume_conversion_api_v1_convert_conversion_id_resume_post_with_http_info(conversion_id, convert_resume_request, opts = {})
|
|
250
250
|
if @api_client.config.debugging
|
|
251
|
-
@api_client.config.logger.debug 'Calling API:
|
|
251
|
+
@api_client.config.logger.debug 'Calling API: FacturXConversionApi.resume_conversion_api_v1_convert_conversion_id_resume_post ...'
|
|
252
252
|
end
|
|
253
253
|
# verify the required parameter 'conversion_id' is set
|
|
254
254
|
if @api_client.config.client_side_validation && conversion_id.nil?
|
|
255
|
-
fail ArgumentError, "Missing the required parameter 'conversion_id' when calling
|
|
255
|
+
fail ArgumentError, "Missing the required parameter 'conversion_id' when calling FacturXConversionApi.resume_conversion_api_v1_convert_conversion_id_resume_post"
|
|
256
256
|
end
|
|
257
257
|
# verify the required parameter 'convert_resume_request' is set
|
|
258
258
|
if @api_client.config.client_side_validation && convert_resume_request.nil?
|
|
259
|
-
fail ArgumentError, "Missing the required parameter 'convert_resume_request' when calling
|
|
259
|
+
fail ArgumentError, "Missing the required parameter 'convert_resume_request' when calling FacturXConversionApi.resume_conversion_api_v1_convert_conversion_id_resume_post"
|
|
260
260
|
end
|
|
261
261
|
# resource path
|
|
262
262
|
local_var_path = '/api/v1/convert/{conversion_id}/resume'.sub('{' + 'conversion_id' + '}', CGI.escape(conversion_id.to_s))
|
|
@@ -287,7 +287,7 @@ module FactPulse
|
|
|
287
287
|
auth_names = opts[:debug_auth_names] || ['HTTPBearer']
|
|
288
288
|
|
|
289
289
|
new_options = opts.merge(
|
|
290
|
-
:operation => :"
|
|
290
|
+
:operation => :"FacturXConversionApi.resume_conversion_api_v1_convert_conversion_id_resume_post",
|
|
291
291
|
:header_params => header_params,
|
|
292
292
|
:query_params => query_params,
|
|
293
293
|
:form_params => form_params,
|
|
@@ -298,7 +298,7 @@ module FactPulse
|
|
|
298
298
|
|
|
299
299
|
data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
|
|
300
300
|
if @api_client.config.debugging
|
|
301
|
-
@api_client.config.logger.debug "API called:
|
|
301
|
+
@api_client.config.logger.debug "API called: FacturXConversionApi#resume_conversion_api_v1_convert_conversion_id_resume_post\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
|
302
302
|
end
|
|
303
303
|
return data, status_code, headers
|
|
304
304
|
end
|