shipeasy-sdk 2.1.0 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/docs/skill/SKILL.md +6 -2
  4. data/lib/generators/shipeasy/install/USAGE +24 -0
  5. data/lib/generators/shipeasy/install/install_generator.rb +86 -0
  6. data/lib/generators/shipeasy/install/templates/initializer.rb.tt +41 -0
  7. data/lib/shipeasy/admin.rb +91 -0
  8. data/lib/shipeasy/sdk/version.rb +1 -1
  9. data/lib/shipeasy_admin/api/alerts_api.rb +352 -0
  10. data/lib/shipeasy_admin/api/api_keys_api.rb +229 -0
  11. data/lib/shipeasy_admin/api/attributes_api.rb +82 -0
  12. data/lib/shipeasy_admin/api/configs_api.rb +757 -0
  13. data/lib/shipeasy_admin/api/connectors_api.rb +497 -0
  14. data/lib/shipeasy_admin/api/drafts_api.rb +82 -0
  15. data/lib/shipeasy_admin/api/errors_api.rb +389 -0
  16. data/lib/shipeasy_admin/api/events_api.rb +438 -0
  17. data/lib/shipeasy_admin/api/experiments_api.rb +727 -0
  18. data/lib/shipeasy_admin/api/flags_api.rb +438 -0
  19. data/lib/shipeasy_admin/api/keys_api.rb +317 -0
  20. data/lib/shipeasy_admin/api/killswitch_api.rb +603 -0
  21. data/lib/shipeasy_admin/api/metrics_api.rb +281 -0
  22. data/lib/shipeasy_admin/api/ops_api.rb +465 -0
  23. data/lib/shipeasy_admin/api/profiles_api.rb +226 -0
  24. data/lib/shipeasy_admin/api/projects_api.rb +216 -0
  25. data/lib/shipeasy_admin/api/universes_api.rb +306 -0
  26. data/lib/shipeasy_admin/api_client.rb +441 -0
  27. data/lib/shipeasy_admin/api_error.rb +58 -0
  28. data/lib/shipeasy_admin/api_model_base.rb +88 -0
  29. data/lib/shipeasy_admin/configuration.rb +397 -0
  30. data/lib/shipeasy_admin/models/approve_event_request.rb +198 -0
  31. data/lib/shipeasy_admin/models/approve_event_response.rb +166 -0
  32. data/lib/shipeasy_admin/models/claude_trigger_config.rb +204 -0
  33. data/lib/shipeasy_admin/models/connector_event.rb +40 -0
  34. data/lib/shipeasy_admin/models/connector_provider.rb +45 -0
  35. data/lib/shipeasy_admin/models/connector_record.rb +468 -0
  36. data/lib/shipeasy_admin/models/copilot_trigger_config.rb +276 -0
  37. data/lib/shipeasy_admin/models/create_alert_rule_request.rb +383 -0
  38. data/lib/shipeasy_admin/models/create_alert_rule_response.rb +165 -0
  39. data/lib/shipeasy_admin/models/create_claude_trigger_request.rb +309 -0
  40. data/lib/shipeasy_admin/models/create_config_request.rb +291 -0
  41. data/lib/shipeasy_admin/models/create_config_response.rb +201 -0
  42. data/lib/shipeasy_admin/models/create_connector_request.rb +64 -0
  43. data/lib/shipeasy_admin/models/create_connector_response.rb +165 -0
  44. data/lib/shipeasy_admin/models/create_copilot_trigger_request.rb +316 -0
  45. data/lib/shipeasy_admin/models/create_cursor_trigger_request.rb +352 -0
  46. data/lib/shipeasy_admin/models/create_event_request.rb +236 -0
  47. data/lib/shipeasy_admin/models/create_event_response.rb +193 -0
  48. data/lib/shipeasy_admin/models/create_experiment_request.rb +807 -0
  49. data/lib/shipeasy_admin/models/create_experiment_response.rb +212 -0
  50. data/lib/shipeasy_admin/models/create_gate_request.rb +492 -0
  51. data/lib/shipeasy_admin/models/create_gate_response.rb +212 -0
  52. data/lib/shipeasy_admin/models/create_i18n_profile_request.rb +188 -0
  53. data/lib/shipeasy_admin/models/create_i18n_profile_response.rb +193 -0
  54. data/lib/shipeasy_admin/models/create_jules_trigger_request.rb +352 -0
  55. data/lib/shipeasy_admin/models/create_key_request.rb +297 -0
  56. data/lib/shipeasy_admin/models/create_key_response.rb +286 -0
  57. data/lib/shipeasy_admin/models/create_killswitch_request.rb +274 -0
  58. data/lib/shipeasy_admin/models/create_killswitch_response.rb +201 -0
  59. data/lib/shipeasy_admin/models/create_metric_request.rb +403 -0
  60. data/lib/shipeasy_admin/models/create_metric_response.rb +193 -0
  61. data/lib/shipeasy_admin/models/create_o_auth_connector_request.rb +273 -0
  62. data/lib/shipeasy_admin/models/create_ops_item_request.rb +287 -0
  63. data/lib/shipeasy_admin/models/create_ops_item_response.rb +177 -0
  64. data/lib/shipeasy_admin/models/create_universe_request.rb +272 -0
  65. data/lib/shipeasy_admin/models/create_universe_response.rb +212 -0
  66. data/lib/shipeasy_admin/models/cursor_trigger_config.rb +231 -0
  67. data/lib/shipeasy_admin/models/delete_alert_rule_response.rb +188 -0
  68. data/lib/shipeasy_admin/models/delete_config_response.rb +188 -0
  69. data/lib/shipeasy_admin/models/delete_connector_response.rb +188 -0
  70. data/lib/shipeasy_admin/models/delete_event_response.rb +189 -0
  71. data/lib/shipeasy_admin/models/delete_experiment_response.rb +188 -0
  72. data/lib/shipeasy_admin/models/delete_gate_response.rb +188 -0
  73. data/lib/shipeasy_admin/models/delete_killswitch_response.rb +188 -0
  74. data/lib/shipeasy_admin/models/delete_metric_response.rb +189 -0
  75. data/lib/shipeasy_admin/models/delete_universe_response.rb +188 -0
  76. data/lib/shipeasy_admin/models/disable_gate_response.rb +190 -0
  77. data/lib/shipeasy_admin/models/discard_config_draft_request.rb +187 -0
  78. data/lib/shipeasy_admin/models/discard_config_draft_response.rb +188 -0
  79. data/lib/shipeasy_admin/models/enable_gate_response.rb +190 -0
  80. data/lib/shipeasy_admin/models/env.rb +41 -0
  81. data/lib/shipeasy_admin/models/error.rb +207 -0
  82. data/lib/shipeasy_admin/models/error_code.rb +52 -0
  83. data/lib/shipeasy_admin/models/error_record.rb +597 -0
  84. data/lib/shipeasy_admin/models/error_series_request.rb +251 -0
  85. data/lib/shipeasy_admin/models/error_series_response.rb +195 -0
  86. data/lib/shipeasy_admin/models/error_series_response_rows_inner.rb +192 -0
  87. data/lib/shipeasy_admin/models/experiment_inline_metric.rb +337 -0
  88. data/lib/shipeasy_admin/models/file_error_ticket_response.rb +193 -0
  89. data/lib/shipeasy_admin/models/fire_connector_request.rb +149 -0
  90. data/lib/shipeasy_admin/models/fire_connector_response.rb +176 -0
  91. data/lib/shipeasy_admin/models/get_config_response.rb +351 -0
  92. data/lib/shipeasy_admin/models/get_current_project_response.rb +606 -0
  93. data/lib/shipeasy_admin/models/get_current_project_response_module_translations.rb +104 -0
  94. data/lib/shipeasy_admin/models/get_event_response.rb +344 -0
  95. data/lib/shipeasy_admin/models/get_experiment_response.rb +688 -0
  96. data/lib/shipeasy_admin/models/get_experiment_results_response.rb +243 -0
  97. data/lib/shipeasy_admin/models/get_experiment_results_response_experiment.rb +248 -0
  98. data/lib/shipeasy_admin/models/get_experiment_results_response_results_inner.rb +252 -0
  99. data/lib/shipeasy_admin/models/get_experiment_timeseries_response.rb +192 -0
  100. data/lib/shipeasy_admin/models/get_experiment_timeseries_response_experiment.rb +261 -0
  101. data/lib/shipeasy_admin/models/get_experiment_timeseries_response_series_inner.rb +278 -0
  102. data/lib/shipeasy_admin/models/get_killswitch_response.rb +270 -0
  103. data/lib/shipeasy_admin/models/get_metric_response.rb +378 -0
  104. data/lib/shipeasy_admin/models/get_ops_item_response.rb +349 -0
  105. data/lib/shipeasy_admin/models/jules_trigger_config.rb +240 -0
  106. data/lib/shipeasy_admin/models/key_record.rb +353 -0
  107. data/lib/shipeasy_admin/models/killswitch_value.rb +178 -0
  108. data/lib/shipeasy_admin/models/link_pr_to_ops_item_request.rb +186 -0
  109. data/lib/shipeasy_admin/models/link_pr_to_ops_item_response.rb +166 -0
  110. data/lib/shipeasy_admin/models/list_alert_rules_response_inner.rb +478 -0
  111. data/lib/shipeasy_admin/models/list_attributes_response_inner.rb +176 -0
  112. data/lib/shipeasy_admin/models/list_config_activity_response_inner.rb +280 -0
  113. data/lib/shipeasy_admin/models/list_configs_response.rb +178 -0
  114. data/lib/shipeasy_admin/models/list_configs_response_data_inner.rb +351 -0
  115. data/lib/shipeasy_admin/models/list_configs_response_data_inner_drafts_value.rb +237 -0
  116. data/lib/shipeasy_admin/models/list_configs_response_data_inner_envs_value.rb +237 -0
  117. data/lib/shipeasy_admin/models/list_events_response_inner.rb +344 -0
  118. data/lib/shipeasy_admin/models/list_events_response_inner_properties_inner.rb +259 -0
  119. data/lib/shipeasy_admin/models/list_experiments_response.rb +178 -0
  120. data/lib/shipeasy_admin/models/list_experiments_response_data_inner.rb +688 -0
  121. data/lib/shipeasy_admin/models/list_experiments_response_data_inner_groups_inner.rb +241 -0
  122. data/lib/shipeasy_admin/models/list_gates_response.rb +178 -0
  123. data/lib/shipeasy_admin/models/list_gates_response_data_inner.rb +395 -0
  124. data/lib/shipeasy_admin/models/list_gates_response_data_inner_enabled.rb +104 -0
  125. data/lib/shipeasy_admin/models/list_gates_response_data_inner_rules_inner.rb +238 -0
  126. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner.rb +105 -0
  127. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of.rb +358 -0
  128. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of1.rb +331 -0
  129. data/lib/shipeasy_admin/models/list_gates_response_data_inner_stack_inner_one_of_ramp.rb +319 -0
  130. data/lib/shipeasy_admin/models/list_i18n_drafts_response_inner.rb +272 -0
  131. data/lib/shipeasy_admin/models/list_i18n_keys_response.rb +195 -0
  132. data/lib/shipeasy_admin/models/list_i18n_keys_response_keys_inner.rb +284 -0
  133. data/lib/shipeasy_admin/models/list_i18n_profiles_response_inner.rb +224 -0
  134. data/lib/shipeasy_admin/models/list_keys_response.rb +180 -0
  135. data/lib/shipeasy_admin/models/list_killswitches_response.rb +178 -0
  136. data/lib/shipeasy_admin/models/list_killswitches_response_data_inner.rb +270 -0
  137. data/lib/shipeasy_admin/models/list_killswitches_response_data_inner_envs_value.rb +248 -0
  138. data/lib/shipeasy_admin/models/list_metrics_response_inner.rb +378 -0
  139. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir.rb +288 -0
  140. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg.rb +113 -0
  141. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of.rb +188 -0
  142. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of1.rb +188 -0
  143. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of2.rb +188 -0
  144. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of3.rb +188 -0
  145. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of4.rb +188 -0
  146. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of5.rb +188 -0
  147. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of6.rb +188 -0
  148. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of7.rb +217 -0
  149. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of8.rb +233 -0
  150. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9.rb +240 -0
  151. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9_numerator.rb +266 -0
  152. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_agg_one_of9_numerator_filters_inner.rb +264 -0
  153. data/lib/shipeasy_admin/models/list_metrics_response_inner_query_ir_group_by.rb +228 -0
  154. data/lib/shipeasy_admin/models/list_ops_items_response_inner.rb +349 -0
  155. data/lib/shipeasy_admin/models/list_slack_channels_response.rb +195 -0
  156. data/lib/shipeasy_admin/models/list_slack_channels_response_channels_inner.rb +203 -0
  157. data/lib/shipeasy_admin/models/list_universes_response.rb +178 -0
  158. data/lib/shipeasy_admin/models/list_universes_response_data_inner.rb +305 -0
  159. data/lib/shipeasy_admin/models/notification_target.rb +159 -0
  160. data/lib/shipeasy_admin/models/notification_target_slack_channel.rb +208 -0
  161. data/lib/shipeasy_admin/models/notify_ops_request.rb +261 -0
  162. data/lib/shipeasy_admin/models/notify_ops_response.rb +193 -0
  163. data/lib/shipeasy_admin/models/publish_config_draft_request.rb +187 -0
  164. data/lib/shipeasy_admin/models/publish_config_draft_response.rb +257 -0
  165. data/lib/shipeasy_admin/models/publish_i18n_profile_request.rb +149 -0
  166. data/lib/shipeasy_admin/models/publish_i18n_profile_response.rb +404 -0
  167. data/lib/shipeasy_admin/models/push_i18n_keys_request.rb +205 -0
  168. data/lib/shipeasy_admin/models/push_i18n_keys_request_keys_inner.rb +192 -0
  169. data/lib/shipeasy_admin/models/push_i18n_keys_response.rb +261 -0
  170. data/lib/shipeasy_admin/models/reanalyze_experiment_response.rb +214 -0
  171. data/lib/shipeasy_admin/models/revoke_key_response.rb +216 -0
  172. data/lib/shipeasy_admin/models/save_config_draft_request.rb +199 -0
  173. data/lib/shipeasy_admin/models/save_config_draft_response.rb +283 -0
  174. data/lib/shipeasy_admin/models/search_hit.rb +284 -0
  175. data/lib/shipeasy_admin/models/search_response.rb +167 -0
  176. data/lib/shipeasy_admin/models/set_experiment_metrics_request.rb +168 -0
  177. data/lib/shipeasy_admin/models/set_experiment_metrics_request_metrics_inner.rb +216 -0
  178. data/lib/shipeasy_admin/models/set_experiment_metrics_response.rb +179 -0
  179. data/lib/shipeasy_admin/models/set_experiment_metrics_response_metrics_inner.rb +201 -0
  180. data/lib/shipeasy_admin/models/set_experiment_status_request.rb +190 -0
  181. data/lib/shipeasy_admin/models/set_experiment_status_response.rb +214 -0
  182. data/lib/shipeasy_admin/models/set_i18n_label_request.rb +213 -0
  183. data/lib/shipeasy_admin/models/set_i18n_label_response.rb +472 -0
  184. data/lib/shipeasy_admin/models/set_killswitch_switch_request.rb +261 -0
  185. data/lib/shipeasy_admin/models/set_killswitch_switch_response.rb +285 -0
  186. data/lib/shipeasy_admin/models/set_killswitch_value_request.rb +214 -0
  187. data/lib/shipeasy_admin/models/set_killswitch_value_response.rb +283 -0
  188. data/lib/shipeasy_admin/models/test_connector_response.rb +189 -0
  189. data/lib/shipeasy_admin/models/unset_killswitch_switch_request.rb +234 -0
  190. data/lib/shipeasy_admin/models/unset_killswitch_switch_response.rb +286 -0
  191. data/lib/shipeasy_admin/models/update_alert_rule_request.rb +304 -0
  192. data/lib/shipeasy_admin/models/update_alert_rule_response.rb +165 -0
  193. data/lib/shipeasy_admin/models/update_config_request.rb +198 -0
  194. data/lib/shipeasy_admin/models/update_config_response.rb +165 -0
  195. data/lib/shipeasy_admin/models/update_config_schema_request.rb +168 -0
  196. data/lib/shipeasy_admin/models/update_config_schema_response.rb +165 -0
  197. data/lib/shipeasy_admin/models/update_connector_request.rb +211 -0
  198. data/lib/shipeasy_admin/models/update_connector_response.rb +166 -0
  199. data/lib/shipeasy_admin/models/update_error_status_request.rb +190 -0
  200. data/lib/shipeasy_admin/models/update_event_request.rb +198 -0
  201. data/lib/shipeasy_admin/models/update_event_response.rb +166 -0
  202. data/lib/shipeasy_admin/models/update_experiment_request.rb +747 -0
  203. data/lib/shipeasy_admin/models/update_experiment_response.rb +165 -0
  204. data/lib/shipeasy_admin/models/update_gate_request.rb +403 -0
  205. data/lib/shipeasy_admin/models/update_gate_response.rb +166 -0
  206. data/lib/shipeasy_admin/models/update_i18n_key_request.rb +176 -0
  207. data/lib/shipeasy_admin/models/update_i18n_key_response.rb +166 -0
  208. data/lib/shipeasy_admin/models/update_killswitch_request.rb +224 -0
  209. data/lib/shipeasy_admin/models/update_killswitch_response.rb +165 -0
  210. data/lib/shipeasy_admin/models/update_ops_item_request.rb +205 -0
  211. data/lib/shipeasy_admin/models/update_ops_item_response.rb +166 -0
  212. data/lib/shipeasy_admin/models/update_universe_request.rb +213 -0
  213. data/lib/shipeasy_admin/models/update_universe_response.rb +165 -0
  214. data/lib/shipeasy_admin/models/upsert_project_request.rb +222 -0
  215. data/lib/shipeasy_admin/models/upsert_project_response.rb +260 -0
  216. data/lib/shipeasy_admin/version.rb +15 -0
  217. data/lib/shipeasy_admin.rb +243 -0
  218. metadata +277 -2
@@ -0,0 +1,291 @@
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/configs`. `name` + `schema` required.
18
+ class CreateConfigRequest < ApiModelBase
19
+ # Stable config/killswitch key in `folder.name` form (two lowercase segments separated by a dot, e.g. `pricing.tiers`). Immutable after create.
20
+ attr_accessor :name
21
+
22
+ # Optional free-form description shown in the dashboard. Max 512 chars.
23
+ attr_accessor :description
24
+
25
+ # Optional folder name grouping items in the dashboard. Alphanumeric, `_` or `-` (no `/`). Part of the SDK lookup key (`<folder>/<name>`).
26
+ attr_accessor :folder
27
+
28
+ # JSON Schema (draft 2020-12) describing the shape of the config value. Top-level `type` must be `'object'`; every published value is validated against this schema.
29
+ attr_accessor :schema
30
+
31
+ attr_accessor :value
32
+
33
+ # Attribute mapping from ruby-style variable name to JSON key.
34
+ def self.attribute_map
35
+ {
36
+ :'name' => :'name',
37
+ :'description' => :'description',
38
+ :'folder' => :'folder',
39
+ :'schema' => :'schema',
40
+ :'value' => :'value'
41
+ }
42
+ end
43
+
44
+ # Returns attribute mapping this model knows about
45
+ def self.acceptable_attribute_map
46
+ attribute_map
47
+ end
48
+
49
+ # Returns all the JSON keys this model knows about
50
+ def self.acceptable_attributes
51
+ acceptable_attribute_map.values
52
+ end
53
+
54
+ # Attribute type mapping.
55
+ def self.openapi_types
56
+ {
57
+ :'name' => :'String',
58
+ :'description' => :'String',
59
+ :'folder' => :'String',
60
+ :'schema' => :'Hash<String, Object>',
61
+ :'value' => :'Object'
62
+ }
63
+ end
64
+
65
+ # List of attributes with nullable: true
66
+ def self.openapi_nullable
67
+ Set.new([
68
+ :'folder',
69
+ :'value'
70
+ ])
71
+ end
72
+
73
+ # Initializes the object
74
+ # @param [Hash] attributes Model attributes in the form of hash
75
+ def initialize(attributes = {})
76
+ if (!attributes.is_a?(Hash))
77
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Shipeasy::Admin::Generated::CreateConfigRequest` initialize method"
78
+ end
79
+
80
+ # check to see if the attribute exists and convert string to symbol for hash key
81
+ acceptable_attribute_map = self.class.acceptable_attribute_map
82
+ attributes = attributes.each_with_object({}) { |(k, v), h|
83
+ if (!acceptable_attribute_map.key?(k.to_sym))
84
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Shipeasy::Admin::Generated::CreateConfigRequest`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
85
+ end
86
+ h[k.to_sym] = v
87
+ }
88
+
89
+ if attributes.key?(:'name')
90
+ self.name = attributes[:'name']
91
+ else
92
+ self.name = nil
93
+ end
94
+
95
+ if attributes.key?(:'description')
96
+ self.description = attributes[:'description']
97
+ end
98
+
99
+ if attributes.key?(:'folder')
100
+ self.folder = attributes[:'folder']
101
+ end
102
+
103
+ if attributes.key?(:'schema')
104
+ if (value = attributes[:'schema']).is_a?(Hash)
105
+ self.schema = value
106
+ end
107
+ else
108
+ self.schema = nil
109
+ end
110
+
111
+ if attributes.key?(:'value')
112
+ self.value = attributes[:'value']
113
+ end
114
+ end
115
+
116
+ # Show invalid properties with the reasons. Usually used together with valid?
117
+ # @return Array for valid properties with the reasons
118
+ def list_invalid_properties
119
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
120
+ invalid_properties = Array.new
121
+ if @name.nil?
122
+ invalid_properties.push('invalid value for "name", name cannot be nil.')
123
+ end
124
+
125
+ if @name.to_s.length > 128
126
+ invalid_properties.push('invalid value for "name", the character length must be smaller than or equal to 128.')
127
+ end
128
+
129
+ pattern = Regexp.new(/^(?:_default|[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?)\.[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/)
130
+ if @name !~ pattern
131
+ invalid_properties.push("invalid value for \"name\", must conform to the pattern #{pattern}.")
132
+ end
133
+
134
+ if !@description.nil? && @description.to_s.length > 512
135
+ invalid_properties.push('invalid value for "description", the character length must be smaller than or equal to 512.')
136
+ end
137
+
138
+ if !@folder.nil? && @folder.to_s.length > 256
139
+ invalid_properties.push('invalid value for "folder", the character length must be smaller than or equal to 256.')
140
+ end
141
+
142
+ pattern = Regexp.new(/^[a-zA-Z0-9_-]+$/)
143
+ if !@folder.nil? && @folder !~ pattern
144
+ invalid_properties.push("invalid value for \"folder\", must conform to the pattern #{pattern}.")
145
+ end
146
+
147
+ if @schema.nil?
148
+ invalid_properties.push('invalid value for "schema", schema cannot be nil.')
149
+ end
150
+
151
+ invalid_properties
152
+ end
153
+
154
+ # Check to see if the all the properties in the model are valid
155
+ # @return true if the model is valid
156
+ def valid?
157
+ warn '[DEPRECATED] the `valid?` method is obsolete'
158
+ return false if @name.nil?
159
+ return false if @name.to_s.length > 128
160
+ return false if @name !~ Regexp.new(/^(?:_default|[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?)\.[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/)
161
+ return false if !@description.nil? && @description.to_s.length > 512
162
+ return false if !@folder.nil? && @folder.to_s.length > 256
163
+ return false if !@folder.nil? && @folder !~ Regexp.new(/^[a-zA-Z0-9_-]+$/)
164
+ return false if @schema.nil?
165
+ true
166
+ end
167
+
168
+ # Custom attribute writer method with validation
169
+ # @param [Object] name Value to be assigned
170
+ def name=(name)
171
+ if name.nil?
172
+ fail ArgumentError, 'name cannot be nil'
173
+ end
174
+
175
+ if name.to_s.length > 128
176
+ fail ArgumentError, 'invalid value for "name", the character length must be smaller than or equal to 128.'
177
+ end
178
+
179
+ pattern = Regexp.new(/^(?:_default|[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?)\.[a-z0-9](?:[a-z0-9_-]*[a-z0-9])?$/)
180
+ if name !~ pattern
181
+ fail ArgumentError, "invalid value for \"name\", must conform to the pattern #{pattern}."
182
+ end
183
+
184
+ @name = name
185
+ end
186
+
187
+ # Custom attribute writer method with validation
188
+ # @param [Object] description Value to be assigned
189
+ def description=(description)
190
+ if description.nil?
191
+ fail ArgumentError, 'description cannot be nil'
192
+ end
193
+
194
+ if description.to_s.length > 512
195
+ fail ArgumentError, 'invalid value for "description", the character length must be smaller than or equal to 512.'
196
+ end
197
+
198
+ @description = description
199
+ end
200
+
201
+ # Custom attribute writer method with validation
202
+ # @param [Object] folder Value to be assigned
203
+ def folder=(folder)
204
+ if !folder.nil? && folder.to_s.length > 256
205
+ fail ArgumentError, 'invalid value for "folder", the character length must be smaller than or equal to 256.'
206
+ end
207
+
208
+ pattern = Regexp.new(/^[a-zA-Z0-9_-]+$/)
209
+ if !folder.nil? && folder !~ pattern
210
+ fail ArgumentError, "invalid value for \"folder\", must conform to the pattern #{pattern}."
211
+ end
212
+
213
+ @folder = folder
214
+ end
215
+
216
+ # Custom attribute writer method with validation
217
+ # @param [Object] schema Value to be assigned
218
+ def schema=(schema)
219
+ if schema.nil?
220
+ fail ArgumentError, 'schema cannot be nil'
221
+ end
222
+
223
+ @schema = schema
224
+ end
225
+
226
+ # Checks equality by comparing each attribute.
227
+ # @param [Object] Object to be compared
228
+ def ==(o)
229
+ return true if self.equal?(o)
230
+ self.class == o.class &&
231
+ name == o.name &&
232
+ description == o.description &&
233
+ folder == o.folder &&
234
+ schema == o.schema &&
235
+ value == o.value
236
+ end
237
+
238
+ # @see the `==` method
239
+ # @param [Object] Object to be compared
240
+ def eql?(o)
241
+ self == o
242
+ end
243
+
244
+ # Calculates hash code according to all attributes.
245
+ # @return [Integer] Hash code
246
+ def hash
247
+ [name, description, folder, schema, value].hash
248
+ end
249
+
250
+ # Builds the object from hash
251
+ # @param [Hash] attributes Model attributes in the form of hash
252
+ # @return [Object] Returns the model itself
253
+ def self.build_from_hash(attributes)
254
+ return nil unless attributes.is_a?(Hash)
255
+ attributes = attributes.transform_keys(&:to_sym)
256
+ transformed_hash = {}
257
+ openapi_types.each_pair do |key, type|
258
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
259
+ transformed_hash["#{key}"] = nil
260
+ elsif type =~ /\AArray<(.*)>/i
261
+ # check to ensure the input is an array given that the attribute
262
+ # is documented as an array but the input is not
263
+ if attributes[attribute_map[key]].is_a?(Array)
264
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
265
+ end
266
+ elsif !attributes[attribute_map[key]].nil?
267
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
268
+ end
269
+ end
270
+ new(transformed_hash)
271
+ end
272
+
273
+ # Returns the object in the form of hash
274
+ # @return [Hash] Returns the object in the form of hash
275
+ def to_hash
276
+ hash = {}
277
+ self.class.attribute_map.each_pair do |attr, param|
278
+ value = self.send(attr)
279
+ if value.nil?
280
+ is_nullable = self.class.openapi_nullable.include?(attr)
281
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
282
+ end
283
+
284
+ hash[param] = _to_hash(value)
285
+ end
286
+ hash
287
+ end
288
+
289
+ end
290
+
291
+ end
@@ -0,0 +1,201 @@
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 CreateConfigResponse < ApiModelBase
18
+ # Newly assigned config id.
19
+ attr_accessor :id
20
+
21
+ # Stable config key in `folder.name` form (two lowercase segments separated by a dot, e.g. `pricing.tiers`). Used by SDKs as `Shipeasy.getConfig('<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::CreateConfigResponse` 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::CreateConfigResponse`. 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
+ invalid_properties
103
+ end
104
+
105
+ # Check to see if the all the properties in the model are valid
106
+ # @return true if the model is valid
107
+ def valid?
108
+ warn '[DEPRECATED] the `valid?` method is obsolete'
109
+ return false if @id.nil?
110
+ return false if @name.nil?
111
+ return false if @name.to_s.length > 128
112
+ true
113
+ end
114
+
115
+ # Custom attribute writer method with validation
116
+ # @param [Object] id Value to be assigned
117
+ def id=(id)
118
+ if id.nil?
119
+ fail ArgumentError, 'id cannot be nil'
120
+ end
121
+
122
+ @id = id
123
+ end
124
+
125
+ # Custom attribute writer method with validation
126
+ # @param [Object] name Value to be assigned
127
+ def name=(name)
128
+ if name.nil?
129
+ fail ArgumentError, 'name cannot be nil'
130
+ end
131
+
132
+ if name.to_s.length > 128
133
+ fail ArgumentError, 'invalid value for "name", the character length must be smaller than or equal to 128.'
134
+ end
135
+
136
+ @name = name
137
+ end
138
+
139
+ # Checks equality by comparing each attribute.
140
+ # @param [Object] Object to be compared
141
+ def ==(o)
142
+ return true if self.equal?(o)
143
+ self.class == o.class &&
144
+ id == o.id &&
145
+ name == o.name
146
+ end
147
+
148
+ # @see the `==` method
149
+ # @param [Object] Object to be compared
150
+ def eql?(o)
151
+ self == o
152
+ end
153
+
154
+ # Calculates hash code according to all attributes.
155
+ # @return [Integer] Hash code
156
+ def hash
157
+ [id, name].hash
158
+ end
159
+
160
+ # Builds the object from hash
161
+ # @param [Hash] attributes Model attributes in the form of hash
162
+ # @return [Object] Returns the model itself
163
+ def self.build_from_hash(attributes)
164
+ return nil unless attributes.is_a?(Hash)
165
+ attributes = attributes.transform_keys(&:to_sym)
166
+ transformed_hash = {}
167
+ openapi_types.each_pair do |key, type|
168
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
169
+ transformed_hash["#{key}"] = nil
170
+ elsif type =~ /\AArray<(.*)>/i
171
+ # check to ensure the input is an array given that the attribute
172
+ # is documented as an array but the input is not
173
+ if attributes[attribute_map[key]].is_a?(Array)
174
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
175
+ end
176
+ elsif !attributes[attribute_map[key]].nil?
177
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
178
+ end
179
+ end
180
+ new(transformed_hash)
181
+ end
182
+
183
+ # Returns the object in the form of hash
184
+ # @return [Hash] Returns the object in the form of hash
185
+ def to_hash
186
+ hash = {}
187
+ self.class.attribute_map.each_pair do |attr, param|
188
+ value = self.send(attr)
189
+ if value.nil?
190
+ is_nullable = self.class.openapi_nullable.include?(attr)
191
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
192
+ end
193
+
194
+ hash[param] = _to_hash(value)
195
+ end
196
+ hash
197
+ end
198
+
199
+ end
200
+
201
+ end
@@ -0,0 +1,64 @@
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/connectors`, discriminated on `provider`. The OAuth providers (`google_sheets`/`github`/`slack`) create a disabled stub that is finished via the provider's OAuth flow. The trigger providers (`claude_trigger`/`cursor_trigger`/`copilot_trigger`/`jules_trigger`) arrive config + credentials together and are fireable immediately.
18
+ module CreateConnectorRequest
19
+ class << self
20
+ # List of class defined in oneOf (OpenAPI v3)
21
+ def openapi_one_of
22
+ [
23
+ :'CreateClaudeTriggerRequest',
24
+ :'CreateCopilotTriggerRequest',
25
+ :'CreateCursorTriggerRequest',
26
+ :'CreateJulesTriggerRequest',
27
+ :'CreateOAuthConnectorRequest'
28
+ ]
29
+ end
30
+
31
+ # Discriminator's property name (OpenAPI v3)
32
+ def openapi_discriminator_name
33
+ :'provider'
34
+ end
35
+
36
+ # Discriminator's mapping (OpenAPI v3)
37
+ def openapi_discriminator_mapping
38
+ {
39
+ :'claude_trigger' => :'CreateClaudeTriggerRequest',
40
+ :'copilot_trigger' => :'CreateCopilotTriggerRequest',
41
+ :'cursor_trigger' => :'CreateCursorTriggerRequest',
42
+ :'github' => :'CreateOAuthConnectorRequest',
43
+ :'google_sheets' => :'CreateOAuthConnectorRequest',
44
+ :'jules_trigger' => :'CreateJulesTriggerRequest',
45
+ :'slack' => :'CreateOAuthConnectorRequest'
46
+ }
47
+ end
48
+
49
+ # Builds the object
50
+ # @param [Mixed] Data to be matched against the list of oneOf items
51
+ # @return [Object] Returns the model or the data itself
52
+ def build(data)
53
+ discriminator_value = data[openapi_discriminator_name]
54
+ return nil if discriminator_value.nil?
55
+
56
+ klass = openapi_discriminator_mapping[discriminator_value.to_s.to_sym]
57
+ return nil unless klass
58
+
59
+ Shipeasy::Admin::Generated.const_get(klass).build_from_hash(data)
60
+ end
61
+ end
62
+ end
63
+
64
+ end