invoicetronic_sdk 1.7 → 1.9

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 (134) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1 -1
  3. data/Gemfile.lock +2 -2
  4. data/README.md +19 -5
  5. data/docs/Company.md +5 -5
  6. data/docs/Event.md +4 -4
  7. data/docs/ModelSend.md +20 -18
  8. data/docs/Receive.md +16 -16
  9. data/docs/ReceiveApi.md +3 -3
  10. data/docs/SendApi.md +24 -12
  11. data/docs/SendReduced.md +3 -1
  12. data/docs/Status.md +5 -1
  13. data/docs/Update.md +4 -4
  14. data/docs/WebHook.md +13 -11
  15. data/docs/WebHookHistory.md +7 -5
  16. data/docs/WebhookApi.md +7 -7
  17. data/invoicetronic_sdk.gemspec +2 -2
  18. data/lib/invoicetronic_sdk/api/company_api.rb +2 -2
  19. data/lib/invoicetronic_sdk/api/export_api.rb +2 -2
  20. data/lib/invoicetronic_sdk/api/health_api.rb +2 -2
  21. data/lib/invoicetronic_sdk/api/log_api.rb +2 -2
  22. data/lib/invoicetronic_sdk/api/receive_api.rb +8 -8
  23. data/lib/invoicetronic_sdk/api/send_api.rb +52 -14
  24. data/lib/invoicetronic_sdk/api/status_api.rb +2 -2
  25. data/lib/invoicetronic_sdk/api/update_api.rb +2 -2
  26. data/lib/invoicetronic_sdk/api/webhook_api.rb +12 -12
  27. data/lib/invoicetronic_sdk/api_client.rb +3 -3
  28. data/lib/invoicetronic_sdk/api_error.rb +2 -2
  29. data/lib/invoicetronic_sdk/api_model_base.rb +2 -2
  30. data/lib/invoicetronic_sdk/configuration.rb +2 -2
  31. data/lib/invoicetronic_sdk/models/company.rb +4 -4
  32. data/lib/invoicetronic_sdk/models/document_data.rb +2 -2
  33. data/lib/invoicetronic_sdk/models/error.rb +2 -2
  34. data/lib/invoicetronic_sdk/models/event.rb +3 -3
  35. data/lib/invoicetronic_sdk/models/model_send.rb +30 -7
  36. data/lib/invoicetronic_sdk/models/problem_details.rb +2 -2
  37. data/lib/invoicetronic_sdk/models/receive.rb +6 -6
  38. data/lib/invoicetronic_sdk/models/send_reduced.rb +52 -7
  39. data/lib/invoicetronic_sdk/models/status.rb +26 -6
  40. data/lib/invoicetronic_sdk/models/update.rb +3 -3
  41. data/lib/invoicetronic_sdk/models/web_hook.rb +21 -10
  42. data/lib/invoicetronic_sdk/models/web_hook_history.rb +16 -5
  43. data/lib/invoicetronic_sdk/version.rb +3 -3
  44. data/lib/invoicetronic_sdk.rb +2 -2
  45. data/spec/api/company_api_spec.rb +2 -2
  46. data/spec/api/export_api_spec.rb +2 -2
  47. data/spec/api/health_api_spec.rb +2 -2
  48. data/spec/api/log_api_spec.rb +2 -2
  49. data/spec/api/receive_api_spec.rb +5 -5
  50. data/spec/api/send_api_spec.rb +14 -8
  51. data/spec/api/status_api_spec.rb +2 -2
  52. data/spec/api/update_api_spec.rb +2 -2
  53. data/spec/api/webhook_api_spec.rb +7 -7
  54. data/spec/models/company_spec.rb +2 -2
  55. data/spec/models/document_data_spec.rb +2 -2
  56. data/spec/models/error_spec.rb +2 -2
  57. data/spec/models/event_spec.rb +2 -2
  58. data/spec/models/model_send_spec.rb +12 -2
  59. data/spec/models/problem_details_spec.rb +2 -2
  60. data/spec/models/receive_spec.rb +2 -2
  61. data/spec/models/send_reduced_spec.rb +12 -2
  62. data/spec/models/status_spec.rb +14 -2
  63. data/spec/models/update_spec.rb +2 -2
  64. data/spec/models/web_hook_history_spec.rb +8 -2
  65. data/spec/models/web_hook_spec.rb +8 -2
  66. data/spec/spec_helper.rb +2 -2
  67. data/vendor/bundle/ruby/3.3.0/cache/psych-5.4.0.gem +0 -0
  68. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/byebug-13.0.0/gem_make.out +5 -5
  69. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/date-3.5.1/gem_make.out +5 -5
  70. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/io-console-0.8.2/gem_make.out +5 -5
  71. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/jaro_winkler-1.5.6/gem_make.out +5 -5
  72. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/{psych-5.3.1 → psych-5.4.0}/gem_make.out +10 -10
  73. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/{psych-5.3.1 → psych-5.4.0}/psych.so +0 -0
  74. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/racc-1.8.1/gem_make.out +5 -5
  75. data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/stringio-3.2.0/gem_make.out +5 -5
  76. data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/README.md +2 -2
  77. data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/ext/psych/psych_parser.c +14 -3
  78. data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/versions.rb +1 -1
  79. data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych.so +0 -0
  80. data/vendor/bundle/ruby/3.3.0/specifications/{psych-5.3.1.gemspec → psych-5.4.0.gemspec} +2 -2
  81. metadata +74 -74
  82. data/vendor/bundle/ruby/3.3.0/cache/psych-5.3.1.gem +0 -0
  83. /data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/{psych-5.3.1 → psych-5.4.0}/gem.build_complete +0 -0
  84. /data/vendor/bundle/ruby/3.3.0/extensions/x86_64-linux/3.3.0/{psych-5.3.1 → psych-5.4.0}/mkmf.log +0 -0
  85. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/CONTRIBUTING.md +0 -0
  86. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/LICENSE +0 -0
  87. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/ext/psych/Makefile +0 -0
  88. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/ext/psych/depend +0 -0
  89. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/ext/psych/extconf.rb +0 -0
  90. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/ext/psych/psych.c +0 -0
  91. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/ext/psych/psych.h +0 -0
  92. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/ext/psych/psych_emitter.c +0 -0
  93. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/ext/psych/psych_emitter.h +0 -0
  94. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/ext/psych/psych_parser.h +0 -0
  95. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/ext/psych/psych_to_ruby.c +0 -0
  96. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/ext/psych/psych_to_ruby.h +0 -0
  97. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/ext/psych/psych_yaml_tree.c +0 -0
  98. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/ext/psych/psych_yaml_tree.h +0 -0
  99. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/class_loader.rb +0 -0
  100. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/coder.rb +0 -0
  101. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/core_ext.rb +0 -0
  102. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/exception.rb +0 -0
  103. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/handler.rb +0 -0
  104. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/handlers/document_stream.rb +0 -0
  105. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/handlers/recorder.rb +0 -0
  106. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/json/ruby_events.rb +0 -0
  107. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/json/stream.rb +0 -0
  108. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/json/tree_builder.rb +0 -0
  109. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/json/yaml_events.rb +0 -0
  110. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/nodes/alias.rb +0 -0
  111. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/nodes/document.rb +0 -0
  112. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/nodes/mapping.rb +0 -0
  113. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/nodes/node.rb +0 -0
  114. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/nodes/scalar.rb +0 -0
  115. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/nodes/sequence.rb +0 -0
  116. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/nodes/stream.rb +0 -0
  117. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/nodes.rb +0 -0
  118. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/omap.rb +0 -0
  119. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/parser.rb +0 -0
  120. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/scalar_scanner.rb +0 -0
  121. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/set.rb +0 -0
  122. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/stream.rb +0 -0
  123. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/streaming.rb +0 -0
  124. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/syntax_error.rb +0 -0
  125. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/tree_builder.rb +0 -0
  126. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/visitors/depth_first.rb +0 -0
  127. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/visitors/emitter.rb +0 -0
  128. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/visitors/json_tree.rb +0 -0
  129. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/visitors/to_ruby.rb +0 -0
  130. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/visitors/visitor.rb +0 -0
  131. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/visitors/yaml_tree.rb +0 -0
  132. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/visitors.rb +0 -0
  133. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych/y.rb +0 -0
  134. /data/vendor/bundle/ruby/3.3.0/gems/{psych-5.3.1 → psych-5.4.0}/lib/psych.rb +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 50f6b71fbd341a92f66690d771c773b4f046e57bdffe270daf4f6e58f21beade
4
- data.tar.gz: 7950a17f414a66064935dcb3159086fa900534122286939ff714b907ff29aa99
3
+ metadata.gz: 26528c2b72851b8fb80fa975a54ec6ce01f0fcaa22ec0e857f35ae63d9c57a4a
4
+ data.tar.gz: 1917ebcb258bf9d1c47283766f831962d56eb16d53dd6402fe055f8bbddab890
5
5
  SHA512:
6
- metadata.gz: 7876619080be87e4be2e60a06e58582ac9ac8139ab7064ae851cca47f103920c5deee3bfb4a5d376b5c70f6e27076470960d529e9a693db80979f1dcd149913b
7
- data.tar.gz: 43e3594858513d494829eeb8fca837a808437ca62764dfdb5099f3415fb724245064fcbebddb8f4e608b676927a1a6b65c9410b5c472b93906ead0d9882712e0
6
+ metadata.gz: 546eb1877c9bc3ad20524bb3dabe8937aa80be36c2bdb61801e31271ba0b0b67a1b8fc1b1f3e5a33796894d8d7c3adeda23528226af256df235c9c0d44266d69
7
+ data.tar.gz: af27a9504e4d19069967b21071e6f7913b20c52b9b74f6425d1763a774b9bc1bb3430a189b6d65805294c3192a5d729b06143c0d3b329cbf16afd906b54ec53a
data/CHANGELOG.md CHANGED
@@ -1 +1 @@
1
- # Changelog\n\n## [1.7.0] - 2026-04-02\nSee main repository changelog for details.
1
+ # Changelog\n\n## [1.9.0] - 2026-07-07\nSee main repository changelog for details.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- invoicetronic_sdk (1.7)
4
+ invoicetronic_sdk (1.9)
5
5
  typhoeus (~> 1.0, >= 1.0.1)
6
6
 
7
7
  GEM
@@ -42,7 +42,7 @@ GEM
42
42
  pry-byebug (3.12.0)
43
43
  byebug (~> 13.0)
44
44
  pry (>= 0.13, < 0.17)
45
- psych (5.3.1)
45
+ psych (5.4.0)
46
46
  date
47
47
  stringio
48
48
  racc (1.8.1)
data/README.md CHANGED
@@ -4,13 +4,27 @@ The [Invoicetronic API][2] is a RESTful service that allows you to send and rece
4
4
 
5
5
  For more information, see [Invoicetronic website][2]
6
6
 
7
+ ## Before you start
8
+
9
+ For the full integration guide, tutorials, SDKs and quickstarts, see the **[Documentation](https://invoicetronic.com/en/docs/)**. A few cross-cutting topics worth knowing before integrating:
10
+
11
+ - **[Prerequisites](https://invoicetronic.com/en/docs/prerequisites/)** — what you need to start in Sandbox and what's required to move to production.
12
+ - **[API Keys](https://invoicetronic.com/en/docs/apikeys/)** — how `ik_live_` and `ik_test_` keys select the environment.
13
+ - **[Sandbox](https://invoicetronic.com/en/docs/sandbox/)** — free test environment that mirrors the live workflow, with no credits consumed.
14
+ - **[Rate Limiting](https://invoicetronic.com/en/docs/ratelimiting/)** — per-second, per-minute and per-day limits; how to handle `429 Too Many Requests`.
15
+ - **[Pagination](https://invoicetronic.com/en/docs/pagination/)** — `page` and `page_size` parameters and the `Invoicetronic-Total-Count` response header.
16
+ - **[CORS](https://invoicetronic.com/en/docs/cors/)** — calling the API from the browser; allowed origins are configured per key.
17
+ - **[Webhooks](https://invoicetronic.com/en/docs/webhooks/)** — real-time event notifications with HMAC-SHA256 signature validation.
18
+ - **[Localization](https://invoicetronic.com/en/docs/accept-language/)** — use the `Accept-Language` header to receive error messages in Italian, English or German.
19
+
7
20
  [1]: https://www.fatturapa.gov.it/it/sistemainterscambio/cose-il-sdi/
8
21
  [2]: https://invoicetronic.com/
9
22
 
23
+
10
24
  This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
11
25
 
12
- - API version: 1.6.4
13
- - Package version: 1.7
26
+ - API version: 1.14.0
27
+ - Package version: 1.9
14
28
  - Generator version: 7.20.0
15
29
  - Build package: org.openapitools.codegen.languages.RubyClientCodegen
16
30
  For more information, please visit [https://invoicetronic.com/en/contact/](https://invoicetronic.com/en/contact/)
@@ -28,16 +42,16 @@ gem build invoicetronic_sdk.gemspec
28
42
  Then either install the gem locally:
29
43
 
30
44
  ```shell
31
- gem install ./invoicetronic_sdk-1.7.gem
45
+ gem install ./invoicetronic_sdk-1.9.gem
32
46
  ```
33
47
 
34
- (for development, run `gem install --dev ./invoicetronic_sdk-1.7.gem` to install the development dependencies)
48
+ (for development, run `gem install --dev ./invoicetronic_sdk-1.9.gem` to install the development dependencies)
35
49
 
36
50
  or publish the gem to a gem hosting service, e.g. [RubyGems](https://rubygems.org/).
37
51
 
38
52
  Finally add this to the Gemfile:
39
53
 
40
- gem 'invoicetronic_sdk', '~> 1.7'
54
+ gem 'invoicetronic_sdk', '~> 1.9'
41
55
 
42
56
  ### Install from Git
43
57
 
data/docs/Company.md CHANGED
@@ -4,10 +4,10 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **id** | **Integer** | Unique identifier. Leave it at 0 for new records as it will be set automatically. | [optional] |
8
- | **created** | **Time** | Creation date. It is set automatically. | [optional] |
9
- | **version** | **Integer** | Row version, for optimistic concurrency. It is set automatically. | [optional] |
10
- | **user_id** | **Integer** | User id. | [optional] |
7
+ | **id** | **Integer** | Unique identifier. For POST requests, leave it at &#x60;0&#x60; the server will assign one automatically. For PUT requests, set it to the id of the record you want to update. | [optional] |
8
+ | **created** | **Time** | Creation date. It is set automatically. | [optional][readonly] |
9
+ | **version** | **Integer** | Row version, for optimistic concurrency. It is set automatically. | [optional][readonly] |
10
+ | **user_id** | **Integer** | User id. It is set automatically based on the authenticated user. | [optional][readonly] |
11
11
  | **vat** | **String** | Vat number. Must include the country code. | |
12
12
  | **fiscal_code** | **String** | Fiscal code. In most cases it&#39;s the same as the vat number. | |
13
13
  | **name** | **String** | Name | |
@@ -18,7 +18,7 @@
18
18
  require 'invoicetronic_sdk'
19
19
 
20
20
  instance = Invoicetronic_Sdk::Company.new(
21
- id: null,
21
+ id: 0,
22
22
  created: null,
23
23
  version: null,
24
24
  user_id: null,
data/docs/Event.md CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **id** | **Integer** | Unique identifier. Leave it at 0 for new records as it will be set automatically. | [optional] |
8
- | **created** | **Time** | Creation date. It is set automatically. | [optional] |
9
- | **version** | **Integer** | Row version, for optimistic concurrency. It is set automatically. | [optional] |
7
+ | **id** | **Integer** | Unique identifier. For POST requests, leave it at &#x60;0&#x60; the server will assign one automatically. For PUT requests, set it to the id of the record you want to update. | [optional] |
8
+ | **created** | **Time** | Creation date. It is set automatically. | [optional][readonly] |
9
+ | **version** | **Integer** | Row version, for optimistic concurrency. It is set automatically. | [optional][readonly] |
10
10
  | **user_id** | **Integer** | User id. | [optional] |
11
11
  | **api_key_id** | **Integer** | Api key id. | [optional] |
12
12
  | **company_id** | **Integer** | Company id. | [optional] |
@@ -28,7 +28,7 @@
28
28
  require 'invoicetronic_sdk'
29
29
 
30
30
  instance = Invoicetronic_Sdk::Event.new(
31
- id: null,
31
+ id: 0,
32
32
  created: null,
33
33
  version: null,
34
34
  user_id: null,
data/docs/ModelSend.md CHANGED
@@ -4,23 +4,24 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **id** | **Integer** | Unique identifier. Leave it at 0 for new records as it will be set automatically. | [optional] |
8
- | **created** | **Time** | Creation date. It is set automatically. | [optional] |
9
- | **version** | **Integer** | Row version, for optimistic concurrency. It is set automatically. | [optional] |
10
- | **user_id** | **Integer** | User id. | [optional] |
11
- | **company_id** | **Integer** | Company id. On send, this is the sender and must be set in advance. On receive, it will be automatically set based on the recipient&#39;s VAT number. If a matching company is not found, the invoice will be rejected until the company is created. | [optional] |
12
- | **committente** | **String** | VAT number of the Cessionario/Committente (customer). This is automatically set based on the recipient&#39;s VAT number. | [optional] |
13
- | **prestatore** | **String** | VAT number of the Cedente/Prestatore (vendor). This is automatically set based on the sender&#39;s VAT number. | [optional] |
14
- | **identifier** | **String** | SDI identifier. This is set by the SDI and is guaranteed to be unique within the SDI system. | [optional] |
15
- | **file_name** | **String** | Xml file name. | [optional] |
7
+ | **id** | **Integer** | Unique identifier. For POST requests, leave it at &#x60;0&#x60; the server will assign one automatically. For PUT requests, set it to the id of the record you want to update. | [optional] |
8
+ | **created** | **Time** | Creation date. It is set automatically. | [optional][readonly] |
9
+ | **version** | **Integer** | Row version, for optimistic concurrency. It is set automatically. | [optional][readonly] |
10
+ | **user_id** | **Integer** | User id. It is set automatically based on the authenticated user. | [optional][readonly] |
11
+ | **company_id** | **Integer** | Company id. It is set automatically based on the VAT number extracted from the invoice payload (the sender for &#x60;send&#x60;, the recipient for &#x60;receive&#x60;). | [optional][readonly] |
12
+ | **committente** | **String** | VAT number of the Cessionario/Committente (customer). This is automatically set based on the recipient&#39;s VAT number. | [optional][readonly] |
13
+ | **prestatore** | **String** | VAT number of the Cedente/Prestatore (vendor). This is automatically set based on the sender&#39;s VAT number. | [optional][readonly] |
14
+ | **identifier** | **String** | SDI identifier. This is set by the SDI and is guaranteed to be unique within the SDI system. | [optional][readonly] |
15
+ | **file_name** | **String** | Xml file name. If not provided on send, it will be auto-generated. | [optional] |
16
16
  | **format** | **String** | SDI format (FPA12, FPR12, FSM10, ...) | [optional] |
17
17
  | **payload** | **String** | Xml payload. This is the actual xml content, as string. On send, it can be base64 encoded. If it&#39;s not, it will be encoded before sending. It is guaranteed to be encrypted at rest. | |
18
- | **last_update** | **Time** | Last update from SDI. | [optional] |
19
- | **date_sent** | **Time** | When the invoice was sent to SDI. | [optional] |
20
- | **documents** | [**Array&lt;DocumentData&gt;**](DocumentData.md) | The invoices included in the payload. This is set by the system, based on the xml content. | [optional] |
18
+ | **last_update** | **Time** | Last update from SDI. | [optional][readonly] |
19
+ | **date_sent** | **Time** | When the invoice was sent to SDI. | [optional][readonly] |
20
+ | **documents** | [**Array&lt;DocumentData&gt;**](DocumentData.md) | The invoices included in the payload. This is set by the system, based on the xml content. | [optional][readonly] |
21
21
  | **encoding** | **String** | Whether the payload is Base64 encoded or a plain XML (text). | [optional] |
22
- | **nome_committente** | **String** | Business name of the committente (client/buyer) extracted from the invoice XML. | [optional] |
22
+ | **nome_committente** | **String** | Business name of the committente (client/buyer) extracted from the invoice XML. | [optional][readonly] |
23
23
  | **meta_data** | **Hash&lt;String, String&gt;** | Optional metadata, as json. | [optional] |
24
+ | **latest_state** | **String** | Current SDI state of the invoice. Reflects the most recent update received from SDI. Null when no update has been received yet. | [optional][readonly] |
24
25
  | **company** | [**Company**](Company.md) | | [optional] |
25
26
 
26
27
  ## Example
@@ -29,7 +30,7 @@
29
30
  require 'invoicetronic_sdk'
30
31
 
31
32
  instance = Invoicetronic_Sdk::ModelSend.new(
32
- id: null,
33
+ id: 0,
33
34
  created: null,
34
35
  version: null,
35
36
  user_id: null,
@@ -37,15 +38,16 @@ instance = Invoicetronic_Sdk::ModelSend.new(
37
38
  committente: null,
38
39
  prestatore: null,
39
40
  identifier: null,
40
- file_name: null,
41
- format: null,
42
- payload: null,
41
+ file_name: IT01180680397ITRON_00001.xml,
42
+ format: FPR12,
43
+ payload: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cDpGYXR0dXJhRWxldHRyb25pY2EgLi4uPjwvcDpGYXR0dXJhRWxldHRyb25pY2E+,
43
44
  last_update: null,
44
45
  date_sent: null,
45
46
  documents: null,
46
47
  encoding: null,
47
48
  nome_committente: null,
48
- meta_data: null,
49
+ meta_data: {&quot;order_id&quot;:&quot;ORD-123&quot;},
50
+ latest_state: null,
49
51
  company: null
50
52
  )
51
53
  ```
data/docs/Receive.md CHANGED
@@ -4,20 +4,20 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **id** | **Integer** | Unique identifier. Leave it at 0 for new records as it will be set automatically. | [optional] |
8
- | **created** | **Time** | Creation date. It is set automatically. | [optional] |
9
- | **version** | **Integer** | Row version, for optimistic concurrency. It is set automatically. | [optional] |
10
- | **user_id** | **Integer** | User id. | [optional] |
11
- | **company_id** | **Integer** | Company id. On send, this is the sender and must be set in advance. On receive, it will be automatically set based on the recipient&#39;s VAT number. If a matching company is not found, the invoice will be rejected until the company is created. | [optional] |
12
- | **committente** | **String** | VAT number of the Cessionario/Committente (customer). This is automatically set based on the recipient&#39;s VAT number. | [optional] |
13
- | **prestatore** | **String** | VAT number of the Cedente/Prestatore (vendor). This is automatically set based on the sender&#39;s VAT number. | [optional] |
14
- | **identifier** | **String** | SDI identifier. This is set by the SDI and is guaranteed to be unique within the SDI system. | [optional] |
15
- | **file_name** | **String** | Xml file name. | [optional] |
7
+ | **id** | **Integer** | Unique identifier. For POST requests, leave it at &#x60;0&#x60; the server will assign one automatically. For PUT requests, set it to the id of the record you want to update. | [optional] |
8
+ | **created** | **Time** | Creation date. It is set automatically. | [optional][readonly] |
9
+ | **version** | **Integer** | Row version, for optimistic concurrency. It is set automatically. | [optional][readonly] |
10
+ | **user_id** | **Integer** | User id. It is set automatically based on the authenticated user. | [optional][readonly] |
11
+ | **company_id** | **Integer** | Company id. It is set automatically based on the VAT number extracted from the invoice payload (the sender for &#x60;send&#x60;, the recipient for &#x60;receive&#x60;). | [optional][readonly] |
12
+ | **committente** | **String** | VAT number of the Cessionario/Committente (customer). This is automatically set based on the recipient&#39;s VAT number. | [optional][readonly] |
13
+ | **prestatore** | **String** | VAT number of the Cedente/Prestatore (vendor). This is automatically set based on the sender&#39;s VAT number. | [optional][readonly] |
14
+ | **identifier** | **String** | SDI identifier. This is set by the SDI and is guaranteed to be unique within the SDI system. | [optional][readonly] |
15
+ | **file_name** | **String** | Xml file name. If not provided on send, it will be auto-generated. | [optional] |
16
16
  | **format** | **String** | SDI format (FPA12, FPR12, FSM10, ...) | [optional] |
17
17
  | **payload** | **String** | Xml payload. This is the actual xml content, as string. On send, it can be base64 encoded. If it&#39;s not, it will be encoded before sending. It is guaranteed to be encrypted at rest. | |
18
- | **last_update** | **Time** | Last update from SDI. | [optional] |
19
- | **date_sent** | **Time** | When the invoice was sent to SDI. | [optional] |
20
- | **documents** | [**Array&lt;DocumentData&gt;**](DocumentData.md) | The invoices included in the payload. This is set by the system, based on the xml content. | [optional] |
18
+ | **last_update** | **Time** | Last update from SDI. | [optional][readonly] |
19
+ | **date_sent** | **Time** | When the invoice was sent to SDI. | [optional][readonly] |
20
+ | **documents** | [**Array&lt;DocumentData&gt;**](DocumentData.md) | The invoices included in the payload. This is set by the system, based on the xml content. | [optional][readonly] |
21
21
  | **encoding** | **String** | Whether the payload is Base64 encoded or a plain XML (text). | [optional] |
22
22
  | **nome_prestatore** | **String** | Business name of the prestatore (supplier/seller) extracted from the invoice XML. | [optional] |
23
23
  | **is_read** | **Boolean** | Whether the invoice has been read at least once. Set to true only when the invoice is requested with include_payload&#x3D;true. | [optional] |
@@ -29,7 +29,7 @@
29
29
  require 'invoicetronic_sdk'
30
30
 
31
31
  instance = Invoicetronic_Sdk::Receive.new(
32
- id: null,
32
+ id: 0,
33
33
  created: null,
34
34
  version: null,
35
35
  user_id: null,
@@ -37,9 +37,9 @@ instance = Invoicetronic_Sdk::Receive.new(
37
37
  committente: null,
38
38
  prestatore: null,
39
39
  identifier: null,
40
- file_name: null,
41
- format: null,
42
- payload: null,
40
+ file_name: IT01180680397ITRON_00001.xml,
41
+ format: FPR12,
42
+ payload: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cDpGYXR0dXJhRWxldHRyb25pY2EgLi4uPjwvcDpGYXR0dXJhRWxldHRyb25pY2E+,
43
43
  last_update: null,
44
44
  date_sent: null,
45
45
  documents: null,
data/docs/ReceiveApi.md CHANGED
@@ -16,7 +16,7 @@ All URIs are relative to *http://localhost*
16
16
 
17
17
  List incoming invoices
18
18
 
19
- Retrieve a paginated list of receive invoices. Results can be filtered by various criteria such as company, date ranges, sender, document number, and free-text search (`q`). Returns invoice metadata; set `include_payload` to true to include the full invoice content. Invoices are marked as read (`is_read` = true) only when `include_payload` is true. **Receive** invoices are inbound purchase invoices received from suppliers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 24 hours in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/).
19
+ Retrieve a paginated list of receive invoices. Results can be filtered by various criteria such as company, date ranges, sender, document number, and free-text search (`q`). Returns invoice metadata; set `include_payload` to true to include the full invoice content. Invoices are marked as read (`is_read` = true) only when `include_payload` is true. **Receive** invoices are inbound purchase invoices received from suppliers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 24 hours in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/). Inbound invoices are routed to your account via the recipient VAT number, so the recipient company must exist in Invoicetronic for the invoice to be matched. If an invoice arrives before its company has been registered, it is held by our SDI infrastructure and automatically re-processed once the company is created—no invoice is lost. See [Prerequisites](https://invoicetronic.com/en/docs/prerequisites/) for the recommended setup order.
20
20
 
21
21
  ### Examples
22
22
 
@@ -122,7 +122,7 @@ end
122
122
 
123
123
  Delete an incoming invoice by id
124
124
 
125
- Permanently delete a receive invoice by its internal id. This action cannot be undone. **Receive** invoices are inbound purchase invoices received from suppliers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 24 hours in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/).
125
+ Permanently delete a receive invoice by its internal id. This action cannot be undone. **Receive** invoices are inbound purchase invoices received from suppliers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 24 hours in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/). Inbound invoices are routed to your account via the recipient VAT number, so the recipient company must exist in Invoicetronic for the invoice to be matched. If an invoice arrives before its company has been registered, it is held by our SDI infrastructure and automatically re-processed once the company is created—no invoice is lost. See [Prerequisites](https://invoicetronic.com/en/docs/prerequisites/) for the recommended setup order.
126
126
 
127
127
  ### Examples
128
128
 
@@ -192,7 +192,7 @@ end
192
192
 
193
193
  Get an incoming invoice by id
194
194
 
195
- Retrieve an incoming invoice by its internal id. The `id` is unique and assigned by the system when the invoice is received. Returns invoice metadata; set `include_payload` to true to include the full invoice content. The invoice is marked as read (`is_read` = true) only when `include_payload` is true. **Receive** invoices are inbound purchase invoices received from suppliers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 24 hours in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/).
195
+ Retrieve an incoming invoice by its internal id. The `id` is unique and assigned by the system when the invoice is received. Returns invoice metadata; set `include_payload` to true to include the full invoice content. The invoice is marked as read (`is_read` = true) only when `include_payload` is true. **Receive** invoices are inbound purchase invoices received from suppliers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 24 hours in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/). Inbound invoices are routed to your account via the recipient VAT number, so the recipient company must exist in Invoicetronic for the invoice to be matched. If an invoice arrives before its company has been registered, it is held by our SDI infrastructure and automatically re-processed once the company is created—no invoice is lost. See [Prerequisites](https://invoicetronic.com/en/docs/prerequisites/) for the recommended setup order.
196
196
 
197
197
  ### Examples
198
198
 
data/docs/SendApi.md CHANGED
@@ -24,7 +24,7 @@ All URIs are relative to *http://localhost*
24
24
 
25
25
  Add an invoice by file
26
26
 
27
- Add a new invoice by uploading a file. Supported formats are XML (FatturaPA) and P7M (signed). The invoice will be signed (if requested), validated (if requested), and queued for delivery to SDI. Status updates from SDI will be available in the `update` endpoint. **Send** invoices are outbound sales invoices transmitted to customers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 15 days in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/). You can also upload invoices via the [Dashboard](https://dashboard.invoicetronic.com).
27
+ Add a new invoice by uploading a file. Supported formats are XML (FatturaPA) and P7M (signed). The invoice will be signed (if requested), validated (if requested), and queued for delivery to SDI. Status updates from SDI will be available in the `update` endpoint. **Send** invoices are outbound sales invoices transmitted to customers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 15 days in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/). You can also upload invoices via the [Dashboard](https://dashboard.invoicetronic.com). ### Idempotency To protect against duplicate submissions caused by network retries, you can send an optional `Idempotency-Key` header with any unique, client-generated value (up to 255 characters). - The first request with a given key is processed normally, and its response (status, body and `Location`) is stored for 24 hours. - Any subsequent request that reuses the same key within that window replays the original response instead of sending a second invoice to SDI. - If a request with the same key is still being processed, the retry receives `409 Conflict`. - If the same key is reused with a **different** invoice payload, the request is rejected with `422 Unprocessable Entity`: a given key must always map to the same request. Keys are scoped per account, so different accounts can use the same key value without interfering. If the idempotency store is temporarily unavailable, the request is processed normally without idempotency protection.
28
28
 
29
29
  ### Examples
30
30
 
@@ -42,7 +42,8 @@ api_instance = Invoicetronic_Sdk::SendApi.new
42
42
  file = File.new('/path/to/some/file') # File |
43
43
  opts = {
44
44
  validate: true, # Boolean | Validate the document first, and reject it on failure.
45
- signature: 'None' # String | Whether to digitally sign the document.
45
+ signature: 'None', # String | Whether to digitally sign the document.
46
+ idempotency_key: 'idempotency_key_example' # String | Optional client-generated key that makes the submission idempotent. Retrying the same request with the same key within 24 hours returns the original response instead of creating a duplicate invoice.
46
47
  }
47
48
 
48
49
  begin
@@ -79,6 +80,7 @@ end
79
80
  | **file** | **File** | | |
80
81
  | **validate** | **Boolean** | Validate the document first, and reject it on failure. | [optional][default to false] |
81
82
  | **signature** | **String** | Whether to digitally sign the document. | [optional][default to &#39;Auto&#39;] |
83
+ | **idempotency_key** | **String** | Optional client-generated key that makes the submission idempotent. Retrying the same request with the same key within 24 hours returns the original response instead of creating a duplicate invoice. | [optional] |
82
84
 
83
85
  ### Return type
84
86
 
@@ -100,7 +102,7 @@ end
100
102
 
101
103
  List invoices
102
104
 
103
- Retrieve a paginated list of send invoices. Results can be filtered by various criteria such as company, date ranges, document number, and free-text search (`q`). Returns invoice metadata; set `include_payload` to true to include the full invoice content. **Send** invoices are outbound sales invoices transmitted to customers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 15 days in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/).
105
+ Retrieve a paginated list of send invoices. Results can be filtered by various criteria such as company, date ranges, document number, current SDI state (`latest_state`), and free-text search (`q`). Use `ids` to fetch specific Send records in a single call (comma-separated, up to 100). Returns invoice metadata; set `include_payload` to true to include the full invoice content. **Send** invoices are outbound sales invoices transmitted to customers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 15 days in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/).
104
106
 
105
107
  ### Examples
106
108
 
@@ -128,7 +130,9 @@ opts = {
128
130
  document_date_from: Time.parse('2013-10-20T19:20:30+01:00'), # Time | UTC ISO 8601 (2024-11-29T12:34:56Z)
129
131
  document_date_to: Time.parse('2013-10-20T19:20:30+01:00'), # Time | UTC ISO 8601 (2024-11-29T12:34:56Z)
130
132
  document_number: 'document_number_example', # String | Document number.
133
+ latest_state: 'Inviato', # String | Filter by the most recent SDI state for the invoice. Matches the `latest_state` field exposed inline on each Send.
131
134
  include_payload: true, # Boolean | Include payload in the response. Defaults to false.
135
+ ids: 'ids_example', # String | Comma-separated list of Send ids (max 100). Filters the collection to the matching rows; unknown or unauthorized ids are silently skipped.
132
136
  page: 56, # Integer | Page number.
133
137
  page_size: 56, # Integer | Items per page. Cannot be greater than 200.
134
138
  sort: 'sort_example', # String | Sort by field. Prefix with '-' for descending order.
@@ -178,7 +182,9 @@ end
178
182
  | **document_date_from** | **Time** | UTC ISO 8601 (2024-11-29T12:34:56Z) | [optional] |
179
183
  | **document_date_to** | **Time** | UTC ISO 8601 (2024-11-29T12:34:56Z) | [optional] |
180
184
  | **document_number** | **String** | Document number. | [optional] |
185
+ | **latest_state** | **String** | Filter by the most recent SDI state for the invoice. Matches the &#x60;latest_state&#x60; field exposed inline on each Send. | [optional] |
181
186
  | **include_payload** | **Boolean** | Include payload in the response. Defaults to false. | [optional] |
187
+ | **ids** | **String** | Comma-separated list of Send ids (max 100). Filters the collection to the matching rows; unknown or unauthorized ids are silently skipped. | [optional] |
182
188
  | **page** | **Integer** | Page number. | [optional][default to 1] |
183
189
  | **page_size** | **Integer** | Items per page. Cannot be greater than 200. | [optional][default to 100] |
184
190
  | **sort** | **String** | Sort by field. Prefix with &#39;-&#39; for descending order. | [optional] |
@@ -421,7 +427,7 @@ end
421
427
 
422
428
  Add an invoice by json
423
429
 
424
- Add a new invoice using a FatturaPA JSON representation. The invoice will be signed (if requested), validated (if requested), and queued for delivery to SDI. Status updates from SDI will be available in the `update` endpoint. **Send** invoices are outbound sales invoices transmitted to customers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 15 days in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/). You can also upload invoices via the [Dashboard](https://dashboard.invoicetronic.com).
430
+ Add a new invoice using a FatturaPA JSON representation. Property names mirror the FatturaPA XML schema (PascalCase, e.g. `FatturaElettronicaHeader`). The invoice will be signed (if requested), validated (if requested), and queued for delivery to SDI. Status updates from SDI will be available in the `update` endpoint. **Send** invoices are outbound sales invoices transmitted to customers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 15 days in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/). You can also upload invoices via the [Dashboard](https://dashboard.invoicetronic.com). ### Idempotency To protect against duplicate submissions caused by network retries, you can send an optional `Idempotency-Key` header with any unique, client-generated value (up to 255 characters). - The first request with a given key is processed normally, and its response (status, body and `Location`) is stored for 24 hours. - Any subsequent request that reuses the same key within that window replays the original response instead of sending a second invoice to SDI. - If a request with the same key is still being processed, the retry receives `409 Conflict`. - If the same key is reused with a **different** invoice payload, the request is rejected with `422 Unprocessable Entity`: a given key must always map to the same request. Keys are scoped per account, so different accounts can use the same key value without interfering. If the idempotency store is temporarily unavailable, the request is processed normally without idempotency protection.
425
431
 
426
432
  ### Examples
427
433
 
@@ -439,7 +445,8 @@ api_instance = Invoicetronic_Sdk::SendApi.new
439
445
  body = { ... } # Object |
440
446
  opts = {
441
447
  validate: true, # Boolean | Validate the document first, and reject it on failure.
442
- signature: 'None' # String | Whether to digitally sign the document.
448
+ signature: 'None', # String | Whether to digitally sign the document.
449
+ idempotency_key: 'idempotency_key_example' # String | Optional client-generated key that makes the submission idempotent. Retrying the same request with the same key within 24 hours returns the original response instead of creating a duplicate invoice.
443
450
  }
444
451
 
445
452
  begin
@@ -476,6 +483,7 @@ end
476
483
  | **body** | **Object** | | |
477
484
  | **validate** | **Boolean** | Validate the document first, and reject it on failure. | [optional][default to false] |
478
485
  | **signature** | **String** | Whether to digitally sign the document. | [optional][default to &#39;Auto&#39;] |
486
+ | **idempotency_key** | **String** | Optional client-generated key that makes the submission idempotent. Retrying the same request with the same key within 24 hours returns the original response instead of creating a duplicate invoice. | [optional] |
479
487
 
480
488
  ### Return type
481
489
 
@@ -497,7 +505,7 @@ end
497
505
 
498
506
  Add an invoice
499
507
 
500
- Add a new invoice using a structured Send object. The invoice will be signed (if requested), validated (if requested), and queued for delivery to SDI. Status updates from SDI will be available in the `update` endpoint. **Send** invoices are outbound sales invoices transmitted to customers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 15 days in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/). You can also upload invoices via the [Dashboard](https://dashboard.invoicetronic.com).
508
+ Add a new invoice using a structured Send object. The invoice will be signed (if requested), validated (if requested), and queued for delivery to SDI. Status updates from SDI will be available in the `update` endpoint. **Send** invoices are outbound sales invoices transmitted to customers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 15 days in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/). You can also upload invoices via the [Dashboard](https://dashboard.invoicetronic.com). ### Idempotency To protect against duplicate submissions caused by network retries, you can send an optional `Idempotency-Key` header with any unique, client-generated value (up to 255 characters). - The first request with a given key is processed normally, and its response (status, body and `Location`) is stored for 24 hours. - Any subsequent request that reuses the same key within that window replays the original response instead of sending a second invoice to SDI. - If a request with the same key is still being processed, the retry receives `409 Conflict`. - If the same key is reused with a **different** invoice payload, the request is rejected with `422 Unprocessable Entity`: a given key must always map to the same request. Keys are scoped per account, so different accounts can use the same key value without interfering. If the idempotency store is temporarily unavailable, the request is processed normally without idempotency protection.
501
509
 
502
510
  ### Examples
503
511
 
@@ -512,10 +520,11 @@ Invoicetronic_Sdk.configure do |config|
512
520
  end
513
521
 
514
522
  api_instance = Invoicetronic_Sdk::SendApi.new
515
- model_send = Invoicetronic_Sdk::ModelSend.new({payload: 'payload_example'}) # ModelSend |
523
+ model_send = Invoicetronic_Sdk::ModelSend.new({payload: 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cDpGYXR0dXJhRWxldHRyb25pY2EgLi4uPjwvcDpGYXR0dXJhRWxldHRyb25pY2E+'}) # ModelSend |
516
524
  opts = {
517
525
  validate: true, # Boolean | Validate the document first, and reject it on failure.
518
- signature: 'None' # String | Whether to digitally sign the document.
526
+ signature: 'None', # String | Whether to digitally sign the document.
527
+ idempotency_key: 'idempotency_key_example' # String | Optional client-generated key that makes the submission idempotent. Retrying the same request with the same key within 24 hours returns the original response instead of creating a duplicate invoice.
519
528
  }
520
529
 
521
530
  begin
@@ -552,6 +561,7 @@ end
552
561
  | **model_send** | [**ModelSend**](ModelSend.md) | | |
553
562
  | **validate** | **Boolean** | Validate the document first, and reject it on failure. | [optional][default to false] |
554
563
  | **signature** | **String** | Whether to digitally sign the document. | [optional][default to &#39;Auto&#39;] |
564
+ | **idempotency_key** | **String** | Optional client-generated key that makes the submission idempotent. Retrying the same request with the same key within 24 hours returns the original response instead of creating a duplicate invoice. | [optional] |
555
565
 
556
566
  ### Return type
557
567
 
@@ -642,7 +652,7 @@ nil (empty response body)
642
652
 
643
653
  Validate an invoice by json
644
654
 
645
- Validate a JSON invoice without sending it to SDI. Use this to check for errors before actual submission. Returns validation results with any errors found. **Send** invoices are outbound sales invoices transmitted to customers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 15 days in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/).
655
+ Validate a FatturaPA JSON invoice without sending it to SDI. Property names mirror the FatturaPA XML schema (PascalCase, e.g. `FatturaElettronicaHeader`). Use this to check for errors before actual submission. Returns validation results with any errors found. **Send** invoices are outbound sales invoices transmitted to customers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 15 days in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/).
646
656
 
647
657
  ### Examples
648
658
 
@@ -726,7 +736,7 @@ Invoicetronic_Sdk.configure do |config|
726
736
  end
727
737
 
728
738
  api_instance = Invoicetronic_Sdk::SendApi.new
729
- model_send = Invoicetronic_Sdk::ModelSend.new({payload: 'payload_example'}) # ModelSend |
739
+ model_send = Invoicetronic_Sdk::ModelSend.new({payload: 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48cDpGYXR0dXJhRWxldHRyb25pY2EgLi4uPjwvcDpGYXR0dXJhRWxldHRyb25pY2E+'}) # ModelSend |
730
740
 
731
741
  begin
732
742
  # Validate an invoice
@@ -849,7 +859,7 @@ nil (empty response body)
849
859
 
850
860
  Add an invoice by xml
851
861
 
852
- Add a new invoice using a raw XML document in FatturaPA format. The invoice will be signed (if requested), validated (if requested), and queued for delivery to SDI. Status updates from SDI will be available in the `update` endpoint. **Send** invoices are outbound sales invoices transmitted to customers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 15 days in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/). You can also upload invoices via the [Dashboard](https://dashboard.invoicetronic.com).
862
+ Add a new invoice using a raw XML document in FatturaPA format. The invoice will be signed (if requested), validated (if requested), and queued for delivery to SDI. Status updates from SDI will be available in the `update` endpoint. **Send** invoices are outbound sales invoices transmitted to customers through Italy's SDI (Sistema di Interscambio). Preserved for two years in the live environment and 15 days in the [Sandbox](https://invoicetronic.com/en/docs/sandbox/). You can also upload invoices via the [Dashboard](https://dashboard.invoicetronic.com). ### Idempotency To protect against duplicate submissions caused by network retries, you can send an optional `Idempotency-Key` header with any unique, client-generated value (up to 255 characters). - The first request with a given key is processed normally, and its response (status, body and `Location`) is stored for 24 hours. - Any subsequent request that reuses the same key within that window replays the original response instead of sending a second invoice to SDI. - If a request with the same key is still being processed, the retry receives `409 Conflict`. - If the same key is reused with a **different** invoice payload, the request is rejected with `422 Unprocessable Entity`: a given key must always map to the same request. Keys are scoped per account, so different accounts can use the same key value without interfering. If the idempotency store is temporarily unavailable, the request is processed normally without idempotency protection.
853
863
 
854
864
  ### Examples
855
865
 
@@ -867,7 +877,8 @@ api_instance = Invoicetronic_Sdk::SendApi.new
867
877
  body = { ... } # Object |
868
878
  opts = {
869
879
  validate: true, # Boolean | Validate the document first, and reject it on failure.
870
- signature: 'None' # String | Whether to digitally sign the document.
880
+ signature: 'None', # String | Whether to digitally sign the document.
881
+ idempotency_key: 'idempotency_key_example' # String | Optional client-generated key that makes the submission idempotent. Retrying the same request with the same key within 24 hours returns the original response instead of creating a duplicate invoice.
871
882
  }
872
883
 
873
884
  begin
@@ -904,6 +915,7 @@ end
904
915
  | **body** | **Object** | | |
905
916
  | **validate** | **Boolean** | Validate the document first, and reject it on failure. | [optional][default to false] |
906
917
  | **signature** | **String** | Whether to digitally sign the document. | [optional][default to &#39;Auto&#39;] |
918
+ | **idempotency_key** | **String** | Optional client-generated key that makes the submission idempotent. Retrying the same request with the same key within 24 hours returns the original response instead of creating a duplicate invoice. | [optional] |
907
919
 
908
920
  ### Return type
909
921
 
data/docs/SendReduced.md CHANGED
@@ -9,6 +9,7 @@
9
9
  | **meta_data** | **Hash&lt;String, String&gt;** | Optional metadata, as json. | [optional] |
10
10
  | **documents** | [**Array&lt;DocumentData&gt;**](DocumentData.md) | The invoices included in the payload. | [optional] |
11
11
  | **date_sent** | **Time** | When the invoice was sent to SDI. | [optional] |
12
+ | **latest_state** | **String** | Current SDI state of the invoice. Reflects the most recent update received from SDI. | [optional] |
12
13
 
13
14
  ## Example
14
15
 
@@ -20,7 +21,8 @@ instance = Invoicetronic_Sdk::SendReduced.new(
20
21
  prestatore: null,
21
22
  meta_data: null,
22
23
  documents: null,
23
- date_sent: null
24
+ date_sent: null,
25
+ latest_state: null
24
26
  )
25
27
  ```
26
28
 
data/docs/Status.md CHANGED
@@ -6,6 +6,8 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **operation_left** | **Integer** | Operations (invoices and validations) left. | [optional] |
8
8
  | **signature_left** | **Integer** | Signatures left. | [optional] |
9
+ | **has_active_seat** | **Boolean** | Whether the current API key has an active Desk seat. | [optional] |
10
+ | **is_sub_key** | **Boolean** | Whether the current API key is a sub-key (restricted key). | [optional] |
9
11
 
10
12
  ## Example
11
13
 
@@ -14,7 +16,9 @@ require 'invoicetronic_sdk'
14
16
 
15
17
  instance = Invoicetronic_Sdk::Status.new(
16
18
  operation_left: null,
17
- signature_left: null
19
+ signature_left: null,
20
+ has_active_seat: null,
21
+ is_sub_key: null
18
22
  )
19
23
  ```
20
24
 
data/docs/Update.md CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **id** | **Integer** | Unique identifier. Leave it at 0 for new records as it will be set automatically. | [optional] |
8
- | **created** | **Time** | Creation date. It is set automatically. | [optional] |
9
- | **version** | **Integer** | Row version, for optimistic concurrency. It is set automatically. | [optional] |
7
+ | **id** | **Integer** | Unique identifier. For POST requests, leave it at &#x60;0&#x60; the server will assign one automatically. For PUT requests, set it to the id of the record you want to update. | [optional] |
8
+ | **created** | **Time** | Creation date. It is set automatically. | [optional][readonly] |
9
+ | **version** | **Integer** | Row version, for optimistic concurrency. It is set automatically. | [optional][readonly] |
10
10
  | **user_id** | **Integer** | User id. | [optional] |
11
11
  | **company_id** | **Integer** | Company id. | [optional] |
12
12
  | **send_id** | **Integer** | Send id. This is the id of the sent invoice to which this update refers to. | [optional] |
@@ -24,7 +24,7 @@
24
24
  require 'invoicetronic_sdk'
25
25
 
26
26
  instance = Invoicetronic_Sdk::Update.new(
27
- id: null,
27
+ id: 0,
28
28
  created: null,
29
29
  version: null,
30
30
  user_id: null,
data/docs/WebHook.md CHANGED
@@ -4,16 +4,17 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **id** | **Integer** | Unique identifier. Leave it at 0 for new records as it will be set automatically. | [optional] |
8
- | **created** | **Time** | Creation date. It is set automatically. | [optional] |
9
- | **version** | **Integer** | Row version, for optimistic concurrency. It is set automatically. | [optional] |
10
- | **user_id** | **Integer** | User id. | [optional] |
11
- | **company_id** | **Integer** | Company id. | [optional] |
7
+ | **id** | **Integer** | Unique identifier. For POST requests, leave it at &#x60;0&#x60; the server will assign one automatically. For PUT requests, set it to the id of the record you want to update. | [optional] |
8
+ | **created** | **Time** | Creation date. It is set automatically. | [optional][readonly] |
9
+ | **version** | **Integer** | Row version, for optimistic concurrency. It is set automatically. | [optional][readonly] |
10
+ | **user_id** | **Integer** | User id. It is set automatically based on the authenticated user. | [optional][readonly] |
11
+ | **company_id** | **Integer** | Optional company id. If set, the webhook is restricted to events for that company; if omitted, it fires for all companies on the account. | [optional] |
12
12
  | **url** | **String** | The url of your application&#39;s endpoint that will receive a POST request when the webhook is fired. | |
13
13
  | **enabled** | **Boolean** | Whether the webhook is enabled. On creation, this is set to &#x60;true&#x60;. | [optional] |
14
14
  | **secret** | **String** | The secret used to generate webhook signatures, only returned on creation. You should store this value securely and validate it on every call, to ensure that the caller is InvoicetronicApi. | [optional] |
15
15
  | **description** | **String** | An optional description. | [optional] |
16
16
  | **events** | **Array&lt;String&gt;** | List of events that trigger the webhook. See Invoicetronic.SupportedEvents.Available for a list of valid event names. | [optional] |
17
+ | **failure_notified_at** | **Time** | Timestamp of the last failure notification email sent for this webhook. Set by the notifier service; reset to null on successful delivery. | [optional][readonly] |
17
18
 
18
19
  ## Example
19
20
 
@@ -21,16 +22,17 @@
21
22
  require 'invoicetronic_sdk'
22
23
 
23
24
  instance = Invoicetronic_Sdk::WebHook.new(
24
- id: null,
25
+ id: 0,
25
26
  created: null,
26
27
  version: null,
27
28
  user_id: null,
28
- company_id: null,
29
- url: null,
29
+ company_id: 1,
30
+ url: https://example.com/webhooks/invoicetronic,
30
31
  enabled: null,
31
- secret: null,
32
- description: null,
33
- events: null
32
+ secret: wh_sec_1a2b3c4d5e6f7g8h9i0j,
33
+ description: Production webhook,
34
+ events: [&quot;send.add&quot;,&quot;receive.add&quot;],
35
+ failure_notified_at: null
34
36
  )
35
37
  ```
36
38
 
@@ -4,13 +4,14 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **id** | **Integer** | Unique identifier. Leave it at 0 for new records as it will be set automatically. | [optional] |
8
- | **created** | **Time** | Creation date. It is set automatically. | [optional] |
9
- | **version** | **Integer** | Row version, for optimistic concurrency. It is set automatically. | [optional] |
7
+ | **id** | **Integer** | Unique identifier. For POST requests, leave it at &#x60;0&#x60; the server will assign one automatically. For PUT requests, set it to the id of the record you want to update. | [optional] |
8
+ | **created** | **Time** | Creation date. It is set automatically. | [optional][readonly] |
9
+ | **version** | **Integer** | Row version, for optimistic concurrency. It is set automatically. | [optional][readonly] |
10
10
  | **web_hook_id** | **Integer** | Webhook id. | [optional] |
11
11
  | **user_id** | **Integer** | User id. | [optional] |
12
12
  | **event** | **String** | Event name. | [optional] |
13
- | **status_code** | **Integer** | Status code. | [optional] |
13
+ | **status_code** | **Integer** | HTTP status code returned by the webhook endpoint. A value of 0 means the request could not be completed due to a network error (e.g., DNS resolution failure, connection refused, or timeout). This typically indicates that the endpoint URL is misconfigured or no longer exists. | [optional] |
14
+ | **error** | **String** | Error description, if any. Null when the delivery is successful (2xx). Contains the exception message for network errors (status code 0) or the response body for non-2xx HTTP responses. | [optional] |
14
15
  | **date_time** | **Time** | Date and time of the request. | [optional] |
15
16
  | **success** | **Boolean** | Whether the request was successful. | [optional][readonly] |
16
17
 
@@ -20,13 +21,14 @@
20
21
  require 'invoicetronic_sdk'
21
22
 
22
23
  instance = Invoicetronic_Sdk::WebHookHistory.new(
23
- id: null,
24
+ id: 0,
24
25
  created: null,
25
26
  version: null,
26
27
  web_hook_id: null,
27
28
  user_id: null,
28
29
  event: null,
29
30
  status_code: null,
31
+ error: null,
30
32
  date_time: null,
31
33
  success: null
32
34
  )