factpulse 4.1.2 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -5
  3. data/Gemfile.lock +2 -2
  4. data/docs/AFNORBasicAuthentication.md +20 -0
  5. data/docs/AFNORCallbackAuthentication.md +49 -0
  6. data/docs/AFNORCallbackHeader.md +20 -0
  7. data/docs/AFNORCallbackParameters.md +24 -0
  8. data/docs/AFNORCallbackSignature.md +20 -0
  9. data/docs/{AFNORFacilityNature.md → AFNORContainsOrStrictOperator.md} +2 -2
  10. data/docs/AFNORCoreFlowInfo.md +26 -0
  11. data/docs/{AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCode.md → AFNORDirectoryLinePayloadLegalUnitFacilityRoutingCode.md} +5 -5
  12. data/docs/AFNORDirectoryLinePayloadStatusLegalUnitFacilityRoutingCode.md +34 -0
  13. data/docs/AFNORDirectoryLineSearchPost200Response.md +1 -1
  14. data/docs/{AFNORDiffusionStatus.md → AFNORDirectoryLineStatus.md} +2 -2
  15. data/docs/AFNORError.md +4 -4
  16. data/docs/AFNORFacilityPayloadHistory.md +3 -3
  17. data/docs/AFNORFacilityPayloadIncluded.md +0 -2
  18. data/docs/AFNORFlow.md +16 -14
  19. data/docs/AFNORFlowExtension.md +26 -0
  20. data/docs/AFNORFlowInfo.md +3 -3
  21. data/docs/AFNORFlowInfoExtension.md +18 -0
  22. data/docs/AFNORFullFlowInfo.md +8 -8
  23. data/docs/AFNORFullFlowInfoExtension.md +20 -0
  24. data/docs/AFNORLegalUnitPayloadHistory.md +3 -1
  25. data/docs/AFNOROAuth2Authentication.md +22 -0
  26. data/docs/AFNORPDPPADirectoryServiceApi.md +4 -648
  27. data/docs/AFNORPDPPAFlowServiceApi.md +320 -1
  28. data/docs/AFNORRoutingCodeSearch.md +1 -1
  29. data/docs/AFNORRoutingCodeSearchFiltersRoutingCodeName.md +1 -1
  30. data/docs/AFNORRoutingCodeSearchFiltersRoutingIdentifier.md +1 -1
  31. data/docs/AFNORSearchDirectoryLine.md +2 -2
  32. data/docs/AFNORSearchDirectoryLineFiltersAddressingIdentifier.md +1 -1
  33. data/docs/AFNORSearchDirectoryLineFiltersAddressingSuffix.md +1 -1
  34. data/docs/AFNORSearchFlowFilters.md +1 -1
  35. data/docs/AFNORSearchSiren.md +1 -1
  36. data/docs/AFNORSearchSirenFiltersBusinessName.md +1 -1
  37. data/docs/AFNORSearchSirenFiltersSiren.md +1 -1
  38. data/docs/AFNORSearchSiret.md +2 -2
  39. data/docs/AFNORSearchSiretFiltersCountrySubdivision.md +1 -1
  40. data/docs/AFNORSearchSiretFiltersFacilityType.md +1 -1
  41. data/docs/AFNORSearchSiretFiltersLocality.md +1 -1
  42. data/docs/AFNORSearchSiretFiltersName.md +1 -1
  43. data/docs/AFNORSearchSiretFiltersPostalCode.md +1 -1
  44. data/docs/AFNORSearchSiretFiltersSiret.md +1 -1
  45. data/docs/AFNORSirenInstructions.md +18 -0
  46. data/docs/AFNORSiretInstructions.md +18 -0
  47. data/docs/{AFNORPlatformStatus.md → AFNORStrictOrStartWithOperator.md} +2 -2
  48. data/docs/AFNORWebhook.md +22 -0
  49. data/docs/AFNORWebhookIdParam.md +18 -0
  50. data/docs/AFNORWebhookMetadata.md +24 -0
  51. data/docs/AFNORWebhookParams.md +20 -0
  52. data/docs/AFNORWebhookPatchPayload.md +22 -0
  53. data/docs/ChorusProCredentials.md +8 -8
  54. data/docs/ChorusProDestination.md +1 -1
  55. data/docs/FactureElectroniqueRestApiSchemasCdarValidationErrorResponse.md +24 -0
  56. data/docs/FactureElectroniqueRestApiSchemasEreportingInvoiceTypeCode.md +15 -0
  57. data/docs/FactureElectroniqueRestApiSchemasProcessingChorusProCredentials.md +26 -0
  58. data/docs/GetChorusProIdRequest.md +1 -1
  59. data/docs/GetInvoiceRequest.md +1 -1
  60. data/docs/GetStructureRequest.md +1 -1
  61. data/docs/InvoiceInput.md +1 -1
  62. data/docs/SearchStructureRequest.md +1 -1
  63. data/docs/SimplifiedInvoiceData.md +1 -1
  64. data/docs/SubmitInvoiceRequest.md +1 -1
  65. data/docs/ValidateCDARResponse.md +2 -2
  66. data/docs/ValidationErrorResponse.md +2 -8
  67. data/lib/factpulse/api/afnorpdppa_directory_service_api.rb +3 -621
  68. data/lib/factpulse/api/afnorpdppa_flow_service_api.rb +303 -0
  69. data/lib/factpulse/models/afnor_algorithm.rb +4 -3
  70. data/lib/factpulse/models/afnor_basic_authentication.rb +190 -0
  71. data/lib/factpulse/models/afnor_callback_authentication.rb +105 -0
  72. data/lib/factpulse/models/afnor_callback_header.rb +190 -0
  73. data/lib/factpulse/models/afnor_callback_parameters.rb +193 -0
  74. data/lib/factpulse/models/{afnor_directory_line_payload_history_legal_unit_facility_routing_code_platform.rb → afnor_callback_signature.rb} +51 -16
  75. data/lib/factpulse/models/{afnor_diffusion_status.rb → afnor_contains_or_strict_operator.rb} +6 -6
  76. data/lib/factpulse/models/{afnor_routing_code_post201_response.rb → afnor_core_flow_info.rb} +103 -61
  77. data/lib/factpulse/models/afnor_directory_line_field.rb +1 -2
  78. data/lib/factpulse/models/{afnor_directory_line_payload_history_legal_unit_facility_routing_code.rb → afnor_directory_line_payload_legal_unit_facility_routing_code.rb} +36 -14
  79. data/lib/factpulse/models/{afnor_create_directory_line_body_addressing_information.rb → afnor_directory_line_payload_status_legal_unit_facility_routing_code.rb} +105 -56
  80. data/lib/factpulse/models/afnor_directory_line_search_post200_response.rb +1 -1
  81. data/lib/factpulse/models/{afnor_platform_status.rb → afnor_directory_line_status.rb} +5 -4
  82. data/lib/factpulse/models/afnor_error.rb +30 -39
  83. data/lib/factpulse/models/afnor_facility_payload_history.rb +11 -11
  84. data/lib/factpulse/models/afnor_facility_payload_included.rb +1 -10
  85. data/lib/factpulse/models/afnor_flow.rb +218 -57
  86. data/lib/factpulse/models/{afnor_update_patch_routing_code_body.rb → afnor_flow_extension.rb} +103 -66
  87. data/lib/factpulse/models/afnor_flow_info.rb +20 -4
  88. data/lib/factpulse/models/{afnor_create_directory_line_body_period.rb → afnor_flow_info_extension.rb} +26 -31
  89. data/lib/factpulse/models/afnor_full_flow_info.rb +79 -46
  90. data/lib/factpulse/models/afnor_full_flow_info_extension.rb +202 -0
  91. data/lib/factpulse/models/afnor_legal_unit_payload_history.rb +13 -4
  92. data/lib/factpulse/models/afnor_processing_rule.rb +4 -1
  93. data/lib/factpulse/models/afnor_routing_code_field.rb +1 -2
  94. data/lib/factpulse/models/afnor_routing_code_search_filters_routing_code_name.rb +1 -1
  95. data/lib/factpulse/models/afnor_routing_code_search_filters_routing_identifier.rb +1 -1
  96. data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_identifier.rb +1 -1
  97. data/lib/factpulse/models/afnor_search_directory_line_filters_addressing_suffix.rb +1 -1
  98. data/lib/factpulse/models/afnor_search_flow_filters.rb +1 -0
  99. data/lib/factpulse/models/afnor_search_siren_filters_business_name.rb +1 -1
  100. data/lib/factpulse/models/afnor_search_siren_filters_siren.rb +1 -1
  101. data/lib/factpulse/models/afnor_search_siret_filters_country_subdivision.rb +1 -1
  102. data/lib/factpulse/models/afnor_search_siret_filters_facility_type.rb +1 -1
  103. data/lib/factpulse/models/afnor_search_siret_filters_locality.rb +1 -1
  104. data/lib/factpulse/models/afnor_search_siret_filters_name.rb +1 -1
  105. data/lib/factpulse/models/afnor_search_siret_filters_postal_code.rb +1 -1
  106. data/lib/factpulse/models/afnor_search_siret_filters_siret.rb +1 -1
  107. data/lib/factpulse/models/afnor_siren_field.rb +2 -2
  108. data/lib/factpulse/models/{afnor_update_patch_directory_line_body.rb → afnor_siren_instructions.rb} +12 -11
  109. data/lib/factpulse/models/afnor_siret_field.rb +3 -4
  110. data/lib/factpulse/models/{afnor_create_directory_line_body.rb → afnor_siret_instructions.rb} +12 -19
  111. data/lib/factpulse/models/{afnor_facility_nature.rb → afnor_strict_or_start_with_operator.rb} +6 -6
  112. data/lib/factpulse/models/{afnor_directory_line_post201_response.rb → afnor_webhook.rb} +55 -35
  113. data/lib/factpulse/models/{afnor_webhook_callback_content.rb → afnor_webhook_id_param.rb} +10 -11
  114. data/lib/factpulse/models/{afnor_legal_unit_payload_included_no_siren.rb → afnor_webhook_metadata.rb} +56 -33
  115. data/lib/factpulse/models/afnor_webhook_params.rb +190 -0
  116. data/lib/factpulse/models/{facture_electronique_rest_api_schemas_validation_validation_error_response.rb → afnor_webhook_patch_payload.rb} +29 -30
  117. data/lib/factpulse/models/afnoro_auth2_authentication.rb +216 -0
  118. data/lib/factpulse/models/chorus_pro_credentials.rb +94 -26
  119. data/lib/factpulse/models/chorus_pro_destination.rb +1 -1
  120. data/lib/factpulse/models/facture_electronique_rest_api_schemas_cdar_validation_error_response.rb +215 -0
  121. data/lib/factpulse/models/{facture_electronique_models_invoice_type_code.rb → facture_electronique_rest_api_schemas_ereporting_invoice_type_code.rb} +9 -20
  122. data/lib/factpulse/models/facture_electronique_rest_api_schemas_processing_chorus_pro_credentials.rb +191 -0
  123. data/lib/factpulse/models/get_chorus_pro_id_request.rb +1 -1
  124. data/lib/factpulse/models/get_invoice_request.rb +1 -1
  125. data/lib/factpulse/models/get_structure_request.rb +1 -1
  126. data/lib/factpulse/models/invoice_input.rb +1 -1
  127. data/lib/factpulse/models/invoice_type_code.rb +17 -6
  128. data/lib/factpulse/models/processing_rule.rb +4 -1
  129. data/lib/factpulse/models/search_structure_request.rb +1 -1
  130. data/lib/factpulse/models/simplified_invoice_data.rb +1 -1
  131. data/lib/factpulse/models/submit_invoice_request.rb +1 -1
  132. data/lib/factpulse/models/validate_cdar_response.rb +2 -2
  133. data/lib/factpulse/models/validation_error_response.rb +20 -67
  134. data/lib/factpulse/version.rb +1 -1
  135. data/lib/factpulse.rb +25 -22
  136. metadata +52 -46
  137. data/docs/AFNORAddressEdit.md +0 -30
  138. data/docs/AFNORAddressPatch.md +0 -30
  139. data/docs/AFNORAddressPut.md +0 -30
  140. data/docs/AFNORCreateDirectoryLineBody.md +0 -20
  141. data/docs/AFNORCreateDirectoryLineBodyAddressingInformation.md +0 -24
  142. data/docs/AFNORCreateDirectoryLineBodyPeriod.md +0 -20
  143. data/docs/AFNORCreateRoutingCodeBody.md +0 -32
  144. data/docs/AFNORDirectoryLinePayloadHistoryLegalUnitFacilityRoutingCodePlatform.md +0 -20
  145. data/docs/AFNORDirectoryLinePost201Response.md +0 -22
  146. data/docs/AFNORLegalUnitPayloadIncludedNoSiren.md +0 -22
  147. data/docs/AFNORRoutingCodePost201Response.md +0 -22
  148. data/docs/AFNORUpdatePatchDirectoryLineBody.md +0 -18
  149. data/docs/AFNORUpdatePatchRoutingCodeBody.md +0 -24
  150. data/docs/AFNORUpdatePutRoutingCodeBody.md +0 -24
  151. data/docs/AFNORWebhookCallbackContent.md +0 -18
  152. data/docs/FactureElectroniqueModelsInvoiceTypeCode.md +0 -15
  153. data/docs/FactureElectroniqueRestApiSchemasChorusProChorusProCredentials.md +0 -26
  154. data/docs/FactureElectroniqueRestApiSchemasValidationValidationErrorResponse.md +0 -18
  155. data/lib/factpulse/models/afnor_address_edit.rb +0 -353
  156. data/lib/factpulse/models/afnor_address_patch.rb +0 -386
  157. data/lib/factpulse/models/afnor_address_put.rb +0 -435
  158. data/lib/factpulse/models/afnor_create_routing_code_body.rb +0 -412
  159. data/lib/factpulse/models/afnor_update_put_routing_code_body.rb +0 -289
  160. data/lib/factpulse/models/facture_electronique_rest_api_schemas_chorus_pro_chorus_pro_credentials.rb +0 -259
@@ -14,26 +14,15 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module FactPulse
17
- class FactureElectroniqueModelsInvoiceTypeCode
18
- INVOICE = "380".freeze
19
- SELF_BILLED_INVOICE = "389".freeze
20
- FACTORED_INVOICE = "393".freeze
21
- SELF_BILLED_FACTORED_INVOICE = "501".freeze
22
- PREPAYMENT_INVOICE = "386".freeze
23
- SELF_BILLED_PREPAYMENT_INVOICE = "500".freeze
24
- CORRECTIVE_INVOICE = "384".freeze
25
- SELF_BILLED_CORRECTIVE_INVOICE = "471".freeze
26
- FACTORED_CORRECTIVE_INVOICE = "472".freeze
27
- SELF_BILLED_FACTORED_CORRECTIVE_INVOICE = "473".freeze
28
- CREDIT_NOTE = "381".freeze
29
- SELF_BILLED_CREDIT_NOTE = "261".freeze
30
- GLOBAL_ALLOWANCE_CREDIT_NOTE = "262".freeze
31
- FACTORED_CREDIT_NOTE = "396".freeze
32
- SELF_BILLED_FACTORED_CREDIT_NOTE = "502".freeze
33
- PREPAYMENT_CREDIT_NOTE = "503".freeze
17
+ class FactureElectroniqueRestApiSchemasEreportingInvoiceTypeCode
18
+ N380 = "380".freeze
19
+ N381 = "381".freeze
20
+ N384 = "384".freeze
21
+ N389 = "389".freeze
22
+ N386 = "386".freeze
34
23
 
35
24
  def self.all_vars
36
- @all_vars ||= [INVOICE, SELF_BILLED_INVOICE, FACTORED_INVOICE, SELF_BILLED_FACTORED_INVOICE, PREPAYMENT_INVOICE, SELF_BILLED_PREPAYMENT_INVOICE, CORRECTIVE_INVOICE, SELF_BILLED_CORRECTIVE_INVOICE, FACTORED_CORRECTIVE_INVOICE, SELF_BILLED_FACTORED_CORRECTIVE_INVOICE, CREDIT_NOTE, SELF_BILLED_CREDIT_NOTE, GLOBAL_ALLOWANCE_CREDIT_NOTE, FACTORED_CREDIT_NOTE, SELF_BILLED_FACTORED_CREDIT_NOTE, PREPAYMENT_CREDIT_NOTE].freeze
25
+ @all_vars ||= [N380, N381, N384, N389, N386].freeze
37
26
  end
38
27
 
39
28
  # Builds the enum from string
@@ -47,8 +36,8 @@ module FactPulse
47
36
  # @param [String] The enum value in the form of the string
48
37
  # @return [String] The enum value
49
38
  def build_from_hash(value)
50
- return value if FactureElectroniqueModelsInvoiceTypeCode.all_vars.include?(value)
51
- raise "Invalid ENUM value #{value} for class #FactureElectroniqueModelsInvoiceTypeCode"
39
+ return value if FactureElectroniqueRestApiSchemasEreportingInvoiceTypeCode.all_vars.include?(value)
40
+ raise "Invalid ENUM value #{value} for class #FactureElectroniqueRestApiSchemasEreportingInvoiceTypeCode"
52
41
  end
53
42
  end
54
43
  end
@@ -0,0 +1,191 @@
1
+ =begin
2
+ #FactPulse REST API
3
+
4
+ # REST API for electronic invoicing in France: Factur-X (CII), UBL 2.1, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Invoice Generation - **Formats**: CII XML, UBL 2.1 XML, or Factur-X PDF/A-3 - **Profiles** (CII/PDF): MINIMUM, BASIC, EN16931, EXTENDED - **UBL**: Always EN16931 compliant - **Standards**: EN 16931 (EU directive 2014/55), ISO 19005-3 (PDF/A-3), CII (UN/CEFACT), UBL 2.1 (OASIS) - **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.21.0-SNAPSHOT
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module FactPulse
17
+ # Optional Chorus Pro credentials. **MODE 1 - JWT retrieval (recommended):** Do not provide this `credentials` field in the payload. Credentials will be automatically retrieved via client_uid from JWT (0-trust). **MODE 2 - Credentials in payload:** Provide all required fields below. Useful for tests or third-party integrations.
18
+ class FactureElectroniqueRestApiSchemasProcessingChorusProCredentials < ApiModelBase
19
+ attr_accessor :piste_client_id
20
+
21
+ attr_accessor :piste_client_secret
22
+
23
+ attr_accessor :chorus_login
24
+
25
+ attr_accessor :chorus_password
26
+
27
+ # [MODE 2] Use sandbox mode (default: True)
28
+ attr_accessor :sandbox_mode
29
+
30
+ # Attribute mapping from ruby-style variable name to JSON key.
31
+ def self.attribute_map
32
+ {
33
+ :'piste_client_id' => :'pisteClientId',
34
+ :'piste_client_secret' => :'pisteClientSecret',
35
+ :'chorus_login' => :'chorusLogin',
36
+ :'chorus_password' => :'chorusPassword',
37
+ :'sandbox_mode' => :'sandboxMode'
38
+ }
39
+ end
40
+
41
+ # Returns attribute mapping this model knows about
42
+ def self.acceptable_attribute_map
43
+ attribute_map
44
+ end
45
+
46
+ # Returns all the JSON keys this model knows about
47
+ def self.acceptable_attributes
48
+ acceptable_attribute_map.values
49
+ end
50
+
51
+ # Attribute type mapping.
52
+ def self.openapi_types
53
+ {
54
+ :'piste_client_id' => :'String',
55
+ :'piste_client_secret' => :'String',
56
+ :'chorus_login' => :'String',
57
+ :'chorus_password' => :'String',
58
+ :'sandbox_mode' => :'Boolean'
59
+ }
60
+ end
61
+
62
+ # List of attributes with nullable: true
63
+ def self.openapi_nullable
64
+ Set.new([
65
+ :'piste_client_id',
66
+ :'piste_client_secret',
67
+ :'chorus_login',
68
+ :'chorus_password',
69
+ ])
70
+ end
71
+
72
+ # Initializes the object
73
+ # @param [Hash] attributes Model attributes in the form of hash
74
+ def initialize(attributes = {})
75
+ if (!attributes.is_a?(Hash))
76
+ fail ArgumentError, "The input argument (attributes) must be a hash in `FactPulse::FactureElectroniqueRestApiSchemasProcessingChorusProCredentials` initialize method"
77
+ end
78
+
79
+ # check to see if the attribute exists and convert string to symbol for hash key
80
+ acceptable_attribute_map = self.class.acceptable_attribute_map
81
+ attributes = attributes.each_with_object({}) { |(k, v), h|
82
+ if (!acceptable_attribute_map.key?(k.to_sym))
83
+ fail ArgumentError, "`#{k}` is not a valid attribute in `FactPulse::FactureElectroniqueRestApiSchemasProcessingChorusProCredentials`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
84
+ end
85
+ h[k.to_sym] = v
86
+ }
87
+
88
+ if attributes.key?(:'piste_client_id')
89
+ self.piste_client_id = attributes[:'piste_client_id']
90
+ end
91
+
92
+ if attributes.key?(:'piste_client_secret')
93
+ self.piste_client_secret = attributes[:'piste_client_secret']
94
+ end
95
+
96
+ if attributes.key?(:'chorus_login')
97
+ self.chorus_login = attributes[:'chorus_login']
98
+ end
99
+
100
+ if attributes.key?(:'chorus_password')
101
+ self.chorus_password = attributes[:'chorus_password']
102
+ end
103
+
104
+ if attributes.key?(:'sandbox_mode')
105
+ self.sandbox_mode = attributes[:'sandbox_mode']
106
+ else
107
+ self.sandbox_mode = true
108
+ end
109
+ end
110
+
111
+ # Show invalid properties with the reasons. Usually used together with valid?
112
+ # @return Array for valid properties with the reasons
113
+ def list_invalid_properties
114
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
115
+ invalid_properties = Array.new
116
+ invalid_properties
117
+ end
118
+
119
+ # Check to see if the all the properties in the model are valid
120
+ # @return true if the model is valid
121
+ def valid?
122
+ warn '[DEPRECATED] the `valid?` method is obsolete'
123
+ true
124
+ end
125
+
126
+ # Checks equality by comparing each attribute.
127
+ # @param [Object] Object to be compared
128
+ def ==(o)
129
+ return true if self.equal?(o)
130
+ self.class == o.class &&
131
+ piste_client_id == o.piste_client_id &&
132
+ piste_client_secret == o.piste_client_secret &&
133
+ chorus_login == o.chorus_login &&
134
+ chorus_password == o.chorus_password &&
135
+ sandbox_mode == o.sandbox_mode
136
+ end
137
+
138
+ # @see the `==` method
139
+ # @param [Object] Object to be compared
140
+ def eql?(o)
141
+ self == o
142
+ end
143
+
144
+ # Calculates hash code according to all attributes.
145
+ # @return [Integer] Hash code
146
+ def hash
147
+ [piste_client_id, piste_client_secret, chorus_login, chorus_password, sandbox_mode].hash
148
+ end
149
+
150
+ # Builds the object from hash
151
+ # @param [Hash] attributes Model attributes in the form of hash
152
+ # @return [Object] Returns the model itself
153
+ def self.build_from_hash(attributes)
154
+ return nil unless attributes.is_a?(Hash)
155
+ attributes = attributes.transform_keys(&:to_sym)
156
+ transformed_hash = {}
157
+ openapi_types.each_pair do |key, type|
158
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
159
+ transformed_hash["#{key}"] = nil
160
+ elsif type =~ /\AArray<(.*)>/i
161
+ # check to ensure the input is an array given that the attribute
162
+ # is documented as an array but the input is not
163
+ if attributes[attribute_map[key]].is_a?(Array)
164
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
165
+ end
166
+ elsif !attributes[attribute_map[key]].nil?
167
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
168
+ end
169
+ end
170
+ new(transformed_hash)
171
+ end
172
+
173
+ # Returns the object in the form of hash
174
+ # @return [Hash] Returns the object in the form of hash
175
+ def to_hash
176
+ hash = {}
177
+ self.class.attribute_map.each_pair do |attr, param|
178
+ value = self.send(attr)
179
+ if value.nil?
180
+ is_nullable = self.class.openapi_nullable.include?(attr)
181
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
182
+ end
183
+
184
+ hash[param] = _to_hash(value)
185
+ end
186
+ hash
187
+ end
188
+
189
+ end
190
+
191
+ end
@@ -46,7 +46,7 @@ module FactPulse
46
46
  # Attribute type mapping.
47
47
  def self.openapi_types
48
48
  {
49
- :'credentials' => :'FactureElectroniqueRestApiSchemasChorusProChorusProCredentials',
49
+ :'credentials' => :'ChorusProCredentials',
50
50
  :'siret' => :'String',
51
51
  :'identifier_type' => :'String'
52
52
  }
@@ -42,7 +42,7 @@ module FactPulse
42
42
  # Attribute type mapping.
43
43
  def self.openapi_types
44
44
  {
45
- :'credentials' => :'FactureElectroniqueRestApiSchemasChorusProChorusProCredentials',
45
+ :'credentials' => :'ChorusProCredentials',
46
46
  :'chorus_invoice_id' => :'Integer'
47
47
  }
48
48
  end
@@ -46,7 +46,7 @@ module FactPulse
46
46
  # Attribute type mapping.
47
47
  def self.openapi_types
48
48
  {
49
- :'credentials' => :'FactureElectroniqueRestApiSchemasChorusProChorusProCredentials',
49
+ :'credentials' => :'ChorusProCredentials',
50
50
  :'structure_id' => :'Integer',
51
51
  :'language_code' => :'String'
52
52
  }
@@ -114,7 +114,7 @@ module FactPulse
114
114
  {
115
115
  :'invoice_id' => :'String',
116
116
  :'issue_date' => :'Date',
117
- :'type_code' => :'InvoiceTypeCode',
117
+ :'type_code' => :'FactureElectroniqueRestApiSchemasEreportingInvoiceTypeCode',
118
118
  :'currency' => :'Currency',
119
119
  :'due_date' => :'Date',
120
120
  :'seller_id' => :'String',
@@ -15,14 +15,25 @@ require 'time'
15
15
 
16
16
  module FactPulse
17
17
  class InvoiceTypeCode
18
- N380 = "380".freeze
19
- N381 = "381".freeze
20
- N384 = "384".freeze
21
- N389 = "389".freeze
22
- N386 = "386".freeze
18
+ INVOICE = "380".freeze
19
+ SELF_BILLED_INVOICE = "389".freeze
20
+ FACTORED_INVOICE = "393".freeze
21
+ SELF_BILLED_FACTORED_INVOICE = "501".freeze
22
+ PREPAYMENT_INVOICE = "386".freeze
23
+ SELF_BILLED_PREPAYMENT_INVOICE = "500".freeze
24
+ CORRECTIVE_INVOICE = "384".freeze
25
+ SELF_BILLED_CORRECTIVE_INVOICE = "471".freeze
26
+ FACTORED_CORRECTIVE_INVOICE = "472".freeze
27
+ SELF_BILLED_FACTORED_CORRECTIVE_INVOICE = "473".freeze
28
+ CREDIT_NOTE = "381".freeze
29
+ SELF_BILLED_CREDIT_NOTE = "261".freeze
30
+ GLOBAL_ALLOWANCE_CREDIT_NOTE = "262".freeze
31
+ FACTORED_CREDIT_NOTE = "396".freeze
32
+ SELF_BILLED_FACTORED_CREDIT_NOTE = "502".freeze
33
+ PREPAYMENT_CREDIT_NOTE = "503".freeze
23
34
 
24
35
  def self.all_vars
25
- @all_vars ||= [N380, N381, N384, N389, N386].freeze
36
+ @all_vars ||= [INVOICE, SELF_BILLED_INVOICE, FACTORED_INVOICE, SELF_BILLED_FACTORED_INVOICE, PREPAYMENT_INVOICE, SELF_BILLED_PREPAYMENT_INVOICE, CORRECTIVE_INVOICE, SELF_BILLED_CORRECTIVE_INVOICE, FACTORED_CORRECTIVE_INVOICE, SELF_BILLED_FACTORED_CORRECTIVE_INVOICE, CREDIT_NOTE, SELF_BILLED_CREDIT_NOTE, GLOBAL_ALLOWANCE_CREDIT_NOTE, FACTORED_CREDIT_NOTE, SELF_BILLED_FACTORED_CREDIT_NOTE, PREPAYMENT_CREDIT_NOTE].freeze
26
37
  end
27
38
 
28
39
  # Builds the enum from string
@@ -18,12 +18,15 @@ module FactPulse
18
18
  B2_B = "B2B".freeze
19
19
  B2_B_INT = "B2BInt".freeze
20
20
  B2_C = "B2C".freeze
21
+ B2_G = "B2G".freeze
22
+ B2_G_INT = "B2GInt".freeze
21
23
  OUT_OF_SCOPE = "OutOfScope".freeze
24
+ B2_G_OUT_OF_SCOPE = "B2GOutOfScope".freeze
22
25
  ARCHIVE_ONLY = "ArchiveOnly".freeze
23
26
  NOT_APPLICABLE = "NotApplicable".freeze
24
27
 
25
28
  def self.all_vars
26
- @all_vars ||= [B2_B, B2_B_INT, B2_C, OUT_OF_SCOPE, ARCHIVE_ONLY, NOT_APPLICABLE].freeze
29
+ @all_vars ||= [B2_B, B2_B_INT, B2_C, B2_G, B2_G_INT, OUT_OF_SCOPE, B2_G_OUT_OF_SCOPE, ARCHIVE_ONLY, NOT_APPLICABLE].freeze
27
30
  end
28
31
 
29
32
  # Builds the enum from string
@@ -51,7 +51,7 @@ module FactPulse
51
51
  # Attribute type mapping.
52
52
  def self.openapi_types
53
53
  {
54
- :'credentials' => :'FactureElectroniqueRestApiSchemasChorusProChorusProCredentials',
54
+ :'credentials' => :'ChorusProCredentials',
55
55
  :'structure_identifier' => :'String',
56
56
  :'structure_identifier_type' => :'String',
57
57
  :'company_name' => :'String',
@@ -111,7 +111,7 @@ module FactPulse
111
111
  :'comment' => :'String',
112
112
  :'purchase_order_reference' => :'String',
113
113
  :'contract_reference' => :'String',
114
- :'invoice_type' => :'FactureElectroniqueModelsInvoiceTypeCode',
114
+ :'invoice_type' => :'InvoiceTypeCode',
115
115
  :'preceding_invoice_reference' => :'String',
116
116
  :'operation_nature' => :'OperationNature',
117
117
  :'invoicing_framework' => :'InvoicingFrameworkCode'
@@ -83,7 +83,7 @@ module FactPulse
83
83
  # Attribute type mapping.
84
84
  def self.openapi_types
85
85
  {
86
- :'credentials' => :'FactureElectroniqueRestApiSchemasChorusProChorusProCredentials',
86
+ :'credentials' => :'ChorusProCredentials',
87
87
  :'invoice_number' => :'String',
88
88
  :'invoice_date' => :'String',
89
89
  :'payment_due_date' => :'String',
@@ -48,8 +48,8 @@ module FactPulse
48
48
  def self.openapi_types
49
49
  {
50
50
  :'valid' => :'Boolean',
51
- :'errors' => :'Array<ValidationErrorResponse>',
52
- :'warnings' => :'Array<ValidationErrorResponse>'
51
+ :'errors' => :'Array<FactureElectroniqueRestApiSchemasCdarValidationErrorResponse>',
52
+ :'warnings' => :'Array<FactureElectroniqueRestApiSchemasCdarValidationErrorResponse>'
53
53
  }
54
54
  end
55
55
 
@@ -14,26 +14,15 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module FactPulse
17
- # Erreur de validation.
17
+ # Response for validation errors.
18
18
  class ValidationErrorResponse < ApiModelBase
19
- # Champ concerné
20
- attr_accessor :field
21
-
22
- # Message d'erreur
23
- attr_accessor :message
24
-
25
- attr_accessor :rule
26
-
27
- # Sévérité (error/warning)
28
- attr_accessor :severity
19
+ # List of detected validation errors.
20
+ attr_accessor :detail
29
21
 
30
22
  # Attribute mapping from ruby-style variable name to JSON key.
31
23
  def self.attribute_map
32
24
  {
33
- :'field' => :'field',
34
- :'message' => :'message',
35
- :'rule' => :'rule',
36
- :'severity' => :'severity'
25
+ :'detail' => :'detail'
37
26
  }
38
27
  end
39
28
 
@@ -50,17 +39,13 @@ module FactPulse
50
39
  # Attribute type mapping.
51
40
  def self.openapi_types
52
41
  {
53
- :'field' => :'String',
54
- :'message' => :'String',
55
- :'rule' => :'String',
56
- :'severity' => :'String'
42
+ :'detail' => :'Array<String>'
57
43
  }
58
44
  end
59
45
 
60
46
  # List of attributes with nullable: true
61
47
  def self.openapi_nullable
62
48
  Set.new([
63
- :'rule',
64
49
  ])
65
50
  end
66
51
 
@@ -80,26 +65,12 @@ module FactPulse
80
65
  h[k.to_sym] = v
81
66
  }
82
67
 
83
- if attributes.key?(:'field')
84
- self.field = attributes[:'field']
85
- else
86
- self.field = nil
87
- end
88
-
89
- if attributes.key?(:'message')
90
- self.message = attributes[:'message']
91
- else
92
- self.message = nil
93
- end
94
-
95
- if attributes.key?(:'rule')
96
- self.rule = attributes[:'rule']
97
- end
98
-
99
- if attributes.key?(:'severity')
100
- self.severity = attributes[:'severity']
68
+ if attributes.key?(:'detail')
69
+ if (value = attributes[:'detail']).is_a?(Array)
70
+ self.detail = value
71
+ end
101
72
  else
102
- self.severity = 'error'
73
+ self.detail = nil
103
74
  end
104
75
  end
105
76
 
@@ -108,12 +79,8 @@ module FactPulse
108
79
  def list_invalid_properties
109
80
  warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
110
81
  invalid_properties = Array.new
111
- if @field.nil?
112
- invalid_properties.push('invalid value for "field", field cannot be nil.')
113
- end
114
-
115
- if @message.nil?
116
- invalid_properties.push('invalid value for "message", message cannot be nil.')
82
+ if @detail.nil?
83
+ invalid_properties.push('invalid value for "detail", detail cannot be nil.')
117
84
  end
118
85
 
119
86
  invalid_properties
@@ -123,29 +90,18 @@ module FactPulse
123
90
  # @return true if the model is valid
124
91
  def valid?
125
92
  warn '[DEPRECATED] the `valid?` method is obsolete'
126
- return false if @field.nil?
127
- return false if @message.nil?
93
+ return false if @detail.nil?
128
94
  true
129
95
  end
130
96
 
131
97
  # Custom attribute writer method with validation
132
- # @param [Object] field Value to be assigned
133
- def field=(field)
134
- if field.nil?
135
- fail ArgumentError, 'field cannot be nil'
136
- end
137
-
138
- @field = field
139
- end
140
-
141
- # Custom attribute writer method with validation
142
- # @param [Object] message Value to be assigned
143
- def message=(message)
144
- if message.nil?
145
- fail ArgumentError, 'message cannot be nil'
98
+ # @param [Object] detail Value to be assigned
99
+ def detail=(detail)
100
+ if detail.nil?
101
+ fail ArgumentError, 'detail cannot be nil'
146
102
  end
147
103
 
148
- @message = message
104
+ @detail = detail
149
105
  end
150
106
 
151
107
  # Checks equality by comparing each attribute.
@@ -153,10 +109,7 @@ module FactPulse
153
109
  def ==(o)
154
110
  return true if self.equal?(o)
155
111
  self.class == o.class &&
156
- field == o.field &&
157
- message == o.message &&
158
- rule == o.rule &&
159
- severity == o.severity
112
+ detail == o.detail
160
113
  end
161
114
 
162
115
  # @see the `==` method
@@ -168,7 +121,7 @@ module FactPulse
168
121
  # Calculates hash code according to all attributes.
169
122
  # @return [Integer] Hash code
170
123
  def hash
171
- [field, message, rule, severity].hash
124
+ [detail].hash
172
125
  end
173
126
 
174
127
  # Builds the object from hash
@@ -11,5 +11,5 @@ Generator version: 7.21.0-SNAPSHOT
11
11
  =end
12
12
 
13
13
  module FactPulse
14
- VERSION = '4.1.2'
14
+ VERSION = '4.3.0'
15
15
  end
data/lib/factpulse.rb CHANGED
@@ -20,30 +20,28 @@ require 'factpulse/configuration'
20
20
  # Models
21
21
  require 'factpulse/models/afnor_acknowledgement'
22
22
  require 'factpulse/models/afnor_acknowledgement_detail'
23
- require 'factpulse/models/afnor_address_edit'
24
- require 'factpulse/models/afnor_address_patch'
25
- require 'factpulse/models/afnor_address_put'
26
23
  require 'factpulse/models/afnor_address_read'
27
24
  require 'factpulse/models/afnor_algorithm'
25
+ require 'factpulse/models/afnor_basic_authentication'
26
+ require 'factpulse/models/afnor_callback_authentication'
27
+ require 'factpulse/models/afnor_callback_header'
28
+ require 'factpulse/models/afnor_callback_parameters'
29
+ require 'factpulse/models/afnor_callback_signature'
28
30
  require 'factpulse/models/afnor_contains_operator'
29
- require 'factpulse/models/afnor_create_directory_line_body'
30
- require 'factpulse/models/afnor_create_directory_line_body_addressing_information'
31
- require 'factpulse/models/afnor_create_directory_line_body_period'
32
- require 'factpulse/models/afnor_create_routing_code_body'
31
+ require 'factpulse/models/afnor_contains_or_strict_operator'
32
+ require 'factpulse/models/afnor_core_flow_info'
33
33
  require 'factpulse/models/afnor_credentials'
34
34
  require 'factpulse/models/afnor_destination'
35
- require 'factpulse/models/afnor_diffusion_status'
36
35
  require 'factpulse/models/afnor_directory_line_field'
37
- require 'factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code'
38
- require 'factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_platform'
39
36
  require 'factpulse/models/afnor_directory_line_payload_history_legal_unit_facility_routing_code_routing_code'
40
- require 'factpulse/models/afnor_directory_line_post201_response'
37
+ require 'factpulse/models/afnor_directory_line_payload_legal_unit_facility_routing_code'
38
+ require 'factpulse/models/afnor_directory_line_payload_status_legal_unit_facility_routing_code'
41
39
  require 'factpulse/models/afnor_directory_line_search_post200_response'
40
+ require 'factpulse/models/afnor_directory_line_status'
42
41
  require 'factpulse/models/afnor_entity_type'
43
42
  require 'factpulse/models/afnor_error'
44
43
  require 'factpulse/models/afnor_error_detail'
45
44
  require 'factpulse/models/afnor_facility_administrative_status'
46
- require 'factpulse/models/afnor_facility_nature'
47
45
  require 'factpulse/models/afnor_facility_payload_history'
48
46
  require 'factpulse/models/afnor_facility_payload_history_ule_b2g_additional_data'
49
47
  require 'factpulse/models/afnor_facility_payload_included'
@@ -51,17 +49,19 @@ require 'factpulse/models/afnor_facility_type'
51
49
  require 'factpulse/models/afnor_flow'
52
50
  require 'factpulse/models/afnor_flow_ack_status'
53
51
  require 'factpulse/models/afnor_flow_direction'
52
+ require 'factpulse/models/afnor_flow_extension'
54
53
  require 'factpulse/models/afnor_flow_info'
54
+ require 'factpulse/models/afnor_flow_info_extension'
55
55
  require 'factpulse/models/afnor_flow_profile'
56
56
  require 'factpulse/models/afnor_flow_syntax'
57
57
  require 'factpulse/models/afnor_flow_type'
58
58
  require 'factpulse/models/afnor_full_flow_info'
59
+ require 'factpulse/models/afnor_full_flow_info_extension'
59
60
  require 'factpulse/models/afnor_health_check_response'
60
61
  require 'factpulse/models/afnor_legal_unit_administrative_status'
61
62
  require 'factpulse/models/afnor_legal_unit_payload_history'
62
63
  require 'factpulse/models/afnor_legal_unit_payload_included'
63
- require 'factpulse/models/afnor_legal_unit_payload_included_no_siren'
64
- require 'factpulse/models/afnor_platform_status'
64
+ require 'factpulse/models/afnoro_auth2_authentication'
65
65
  require 'factpulse/models/afnor_processing_rule'
66
66
  require 'factpulse/models/afnor_reason_code'
67
67
  require 'factpulse/models/afnor_reason_code_enum'
@@ -70,7 +70,6 @@ require 'factpulse/models/afnor_result'
70
70
  require 'factpulse/models/afnor_routing_code_administrative_status'
71
71
  require 'factpulse/models/afnor_routing_code_field'
72
72
  require 'factpulse/models/afnor_routing_code_payload_history_legal_unit_facility'
73
- require 'factpulse/models/afnor_routing_code_post201_response'
74
73
  require 'factpulse/models/afnor_routing_code_search'
75
74
  require 'factpulse/models/afnor_routing_code_search_filters'
76
75
  require 'factpulse/models/afnor_routing_code_search_filters_administrative_status'
@@ -105,15 +104,19 @@ require 'factpulse/models/afnor_search_siret_filters_postal_code'
105
104
  require 'factpulse/models/afnor_search_siret_filters_siret'
106
105
  require 'factpulse/models/afnor_search_siret_sorting_inner'
107
106
  require 'factpulse/models/afnor_siren_field'
107
+ require 'factpulse/models/afnor_siren_instructions'
108
108
  require 'factpulse/models/afnor_siren_search_post200_response'
109
109
  require 'factpulse/models/afnor_siret_field'
110
+ require 'factpulse/models/afnor_siret_instructions'
110
111
  require 'factpulse/models/afnor_siret_search_post200_response'
111
112
  require 'factpulse/models/afnor_sorting_order'
112
113
  require 'factpulse/models/afnor_strict_operator'
113
- require 'factpulse/models/afnor_update_patch_directory_line_body'
114
- require 'factpulse/models/afnor_update_patch_routing_code_body'
115
- require 'factpulse/models/afnor_update_put_routing_code_body'
116
- require 'factpulse/models/afnor_webhook_callback_content'
114
+ require 'factpulse/models/afnor_strict_or_start_with_operator'
115
+ require 'factpulse/models/afnor_webhook'
116
+ require 'factpulse/models/afnor_webhook_id_param'
117
+ require 'factpulse/models/afnor_webhook_metadata'
118
+ require 'factpulse/models/afnor_webhook_params'
119
+ require 'factpulse/models/afnor_webhook_patch_payload'
117
120
  require 'factpulse/models/api_error'
118
121
  require 'factpulse/models/api_profile'
119
122
  require 'factpulse/models/acknowledgment_status'
@@ -179,9 +182,9 @@ require 'factpulse/models/error_source'
179
182
  require 'factpulse/models/extraction_info'
180
183
  require 'factpulse/models/factur_x_invoice'
181
184
  require 'factpulse/models/factur_xpdf_info'
182
- require 'factpulse/models/facture_electronique_models_invoice_type_code'
183
- require 'factpulse/models/facture_electronique_rest_api_schemas_chorus_pro_chorus_pro_credentials'
184
- require 'factpulse/models/facture_electronique_rest_api_schemas_validation_validation_error_response'
185
+ require 'factpulse/models/facture_electronique_rest_api_schemas_cdar_validation_error_response'
186
+ require 'factpulse/models/facture_electronique_rest_api_schemas_ereporting_invoice_type_code'
187
+ require 'factpulse/models/facture_electronique_rest_api_schemas_processing_chorus_pro_credentials'
185
188
  require 'factpulse/models/field_status'
186
189
  require 'factpulse/models/file_info'
187
190
  require 'factpulse/models/files_info'