shipeasy-sdk 3.7.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 (220) 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/engine.rb +6 -4
  5. data/lib/shipeasy/sdk/see.rb +7 -5
  6. data/lib/shipeasy/sdk/version.rb +1 -1
  7. data/lib/shipeasy_admin/api/flags_api.rb +127 -214
  8. data/lib/shipeasy_admin/api/killswitch_api.rb +25 -525
  9. data/lib/shipeasy_admin/api/ops_api.rb +44 -351
  10. data/lib/shipeasy_admin/api_client.rb +2 -2
  11. data/lib/shipeasy_admin/api_error.rb +2 -2
  12. data/lib/shipeasy_admin/api_model_base.rb +2 -2
  13. data/lib/shipeasy_admin/configuration.rb +29 -2
  14. data/lib/shipeasy_admin/models/{set_killswitch_value_request.rb → add_to_gate_whitelist_request.rb} +37 -42
  15. data/lib/shipeasy_admin/models/create_public_bug_request.rb +464 -0
  16. data/lib/shipeasy_admin/models/create_public_feature_request_request.rb +407 -0
  17. data/lib/shipeasy_admin/models/{file_error_ticket_response.rb → create_public_ticket_response.rb} +22 -29
  18. data/lib/shipeasy_admin/models/env.rb +2 -2
  19. data/lib/shipeasy_admin/models/error.rb +41 -7
  20. data/lib/shipeasy_admin/models/error_code.rb +14 -3
  21. data/lib/shipeasy_admin/models/{get_experiment_timeseries_response_experiment.rb → gate_whitelist.rb} +51 -42
  22. data/lib/shipeasy_admin/models/gate_whitelist_attr.rb +40 -0
  23. data/lib/shipeasy_admin/models/killswitch_value.rb +2 -2
  24. data/lib/shipeasy_admin/models/notification_target.rb +2 -2
  25. data/lib/shipeasy_admin/models/notification_target_slack_channel.rb +2 -2
  26. data/lib/shipeasy_admin/models/ops_item_priority.rb +42 -0
  27. data/lib/shipeasy_admin/models/ops_item_status.rb +46 -0
  28. data/lib/shipeasy_admin/models/{discard_config_draft_request.rb → remove_from_gate_whitelist_request.rb} +34 -44
  29. data/lib/shipeasy_admin/models/{delete_alert_rule_response.rb → set_gate_whitelist_request.rb} +37 -25
  30. data/lib/shipeasy_admin/models/{set_killswitch_switch_request.rb → toggle_killswitch_request.rb} +30 -72
  31. data/lib/shipeasy_admin/models/{set_killswitch_value_response.rb → toggle_killswitch_response.rb} +100 -6
  32. data/lib/shipeasy_admin/version.rb +2 -2
  33. data/lib/shipeasy_admin.rb +14 -195
  34. metadata +14 -195
  35. data/lib/shipeasy_admin/api/alerts_api.rb +0 -352
  36. data/lib/shipeasy_admin/api/api_keys_api.rb +0 -229
  37. data/lib/shipeasy_admin/api/attributes_api.rb +0 -82
  38. data/lib/shipeasy_admin/api/configs_api.rb +0 -757
  39. data/lib/shipeasy_admin/api/connectors_api.rb +0 -497
  40. data/lib/shipeasy_admin/api/drafts_api.rb +0 -82
  41. data/lib/shipeasy_admin/api/errors_api.rb +0 -389
  42. data/lib/shipeasy_admin/api/events_api.rb +0 -438
  43. data/lib/shipeasy_admin/api/experiments_api.rb +0 -727
  44. data/lib/shipeasy_admin/api/keys_api.rb +0 -317
  45. data/lib/shipeasy_admin/api/metrics_api.rb +0 -281
  46. data/lib/shipeasy_admin/api/profiles_api.rb +0 -222
  47. data/lib/shipeasy_admin/api/projects_api.rb +0 -216
  48. data/lib/shipeasy_admin/api/universes_api.rb +0 -306
  49. data/lib/shipeasy_admin/models/approve_event_request.rb +0 -198
  50. data/lib/shipeasy_admin/models/approve_event_response.rb +0 -166
  51. data/lib/shipeasy_admin/models/claude_trigger_config.rb +0 -204
  52. data/lib/shipeasy_admin/models/connector_event.rb +0 -40
  53. data/lib/shipeasy_admin/models/connector_provider.rb +0 -45
  54. data/lib/shipeasy_admin/models/connector_record.rb +0 -468
  55. data/lib/shipeasy_admin/models/copilot_trigger_config.rb +0 -276
  56. data/lib/shipeasy_admin/models/create_alert_rule_request.rb +0 -383
  57. data/lib/shipeasy_admin/models/create_alert_rule_response.rb +0 -165
  58. data/lib/shipeasy_admin/models/create_claude_trigger_request.rb +0 -309
  59. data/lib/shipeasy_admin/models/create_config_request.rb +0 -291
  60. data/lib/shipeasy_admin/models/create_config_response.rb +0 -201
  61. data/lib/shipeasy_admin/models/create_connector_request.rb +0 -64
  62. data/lib/shipeasy_admin/models/create_connector_response.rb +0 -165
  63. data/lib/shipeasy_admin/models/create_copilot_trigger_request.rb +0 -316
  64. data/lib/shipeasy_admin/models/create_cursor_trigger_request.rb +0 -352
  65. data/lib/shipeasy_admin/models/create_event_request.rb +0 -236
  66. data/lib/shipeasy_admin/models/create_event_response.rb +0 -193
  67. data/lib/shipeasy_admin/models/create_experiment_request.rb +0 -807
  68. data/lib/shipeasy_admin/models/create_experiment_response.rb +0 -212
  69. data/lib/shipeasy_admin/models/create_gate_request.rb +0 -492
  70. data/lib/shipeasy_admin/models/create_gate_response.rb +0 -212
  71. data/lib/shipeasy_admin/models/create_i18n_profile_request.rb +0 -188
  72. data/lib/shipeasy_admin/models/create_i18n_profile_response.rb +0 -193
  73. data/lib/shipeasy_admin/models/create_jules_trigger_request.rb +0 -352
  74. data/lib/shipeasy_admin/models/create_key_request.rb +0 -297
  75. data/lib/shipeasy_admin/models/create_key_response.rb +0 -286
  76. data/lib/shipeasy_admin/models/create_killswitch_request.rb +0 -274
  77. data/lib/shipeasy_admin/models/create_killswitch_response.rb +0 -201
  78. data/lib/shipeasy_admin/models/create_metric_request.rb +0 -403
  79. data/lib/shipeasy_admin/models/create_metric_response.rb +0 -193
  80. data/lib/shipeasy_admin/models/create_o_auth_connector_request.rb +0 -273
  81. data/lib/shipeasy_admin/models/create_ops_item_request.rb +0 -287
  82. data/lib/shipeasy_admin/models/create_ops_item_response.rb +0 -177
  83. data/lib/shipeasy_admin/models/create_universe_request.rb +0 -272
  84. data/lib/shipeasy_admin/models/create_universe_response.rb +0 -212
  85. data/lib/shipeasy_admin/models/cursor_trigger_config.rb +0 -231
  86. data/lib/shipeasy_admin/models/delete_config_response.rb +0 -188
  87. data/lib/shipeasy_admin/models/delete_connector_response.rb +0 -188
  88. data/lib/shipeasy_admin/models/delete_event_response.rb +0 -189
  89. data/lib/shipeasy_admin/models/delete_experiment_response.rb +0 -188
  90. data/lib/shipeasy_admin/models/delete_gate_response.rb +0 -188
  91. data/lib/shipeasy_admin/models/delete_killswitch_response.rb +0 -188
  92. data/lib/shipeasy_admin/models/delete_metric_response.rb +0 -189
  93. data/lib/shipeasy_admin/models/delete_universe_response.rb +0 -188
  94. data/lib/shipeasy_admin/models/disable_gate_response.rb +0 -190
  95. data/lib/shipeasy_admin/models/discard_config_draft_response.rb +0 -188
  96. data/lib/shipeasy_admin/models/enable_gate_response.rb +0 -190
  97. data/lib/shipeasy_admin/models/error_record.rb +0 -597
  98. data/lib/shipeasy_admin/models/error_series_request.rb +0 -251
  99. data/lib/shipeasy_admin/models/error_series_response.rb +0 -195
  100. data/lib/shipeasy_admin/models/error_series_response_rows_inner.rb +0 -192
  101. data/lib/shipeasy_admin/models/experiment_inline_metric.rb +0 -337
  102. data/lib/shipeasy_admin/models/fire_connector_request.rb +0 -149
  103. data/lib/shipeasy_admin/models/fire_connector_response.rb +0 -176
  104. data/lib/shipeasy_admin/models/get_config_response.rb +0 -351
  105. data/lib/shipeasy_admin/models/get_current_project_response.rb +0 -606
  106. data/lib/shipeasy_admin/models/get_current_project_response_module_translations.rb +0 -104
  107. data/lib/shipeasy_admin/models/get_event_response.rb +0 -344
  108. data/lib/shipeasy_admin/models/get_experiment_response.rb +0 -688
  109. data/lib/shipeasy_admin/models/get_experiment_results_response.rb +0 -243
  110. data/lib/shipeasy_admin/models/get_experiment_results_response_experiment.rb +0 -248
  111. data/lib/shipeasy_admin/models/get_experiment_results_response_results_inner.rb +0 -252
  112. data/lib/shipeasy_admin/models/get_experiment_timeseries_response.rb +0 -192
  113. data/lib/shipeasy_admin/models/get_experiment_timeseries_response_series_inner.rb +0 -278
  114. data/lib/shipeasy_admin/models/get_killswitch_response.rb +0 -270
  115. data/lib/shipeasy_admin/models/get_metric_response.rb +0 -378
  116. data/lib/shipeasy_admin/models/get_ops_item_response.rb +0 -349
  117. data/lib/shipeasy_admin/models/jules_trigger_config.rb +0 -240
  118. data/lib/shipeasy_admin/models/key_record.rb +0 -353
  119. data/lib/shipeasy_admin/models/link_pr_to_ops_item_request.rb +0 -186
  120. data/lib/shipeasy_admin/models/link_pr_to_ops_item_response.rb +0 -166
  121. data/lib/shipeasy_admin/models/list_alert_rules_response_inner.rb +0 -478
  122. data/lib/shipeasy_admin/models/list_attributes_response_inner.rb +0 -176
  123. data/lib/shipeasy_admin/models/list_config_activity_response_inner.rb +0 -280
  124. data/lib/shipeasy_admin/models/list_configs_response.rb +0 -178
  125. data/lib/shipeasy_admin/models/list_configs_response_data_inner.rb +0 -351
  126. data/lib/shipeasy_admin/models/list_configs_response_data_inner_drafts_value.rb +0 -237
  127. data/lib/shipeasy_admin/models/list_configs_response_data_inner_envs_value.rb +0 -237
  128. data/lib/shipeasy_admin/models/list_events_response_inner.rb +0 -344
  129. data/lib/shipeasy_admin/models/list_events_response_inner_properties_inner.rb +0 -259
  130. data/lib/shipeasy_admin/models/list_experiments_response.rb +0 -178
  131. data/lib/shipeasy_admin/models/list_experiments_response_data_inner.rb +0 -688
  132. data/lib/shipeasy_admin/models/list_experiments_response_data_inner_groups_inner.rb +0 -241
  133. data/lib/shipeasy_admin/models/list_gates_response.rb +0 -178
  134. data/lib/shipeasy_admin/models/list_gates_response_data_inner.rb +0 -395
  135. data/lib/shipeasy_admin/models/list_gates_response_data_inner_enabled.rb +0 -104
  136. data/lib/shipeasy_admin/models/list_gates_response_data_inner_rules_inner.rb +0 -238
  137. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner.rb +0 -105
  138. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of.rb +0 -358
  139. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of1.rb +0 -331
  140. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of_ramp.rb +0 -319
  141. data/lib/shipeasy_admin/models/list_i18n_drafts_response_inner.rb +0 -272
  142. data/lib/shipeasy_admin/models/list_i18n_keys_response.rb +0 -195
  143. data/lib/shipeasy_admin/models/list_i18n_keys_response_keys_inner.rb +0 -274
  144. data/lib/shipeasy_admin/models/list_i18n_profiles_response_inner.rb +0 -224
  145. data/lib/shipeasy_admin/models/list_keys_response.rb +0 -180
  146. data/lib/shipeasy_admin/models/list_killswitches_response.rb +0 -178
  147. data/lib/shipeasy_admin/models/list_killswitches_response_data_inner.rb +0 -270
  148. data/lib/shipeasy_admin/models/list_killswitches_response_data_inner_envs_value.rb +0 -248
  149. data/lib/shipeasy_admin/models/list_metrics_response_inner.rb +0 -378
  150. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir.rb +0 -288
  151. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg.rb +0 -113
  152. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of.rb +0 -188
  153. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of1.rb +0 -188
  154. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of2.rb +0 -188
  155. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of3.rb +0 -188
  156. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of4.rb +0 -188
  157. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of5.rb +0 -188
  158. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of6.rb +0 -188
  159. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of7.rb +0 -217
  160. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of8.rb +0 -233
  161. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9.rb +0 -240
  162. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9_numerator.rb +0 -266
  163. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9_numerator_filters_inner.rb +0 -264
  164. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_group_by.rb +0 -228
  165. data/lib/shipeasy_admin/models/list_ops_items_response_inner.rb +0 -349
  166. data/lib/shipeasy_admin/models/list_slack_channels_response.rb +0 -195
  167. data/lib/shipeasy_admin/models/list_slack_channels_response_channels_inner.rb +0 -203
  168. data/lib/shipeasy_admin/models/list_universes_response.rb +0 -178
  169. data/lib/shipeasy_admin/models/list_universes_response_data_inner.rb +0 -305
  170. data/lib/shipeasy_admin/models/notify_ops_request.rb +0 -261
  171. data/lib/shipeasy_admin/models/notify_ops_response.rb +0 -193
  172. data/lib/shipeasy_admin/models/publish_config_draft_request.rb +0 -187
  173. data/lib/shipeasy_admin/models/publish_config_draft_response.rb +0 -257
  174. data/lib/shipeasy_admin/models/publish_i18n_profile_response.rb +0 -391
  175. data/lib/shipeasy_admin/models/push_i18n_keys_request.rb +0 -195
  176. data/lib/shipeasy_admin/models/push_i18n_keys_request_keys_inner.rb +0 -192
  177. data/lib/shipeasy_admin/models/push_i18n_keys_response.rb +0 -251
  178. data/lib/shipeasy_admin/models/reanalyze_experiment_response.rb +0 -214
  179. data/lib/shipeasy_admin/models/revoke_key_response.rb +0 -216
  180. data/lib/shipeasy_admin/models/save_config_draft_request.rb +0 -199
  181. data/lib/shipeasy_admin/models/save_config_draft_response.rb +0 -283
  182. data/lib/shipeasy_admin/models/search_hit.rb +0 -284
  183. data/lib/shipeasy_admin/models/search_response.rb +0 -167
  184. data/lib/shipeasy_admin/models/set_experiment_metrics_request.rb +0 -168
  185. data/lib/shipeasy_admin/models/set_experiment_metrics_request_metrics_inner.rb +0 -216
  186. data/lib/shipeasy_admin/models/set_experiment_metrics_response.rb +0 -179
  187. data/lib/shipeasy_admin/models/set_experiment_metrics_response_metrics_inner.rb +0 -201
  188. data/lib/shipeasy_admin/models/set_experiment_status_request.rb +0 -190
  189. data/lib/shipeasy_admin/models/set_experiment_status_response.rb +0 -214
  190. data/lib/shipeasy_admin/models/set_i18n_label_request.rb +0 -213
  191. data/lib/shipeasy_admin/models/set_i18n_label_response.rb +0 -472
  192. data/lib/shipeasy_admin/models/set_killswitch_switch_response.rb +0 -285
  193. data/lib/shipeasy_admin/models/test_connector_response.rb +0 -189
  194. data/lib/shipeasy_admin/models/unset_killswitch_switch_request.rb +0 -234
  195. data/lib/shipeasy_admin/models/unset_killswitch_switch_response.rb +0 -286
  196. data/lib/shipeasy_admin/models/update_alert_rule_request.rb +0 -304
  197. data/lib/shipeasy_admin/models/update_alert_rule_response.rb +0 -165
  198. data/lib/shipeasy_admin/models/update_config_request.rb +0 -198
  199. data/lib/shipeasy_admin/models/update_config_response.rb +0 -165
  200. data/lib/shipeasy_admin/models/update_config_schema_request.rb +0 -168
  201. data/lib/shipeasy_admin/models/update_config_schema_response.rb +0 -165
  202. data/lib/shipeasy_admin/models/update_connector_request.rb +0 -211
  203. data/lib/shipeasy_admin/models/update_connector_response.rb +0 -166
  204. data/lib/shipeasy_admin/models/update_error_status_request.rb +0 -190
  205. data/lib/shipeasy_admin/models/update_event_request.rb +0 -198
  206. data/lib/shipeasy_admin/models/update_event_response.rb +0 -166
  207. data/lib/shipeasy_admin/models/update_experiment_request.rb +0 -747
  208. data/lib/shipeasy_admin/models/update_experiment_response.rb +0 -165
  209. data/lib/shipeasy_admin/models/update_gate_request.rb +0 -403
  210. data/lib/shipeasy_admin/models/update_gate_response.rb +0 -166
  211. data/lib/shipeasy_admin/models/update_i18n_key_request.rb +0 -176
  212. data/lib/shipeasy_admin/models/update_i18n_key_response.rb +0 -166
  213. data/lib/shipeasy_admin/models/update_killswitch_request.rb +0 -224
  214. data/lib/shipeasy_admin/models/update_killswitch_response.rb +0 -165
  215. data/lib/shipeasy_admin/models/update_ops_item_request.rb +0 -205
  216. data/lib/shipeasy_admin/models/update_ops_item_response.rb +0 -166
  217. data/lib/shipeasy_admin/models/update_universe_request.rb +0 -213
  218. data/lib/shipeasy_admin/models/update_universe_response.rb +0 -165
  219. data/lib/shipeasy_admin/models/upsert_project_request.rb +0 -222
  220. 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