shipeasy-sdk 2.3.0 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. checksums.yaml +4 -4
  2. data/lib/shipeasy/admin.rb +14 -8
  3. data/lib/shipeasy/sdk/version.rb +1 -1
  4. data/lib/shipeasy_admin/api/{alert_rules_api.rb → alerts_api.rb} +77 -17
  5. data/lib/shipeasy_admin/api/api_keys_api.rb +229 -0
  6. data/lib/shipeasy_admin/api/attributes_api.rb +1 -1
  7. data/lib/shipeasy_admin/api/configs_api.rb +78 -1
  8. data/lib/shipeasy_admin/api/connectors_api.rb +497 -0
  9. data/lib/shipeasy_admin/api/drafts_api.rb +82 -0
  10. data/lib/shipeasy_admin/api/errors_api.rb +389 -0
  11. data/lib/shipeasy_admin/api/events_api.rb +1 -1
  12. data/lib/shipeasy_admin/api/experiments_api.rb +1 -1
  13. data/lib/shipeasy_admin/api/{gates_api.rb → flags_api.rb} +27 -27
  14. data/lib/shipeasy_admin/api/{i18n_api.rb → keys_api.rb} +54 -244
  15. data/lib/shipeasy_admin/api/{killswitches_api.rb → killswitch_api.rb} +110 -33
  16. data/lib/shipeasy_admin/api/metrics_api.rb +1 -1
  17. data/lib/shipeasy_admin/api/ops_api.rb +3 -63
  18. data/lib/shipeasy_admin/api/profiles_api.rb +226 -0
  19. data/lib/shipeasy_admin/api/projects_api.rb +64 -1
  20. data/lib/shipeasy_admin/api/universes_api.rb +1 -1
  21. data/lib/shipeasy_admin/api_client.rb +1 -1
  22. data/lib/shipeasy_admin/api_error.rb +1 -1
  23. data/lib/shipeasy_admin/api_model_base.rb +1 -1
  24. data/lib/shipeasy_admin/configuration.rb +1 -1
  25. data/lib/shipeasy_admin/models/approve_event_request.rb +2 -2
  26. data/lib/shipeasy_admin/models/approve_event_response.rb +1 -1
  27. data/lib/shipeasy_admin/models/claude_trigger_config.rb +204 -0
  28. data/lib/shipeasy_admin/models/connector_event.rb +40 -0
  29. data/lib/shipeasy_admin/models/connector_provider.rb +45 -0
  30. data/lib/shipeasy_admin/models/connector_record.rb +468 -0
  31. data/lib/shipeasy_admin/models/copilot_trigger_config.rb +276 -0
  32. data/lib/shipeasy_admin/models/create_alert_rule_request.rb +6 -31
  33. data/lib/shipeasy_admin/models/create_alert_rule_response.rb +1 -1
  34. data/lib/shipeasy_admin/models/create_claude_trigger_request.rb +309 -0
  35. data/lib/shipeasy_admin/models/create_config_request.rb +14 -3
  36. data/lib/shipeasy_admin/models/create_config_response.rb +1 -1
  37. data/lib/shipeasy_admin/models/create_connector_request.rb +64 -0
  38. data/lib/shipeasy_admin/models/create_connector_response.rb +165 -0
  39. data/lib/shipeasy_admin/models/create_copilot_trigger_request.rb +316 -0
  40. data/lib/shipeasy_admin/models/create_cursor_trigger_request.rb +352 -0
  41. data/lib/shipeasy_admin/models/create_event_request.rb +2 -19
  42. data/lib/shipeasy_admin/models/create_event_response.rb +1 -1
  43. data/lib/shipeasy_admin/models/create_experiment_request.rb +39 -101
  44. data/lib/shipeasy_admin/models/create_experiment_response.rb +1 -1
  45. data/lib/shipeasy_admin/models/create_gate_request.rb +6 -43
  46. data/lib/shipeasy_admin/models/create_gate_response.rb +1 -1
  47. data/lib/shipeasy_admin/models/create_i18n_profile_request.rb +1 -1
  48. data/lib/shipeasy_admin/models/create_i18n_profile_response.rb +1 -1
  49. data/lib/shipeasy_admin/models/create_jules_trigger_request.rb +352 -0
  50. data/lib/shipeasy_admin/models/create_key_request.rb +297 -0
  51. data/lib/shipeasy_admin/models/create_key_response.rb +286 -0
  52. data/lib/shipeasy_admin/models/create_killswitch_request.rb +14 -3
  53. data/lib/shipeasy_admin/models/create_killswitch_response.rb +1 -1
  54. data/lib/shipeasy_admin/models/create_metric_request.rb +6 -18
  55. data/lib/shipeasy_admin/models/create_metric_response.rb +1 -1
  56. data/lib/shipeasy_admin/models/create_o_auth_connector_request.rb +273 -0
  57. data/lib/shipeasy_admin/models/create_ops_item_request.rb +2 -2
  58. data/lib/shipeasy_admin/models/create_ops_item_response.rb +2 -2
  59. data/lib/shipeasy_admin/models/create_universe_request.rb +6 -23
  60. data/lib/shipeasy_admin/models/create_universe_response.rb +1 -1
  61. data/lib/shipeasy_admin/models/cursor_trigger_config.rb +231 -0
  62. data/lib/shipeasy_admin/models/delete_alert_rule_response.rb +1 -1
  63. data/lib/shipeasy_admin/models/delete_config_response.rb +1 -1
  64. data/lib/shipeasy_admin/models/delete_connector_response.rb +188 -0
  65. data/lib/shipeasy_admin/models/delete_event_response.rb +1 -1
  66. data/lib/shipeasy_admin/models/delete_experiment_response.rb +1 -1
  67. data/lib/shipeasy_admin/models/delete_gate_response.rb +1 -1
  68. data/lib/shipeasy_admin/models/delete_killswitch_response.rb +1 -1
  69. data/lib/shipeasy_admin/models/delete_metric_response.rb +1 -1
  70. data/lib/shipeasy_admin/models/delete_universe_response.rb +1 -1
  71. data/lib/shipeasy_admin/models/disable_gate_response.rb +1 -1
  72. data/lib/shipeasy_admin/models/discard_config_draft_request.rb +7 -10
  73. data/lib/shipeasy_admin/models/discard_config_draft_response.rb +1 -1
  74. data/lib/shipeasy_admin/models/enable_gate_response.rb +1 -1
  75. data/lib/shipeasy_admin/models/env.rb +41 -0
  76. data/lib/shipeasy_admin/models/{error_response.rb → error.rb} +29 -7
  77. data/lib/shipeasy_admin/models/error_code.rb +52 -0
  78. data/lib/shipeasy_admin/models/error_record.rb +597 -0
  79. data/lib/shipeasy_admin/models/error_series_request.rb +251 -0
  80. data/lib/shipeasy_admin/models/error_series_response.rb +195 -0
  81. data/lib/shipeasy_admin/models/error_series_response_rows_inner.rb +192 -0
  82. data/lib/shipeasy_admin/models/{create_experiment_request_goal_metric.rb → experiment_inline_metric.rb} +9 -8
  83. data/lib/shipeasy_admin/models/file_error_ticket_response.rb +193 -0
  84. data/lib/shipeasy_admin/models/fire_connector_request.rb +149 -0
  85. data/lib/shipeasy_admin/models/fire_connector_response.rb +176 -0
  86. data/lib/shipeasy_admin/models/get_config_response.rb +1 -1
  87. data/lib/shipeasy_admin/models/get_current_project_response.rb +1 -1
  88. data/lib/shipeasy_admin/models/get_current_project_response_module_translations.rb +1 -1
  89. data/lib/shipeasy_admin/models/get_event_response.rb +1 -1
  90. data/lib/shipeasy_admin/models/get_experiment_response.rb +1 -1
  91. data/lib/shipeasy_admin/models/get_experiment_results_response.rb +1 -1
  92. data/lib/shipeasy_admin/models/get_experiment_results_response_experiment.rb +1 -1
  93. data/lib/shipeasy_admin/models/get_experiment_results_response_results_inner.rb +1 -1
  94. data/lib/shipeasy_admin/models/get_experiment_timeseries_response.rb +1 -1
  95. data/lib/shipeasy_admin/models/get_experiment_timeseries_response_experiment.rb +1 -1
  96. data/lib/shipeasy_admin/models/get_experiment_timeseries_response_series_inner.rb +1 -1
  97. data/lib/shipeasy_admin/models/get_killswitch_response.rb +1 -1
  98. data/lib/shipeasy_admin/models/get_metric_response.rb +1 -1
  99. data/lib/shipeasy_admin/models/get_ops_item_response.rb +1 -1
  100. data/lib/shipeasy_admin/models/jules_trigger_config.rb +240 -0
  101. data/lib/shipeasy_admin/models/key_record.rb +353 -0
  102. data/lib/shipeasy_admin/models/killswitch_value.rb +178 -0
  103. data/lib/shipeasy_admin/models/link_pr_to_ops_item_request.rb +1 -1
  104. data/lib/shipeasy_admin/models/link_pr_to_ops_item_response.rb +1 -1
  105. data/lib/shipeasy_admin/models/list_alert_rules_response_inner.rb +2 -2
  106. data/lib/shipeasy_admin/models/list_attributes_response_inner.rb +1 -1
  107. data/lib/shipeasy_admin/models/list_config_activity_response_inner.rb +1 -1
  108. data/lib/shipeasy_admin/models/list_configs_response.rb +1 -1
  109. data/lib/shipeasy_admin/models/list_configs_response_data_inner.rb +1 -1
  110. data/lib/shipeasy_admin/models/list_configs_response_data_inner_drafts_value.rb +1 -1
  111. data/lib/shipeasy_admin/models/list_configs_response_data_inner_envs_value.rb +1 -1
  112. data/lib/shipeasy_admin/models/list_events_response_inner.rb +1 -1
  113. data/lib/shipeasy_admin/models/list_events_response_inner_properties_inner.rb +1 -31
  114. data/lib/shipeasy_admin/models/list_experiments_response.rb +1 -1
  115. data/lib/shipeasy_admin/models/list_experiments_response_data_inner.rb +1 -1
  116. data/lib/shipeasy_admin/models/list_experiments_response_data_inner_groups_inner.rb +1 -18
  117. data/lib/shipeasy_admin/models/list_gates_response.rb +1 -1
  118. data/lib/shipeasy_admin/models/list_gates_response_data_inner.rb +1 -1
  119. data/lib/shipeasy_admin/models/list_gates_response_data_inner_enabled.rb +1 -1
  120. data/lib/shipeasy_admin/models/list_gates_response_data_inner_rules_inner.rb +1 -1
  121. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner.rb +1 -1
  122. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of.rb +1 -18
  123. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of1.rb +1 -1
  124. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of_ramp.rb +1 -1
  125. data/lib/shipeasy_admin/models/list_i18n_drafts_response_inner.rb +1 -1
  126. data/lib/shipeasy_admin/models/list_i18n_keys_response.rb +1 -1
  127. data/lib/shipeasy_admin/models/list_i18n_keys_response_keys_inner.rb +1 -1
  128. data/lib/shipeasy_admin/models/list_i18n_profiles_response_inner.rb +1 -1
  129. data/lib/shipeasy_admin/models/list_keys_response.rb +180 -0
  130. data/lib/shipeasy_admin/models/list_killswitches_response.rb +1 -1
  131. data/lib/shipeasy_admin/models/list_killswitches_response_data_inner.rb +1 -1
  132. data/lib/shipeasy_admin/models/list_killswitches_response_data_inner_envs_value.rb +1 -1
  133. data/lib/shipeasy_admin/models/list_metrics_response_inner.rb +1 -1
  134. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir.rb +3 -10
  135. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg.rb +1 -1
  136. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of.rb +1 -1
  137. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of1.rb +1 -1
  138. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of2.rb +1 -1
  139. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of3.rb +1 -1
  140. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of4.rb +1 -1
  141. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of5.rb +1 -1
  142. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of6.rb +1 -1
  143. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of7.rb +1 -1
  144. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of8.rb +1 -1
  145. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9.rb +1 -1
  146. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9_numerator.rb +1 -1
  147. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9_numerator_filters_inner.rb +1 -1
  148. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_group_by.rb +1 -1
  149. data/lib/shipeasy_admin/models/list_ops_items_response_inner.rb +1 -1
  150. data/lib/shipeasy_admin/models/list_slack_channels_response.rb +1 -1
  151. data/lib/shipeasy_admin/models/list_slack_channels_response_channels_inner.rb +1 -1
  152. data/lib/shipeasy_admin/models/list_universes_response.rb +1 -1
  153. data/lib/shipeasy_admin/models/list_universes_response_data_inner.rb +1 -1
  154. data/lib/shipeasy_admin/models/{list_alert_rules_response_inner_notify.rb → notification_target.rb} +6 -24
  155. data/lib/shipeasy_admin/models/{list_alert_rules_response_inner_notify_slack_channel.rb → notification_target_slack_channel.rb} +4 -7
  156. data/lib/shipeasy_admin/models/notify_ops_request.rb +1 -1
  157. data/lib/shipeasy_admin/models/notify_ops_response.rb +1 -1
  158. data/lib/shipeasy_admin/models/publish_config_draft_request.rb +7 -10
  159. data/lib/shipeasy_admin/models/publish_config_draft_response.rb +7 -10
  160. data/lib/shipeasy_admin/models/publish_i18n_profile_request.rb +1 -1
  161. data/lib/shipeasy_admin/models/publish_i18n_profile_response.rb +1 -1
  162. data/lib/shipeasy_admin/models/push_i18n_keys_request.rb +1 -1
  163. data/lib/shipeasy_admin/models/push_i18n_keys_request_keys_inner.rb +1 -1
  164. data/lib/shipeasy_admin/models/push_i18n_keys_response.rb +1 -1
  165. data/lib/shipeasy_admin/models/reanalyze_experiment_response.rb +1 -1
  166. data/lib/shipeasy_admin/models/revoke_key_response.rb +216 -0
  167. data/lib/shipeasy_admin/models/save_config_draft_request.rb +7 -10
  168. data/lib/shipeasy_admin/models/save_config_draft_response.rb +7 -10
  169. data/lib/shipeasy_admin/models/search_hit.rb +284 -0
  170. data/lib/shipeasy_admin/models/search_response.rb +167 -0
  171. data/lib/shipeasy_admin/models/set_experiment_metrics_request.rb +1 -1
  172. data/lib/shipeasy_admin/models/set_experiment_metrics_request_metrics_inner.rb +1 -1
  173. data/lib/shipeasy_admin/models/set_experiment_metrics_response.rb +1 -1
  174. data/lib/shipeasy_admin/models/set_experiment_metrics_response_metrics_inner.rb +1 -1
  175. data/lib/shipeasy_admin/models/set_experiment_status_request.rb +1 -1
  176. data/lib/shipeasy_admin/models/set_experiment_status_response.rb +1 -1
  177. data/lib/shipeasy_admin/models/set_i18n_label_request.rb +213 -0
  178. data/lib/shipeasy_admin/models/set_i18n_label_response.rb +472 -0
  179. data/lib/shipeasy_admin/models/set_killswitch_switch_request.rb +7 -10
  180. data/lib/shipeasy_admin/models/set_killswitch_switch_response.rb +7 -10
  181. data/lib/shipeasy_admin/models/set_killswitch_value_request.rb +214 -0
  182. data/lib/shipeasy_admin/models/set_killswitch_value_response.rb +283 -0
  183. data/lib/shipeasy_admin/models/test_connector_response.rb +189 -0
  184. data/lib/shipeasy_admin/models/unset_killswitch_switch_request.rb +7 -10
  185. data/lib/shipeasy_admin/models/unset_killswitch_switch_response.rb +7 -10
  186. data/lib/shipeasy_admin/models/update_alert_rule_request.rb +2 -4
  187. data/lib/shipeasy_admin/models/update_alert_rule_response.rb +1 -1
  188. data/lib/shipeasy_admin/models/update_config_request.rb +2 -2
  189. data/lib/shipeasy_admin/models/update_config_response.rb +1 -1
  190. data/lib/shipeasy_admin/models/update_config_schema_request.rb +168 -0
  191. data/lib/shipeasy_admin/models/update_config_schema_response.rb +165 -0
  192. data/lib/shipeasy_admin/models/update_connector_request.rb +211 -0
  193. data/lib/shipeasy_admin/models/update_connector_response.rb +166 -0
  194. data/lib/shipeasy_admin/models/update_error_status_request.rb +190 -0
  195. data/lib/shipeasy_admin/models/update_event_request.rb +2 -2
  196. data/lib/shipeasy_admin/models/update_event_response.rb +1 -1
  197. data/lib/shipeasy_admin/models/update_experiment_request.rb +5 -4
  198. data/lib/shipeasy_admin/models/update_experiment_response.rb +1 -1
  199. data/lib/shipeasy_admin/models/update_gate_request.rb +2 -2
  200. data/lib/shipeasy_admin/models/update_gate_response.rb +1 -1
  201. data/lib/shipeasy_admin/models/update_i18n_key_request.rb +1 -1
  202. data/lib/shipeasy_admin/models/update_i18n_key_response.rb +1 -1
  203. data/lib/shipeasy_admin/models/update_killswitch_request.rb +2 -2
  204. data/lib/shipeasy_admin/models/update_killswitch_response.rb +1 -1
  205. data/lib/shipeasy_admin/models/update_ops_item_request.rb +1 -1
  206. data/lib/shipeasy_admin/models/update_ops_item_response.rb +1 -1
  207. data/lib/shipeasy_admin/models/update_universe_request.rb +2 -2
  208. data/lib/shipeasy_admin/models/update_universe_response.rb +1 -1
  209. data/lib/shipeasy_admin/models/upsert_project_request.rb +1 -1
  210. data/lib/shipeasy_admin/models/upsert_project_response.rb +1 -1
  211. data/lib/shipeasy_admin/version.rb +1 -1
  212. data/lib/shipeasy_admin.rb +56 -9
  213. metadata +56 -9
@@ -0,0 +1,597 @@
1
+ =begin
2
+ #Shipeasy Admin API
3
+
4
+ #REST API for managing feature gates, experiments, configs, universes, and killswitches in a Shipeasy project. Authenticate with an admin SDK key (`Authorization: Bearer sdk_admin_…`) and scope every request to a project via the `X-Project-Id` header. Mint admin keys via `POST /api/admin/keys` with `type: \"admin\"`. Keys expire after 90 days; rotate with the `revoke` action.
5
+
6
+ The version of the OpenAPI document: 2.0.0
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.23.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Shipeasy::Admin::Generated
17
+ # A tracked production error — one row per distinct issue, keyed by `fingerprint`. Rows are never created by hand: an ingestion path (worker log drain / the `see()` SDK reporter) folds each occurrence into the matching row, bumping `count` and `lastSeenAt`. The admin surface only lists them, reads one, and flips `status`. Field names are camelCase (the D1 row projected through Drizzle). Many columns are nullable because the reporting source may not supply them.
18
+ class ErrorRecord < ApiModelBase
19
+ # Stable opaque error id.
20
+ attr_accessor :id
21
+
22
+ # Project this issue belongs to.
23
+ attr_accessor :project_id
24
+
25
+ # Stable dedupe key (hash of `errorType` + normalized `message` + consequence). Unique per project — every occurrence with the same fingerprint folds into this one row.
26
+ attr_accessor :fingerprint
27
+
28
+ # Fingerprint of the issue this one descends from — set when `see()` reported the same error (re-throw) or its `{ cause }` (wrap) at an inner boundary first. Points at another error's `fingerprint` in the same project (soft reference, no FK). `null` for a root issue.
29
+ attr_accessor :caused_by_fingerprint
30
+
31
+ # Error message text.
32
+ attr_accessor :message
33
+
34
+ # Error class/name, e.g. `TypeError`. `null` when the source didn't supply one.
35
+ attr_accessor :error_type
36
+
37
+ # Stack trace of the latest occurrence, or `null` if none was captured.
38
+ attr_accessor :stack
39
+
40
+ # Where it surfaced — Worker name (`shipeasy`, `shipeasy-worker`) or `sdk-client` / `sdk-server`. `null` if unknown.
41
+ attr_accessor :source
42
+
43
+ # Latest occurrence's raw URL (with ids intact), or `null`.
44
+ attr_accessor :url
45
+
46
+ # Distinct, id-normalized route templates this issue has surfaced on, as a JSON-encoded string array (e.g. `[\"https://app/dashboard/#/gates\"]`). UUIDs / numeric ids / opaque tokens are collapsed to `#` so the same route under different ids counts once. `null` if none recorded.
47
+ attr_accessor :seen_urls
48
+
49
+ # Consequence subject — `<errorType> causes the <subject> to <outcome>`. `null` if no consequence was reported.
50
+ attr_accessor :subject
51
+
52
+ # Consequence outcome — see `subject`. `null` if no consequence was reported.
53
+ attr_accessor :outcome
54
+
55
+ # Which SDK side reported it — `client` or `server`. `null` if unknown.
56
+ attr_accessor :side
57
+
58
+ # Published env the reporting SDK ran against (e.g. `dev`, `staging`, `prod`). `null` if unknown.
59
+ attr_accessor :env
60
+
61
+ # `see()` error kind. `null` when the source didn't classify the occurrence.
62
+ attr_accessor :kind
63
+
64
+ # Latest occurrence's sanitized extras, JSON-encoded. `null` if none.
65
+ attr_accessor :last_extras_json
66
+
67
+ # `@shipeasy/sdk` version of the latest occurrence, or `null`.
68
+ attr_accessor :sdk_version
69
+
70
+ # Number of folded occurrences for this fingerprint.
71
+ attr_accessor :count
72
+
73
+ # Triage state. `open` is the default; a `resolved` error reopens automatically (ingestion-side) if it recurs; `ignored` is sticky until flipped back here.
74
+ attr_accessor :status
75
+
76
+ # ISO-8601 timestamp of the first folded occurrence.
77
+ attr_accessor :first_seen_at
78
+
79
+ # ISO-8601 timestamp of the most recent folded occurrence. Rows are ordered by this, descending.
80
+ attr_accessor :last_seen_at
81
+
82
+ # ISO-8601 timestamp the row was created.
83
+ attr_accessor :created_at
84
+
85
+ # ISO-8601 timestamp of the last mutation (e.g. a status flip).
86
+ attr_accessor :updated_at
87
+
88
+ class EnumAttributeValidator
89
+ attr_reader :datatype
90
+ attr_reader :allowable_values
91
+
92
+ def initialize(datatype, allowable_values)
93
+ @allowable_values = allowable_values.map do |value|
94
+ case datatype.to_s
95
+ when /Integer/i
96
+ value.to_i
97
+ when /Float/i
98
+ value.to_f
99
+ else
100
+ value
101
+ end
102
+ end
103
+ end
104
+
105
+ def valid?(value)
106
+ !value || allowable_values.include?(value)
107
+ end
108
+ end
109
+
110
+ # Attribute mapping from ruby-style variable name to JSON key.
111
+ def self.attribute_map
112
+ {
113
+ :'id' => :'id',
114
+ :'project_id' => :'projectId',
115
+ :'fingerprint' => :'fingerprint',
116
+ :'caused_by_fingerprint' => :'causedByFingerprint',
117
+ :'message' => :'message',
118
+ :'error_type' => :'errorType',
119
+ :'stack' => :'stack',
120
+ :'source' => :'source',
121
+ :'url' => :'url',
122
+ :'seen_urls' => :'seenUrls',
123
+ :'subject' => :'subject',
124
+ :'outcome' => :'outcome',
125
+ :'side' => :'side',
126
+ :'env' => :'env',
127
+ :'kind' => :'kind',
128
+ :'last_extras_json' => :'lastExtrasJson',
129
+ :'sdk_version' => :'sdkVersion',
130
+ :'count' => :'count',
131
+ :'status' => :'status',
132
+ :'first_seen_at' => :'firstSeenAt',
133
+ :'last_seen_at' => :'lastSeenAt',
134
+ :'created_at' => :'createdAt',
135
+ :'updated_at' => :'updatedAt'
136
+ }
137
+ end
138
+
139
+ # Returns attribute mapping this model knows about
140
+ def self.acceptable_attribute_map
141
+ attribute_map
142
+ end
143
+
144
+ # Returns all the JSON keys this model knows about
145
+ def self.acceptable_attributes
146
+ acceptable_attribute_map.values
147
+ end
148
+
149
+ # Attribute type mapping.
150
+ def self.openapi_types
151
+ {
152
+ :'id' => :'String',
153
+ :'project_id' => :'String',
154
+ :'fingerprint' => :'String',
155
+ :'caused_by_fingerprint' => :'String',
156
+ :'message' => :'String',
157
+ :'error_type' => :'String',
158
+ :'stack' => :'String',
159
+ :'source' => :'String',
160
+ :'url' => :'String',
161
+ :'seen_urls' => :'String',
162
+ :'subject' => :'String',
163
+ :'outcome' => :'String',
164
+ :'side' => :'String',
165
+ :'env' => :'String',
166
+ :'kind' => :'String',
167
+ :'last_extras_json' => :'String',
168
+ :'sdk_version' => :'String',
169
+ :'count' => :'Integer',
170
+ :'status' => :'String',
171
+ :'first_seen_at' => :'String',
172
+ :'last_seen_at' => :'String',
173
+ :'created_at' => :'String',
174
+ :'updated_at' => :'String'
175
+ }
176
+ end
177
+
178
+ # List of attributes with nullable: true
179
+ def self.openapi_nullable
180
+ Set.new([
181
+ :'caused_by_fingerprint',
182
+ :'error_type',
183
+ :'stack',
184
+ :'source',
185
+ :'url',
186
+ :'seen_urls',
187
+ :'subject',
188
+ :'outcome',
189
+ :'side',
190
+ :'env',
191
+ :'kind',
192
+ :'last_extras_json',
193
+ :'sdk_version',
194
+ ])
195
+ end
196
+
197
+ # Initializes the object
198
+ # @param [Hash] attributes Model attributes in the form of hash
199
+ def initialize(attributes = {})
200
+ if (!attributes.is_a?(Hash))
201
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Shipeasy::Admin::Generated::ErrorRecord` initialize method"
202
+ end
203
+
204
+ # check to see if the attribute exists and convert string to symbol for hash key
205
+ acceptable_attribute_map = self.class.acceptable_attribute_map
206
+ attributes = attributes.each_with_object({}) { |(k, v), h|
207
+ if (!acceptable_attribute_map.key?(k.to_sym))
208
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Shipeasy::Admin::Generated::ErrorRecord`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
209
+ end
210
+ h[k.to_sym] = v
211
+ }
212
+
213
+ if attributes.key?(:'id')
214
+ self.id = attributes[:'id']
215
+ else
216
+ self.id = nil
217
+ end
218
+
219
+ if attributes.key?(:'project_id')
220
+ self.project_id = attributes[:'project_id']
221
+ else
222
+ self.project_id = nil
223
+ end
224
+
225
+ if attributes.key?(:'fingerprint')
226
+ self.fingerprint = attributes[:'fingerprint']
227
+ else
228
+ self.fingerprint = nil
229
+ end
230
+
231
+ if attributes.key?(:'caused_by_fingerprint')
232
+ self.caused_by_fingerprint = attributes[:'caused_by_fingerprint']
233
+ end
234
+
235
+ if attributes.key?(:'message')
236
+ self.message = attributes[:'message']
237
+ else
238
+ self.message = nil
239
+ end
240
+
241
+ if attributes.key?(:'error_type')
242
+ self.error_type = attributes[:'error_type']
243
+ end
244
+
245
+ if attributes.key?(:'stack')
246
+ self.stack = attributes[:'stack']
247
+ end
248
+
249
+ if attributes.key?(:'source')
250
+ self.source = attributes[:'source']
251
+ end
252
+
253
+ if attributes.key?(:'url')
254
+ self.url = attributes[:'url']
255
+ end
256
+
257
+ if attributes.key?(:'seen_urls')
258
+ self.seen_urls = attributes[:'seen_urls']
259
+ end
260
+
261
+ if attributes.key?(:'subject')
262
+ self.subject = attributes[:'subject']
263
+ end
264
+
265
+ if attributes.key?(:'outcome')
266
+ self.outcome = attributes[:'outcome']
267
+ end
268
+
269
+ if attributes.key?(:'side')
270
+ self.side = attributes[:'side']
271
+ end
272
+
273
+ if attributes.key?(:'env')
274
+ self.env = attributes[:'env']
275
+ end
276
+
277
+ if attributes.key?(:'kind')
278
+ self.kind = attributes[:'kind']
279
+ end
280
+
281
+ if attributes.key?(:'last_extras_json')
282
+ self.last_extras_json = attributes[:'last_extras_json']
283
+ end
284
+
285
+ if attributes.key?(:'sdk_version')
286
+ self.sdk_version = attributes[:'sdk_version']
287
+ end
288
+
289
+ if attributes.key?(:'count')
290
+ self.count = attributes[:'count']
291
+ else
292
+ self.count = nil
293
+ end
294
+
295
+ if attributes.key?(:'status')
296
+ self.status = attributes[:'status']
297
+ else
298
+ self.status = nil
299
+ end
300
+
301
+ if attributes.key?(:'first_seen_at')
302
+ self.first_seen_at = attributes[:'first_seen_at']
303
+ else
304
+ self.first_seen_at = nil
305
+ end
306
+
307
+ if attributes.key?(:'last_seen_at')
308
+ self.last_seen_at = attributes[:'last_seen_at']
309
+ else
310
+ self.last_seen_at = nil
311
+ end
312
+
313
+ if attributes.key?(:'created_at')
314
+ self.created_at = attributes[:'created_at']
315
+ else
316
+ self.created_at = nil
317
+ end
318
+
319
+ if attributes.key?(:'updated_at')
320
+ self.updated_at = attributes[:'updated_at']
321
+ else
322
+ self.updated_at = nil
323
+ end
324
+ end
325
+
326
+ # Show invalid properties with the reasons. Usually used together with valid?
327
+ # @return Array for valid properties with the reasons
328
+ def list_invalid_properties
329
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
330
+ invalid_properties = Array.new
331
+ if @id.nil?
332
+ invalid_properties.push('invalid value for "id", id cannot be nil.')
333
+ end
334
+
335
+ if @project_id.nil?
336
+ invalid_properties.push('invalid value for "project_id", project_id cannot be nil.')
337
+ end
338
+
339
+ if @fingerprint.nil?
340
+ invalid_properties.push('invalid value for "fingerprint", fingerprint cannot be nil.')
341
+ end
342
+
343
+ if @message.nil?
344
+ invalid_properties.push('invalid value for "message", message cannot be nil.')
345
+ end
346
+
347
+ if @count.nil?
348
+ invalid_properties.push('invalid value for "count", count cannot be nil.')
349
+ end
350
+
351
+ if @count < 1
352
+ invalid_properties.push('invalid value for "count", must be greater than or equal to 1.')
353
+ end
354
+
355
+ if @status.nil?
356
+ invalid_properties.push('invalid value for "status", status cannot be nil.')
357
+ end
358
+
359
+ if @first_seen_at.nil?
360
+ invalid_properties.push('invalid value for "first_seen_at", first_seen_at cannot be nil.')
361
+ end
362
+
363
+ if @last_seen_at.nil?
364
+ invalid_properties.push('invalid value for "last_seen_at", last_seen_at cannot be nil.')
365
+ end
366
+
367
+ if @created_at.nil?
368
+ invalid_properties.push('invalid value for "created_at", created_at cannot be nil.')
369
+ end
370
+
371
+ if @updated_at.nil?
372
+ invalid_properties.push('invalid value for "updated_at", updated_at cannot be nil.')
373
+ end
374
+
375
+ invalid_properties
376
+ end
377
+
378
+ # Check to see if the all the properties in the model are valid
379
+ # @return true if the model is valid
380
+ def valid?
381
+ warn '[DEPRECATED] the `valid?` method is obsolete'
382
+ return false if @id.nil?
383
+ return false if @project_id.nil?
384
+ return false if @fingerprint.nil?
385
+ return false if @message.nil?
386
+ kind_validator = EnumAttributeValidator.new('String', ["caught", "uncaught", "unhandled_rejection", "network", "violation"])
387
+ return false unless kind_validator.valid?(@kind)
388
+ return false if @count.nil?
389
+ return false if @count < 1
390
+ return false if @status.nil?
391
+ status_validator = EnumAttributeValidator.new('String', ["open", "resolved", "ignored"])
392
+ return false unless status_validator.valid?(@status)
393
+ return false if @first_seen_at.nil?
394
+ return false if @last_seen_at.nil?
395
+ return false if @created_at.nil?
396
+ return false if @updated_at.nil?
397
+ true
398
+ end
399
+
400
+ # Custom attribute writer method with validation
401
+ # @param [Object] id Value to be assigned
402
+ def id=(id)
403
+ if id.nil?
404
+ fail ArgumentError, 'id cannot be nil'
405
+ end
406
+
407
+ @id = id
408
+ end
409
+
410
+ # Custom attribute writer method with validation
411
+ # @param [Object] project_id Value to be assigned
412
+ def project_id=(project_id)
413
+ if project_id.nil?
414
+ fail ArgumentError, 'project_id cannot be nil'
415
+ end
416
+
417
+ @project_id = project_id
418
+ end
419
+
420
+ # Custom attribute writer method with validation
421
+ # @param [Object] fingerprint Value to be assigned
422
+ def fingerprint=(fingerprint)
423
+ if fingerprint.nil?
424
+ fail ArgumentError, 'fingerprint cannot be nil'
425
+ end
426
+
427
+ @fingerprint = fingerprint
428
+ end
429
+
430
+ # Custom attribute writer method with validation
431
+ # @param [Object] message Value to be assigned
432
+ def message=(message)
433
+ if message.nil?
434
+ fail ArgumentError, 'message cannot be nil'
435
+ end
436
+
437
+ @message = message
438
+ end
439
+
440
+ # Custom attribute writer method checking allowed values (enum).
441
+ # @param [Object] kind Object to be assigned
442
+ def kind=(kind)
443
+ validator = EnumAttributeValidator.new('String', ["caught", "uncaught", "unhandled_rejection", "network", "violation"])
444
+ unless validator.valid?(kind)
445
+ fail ArgumentError, "invalid value for \"kind\", must be one of #{validator.allowable_values}."
446
+ end
447
+ @kind = kind
448
+ end
449
+
450
+ # Custom attribute writer method with validation
451
+ # @param [Object] count Value to be assigned
452
+ def count=(count)
453
+ if count.nil?
454
+ fail ArgumentError, 'count cannot be nil'
455
+ end
456
+
457
+ if count < 1
458
+ fail ArgumentError, 'invalid value for "count", must be greater than or equal to 1.'
459
+ end
460
+
461
+ @count = count
462
+ end
463
+
464
+ # Custom attribute writer method checking allowed values (enum).
465
+ # @param [Object] status Object to be assigned
466
+ def status=(status)
467
+ validator = EnumAttributeValidator.new('String', ["open", "resolved", "ignored"])
468
+ unless validator.valid?(status)
469
+ fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
470
+ end
471
+ @status = status
472
+ end
473
+
474
+ # Custom attribute writer method with validation
475
+ # @param [Object] first_seen_at Value to be assigned
476
+ def first_seen_at=(first_seen_at)
477
+ if first_seen_at.nil?
478
+ fail ArgumentError, 'first_seen_at cannot be nil'
479
+ end
480
+
481
+ @first_seen_at = first_seen_at
482
+ end
483
+
484
+ # Custom attribute writer method with validation
485
+ # @param [Object] last_seen_at Value to be assigned
486
+ def last_seen_at=(last_seen_at)
487
+ if last_seen_at.nil?
488
+ fail ArgumentError, 'last_seen_at cannot be nil'
489
+ end
490
+
491
+ @last_seen_at = last_seen_at
492
+ end
493
+
494
+ # Custom attribute writer method with validation
495
+ # @param [Object] created_at Value to be assigned
496
+ def created_at=(created_at)
497
+ if created_at.nil?
498
+ fail ArgumentError, 'created_at cannot be nil'
499
+ end
500
+
501
+ @created_at = created_at
502
+ end
503
+
504
+ # Custom attribute writer method with validation
505
+ # @param [Object] updated_at Value to be assigned
506
+ def updated_at=(updated_at)
507
+ if updated_at.nil?
508
+ fail ArgumentError, 'updated_at cannot be nil'
509
+ end
510
+
511
+ @updated_at = updated_at
512
+ end
513
+
514
+ # Checks equality by comparing each attribute.
515
+ # @param [Object] Object to be compared
516
+ def ==(o)
517
+ return true if self.equal?(o)
518
+ self.class == o.class &&
519
+ id == o.id &&
520
+ project_id == o.project_id &&
521
+ fingerprint == o.fingerprint &&
522
+ caused_by_fingerprint == o.caused_by_fingerprint &&
523
+ message == o.message &&
524
+ error_type == o.error_type &&
525
+ stack == o.stack &&
526
+ source == o.source &&
527
+ url == o.url &&
528
+ seen_urls == o.seen_urls &&
529
+ subject == o.subject &&
530
+ outcome == o.outcome &&
531
+ side == o.side &&
532
+ env == o.env &&
533
+ kind == o.kind &&
534
+ last_extras_json == o.last_extras_json &&
535
+ sdk_version == o.sdk_version &&
536
+ count == o.count &&
537
+ status == o.status &&
538
+ first_seen_at == o.first_seen_at &&
539
+ last_seen_at == o.last_seen_at &&
540
+ created_at == o.created_at &&
541
+ updated_at == o.updated_at
542
+ end
543
+
544
+ # @see the `==` method
545
+ # @param [Object] Object to be compared
546
+ def eql?(o)
547
+ self == o
548
+ end
549
+
550
+ # Calculates hash code according to all attributes.
551
+ # @return [Integer] Hash code
552
+ def hash
553
+ [id, project_id, fingerprint, caused_by_fingerprint, message, error_type, stack, source, url, seen_urls, subject, outcome, side, env, kind, last_extras_json, sdk_version, count, status, first_seen_at, last_seen_at, created_at, updated_at].hash
554
+ end
555
+
556
+ # Builds the object from hash
557
+ # @param [Hash] attributes Model attributes in the form of hash
558
+ # @return [Object] Returns the model itself
559
+ def self.build_from_hash(attributes)
560
+ return nil unless attributes.is_a?(Hash)
561
+ attributes = attributes.transform_keys(&:to_sym)
562
+ transformed_hash = {}
563
+ openapi_types.each_pair do |key, type|
564
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
565
+ transformed_hash["#{key}"] = nil
566
+ elsif type =~ /\AArray<(.*)>/i
567
+ # check to ensure the input is an array given that the attribute
568
+ # is documented as an array but the input is not
569
+ if attributes[attribute_map[key]].is_a?(Array)
570
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
571
+ end
572
+ elsif !attributes[attribute_map[key]].nil?
573
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
574
+ end
575
+ end
576
+ new(transformed_hash)
577
+ end
578
+
579
+ # Returns the object in the form of hash
580
+ # @return [Hash] Returns the object in the form of hash
581
+ def to_hash
582
+ hash = {}
583
+ self.class.attribute_map.each_pair do |attr, param|
584
+ value = self.send(attr)
585
+ if value.nil?
586
+ is_nullable = self.class.openapi_nullable.include?(attr)
587
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
588
+ end
589
+
590
+ hash[param] = _to_hash(value)
591
+ end
592
+ hash
593
+ end
594
+
595
+ end
596
+
597
+ end