trevol 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +15 -0
  3. data/GENERADO.md +14 -0
  4. data/LICENSE +21 -0
  5. data/README.md +173 -0
  6. data/lib/trevol/client.rb +94 -0
  7. data/lib/trevol/errors.rb +152 -0
  8. data/lib/trevol/llave.rb +21 -0
  9. data/lib/trevol/paginacion.rb +41 -0
  10. data/lib/trevol/transporte.rb +173 -0
  11. data/lib/trevol/webhook.rb +100 -0
  12. data/lib/trevol.rb +18 -0
  13. data/lib/trevol_generado/api/balance_api.rb +220 -0
  14. data/lib/trevol_generado/api/credit_notes_api.rb +671 -0
  15. data/lib/trevol_generado/api/debit_notes_api.rb +671 -0
  16. data/lib/trevol_generado/api/equivalent_document_adjustments_api.rb +691 -0
  17. data/lib/trevol_generado/api/equivalent_documents_api.rb +698 -0
  18. data/lib/trevol_generado/api/events_api.rb +231 -0
  19. data/lib/trevol_generado/api/general_api.rb +201 -0
  20. data/lib/trevol_generado/api/invoices_api.rb +736 -0
  21. data/lib/trevol_generado/api/payroll_adjustments_api.rb +637 -0
  22. data/lib/trevol_generado/api/payrolls_api.rb +637 -0
  23. data/lib/trevol_generado/api/radian_events_api.rb +431 -0
  24. data/lib/trevol_generado/api/requests_api.rb +97 -0
  25. data/lib/trevol_generado/api/support_document_adjustments_api.rb +565 -0
  26. data/lib/trevol_generado/api/support_documents_api.rb +565 -0
  27. data/lib/trevol_generado/api/webhook_endpoints_api.rb +556 -0
  28. data/lib/trevol_generado/api_client.rb +441 -0
  29. data/lib/trevol_generado/api_error.rb +58 -0
  30. data/lib/trevol_generado/api_model_base.rb +88 -0
  31. data/lib/trevol_generado/configuration.rb +392 -0
  32. data/lib/trevol_generado/models/acquirer.rb +209 -0
  33. data/lib/trevol_generado/models/air_collection.rb +205 -0
  34. data/lib/trevol_generado/models/air_extension.rb +216 -0
  35. data/lib/trevol_generado/models/allowance_charge.rb +250 -0
  36. data/lib/trevol_generado/models/alternative_currency.rb +180 -0
  37. data/lib/trevol_generado/models/balance.rb +244 -0
  38. data/lib/trevol_generado/models/balance_event_data.rb +172 -0
  39. data/lib/trevol_generado/models/balance_transaction.rb +265 -0
  40. data/lib/trevol_generado/models/balance_transaction_company.rb +172 -0
  41. data/lib/trevol_generado/models/balance_transaction_document.rb +173 -0
  42. data/lib/trevol_generado/models/balance_transaction_list.rb +191 -0
  43. data/lib/trevol_generado/models/carrier.rb +219 -0
  44. data/lib/trevol_generado/models/certificate_event_data.rb +180 -0
  45. data/lib/trevol_generado/models/cinema_extension.rb +214 -0
  46. data/lib/trevol_generado/models/cinema_screening.rb +256 -0
  47. data/lib/trevol_generado/models/company.rb +267 -0
  48. data/lib/trevol_generado/models/company_key.rb +182 -0
  49. data/lib/trevol_generado/models/company_numbering.rb +201 -0
  50. data/lib/trevol_generado/models/consumption.rb +246 -0
  51. data/lib/trevol_generado/models/consumption_adjustment.rb +204 -0
  52. data/lib/trevol_generado/models/contingency.rb +160 -0
  53. data/lib/trevol_generado/models/credit_note_list.rb +191 -0
  54. data/lib/trevol_generado/models/currency.rb +241 -0
  55. data/lib/trevol_generado/models/customer.rb +360 -0
  56. data/lib/trevol_generado/models/debit_note_list.rb +191 -0
  57. data/lib/trevol_generado/models/deleted_object.rb +178 -0
  58. data/lib/trevol_generado/models/delivery.rb +200 -0
  59. data/lib/trevol_generado/models/delivery_email.rb +181 -0
  60. data/lib/trevol_generado/models/delivery_terms.rb +169 -0
  61. data/lib/trevol_generado/models/dian_result.rb +182 -0
  62. data/lib/trevol_generado/models/dian_rule.rb +216 -0
  63. data/lib/trevol_generado/models/document.rb +432 -0
  64. data/lib/trevol_generado/models/document_event_data.rb +315 -0
  65. data/lib/trevol_generado/models/document_reference.rb +169 -0
  66. data/lib/trevol_generado/models/document_totals.rb +299 -0
  67. data/lib/trevol_generado/models/document_totals_currency.rb +197 -0
  68. data/lib/trevol_generado/models/document_totals_item.rb +196 -0
  69. data/lib/trevol_generado/models/document_totals_tax.rb +197 -0
  70. data/lib/trevol_generado/models/document_totals_withholding.rb +206 -0
  71. data/lib/trevol_generado/models/equivalent_adjustment_item.rb +374 -0
  72. data/lib/trevol_generado/models/equivalent_document.rb +470 -0
  73. data/lib/trevol_generado/models/equivalent_document_adjustment.rb +440 -0
  74. data/lib/trevol_generado/models/equivalent_document_adjustment_input.rb +388 -0
  75. data/lib/trevol_generado/models/equivalent_document_adjustment_list.rb +191 -0
  76. data/lib/trevol_generado/models/equivalent_document_contingency.rb +181 -0
  77. data/lib/trevol_generado/models/equivalent_document_contingency_backup.rb +171 -0
  78. data/lib/trevol_generado/models/equivalent_document_event_data.rb +313 -0
  79. data/lib/trevol_generado/models/equivalent_document_input.rb +365 -0
  80. data/lib/trevol_generado/models/equivalent_document_list.rb +191 -0
  81. data/lib/trevol_generado/models/equivalent_document_reference.rb +241 -0
  82. data/lib/trevol_generado/models/equivalent_item.rb +387 -0
  83. data/lib/trevol_generado/models/event.rb +223 -0
  84. data/lib/trevol_generado/models/event_claim.rb +170 -0
  85. data/lib/trevol_generado/models/event_delivery.rb +178 -0
  86. data/lib/trevol_generado/models/event_delivery_email.rb +161 -0
  87. data/lib/trevol_generado/models/event_dian_result.rb +173 -0
  88. data/lib/trevol_generado/models/event_dian_rule.rb +170 -0
  89. data/lib/trevol_generado/models/event_document_error.rb +170 -0
  90. data/lib/trevol_generado/models/event_equivalent_document_ref.rb +161 -0
  91. data/lib/trevol_generado/models/event_error.rb +170 -0
  92. data/lib/trevol_generado/models/event_invoice_ref.rb +161 -0
  93. data/lib/trevol_generado/models/event_list.rb +191 -0
  94. data/lib/trevol_generado/models/event_payroll_ref.rb +160 -0
  95. data/lib/trevol_generado/models/event_radian_invoice_ref.rb +181 -0
  96. data/lib/trevol_generado/models/event_resend_input.rb +177 -0
  97. data/lib/trevol_generado/models/event_support_document_ref.rb +161 -0
  98. data/lib/trevol_generado/models/extension.rb +215 -0
  99. data/lib/trevol_generado/models/foreign_address.rb +218 -0
  100. data/lib/trevol_generado/models/free_of_charge.rb +170 -0
  101. data/lib/trevol_generado/models/game.rb +203 -0
  102. data/lib/trevol_generado/models/game_credit.rb +204 -0
  103. data/lib/trevol_generado/models/games_extension.rb +216 -0
  104. data/lib/trevol_generado/models/games_venue.rb +204 -0
  105. data/lib/trevol_generado/models/interoperability.rb +205 -0
  106. data/lib/trevol_generado/models/interoperability_collection.rb +171 -0
  107. data/lib/trevol_generado/models/interoperability_data.rb +186 -0
  108. data/lib/trevol_generado/models/invoice_input.rb +364 -0
  109. data/lib/trevol_generado/models/invoice_list.rb +191 -0
  110. data/lib/trevol_generado/models/invoice_reference.rb +198 -0
  111. data/lib/trevol_generado/models/item.rb +439 -0
  112. data/lib/trevol_generado/models/item_allowance.rb +190 -0
  113. data/lib/trevol_generado/models/item_consignment.rb +286 -0
  114. data/lib/trevol_generado/models/item_mandator.rb +231 -0
  115. data/lib/trevol_generado/models/item_notary.rb +204 -0
  116. data/lib/trevol_generado/models/item_property.rb +223 -0
  117. data/lib/trevol_generado/models/item_tax.rb +246 -0
  118. data/lib/trevol_generado/models/item_withholding.rb +214 -0
  119. data/lib/trevol_generado/models/meter.rb +233 -0
  120. data/lib/trevol_generado/models/note_input.rb +329 -0
  121. data/lib/trevol_generado/models/numbering.rb +178 -0
  122. data/lib/trevol_generado/models/numbering_expiring_event_data.rb +209 -0
  123. data/lib/trevol_generado/models/numbering_low_event_data.rb +209 -0
  124. data/lib/trevol_generado/models/origin_note.rb +230 -0
  125. data/lib/trevol_generado/models/payment.rb +232 -0
  126. data/lib/trevol_generado/models/payment_method.rb +187 -0
  127. data/lib/trevol_generado/models/payroll.rb +455 -0
  128. data/lib/trevol_generado/models/payroll_adjustment.rb +467 -0
  129. data/lib/trevol_generado/models/payroll_adjustment_input.rb +362 -0
  130. data/lib/trevol_generado/models/payroll_adjustment_list.rb +191 -0
  131. data/lib/trevol_generado/models/payroll_basic.rb +204 -0
  132. data/lib/trevol_generado/models/payroll_compensated_vacation.rb +204 -0
  133. data/lib/trevol_generado/models/payroll_compensation.rb +205 -0
  134. data/lib/trevol_generado/models/payroll_deductions.rb +370 -0
  135. data/lib/trevol_generado/models/payroll_disability.rb +249 -0
  136. data/lib/trevol_generado/models/payroll_earnings.rb +406 -0
  137. data/lib/trevol_generado/models/payroll_employee.rb +437 -0
  138. data/lib/trevol_generado/models/payroll_employer.rb +238 -0
  139. data/lib/trevol_generado/models/payroll_epctv_bonus.rb +191 -0
  140. data/lib/trevol_generado/models/payroll_event_data.rb +303 -0
  141. data/lib/trevol_generado/models/payroll_files.rb +179 -0
  142. data/lib/trevol_generado/models/payroll_input.rb +420 -0
  143. data/lib/trevol_generado/models/payroll_leaves.rb +184 -0
  144. data/lib/trevol_generado/models/payroll_list.rb +191 -0
  145. data/lib/trevol_generado/models/payroll_loan.rb +204 -0
  146. data/lib/trevol_generado/models/payroll_novelty.rb +177 -0
  147. data/lib/trevol_generado/models/payroll_other_concept.rb +197 -0
  148. data/lib/trevol_generado/models/payroll_overtime.rb +262 -0
  149. data/lib/trevol_generado/models/payroll_paid_period.rb +222 -0
  150. data/lib/trevol_generado/models/payroll_payment.rb +215 -0
  151. data/lib/trevol_generado/models/payroll_percent_amount.rb +205 -0
  152. data/lib/trevol_generado/models/payroll_period.rb +247 -0
  153. data/lib/trevol_generado/models/payroll_place.rb +179 -0
  154. data/lib/trevol_generado/models/payroll_reference.rb +188 -0
  155. data/lib/trevol_generado/models/payroll_salary_amounts.rb +171 -0
  156. data/lib/trevol_generado/models/payroll_sanction.rb +205 -0
  157. data/lib/trevol_generado/models/payroll_service_bonus.rb +214 -0
  158. data/lib/trevol_generado/models/payroll_severance.rb +232 -0
  159. data/lib/trevol_generado/models/payroll_solidarity_fund.rb +191 -0
  160. data/lib/trevol_generado/models/payroll_totals.rb +188 -0
  161. data/lib/trevol_generado/models/payroll_transport.rb +181 -0
  162. data/lib/trevol_generado/models/payroll_unpaid_period.rb +195 -0
  163. data/lib/trevol_generado/models/payroll_vacation.rb +173 -0
  164. data/lib/trevol_generado/models/payroll_workplace.rb +188 -0
  165. data/lib/trevol_generado/models/period.rb +169 -0
  166. data/lib/trevol_generado/models/physical_document.rb +179 -0
  167. data/lib/trevol_generado/models/pos.rb +186 -0
  168. data/lib/trevol_generado/models/pos_buyer.rb +181 -0
  169. data/lib/trevol_generado/models/pos_register.rb +269 -0
  170. data/lib/trevol_generado/models/prepayment.rb +248 -0
  171. data/lib/trevol_generado/models/preview.rb +195 -0
  172. data/lib/trevol_generado/models/problem.rb +329 -0
  173. data/lib/trevol_generado/models/problem_error.rb +178 -0
  174. data/lib/trevol_generado/models/public_services_extension.rb +385 -0
  175. data/lib/trevol_generado/models/radian_event.rb +359 -0
  176. data/lib/trevol_generado/models/radian_event_data.rb +289 -0
  177. data/lib/trevol_generado/models/radian_event_input.rb +284 -0
  178. data/lib/trevol_generado/models/radian_event_invoice.rb +208 -0
  179. data/lib/trevol_generado/models/radian_event_list.rb +191 -0
  180. data/lib/trevol_generado/models/received_invoice.rb +200 -0
  181. data/lib/trevol_generado/models/received_invoice_issuer.rb +190 -0
  182. data/lib/trevol_generado/models/references.rb +182 -0
  183. data/lib/trevol_generado/models/request_list.rb +191 -0
  184. data/lib/trevol_generado/models/request_log.rb +275 -0
  185. data/lib/trevol_generado/models/seller.rb +385 -0
  186. data/lib/trevol_generado/models/shipment.rb +178 -0
  187. data/lib/trevol_generado/models/show_event.rb +276 -0
  188. data/lib/trevol_generado/models/show_extension.rb +203 -0
  189. data/lib/trevol_generado/models/show_producer.rb +212 -0
  190. data/lib/trevol_generado/models/standard_code.rb +169 -0
  191. data/lib/trevol_generado/models/stock_exchange_extension.rb +320 -0
  192. data/lib/trevol_generado/models/stock_exchange_prices.rb +169 -0
  193. data/lib/trevol_generado/models/support_adjustment_item.rb +295 -0
  194. data/lib/trevol_generado/models/support_adjustment_reference.rb +188 -0
  195. data/lib/trevol_generado/models/support_currency.rb +231 -0
  196. data/lib/trevol_generado/models/support_document.rb +401 -0
  197. data/lib/trevol_generado/models/support_document_adjustment.rb +409 -0
  198. data/lib/trevol_generado/models/support_document_adjustment_input.rb +331 -0
  199. data/lib/trevol_generado/models/support_document_adjustment_list.rb +191 -0
  200. data/lib/trevol_generado/models/support_document_delivery.rb +199 -0
  201. data/lib/trevol_generado/models/support_document_event_data.rb +305 -0
  202. data/lib/trevol_generado/models/support_document_input.rb +331 -0
  203. data/lib/trevol_generado/models/support_document_list.rb +191 -0
  204. data/lib/trevol_generado/models/support_document_reference.rb +198 -0
  205. data/lib/trevol_generado/models/support_item.rb +317 -0
  206. data/lib/trevol_generado/models/support_item_charge.rb +180 -0
  207. data/lib/trevol_generado/models/support_item_tax.rb +197 -0
  208. data/lib/trevol_generado/models/support_item_withholding.rb +205 -0
  209. data/lib/trevol_generado/models/tacit_acceptance.rb +224 -0
  210. data/lib/trevol_generado/models/tacit_acceptance_rule.rb +226 -0
  211. data/lib/trevol_generado/models/test_event_data.rb +171 -0
  212. data/lib/trevol_generado/models/third_party_charge.rb +277 -0
  213. data/lib/trevol_generado/models/third_party_company.rb +203 -0
  214. data/lib/trevol_generado/models/top_up.rb +199 -0
  215. data/lib/trevol_generado/models/top_up_buyer.rb +352 -0
  216. data/lib/trevol_generado/models/top_up_input.rb +187 -0
  217. data/lib/trevol_generado/models/top_up_wompi.rb +209 -0
  218. data/lib/trevol_generado/models/transport_extension.rb +281 -0
  219. data/lib/trevol_generado/models/webhook_delivery.rb +267 -0
  220. data/lib/trevol_generado/models/webhook_delivery_attempt.rb +192 -0
  221. data/lib/trevol_generado/models/webhook_delivery_list.rb +191 -0
  222. data/lib/trevol_generado/models/webhook_endpoint.rb +317 -0
  223. data/lib/trevol_generado/models/webhook_endpoint_input.rb +229 -0
  224. data/lib/trevol_generado/models/webhook_endpoint_list.rb +191 -0
  225. data/lib/trevol_generado/models/webhook_endpoint_rotate_input.rb +160 -0
  226. data/lib/trevol_generado/models/webhook_endpoint_update.rb +227 -0
  227. data/lib/trevol_generado/models/withholding.rb +224 -0
  228. data/lib/trevol_generado/tablas.rb +243 -0
  229. data/lib/trevol_generado/version.rb +15 -0
  230. data/lib/trevol_generado.rb +251 -0
  231. metadata +386 -0
@@ -0,0 +1,698 @@
1
+ =begin
2
+ #API de Trevol
3
+
4
+ #Trevol API. Documentación: https://platform.trevol.si/docs
5
+
6
+ The version of the OpenAPI document: 2026-10-22
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.26.0
10
+
11
+ =end
12
+
13
+ require 'cgi'
14
+
15
+ module TrevolGenerado
16
+ class EquivalentDocumentsApi
17
+ attr_accessor :api_client
18
+
19
+ def initialize(api_client = ApiClient.default)
20
+ @api_client = api_client
21
+ end
22
+ # Corregir un documento equivalente rechazado (mismo número) y reenviarlo
23
+ # Corrige un documento equivalente rechazado con el **mismo número** y lo vuelve a enviar. Con el set de pruebas en curso responde `409 invalid_state`. Solo si el documento está `rejected`, `error` o `pending`. Uno `accepted` no se corrige (se ajusta con una nota) y uno que la DIAN todavía verifica es `409 invalid_state`: espera el resultado. El `external_id` y la numeración no se cambian. Pide `Idempotency-Key`.
24
+ # @param id [String]
25
+ # @param equivalent_document_input [EquivalentDocumentInput]
26
+ # @param [Hash] opts the optional parameters
27
+ # @option opts [String] :idempotency_key Obligatoria: 1 a 255 caracteres ASCII visibles, única por pedido (7 días).
28
+ # @return [EquivalentDocument]
29
+ def correct_equivalent_document(id, equivalent_document_input, opts = {})
30
+ data, _status_code, _headers = correct_equivalent_document_with_http_info(id, equivalent_document_input, opts)
31
+ data
32
+ end
33
+
34
+ # Corregir un documento equivalente rechazado (mismo número) y reenviarlo
35
+ # Corrige un documento equivalente rechazado con el **mismo número** y lo vuelve a enviar. Con el set de pruebas en curso responde `409 invalid_state`. Solo si el documento está `rejected`, `error` o `pending`. Uno `accepted` no se corrige (se ajusta con una nota) y uno que la DIAN todavía verifica es `409 invalid_state`: espera el resultado. El `external_id` y la numeración no se cambian. Pide `Idempotency-Key`.
36
+ # @param id [String]
37
+ # @param equivalent_document_input [EquivalentDocumentInput]
38
+ # @param [Hash] opts the optional parameters
39
+ # @option opts [String] :idempotency_key Obligatoria: 1 a 255 caracteres ASCII visibles, única por pedido (7 días).
40
+ # @return [Array<(EquivalentDocument, Integer, Hash)>] EquivalentDocument data, response status code and response headers
41
+ def correct_equivalent_document_with_http_info(id, equivalent_document_input, opts = {})
42
+ if @api_client.config.debugging
43
+ @api_client.config.logger.debug 'Calling API: EquivalentDocumentsApi.correct_equivalent_document ...'
44
+ end
45
+ # verify the required parameter 'id' is set
46
+ if @api_client.config.client_side_validation && id.nil?
47
+ fail ArgumentError, "Missing the required parameter 'id' when calling EquivalentDocumentsApi.correct_equivalent_document"
48
+ end
49
+ # verify the required parameter 'equivalent_document_input' is set
50
+ if @api_client.config.client_side_validation && equivalent_document_input.nil?
51
+ fail ArgumentError, "Missing the required parameter 'equivalent_document_input' when calling EquivalentDocumentsApi.correct_equivalent_document"
52
+ end
53
+ # resource path
54
+ local_var_path = '/equivalent_documents/{id}'.sub('{id}', CGI.escape(id.to_s))
55
+
56
+ # query parameters
57
+ query_params = opts[:query_params] || {}
58
+
59
+ # header parameters
60
+ header_params = opts[:header_params] || {}
61
+ # HTTP header 'Accept' (if needed)
62
+ header_params['Accept'] = @api_client.select_header_accept(['application/json', 'application/problem+json']) unless header_params['Accept']
63
+ # HTTP header 'Content-Type'
64
+ content_type = @api_client.select_header_content_type(['application/json'])
65
+ if !content_type.nil?
66
+ header_params['Content-Type'] = content_type
67
+ end
68
+ header_params[:'Idempotency-Key'] = opts[:'idempotency_key'] if !opts[:'idempotency_key'].nil?
69
+
70
+ # form parameters
71
+ form_params = opts[:form_params] || {}
72
+
73
+ # http body (model)
74
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(equivalent_document_input)
75
+
76
+ # return_type
77
+ return_type = opts[:debug_return_type] || 'EquivalentDocument'
78
+
79
+ # auth_names
80
+ auth_names = opts[:debug_auth_names] || ['llave']
81
+
82
+ new_options = opts.merge(
83
+ :operation => :"EquivalentDocumentsApi.correct_equivalent_document",
84
+ :header_params => header_params,
85
+ :query_params => query_params,
86
+ :form_params => form_params,
87
+ :body => post_body,
88
+ :auth_names => auth_names,
89
+ :return_type => return_type
90
+ )
91
+
92
+ data, status_code, headers = @api_client.call_api(:PUT, local_var_path, new_options)
93
+ if @api_client.config.debugging
94
+ @api_client.config.logger.debug "API called: EquivalentDocumentsApi#correct_equivalent_document\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
95
+ end
96
+ return data, status_code, headers
97
+ end
98
+
99
+ # Emitir un documento equivalente
100
+ # Genera un **documento equivalente electrónico**: el tiquete POS (20, por defecto) o cualquiera de los otros nueve tipos de la tabla 16.3 (`document_type`: 25 cine, 27 espectáculos, 30 juegos, 35 transporte, 40 peajes, 45 extracto, 50 tiquete aéreo, 55 bolsa de valores, 60 servicios públicos; cada uno con su información propia en `extension`). El POS lleva su caja en `pos.register` y, si la empresa tiene varias cajas, el prefijo de su resolución en `numbering.prefix`. Se expide como la factura: PDF, ZIP y correo después del 201 (espera `equivalent_document.delivered` o consulta `delivery.status`). La contingencia 07 (documento físico) se pide con `contingency`; la 08 (la DIAN no contestó) la decide Trevol y responde `202` con `status: contingency`. En habilitación, el set de pruebas por tipo es automático: mientras la DIAN lo valida responde `202 validating` en las dos versiones y reintentar no vuelve a mandarlo. Cómo se calcula el CUDE del POS depende del despliegue del servicio, no de la empresa. **Respuestas.** `201` la DIAN lo validó (`status: accepted`). `202` solo en la versión 2026-10-22: la DIAN no contestó (`processing`), otra petición lo está enviando (`sending`) o, en habilitación, el set de pruebas todavía lo valida (`validating`, en las dos versiones); trae `Location` y `Retry-After`, y el resultado llega por GET y por webhook: **no crees otro documento para la misma operación**. `422` `validation_error` (se revisó a fondo ANTES de reservar: no se gastó el número, y `errors[]` dice el campo), `dian_rejected` (con `document` y las reglas traducidas; corrige con `PUT` y el mismo número), `company_not_enabled` o `numbering_unavailable` (con `reason`). `402` `insufficient_balance` (producción sin saldo: queda `pending` con su número). `409` `external_id_in_use` o `duplicate_document` (con `existing_id`). `503` `dian_unavailable` en la 2026-10-21. Pide `Idempotency-Key`: repetir la misma devuelve lo mismo sin enviar nada.
101
+ # @param equivalent_document_input [EquivalentDocumentInput]
102
+ # @param [Hash] opts the optional parameters
103
+ # @option opts [String] :idempotency_key Obligatoria: 1 a 255 caracteres ASCII visibles, única por pedido (7 días).
104
+ # @return [EquivalentDocument]
105
+ def create_equivalent_document(equivalent_document_input, opts = {})
106
+ data, _status_code, _headers = create_equivalent_document_with_http_info(equivalent_document_input, opts)
107
+ data
108
+ end
109
+
110
+ # Emitir un documento equivalente
111
+ # Genera un **documento equivalente electrónico**: el tiquete POS (20, por defecto) o cualquiera de los otros nueve tipos de la tabla 16.3 (&#x60;document_type&#x60;: 25 cine, 27 espectáculos, 30 juegos, 35 transporte, 40 peajes, 45 extracto, 50 tiquete aéreo, 55 bolsa de valores, 60 servicios públicos; cada uno con su información propia en &#x60;extension&#x60;). El POS lleva su caja en &#x60;pos.register&#x60; y, si la empresa tiene varias cajas, el prefijo de su resolución en &#x60;numbering.prefix&#x60;. Se expide como la factura: PDF, ZIP y correo después del 201 (espera &#x60;equivalent_document.delivered&#x60; o consulta &#x60;delivery.status&#x60;). La contingencia 07 (documento físico) se pide con &#x60;contingency&#x60;; la 08 (la DIAN no contestó) la decide Trevol y responde &#x60;202&#x60; con &#x60;status: contingency&#x60;. En habilitación, el set de pruebas por tipo es automático: mientras la DIAN lo valida responde &#x60;202 validating&#x60; en las dos versiones y reintentar no vuelve a mandarlo. Cómo se calcula el CUDE del POS depende del despliegue del servicio, no de la empresa. **Respuestas.** &#x60;201&#x60; la DIAN lo validó (&#x60;status: accepted&#x60;). &#x60;202&#x60; solo en la versión 2026-10-22: la DIAN no contestó (&#x60;processing&#x60;), otra petición lo está enviando (&#x60;sending&#x60;) o, en habilitación, el set de pruebas todavía lo valida (&#x60;validating&#x60;, en las dos versiones); trae &#x60;Location&#x60; y &#x60;Retry-After&#x60;, y el resultado llega por GET y por webhook: **no crees otro documento para la misma operación**. &#x60;422&#x60; &#x60;validation_error&#x60; (se revisó a fondo ANTES de reservar: no se gastó el número, y &#x60;errors[]&#x60; dice el campo), &#x60;dian_rejected&#x60; (con &#x60;document&#x60; y las reglas traducidas; corrige con &#x60;PUT&#x60; y el mismo número), &#x60;company_not_enabled&#x60; o &#x60;numbering_unavailable&#x60; (con &#x60;reason&#x60;). &#x60;402&#x60; &#x60;insufficient_balance&#x60; (producción sin saldo: queda &#x60;pending&#x60; con su número). &#x60;409&#x60; &#x60;external_id_in_use&#x60; o &#x60;duplicate_document&#x60; (con &#x60;existing_id&#x60;). &#x60;503&#x60; &#x60;dian_unavailable&#x60; en la 2026-10-21. Pide &#x60;Idempotency-Key&#x60;: repetir la misma devuelve lo mismo sin enviar nada.
112
+ # @param equivalent_document_input [EquivalentDocumentInput]
113
+ # @param [Hash] opts the optional parameters
114
+ # @option opts [String] :idempotency_key Obligatoria: 1 a 255 caracteres ASCII visibles, única por pedido (7 días).
115
+ # @return [Array<(EquivalentDocument, Integer, Hash)>] EquivalentDocument data, response status code and response headers
116
+ def create_equivalent_document_with_http_info(equivalent_document_input, opts = {})
117
+ if @api_client.config.debugging
118
+ @api_client.config.logger.debug 'Calling API: EquivalentDocumentsApi.create_equivalent_document ...'
119
+ end
120
+ # verify the required parameter 'equivalent_document_input' is set
121
+ if @api_client.config.client_side_validation && equivalent_document_input.nil?
122
+ fail ArgumentError, "Missing the required parameter 'equivalent_document_input' when calling EquivalentDocumentsApi.create_equivalent_document"
123
+ end
124
+ # resource path
125
+ local_var_path = '/equivalent_documents'
126
+
127
+ # query parameters
128
+ query_params = opts[:query_params] || {}
129
+
130
+ # header parameters
131
+ header_params = opts[:header_params] || {}
132
+ # HTTP header 'Accept' (if needed)
133
+ header_params['Accept'] = @api_client.select_header_accept(['application/json', 'application/problem+json']) unless header_params['Accept']
134
+ # HTTP header 'Content-Type'
135
+ content_type = @api_client.select_header_content_type(['application/json'])
136
+ if !content_type.nil?
137
+ header_params['Content-Type'] = content_type
138
+ end
139
+ header_params[:'Idempotency-Key'] = opts[:'idempotency_key'] if !opts[:'idempotency_key'].nil?
140
+
141
+ # form parameters
142
+ form_params = opts[:form_params] || {}
143
+
144
+ # http body (model)
145
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(equivalent_document_input)
146
+
147
+ # return_type
148
+ return_type = opts[:debug_return_type] || 'EquivalentDocument'
149
+
150
+ # auth_names
151
+ auth_names = opts[:debug_auth_names] || ['llave']
152
+
153
+ new_options = opts.merge(
154
+ :operation => :"EquivalentDocumentsApi.create_equivalent_document",
155
+ :header_params => header_params,
156
+ :query_params => query_params,
157
+ :form_params => form_params,
158
+ :body => post_body,
159
+ :auth_names => auth_names,
160
+ :return_type => return_type
161
+ )
162
+
163
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
164
+ if @api_client.config.debugging
165
+ @api_client.config.logger.debug "API called: EquivalentDocumentsApi#create_equivalent_document\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
166
+ end
167
+ return data, status_code, headers
168
+ end
169
+
170
+ # Archivo dian_response
171
+ # El `ApplicationResponse` con que la DIAN contestó (`application/xml`).
172
+ # @param id [String]
173
+ # @param [Hash] opts the optional parameters
174
+ # @return [File]
175
+ def download_equivalent_document_dian_response(id, opts = {})
176
+ data, _status_code, _headers = download_equivalent_document_dian_response_with_http_info(id, opts)
177
+ data
178
+ end
179
+
180
+ # Archivo dian_response
181
+ # El &#x60;ApplicationResponse&#x60; con que la DIAN contestó (&#x60;application/xml&#x60;).
182
+ # @param id [String]
183
+ # @param [Hash] opts the optional parameters
184
+ # @return [Array<(File, Integer, Hash)>] File data, response status code and response headers
185
+ def download_equivalent_document_dian_response_with_http_info(id, opts = {})
186
+ if @api_client.config.debugging
187
+ @api_client.config.logger.debug 'Calling API: EquivalentDocumentsApi.download_equivalent_document_dian_response ...'
188
+ end
189
+ # verify the required parameter 'id' is set
190
+ if @api_client.config.client_side_validation && id.nil?
191
+ fail ArgumentError, "Missing the required parameter 'id' when calling EquivalentDocumentsApi.download_equivalent_document_dian_response"
192
+ end
193
+ # resource path
194
+ local_var_path = '/equivalent_documents/{id}/dian_response'.sub('{id}', CGI.escape(id.to_s))
195
+
196
+ # query parameters
197
+ query_params = opts[:query_params] || {}
198
+
199
+ # header parameters
200
+ header_params = opts[:header_params] || {}
201
+ # HTTP header 'Accept' (if needed)
202
+ header_params['Accept'] = @api_client.select_header_accept(['application/xml', 'application/problem+json']) unless header_params['Accept']
203
+
204
+ # form parameters
205
+ form_params = opts[:form_params] || {}
206
+
207
+ # http body (model)
208
+ post_body = opts[:debug_body]
209
+
210
+ # return_type
211
+ return_type = opts[:debug_return_type] || 'File'
212
+
213
+ # auth_names
214
+ auth_names = opts[:debug_auth_names] || ['llave']
215
+
216
+ new_options = opts.merge(
217
+ :operation => :"EquivalentDocumentsApi.download_equivalent_document_dian_response",
218
+ :header_params => header_params,
219
+ :query_params => query_params,
220
+ :form_params => form_params,
221
+ :body => post_body,
222
+ :auth_names => auth_names,
223
+ :return_type => return_type
224
+ )
225
+
226
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
227
+ if @api_client.config.debugging
228
+ @api_client.config.logger.debug "API called: EquivalentDocumentsApi#download_equivalent_document_dian_response\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
229
+ end
230
+ return data, status_code, headers
231
+ end
232
+
233
+ # Archivo pdf
234
+ # La representación gráfica (`application/pdf`). Si todavía no se hizo, se genera en el momento.
235
+ # @param id [String]
236
+ # @param [Hash] opts the optional parameters
237
+ # @return [File]
238
+ def download_equivalent_document_pdf(id, opts = {})
239
+ data, _status_code, _headers = download_equivalent_document_pdf_with_http_info(id, opts)
240
+ data
241
+ end
242
+
243
+ # Archivo pdf
244
+ # La representación gráfica (&#x60;application/pdf&#x60;). Si todavía no se hizo, se genera en el momento.
245
+ # @param id [String]
246
+ # @param [Hash] opts the optional parameters
247
+ # @return [Array<(File, Integer, Hash)>] File data, response status code and response headers
248
+ def download_equivalent_document_pdf_with_http_info(id, opts = {})
249
+ if @api_client.config.debugging
250
+ @api_client.config.logger.debug 'Calling API: EquivalentDocumentsApi.download_equivalent_document_pdf ...'
251
+ end
252
+ # verify the required parameter 'id' is set
253
+ if @api_client.config.client_side_validation && id.nil?
254
+ fail ArgumentError, "Missing the required parameter 'id' when calling EquivalentDocumentsApi.download_equivalent_document_pdf"
255
+ end
256
+ # resource path
257
+ local_var_path = '/equivalent_documents/{id}/pdf'.sub('{id}', CGI.escape(id.to_s))
258
+
259
+ # query parameters
260
+ query_params = opts[:query_params] || {}
261
+
262
+ # header parameters
263
+ header_params = opts[:header_params] || {}
264
+ # HTTP header 'Accept' (if needed)
265
+ header_params['Accept'] = @api_client.select_header_accept(['application/pdf', 'application/problem+json']) unless header_params['Accept']
266
+
267
+ # form parameters
268
+ form_params = opts[:form_params] || {}
269
+
270
+ # http body (model)
271
+ post_body = opts[:debug_body]
272
+
273
+ # return_type
274
+ return_type = opts[:debug_return_type] || 'File'
275
+
276
+ # auth_names
277
+ auth_names = opts[:debug_auth_names] || ['llave']
278
+
279
+ new_options = opts.merge(
280
+ :operation => :"EquivalentDocumentsApi.download_equivalent_document_pdf",
281
+ :header_params => header_params,
282
+ :query_params => query_params,
283
+ :form_params => form_params,
284
+ :body => post_body,
285
+ :auth_names => auth_names,
286
+ :return_type => return_type
287
+ )
288
+
289
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
290
+ if @api_client.config.debugging
291
+ @api_client.config.logger.debug "API called: EquivalentDocumentsApi#download_equivalent_document_pdf\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
292
+ end
293
+ return data, status_code, headers
294
+ end
295
+
296
+ # Archivo xml
297
+ # El XML firmado que se mandó a la DIAN (`application/xml`).
298
+ # @param id [String]
299
+ # @param [Hash] opts the optional parameters
300
+ # @return [File]
301
+ def download_equivalent_document_xml(id, opts = {})
302
+ data, _status_code, _headers = download_equivalent_document_xml_with_http_info(id, opts)
303
+ data
304
+ end
305
+
306
+ # Archivo xml
307
+ # El XML firmado que se mandó a la DIAN (&#x60;application/xml&#x60;).
308
+ # @param id [String]
309
+ # @param [Hash] opts the optional parameters
310
+ # @return [Array<(File, Integer, Hash)>] File data, response status code and response headers
311
+ def download_equivalent_document_xml_with_http_info(id, opts = {})
312
+ if @api_client.config.debugging
313
+ @api_client.config.logger.debug 'Calling API: EquivalentDocumentsApi.download_equivalent_document_xml ...'
314
+ end
315
+ # verify the required parameter 'id' is set
316
+ if @api_client.config.client_side_validation && id.nil?
317
+ fail ArgumentError, "Missing the required parameter 'id' when calling EquivalentDocumentsApi.download_equivalent_document_xml"
318
+ end
319
+ # resource path
320
+ local_var_path = '/equivalent_documents/{id}/xml'.sub('{id}', CGI.escape(id.to_s))
321
+
322
+ # query parameters
323
+ query_params = opts[:query_params] || {}
324
+
325
+ # header parameters
326
+ header_params = opts[:header_params] || {}
327
+ # HTTP header 'Accept' (if needed)
328
+ header_params['Accept'] = @api_client.select_header_accept(['application/xml', 'application/problem+json']) unless header_params['Accept']
329
+
330
+ # form parameters
331
+ form_params = opts[:form_params] || {}
332
+
333
+ # http body (model)
334
+ post_body = opts[:debug_body]
335
+
336
+ # return_type
337
+ return_type = opts[:debug_return_type] || 'File'
338
+
339
+ # auth_names
340
+ auth_names = opts[:debug_auth_names] || ['llave']
341
+
342
+ new_options = opts.merge(
343
+ :operation => :"EquivalentDocumentsApi.download_equivalent_document_xml",
344
+ :header_params => header_params,
345
+ :query_params => query_params,
346
+ :form_params => form_params,
347
+ :body => post_body,
348
+ :auth_names => auth_names,
349
+ :return_type => return_type
350
+ )
351
+
352
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
353
+ if @api_client.config.debugging
354
+ @api_client.config.logger.debug "API called: EquivalentDocumentsApi#download_equivalent_document_xml\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
355
+ end
356
+ return data, status_code, headers
357
+ end
358
+
359
+ # Archivo zip
360
+ # El ZIP de entrega con el XML firmado y el PDF (`application/zip`).
361
+ # @param id [String]
362
+ # @param [Hash] opts the optional parameters
363
+ # @return [File]
364
+ def download_equivalent_document_zip(id, opts = {})
365
+ data, _status_code, _headers = download_equivalent_document_zip_with_http_info(id, opts)
366
+ data
367
+ end
368
+
369
+ # Archivo zip
370
+ # El ZIP de entrega con el XML firmado y el PDF (&#x60;application/zip&#x60;).
371
+ # @param id [String]
372
+ # @param [Hash] opts the optional parameters
373
+ # @return [Array<(File, Integer, Hash)>] File data, response status code and response headers
374
+ def download_equivalent_document_zip_with_http_info(id, opts = {})
375
+ if @api_client.config.debugging
376
+ @api_client.config.logger.debug 'Calling API: EquivalentDocumentsApi.download_equivalent_document_zip ...'
377
+ end
378
+ # verify the required parameter 'id' is set
379
+ if @api_client.config.client_side_validation && id.nil?
380
+ fail ArgumentError, "Missing the required parameter 'id' when calling EquivalentDocumentsApi.download_equivalent_document_zip"
381
+ end
382
+ # resource path
383
+ local_var_path = '/equivalent_documents/{id}/zip'.sub('{id}', CGI.escape(id.to_s))
384
+
385
+ # query parameters
386
+ query_params = opts[:query_params] || {}
387
+
388
+ # header parameters
389
+ header_params = opts[:header_params] || {}
390
+ # HTTP header 'Accept' (if needed)
391
+ header_params['Accept'] = @api_client.select_header_accept(['application/zip', 'application/problem+json']) unless header_params['Accept']
392
+
393
+ # form parameters
394
+ form_params = opts[:form_params] || {}
395
+
396
+ # http body (model)
397
+ post_body = opts[:debug_body]
398
+
399
+ # return_type
400
+ return_type = opts[:debug_return_type] || 'File'
401
+
402
+ # auth_names
403
+ auth_names = opts[:debug_auth_names] || ['llave']
404
+
405
+ new_options = opts.merge(
406
+ :operation => :"EquivalentDocumentsApi.download_equivalent_document_zip",
407
+ :header_params => header_params,
408
+ :query_params => query_params,
409
+ :form_params => form_params,
410
+ :body => post_body,
411
+ :auth_names => auth_names,
412
+ :return_type => return_type
413
+ )
414
+
415
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
416
+ if @api_client.config.debugging
417
+ @api_client.config.logger.debug "API called: EquivalentDocumentsApi#download_equivalent_document_zip\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
418
+ end
419
+ return data, status_code, headers
420
+ end
421
+
422
+ # Listar (documento equivalente)
423
+ # Paginación por cursor (`limit` hasta 100, `starting_after`) y filtros `status`, `external_id`, `created_from` y `created_to`. `status=error` trae también los que están en verificación (`processing`). Además, `document_type` filtra por tipo.
424
+ # @param [Hash] opts the optional parameters
425
+ # @option opts [Integer] :limit
426
+ # @option opts [String] :starting_after
427
+ # @option opts [String] :status
428
+ # @option opts [String] :external_id
429
+ # @option opts [String] :created_from
430
+ # @option opts [String] :created_to
431
+ # @option opts [String] :document_type
432
+ # @return [EquivalentDocumentList]
433
+ def list_equivalent_documents(opts = {})
434
+ data, _status_code, _headers = list_equivalent_documents_with_http_info(opts)
435
+ data
436
+ end
437
+
438
+ # Listar (documento equivalente)
439
+ # Paginación por cursor (&#x60;limit&#x60; hasta 100, &#x60;starting_after&#x60;) y filtros &#x60;status&#x60;, &#x60;external_id&#x60;, &#x60;created_from&#x60; y &#x60;created_to&#x60;. &#x60;status&#x3D;error&#x60; trae también los que están en verificación (&#x60;processing&#x60;). Además, &#x60;document_type&#x60; filtra por tipo.
440
+ # @param [Hash] opts the optional parameters
441
+ # @option opts [Integer] :limit
442
+ # @option opts [String] :starting_after
443
+ # @option opts [String] :status
444
+ # @option opts [String] :external_id
445
+ # @option opts [String] :created_from
446
+ # @option opts [String] :created_to
447
+ # @option opts [String] :document_type
448
+ # @return [Array<(EquivalentDocumentList, Integer, Hash)>] EquivalentDocumentList data, response status code and response headers
449
+ def list_equivalent_documents_with_http_info(opts = {})
450
+ if @api_client.config.debugging
451
+ @api_client.config.logger.debug 'Calling API: EquivalentDocumentsApi.list_equivalent_documents ...'
452
+ end
453
+ allowable_values = ["20", "25", "27", "30", "35", "40", "45", "50", "55", "60", "unknown_default_open_api"]
454
+ if @api_client.config.client_side_validation && opts[:'document_type'] && !allowable_values.include?(opts[:'document_type'])
455
+ fail ArgumentError, "invalid value for \"document_type\", must be one of #{allowable_values}"
456
+ end
457
+ # resource path
458
+ local_var_path = '/equivalent_documents'
459
+
460
+ # query parameters
461
+ query_params = opts[:query_params] || {}
462
+ query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
463
+ query_params[:'starting_after'] = opts[:'starting_after'] if !opts[:'starting_after'].nil?
464
+ query_params[:'status'] = opts[:'status'] if !opts[:'status'].nil?
465
+ query_params[:'external_id'] = opts[:'external_id'] if !opts[:'external_id'].nil?
466
+ query_params[:'created_from'] = opts[:'created_from'] if !opts[:'created_from'].nil?
467
+ query_params[:'created_to'] = opts[:'created_to'] if !opts[:'created_to'].nil?
468
+ query_params[:'document_type'] = opts[:'document_type'] if !opts[:'document_type'].nil?
469
+
470
+ # header parameters
471
+ header_params = opts[:header_params] || {}
472
+ # HTTP header 'Accept' (if needed)
473
+ header_params['Accept'] = @api_client.select_header_accept(['application/json', 'application/problem+json']) unless header_params['Accept']
474
+
475
+ # form parameters
476
+ form_params = opts[:form_params] || {}
477
+
478
+ # http body (model)
479
+ post_body = opts[:debug_body]
480
+
481
+ # return_type
482
+ return_type = opts[:debug_return_type] || 'EquivalentDocumentList'
483
+
484
+ # auth_names
485
+ auth_names = opts[:debug_auth_names] || ['llave']
486
+
487
+ new_options = opts.merge(
488
+ :operation => :"EquivalentDocumentsApi.list_equivalent_documents",
489
+ :header_params => header_params,
490
+ :query_params => query_params,
491
+ :form_params => form_params,
492
+ :body => post_body,
493
+ :auth_names => auth_names,
494
+ :return_type => return_type
495
+ )
496
+
497
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
498
+ if @api_client.config.debugging
499
+ @api_client.config.logger.debug "API called: EquivalentDocumentsApi#list_equivalent_documents\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
500
+ end
501
+ return data, status_code, headers
502
+ end
503
+
504
+ # Calcular un documento equivalente sin emitirlo
505
+ # Valida y calcula los totales **sin** reservar un número ni enviar nada. No pide `Idempotency-Key`.
506
+ # @param equivalent_document_input [EquivalentDocumentInput]
507
+ # @param [Hash] opts the optional parameters
508
+ # @return [Preview]
509
+ def preview_equivalent_document(equivalent_document_input, opts = {})
510
+ data, _status_code, _headers = preview_equivalent_document_with_http_info(equivalent_document_input, opts)
511
+ data
512
+ end
513
+
514
+ # Calcular un documento equivalente sin emitirlo
515
+ # Valida y calcula los totales **sin** reservar un número ni enviar nada. No pide &#x60;Idempotency-Key&#x60;.
516
+ # @param equivalent_document_input [EquivalentDocumentInput]
517
+ # @param [Hash] opts the optional parameters
518
+ # @return [Array<(Preview, Integer, Hash)>] Preview data, response status code and response headers
519
+ def preview_equivalent_document_with_http_info(equivalent_document_input, opts = {})
520
+ if @api_client.config.debugging
521
+ @api_client.config.logger.debug 'Calling API: EquivalentDocumentsApi.preview_equivalent_document ...'
522
+ end
523
+ # verify the required parameter 'equivalent_document_input' is set
524
+ if @api_client.config.client_side_validation && equivalent_document_input.nil?
525
+ fail ArgumentError, "Missing the required parameter 'equivalent_document_input' when calling EquivalentDocumentsApi.preview_equivalent_document"
526
+ end
527
+ # resource path
528
+ local_var_path = '/equivalent_documents/preview'
529
+
530
+ # query parameters
531
+ query_params = opts[:query_params] || {}
532
+
533
+ # header parameters
534
+ header_params = opts[:header_params] || {}
535
+ # HTTP header 'Accept' (if needed)
536
+ header_params['Accept'] = @api_client.select_header_accept(['application/json', 'application/problem+json']) unless header_params['Accept']
537
+ # HTTP header 'Content-Type'
538
+ content_type = @api_client.select_header_content_type(['application/json'])
539
+ if !content_type.nil?
540
+ header_params['Content-Type'] = content_type
541
+ end
542
+
543
+ # form parameters
544
+ form_params = opts[:form_params] || {}
545
+
546
+ # http body (model)
547
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(equivalent_document_input)
548
+
549
+ # return_type
550
+ return_type = opts[:debug_return_type] || 'Preview'
551
+
552
+ # auth_names
553
+ auth_names = opts[:debug_auth_names] || ['llave']
554
+
555
+ new_options = opts.merge(
556
+ :operation => :"EquivalentDocumentsApi.preview_equivalent_document",
557
+ :header_params => header_params,
558
+ :query_params => query_params,
559
+ :form_params => form_params,
560
+ :body => post_body,
561
+ :auth_names => auth_names,
562
+ :return_type => return_type
563
+ )
564
+
565
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
566
+ if @api_client.config.debugging
567
+ @api_client.config.logger.debug "API called: EquivalentDocumentsApi#preview_equivalent_document\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
568
+ end
569
+ return data, status_code, headers
570
+ end
571
+
572
+ # Un documento equivalente
573
+ # El documento equivalente tal como se emitió. `contingency` dice si salió en contingencia (07 u 08) y, en la 08, cuándo se mandó el respaldo POS.
574
+ # @param id [String]
575
+ # @param [Hash] opts the optional parameters
576
+ # @return [EquivalentDocument]
577
+ def retrieve_equivalent_document(id, opts = {})
578
+ data, _status_code, _headers = retrieve_equivalent_document_with_http_info(id, opts)
579
+ data
580
+ end
581
+
582
+ # Un documento equivalente
583
+ # El documento equivalente tal como se emitió. &#x60;contingency&#x60; dice si salió en contingencia (07 u 08) y, en la 08, cuándo se mandó el respaldo POS.
584
+ # @param id [String]
585
+ # @param [Hash] opts the optional parameters
586
+ # @return [Array<(EquivalentDocument, Integer, Hash)>] EquivalentDocument data, response status code and response headers
587
+ def retrieve_equivalent_document_with_http_info(id, opts = {})
588
+ if @api_client.config.debugging
589
+ @api_client.config.logger.debug 'Calling API: EquivalentDocumentsApi.retrieve_equivalent_document ...'
590
+ end
591
+ # verify the required parameter 'id' is set
592
+ if @api_client.config.client_side_validation && id.nil?
593
+ fail ArgumentError, "Missing the required parameter 'id' when calling EquivalentDocumentsApi.retrieve_equivalent_document"
594
+ end
595
+ # resource path
596
+ local_var_path = '/equivalent_documents/{id}'.sub('{id}', CGI.escape(id.to_s))
597
+
598
+ # query parameters
599
+ query_params = opts[:query_params] || {}
600
+
601
+ # header parameters
602
+ header_params = opts[:header_params] || {}
603
+ # HTTP header 'Accept' (if needed)
604
+ header_params['Accept'] = @api_client.select_header_accept(['application/json', 'application/problem+json']) unless header_params['Accept']
605
+
606
+ # form parameters
607
+ form_params = opts[:form_params] || {}
608
+
609
+ # http body (model)
610
+ post_body = opts[:debug_body]
611
+
612
+ # return_type
613
+ return_type = opts[:debug_return_type] || 'EquivalentDocument'
614
+
615
+ # auth_names
616
+ auth_names = opts[:debug_auth_names] || ['llave']
617
+
618
+ new_options = opts.merge(
619
+ :operation => :"EquivalentDocumentsApi.retrieve_equivalent_document",
620
+ :header_params => header_params,
621
+ :query_params => query_params,
622
+ :form_params => form_params,
623
+ :body => post_body,
624
+ :auth_names => auth_names,
625
+ :return_type => return_type
626
+ )
627
+
628
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
629
+ if @api_client.config.debugging
630
+ @api_client.config.logger.debug "API called: EquivalentDocumentsApi#retrieve_equivalent_document\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
631
+ end
632
+ return data, status_code, headers
633
+ end
634
+
635
+ # Reenviar una pendiente o en error
636
+ # Vuelve a enviar un documento equivalente `pending` o `error`. En contingencia devuelve el documento (lo reenvía Trevol). Con el set de pruebas en curso (`validating`) solo consulta: no lo vuelve a mandar. Sin cuerpo. Con un documento `accepted` responde `200` con el documento tal cual; con uno que la DIAN todavía verifica no reenvía nada (`202`); con uno `rejected` es `409 invalid_state` (se corrige con `PUT`). No pide `Idempotency-Key` (reintentarlo es seguro).
637
+ # @param id [String]
638
+ # @param [Hash] opts the optional parameters
639
+ # @return [EquivalentDocument]
640
+ def send_equivalent_document(id, opts = {})
641
+ data, _status_code, _headers = send_equivalent_document_with_http_info(id, opts)
642
+ data
643
+ end
644
+
645
+ # Reenviar una pendiente o en error
646
+ # Vuelve a enviar un documento equivalente &#x60;pending&#x60; o &#x60;error&#x60;. En contingencia devuelve el documento (lo reenvía Trevol). Con el set de pruebas en curso (&#x60;validating&#x60;) solo consulta: no lo vuelve a mandar. Sin cuerpo. Con un documento &#x60;accepted&#x60; responde &#x60;200&#x60; con el documento tal cual; con uno que la DIAN todavía verifica no reenvía nada (&#x60;202&#x60;); con uno &#x60;rejected&#x60; es &#x60;409 invalid_state&#x60; (se corrige con &#x60;PUT&#x60;). No pide &#x60;Idempotency-Key&#x60; (reintentarlo es seguro).
647
+ # @param id [String]
648
+ # @param [Hash] opts the optional parameters
649
+ # @return [Array<(EquivalentDocument, Integer, Hash)>] EquivalentDocument data, response status code and response headers
650
+ def send_equivalent_document_with_http_info(id, opts = {})
651
+ if @api_client.config.debugging
652
+ @api_client.config.logger.debug 'Calling API: EquivalentDocumentsApi.send_equivalent_document ...'
653
+ end
654
+ # verify the required parameter 'id' is set
655
+ if @api_client.config.client_side_validation && id.nil?
656
+ fail ArgumentError, "Missing the required parameter 'id' when calling EquivalentDocumentsApi.send_equivalent_document"
657
+ end
658
+ # resource path
659
+ local_var_path = '/equivalent_documents/{id}/send'.sub('{id}', CGI.escape(id.to_s))
660
+
661
+ # query parameters
662
+ query_params = opts[:query_params] || {}
663
+
664
+ # header parameters
665
+ header_params = opts[:header_params] || {}
666
+ # HTTP header 'Accept' (if needed)
667
+ header_params['Accept'] = @api_client.select_header_accept(['application/json', 'application/problem+json']) unless header_params['Accept']
668
+
669
+ # form parameters
670
+ form_params = opts[:form_params] || {}
671
+
672
+ # http body (model)
673
+ post_body = opts[:debug_body]
674
+
675
+ # return_type
676
+ return_type = opts[:debug_return_type] || 'EquivalentDocument'
677
+
678
+ # auth_names
679
+ auth_names = opts[:debug_auth_names] || ['llave']
680
+
681
+ new_options = opts.merge(
682
+ :operation => :"EquivalentDocumentsApi.send_equivalent_document",
683
+ :header_params => header_params,
684
+ :query_params => query_params,
685
+ :form_params => form_params,
686
+ :body => post_body,
687
+ :auth_names => auth_names,
688
+ :return_type => return_type
689
+ )
690
+
691
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
692
+ if @api_client.config.debugging
693
+ @api_client.config.logger.debug "API called: EquivalentDocumentsApi#send_equivalent_document\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
694
+ end
695
+ return data, status_code, headers
696
+ end
697
+ end
698
+ end