factpulse 3.0.37 → 4.0.1
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 +5 -12
- data/Gemfile.lock +1 -1
- data/README.md +136 -138
- data/docs/AllowanceCharge.md +1 -1
- data/docs/Amount2.md +15 -0
- data/docs/CDARCycleDeVieApi.md +154 -30
- data/docs/ChorusProCredentials.md +8 -8
- data/docs/ChorusProDestination.md +1 -1
- data/docs/ClientActivateResponse.md +22 -0
- data/docs/ClientCreateRequest.md +22 -0
- data/docs/ClientDetail.md +38 -0
- data/docs/ClientListResponse.md +24 -0
- data/docs/ClientManagementApi.md +575 -0
- data/docs/ClientSummary.md +38 -0
- data/docs/ClientUpdateRequest.md +22 -0
- data/docs/DownloadsApi.md +0 -144
- data/docs/EncaisseeRequest.md +36 -0
- data/docs/FactureElectroniqueRestApiSchemasCdarValidationErrorResponse.md +24 -0
- data/docs/FactureElectroniqueRestApiSchemasProcessingChorusProCredentials.md +26 -0
- data/docs/GetChorusProIdRequest.md +1 -1
- data/docs/GetInvoiceRequest.md +1 -1
- data/docs/GetStructureRequest.md +1 -1
- data/docs/PDPConfigResponse.md +44 -0
- data/docs/PDPConfigUpdateRequest.md +28 -0
- data/docs/PaymentAmountByRate.md +1 -1
- data/docs/Recipient.md +1 -1
- data/docs/RefuseeRequest.md +36 -0
- data/docs/SearchStructureRequest.md +1 -1
- data/docs/SecretStatus.md +20 -0
- data/docs/SimplifiedCDARResponse.md +26 -0
- data/docs/SubmitCDARRequest.md +9 -1
- data/docs/SubmitCDARXMLRequest.md +9 -1
- data/docs/SubmitCompleteInvoiceResponse.md +2 -2
- data/docs/SubmitInvoiceRequest.md +1 -1
- data/docs/Supplier.md +1 -1
- data/docs/ValidateCDARResponse.md +2 -2
- data/docs/ValidationErrorResponse.md +2 -8
- data/factpulse.gemspec +1 -1
- data/lib/factpulse/api/afnorpdppa_api.rb +1 -1
- 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/cdar_cycle_de_vie_api.rb +159 -49
- data/lib/factpulse/api/chorus_pro_api.rb +1 -1
- data/lib/factpulse/api/client_management_api.rb +565 -0
- data/lib/factpulse/api/document_conversion_api.rb +1 -1
- data/lib/factpulse/api/downloads_api.rb +1 -130
- data/lib/factpulse/api/e_reporting_api.rb +1 -1
- data/lib/factpulse/api/health_api.rb +1 -1
- data/lib/factpulse/api/invoice_processing_api.rb +1 -1
- data/lib/factpulse/api/pdfxml_verification_api.rb +1 -1
- data/lib/factpulse/api/user_api.rb +1 -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/helpers/client.rb +199 -754
- data/lib/factpulse/helpers/exceptions.rb +38 -14
- data/lib/factpulse/helpers/helpers.rb +8 -7
- 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 +2 -2
- 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 +2 -2
- data/lib/factpulse/models/amount1.rb +2 -2
- data/lib/factpulse/models/amount2.rb +104 -0
- 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 +1 -1
- 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 +95 -27
- data/lib/factpulse/models/chorus_pro_destination.rb +2 -2
- data/lib/factpulse/models/chorus_pro_result.rb +1 -1
- data/lib/factpulse/models/{facture_electronique_rest_api_schemas_validation_validation_error_response.rb → client_activate_response.rb} +76 -24
- data/lib/factpulse/models/client_create_request.rb +236 -0
- data/lib/factpulse/models/client_detail.rb +368 -0
- data/lib/factpulse/models/client_list_response.rb +249 -0
- data/lib/factpulse/models/client_summary.rb +368 -0
- data/lib/factpulse/models/client_update_request.rb +225 -0
- 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 +1 -1
- data/lib/factpulse/models/create_cdar_request.rb +1 -1
- data/lib/factpulse/models/create_e_reporting_request.rb +1 -1
- 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 +293 -0
- 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 +1 -1
- data/lib/factpulse/models/extraction_info.rb +1 -1
- data/lib/factpulse/models/factur_x_invoice.rb +1 -1
- data/lib/factpulse/models/factur_xpdf_info.rb +1 -1
- data/lib/factpulse/models/{body_submit_cdar_xml_api_v1_cdar_submit_xml_post.rb → facture_electronique_rest_api_schemas_cdar_validation_error_response.rb} +68 -27
- data/lib/factpulse/models/facture_electronique_rest_api_schemas_ereporting_invoice_type_code.rb +1 -1
- data/lib/factpulse/models/{facture_electronique_rest_api_schemas_chorus_pro_chorus_pro_credentials.rb → facture_electronique_rest_api_schemas_processing_chorus_pro_credentials.rb} +30 -98
- 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 +1 -1
- 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/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 +2 -2
- 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 +296 -0
- data/lib/factpulse/models/pdp_config_update_request.rb +271 -0
- 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 -3
- data/lib/factpulse/models/recipient_input.rb +1 -1
- data/lib/factpulse/models/refusee_request.rb +292 -0
- data/lib/factpulse/models/report_period.rb +1 -1
- data/lib/factpulse/models/report_sender.rb +1 -1
- 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 +4 -4
- 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/{body_submit_cdar_api_v1_cdar_submit_post.rb → secret_status.rb} +46 -27
- data/lib/factpulse/models/sellercountry.rb +1 -1
- 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 +274 -0
- 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 +45 -5
- data/lib/factpulse/models/submit_cdar_response.rb +1 -1
- data/lib/factpulse/models/submit_cdarxml_request.rb +46 -6
- data/lib/factpulse/models/submit_complete_invoice_request.rb +1 -1
- data/lib/factpulse/models/submit_complete_invoice_response.rb +17 -17
- 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 -3
- 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 +3 -3
- 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 +21 -68
- 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 +17 -5
- metadata +34 -10
- data/docs/BodySubmitCdarApiV1CdarSubmitPost.md +0 -20
- data/docs/BodySubmitCdarXmlApiV1CdarSubmitXmlPost.md +0 -20
- data/docs/FactureElectroniqueRestApiSchemasChorusProChorusProCredentials.md +0 -26
- data/docs/FactureElectroniqueRestApiSchemasValidationValidationErrorResponse.md +0 -18
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0061473ad13efd96d8c31a87f167aa5c1d8722e43f960266fce4a50b66adee83
|
|
4
|
+
data.tar.gz: 6d066ab2f7b58959051286436f2a7f5d267873d105ba5fffa8b715a31f6bf57a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3d4487a0f6b114af93c883946f6b5ac51973de38f8de2161e5d125e42e505c14dd6f06f6f1ff9a5c48cf5baaea86971ab626f60af374f7de5aa72ff4c239e9c6
|
|
7
|
+
data.tar.gz: acec505dcfe90e493a3b5b61b3a479ef507935d5ad7888988f338f64b603a3520ab42a21788ff4c8f441ee2256888b1e2554de46e7e8c9fb2bc04b7b6815197d
|
data/CHANGELOG.md
CHANGED
|
@@ -7,18 +7,11 @@ et ce projet adhère au [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
## [
|
|
10
|
+
## [4.0.1] - 2026-01-20
|
|
11
11
|
|
|
12
|
-
###
|
|
13
|
-
-
|
|
14
|
-
- Support complet de l'API FactPulse
|
|
15
|
-
- Endpoints Factur-X (génération, validation)
|
|
16
|
-
- Endpoints AFNOR PDP/PA (Flow Service, Directory Service)
|
|
17
|
-
- Endpoints Chorus Pro (recherche entreprise, soumission factures)
|
|
18
|
-
- Endpoints Signature électronique (PAdES-B-B, PAdES-B-T, PAdES-B-LT)
|
|
19
|
-
- Support des deux modes d'authentification (stored credentials et zero-trust)
|
|
20
|
-
- Documentation complète et exemples
|
|
12
|
+
### Fixed
|
|
13
|
+
- Gestion post multipart
|
|
21
14
|
|
|
22
15
|
|
|
23
|
-
[Unreleased]: https://github.com/factpulse/sdk-ruby/compare/
|
|
24
|
-
[
|
|
16
|
+
[Unreleased]: https://github.com/factpulse/sdk-ruby/compare/v4.0.1...HEAD
|
|
17
|
+
[4.0.1]: https://github.com/factpulse/sdk-ruby/releases/tag/v4.0.1
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -5,10 +5,10 @@ Official Ruby client for the FactPulse API - French electronic invoicing.
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
7
|
- **Factur-X**: Generation and validation of electronic invoices (MINIMUM, BASIC, EN16931, EXTENDED profiles)
|
|
8
|
-
- **Chorus Pro**: Integration with the French public
|
|
9
|
-
- **AFNOR PDP/PA**: Submission of flows compliant with
|
|
10
|
-
- **Electronic signature**: PDF
|
|
11
|
-
- **
|
|
8
|
+
- **Chorus Pro**: Integration with the French public invoicing platform
|
|
9
|
+
- **AFNOR PDP/PA**: Submission of flows compliant with XP Z12-013 standard
|
|
10
|
+
- **Electronic signature**: PDF signing (PAdES-B-B, PAdES-B-T, PAdES-B-LT)
|
|
11
|
+
- **Thin HTTP wrapper**: Generic `post` and `get` methods with automatic JWT auth and polling
|
|
12
12
|
|
|
13
13
|
## Installation
|
|
14
14
|
|
|
@@ -24,180 +24,178 @@ gem 'factpulse'
|
|
|
24
24
|
|
|
25
25
|
## Quick Start
|
|
26
26
|
|
|
27
|
-
The `FactPulse::Helpers` module provides a simplified API with automatic authentication and polling:
|
|
28
|
-
|
|
29
27
|
```ruby
|
|
30
28
|
require 'factpulse'
|
|
31
|
-
|
|
32
|
-
include FactPulse::Helpers
|
|
29
|
+
require 'base64'
|
|
33
30
|
|
|
34
31
|
# Create the client
|
|
35
|
-
client =
|
|
32
|
+
client = FactPulse::Client.new(
|
|
36
33
|
email: 'your_email@example.com',
|
|
37
|
-
password: 'your_password'
|
|
34
|
+
password: 'your_password',
|
|
35
|
+
client_uid: 'your-client-uuid' # From dashboard: Configuration > Clients
|
|
38
36
|
)
|
|
39
37
|
|
|
40
|
-
#
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
38
|
+
# Read your source PDF
|
|
39
|
+
pdf_b64 = Base64.strict_encode64(File.binread('source_invoice.pdf'))
|
|
40
|
+
|
|
41
|
+
# Generate Factur-X and submit to PDP in one call
|
|
42
|
+
result = client.post('processing/invoices/submit-complete-async',
|
|
43
|
+
invoiceData: {
|
|
44
|
+
number: 'INV-2025-001',
|
|
45
|
+
supplier: {
|
|
46
|
+
siret: '12345678901234',
|
|
47
|
+
iban: 'FR7630001007941234567890185',
|
|
48
|
+
routing_address: '12345678901234'
|
|
49
|
+
},
|
|
50
|
+
recipient: {
|
|
51
|
+
siret: '98765432109876',
|
|
52
|
+
routing_address: '98765432109876'
|
|
53
|
+
},
|
|
54
|
+
lines: [
|
|
55
|
+
{
|
|
56
|
+
description: 'Consulting services',
|
|
57
|
+
quantity: 10,
|
|
58
|
+
unitPrice: 100.0,
|
|
59
|
+
vatRate: 20.0
|
|
60
|
+
}
|
|
61
|
+
]
|
|
51
62
|
},
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
'unitPrice' => 100.0,
|
|
57
|
-
'vatRate' => 20
|
|
58
|
-
}
|
|
59
|
-
]
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
# Generate the Factur-X PDF
|
|
63
|
-
pdf_bytes = client.generate_facturx(invoice_data, 'source_invoice.pdf')
|
|
64
|
-
|
|
65
|
-
File.binwrite('invoice_facturx.pdf', pdf_bytes)
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Available Helpers (FactPulse::Helpers::AmountHelpers module)
|
|
69
|
-
|
|
70
|
-
### amount(value)
|
|
71
|
-
|
|
72
|
-
Converts a value to a formatted string for monetary amounts.
|
|
63
|
+
sourcePdf: pdf_b64,
|
|
64
|
+
profile: 'EN16931',
|
|
65
|
+
destination: { type: 'afnor' }
|
|
66
|
+
)
|
|
73
67
|
|
|
74
|
-
|
|
75
|
-
|
|
68
|
+
# PDF is in result['content'] (auto-polled, auto-decoded)
|
|
69
|
+
File.binwrite('facturx_invoice.pdf', result['content'])
|
|
76
70
|
|
|
77
|
-
|
|
78
|
-
AmountHelpers.amount('1234.56') # "1234.56"
|
|
79
|
-
AmountHelpers.amount(nil) # "0.00"
|
|
71
|
+
puts "Flow ID: #{result['afnorResult']['flowId']}"
|
|
80
72
|
```
|
|
81
73
|
|
|
82
|
-
|
|
74
|
+
## API Methods
|
|
83
75
|
|
|
84
|
-
|
|
76
|
+
The SDK provides two generic methods that map directly to API endpoints:
|
|
85
77
|
|
|
86
78
|
```ruby
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
200.00, # vat
|
|
90
|
-
1200.00, # incl_tax
|
|
91
|
-
1200.00, # amount_due
|
|
92
|
-
discount_incl_tax: 50.00, # optional
|
|
93
|
-
discount_reason: 'Loyalty discount', # optional
|
|
94
|
-
prepayment: 100.00 # optional
|
|
95
|
-
)
|
|
96
|
-
```
|
|
79
|
+
# POST /api/v1/{path}
|
|
80
|
+
result = client.post('path/to/endpoint', key1: value1, key2: value2)
|
|
97
81
|
|
|
98
|
-
|
|
82
|
+
# GET /api/v1/{path}
|
|
83
|
+
result = client.get('path/to/endpoint', param1: value1)
|
|
84
|
+
```
|
|
99
85
|
|
|
100
|
-
|
|
86
|
+
### Common Endpoints
|
|
101
87
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
reference: 'REF-001' # optional
|
|
113
|
-
)
|
|
114
|
-
```
|
|
88
|
+
| Endpoint | Method | Description |
|
|
89
|
+
|----------|--------|-------------|
|
|
90
|
+
| `processing/invoices/submit-complete-async` | POST | Generate Factur-X + submit to PDP |
|
|
91
|
+
| `processing/generate-invoice` | POST | Generate Factur-X XML or PDF |
|
|
92
|
+
| `processing/validate-xml` | POST | Validate Factur-X XML |
|
|
93
|
+
| `processing/validate-facturx-pdf` | POST | Validate Factur-X PDF |
|
|
94
|
+
| `processing/sign-pdf` | POST | Sign PDF with certificate |
|
|
95
|
+
| `afnor/flow/v1/flows` | POST | Submit flow to AFNOR PDP |
|
|
96
|
+
| `afnor/incoming-flows/{flow_id}` | GET | Get incoming invoice |
|
|
97
|
+
| `chorus-pro/factures/soumettre` | POST | Submit to Chorus Pro |
|
|
115
98
|
|
|
116
|
-
|
|
99
|
+
## Webhooks
|
|
117
100
|
|
|
118
|
-
|
|
101
|
+
Instead of polling, you can receive results via webhook by adding `callbackUrl`:
|
|
119
102
|
|
|
120
103
|
```ruby
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
104
|
+
result = client.post('processing/invoices/submit-complete-async',
|
|
105
|
+
invoiceData: invoice_data,
|
|
106
|
+
sourcePdf: pdf_b64,
|
|
107
|
+
destination: { type: 'afnor' },
|
|
108
|
+
callbackUrl: 'https://your-server.com/webhook/factpulse',
|
|
109
|
+
webhookMode: 'INLINE' # or 'DOWNLOAD_URL'
|
|
126
110
|
)
|
|
127
|
-
```
|
|
128
111
|
|
|
129
|
-
|
|
112
|
+
task_id = result['taskId']
|
|
113
|
+
# Result will be POSTed to your webhook URL
|
|
114
|
+
```
|
|
130
115
|
|
|
131
|
-
|
|
116
|
+
### Webhook Receiver Example (Sinatra)
|
|
132
117
|
|
|
133
118
|
```ruby
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
)
|
|
119
|
+
require 'sinatra'
|
|
120
|
+
require 'json'
|
|
121
|
+
require 'openssl'
|
|
122
|
+
|
|
123
|
+
WEBHOOK_SECRET = 'your-shared-secret'
|
|
124
|
+
|
|
125
|
+
def verify_signature(payload, signature)
|
|
126
|
+
return false unless signature&.start_with?('sha256=')
|
|
127
|
+
|
|
128
|
+
expected = OpenSSL::HMAC.hexdigest('SHA256', WEBHOOK_SECRET, payload)
|
|
129
|
+
Rack::Utils.secure_compare(expected, signature[7..])
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
post '/webhook/factpulse' do
|
|
133
|
+
payload = request.body.read
|
|
134
|
+
signature = request.env['HTTP_X_WEBHOOK_SIGNATURE']
|
|
135
|
+
|
|
136
|
+
unless verify_signature(payload, signature)
|
|
137
|
+
halt 401, { error: 'Invalid signature' }.to_json
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
event = JSON.parse(payload)
|
|
141
|
+
event_type = event['event_type']
|
|
142
|
+
data = event['data']
|
|
143
|
+
|
|
144
|
+
case event_type
|
|
145
|
+
when 'submission.completed'
|
|
146
|
+
flow_id = data.dig('afnorResult', 'flowId')
|
|
147
|
+
puts "Invoice submitted: #{flow_id}"
|
|
148
|
+
when 'submission.failed'
|
|
149
|
+
puts "Submission failed: #{data['error']}"
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
content_type :json
|
|
153
|
+
{ status: 'received' }.to_json
|
|
154
|
+
end
|
|
141
155
|
```
|
|
142
156
|
|
|
143
|
-
###
|
|
144
|
-
|
|
145
|
-
Creates a complete supplier with automatic calculation of SIREN and intra-community VAT.
|
|
157
|
+
### Webhook Event Types
|
|
146
158
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
# SIREN and intra-community VAT automatically calculated
|
|
157
|
-
```
|
|
159
|
+
| Event | Description |
|
|
160
|
+
|-------|-------------|
|
|
161
|
+
| `generation.completed` | Factur-X generated successfully |
|
|
162
|
+
| `generation.failed` | Generation failed |
|
|
163
|
+
| `validation.completed` | Validation passed |
|
|
164
|
+
| `validation.failed` | Validation failed |
|
|
165
|
+
| `signature.completed` | PDF signed |
|
|
166
|
+
| `submission.completed` | Submitted to PDP/Chorus |
|
|
167
|
+
| `submission.failed` | Submission failed |
|
|
158
168
|
|
|
159
|
-
|
|
169
|
+
## Zero-Storage Mode
|
|
160
170
|
|
|
161
|
-
|
|
171
|
+
Pass PDP credentials directly in the request (no server-side storage):
|
|
162
172
|
|
|
163
173
|
```ruby
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
174
|
+
result = client.post('processing/invoices/submit-complete-async',
|
|
175
|
+
invoiceData: invoice_data,
|
|
176
|
+
sourcePdf: pdf_b64,
|
|
177
|
+
destination: {
|
|
178
|
+
type: 'afnor',
|
|
179
|
+
flowServiceUrl: 'https://api.pdp.example.com/flow/v1',
|
|
180
|
+
tokenUrl: 'https://auth.pdp.example.com/oauth/token',
|
|
181
|
+
clientId: 'your_pdp_client_id',
|
|
182
|
+
clientSecret: 'your_pdp_client_secret'
|
|
183
|
+
}
|
|
170
184
|
)
|
|
171
185
|
```
|
|
172
186
|
|
|
173
|
-
##
|
|
174
|
-
|
|
175
|
-
To pass your own credentials without server-side storage:
|
|
187
|
+
## Error Handling
|
|
176
188
|
|
|
177
189
|
```ruby
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
chorus_creds = ChorusProCredentials.new(
|
|
181
|
-
piste_client_id: 'your_client_id',
|
|
182
|
-
piste_client_secret: 'your_client_secret',
|
|
183
|
-
chorus_pro_login: 'your_login',
|
|
184
|
-
chorus_pro_password: 'your_password',
|
|
185
|
-
sandbox: true
|
|
186
|
-
)
|
|
187
|
-
|
|
188
|
-
afnor_creds = AFNORCredentials.new(
|
|
189
|
-
flow_service_url: 'https://api.pdp.fr/flow/v1',
|
|
190
|
-
token_url: 'https://auth.pdp.fr/oauth/token',
|
|
191
|
-
client_id: 'your_client_id',
|
|
192
|
-
client_secret: 'your_client_secret'
|
|
193
|
-
)
|
|
190
|
+
require 'factpulse'
|
|
194
191
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
192
|
+
begin
|
|
193
|
+
result = client.post('processing/validate-xml', xmlContent: xml_string)
|
|
194
|
+
rescue FactPulse::Error => e
|
|
195
|
+
puts "Error: #{e.message}"
|
|
196
|
+
puts "Status code: #{e.status_code}"
|
|
197
|
+
puts "Details: #{e.details}"
|
|
198
|
+
end
|
|
201
199
|
```
|
|
202
200
|
|
|
203
201
|
## Resources
|
data/docs/AllowanceCharge.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
| Name | Type | Description | Notes |
|
|
6
6
|
| ---- | ---- | ----------- | ----- |
|
|
7
7
|
| **is_charge** | **Boolean** | True for charge, False for allowance (ChargeIndicator). | |
|
|
8
|
-
| **amount** | [**
|
|
8
|
+
| **amount** | [**Amount2**](Amount2.md) | | |
|
|
9
9
|
| **base_amount** | [**BaseAmount**](BaseAmount.md) | | [optional] |
|
|
10
10
|
| **percentage** | [**Percentage**](Percentage.md) | | [optional] |
|
|
11
11
|
| **reason** | **String** | | [optional] |
|