schematichq 1.4.10 → 1.4.11

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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/.fern/metadata.json +2 -2
  3. data/.fern/replay.lock +9 -3
  4. data/lib/schematic/accounts/client.rb +6 -2
  5. data/lib/schematic/accounts/types/count_account_members_params.rb +1 -0
  6. data/lib/schematic/accounts/types/count_account_members_request.rb +1 -0
  7. data/lib/schematic/accounts/types/list_account_members_params.rb +1 -0
  8. data/lib/schematic/accounts/types/list_account_members_request.rb +1 -0
  9. data/lib/schematic/client.rb +6 -1
  10. data/lib/schematic/licenses/client.rb +138 -0
  11. data/lib/schematic/licenses/types/count_licenses_params.rb +16 -0
  12. data/lib/schematic/licenses/types/count_licenses_request.rb +15 -0
  13. data/lib/schematic/licenses/types/count_licenses_response.rb +12 -0
  14. data/lib/schematic/licenses/types/get_single_license_response.rb +12 -0
  15. data/lib/schematic/licenses/types/list_licenses_params.rb +16 -0
  16. data/lib/schematic/licenses/types/list_licenses_request.rb +15 -0
  17. data/lib/schematic/licenses/types/list_licenses_response.rb +12 -0
  18. data/lib/schematic/planmigrations/client.rb +32 -0
  19. data/lib/schematic/planmigrations/types/preview_migration_request_body.rb +14 -0
  20. data/lib/schematic/planmigrations/types/preview_migration_response.rb +12 -0
  21. data/lib/schematic/types/billing_credit_grant_zeroed_out_reason.rb +1 -0
  22. data/lib/schematic/types/feature_detail_response_data.rb +3 -0
  23. data/lib/schematic/types/feature_in_plan_response_data.rb +2 -0
  24. data/lib/schematic/types/feature_response_data.rb +2 -0
  25. data/lib/schematic/types/feature_type.rb +1 -0
  26. data/lib/schematic/types/feature_view.rb +2 -0
  27. data/lib/schematic/types/license_response_data.rb +12 -0
  28. data/lib/schematic/types/plan_version_migration_preview_company_response_data.rb +14 -0
  29. data/lib/schematic/types/plan_version_migration_preview_response_data.rb +9 -0
  30. data/lib/schematic/version.rb +1 -1
  31. data/lib/schematic.rb +14 -1
  32. data/reference.md +316 -0
  33. metadata +15 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 677e9663f6096839ed9c6bd6cfcc614d5591878ab699d4c3ea042a5517d4be13
4
- data.tar.gz: b585b4c5f09b418cee556f125d195f2c16fd9137636c1d38208f90012f85f5f5
3
+ metadata.gz: a42d012076b989e91c5c9019e981ee2af4e4f5f7115aaa1b304bed519c44a454
4
+ data.tar.gz: dd803e3554e9f425bdd2deb7f8b56b57c16483da2f86437e4f8400dae3ba1962
5
5
  SHA512:
6
- metadata.gz: d0b82a52c15011754abfc68b7e76a8ab65a27932afa63d1036b86b59e81ff41099e14e18335555762e1e7f9c04bde39628677f477c5a8a300623db8f121bdf80
7
- data.tar.gz: f26162008e22f054c4465d307f07bc7c237cd88940e295ab5229163330d0620df1c373a488dd160be3ec5b13214c14645c31a6fb0f0c1acb5caf2a67db18e3e4
6
+ metadata.gz: 73bac05632b13d3839a98d2fa63b207243e6fa291bb255f9750af3d1658ac56373aedd630ecb3967ec580c2af9b819af176fa60c7a27897e7b6d72a34e1d9509
7
+ data.tar.gz: c014f30d286b1b01b25cafe35426efb6841c4861f6e8de6e362fbe9f2ca366f0680fb2ff2f2ea8994514f7b3f6e652bd167ca8d4a66f2de1906a0c297922fe45
data/.fern/metadata.json CHANGED
@@ -13,6 +13,6 @@
13
13
  "webrick": ">= 1.0"
14
14
  }
15
15
  },
16
- "originGitCommit": "75191b40ce7af084ca4fb11f623ab59c57cf97e3",
17
- "sdkVersion": "1.4.10"
16
+ "originGitCommit": "340529eacf4f1dcc5522e771872c1dd94b9c4891",
17
+ "sdkVersion": "1.4.11"
18
18
  }
data/.fern/replay.lock CHANGED
@@ -42,14 +42,20 @@ generations:
42
42
  cli_version: unknown
43
43
  generator_versions:
44
44
  fernapi/fern-ruby-sdk: 1.1.13
45
- current_generation: dfe70dc9f1f1787aa5b55f6802739898633c35c7
45
+ - commit_sha: 6d4bb962eb2a83ad3a76662f58edbd07cc5fdadf
46
+ tree_hash: 9ec72264899730d464919a3605eb3a6667ba9464
47
+ timestamp: 2026-07-27T18:37:54.168Z
48
+ cli_version: unknown
49
+ generator_versions:
50
+ fernapi/fern-ruby-sdk: 1.1.13
51
+ current_generation: 6d4bb962eb2a83ad3a76662f58edbd07cc5fdadf
46
52
  patches:
47
53
  - id: patch-5da692c2
48
54
  content_hash: sha256:e652287219a0a709e16112ced444e6472c6fa8bdfe888edf868caaf9769a9472
49
55
  original_commit: 5da692c20aef08577d900f9a860b5f78a549418e
50
56
  original_message: inject host time into datastream wasm rules engine (SCHY-471)
51
57
  original_author: Christopher Brady <chris@schematichq.com>
52
- base_generation: dfe70dc9f1f1787aa5b55f6802739898633c35c7
58
+ base_generation: 6d4bb962eb2a83ad3a76662f58edbd07cc5fdadf
53
59
  files:
54
60
  - test/rules_engine_clock_test.rb
55
61
  patch_content: |
@@ -217,7 +223,7 @@ patches:
217
223
  original_commit: ee61788c5a83fce5dd5768b2536391459550d176
218
224
  original_message: fix rubocop offenses in clock regression test (SCHY-471)
219
225
  original_author: Christopher Brady <chris@schematichq.com>
220
- base_generation: dfe70dc9f1f1787aa5b55f6802739898633c35c7
226
+ base_generation: 6d4bb962eb2a83ad3a76662f58edbd07cc5fdadf
221
227
  files:
222
228
  - test/rules_engine_clock_test.rb
223
229
  patch_content: |
@@ -19,16 +19,18 @@ module Schematic
19
19
  # @option request_options [Integer] :timeout_in_seconds
20
20
  # @option params [String, nil] :ids
21
21
  # @option params [String, nil] :q
22
+ # @option params [Schematic::Types::AccountMemberRole, nil] :role
22
23
  # @option params [Integer, nil] :limit
23
24
  # @option params [Integer, nil] :offset
24
25
  #
25
26
  # @return [Schematic::Accounts::Types::ListAccountMembersResponse]
26
27
  def list_account_members(request_options: {}, **params)
27
28
  params = Schematic::Internal::Types::Utils.normalize_keys(params)
28
- query_param_names = %i[ids q limit offset]
29
+ query_param_names = %i[ids q role limit offset]
29
30
  query_params = {}
30
31
  query_params["ids"] = params[:ids] if params.key?(:ids)
31
32
  query_params["q"] = params[:q] if params.key?(:q)
33
+ query_params["role"] = params[:role] if params.key?(:role)
32
34
  query_params["limit"] = params[:limit] if params.key?(:limit)
33
35
  query_params["offset"] = params[:offset] if params.key?(:offset)
34
36
  params.except(*query_param_names)
@@ -95,16 +97,18 @@ module Schematic
95
97
  # @option request_options [Integer] :timeout_in_seconds
96
98
  # @option params [String, nil] :ids
97
99
  # @option params [String, nil] :q
100
+ # @option params [Schematic::Types::AccountMemberRole, nil] :role
98
101
  # @option params [Integer, nil] :limit
99
102
  # @option params [Integer, nil] :offset
100
103
  #
101
104
  # @return [Schematic::Accounts::Types::CountAccountMembersResponse]
102
105
  def count_account_members(request_options: {}, **params)
103
106
  params = Schematic::Internal::Types::Utils.normalize_keys(params)
104
- query_param_names = %i[ids q limit offset]
107
+ query_param_names = %i[ids q role limit offset]
105
108
  query_params = {}
106
109
  query_params["ids"] = params[:ids] if params.key?(:ids)
107
110
  query_params["q"] = params[:q] if params.key?(:q)
111
+ query_params["role"] = params[:role] if params.key?(:role)
108
112
  query_params["limit"] = params[:limit] if params.key?(:limit)
109
113
  query_params["offset"] = params[:offset] if params.key?(:offset)
110
114
  params.except(*query_param_names)
@@ -9,6 +9,7 @@ module Schematic
9
9
  field :limit, -> { Integer }, optional: true, nullable: false
10
10
  field :offset, -> { Integer }, optional: true, nullable: false
11
11
  field :q, -> { String }, optional: true, nullable: false
12
+ field :role, -> { Schematic::Types::AccountMemberRole }, optional: true, nullable: false
12
13
  end
13
14
  end
14
15
  end
@@ -6,6 +6,7 @@ module Schematic
6
6
  class CountAccountMembersRequest < Internal::Types::Model
7
7
  field :ids, -> { String }, optional: true, nullable: false
8
8
  field :q, -> { String }, optional: true, nullable: false
9
+ field :role, -> { Schematic::Types::AccountMemberRole }, optional: true, nullable: false
9
10
  field :limit, -> { Integer }, optional: true, nullable: false
10
11
  field :offset, -> { Integer }, optional: true, nullable: false
11
12
  end
@@ -9,6 +9,7 @@ module Schematic
9
9
  field :limit, -> { Integer }, optional: true, nullable: false
10
10
  field :offset, -> { Integer }, optional: true, nullable: false
11
11
  field :q, -> { String }, optional: true, nullable: false
12
+ field :role, -> { Schematic::Types::AccountMemberRole }, optional: true, nullable: false
12
13
  end
13
14
  end
14
15
  end
@@ -6,6 +6,7 @@ module Schematic
6
6
  class ListAccountMembersRequest < Internal::Types::Model
7
7
  field :ids, -> { String }, optional: true, nullable: false
8
8
  field :q, -> { String }, optional: true, nullable: false
9
+ field :role, -> { Schematic::Types::AccountMemberRole }, optional: true, nullable: false
9
10
  field :limit, -> { Integer }, optional: true, nullable: false
10
11
  field :offset, -> { Integer }, optional: true, nullable: false
11
12
  end
@@ -10,7 +10,7 @@ module Schematic
10
10
  @raw_client = Schematic::Internal::Http::RawClient.new(
11
11
  base_url: base_url || Schematic::Environment::DEFAULT,
12
12
  headers: {
13
- "User-Agent" => "schematichq/1.4.10",
13
+ "User-Agent" => "schematichq/1.4.11",
14
14
  "X-Fern-Language" => "Ruby",
15
15
  "X-Schematic-Api-Key" => api_key.to_s
16
16
  }
@@ -92,6 +92,11 @@ module Schematic
92
92
  @integrationsapi ||= Schematic::Integrationsapi::Client.new(client: @raw_client)
93
93
  end
94
94
 
95
+ # @return [Schematic::Licenses::Client]
96
+ def licenses
97
+ @licenses ||= Schematic::Licenses::Client.new(client: @raw_client)
98
+ end
99
+
95
100
  # @return [Schematic::Plangroups::Client]
96
101
  def plangroups
97
102
  @plangroups ||= Schematic::Plangroups::Client.new(client: @raw_client)
@@ -0,0 +1,138 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Schematic
4
+ module Licenses
5
+ class Client
6
+ # @param client [Schematic::Internal::Http::RawClient]
7
+ #
8
+ # @return [void]
9
+ def initialize(client:)
10
+ @client = client
11
+ end
12
+
13
+ # @param request_options [Hash]
14
+ # @param params [Hash]
15
+ # @option request_options [String] :base_url
16
+ # @option request_options [Hash{String => Object}] :additional_headers
17
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
18
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
19
+ # @option request_options [Integer] :timeout_in_seconds
20
+ # @option params [String, nil] :feature_ids
21
+ # @option params [String, nil] :ids
22
+ # @option params [String, nil] :name
23
+ # @option params [Integer, nil] :limit
24
+ # @option params [Integer, nil] :offset
25
+ #
26
+ # @return [Schematic::Licenses::Types::ListLicensesResponse]
27
+ def list_licenses(request_options: {}, **params)
28
+ params = Schematic::Internal::Types::Utils.normalize_keys(params)
29
+ query_param_names = %i[feature_ids ids name limit offset]
30
+ query_params = {}
31
+ query_params["feature_ids"] = params[:feature_ids] if params.key?(:feature_ids)
32
+ query_params["ids"] = params[:ids] if params.key?(:ids)
33
+ query_params["name"] = params[:name] if params.key?(:name)
34
+ query_params["limit"] = params[:limit] if params.key?(:limit)
35
+ query_params["offset"] = params[:offset] if params.key?(:offset)
36
+ params.except(*query_param_names)
37
+
38
+ request = Schematic::Internal::JSON::Request.new(
39
+ base_url: request_options[:base_url],
40
+ method: "GET",
41
+ path: "licenses",
42
+ query: query_params,
43
+ request_options: request_options
44
+ )
45
+ begin
46
+ response = @client.send(request)
47
+ rescue Net::HTTPRequestTimeout
48
+ raise Schematic::Errors::TimeoutError
49
+ end
50
+ code = response.code.to_i
51
+ if code.between?(200, 299)
52
+ Schematic::Licenses::Types::ListLicensesResponse.load(response.body)
53
+ else
54
+ error_class = Schematic::Errors::ResponseError.subclass_for_code(code)
55
+ raise error_class.new(response.body, code: code)
56
+ end
57
+ end
58
+
59
+ # @param request_options [Hash]
60
+ # @param params [Hash]
61
+ # @option request_options [String] :base_url
62
+ # @option request_options [Hash{String => Object}] :additional_headers
63
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
64
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
65
+ # @option request_options [Integer] :timeout_in_seconds
66
+ # @option params [String] :license_id
67
+ #
68
+ # @return [Schematic::Licenses::Types::GetSingleLicenseResponse]
69
+ def get_single_license(request_options: {}, **params)
70
+ params = Schematic::Internal::Types::Utils.normalize_keys(params)
71
+ request = Schematic::Internal::JSON::Request.new(
72
+ base_url: request_options[:base_url],
73
+ method: "GET",
74
+ path: "licenses/#{URI.encode_uri_component(params[:license_id].to_s)}",
75
+ request_options: request_options
76
+ )
77
+ begin
78
+ response = @client.send(request)
79
+ rescue Net::HTTPRequestTimeout
80
+ raise Schematic::Errors::TimeoutError
81
+ end
82
+ code = response.code.to_i
83
+ if code.between?(200, 299)
84
+ Schematic::Licenses::Types::GetSingleLicenseResponse.load(response.body)
85
+ else
86
+ error_class = Schematic::Errors::ResponseError.subclass_for_code(code)
87
+ raise error_class.new(response.body, code: code)
88
+ end
89
+ end
90
+
91
+ # @param request_options [Hash]
92
+ # @param params [Hash]
93
+ # @option request_options [String] :base_url
94
+ # @option request_options [Hash{String => Object}] :additional_headers
95
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
96
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
97
+ # @option request_options [Integer] :timeout_in_seconds
98
+ # @option params [String, nil] :feature_ids
99
+ # @option params [String, nil] :ids
100
+ # @option params [String, nil] :name
101
+ # @option params [Integer, nil] :limit
102
+ # @option params [Integer, nil] :offset
103
+ #
104
+ # @return [Schematic::Licenses::Types::CountLicensesResponse]
105
+ def count_licenses(request_options: {}, **params)
106
+ params = Schematic::Internal::Types::Utils.normalize_keys(params)
107
+ query_param_names = %i[feature_ids ids name limit offset]
108
+ query_params = {}
109
+ query_params["feature_ids"] = params[:feature_ids] if params.key?(:feature_ids)
110
+ query_params["ids"] = params[:ids] if params.key?(:ids)
111
+ query_params["name"] = params[:name] if params.key?(:name)
112
+ query_params["limit"] = params[:limit] if params.key?(:limit)
113
+ query_params["offset"] = params[:offset] if params.key?(:offset)
114
+ params.except(*query_param_names)
115
+
116
+ request = Schematic::Internal::JSON::Request.new(
117
+ base_url: request_options[:base_url],
118
+ method: "GET",
119
+ path: "licenses/count",
120
+ query: query_params,
121
+ request_options: request_options
122
+ )
123
+ begin
124
+ response = @client.send(request)
125
+ rescue Net::HTTPRequestTimeout
126
+ raise Schematic::Errors::TimeoutError
127
+ end
128
+ code = response.code.to_i
129
+ if code.between?(200, 299)
130
+ Schematic::Licenses::Types::CountLicensesResponse.load(response.body)
131
+ else
132
+ error_class = Schematic::Errors::ResponseError.subclass_for_code(code)
133
+ raise error_class.new(response.body, code: code)
134
+ end
135
+ end
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Schematic
4
+ module Licenses
5
+ module Types
6
+ # Input parameters
7
+ class CountLicensesParams < Internal::Types::Model
8
+ field :feature_ids, -> { Internal::Types::Array[String] }, optional: true, nullable: false
9
+ field :ids, -> { Internal::Types::Array[String] }, optional: true, nullable: false
10
+ field :limit, -> { Integer }, optional: true, nullable: false
11
+ field :name, -> { String }, optional: true, nullable: false
12
+ field :offset, -> { Integer }, optional: true, nullable: false
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Schematic
4
+ module Licenses
5
+ module Types
6
+ class CountLicensesRequest < Internal::Types::Model
7
+ field :feature_ids, -> { String }, optional: true, nullable: false
8
+ field :ids, -> { String }, optional: true, nullable: false
9
+ field :name, -> { String }, optional: true, nullable: false
10
+ field :limit, -> { Integer }, optional: true, nullable: false
11
+ field :offset, -> { Integer }, optional: true, nullable: false
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Schematic
4
+ module Licenses
5
+ module Types
6
+ class CountLicensesResponse < Internal::Types::Model
7
+ field :data, -> { Schematic::Types::CountResponse }, optional: false, nullable: false
8
+ field :params, -> { Schematic::Licenses::Types::CountLicensesParams }, optional: false, nullable: false
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Schematic
4
+ module Licenses
5
+ module Types
6
+ class GetSingleLicenseResponse < Internal::Types::Model
7
+ field :data, -> { Schematic::Types::LicenseResponseData }, optional: false, nullable: false
8
+ field :params, -> { Internal::Types::Hash[String, Object] }, optional: false, nullable: false
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Schematic
4
+ module Licenses
5
+ module Types
6
+ # Input parameters
7
+ class ListLicensesParams < Internal::Types::Model
8
+ field :feature_ids, -> { Internal::Types::Array[String] }, optional: true, nullable: false
9
+ field :ids, -> { Internal::Types::Array[String] }, optional: true, nullable: false
10
+ field :limit, -> { Integer }, optional: true, nullable: false
11
+ field :name, -> { String }, optional: true, nullable: false
12
+ field :offset, -> { Integer }, optional: true, nullable: false
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Schematic
4
+ module Licenses
5
+ module Types
6
+ class ListLicensesRequest < Internal::Types::Model
7
+ field :feature_ids, -> { String }, optional: true, nullable: false
8
+ field :ids, -> { String }, optional: true, nullable: false
9
+ field :name, -> { String }, optional: true, nullable: false
10
+ field :limit, -> { Integer }, optional: true, nullable: false
11
+ field :offset, -> { Integer }, optional: true, nullable: false
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Schematic
4
+ module Licenses
5
+ module Types
6
+ class ListLicensesResponse < Internal::Types::Model
7
+ field :data, -> { Internal::Types::Array[Schematic::Types::LicenseResponseData] }, optional: false, nullable: false
8
+ field :params, -> { Schematic::Licenses::Types::ListLicensesParams }, optional: false, nullable: false
9
+ end
10
+ end
11
+ end
12
+ end
@@ -322,6 +322,38 @@ module Schematic
322
322
  raise error_class.new(response.body, code: code)
323
323
  end
324
324
  end
325
+
326
+ # @param request_options [Hash]
327
+ # @param params [Schematic::Planmigrations::Types::PreviewMigrationRequestBody]
328
+ # @option request_options [String] :base_url
329
+ # @option request_options [Hash{String => Object}] :additional_headers
330
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
331
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
332
+ # @option request_options [Integer] :timeout_in_seconds
333
+ #
334
+ # @return [Schematic::Planmigrations::Types::PreviewMigrationResponse]
335
+ def preview_migration(request_options: {}, **params)
336
+ params = Schematic::Internal::Types::Utils.normalize_keys(params)
337
+ request = Schematic::Internal::JSON::Request.new(
338
+ base_url: request_options[:base_url],
339
+ method: "POST",
340
+ path: "plan-version-migrations/preview",
341
+ body: Schematic::Planmigrations::Types::PreviewMigrationRequestBody.new(params).to_h,
342
+ request_options: request_options
343
+ )
344
+ begin
345
+ response = @client.send(request)
346
+ rescue Net::HTTPRequestTimeout
347
+ raise Schematic::Errors::TimeoutError
348
+ end
349
+ code = response.code.to_i
350
+ if code.between?(200, 299)
351
+ Schematic::Planmigrations::Types::PreviewMigrationResponse.load(response.body)
352
+ else
353
+ error_class = Schematic::Errors::ResponseError.subclass_for_code(code)
354
+ raise error_class.new(response.body, code: code)
355
+ end
356
+ end
325
357
  end
326
358
  end
327
359
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Schematic
4
+ module Planmigrations
5
+ module Types
6
+ class PreviewMigrationRequestBody < Internal::Types::Model
7
+ field :company_ids, -> { Internal::Types::Array[String] }, optional: false, nullable: false
8
+ field :plan_id, -> { String }, optional: false, nullable: false
9
+ field :plan_version_id_to, -> { String }, optional: false, nullable: false
10
+ field :target_plan_type, -> { Schematic::Types::PlanType }, optional: false, nullable: false
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Schematic
4
+ module Planmigrations
5
+ module Types
6
+ class PreviewMigrationResponse < Internal::Types::Model
7
+ field :data, -> { Schematic::Types::PlanVersionMigrationPreviewResponseData }, optional: false, nullable: false
8
+ field :params, -> { Internal::Types::Hash[String, Object] }, optional: false, nullable: false
9
+ end
10
+ end
11
+ end
12
+ end
@@ -8,6 +8,7 @@ module Schematic
8
8
  CUSTOMER_ARCHIVED = "customer_archived"
9
9
  EXPIRED = "expired"
10
10
  INTEGRATION_UNINSTALLED = "integration_uninstalled"
11
+ LICENSE_RETIRED = "license_retired"
11
12
  MANUAL = "manual"
12
13
  PLAN_CHANGE = "plan_change"
13
14
  PLAN_PERIOD_RESET = "plan_period_reset"
@@ -4,6 +4,7 @@ module Schematic
4
4
  module Types
5
5
  class FeatureDetailResponseData < Internal::Types::Model
6
6
  field :billing_linked_resource, -> { Schematic::Types::BillingLinkedResourceResponseData }, optional: true, nullable: false
7
+ field :billing_product, -> { Schematic::Types::BillingProductResponseData }, optional: true, nullable: false
7
8
  field :created_at, -> { String }, optional: false, nullable: false
8
9
  field :description, -> { String }, optional: false, nullable: false
9
10
  field :event_subtype, -> { String }, optional: true, nullable: false
@@ -12,6 +13,7 @@ module Schematic
12
13
  field :flags, -> { Internal::Types::Array[Schematic::Types::FlagDetailResponseData] }, optional: false, nullable: false
13
14
  field :icon, -> { String }, optional: false, nullable: false
14
15
  field :id, -> { String }, optional: false, nullable: false
16
+ field :license_id, -> { String }, optional: true, nullable: false
15
17
  field :lifecycle_phase, -> { Schematic::Types::FeatureLifecyclePhase }, optional: true, nullable: false
16
18
  field :maintainer, -> { Schematic::Types::AccountMemberResponseData }, optional: true, nullable: false
17
19
  field :maintainer_account_member_id, -> { String }, optional: true, nullable: false
@@ -22,6 +24,7 @@ module Schematic
22
24
  field :trait, -> { Schematic::Types::EntityTraitDefinitionResponseData }, optional: true, nullable: false
23
25
  field :trait_id, -> { String }, optional: true, nullable: false
24
26
  field :updated_at, -> { String }, optional: false, nullable: false
27
+ field :usage_limit_trait_id, -> { String }, optional: true, nullable: false
25
28
  end
26
29
  end
27
30
  end
@@ -12,6 +12,7 @@ module Schematic
12
12
  field :flags, -> { Internal::Types::Array[Schematic::Types::FlagInPlanResponseData] }, optional: false, nullable: false
13
13
  field :icon, -> { String }, optional: false, nullable: false
14
14
  field :id, -> { String }, optional: false, nullable: false
15
+ field :license_id, -> { String }, optional: true, nullable: false
15
16
  field :lifecycle_phase, -> { Schematic::Types::FeatureLifecyclePhase }, optional: true, nullable: false
16
17
  field :maintainer_account_member_id, -> { String }, optional: true, nullable: false
17
18
  field :name, -> { String }, optional: false, nullable: false
@@ -21,6 +22,7 @@ module Schematic
21
22
  field :trait, -> { Schematic::Types::EntityTraitDefinitionResponseData }, optional: true, nullable: false
22
23
  field :trait_id, -> { String }, optional: true, nullable: false
23
24
  field :updated_at, -> { String }, optional: false, nullable: false
25
+ field :usage_limit_trait_id, -> { String }, optional: true, nullable: false
24
26
  end
25
27
  end
26
28
  end
@@ -9,6 +9,7 @@ module Schematic
9
9
  field :feature_type, -> { Schematic::Types::FeatureType }, optional: false, nullable: false
10
10
  field :icon, -> { String }, optional: false, nullable: false
11
11
  field :id, -> { String }, optional: false, nullable: false
12
+ field :license_id, -> { String }, optional: true, nullable: false
12
13
  field :lifecycle_phase, -> { Schematic::Types::FeatureLifecyclePhase }, optional: true, nullable: false
13
14
  field :maintainer_account_member_id, -> { String }, optional: true, nullable: false
14
15
  field :name, -> { String }, optional: false, nullable: false
@@ -16,6 +17,7 @@ module Schematic
16
17
  field :singular_name, -> { String }, optional: true, nullable: false
17
18
  field :trait_id, -> { String }, optional: true, nullable: false
18
19
  field :updated_at, -> { String }, optional: false, nullable: false
20
+ field :usage_limit_trait_id, -> { String }, optional: true, nullable: false
19
21
  end
20
22
  end
21
23
  end
@@ -7,6 +7,7 @@ module Schematic
7
7
 
8
8
  BOOLEAN = "boolean"
9
9
  EVENT = "event"
10
+ LICENSE = "license"
10
11
  TRAIT = "trait"
11
12
  end
12
13
  end
@@ -5,6 +5,7 @@ module Schematic
5
5
  class FeatureView < Internal::Types::Model
6
6
  field :account_id, -> { String }, optional: false, nullable: false
7
7
  field :billing_linked_resource, -> { Schematic::Types::BillingLinkedResourceResponseData }, optional: true, nullable: false
8
+ field :billing_product, -> { Schematic::Types::BillingProductResponseData }, optional: true, nullable: false
8
9
  field :created_at, -> { String }, optional: false, nullable: false
9
10
  field :description, -> { String }, optional: false, nullable: false
10
11
  field :event_subtype, -> { String }, optional: true, nullable: false
@@ -13,6 +14,7 @@ module Schematic
13
14
  field :flags, -> { Internal::Types::Array[Schematic::Types::FlagView] }, optional: false, nullable: false
14
15
  field :icon, -> { String }, optional: false, nullable: false
15
16
  field :id, -> { String }, optional: false, nullable: false
17
+ field :license_id, -> { String }, optional: true, nullable: false
16
18
  field :lifecycle_phase, -> { Schematic::Types::FeatureLifecyclePhase }, optional: true, nullable: false
17
19
  field :name, -> { String }, optional: false, nullable: false
18
20
  field :plans, -> { Internal::Types::Array[Schematic::Types::PreviewObject] }, optional: false, nullable: false
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Schematic
4
+ module Types
5
+ class LicenseResponseData < Internal::Types::Model
6
+ field :created_at, -> { String }, optional: false, nullable: false
7
+ field :id, -> { String }, optional: false, nullable: false
8
+ field :name, -> { String }, optional: false, nullable: false
9
+ field :updated_at, -> { String }, optional: false, nullable: false
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Schematic
4
+ module Types
5
+ class PlanVersionMigrationPreviewCompanyResponseData < Internal::Types::Model
6
+ field :company_id, -> { String }, optional: false, nullable: false
7
+ field :has_billing_changes, -> { Internal::Types::Boolean }, optional: false, nullable: false
8
+ field :has_custom_pricing, -> { Internal::Types::Boolean }, optional: false, nullable: false
9
+ field :note, -> { String }, optional: true, nullable: false
10
+ field :plan_version_id_from, -> { String }, optional: true, nullable: false
11
+ field :will_update_subscription, -> { Internal::Types::Boolean }, optional: false, nullable: false
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Schematic
4
+ module Types
5
+ class PlanVersionMigrationPreviewResponseData < Internal::Types::Model
6
+ field :companies, -> { Internal::Types::Array[Schematic::Types::PlanVersionMigrationPreviewCompanyResponseData] }, optional: false, nullable: false
7
+ end
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Schematic
4
- VERSION = "1.4.10"
4
+ VERSION = "1.4.11"
5
5
  end
data/lib/schematic.rb CHANGED
@@ -35,9 +35,9 @@ require_relative "schematic/internal/iterators/cursor_item_iterator"
35
35
  require_relative "schematic/internal/iterators/offset_item_iterator"
36
36
  require_relative "schematic/internal/iterators/cursor_page_iterator"
37
37
  require_relative "schematic/internal/iterators/offset_page_iterator"
38
+ require_relative "schematic/types/account_member_role"
38
39
  require_relative "schematic/accounts/types/list_account_members_params"
39
40
  require_relative "schematic/types/account_member_permission"
40
- require_relative "schematic/types/account_member_role"
41
41
  require_relative "schematic/types/account_member_response_data"
42
42
  require_relative "schematic/accounts/types/list_account_members_response"
43
43
  require_relative "schematic/accounts/types/get_account_member_response"
@@ -604,6 +604,12 @@ require_relative "schematic/integrationsapi/types/load_sample_data_set_response"
604
604
  require_relative "schematic/integrationsapi/types/assume_stripe_installed_response"
605
605
  require_relative "schematic/integrationsapi/types/install_stripe_response"
606
606
  require_relative "schematic/integrationsapi/types/uninstall_integration_response"
607
+ require_relative "schematic/licenses/types/list_licenses_params"
608
+ require_relative "schematic/types/license_response_data"
609
+ require_relative "schematic/licenses/types/list_licenses_response"
610
+ require_relative "schematic/licenses/types/get_single_license_response"
611
+ require_relative "schematic/licenses/types/count_licenses_params"
612
+ require_relative "schematic/licenses/types/count_licenses_response"
607
613
  require_relative "schematic/plangroups/types/get_plan_group_params"
608
614
  require_relative "schematic/types/checkout_field_response_data"
609
615
  require_relative "schematic/types/checkout_settings_response_data"
@@ -637,6 +643,9 @@ require_relative "schematic/planmigrations/types/get_migration_response"
637
643
  require_relative "schematic/planmigrations/types/retry_migration_response"
638
644
  require_relative "schematic/planmigrations/types/count_migrations_params"
639
645
  require_relative "schematic/planmigrations/types/count_migrations_response"
646
+ require_relative "schematic/types/plan_version_migration_preview_company_response_data"
647
+ require_relative "schematic/types/plan_version_migration_preview_response_data"
648
+ require_relative "schematic/planmigrations/types/preview_migration_response"
640
649
  require_relative "schematic/types/plan_view_public_response_data"
641
650
  require_relative "schematic/types/public_plans_response_data"
642
651
  require_relative "schematic/componentspublic/types/get_public_plans_response"
@@ -954,6 +963,9 @@ require_relative "schematic/insights/types/get_environment_trait_usage_time_seri
954
963
  require_relative "schematic/integrationsapi/client"
955
964
  require_relative "schematic/integrationsapi/types/list_integrations_request"
956
965
  require_relative "schematic/integrationsapi/types/start_data_import_request_body"
966
+ require_relative "schematic/licenses/client"
967
+ require_relative "schematic/licenses/types/list_licenses_request"
968
+ require_relative "schematic/licenses/types/count_licenses_request"
957
969
  require_relative "schematic/plangroups/client"
958
970
  require_relative "schematic/plangroups/types/get_plan_group_request"
959
971
  require_relative "schematic/plangroups/types/create_plan_group_request_body"
@@ -965,6 +977,7 @@ require_relative "schematic/planmigrations/types/list_migrations_request"
965
977
  require_relative "schematic/planmigrations/types/create_migration_input"
966
978
  require_relative "schematic/planmigrations/types/retry_migration_request_body"
967
979
  require_relative "schematic/planmigrations/types/count_migrations_request"
980
+ require_relative "schematic/planmigrations/types/preview_migration_request_body"
968
981
  require_relative "schematic/componentspublic/client"
969
982
  require_relative "schematic/scheduledcheckout/client"
970
983
  require_relative "schematic/scheduledcheckout/types/list_scheduled_checkouts_request"
data/reference.md CHANGED
@@ -56,6 +56,7 @@ client.get_credit_ledger
56
56
  client.accounts.list_account_members(
57
57
  ids: ["ids"],
58
58
  q: "q",
59
+ role: "admin",
59
60
  limit: 1000000,
60
61
  offset: 1000000
61
62
  )
@@ -89,6 +90,14 @@ client.accounts.list_account_members(
89
90
  <dl>
90
91
  <dd>
91
92
 
93
+ **role:** `Schematic::Types::AccountMemberRole` — Filter by member role
94
+
95
+ </dd>
96
+ </dl>
97
+
98
+ <dl>
99
+ <dd>
100
+
92
101
  **limit:** `Integer` — Page limit (default 100)
93
102
 
94
103
  </dd>
@@ -181,6 +190,7 @@ client.accounts.get_account_member(account_member_id: "account_member_id")
181
190
  client.accounts.count_account_members(
182
191
  ids: ["ids"],
183
192
  q: "q",
193
+ role: "admin",
184
194
  limit: 1000000,
185
195
  offset: 1000000
186
196
  )
@@ -214,6 +224,14 @@ client.accounts.count_account_members(
214
224
  <dl>
215
225
  <dd>
216
226
 
227
+ **role:** `Schematic::Types::AccountMemberRole` — Filter by member role
228
+
229
+ </dd>
230
+ </dl>
231
+
232
+ <dl>
233
+ <dd>
234
+
217
235
  **limit:** `Integer` — Page limit (default 100)
218
236
 
219
237
  </dd>
@@ -18493,6 +18511,227 @@ client.integrationsapi.uninstall_integration(integration_id: "integration_id")
18493
18511
  </dl>
18494
18512
 
18495
18513
 
18514
+ </dd>
18515
+ </dl>
18516
+ </details>
18517
+
18518
+ ## licenses
18519
+ <details><summary><code>client.licenses.<a href="/lib/schematic/licenses/client.rb">list_licenses</a>() -> Schematic::Licenses::Types::ListLicensesResponse</code></summary>
18520
+ <dl>
18521
+ <dd>
18522
+
18523
+ #### 🔌 Usage
18524
+
18525
+ <dl>
18526
+ <dd>
18527
+
18528
+ <dl>
18529
+ <dd>
18530
+
18531
+ ```ruby
18532
+ client.licenses.list_licenses(
18533
+ feature_ids: ["feature_ids"],
18534
+ ids: ["ids"],
18535
+ name: "name",
18536
+ limit: 1000000,
18537
+ offset: 1000000
18538
+ )
18539
+ ```
18540
+ </dd>
18541
+ </dl>
18542
+ </dd>
18543
+ </dl>
18544
+
18545
+ #### ⚙️ Parameters
18546
+
18547
+ <dl>
18548
+ <dd>
18549
+
18550
+ <dl>
18551
+ <dd>
18552
+
18553
+ **feature_ids:** `String`
18554
+
18555
+ </dd>
18556
+ </dl>
18557
+
18558
+ <dl>
18559
+ <dd>
18560
+
18561
+ **ids:** `String`
18562
+
18563
+ </dd>
18564
+ </dl>
18565
+
18566
+ <dl>
18567
+ <dd>
18568
+
18569
+ **name:** `String`
18570
+
18571
+ </dd>
18572
+ </dl>
18573
+
18574
+ <dl>
18575
+ <dd>
18576
+
18577
+ **limit:** `Integer` — Page limit (default 100)
18578
+
18579
+ </dd>
18580
+ </dl>
18581
+
18582
+ <dl>
18583
+ <dd>
18584
+
18585
+ **offset:** `Integer` — Page offset (default 0)
18586
+
18587
+ </dd>
18588
+ </dl>
18589
+
18590
+ <dl>
18591
+ <dd>
18592
+
18593
+ **request_options:** `Schematic::Licenses::RequestOptions`
18594
+
18595
+ </dd>
18596
+ </dl>
18597
+ </dd>
18598
+ </dl>
18599
+
18600
+
18601
+ </dd>
18602
+ </dl>
18603
+ </details>
18604
+
18605
+ <details><summary><code>client.licenses.<a href="/lib/schematic/licenses/client.rb">get_single_license</a>(license_id) -> Schematic::Licenses::Types::GetSingleLicenseResponse</code></summary>
18606
+ <dl>
18607
+ <dd>
18608
+
18609
+ #### 🔌 Usage
18610
+
18611
+ <dl>
18612
+ <dd>
18613
+
18614
+ <dl>
18615
+ <dd>
18616
+
18617
+ ```ruby
18618
+ client.licenses.get_single_license(license_id: "license_id")
18619
+ ```
18620
+ </dd>
18621
+ </dl>
18622
+ </dd>
18623
+ </dl>
18624
+
18625
+ #### ⚙️ Parameters
18626
+
18627
+ <dl>
18628
+ <dd>
18629
+
18630
+ <dl>
18631
+ <dd>
18632
+
18633
+ **license_id:** `String` — license_id
18634
+
18635
+ </dd>
18636
+ </dl>
18637
+
18638
+ <dl>
18639
+ <dd>
18640
+
18641
+ **request_options:** `Schematic::Licenses::RequestOptions`
18642
+
18643
+ </dd>
18644
+ </dl>
18645
+ </dd>
18646
+ </dl>
18647
+
18648
+
18649
+ </dd>
18650
+ </dl>
18651
+ </details>
18652
+
18653
+ <details><summary><code>client.licenses.<a href="/lib/schematic/licenses/client.rb">count_licenses</a>() -> Schematic::Licenses::Types::CountLicensesResponse</code></summary>
18654
+ <dl>
18655
+ <dd>
18656
+
18657
+ #### 🔌 Usage
18658
+
18659
+ <dl>
18660
+ <dd>
18661
+
18662
+ <dl>
18663
+ <dd>
18664
+
18665
+ ```ruby
18666
+ client.licenses.count_licenses(
18667
+ feature_ids: ["feature_ids"],
18668
+ ids: ["ids"],
18669
+ name: "name",
18670
+ limit: 1000000,
18671
+ offset: 1000000
18672
+ )
18673
+ ```
18674
+ </dd>
18675
+ </dl>
18676
+ </dd>
18677
+ </dl>
18678
+
18679
+ #### ⚙️ Parameters
18680
+
18681
+ <dl>
18682
+ <dd>
18683
+
18684
+ <dl>
18685
+ <dd>
18686
+
18687
+ **feature_ids:** `String`
18688
+
18689
+ </dd>
18690
+ </dl>
18691
+
18692
+ <dl>
18693
+ <dd>
18694
+
18695
+ **ids:** `String`
18696
+
18697
+ </dd>
18698
+ </dl>
18699
+
18700
+ <dl>
18701
+ <dd>
18702
+
18703
+ **name:** `String`
18704
+
18705
+ </dd>
18706
+ </dl>
18707
+
18708
+ <dl>
18709
+ <dd>
18710
+
18711
+ **limit:** `Integer` — Page limit (default 100)
18712
+
18713
+ </dd>
18714
+ </dl>
18715
+
18716
+ <dl>
18717
+ <dd>
18718
+
18719
+ **offset:** `Integer` — Page offset (default 0)
18720
+
18721
+ </dd>
18722
+ </dl>
18723
+
18724
+ <dl>
18725
+ <dd>
18726
+
18727
+ **request_options:** `Schematic::Licenses::RequestOptions`
18728
+
18729
+ </dd>
18730
+ </dl>
18731
+ </dd>
18732
+ </dl>
18733
+
18734
+
18496
18735
  </dd>
18497
18736
  </dl>
18498
18737
  </details>
@@ -19845,6 +20084,83 @@ client.planmigrations.count_migrations(
19845
20084
  </dl>
19846
20085
 
19847
20086
 
20087
+ </dd>
20088
+ </dl>
20089
+ </details>
20090
+
20091
+ <details><summary><code>client.planmigrations.<a href="/lib/schematic/planmigrations/client.rb">preview_migration</a>(request) -> Schematic::Planmigrations::Types::PreviewMigrationResponse</code></summary>
20092
+ <dl>
20093
+ <dd>
20094
+
20095
+ #### 🔌 Usage
20096
+
20097
+ <dl>
20098
+ <dd>
20099
+
20100
+ <dl>
20101
+ <dd>
20102
+
20103
+ ```ruby
20104
+ client.planmigrations.preview_migration(
20105
+ company_ids: ["company_ids"],
20106
+ plan_id: "plan_id",
20107
+ plan_version_id_to: "plan_version_id_to",
20108
+ target_plan_type: "plan"
20109
+ )
20110
+ ```
20111
+ </dd>
20112
+ </dl>
20113
+ </dd>
20114
+ </dl>
20115
+
20116
+ #### ⚙️ Parameters
20117
+
20118
+ <dl>
20119
+ <dd>
20120
+
20121
+ <dl>
20122
+ <dd>
20123
+
20124
+ **company_ids:** `Internal::Types::Array[String]`
20125
+
20126
+ </dd>
20127
+ </dl>
20128
+
20129
+ <dl>
20130
+ <dd>
20131
+
20132
+ **plan_id:** `String`
20133
+
20134
+ </dd>
20135
+ </dl>
20136
+
20137
+ <dl>
20138
+ <dd>
20139
+
20140
+ **plan_version_id_to:** `String`
20141
+
20142
+ </dd>
20143
+ </dl>
20144
+
20145
+ <dl>
20146
+ <dd>
20147
+
20148
+ **target_plan_type:** `Schematic::Types::PlanType`
20149
+
20150
+ </dd>
20151
+ </dl>
20152
+
20153
+ <dl>
20154
+ <dd>
20155
+
20156
+ **request_options:** `Schematic::Planmigrations::RequestOptions`
20157
+
20158
+ </dd>
20159
+ </dl>
20160
+ </dd>
20161
+ </dl>
20162
+
20163
+
19848
20164
  </dd>
19849
20165
  </dl>
19850
20166
  </details>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schematichq
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.10
4
+ version: 1.4.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Schematic
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-07-22 00:00:00.000000000 Z
11
+ date: 2026-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: wasmtime
@@ -522,6 +522,14 @@ files:
522
522
  - lib/schematic/internal/types/union.rb
523
523
  - lib/schematic/internal/types/unknown.rb
524
524
  - lib/schematic/internal/types/utils.rb
525
+ - lib/schematic/licenses/client.rb
526
+ - lib/schematic/licenses/types/count_licenses_params.rb
527
+ - lib/schematic/licenses/types/count_licenses_request.rb
528
+ - lib/schematic/licenses/types/count_licenses_response.rb
529
+ - lib/schematic/licenses/types/get_single_license_response.rb
530
+ - lib/schematic/licenses/types/list_licenses_params.rb
531
+ - lib/schematic/licenses/types/list_licenses_request.rb
532
+ - lib/schematic/licenses/types/list_licenses_response.rb
525
533
  - lib/schematic/logger.rb
526
534
  - lib/schematic/planbundle/client.rb
527
535
  - lib/schematic/planbundle/types/create_custom_plan_bundle_request_body.rb
@@ -554,6 +562,8 @@ files:
554
562
  - lib/schematic/planmigrations/types/list_migrations_params.rb
555
563
  - lib/schematic/planmigrations/types/list_migrations_request.rb
556
564
  - lib/schematic/planmigrations/types/list_migrations_response.rb
565
+ - lib/schematic/planmigrations/types/preview_migration_request_body.rb
566
+ - lib/schematic/planmigrations/types/preview_migration_response.rb
557
567
  - lib/schematic/planmigrations/types/retry_company_migration_response.rb
558
568
  - lib/schematic/planmigrations/types/retry_migration_request_body.rb
559
569
  - lib/schematic/planmigrations/types/retry_migration_response.rb
@@ -870,6 +880,7 @@ files:
870
880
  - lib/schematic/types/invoice_status.rb
871
881
  - lib/schematic/types/issue_temporary_access_token_response_data.rb
872
882
  - lib/schematic/types/keys_request_body.rb
883
+ - lib/schematic/types/license_response_data.rb
873
884
  - lib/schematic/types/limit_time_series_point_response_data.rb
874
885
  - lib/schematic/types/manage_plan_preview_response_response_data.rb
875
886
  - lib/schematic/types/manage_plan_request.rb
@@ -917,6 +928,8 @@ files:
917
928
  - lib/schematic/types/plan_type.rb
918
929
  - lib/schematic/types/plan_version_company_migration_response_data.rb
919
930
  - lib/schematic/types/plan_version_company_migration_status.rb
931
+ - lib/schematic/types/plan_version_migration_preview_company_response_data.rb
932
+ - lib/schematic/types/plan_version_migration_preview_response_data.rb
920
933
  - lib/schematic/types/plan_version_migration_response_data.rb
921
934
  - lib/schematic/types/plan_version_migration_status.rb
922
935
  - lib/schematic/types/plan_version_migration_strategy.rb