shipeasy-sdk 3.8.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. checksums.yaml +4 -4
  2. data/docs/skill/SKILL.md +7 -4
  3. data/lib/shipeasy/admin.rb +23 -20
  4. data/lib/shipeasy/sdk/see.rb +7 -5
  5. data/lib/shipeasy/sdk/version.rb +1 -1
  6. data/lib/shipeasy_admin/api/flags_api.rb +127 -214
  7. data/lib/shipeasy_admin/api/killswitch_api.rb +25 -525
  8. data/lib/shipeasy_admin/api/ops_api.rb +44 -351
  9. data/lib/shipeasy_admin/api_client.rb +2 -2
  10. data/lib/shipeasy_admin/api_error.rb +2 -2
  11. data/lib/shipeasy_admin/api_model_base.rb +2 -2
  12. data/lib/shipeasy_admin/configuration.rb +29 -2
  13. data/lib/shipeasy_admin/models/{set_killswitch_value_request.rb → add_to_gate_whitelist_request.rb} +37 -42
  14. data/lib/shipeasy_admin/models/create_public_bug_request.rb +464 -0
  15. data/lib/shipeasy_admin/models/create_public_feature_request_request.rb +407 -0
  16. data/lib/shipeasy_admin/models/{file_error_ticket_response.rb → create_public_ticket_response.rb} +22 -29
  17. data/lib/shipeasy_admin/models/env.rb +2 -2
  18. data/lib/shipeasy_admin/models/error.rb +41 -7
  19. data/lib/shipeasy_admin/models/error_code.rb +14 -3
  20. data/lib/shipeasy_admin/models/{get_experiment_timeseries_response_experiment.rb → gate_whitelist.rb} +51 -42
  21. data/lib/shipeasy_admin/models/gate_whitelist_attr.rb +40 -0
  22. data/lib/shipeasy_admin/models/killswitch_value.rb +2 -2
  23. data/lib/shipeasy_admin/models/notification_target.rb +2 -2
  24. data/lib/shipeasy_admin/models/notification_target_slack_channel.rb +2 -2
  25. data/lib/shipeasy_admin/models/ops_item_priority.rb +42 -0
  26. data/lib/shipeasy_admin/models/ops_item_status.rb +46 -0
  27. data/lib/shipeasy_admin/models/{discard_config_draft_request.rb → remove_from_gate_whitelist_request.rb} +34 -44
  28. data/lib/shipeasy_admin/models/{delete_alert_rule_response.rb → set_gate_whitelist_request.rb} +37 -25
  29. data/lib/shipeasy_admin/models/{set_killswitch_switch_request.rb → toggle_killswitch_request.rb} +30 -72
  30. data/lib/shipeasy_admin/models/{set_killswitch_value_response.rb → toggle_killswitch_response.rb} +100 -6
  31. data/lib/shipeasy_admin/version.rb +2 -2
  32. data/lib/shipeasy_admin.rb +14 -195
  33. metadata +13 -194
  34. data/lib/shipeasy_admin/api/alerts_api.rb +0 -352
  35. data/lib/shipeasy_admin/api/api_keys_api.rb +0 -229
  36. data/lib/shipeasy_admin/api/attributes_api.rb +0 -82
  37. data/lib/shipeasy_admin/api/configs_api.rb +0 -757
  38. data/lib/shipeasy_admin/api/connectors_api.rb +0 -497
  39. data/lib/shipeasy_admin/api/drafts_api.rb +0 -82
  40. data/lib/shipeasy_admin/api/errors_api.rb +0 -389
  41. data/lib/shipeasy_admin/api/events_api.rb +0 -438
  42. data/lib/shipeasy_admin/api/experiments_api.rb +0 -727
  43. data/lib/shipeasy_admin/api/keys_api.rb +0 -317
  44. data/lib/shipeasy_admin/api/metrics_api.rb +0 -281
  45. data/lib/shipeasy_admin/api/profiles_api.rb +0 -222
  46. data/lib/shipeasy_admin/api/projects_api.rb +0 -216
  47. data/lib/shipeasy_admin/api/universes_api.rb +0 -306
  48. data/lib/shipeasy_admin/models/approve_event_request.rb +0 -198
  49. data/lib/shipeasy_admin/models/approve_event_response.rb +0 -166
  50. data/lib/shipeasy_admin/models/claude_trigger_config.rb +0 -204
  51. data/lib/shipeasy_admin/models/connector_event.rb +0 -40
  52. data/lib/shipeasy_admin/models/connector_provider.rb +0 -45
  53. data/lib/shipeasy_admin/models/connector_record.rb +0 -468
  54. data/lib/shipeasy_admin/models/copilot_trigger_config.rb +0 -276
  55. data/lib/shipeasy_admin/models/create_alert_rule_request.rb +0 -383
  56. data/lib/shipeasy_admin/models/create_alert_rule_response.rb +0 -165
  57. data/lib/shipeasy_admin/models/create_claude_trigger_request.rb +0 -309
  58. data/lib/shipeasy_admin/models/create_config_request.rb +0 -291
  59. data/lib/shipeasy_admin/models/create_config_response.rb +0 -201
  60. data/lib/shipeasy_admin/models/create_connector_request.rb +0 -64
  61. data/lib/shipeasy_admin/models/create_connector_response.rb +0 -165
  62. data/lib/shipeasy_admin/models/create_copilot_trigger_request.rb +0 -316
  63. data/lib/shipeasy_admin/models/create_cursor_trigger_request.rb +0 -352
  64. data/lib/shipeasy_admin/models/create_event_request.rb +0 -236
  65. data/lib/shipeasy_admin/models/create_event_response.rb +0 -193
  66. data/lib/shipeasy_admin/models/create_experiment_request.rb +0 -807
  67. data/lib/shipeasy_admin/models/create_experiment_response.rb +0 -212
  68. data/lib/shipeasy_admin/models/create_gate_request.rb +0 -492
  69. data/lib/shipeasy_admin/models/create_gate_response.rb +0 -212
  70. data/lib/shipeasy_admin/models/create_i18n_profile_request.rb +0 -188
  71. data/lib/shipeasy_admin/models/create_i18n_profile_response.rb +0 -193
  72. data/lib/shipeasy_admin/models/create_jules_trigger_request.rb +0 -352
  73. data/lib/shipeasy_admin/models/create_key_request.rb +0 -297
  74. data/lib/shipeasy_admin/models/create_key_response.rb +0 -286
  75. data/lib/shipeasy_admin/models/create_killswitch_request.rb +0 -274
  76. data/lib/shipeasy_admin/models/create_killswitch_response.rb +0 -201
  77. data/lib/shipeasy_admin/models/create_metric_request.rb +0 -403
  78. data/lib/shipeasy_admin/models/create_metric_response.rb +0 -193
  79. data/lib/shipeasy_admin/models/create_o_auth_connector_request.rb +0 -273
  80. data/lib/shipeasy_admin/models/create_ops_item_request.rb +0 -287
  81. data/lib/shipeasy_admin/models/create_ops_item_response.rb +0 -177
  82. data/lib/shipeasy_admin/models/create_universe_request.rb +0 -272
  83. data/lib/shipeasy_admin/models/create_universe_response.rb +0 -212
  84. data/lib/shipeasy_admin/models/cursor_trigger_config.rb +0 -231
  85. data/lib/shipeasy_admin/models/delete_config_response.rb +0 -188
  86. data/lib/shipeasy_admin/models/delete_connector_response.rb +0 -188
  87. data/lib/shipeasy_admin/models/delete_event_response.rb +0 -189
  88. data/lib/shipeasy_admin/models/delete_experiment_response.rb +0 -188
  89. data/lib/shipeasy_admin/models/delete_gate_response.rb +0 -188
  90. data/lib/shipeasy_admin/models/delete_killswitch_response.rb +0 -188
  91. data/lib/shipeasy_admin/models/delete_metric_response.rb +0 -189
  92. data/lib/shipeasy_admin/models/delete_universe_response.rb +0 -188
  93. data/lib/shipeasy_admin/models/disable_gate_response.rb +0 -190
  94. data/lib/shipeasy_admin/models/discard_config_draft_response.rb +0 -188
  95. data/lib/shipeasy_admin/models/enable_gate_response.rb +0 -190
  96. data/lib/shipeasy_admin/models/error_record.rb +0 -597
  97. data/lib/shipeasy_admin/models/error_series_request.rb +0 -251
  98. data/lib/shipeasy_admin/models/error_series_response.rb +0 -195
  99. data/lib/shipeasy_admin/models/error_series_response_rows_inner.rb +0 -192
  100. data/lib/shipeasy_admin/models/experiment_inline_metric.rb +0 -337
  101. data/lib/shipeasy_admin/models/fire_connector_request.rb +0 -149
  102. data/lib/shipeasy_admin/models/fire_connector_response.rb +0 -176
  103. data/lib/shipeasy_admin/models/get_config_response.rb +0 -351
  104. data/lib/shipeasy_admin/models/get_current_project_response.rb +0 -606
  105. data/lib/shipeasy_admin/models/get_current_project_response_module_translations.rb +0 -104
  106. data/lib/shipeasy_admin/models/get_event_response.rb +0 -344
  107. data/lib/shipeasy_admin/models/get_experiment_response.rb +0 -688
  108. data/lib/shipeasy_admin/models/get_experiment_results_response.rb +0 -243
  109. data/lib/shipeasy_admin/models/get_experiment_results_response_experiment.rb +0 -248
  110. data/lib/shipeasy_admin/models/get_experiment_results_response_results_inner.rb +0 -252
  111. data/lib/shipeasy_admin/models/get_experiment_timeseries_response.rb +0 -192
  112. data/lib/shipeasy_admin/models/get_experiment_timeseries_response_series_inner.rb +0 -278
  113. data/lib/shipeasy_admin/models/get_killswitch_response.rb +0 -270
  114. data/lib/shipeasy_admin/models/get_metric_response.rb +0 -378
  115. data/lib/shipeasy_admin/models/get_ops_item_response.rb +0 -349
  116. data/lib/shipeasy_admin/models/jules_trigger_config.rb +0 -240
  117. data/lib/shipeasy_admin/models/key_record.rb +0 -353
  118. data/lib/shipeasy_admin/models/link_pr_to_ops_item_request.rb +0 -186
  119. data/lib/shipeasy_admin/models/link_pr_to_ops_item_response.rb +0 -166
  120. data/lib/shipeasy_admin/models/list_alert_rules_response_inner.rb +0 -478
  121. data/lib/shipeasy_admin/models/list_attributes_response_inner.rb +0 -176
  122. data/lib/shipeasy_admin/models/list_config_activity_response_inner.rb +0 -280
  123. data/lib/shipeasy_admin/models/list_configs_response.rb +0 -178
  124. data/lib/shipeasy_admin/models/list_configs_response_data_inner.rb +0 -351
  125. data/lib/shipeasy_admin/models/list_configs_response_data_inner_drafts_value.rb +0 -237
  126. data/lib/shipeasy_admin/models/list_configs_response_data_inner_envs_value.rb +0 -237
  127. data/lib/shipeasy_admin/models/list_events_response_inner.rb +0 -344
  128. data/lib/shipeasy_admin/models/list_events_response_inner_properties_inner.rb +0 -259
  129. data/lib/shipeasy_admin/models/list_experiments_response.rb +0 -178
  130. data/lib/shipeasy_admin/models/list_experiments_response_data_inner.rb +0 -688
  131. data/lib/shipeasy_admin/models/list_experiments_response_data_inner_groups_inner.rb +0 -241
  132. data/lib/shipeasy_admin/models/list_gates_response.rb +0 -178
  133. data/lib/shipeasy_admin/models/list_gates_response_data_inner.rb +0 -395
  134. data/lib/shipeasy_admin/models/list_gates_response_data_inner_enabled.rb +0 -104
  135. data/lib/shipeasy_admin/models/list_gates_response_data_inner_rules_inner.rb +0 -238
  136. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner.rb +0 -105
  137. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of.rb +0 -358
  138. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of1.rb +0 -331
  139. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of_ramp.rb +0 -319
  140. data/lib/shipeasy_admin/models/list_i18n_drafts_response_inner.rb +0 -272
  141. data/lib/shipeasy_admin/models/list_i18n_keys_response.rb +0 -195
  142. data/lib/shipeasy_admin/models/list_i18n_keys_response_keys_inner.rb +0 -274
  143. data/lib/shipeasy_admin/models/list_i18n_profiles_response_inner.rb +0 -224
  144. data/lib/shipeasy_admin/models/list_keys_response.rb +0 -180
  145. data/lib/shipeasy_admin/models/list_killswitches_response.rb +0 -178
  146. data/lib/shipeasy_admin/models/list_killswitches_response_data_inner.rb +0 -270
  147. data/lib/shipeasy_admin/models/list_killswitches_response_data_inner_envs_value.rb +0 -248
  148. data/lib/shipeasy_admin/models/list_metrics_response_inner.rb +0 -378
  149. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir.rb +0 -288
  150. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg.rb +0 -113
  151. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of.rb +0 -188
  152. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of1.rb +0 -188
  153. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of2.rb +0 -188
  154. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of3.rb +0 -188
  155. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of4.rb +0 -188
  156. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of5.rb +0 -188
  157. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of6.rb +0 -188
  158. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of7.rb +0 -217
  159. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of8.rb +0 -233
  160. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9.rb +0 -240
  161. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9_numerator.rb +0 -266
  162. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9_numerator_filters_inner.rb +0 -264
  163. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_group_by.rb +0 -228
  164. data/lib/shipeasy_admin/models/list_ops_items_response_inner.rb +0 -349
  165. data/lib/shipeasy_admin/models/list_slack_channels_response.rb +0 -195
  166. data/lib/shipeasy_admin/models/list_slack_channels_response_channels_inner.rb +0 -203
  167. data/lib/shipeasy_admin/models/list_universes_response.rb +0 -178
  168. data/lib/shipeasy_admin/models/list_universes_response_data_inner.rb +0 -305
  169. data/lib/shipeasy_admin/models/notify_ops_request.rb +0 -261
  170. data/lib/shipeasy_admin/models/notify_ops_response.rb +0 -193
  171. data/lib/shipeasy_admin/models/publish_config_draft_request.rb +0 -187
  172. data/lib/shipeasy_admin/models/publish_config_draft_response.rb +0 -257
  173. data/lib/shipeasy_admin/models/publish_i18n_profile_response.rb +0 -391
  174. data/lib/shipeasy_admin/models/push_i18n_keys_request.rb +0 -195
  175. data/lib/shipeasy_admin/models/push_i18n_keys_request_keys_inner.rb +0 -192
  176. data/lib/shipeasy_admin/models/push_i18n_keys_response.rb +0 -251
  177. data/lib/shipeasy_admin/models/reanalyze_experiment_response.rb +0 -214
  178. data/lib/shipeasy_admin/models/revoke_key_response.rb +0 -216
  179. data/lib/shipeasy_admin/models/save_config_draft_request.rb +0 -199
  180. data/lib/shipeasy_admin/models/save_config_draft_response.rb +0 -283
  181. data/lib/shipeasy_admin/models/search_hit.rb +0 -284
  182. data/lib/shipeasy_admin/models/search_response.rb +0 -167
  183. data/lib/shipeasy_admin/models/set_experiment_metrics_request.rb +0 -168
  184. data/lib/shipeasy_admin/models/set_experiment_metrics_request_metrics_inner.rb +0 -216
  185. data/lib/shipeasy_admin/models/set_experiment_metrics_response.rb +0 -179
  186. data/lib/shipeasy_admin/models/set_experiment_metrics_response_metrics_inner.rb +0 -201
  187. data/lib/shipeasy_admin/models/set_experiment_status_request.rb +0 -190
  188. data/lib/shipeasy_admin/models/set_experiment_status_response.rb +0 -214
  189. data/lib/shipeasy_admin/models/set_i18n_label_request.rb +0 -213
  190. data/lib/shipeasy_admin/models/set_i18n_label_response.rb +0 -472
  191. data/lib/shipeasy_admin/models/set_killswitch_switch_response.rb +0 -285
  192. data/lib/shipeasy_admin/models/test_connector_response.rb +0 -189
  193. data/lib/shipeasy_admin/models/unset_killswitch_switch_request.rb +0 -234
  194. data/lib/shipeasy_admin/models/unset_killswitch_switch_response.rb +0 -286
  195. data/lib/shipeasy_admin/models/update_alert_rule_request.rb +0 -304
  196. data/lib/shipeasy_admin/models/update_alert_rule_response.rb +0 -165
  197. data/lib/shipeasy_admin/models/update_config_request.rb +0 -198
  198. data/lib/shipeasy_admin/models/update_config_response.rb +0 -165
  199. data/lib/shipeasy_admin/models/update_config_schema_request.rb +0 -168
  200. data/lib/shipeasy_admin/models/update_config_schema_response.rb +0 -165
  201. data/lib/shipeasy_admin/models/update_connector_request.rb +0 -211
  202. data/lib/shipeasy_admin/models/update_connector_response.rb +0 -166
  203. data/lib/shipeasy_admin/models/update_error_status_request.rb +0 -190
  204. data/lib/shipeasy_admin/models/update_event_request.rb +0 -198
  205. data/lib/shipeasy_admin/models/update_event_response.rb +0 -166
  206. data/lib/shipeasy_admin/models/update_experiment_request.rb +0 -747
  207. data/lib/shipeasy_admin/models/update_experiment_response.rb +0 -165
  208. data/lib/shipeasy_admin/models/update_gate_request.rb +0 -403
  209. data/lib/shipeasy_admin/models/update_gate_response.rb +0 -166
  210. data/lib/shipeasy_admin/models/update_i18n_key_request.rb +0 -176
  211. data/lib/shipeasy_admin/models/update_i18n_key_response.rb +0 -166
  212. data/lib/shipeasy_admin/models/update_killswitch_request.rb +0 -224
  213. data/lib/shipeasy_admin/models/update_killswitch_response.rb +0 -165
  214. data/lib/shipeasy_admin/models/update_ops_item_request.rb +0 -205
  215. data/lib/shipeasy_admin/models/update_ops_item_response.rb +0 -166
  216. data/lib/shipeasy_admin/models/update_universe_request.rb +0 -213
  217. data/lib/shipeasy_admin/models/update_universe_response.rb +0 -165
  218. data/lib/shipeasy_admin/models/upsert_project_request.rb +0 -222
  219. data/lib/shipeasy_admin/models/upsert_project_response.rb +0 -260
@@ -1,212 +0,0 @@
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 CreateExperimentResponse < ApiModelBase
18
- # Newly assigned experiment id.
19
- attr_accessor :id
20
-
21
- # Stable experiment key. Single segment or `folder.name` (a-z, 0-9, `_`/`-`; max 128 chars). Used by SDKs as `Shipeasy.getExperiment(user, '<name>')`. Immutable after create.
22
- attr_accessor :name
23
-
24
- # Attribute mapping from ruby-style variable name to JSON key.
25
- def self.attribute_map
26
- {
27
- :'id' => :'id',
28
- :'name' => :'name'
29
- }
30
- end
31
-
32
- # Returns attribute mapping this model knows about
33
- def self.acceptable_attribute_map
34
- attribute_map
35
- end
36
-
37
- # Returns all the JSON keys this model knows about
38
- def self.acceptable_attributes
39
- acceptable_attribute_map.values
40
- end
41
-
42
- # Attribute type mapping.
43
- def self.openapi_types
44
- {
45
- :'id' => :'String',
46
- :'name' => :'String'
47
- }
48
- end
49
-
50
- # List of attributes with nullable: true
51
- def self.openapi_nullable
52
- Set.new([
53
- ])
54
- end
55
-
56
- # Initializes the object
57
- # @param [Hash] attributes Model attributes in the form of hash
58
- def initialize(attributes = {})
59
- if (!attributes.is_a?(Hash))
60
- fail ArgumentError, "The input argument (attributes) must be a hash in `Shipeasy::Admin::Generated::CreateExperimentResponse` initialize method"
61
- end
62
-
63
- # check to see if the attribute exists and convert string to symbol for hash key
64
- acceptable_attribute_map = self.class.acceptable_attribute_map
65
- attributes = attributes.each_with_object({}) { |(k, v), h|
66
- if (!acceptable_attribute_map.key?(k.to_sym))
67
- fail ArgumentError, "`#{k}` is not a valid attribute in `Shipeasy::Admin::Generated::CreateExperimentResponse`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
68
- end
69
- h[k.to_sym] = v
70
- }
71
-
72
- if attributes.key?(:'id')
73
- self.id = attributes[:'id']
74
- else
75
- self.id = nil
76
- end
77
-
78
- if attributes.key?(:'name')
79
- self.name = attributes[:'name']
80
- else
81
- self.name = nil
82
- end
83
- end
84
-
85
- # Show invalid properties with the reasons. Usually used together with valid?
86
- # @return Array for valid properties with the reasons
87
- def list_invalid_properties
88
- warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
89
- invalid_properties = Array.new
90
- if @id.nil?
91
- invalid_properties.push('invalid value for "id", id cannot be nil.')
92
- end
93
-
94
- if @name.nil?
95
- invalid_properties.push('invalid value for "name", name cannot be nil.')
96
- end
97
-
98
- if @name.to_s.length > 128
99
- invalid_properties.push('invalid value for "name", the character length must be smaller than or equal to 128.')
100
- end
101
-
102
- pattern = Regexp.new(/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?)?$/)
103
- if @name !~ pattern
104
- invalid_properties.push("invalid value for \"name\", must conform to the pattern #{pattern}.")
105
- end
106
-
107
- invalid_properties
108
- end
109
-
110
- # Check to see if the all the properties in the model are valid
111
- # @return true if the model is valid
112
- def valid?
113
- warn '[DEPRECATED] the `valid?` method is obsolete'
114
- return false if @id.nil?
115
- return false if @name.nil?
116
- return false if @name.to_s.length > 128
117
- return false if @name !~ Regexp.new(/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?)?$/)
118
- true
119
- end
120
-
121
- # Custom attribute writer method with validation
122
- # @param [Object] id Value to be assigned
123
- def id=(id)
124
- if id.nil?
125
- fail ArgumentError, 'id cannot be nil'
126
- end
127
-
128
- @id = id
129
- end
130
-
131
- # Custom attribute writer method with validation
132
- # @param [Object] name Value to be assigned
133
- def name=(name)
134
- if name.nil?
135
- fail ArgumentError, 'name cannot be nil'
136
- end
137
-
138
- if name.to_s.length > 128
139
- fail ArgumentError, 'invalid value for "name", the character length must be smaller than or equal to 128.'
140
- end
141
-
142
- pattern = Regexp.new(/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?)?$/)
143
- if name !~ pattern
144
- fail ArgumentError, "invalid value for \"name\", must conform to the pattern #{pattern}."
145
- end
146
-
147
- @name = name
148
- end
149
-
150
- # Checks equality by comparing each attribute.
151
- # @param [Object] Object to be compared
152
- def ==(o)
153
- return true if self.equal?(o)
154
- self.class == o.class &&
155
- id == o.id &&
156
- name == o.name
157
- end
158
-
159
- # @see the `==` method
160
- # @param [Object] Object to be compared
161
- def eql?(o)
162
- self == o
163
- end
164
-
165
- # Calculates hash code according to all attributes.
166
- # @return [Integer] Hash code
167
- def hash
168
- [id, name].hash
169
- end
170
-
171
- # Builds the object from hash
172
- # @param [Hash] attributes Model attributes in the form of hash
173
- # @return [Object] Returns the model itself
174
- def self.build_from_hash(attributes)
175
- return nil unless attributes.is_a?(Hash)
176
- attributes = attributes.transform_keys(&:to_sym)
177
- transformed_hash = {}
178
- openapi_types.each_pair do |key, type|
179
- if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
180
- transformed_hash["#{key}"] = nil
181
- elsif type =~ /\AArray<(.*)>/i
182
- # check to ensure the input is an array given that the attribute
183
- # is documented as an array but the input is not
184
- if attributes[attribute_map[key]].is_a?(Array)
185
- transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
186
- end
187
- elsif !attributes[attribute_map[key]].nil?
188
- transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
189
- end
190
- end
191
- new(transformed_hash)
192
- end
193
-
194
- # Returns the object in the form of hash
195
- # @return [Hash] Returns the object in the form of hash
196
- def to_hash
197
- hash = {}
198
- self.class.attribute_map.each_pair do |attr, param|
199
- value = self.send(attr)
200
- if value.nil?
201
- is_nullable = self.class.openapi_nullable.include?(attr)
202
- next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
203
- end
204
-
205
- hash[param] = _to_hash(value)
206
- end
207
- hash
208
- end
209
-
210
- end
211
-
212
- end
@@ -1,492 +0,0 @@
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
- # Body for `POST /api/admin/gates`. At minimum supply `name`; everything else has sensible defaults.
18
- class CreateGateRequest < ApiModelBase
19
- # Stable gate key used by SDKs (`Shipeasy.checkGate(user, '<name>')`). Single segment or `folder.name`. Lowercase letters, digits, `_` or `-`; max 128 chars. Immutable after create — rename = delete + recreate.
20
- attr_accessor :name
21
-
22
- # Master switch. Defaults to `true`. Set `false` to create the gate disabled (evaluates to `false` regardless of rules/rollout); flip on via `POST /{id}/enable` or PATCH.
23
- attr_accessor :enabled
24
-
25
- # Initial rollout in **basis points** (0–10000 = 0%–100%) — `100` here means **1%**, not 100%. Use `rollout_percent` (0–100) below if you'd rather think in percent. Use `0` to create the gate dark and ramp via PATCH after deploy validation.
26
- attr_accessor :rollout_pct
27
-
28
- # Initial rollout as a **percentage** (0–100, fractional ok). Friendlier alias for `rollout_pct`; converted internally to basis points (e.g. `100` here = 10000 bp = 100%). If both `rollout_pct` and `rollout_percent` are set, `rollout_percent` wins.
29
- attr_accessor :rollout_percent
30
-
31
- # Targeting predicates. AND-combined. If non-empty, the gate returns `true` only for callers that satisfy every rule **and** fall under `rollout_pct`.
32
- attr_accessor :rules
33
-
34
- # Hash salt for percentage bucketing. Auto-generated if omitted. Provide explicitly to keep a gate's buckets stable across delete/recreate. **Immutable after create** — there is no PATCH for `salt` because changing it would re-bucket every caller.
35
- attr_accessor :salt
36
-
37
- # Optional gatekeeper stack. When provided, takes precedence over `rules` + `rollout_pct` at evaluation time. Omit (or pass `null`) for a flat gate.
38
- attr_accessor :stack
39
-
40
- # Human-readable title shown in the dashboard. Free-form, no key format constraint.
41
- attr_accessor :title
42
-
43
- # Long-form description / runbook. Markdown is rendered in the dashboard.
44
- attr_accessor :description
45
-
46
- # Optional folder name grouping items in the dashboard. Alphanumeric, `_` or `-` (no `/`). Part of the SDK lookup key (`<folder>/<name>`).
47
- attr_accessor :folder
48
-
49
- # Group label for dashboard organisation (e.g. team or product area).
50
- attr_accessor :group
51
-
52
- # Owner contact. Displayed verbatim; not used for auth.
53
- attr_accessor :owner_email
54
-
55
- # Attribute mapping from ruby-style variable name to JSON key.
56
- def self.attribute_map
57
- {
58
- :'name' => :'name',
59
- :'enabled' => :'enabled',
60
- :'rollout_pct' => :'rollout_pct',
61
- :'rollout_percent' => :'rollout_percent',
62
- :'rules' => :'rules',
63
- :'salt' => :'salt',
64
- :'stack' => :'stack',
65
- :'title' => :'title',
66
- :'description' => :'description',
67
- :'folder' => :'folder',
68
- :'group' => :'group',
69
- :'owner_email' => :'owner_email'
70
- }
71
- end
72
-
73
- # Returns attribute mapping this model knows about
74
- def self.acceptable_attribute_map
75
- attribute_map
76
- end
77
-
78
- # Returns all the JSON keys this model knows about
79
- def self.acceptable_attributes
80
- acceptable_attribute_map.values
81
- end
82
-
83
- # Attribute type mapping.
84
- def self.openapi_types
85
- {
86
- :'name' => :'String',
87
- :'enabled' => :'Boolean',
88
- :'rollout_pct' => :'Integer',
89
- :'rollout_percent' => :'Float',
90
- :'rules' => :'Array<ListGatesResponseDataInnerRulesInner>',
91
- :'salt' => :'String',
92
- :'stack' => :'Array<ListGatesResponseDataInnerStackInner>',
93
- :'title' => :'String',
94
- :'description' => :'String',
95
- :'folder' => :'String',
96
- :'group' => :'String',
97
- :'owner_email' => :'String'
98
- }
99
- end
100
-
101
- # List of attributes with nullable: true
102
- def self.openapi_nullable
103
- Set.new([
104
- :'stack',
105
- :'folder',
106
- ])
107
- end
108
-
109
- # Initializes the object
110
- # @param [Hash] attributes Model attributes in the form of hash
111
- def initialize(attributes = {})
112
- if (!attributes.is_a?(Hash))
113
- fail ArgumentError, "The input argument (attributes) must be a hash in `Shipeasy::Admin::Generated::CreateGateRequest` initialize method"
114
- end
115
-
116
- # check to see if the attribute exists and convert string to symbol for hash key
117
- acceptable_attribute_map = self.class.acceptable_attribute_map
118
- attributes = attributes.each_with_object({}) { |(k, v), h|
119
- if (!acceptable_attribute_map.key?(k.to_sym))
120
- fail ArgumentError, "`#{k}` is not a valid attribute in `Shipeasy::Admin::Generated::CreateGateRequest`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
121
- end
122
- h[k.to_sym] = v
123
- }
124
-
125
- if attributes.key?(:'name')
126
- self.name = attributes[:'name']
127
- else
128
- self.name = nil
129
- end
130
-
131
- if attributes.key?(:'enabled')
132
- self.enabled = attributes[:'enabled']
133
- else
134
- self.enabled = true
135
- end
136
-
137
- if attributes.key?(:'rollout_pct')
138
- self.rollout_pct = attributes[:'rollout_pct']
139
- else
140
- self.rollout_pct = 0
141
- end
142
-
143
- if attributes.key?(:'rollout_percent')
144
- self.rollout_percent = attributes[:'rollout_percent']
145
- end
146
-
147
- if attributes.key?(:'rules')
148
- if (value = attributes[:'rules']).is_a?(Array)
149
- self.rules = value
150
- end
151
- end
152
-
153
- if attributes.key?(:'salt')
154
- self.salt = attributes[:'salt']
155
- end
156
-
157
- if attributes.key?(:'stack')
158
- if (value = attributes[:'stack']).is_a?(Array)
159
- self.stack = value
160
- end
161
- end
162
-
163
- if attributes.key?(:'title')
164
- self.title = attributes[:'title']
165
- end
166
-
167
- if attributes.key?(:'description')
168
- self.description = attributes[:'description']
169
- end
170
-
171
- if attributes.key?(:'folder')
172
- self.folder = attributes[:'folder']
173
- end
174
-
175
- if attributes.key?(:'group')
176
- self.group = attributes[:'group']
177
- end
178
-
179
- if attributes.key?(:'owner_email')
180
- self.owner_email = attributes[:'owner_email']
181
- end
182
- end
183
-
184
- # Show invalid properties with the reasons. Usually used together with valid?
185
- # @return Array for valid properties with the reasons
186
- def list_invalid_properties
187
- warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
188
- invalid_properties = Array.new
189
- if @name.nil?
190
- invalid_properties.push('invalid value for "name", name cannot be nil.')
191
- end
192
-
193
- if @name.to_s.length > 128
194
- invalid_properties.push('invalid value for "name", the character length must be smaller than or equal to 128.')
195
- end
196
-
197
- pattern = Regexp.new(/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?)?$/)
198
- if @name !~ pattern
199
- invalid_properties.push("invalid value for \"name\", must conform to the pattern #{pattern}.")
200
- end
201
-
202
- if !@rollout_pct.nil? && @rollout_pct > 10000
203
- invalid_properties.push('invalid value for "rollout_pct", must be smaller than or equal to 10000.')
204
- end
205
-
206
- if !@rollout_pct.nil? && @rollout_pct < 0
207
- invalid_properties.push('invalid value for "rollout_pct", must be greater than or equal to 0.')
208
- end
209
-
210
- if !@rollout_percent.nil? && @rollout_percent > 100
211
- invalid_properties.push('invalid value for "rollout_percent", must be smaller than or equal to 100.')
212
- end
213
-
214
- if !@rollout_percent.nil? && @rollout_percent < 0
215
- invalid_properties.push('invalid value for "rollout_percent", must be greater than or equal to 0.')
216
- end
217
-
218
- if !@salt.nil? && @salt.to_s.length > 64
219
- invalid_properties.push('invalid value for "salt", the character length must be smaller than or equal to 64.')
220
- end
221
-
222
- if !@salt.nil? && @salt.to_s.length < 1
223
- invalid_properties.push('invalid value for "salt", the character length must be greater than or equal to 1.')
224
- end
225
-
226
- if !@title.nil? && @title.to_s.length > 140
227
- invalid_properties.push('invalid value for "title", the character length must be smaller than or equal to 140.')
228
- end
229
-
230
- if !@description.nil? && @description.to_s.length > 2000
231
- invalid_properties.push('invalid value for "description", the character length must be smaller than or equal to 2000.')
232
- end
233
-
234
- if !@folder.nil? && @folder.to_s.length > 256
235
- invalid_properties.push('invalid value for "folder", the character length must be smaller than or equal to 256.')
236
- end
237
-
238
- pattern = Regexp.new(/^[a-zA-Z0-9_-]+$/)
239
- if !@folder.nil? && @folder !~ pattern
240
- invalid_properties.push("invalid value for \"folder\", must conform to the pattern #{pattern}.")
241
- end
242
-
243
- if !@group.nil? && @group.to_s.length > 64
244
- invalid_properties.push('invalid value for "group", the character length must be smaller than or equal to 64.')
245
- end
246
-
247
- if !@owner_email.nil? && @owner_email.to_s.length > 190
248
- invalid_properties.push('invalid value for "owner_email", the character length must be smaller than or equal to 190.')
249
- end
250
-
251
- invalid_properties
252
- end
253
-
254
- # Check to see if the all the properties in the model are valid
255
- # @return true if the model is valid
256
- def valid?
257
- warn '[DEPRECATED] the `valid?` method is obsolete'
258
- return false if @name.nil?
259
- return false if @name.to_s.length > 128
260
- return false if @name !~ Regexp.new(/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?)?$/)
261
- return false if !@rollout_pct.nil? && @rollout_pct > 10000
262
- return false if !@rollout_pct.nil? && @rollout_pct < 0
263
- return false if !@rollout_percent.nil? && @rollout_percent > 100
264
- return false if !@rollout_percent.nil? && @rollout_percent < 0
265
- return false if !@salt.nil? && @salt.to_s.length > 64
266
- return false if !@salt.nil? && @salt.to_s.length < 1
267
- return false if !@title.nil? && @title.to_s.length > 140
268
- return false if !@description.nil? && @description.to_s.length > 2000
269
- return false if !@folder.nil? && @folder.to_s.length > 256
270
- return false if !@folder.nil? && @folder !~ Regexp.new(/^[a-zA-Z0-9_-]+$/)
271
- return false if !@group.nil? && @group.to_s.length > 64
272
- return false if !@owner_email.nil? && @owner_email.to_s.length > 190
273
- true
274
- end
275
-
276
- # Custom attribute writer method with validation
277
- # @param [Object] name Value to be assigned
278
- def name=(name)
279
- if name.nil?
280
- fail ArgumentError, 'name cannot be nil'
281
- end
282
-
283
- if name.to_s.length > 128
284
- fail ArgumentError, 'invalid value for "name", the character length must be smaller than or equal to 128.'
285
- end
286
-
287
- pattern = Regexp.new(/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?)?$/)
288
- if name !~ pattern
289
- fail ArgumentError, "invalid value for \"name\", must conform to the pattern #{pattern}."
290
- end
291
-
292
- @name = name
293
- end
294
-
295
- # Custom attribute writer method with validation
296
- # @param [Object] rollout_pct Value to be assigned
297
- def rollout_pct=(rollout_pct)
298
- if rollout_pct.nil?
299
- fail ArgumentError, 'rollout_pct cannot be nil'
300
- end
301
-
302
- if rollout_pct > 10000
303
- fail ArgumentError, 'invalid value for "rollout_pct", must be smaller than or equal to 10000.'
304
- end
305
-
306
- if rollout_pct < 0
307
- fail ArgumentError, 'invalid value for "rollout_pct", must be greater than or equal to 0.'
308
- end
309
-
310
- @rollout_pct = rollout_pct
311
- end
312
-
313
- # Custom attribute writer method with validation
314
- # @param [Object] rollout_percent Value to be assigned
315
- def rollout_percent=(rollout_percent)
316
- if rollout_percent.nil?
317
- fail ArgumentError, 'rollout_percent cannot be nil'
318
- end
319
-
320
- if rollout_percent > 100
321
- fail ArgumentError, 'invalid value for "rollout_percent", must be smaller than or equal to 100.'
322
- end
323
-
324
- if rollout_percent < 0
325
- fail ArgumentError, 'invalid value for "rollout_percent", must be greater than or equal to 0.'
326
- end
327
-
328
- @rollout_percent = rollout_percent
329
- end
330
-
331
- # Custom attribute writer method with validation
332
- # @param [Object] salt Value to be assigned
333
- def salt=(salt)
334
- if salt.nil?
335
- fail ArgumentError, 'salt cannot be nil'
336
- end
337
-
338
- if salt.to_s.length > 64
339
- fail ArgumentError, 'invalid value for "salt", the character length must be smaller than or equal to 64.'
340
- end
341
-
342
- if salt.to_s.length < 1
343
- fail ArgumentError, 'invalid value for "salt", the character length must be greater than or equal to 1.'
344
- end
345
-
346
- @salt = salt
347
- end
348
-
349
- # Custom attribute writer method with validation
350
- # @param [Object] title Value to be assigned
351
- def title=(title)
352
- if title.nil?
353
- fail ArgumentError, 'title cannot be nil'
354
- end
355
-
356
- if title.to_s.length > 140
357
- fail ArgumentError, 'invalid value for "title", the character length must be smaller than or equal to 140.'
358
- end
359
-
360
- @title = title
361
- end
362
-
363
- # Custom attribute writer method with validation
364
- # @param [Object] description Value to be assigned
365
- def description=(description)
366
- if description.nil?
367
- fail ArgumentError, 'description cannot be nil'
368
- end
369
-
370
- if description.to_s.length > 2000
371
- fail ArgumentError, 'invalid value for "description", the character length must be smaller than or equal to 2000.'
372
- end
373
-
374
- @description = description
375
- end
376
-
377
- # Custom attribute writer method with validation
378
- # @param [Object] folder Value to be assigned
379
- def folder=(folder)
380
- if !folder.nil? && folder.to_s.length > 256
381
- fail ArgumentError, 'invalid value for "folder", the character length must be smaller than or equal to 256.'
382
- end
383
-
384
- pattern = Regexp.new(/^[a-zA-Z0-9_-]+$/)
385
- if !folder.nil? && folder !~ pattern
386
- fail ArgumentError, "invalid value for \"folder\", must conform to the pattern #{pattern}."
387
- end
388
-
389
- @folder = folder
390
- end
391
-
392
- # Custom attribute writer method with validation
393
- # @param [Object] group Value to be assigned
394
- def group=(group)
395
- if group.nil?
396
- fail ArgumentError, 'group cannot be nil'
397
- end
398
-
399
- if group.to_s.length > 64
400
- fail ArgumentError, 'invalid value for "group", the character length must be smaller than or equal to 64.'
401
- end
402
-
403
- @group = group
404
- end
405
-
406
- # Custom attribute writer method with validation
407
- # @param [Object] owner_email Value to be assigned
408
- def owner_email=(owner_email)
409
- if owner_email.nil?
410
- fail ArgumentError, 'owner_email cannot be nil'
411
- end
412
-
413
- if owner_email.to_s.length > 190
414
- fail ArgumentError, 'invalid value for "owner_email", the character length must be smaller than or equal to 190.'
415
- end
416
-
417
- @owner_email = owner_email
418
- end
419
-
420
- # Checks equality by comparing each attribute.
421
- # @param [Object] Object to be compared
422
- def ==(o)
423
- return true if self.equal?(o)
424
- self.class == o.class &&
425
- name == o.name &&
426
- enabled == o.enabled &&
427
- rollout_pct == o.rollout_pct &&
428
- rollout_percent == o.rollout_percent &&
429
- rules == o.rules &&
430
- salt == o.salt &&
431
- stack == o.stack &&
432
- title == o.title &&
433
- description == o.description &&
434
- folder == o.folder &&
435
- group == o.group &&
436
- owner_email == o.owner_email
437
- end
438
-
439
- # @see the `==` method
440
- # @param [Object] Object to be compared
441
- def eql?(o)
442
- self == o
443
- end
444
-
445
- # Calculates hash code according to all attributes.
446
- # @return [Integer] Hash code
447
- def hash
448
- [name, enabled, rollout_pct, rollout_percent, rules, salt, stack, title, description, folder, group, owner_email].hash
449
- end
450
-
451
- # Builds the object from hash
452
- # @param [Hash] attributes Model attributes in the form of hash
453
- # @return [Object] Returns the model itself
454
- def self.build_from_hash(attributes)
455
- return nil unless attributes.is_a?(Hash)
456
- attributes = attributes.transform_keys(&:to_sym)
457
- transformed_hash = {}
458
- openapi_types.each_pair do |key, type|
459
- if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
460
- transformed_hash["#{key}"] = nil
461
- elsif type =~ /\AArray<(.*)>/i
462
- # check to ensure the input is an array given that the attribute
463
- # is documented as an array but the input is not
464
- if attributes[attribute_map[key]].is_a?(Array)
465
- transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
466
- end
467
- elsif !attributes[attribute_map[key]].nil?
468
- transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
469
- end
470
- end
471
- new(transformed_hash)
472
- end
473
-
474
- # Returns the object in the form of hash
475
- # @return [Hash] Returns the object in the form of hash
476
- def to_hash
477
- hash = {}
478
- self.class.attribute_map.each_pair do |attr, param|
479
- value = self.send(attr)
480
- if value.nil?
481
- is_nullable = self.class.openapi_nullable.include?(attr)
482
- next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
483
- end
484
-
485
- hash[param] = _to_hash(value)
486
- end
487
- hash
488
- end
489
-
490
- end
491
-
492
- end