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,7 +1,7 @@
1
1
  =begin
2
- #Shipeasy Admin API
2
+ #Shipeasy Admin API (server-SDK surface)
3
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.
4
+ #The slice of the Shipeasy admin API that the published server SDKs expose as their optional `AdminClient`. Authenticate with an admin SDK key (`Authorization: Bearer sdk_admin_…`) and scope every request to a project via the `X-Project-Id` header. Three capabilities, nothing else: - **File a public ticket** — a bug or a feature request onto the project's ops queue. - **Toggle a kill switch** — flip the switch itself, or one of its named sub-switches, on one environment. - **Manage a flag's whitelist** — read, replace, add to, or remove from the allowlist that admits specific identities ahead of every targeting rule. Everything else in the admin API is reachable through the Shipeasy CLI and MCP server, which speak the complete contract (`openapi.yaml`).
5
5
 
6
6
  The version of the OpenAPI document: 2.0.0
7
7
 
@@ -14,8 +14,13 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Shipeasy::Admin::Generated
17
- class DeleteAlertRuleResponse < ApiModelBase
18
- attr_accessor :ok
17
+ # Body for `PUT /api/admin/gates/{id}/whitelist`. Replaces the whole list — idempotent, and the only call that can switch `attr` or clear the whitelist.
18
+ class SetGateWhitelistRequest < ApiModelBase
19
+ # Identity attribute to match on. Defaults to the whitelist's current attribute, or `email` when the gate has no whitelist yet.
20
+ attr_accessor :attr
21
+
22
+ # The complete whitelist after the call. Pass `[]` to remove the whitelist from the gate entirely.
23
+ attr_accessor :entries
19
24
 
20
25
  class EnumAttributeValidator
21
26
  attr_reader :datatype
@@ -42,7 +47,8 @@ module Shipeasy::Admin::Generated
42
47
  # Attribute mapping from ruby-style variable name to JSON key.
43
48
  def self.attribute_map
44
49
  {
45
- :'ok' => :'ok'
50
+ :'attr' => :'attr',
51
+ :'entries' => :'entries'
46
52
  }
47
53
  end
48
54
 
@@ -59,7 +65,8 @@ module Shipeasy::Admin::Generated
59
65
  # Attribute type mapping.
60
66
  def self.openapi_types
61
67
  {
62
- :'ok' => :'Boolean'
68
+ :'attr' => :'GateWhitelistAttr',
69
+ :'entries' => :'Array<String>'
63
70
  }
64
71
  end
65
72
 
@@ -73,22 +80,28 @@ module Shipeasy::Admin::Generated
73
80
  # @param [Hash] attributes Model attributes in the form of hash
74
81
  def initialize(attributes = {})
75
82
  if (!attributes.is_a?(Hash))
76
- fail ArgumentError, "The input argument (attributes) must be a hash in `Shipeasy::Admin::Generated::DeleteAlertRuleResponse` initialize method"
83
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Shipeasy::Admin::Generated::SetGateWhitelistRequest` initialize method"
77
84
  end
78
85
 
79
86
  # check to see if the attribute exists and convert string to symbol for hash key
80
87
  acceptable_attribute_map = self.class.acceptable_attribute_map
81
88
  attributes = attributes.each_with_object({}) { |(k, v), h|
82
89
  if (!acceptable_attribute_map.key?(k.to_sym))
83
- fail ArgumentError, "`#{k}` is not a valid attribute in `Shipeasy::Admin::Generated::DeleteAlertRuleResponse`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
90
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Shipeasy::Admin::Generated::SetGateWhitelistRequest`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
84
91
  end
85
92
  h[k.to_sym] = v
86
93
  }
87
94
 
88
- if attributes.key?(:'ok')
89
- self.ok = attributes[:'ok']
95
+ if attributes.key?(:'attr')
96
+ self.attr = attributes[:'attr']
97
+ end
98
+
99
+ if attributes.key?(:'entries')
100
+ if (value = attributes[:'entries']).is_a?(Array)
101
+ self.entries = value
102
+ end
90
103
  else
91
- self.ok = nil
104
+ self.entries = nil
92
105
  end
93
106
  end
94
107
 
@@ -97,8 +110,8 @@ module Shipeasy::Admin::Generated
97
110
  def list_invalid_properties
98
111
  warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
99
112
  invalid_properties = Array.new
100
- if @ok.nil?
101
- invalid_properties.push('invalid value for "ok", ok cannot be nil.')
113
+ if @entries.nil?
114
+ invalid_properties.push('invalid value for "entries", entries cannot be nil.')
102
115
  end
103
116
 
104
117
  invalid_properties
@@ -108,20 +121,18 @@ module Shipeasy::Admin::Generated
108
121
  # @return true if the model is valid
109
122
  def valid?
110
123
  warn '[DEPRECATED] the `valid?` method is obsolete'
111
- return false if @ok.nil?
112
- ok_validator = EnumAttributeValidator.new('Boolean', ["true"])
113
- return false unless ok_validator.valid?(@ok)
124
+ return false if @entries.nil?
114
125
  true
115
126
  end
116
127
 
117
- # Custom attribute writer method checking allowed values (enum).
118
- # @param [Object] ok Object to be assigned
119
- def ok=(ok)
120
- validator = EnumAttributeValidator.new('Boolean', ["true"])
121
- unless validator.valid?(ok)
122
- fail ArgumentError, "invalid value for \"ok\", must be one of #{validator.allowable_values}."
128
+ # Custom attribute writer method with validation
129
+ # @param [Object] entries Value to be assigned
130
+ def entries=(entries)
131
+ if entries.nil?
132
+ fail ArgumentError, 'entries cannot be nil'
123
133
  end
124
- @ok = ok
134
+
135
+ @entries = entries
125
136
  end
126
137
 
127
138
  # Checks equality by comparing each attribute.
@@ -129,7 +140,8 @@ module Shipeasy::Admin::Generated
129
140
  def ==(o)
130
141
  return true if self.equal?(o)
131
142
  self.class == o.class &&
132
- ok == o.ok
143
+ attr == o.attr &&
144
+ entries == o.entries
133
145
  end
134
146
 
135
147
  # @see the `==` method
@@ -141,7 +153,7 @@ module Shipeasy::Admin::Generated
141
153
  # Calculates hash code according to all attributes.
142
154
  # @return [Integer] Hash code
143
155
  def hash
144
- [ok].hash
156
+ [attr, entries].hash
145
157
  end
146
158
 
147
159
  # Builds the object from hash
@@ -1,7 +1,7 @@
1
1
  =begin
2
- #Shipeasy Admin API
2
+ #Shipeasy Admin API (server-SDK surface)
3
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.
4
+ #The slice of the Shipeasy admin API that the published server SDKs expose as their optional `AdminClient`. Authenticate with an admin SDK key (`Authorization: Bearer sdk_admin_…`) and scope every request to a project via the `X-Project-Id` header. Three capabilities, nothing else: - **File a public ticket** — a bug or a feature request onto the project's ops queue. - **Toggle a kill switch** — flip the switch itself, or one of its named sub-switches, on one environment. - **Manage a flag's whitelist** — read, replace, add to, or remove from the allowlist that admits specific identities ahead of every targeting rule. Everything else in the admin API is reachable through the Shipeasy CLI and MCP server, which speak the complete contract (`openapi.yaml`).
5
5
 
6
6
  The version of the OpenAPI document: 2.0.0
7
7
 
@@ -14,16 +14,17 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Shipeasy::Admin::Generated
17
- # Body for `PUT /api/admin/killswitches/{id}/switch`. Sets or updates one switch entry on one env.
18
- class SetKillswitchSwitchRequest < ApiModelBase
19
- attr_accessor :env
20
-
21
- # Switch key to set.
17
+ # Body for `POST /api/admin/killswitches/{id}/toggle`. Every field is optional, so the four useful calls read as one method with a widening argument list: - `{}` — flip the flat value on prod. - `{ \"switchKey\": \"eu_region\" }` — flip that sub-switch on prod. - `{ \"switchKey\": \"eu_region\", \"value\": true }` — set that sub-switch on prod, idempotently. - `{ \"switchKey\": \"eu_region\", \"value\": true, \"env\": \"staging\" }` — the same, on a chosen env.
18
+ class ToggleKillswitchRequest < ApiModelBase
19
+ # Which target to flip. Omit (or `null`) to flip the killswitch's own flat `value`; name a switch key to flip that nested sub-switch instead, creating the entry if it doesn't exist yet.
22
20
  attr_accessor :switch_key
23
21
 
24
- # New boolean value for this `switchKey` on this `env`.
22
+ # The value to publish. Omit (or `null`) to flip whatever is stored now — read-modify-write in one call. Pass an explicit `true`/`false` to make the call idempotent, so a retry can't undo the first attempt.
25
23
  attr_accessor :value
26
24
 
25
+ # Environment to publish on. Defaults to `prod` — the environment an incident response means when it says \"kill it\".
26
+ attr_accessor :env
27
+
27
28
  class EnumAttributeValidator
28
29
  attr_reader :datatype
29
30
  attr_reader :allowable_values
@@ -49,9 +50,9 @@ module Shipeasy::Admin::Generated
49
50
  # Attribute mapping from ruby-style variable name to JSON key.
50
51
  def self.attribute_map
51
52
  {
52
- :'env' => :'env',
53
53
  :'switch_key' => :'switchKey',
54
- :'value' => :'value'
54
+ :'value' => :'value',
55
+ :'env' => :'env'
55
56
  }
56
57
  end
57
58
 
@@ -68,15 +69,17 @@ module Shipeasy::Admin::Generated
68
69
  # Attribute type mapping.
69
70
  def self.openapi_types
70
71
  {
71
- :'env' => :'Env',
72
72
  :'switch_key' => :'String',
73
- :'value' => :'Boolean'
73
+ :'value' => :'Boolean',
74
+ :'env' => :'Env'
74
75
  }
75
76
  end
76
77
 
77
78
  # List of attributes with nullable: true
78
79
  def self.openapi_nullable
79
80
  Set.new([
81
+ :'switch_key',
82
+ :'value',
80
83
  ])
81
84
  end
82
85
 
@@ -84,34 +87,28 @@ module Shipeasy::Admin::Generated
84
87
  # @param [Hash] attributes Model attributes in the form of hash
85
88
  def initialize(attributes = {})
86
89
  if (!attributes.is_a?(Hash))
87
- fail ArgumentError, "The input argument (attributes) must be a hash in `Shipeasy::Admin::Generated::SetKillswitchSwitchRequest` initialize method"
90
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Shipeasy::Admin::Generated::ToggleKillswitchRequest` initialize method"
88
91
  end
89
92
 
90
93
  # check to see if the attribute exists and convert string to symbol for hash key
91
94
  acceptable_attribute_map = self.class.acceptable_attribute_map
92
95
  attributes = attributes.each_with_object({}) { |(k, v), h|
93
96
  if (!acceptable_attribute_map.key?(k.to_sym))
94
- fail ArgumentError, "`#{k}` is not a valid attribute in `Shipeasy::Admin::Generated::SetKillswitchSwitchRequest`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
97
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Shipeasy::Admin::Generated::ToggleKillswitchRequest`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
95
98
  end
96
99
  h[k.to_sym] = v
97
100
  }
98
101
 
99
- if attributes.key?(:'env')
100
- self.env = attributes[:'env']
101
- else
102
- self.env = nil
103
- end
104
-
105
102
  if attributes.key?(:'switch_key')
106
103
  self.switch_key = attributes[:'switch_key']
107
- else
108
- self.switch_key = nil
109
104
  end
110
105
 
111
106
  if attributes.key?(:'value')
112
107
  self.value = attributes[:'value']
113
- else
114
- self.value = nil
108
+ end
109
+
110
+ if attributes.key?(:'env')
111
+ self.env = attributes[:'env']
115
112
  end
116
113
  end
117
114
 
@@ -120,27 +117,15 @@ module Shipeasy::Admin::Generated
120
117
  def list_invalid_properties
121
118
  warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
122
119
  invalid_properties = Array.new
123
- if @env.nil?
124
- invalid_properties.push('invalid value for "env", env cannot be nil.')
125
- end
126
-
127
- if @switch_key.nil?
128
- invalid_properties.push('invalid value for "switch_key", switch_key cannot be nil.')
129
- end
130
-
131
- if @switch_key.to_s.length > 64
120
+ if !@switch_key.nil? && @switch_key.to_s.length > 64
132
121
  invalid_properties.push('invalid value for "switch_key", the character length must be smaller than or equal to 64.')
133
122
  end
134
123
 
135
124
  pattern = Regexp.new(/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/)
136
- if @switch_key !~ pattern
125
+ if !@switch_key.nil? && @switch_key !~ pattern
137
126
  invalid_properties.push("invalid value for \"switch_key\", must conform to the pattern #{pattern}.")
138
127
  end
139
128
 
140
- if @value.nil?
141
- invalid_properties.push('invalid value for "value", value cannot be nil.')
142
- end
143
-
144
129
  invalid_properties
145
130
  end
146
131
 
@@ -148,61 +133,34 @@ module Shipeasy::Admin::Generated
148
133
  # @return true if the model is valid
149
134
  def valid?
150
135
  warn '[DEPRECATED] the `valid?` method is obsolete'
151
- return false if @env.nil?
152
- return false if @switch_key.nil?
153
- return false if @switch_key.to_s.length > 64
154
- return false if @switch_key !~ Regexp.new(/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/)
155
- return false if @value.nil?
136
+ return false if !@switch_key.nil? && @switch_key.to_s.length > 64
137
+ return false if !@switch_key.nil? && @switch_key !~ Regexp.new(/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/)
156
138
  true
157
139
  end
158
140
 
159
- # Custom attribute writer method with validation
160
- # @param [Object] env Value to be assigned
161
- def env=(env)
162
- if env.nil?
163
- fail ArgumentError, 'env cannot be nil'
164
- end
165
-
166
- @env = env
167
- end
168
-
169
141
  # Custom attribute writer method with validation
170
142
  # @param [Object] switch_key Value to be assigned
171
143
  def switch_key=(switch_key)
172
- if switch_key.nil?
173
- fail ArgumentError, 'switch_key cannot be nil'
174
- end
175
-
176
- if switch_key.to_s.length > 64
144
+ if !switch_key.nil? && switch_key.to_s.length > 64
177
145
  fail ArgumentError, 'invalid value for "switch_key", the character length must be smaller than or equal to 64.'
178
146
  end
179
147
 
180
148
  pattern = Regexp.new(/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/)
181
- if switch_key !~ pattern
149
+ if !switch_key.nil? && switch_key !~ pattern
182
150
  fail ArgumentError, "invalid value for \"switch_key\", must conform to the pattern #{pattern}."
183
151
  end
184
152
 
185
153
  @switch_key = switch_key
186
154
  end
187
155
 
188
- # Custom attribute writer method with validation
189
- # @param [Object] value Value to be assigned
190
- def value=(value)
191
- if value.nil?
192
- fail ArgumentError, 'value cannot be nil'
193
- end
194
-
195
- @value = value
196
- end
197
-
198
156
  # Checks equality by comparing each attribute.
199
157
  # @param [Object] Object to be compared
200
158
  def ==(o)
201
159
  return true if self.equal?(o)
202
160
  self.class == o.class &&
203
- env == o.env &&
204
161
  switch_key == o.switch_key &&
205
- value == o.value
162
+ value == o.value &&
163
+ env == o.env
206
164
  end
207
165
 
208
166
  # @see the `==` method
@@ -214,7 +172,7 @@ module Shipeasy::Admin::Generated
214
172
  # Calculates hash code according to all attributes.
215
173
  # @return [Integer] Hash code
216
174
  def hash
217
- [env, switch_key, value].hash
175
+ [switch_key, value, env].hash
218
176
  end
219
177
 
220
178
  # Builds the object from hash
@@ -1,7 +1,7 @@
1
1
  =begin
2
- #Shipeasy Admin API
2
+ #Shipeasy Admin API (server-SDK surface)
3
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.
4
+ #The slice of the Shipeasy admin API that the published server SDKs expose as their optional `AdminClient`. Authenticate with an admin SDK key (`Authorization: Bearer sdk_admin_…`) and scope every request to a project via the `X-Project-Id` header. Three capabilities, nothing else: - **File a public ticket** — a bug or a feature request onto the project's ops queue. - **Toggle a kill switch** — flip the switch itself, or one of its named sub-switches, on one environment. - **Manage a flag's whitelist** — read, replace, add to, or remove from the allowlist that admits specific identities ahead of every targeting rule. Everything else in the admin API is reachable through the Shipeasy CLI and MCP server, which speak the complete contract (`openapi.yaml`).
5
5
 
6
6
  The version of the OpenAPI document: 2.0.0
7
7
 
@@ -14,11 +14,21 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Shipeasy::Admin::Generated
17
- class SetKillswitchValueResponse < ApiModelBase
17
+ class ToggleKillswitchResponse < ApiModelBase
18
+ # Resolved killswitch id.
18
19
  attr_accessor :id
19
20
 
20
21
  attr_accessor :env
21
22
 
23
+ # The sub-switch that was flipped, or `null` when the flat `value` was.
24
+ attr_accessor :switch_key
25
+
26
+ # The value that was in effect before this call. Equal to `value` when an idempotent `value` matched what was already stored.
27
+ attr_accessor :previous
28
+
29
+ # The value now in effect on `env`.
30
+ attr_accessor :value
31
+
22
32
  # Newly published version on `env`.
23
33
  attr_accessor :version
24
34
 
@@ -51,6 +61,9 @@ module Shipeasy::Admin::Generated
51
61
  {
52
62
  :'id' => :'id',
53
63
  :'env' => :'env',
64
+ :'switch_key' => :'switchKey',
65
+ :'previous' => :'previous',
66
+ :'value' => :'value',
54
67
  :'version' => :'version',
55
68
  :'published' => :'published'
56
69
  }
@@ -71,6 +84,9 @@ module Shipeasy::Admin::Generated
71
84
  {
72
85
  :'id' => :'String',
73
86
  :'env' => :'Env',
87
+ :'switch_key' => :'String',
88
+ :'previous' => :'Boolean',
89
+ :'value' => :'Boolean',
74
90
  :'version' => :'Integer',
75
91
  :'published' => :'KillswitchValue'
76
92
  }
@@ -79,6 +95,7 @@ module Shipeasy::Admin::Generated
79
95
  # List of attributes with nullable: true
80
96
  def self.openapi_nullable
81
97
  Set.new([
98
+ :'switch_key',
82
99
  ])
83
100
  end
84
101
 
@@ -86,14 +103,14 @@ module Shipeasy::Admin::Generated
86
103
  # @param [Hash] attributes Model attributes in the form of hash
87
104
  def initialize(attributes = {})
88
105
  if (!attributes.is_a?(Hash))
89
- fail ArgumentError, "The input argument (attributes) must be a hash in `Shipeasy::Admin::Generated::SetKillswitchValueResponse` initialize method"
106
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Shipeasy::Admin::Generated::ToggleKillswitchResponse` initialize method"
90
107
  end
91
108
 
92
109
  # check to see if the attribute exists and convert string to symbol for hash key
93
110
  acceptable_attribute_map = self.class.acceptable_attribute_map
94
111
  attributes = attributes.each_with_object({}) { |(k, v), h|
95
112
  if (!acceptable_attribute_map.key?(k.to_sym))
96
- fail ArgumentError, "`#{k}` is not a valid attribute in `Shipeasy::Admin::Generated::SetKillswitchValueResponse`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
113
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Shipeasy::Admin::Generated::ToggleKillswitchResponse`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
97
114
  end
98
115
  h[k.to_sym] = v
99
116
  }
@@ -110,6 +127,24 @@ module Shipeasy::Admin::Generated
110
127
  self.env = nil
111
128
  end
112
129
 
130
+ if attributes.key?(:'switch_key')
131
+ self.switch_key = attributes[:'switch_key']
132
+ else
133
+ self.switch_key = nil
134
+ end
135
+
136
+ if attributes.key?(:'previous')
137
+ self.previous = attributes[:'previous']
138
+ else
139
+ self.previous = nil
140
+ end
141
+
142
+ if attributes.key?(:'value')
143
+ self.value = attributes[:'value']
144
+ else
145
+ self.value = nil
146
+ end
147
+
113
148
  if attributes.key?(:'version')
114
149
  self.version = attributes[:'version']
115
150
  else
@@ -136,6 +171,23 @@ module Shipeasy::Admin::Generated
136
171
  invalid_properties.push('invalid value for "env", env cannot be nil.')
137
172
  end
138
173
 
174
+ if @switch_key.to_s.length > 64
175
+ invalid_properties.push('invalid value for "switch_key", the character length must be smaller than or equal to 64.')
176
+ end
177
+
178
+ pattern = Regexp.new(/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/)
179
+ if @switch_key !~ pattern
180
+ invalid_properties.push("invalid value for \"switch_key\", must conform to the pattern #{pattern}.")
181
+ end
182
+
183
+ if @previous.nil?
184
+ invalid_properties.push('invalid value for "previous", previous cannot be nil.')
185
+ end
186
+
187
+ if @value.nil?
188
+ invalid_properties.push('invalid value for "value", value cannot be nil.')
189
+ end
190
+
139
191
  if @version.nil?
140
192
  invalid_properties.push('invalid value for "version", version cannot be nil.')
141
193
  end
@@ -161,6 +213,10 @@ module Shipeasy::Admin::Generated
161
213
  warn '[DEPRECATED] the `valid?` method is obsolete'
162
214
  return false if @id.nil?
163
215
  return false if @env.nil?
216
+ return false if @switch_key.to_s.length > 64
217
+ return false if @switch_key !~ Regexp.new(/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/)
218
+ return false if @previous.nil?
219
+ return false if @value.nil?
164
220
  return false if @version.nil?
165
221
  return false if @version > 9007199254740991
166
222
  return false if @version < -9007199254740991
@@ -188,6 +244,41 @@ module Shipeasy::Admin::Generated
188
244
  @env = env
189
245
  end
190
246
 
247
+ # Custom attribute writer method with validation
248
+ # @param [Object] switch_key Value to be assigned
249
+ def switch_key=(switch_key)
250
+ if !switch_key.nil? && switch_key.to_s.length > 64
251
+ fail ArgumentError, 'invalid value for "switch_key", the character length must be smaller than or equal to 64.'
252
+ end
253
+
254
+ pattern = Regexp.new(/^[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/)
255
+ if !switch_key.nil? && switch_key !~ pattern
256
+ fail ArgumentError, "invalid value for \"switch_key\", must conform to the pattern #{pattern}."
257
+ end
258
+
259
+ @switch_key = switch_key
260
+ end
261
+
262
+ # Custom attribute writer method with validation
263
+ # @param [Object] previous Value to be assigned
264
+ def previous=(previous)
265
+ if previous.nil?
266
+ fail ArgumentError, 'previous cannot be nil'
267
+ end
268
+
269
+ @previous = previous
270
+ end
271
+
272
+ # Custom attribute writer method with validation
273
+ # @param [Object] value Value to be assigned
274
+ def value=(value)
275
+ if value.nil?
276
+ fail ArgumentError, 'value cannot be nil'
277
+ end
278
+
279
+ @value = value
280
+ end
281
+
191
282
  # Custom attribute writer method with validation
192
283
  # @param [Object] version Value to be assigned
193
284
  def version=(version)
@@ -223,6 +314,9 @@ module Shipeasy::Admin::Generated
223
314
  self.class == o.class &&
224
315
  id == o.id &&
225
316
  env == o.env &&
317
+ switch_key == o.switch_key &&
318
+ previous == o.previous &&
319
+ value == o.value &&
226
320
  version == o.version &&
227
321
  published == o.published
228
322
  end
@@ -236,7 +330,7 @@ module Shipeasy::Admin::Generated
236
330
  # Calculates hash code according to all attributes.
237
331
  # @return [Integer] Hash code
238
332
  def hash
239
- [id, env, version, published].hash
333
+ [id, env, switch_key, previous, value, version, published].hash
240
334
  end
241
335
 
242
336
  # Builds the object from hash
@@ -1,7 +1,7 @@
1
1
  =begin
2
- #Shipeasy Admin API
2
+ #Shipeasy Admin API (server-SDK surface)
3
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.
4
+ #The slice of the Shipeasy admin API that the published server SDKs expose as their optional `AdminClient`. Authenticate with an admin SDK key (`Authorization: Bearer sdk_admin_…`) and scope every request to a project via the `X-Project-Id` header. Three capabilities, nothing else: - **File a public ticket** — a bug or a feature request onto the project's ops queue. - **Toggle a kill switch** — flip the switch itself, or one of its named sub-switches, on one environment. - **Manage a flag's whitelist** — read, replace, add to, or remove from the allowlist that admits specific identities ahead of every targeting rule. Everything else in the admin API is reachable through the Shipeasy CLI and MCP server, which speak the complete contract (`openapi.yaml`).
5
5
 
6
6
  The version of the OpenAPI document: 2.0.0
7
7