shipeasy-sdk 2.1.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 (218) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/docs/skill/SKILL.md +6 -2
  4. data/lib/generators/shipeasy/install/USAGE +24 -0
  5. data/lib/generators/shipeasy/install/install_generator.rb +86 -0
  6. data/lib/generators/shipeasy/install/templates/initializer.rb.tt +41 -0
  7. data/lib/shipeasy/admin.rb +91 -0
  8. data/lib/shipeasy/sdk/version.rb +1 -1
  9. data/lib/shipeasy_admin/api/alerts_api.rb +352 -0
  10. data/lib/shipeasy_admin/api/api_keys_api.rb +229 -0
  11. data/lib/shipeasy_admin/api/attributes_api.rb +82 -0
  12. data/lib/shipeasy_admin/api/configs_api.rb +757 -0
  13. data/lib/shipeasy_admin/api/connectors_api.rb +497 -0
  14. data/lib/shipeasy_admin/api/drafts_api.rb +82 -0
  15. data/lib/shipeasy_admin/api/errors_api.rb +389 -0
  16. data/lib/shipeasy_admin/api/events_api.rb +438 -0
  17. data/lib/shipeasy_admin/api/experiments_api.rb +727 -0
  18. data/lib/shipeasy_admin/api/flags_api.rb +438 -0
  19. data/lib/shipeasy_admin/api/keys_api.rb +317 -0
  20. data/lib/shipeasy_admin/api/killswitch_api.rb +603 -0
  21. data/lib/shipeasy_admin/api/metrics_api.rb +281 -0
  22. data/lib/shipeasy_admin/api/ops_api.rb +465 -0
  23. data/lib/shipeasy_admin/api/profiles_api.rb +226 -0
  24. data/lib/shipeasy_admin/api/projects_api.rb +216 -0
  25. data/lib/shipeasy_admin/api/universes_api.rb +306 -0
  26. data/lib/shipeasy_admin/api_client.rb +441 -0
  27. data/lib/shipeasy_admin/api_error.rb +58 -0
  28. data/lib/shipeasy_admin/api_model_base.rb +88 -0
  29. data/lib/shipeasy_admin/configuration.rb +397 -0
  30. data/lib/shipeasy_admin/models/approve_event_request.rb +198 -0
  31. data/lib/shipeasy_admin/models/approve_event_response.rb +166 -0
  32. data/lib/shipeasy_admin/models/claude_trigger_config.rb +204 -0
  33. data/lib/shipeasy_admin/models/connector_event.rb +40 -0
  34. data/lib/shipeasy_admin/models/connector_provider.rb +45 -0
  35. data/lib/shipeasy_admin/models/connector_record.rb +468 -0
  36. data/lib/shipeasy_admin/models/copilot_trigger_config.rb +276 -0
  37. data/lib/shipeasy_admin/models/create_alert_rule_request.rb +383 -0
  38. data/lib/shipeasy_admin/models/create_alert_rule_response.rb +165 -0
  39. data/lib/shipeasy_admin/models/create_claude_trigger_request.rb +309 -0
  40. data/lib/shipeasy_admin/models/create_config_request.rb +291 -0
  41. data/lib/shipeasy_admin/models/create_config_response.rb +201 -0
  42. data/lib/shipeasy_admin/models/create_connector_request.rb +64 -0
  43. data/lib/shipeasy_admin/models/create_connector_response.rb +165 -0
  44. data/lib/shipeasy_admin/models/create_copilot_trigger_request.rb +316 -0
  45. data/lib/shipeasy_admin/models/create_cursor_trigger_request.rb +352 -0
  46. data/lib/shipeasy_admin/models/create_event_request.rb +236 -0
  47. data/lib/shipeasy_admin/models/create_event_response.rb +193 -0
  48. data/lib/shipeasy_admin/models/create_experiment_request.rb +807 -0
  49. data/lib/shipeasy_admin/models/create_experiment_response.rb +212 -0
  50. data/lib/shipeasy_admin/models/create_gate_request.rb +492 -0
  51. data/lib/shipeasy_admin/models/create_gate_response.rb +212 -0
  52. data/lib/shipeasy_admin/models/create_i18n_profile_request.rb +188 -0
  53. data/lib/shipeasy_admin/models/create_i18n_profile_response.rb +193 -0
  54. data/lib/shipeasy_admin/models/create_jules_trigger_request.rb +352 -0
  55. data/lib/shipeasy_admin/models/create_key_request.rb +297 -0
  56. data/lib/shipeasy_admin/models/create_key_response.rb +286 -0
  57. data/lib/shipeasy_admin/models/create_killswitch_request.rb +274 -0
  58. data/lib/shipeasy_admin/models/create_killswitch_response.rb +201 -0
  59. data/lib/shipeasy_admin/models/create_metric_request.rb +403 -0
  60. data/lib/shipeasy_admin/models/create_metric_response.rb +193 -0
  61. data/lib/shipeasy_admin/models/create_o_auth_connector_request.rb +273 -0
  62. data/lib/shipeasy_admin/models/create_ops_item_request.rb +287 -0
  63. data/lib/shipeasy_admin/models/create_ops_item_response.rb +177 -0
  64. data/lib/shipeasy_admin/models/create_universe_request.rb +272 -0
  65. data/lib/shipeasy_admin/models/create_universe_response.rb +212 -0
  66. data/lib/shipeasy_admin/models/cursor_trigger_config.rb +231 -0
  67. data/lib/shipeasy_admin/models/delete_alert_rule_response.rb +188 -0
  68. data/lib/shipeasy_admin/models/delete_config_response.rb +188 -0
  69. data/lib/shipeasy_admin/models/delete_connector_response.rb +188 -0
  70. data/lib/shipeasy_admin/models/delete_event_response.rb +189 -0
  71. data/lib/shipeasy_admin/models/delete_experiment_response.rb +188 -0
  72. data/lib/shipeasy_admin/models/delete_gate_response.rb +188 -0
  73. data/lib/shipeasy_admin/models/delete_killswitch_response.rb +188 -0
  74. data/lib/shipeasy_admin/models/delete_metric_response.rb +189 -0
  75. data/lib/shipeasy_admin/models/delete_universe_response.rb +188 -0
  76. data/lib/shipeasy_admin/models/disable_gate_response.rb +190 -0
  77. data/lib/shipeasy_admin/models/discard_config_draft_request.rb +187 -0
  78. data/lib/shipeasy_admin/models/discard_config_draft_response.rb +188 -0
  79. data/lib/shipeasy_admin/models/enable_gate_response.rb +190 -0
  80. data/lib/shipeasy_admin/models/env.rb +41 -0
  81. data/lib/shipeasy_admin/models/error.rb +207 -0
  82. data/lib/shipeasy_admin/models/error_code.rb +52 -0
  83. data/lib/shipeasy_admin/models/error_record.rb +597 -0
  84. data/lib/shipeasy_admin/models/error_series_request.rb +251 -0
  85. data/lib/shipeasy_admin/models/error_series_response.rb +195 -0
  86. data/lib/shipeasy_admin/models/error_series_response_rows_inner.rb +192 -0
  87. data/lib/shipeasy_admin/models/experiment_inline_metric.rb +337 -0
  88. data/lib/shipeasy_admin/models/file_error_ticket_response.rb +193 -0
  89. data/lib/shipeasy_admin/models/fire_connector_request.rb +149 -0
  90. data/lib/shipeasy_admin/models/fire_connector_response.rb +176 -0
  91. data/lib/shipeasy_admin/models/get_config_response.rb +351 -0
  92. data/lib/shipeasy_admin/models/get_current_project_response.rb +606 -0
  93. data/lib/shipeasy_admin/models/get_current_project_response_module_translations.rb +104 -0
  94. data/lib/shipeasy_admin/models/get_event_response.rb +344 -0
  95. data/lib/shipeasy_admin/models/get_experiment_response.rb +688 -0
  96. data/lib/shipeasy_admin/models/get_experiment_results_response.rb +243 -0
  97. data/lib/shipeasy_admin/models/get_experiment_results_response_experiment.rb +248 -0
  98. data/lib/shipeasy_admin/models/get_experiment_results_response_results_inner.rb +252 -0
  99. data/lib/shipeasy_admin/models/get_experiment_timeseries_response.rb +192 -0
  100. data/lib/shipeasy_admin/models/get_experiment_timeseries_response_experiment.rb +261 -0
  101. data/lib/shipeasy_admin/models/get_experiment_timeseries_response_series_inner.rb +278 -0
  102. data/lib/shipeasy_admin/models/get_killswitch_response.rb +270 -0
  103. data/lib/shipeasy_admin/models/get_metric_response.rb +378 -0
  104. data/lib/shipeasy_admin/models/get_ops_item_response.rb +349 -0
  105. data/lib/shipeasy_admin/models/jules_trigger_config.rb +240 -0
  106. data/lib/shipeasy_admin/models/key_record.rb +353 -0
  107. data/lib/shipeasy_admin/models/killswitch_value.rb +178 -0
  108. data/lib/shipeasy_admin/models/link_pr_to_ops_item_request.rb +186 -0
  109. data/lib/shipeasy_admin/models/link_pr_to_ops_item_response.rb +166 -0
  110. data/lib/shipeasy_admin/models/list_alert_rules_response_inner.rb +478 -0
  111. data/lib/shipeasy_admin/models/list_attributes_response_inner.rb +176 -0
  112. data/lib/shipeasy_admin/models/list_config_activity_response_inner.rb +280 -0
  113. data/lib/shipeasy_admin/models/list_configs_response.rb +178 -0
  114. data/lib/shipeasy_admin/models/list_configs_response_data_inner.rb +351 -0
  115. data/lib/shipeasy_admin/models/list_configs_response_data_inner_drafts_value.rb +237 -0
  116. data/lib/shipeasy_admin/models/list_configs_response_data_inner_envs_value.rb +237 -0
  117. data/lib/shipeasy_admin/models/list_events_response_inner.rb +344 -0
  118. data/lib/shipeasy_admin/models/list_events_response_inner_properties_inner.rb +259 -0
  119. data/lib/shipeasy_admin/models/list_experiments_response.rb +178 -0
  120. data/lib/shipeasy_admin/models/list_experiments_response_data_inner.rb +688 -0
  121. data/lib/shipeasy_admin/models/list_experiments_response_data_inner_groups_inner.rb +241 -0
  122. data/lib/shipeasy_admin/models/list_gates_response.rb +178 -0
  123. data/lib/shipeasy_admin/models/list_gates_response_data_inner.rb +395 -0
  124. data/lib/shipeasy_admin/models/list_gates_response_data_inner_enabled.rb +104 -0
  125. data/lib/shipeasy_admin/models/list_gates_response_data_inner_rules_inner.rb +238 -0
  126. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner.rb +105 -0
  127. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of.rb +358 -0
  128. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of1.rb +331 -0
  129. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of_ramp.rb +319 -0
  130. data/lib/shipeasy_admin/models/list_i18n_drafts_response_inner.rb +272 -0
  131. data/lib/shipeasy_admin/models/list_i18n_keys_response.rb +195 -0
  132. data/lib/shipeasy_admin/models/list_i18n_keys_response_keys_inner.rb +284 -0
  133. data/lib/shipeasy_admin/models/list_i18n_profiles_response_inner.rb +224 -0
  134. data/lib/shipeasy_admin/models/list_keys_response.rb +180 -0
  135. data/lib/shipeasy_admin/models/list_killswitches_response.rb +178 -0
  136. data/lib/shipeasy_admin/models/list_killswitches_response_data_inner.rb +270 -0
  137. data/lib/shipeasy_admin/models/list_killswitches_response_data_inner_envs_value.rb +248 -0
  138. data/lib/shipeasy_admin/models/list_metrics_response_inner.rb +378 -0
  139. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir.rb +288 -0
  140. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg.rb +113 -0
  141. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of.rb +188 -0
  142. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of1.rb +188 -0
  143. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of2.rb +188 -0
  144. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of3.rb +188 -0
  145. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of4.rb +188 -0
  146. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of5.rb +188 -0
  147. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of6.rb +188 -0
  148. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of7.rb +217 -0
  149. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of8.rb +233 -0
  150. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9.rb +240 -0
  151. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9_numerator.rb +266 -0
  152. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9_numerator_filters_inner.rb +264 -0
  153. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_group_by.rb +228 -0
  154. data/lib/shipeasy_admin/models/list_ops_items_response_inner.rb +349 -0
  155. data/lib/shipeasy_admin/models/list_slack_channels_response.rb +195 -0
  156. data/lib/shipeasy_admin/models/list_slack_channels_response_channels_inner.rb +203 -0
  157. data/lib/shipeasy_admin/models/list_universes_response.rb +178 -0
  158. data/lib/shipeasy_admin/models/list_universes_response_data_inner.rb +305 -0
  159. data/lib/shipeasy_admin/models/notification_target.rb +159 -0
  160. data/lib/shipeasy_admin/models/notification_target_slack_channel.rb +208 -0
  161. data/lib/shipeasy_admin/models/notify_ops_request.rb +261 -0
  162. data/lib/shipeasy_admin/models/notify_ops_response.rb +193 -0
  163. data/lib/shipeasy_admin/models/publish_config_draft_request.rb +187 -0
  164. data/lib/shipeasy_admin/models/publish_config_draft_response.rb +257 -0
  165. data/lib/shipeasy_admin/models/publish_i18n_profile_request.rb +149 -0
  166. data/lib/shipeasy_admin/models/publish_i18n_profile_response.rb +404 -0
  167. data/lib/shipeasy_admin/models/push_i18n_keys_request.rb +205 -0
  168. data/lib/shipeasy_admin/models/push_i18n_keys_request_keys_inner.rb +192 -0
  169. data/lib/shipeasy_admin/models/push_i18n_keys_response.rb +261 -0
  170. data/lib/shipeasy_admin/models/reanalyze_experiment_response.rb +214 -0
  171. data/lib/shipeasy_admin/models/revoke_key_response.rb +216 -0
  172. data/lib/shipeasy_admin/models/save_config_draft_request.rb +199 -0
  173. data/lib/shipeasy_admin/models/save_config_draft_response.rb +283 -0
  174. data/lib/shipeasy_admin/models/search_hit.rb +284 -0
  175. data/lib/shipeasy_admin/models/search_response.rb +167 -0
  176. data/lib/shipeasy_admin/models/set_experiment_metrics_request.rb +168 -0
  177. data/lib/shipeasy_admin/models/set_experiment_metrics_request_metrics_inner.rb +216 -0
  178. data/lib/shipeasy_admin/models/set_experiment_metrics_response.rb +179 -0
  179. data/lib/shipeasy_admin/models/set_experiment_metrics_response_metrics_inner.rb +201 -0
  180. data/lib/shipeasy_admin/models/set_experiment_status_request.rb +190 -0
  181. data/lib/shipeasy_admin/models/set_experiment_status_response.rb +214 -0
  182. data/lib/shipeasy_admin/models/set_i18n_label_request.rb +213 -0
  183. data/lib/shipeasy_admin/models/set_i18n_label_response.rb +472 -0
  184. data/lib/shipeasy_admin/models/set_killswitch_switch_request.rb +261 -0
  185. data/lib/shipeasy_admin/models/set_killswitch_switch_response.rb +285 -0
  186. data/lib/shipeasy_admin/models/set_killswitch_value_request.rb +214 -0
  187. data/lib/shipeasy_admin/models/set_killswitch_value_response.rb +283 -0
  188. data/lib/shipeasy_admin/models/test_connector_response.rb +189 -0
  189. data/lib/shipeasy_admin/models/unset_killswitch_switch_request.rb +234 -0
  190. data/lib/shipeasy_admin/models/unset_killswitch_switch_response.rb +286 -0
  191. data/lib/shipeasy_admin/models/update_alert_rule_request.rb +304 -0
  192. data/lib/shipeasy_admin/models/update_alert_rule_response.rb +165 -0
  193. data/lib/shipeasy_admin/models/update_config_request.rb +198 -0
  194. data/lib/shipeasy_admin/models/update_config_response.rb +165 -0
  195. data/lib/shipeasy_admin/models/update_config_schema_request.rb +168 -0
  196. data/lib/shipeasy_admin/models/update_config_schema_response.rb +165 -0
  197. data/lib/shipeasy_admin/models/update_connector_request.rb +211 -0
  198. data/lib/shipeasy_admin/models/update_connector_response.rb +166 -0
  199. data/lib/shipeasy_admin/models/update_error_status_request.rb +190 -0
  200. data/lib/shipeasy_admin/models/update_event_request.rb +198 -0
  201. data/lib/shipeasy_admin/models/update_event_response.rb +166 -0
  202. data/lib/shipeasy_admin/models/update_experiment_request.rb +747 -0
  203. data/lib/shipeasy_admin/models/update_experiment_response.rb +165 -0
  204. data/lib/shipeasy_admin/models/update_gate_request.rb +403 -0
  205. data/lib/shipeasy_admin/models/update_gate_response.rb +166 -0
  206. data/lib/shipeasy_admin/models/update_i18n_key_request.rb +176 -0
  207. data/lib/shipeasy_admin/models/update_i18n_key_response.rb +166 -0
  208. data/lib/shipeasy_admin/models/update_killswitch_request.rb +224 -0
  209. data/lib/shipeasy_admin/models/update_killswitch_response.rb +165 -0
  210. data/lib/shipeasy_admin/models/update_ops_item_request.rb +205 -0
  211. data/lib/shipeasy_admin/models/update_ops_item_response.rb +166 -0
  212. data/lib/shipeasy_admin/models/update_universe_request.rb +213 -0
  213. data/lib/shipeasy_admin/models/update_universe_response.rb +165 -0
  214. data/lib/shipeasy_admin/models/upsert_project_request.rb +222 -0
  215. data/lib/shipeasy_admin/models/upsert_project_response.rb +260 -0
  216. data/lib/shipeasy_admin/version.rb +15 -0
  217. data/lib/shipeasy_admin.rb +243 -0
  218. metadata +277 -2
@@ -0,0 +1,276 @@
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
+ # Non-secret config for a Copilot trigger.
18
+ class CopilotTriggerConfig < ApiModelBase
19
+ # GitHub repo owner. Together with `repo` forms the connector's idempotency key (`owner/repo`).
20
+ attr_accessor :owner
21
+
22
+ # GitHub repo name.
23
+ attr_accessor :repo
24
+
25
+ # Optional base ref the agent branches from.
26
+ attr_accessor :base_ref
27
+
28
+ # Shipeasy project id the run targets.
29
+ attr_accessor :project_id
30
+
31
+ # Attribute mapping from ruby-style variable name to JSON key.
32
+ def self.attribute_map
33
+ {
34
+ :'owner' => :'owner',
35
+ :'repo' => :'repo',
36
+ :'base_ref' => :'baseRef',
37
+ :'project_id' => :'projectId'
38
+ }
39
+ end
40
+
41
+ # Returns attribute mapping this model knows about
42
+ def self.acceptable_attribute_map
43
+ attribute_map
44
+ end
45
+
46
+ # Returns all the JSON keys this model knows about
47
+ def self.acceptable_attributes
48
+ acceptable_attribute_map.values
49
+ end
50
+
51
+ # Attribute type mapping.
52
+ def self.openapi_types
53
+ {
54
+ :'owner' => :'String',
55
+ :'repo' => :'String',
56
+ :'base_ref' => :'String',
57
+ :'project_id' => :'String'
58
+ }
59
+ end
60
+
61
+ # List of attributes with nullable: true
62
+ def self.openapi_nullable
63
+ Set.new([
64
+ ])
65
+ end
66
+
67
+ # Initializes the object
68
+ # @param [Hash] attributes Model attributes in the form of hash
69
+ def initialize(attributes = {})
70
+ if (!attributes.is_a?(Hash))
71
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Shipeasy::Admin::Generated::CopilotTriggerConfig` initialize method"
72
+ end
73
+
74
+ # check to see if the attribute exists and convert string to symbol for hash key
75
+ acceptable_attribute_map = self.class.acceptable_attribute_map
76
+ attributes = attributes.each_with_object({}) { |(k, v), h|
77
+ if (!acceptable_attribute_map.key?(k.to_sym))
78
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Shipeasy::Admin::Generated::CopilotTriggerConfig`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
79
+ end
80
+ h[k.to_sym] = v
81
+ }
82
+
83
+ if attributes.key?(:'owner')
84
+ self.owner = attributes[:'owner']
85
+ else
86
+ self.owner = nil
87
+ end
88
+
89
+ if attributes.key?(:'repo')
90
+ self.repo = attributes[:'repo']
91
+ else
92
+ self.repo = nil
93
+ end
94
+
95
+ if attributes.key?(:'base_ref')
96
+ self.base_ref = attributes[:'base_ref']
97
+ end
98
+
99
+ if attributes.key?(:'project_id')
100
+ self.project_id = attributes[:'project_id']
101
+ else
102
+ self.project_id = nil
103
+ end
104
+ end
105
+
106
+ # Show invalid properties with the reasons. Usually used together with valid?
107
+ # @return Array for valid properties with the reasons
108
+ def list_invalid_properties
109
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
110
+ invalid_properties = Array.new
111
+ if @owner.nil?
112
+ invalid_properties.push('invalid value for "owner", owner cannot be nil.')
113
+ end
114
+
115
+ if @owner.to_s.length < 1
116
+ invalid_properties.push('invalid value for "owner", the character length must be greater than or equal to 1.')
117
+ end
118
+
119
+ if @repo.nil?
120
+ invalid_properties.push('invalid value for "repo", repo cannot be nil.')
121
+ end
122
+
123
+ if @repo.to_s.length < 1
124
+ invalid_properties.push('invalid value for "repo", the character length must be greater than or equal to 1.')
125
+ end
126
+
127
+ if !@base_ref.nil? && @base_ref.to_s.length < 1
128
+ invalid_properties.push('invalid value for "base_ref", the character length must be greater than or equal to 1.')
129
+ end
130
+
131
+ if @project_id.nil?
132
+ invalid_properties.push('invalid value for "project_id", project_id cannot be nil.')
133
+ end
134
+
135
+ if @project_id.to_s.length < 1
136
+ invalid_properties.push('invalid value for "project_id", the character length must be greater than or equal to 1.')
137
+ end
138
+
139
+ invalid_properties
140
+ end
141
+
142
+ # Check to see if the all the properties in the model are valid
143
+ # @return true if the model is valid
144
+ def valid?
145
+ warn '[DEPRECATED] the `valid?` method is obsolete'
146
+ return false if @owner.nil?
147
+ return false if @owner.to_s.length < 1
148
+ return false if @repo.nil?
149
+ return false if @repo.to_s.length < 1
150
+ return false if !@base_ref.nil? && @base_ref.to_s.length < 1
151
+ return false if @project_id.nil?
152
+ return false if @project_id.to_s.length < 1
153
+ true
154
+ end
155
+
156
+ # Custom attribute writer method with validation
157
+ # @param [Object] owner Value to be assigned
158
+ def owner=(owner)
159
+ if owner.nil?
160
+ fail ArgumentError, 'owner cannot be nil'
161
+ end
162
+
163
+ if owner.to_s.length < 1
164
+ fail ArgumentError, 'invalid value for "owner", the character length must be greater than or equal to 1.'
165
+ end
166
+
167
+ @owner = owner
168
+ end
169
+
170
+ # Custom attribute writer method with validation
171
+ # @param [Object] repo Value to be assigned
172
+ def repo=(repo)
173
+ if repo.nil?
174
+ fail ArgumentError, 'repo cannot be nil'
175
+ end
176
+
177
+ if repo.to_s.length < 1
178
+ fail ArgumentError, 'invalid value for "repo", the character length must be greater than or equal to 1.'
179
+ end
180
+
181
+ @repo = repo
182
+ end
183
+
184
+ # Custom attribute writer method with validation
185
+ # @param [Object] base_ref Value to be assigned
186
+ def base_ref=(base_ref)
187
+ if base_ref.nil?
188
+ fail ArgumentError, 'base_ref cannot be nil'
189
+ end
190
+
191
+ if base_ref.to_s.length < 1
192
+ fail ArgumentError, 'invalid value for "base_ref", the character length must be greater than or equal to 1.'
193
+ end
194
+
195
+ @base_ref = base_ref
196
+ end
197
+
198
+ # Custom attribute writer method with validation
199
+ # @param [Object] project_id Value to be assigned
200
+ def project_id=(project_id)
201
+ if project_id.nil?
202
+ fail ArgumentError, 'project_id cannot be nil'
203
+ end
204
+
205
+ if project_id.to_s.length < 1
206
+ fail ArgumentError, 'invalid value for "project_id", the character length must be greater than or equal to 1.'
207
+ end
208
+
209
+ @project_id = project_id
210
+ end
211
+
212
+ # Checks equality by comparing each attribute.
213
+ # @param [Object] Object to be compared
214
+ def ==(o)
215
+ return true if self.equal?(o)
216
+ self.class == o.class &&
217
+ owner == o.owner &&
218
+ repo == o.repo &&
219
+ base_ref == o.base_ref &&
220
+ project_id == o.project_id
221
+ end
222
+
223
+ # @see the `==` method
224
+ # @param [Object] Object to be compared
225
+ def eql?(o)
226
+ self == o
227
+ end
228
+
229
+ # Calculates hash code according to all attributes.
230
+ # @return [Integer] Hash code
231
+ def hash
232
+ [owner, repo, base_ref, project_id].hash
233
+ end
234
+
235
+ # Builds the object from hash
236
+ # @param [Hash] attributes Model attributes in the form of hash
237
+ # @return [Object] Returns the model itself
238
+ def self.build_from_hash(attributes)
239
+ return nil unless attributes.is_a?(Hash)
240
+ attributes = attributes.transform_keys(&:to_sym)
241
+ transformed_hash = {}
242
+ openapi_types.each_pair do |key, type|
243
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
244
+ transformed_hash["#{key}"] = nil
245
+ elsif type =~ /\AArray<(.*)>/i
246
+ # check to ensure the input is an array given that the attribute
247
+ # is documented as an array but the input is not
248
+ if attributes[attribute_map[key]].is_a?(Array)
249
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
250
+ end
251
+ elsif !attributes[attribute_map[key]].nil?
252
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
253
+ end
254
+ end
255
+ new(transformed_hash)
256
+ end
257
+
258
+ # Returns the object in the form of hash
259
+ # @return [Hash] Returns the object in the form of hash
260
+ def to_hash
261
+ hash = {}
262
+ self.class.attribute_map.each_pair do |attr, param|
263
+ value = self.send(attr)
264
+ if value.nil?
265
+ is_nullable = self.class.openapi_nullable.include?(attr)
266
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
267
+ end
268
+
269
+ hash[param] = _to_hash(value)
270
+ end
271
+ hash
272
+ end
273
+
274
+ end
275
+
276
+ end
@@ -0,0 +1,383 @@
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
+ class CreateAlertRuleRequest < ApiModelBase
18
+ # Human label for the rule, shown on the alert and the rules list.
19
+ attr_accessor :name
20
+
21
+ # Id of the metric to evaluate.
22
+ attr_accessor :metric_id
23
+
24
+ # How the metric value is compared to the threshold (gt/gte/lt/lte).
25
+ attr_accessor :comparator
26
+
27
+ # Threshold the metric value is compared against.
28
+ attr_accessor :threshold
29
+
30
+ # Lookback window (hours) the metric is aggregated over. 1–720.
31
+ attr_accessor :window_hours
32
+
33
+ # Severity of the raised alert.
34
+ attr_accessor :severity
35
+
36
+ # Whether the rule is evaluated by the cron.
37
+ attr_accessor :enabled
38
+
39
+ attr_accessor :notify
40
+
41
+ class EnumAttributeValidator
42
+ attr_reader :datatype
43
+ attr_reader :allowable_values
44
+
45
+ def initialize(datatype, allowable_values)
46
+ @allowable_values = allowable_values.map do |value|
47
+ case datatype.to_s
48
+ when /Integer/i
49
+ value.to_i
50
+ when /Float/i
51
+ value.to_f
52
+ else
53
+ value
54
+ end
55
+ end
56
+ end
57
+
58
+ def valid?(value)
59
+ !value || allowable_values.include?(value)
60
+ end
61
+ end
62
+
63
+ # Attribute mapping from ruby-style variable name to JSON key.
64
+ def self.attribute_map
65
+ {
66
+ :'name' => :'name',
67
+ :'metric_id' => :'metricId',
68
+ :'comparator' => :'comparator',
69
+ :'threshold' => :'threshold',
70
+ :'window_hours' => :'windowHours',
71
+ :'severity' => :'severity',
72
+ :'enabled' => :'enabled',
73
+ :'notify' => :'notify'
74
+ }
75
+ end
76
+
77
+ # Returns attribute mapping this model knows about
78
+ def self.acceptable_attribute_map
79
+ attribute_map
80
+ end
81
+
82
+ # Returns all the JSON keys this model knows about
83
+ def self.acceptable_attributes
84
+ acceptable_attribute_map.values
85
+ end
86
+
87
+ # Attribute type mapping.
88
+ def self.openapi_types
89
+ {
90
+ :'name' => :'String',
91
+ :'metric_id' => :'String',
92
+ :'comparator' => :'String',
93
+ :'threshold' => :'Float',
94
+ :'window_hours' => :'Integer',
95
+ :'severity' => :'String',
96
+ :'enabled' => :'Boolean',
97
+ :'notify' => :'NotificationTarget'
98
+ }
99
+ end
100
+
101
+ # List of attributes with nullable: true
102
+ def self.openapi_nullable
103
+ Set.new([
104
+ :'notify'
105
+ ])
106
+ end
107
+
108
+ # Initializes the object
109
+ # @param [Hash] attributes Model attributes in the form of hash
110
+ def initialize(attributes = {})
111
+ if (!attributes.is_a?(Hash))
112
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Shipeasy::Admin::Generated::CreateAlertRuleRequest` initialize method"
113
+ end
114
+
115
+ # check to see if the attribute exists and convert string to symbol for hash key
116
+ acceptable_attribute_map = self.class.acceptable_attribute_map
117
+ attributes = attributes.each_with_object({}) { |(k, v), h|
118
+ if (!acceptable_attribute_map.key?(k.to_sym))
119
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Shipeasy::Admin::Generated::CreateAlertRuleRequest`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
120
+ end
121
+ h[k.to_sym] = v
122
+ }
123
+
124
+ if attributes.key?(:'name')
125
+ self.name = attributes[:'name']
126
+ else
127
+ self.name = nil
128
+ end
129
+
130
+ if attributes.key?(:'metric_id')
131
+ self.metric_id = attributes[:'metric_id']
132
+ else
133
+ self.metric_id = nil
134
+ end
135
+
136
+ if attributes.key?(:'comparator')
137
+ self.comparator = attributes[:'comparator']
138
+ else
139
+ self.comparator = nil
140
+ end
141
+
142
+ if attributes.key?(:'threshold')
143
+ self.threshold = attributes[:'threshold']
144
+ else
145
+ self.threshold = nil
146
+ end
147
+
148
+ if attributes.key?(:'window_hours')
149
+ self.window_hours = attributes[:'window_hours']
150
+ else
151
+ self.window_hours = 24
152
+ end
153
+
154
+ if attributes.key?(:'severity')
155
+ self.severity = attributes[:'severity']
156
+ else
157
+ self.severity = 'warn'
158
+ end
159
+
160
+ if attributes.key?(:'enabled')
161
+ self.enabled = attributes[:'enabled']
162
+ else
163
+ self.enabled = true
164
+ end
165
+
166
+ if attributes.key?(:'notify')
167
+ self.notify = attributes[:'notify']
168
+ end
169
+ end
170
+
171
+ # Show invalid properties with the reasons. Usually used together with valid?
172
+ # @return Array for valid properties with the reasons
173
+ def list_invalid_properties
174
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
175
+ invalid_properties = Array.new
176
+ if @name.nil?
177
+ invalid_properties.push('invalid value for "name", name cannot be nil.')
178
+ end
179
+
180
+ if @name.to_s.length > 120
181
+ invalid_properties.push('invalid value for "name", the character length must be smaller than or equal to 120.')
182
+ end
183
+
184
+ if @name.to_s.length < 1
185
+ invalid_properties.push('invalid value for "name", the character length must be greater than or equal to 1.')
186
+ end
187
+
188
+ if @metric_id.nil?
189
+ invalid_properties.push('invalid value for "metric_id", metric_id cannot be nil.')
190
+ end
191
+
192
+ if @metric_id.to_s.length < 1
193
+ invalid_properties.push('invalid value for "metric_id", the character length must be greater than or equal to 1.')
194
+ end
195
+
196
+ if @comparator.nil?
197
+ invalid_properties.push('invalid value for "comparator", comparator cannot be nil.')
198
+ end
199
+
200
+ if @threshold.nil?
201
+ invalid_properties.push('invalid value for "threshold", threshold cannot be nil.')
202
+ end
203
+
204
+ if !@window_hours.nil? && @window_hours > 720
205
+ invalid_properties.push('invalid value for "window_hours", must be smaller than or equal to 720.')
206
+ end
207
+
208
+ if !@window_hours.nil? && @window_hours < 1
209
+ invalid_properties.push('invalid value for "window_hours", must be greater than or equal to 1.')
210
+ end
211
+
212
+ invalid_properties
213
+ end
214
+
215
+ # Check to see if the all the properties in the model are valid
216
+ # @return true if the model is valid
217
+ def valid?
218
+ warn '[DEPRECATED] the `valid?` method is obsolete'
219
+ return false if @name.nil?
220
+ return false if @name.to_s.length > 120
221
+ return false if @name.to_s.length < 1
222
+ return false if @metric_id.nil?
223
+ return false if @metric_id.to_s.length < 1
224
+ return false if @comparator.nil?
225
+ comparator_validator = EnumAttributeValidator.new('String', ["gt", "gte", "lt", "lte"])
226
+ return false unless comparator_validator.valid?(@comparator)
227
+ return false if @threshold.nil?
228
+ return false if !@window_hours.nil? && @window_hours > 720
229
+ return false if !@window_hours.nil? && @window_hours < 1
230
+ severity_validator = EnumAttributeValidator.new('String', ["danger", "warn", "info"])
231
+ return false unless severity_validator.valid?(@severity)
232
+ true
233
+ end
234
+
235
+ # Custom attribute writer method with validation
236
+ # @param [Object] name Value to be assigned
237
+ def name=(name)
238
+ if name.nil?
239
+ fail ArgumentError, 'name cannot be nil'
240
+ end
241
+
242
+ if name.to_s.length > 120
243
+ fail ArgumentError, 'invalid value for "name", the character length must be smaller than or equal to 120.'
244
+ end
245
+
246
+ if name.to_s.length < 1
247
+ fail ArgumentError, 'invalid value for "name", the character length must be greater than or equal to 1.'
248
+ end
249
+
250
+ @name = name
251
+ end
252
+
253
+ # Custom attribute writer method with validation
254
+ # @param [Object] metric_id Value to be assigned
255
+ def metric_id=(metric_id)
256
+ if metric_id.nil?
257
+ fail ArgumentError, 'metric_id cannot be nil'
258
+ end
259
+
260
+ if metric_id.to_s.length < 1
261
+ fail ArgumentError, 'invalid value for "metric_id", the character length must be greater than or equal to 1.'
262
+ end
263
+
264
+ @metric_id = metric_id
265
+ end
266
+
267
+ # Custom attribute writer method checking allowed values (enum).
268
+ # @param [Object] comparator Object to be assigned
269
+ def comparator=(comparator)
270
+ validator = EnumAttributeValidator.new('String', ["gt", "gte", "lt", "lte"])
271
+ unless validator.valid?(comparator)
272
+ fail ArgumentError, "invalid value for \"comparator\", must be one of #{validator.allowable_values}."
273
+ end
274
+ @comparator = comparator
275
+ end
276
+
277
+ # Custom attribute writer method with validation
278
+ # @param [Object] threshold Value to be assigned
279
+ def threshold=(threshold)
280
+ if threshold.nil?
281
+ fail ArgumentError, 'threshold cannot be nil'
282
+ end
283
+
284
+ @threshold = threshold
285
+ end
286
+
287
+ # Custom attribute writer method with validation
288
+ # @param [Object] window_hours Value to be assigned
289
+ def window_hours=(window_hours)
290
+ if window_hours.nil?
291
+ fail ArgumentError, 'window_hours cannot be nil'
292
+ end
293
+
294
+ if window_hours > 720
295
+ fail ArgumentError, 'invalid value for "window_hours", must be smaller than or equal to 720.'
296
+ end
297
+
298
+ if window_hours < 1
299
+ fail ArgumentError, 'invalid value for "window_hours", must be greater than or equal to 1.'
300
+ end
301
+
302
+ @window_hours = window_hours
303
+ end
304
+
305
+ # Custom attribute writer method checking allowed values (enum).
306
+ # @param [Object] severity Object to be assigned
307
+ def severity=(severity)
308
+ validator = EnumAttributeValidator.new('String', ["danger", "warn", "info"])
309
+ unless validator.valid?(severity)
310
+ fail ArgumentError, "invalid value for \"severity\", must be one of #{validator.allowable_values}."
311
+ end
312
+ @severity = severity
313
+ end
314
+
315
+ # Checks equality by comparing each attribute.
316
+ # @param [Object] Object to be compared
317
+ def ==(o)
318
+ return true if self.equal?(o)
319
+ self.class == o.class &&
320
+ name == o.name &&
321
+ metric_id == o.metric_id &&
322
+ comparator == o.comparator &&
323
+ threshold == o.threshold &&
324
+ window_hours == o.window_hours &&
325
+ severity == o.severity &&
326
+ enabled == o.enabled &&
327
+ notify == o.notify
328
+ end
329
+
330
+ # @see the `==` method
331
+ # @param [Object] Object to be compared
332
+ def eql?(o)
333
+ self == o
334
+ end
335
+
336
+ # Calculates hash code according to all attributes.
337
+ # @return [Integer] Hash code
338
+ def hash
339
+ [name, metric_id, comparator, threshold, window_hours, severity, enabled, notify].hash
340
+ end
341
+
342
+ # Builds the object from hash
343
+ # @param [Hash] attributes Model attributes in the form of hash
344
+ # @return [Object] Returns the model itself
345
+ def self.build_from_hash(attributes)
346
+ return nil unless attributes.is_a?(Hash)
347
+ attributes = attributes.transform_keys(&:to_sym)
348
+ transformed_hash = {}
349
+ openapi_types.each_pair do |key, type|
350
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
351
+ transformed_hash["#{key}"] = nil
352
+ elsif type =~ /\AArray<(.*)>/i
353
+ # check to ensure the input is an array given that the attribute
354
+ # is documented as an array but the input is not
355
+ if attributes[attribute_map[key]].is_a?(Array)
356
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
357
+ end
358
+ elsif !attributes[attribute_map[key]].nil?
359
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
360
+ end
361
+ end
362
+ new(transformed_hash)
363
+ end
364
+
365
+ # Returns the object in the form of hash
366
+ # @return [Hash] Returns the object in the form of hash
367
+ def to_hash
368
+ hash = {}
369
+ self.class.attribute_map.each_pair do |attr, param|
370
+ value = self.send(attr)
371
+ if value.nil?
372
+ is_nullable = self.class.openapi_nullable.include?(attr)
373
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
374
+ end
375
+
376
+ hash[param] = _to_hash(value)
377
+ end
378
+ hash
379
+ end
380
+
381
+ end
382
+
383
+ end