-
Notifications
You must be signed in to change notification settings - Fork 0
/
output.graphql
374 lines (374 loc) · 11.8 KB
/
output.graphql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
type ValueProp {
"Heading of a value proposition."
header: String!
"Body of a value proposition."
body: String!
}
type UpdateProviderBody {
teamId: String
label: String
name: String
logoUrl: String
supportEmail: String
documentationUrl: String
}
type UpdateProvider {
id: ID!
body: UpdateProviderBody!
}
type UpdateProductBody {
name: String
logoUrl: String
listing: ProductListing
"140 character sentence positioning the product."
tagline: String
"A list of value propositions of the product."
valueProps: [ValueProp]
images: [String]
supportEmail: String
documentationUrl: String
"URL to this Product's Terms of Service. If provided is true, then a url must be set. Otherwise, provided is false."
termsUrl: String
featureTypes: [FeatureType]
integration: UpdateProductBodyIntegration
tags: [String]
}
type UpdateProductBodyIntegration {
provisioning: String
baseUrl: String
ssoUrl: String
version: UpdateProductBodyIntegrationVersion
features: ProductIntegrationFeatures
}
enum UpdateProductBodyIntegrationVersion {
V1
}
type UpdateProduct {
id: ID!
body: UpdateProductBody!
}
type UpdatePlanBody {
name: String
label: String
state: String
"Used in conjuction with resizable_to to set or unset the list"
hasResizeConstraints: Boolean
resizableTo: [ID]
"Array of Region IDs"
regions: [ID]
"Array of Feature Values"
features: [FeatureValue]
"The number of days a user gets as a free trial when subscribing to this plan. Trials are valid only once per product; changing plans or adding an additional subscription will not start a new trial."
trialDays: Int
"Dollar value in cents"
cost: Int
}
type UpdatePlan {
id: ID!
body: UpdatePlanBody!
}
type RegionBody {
platform: String!
location: String!
name: String!
priority: Int!
}
type Region {
id: ID!
type: RegionType!
version: RegionVersion!
body: RegionBody!
}
enum RegionVersion {
Version1
}
enum RegionType {
REGION
}
type ProviderBody {
teamId: ID!
label: String!
name: String!
logoUrl: String
supportEmail: String
documentationUrl: String
}
type Provider {
id: ID!
version: ProviderVersion!
type: ProviderType!
body: ProviderBody!
}
enum ProviderType {
PROVIDER
}
enum ProviderVersion {
Version1
}
type ProductListing {
"When true, everyone can see the product when requested. When false it will not be visible to anyone except those on the provider team."
public: Boolean
"When true, the product will be displayed in product listings alongside other products. When false the product will be excluded from listings, but can still be provisioned directly if it's label is known. Any pages that display information about the product when not listed, should indicate to webcrawlers that the content should not be indexed."
listed: Boolean
"Object to hold various flags for marketing purposes only. These are values that need to be stored, but should not affect decision making in code. If we find ourselves in a position where we think they should, we should consider refactoring our listing definition."
marketing: ProductListingMarketing
}
type ProductListingMarketing {
"Indicates whether or not the product is in `Beta` and should be advertised as such. This does not have any impact on who can access the product, it is just used to inform consumers through our clients."
beta: Boolean
"Indicates whether or not the product is in `New` and should be advertised as such. This does not have any impact on who can access the product, it is just used to inform consumers through our clients."
new: Boolean
"Indicates whether or not the product is in `New` and should be advertised as such. This does not have any impact on who can access the product, it is just used to inform consumers through our clients."
featured: Boolean
}
type ProductIntegrationFeatures {
"Indicates whether or not this product supports resource transitions to manifold by access_code."
accessCode: Boolean
"Represents whether or not this product supports Single Sign On"
sso: Boolean
"Represents whether or not this product supports changing the plan of a resource."
planChange: Boolean
"Describes how the region for a resource is specified, if unspecified, then regions have no impact on this resource."
region: ProductIntegrationFeaturesRegion
}
enum ProductIntegrationFeaturesRegion {
USER_SPECIFIED
UNSPECIFIED
}
type ProductBody {
providerId: ID!
"Product labels are globally unique and contain the provider name."
label: String!
name: String!
state: String!
listing: ProductListing!
logoUrl: String!
"140 character sentence positioning the product."
tagline: String!
"A list of value propositions of the product."
valueProps: [ValueProp]!
images: [String]!
supportEmail: String!
documentationUrl: String!
"URL to this Product's Terms of Service. If provided is true, then a url must be set. Otherwise, provided is false."
terms: ProductBodyTerms!
featureTypes: [FeatureType]!
billing: ProductBodyBilling!
integration: ProductBodyIntegration!
tags: [String]
}
type ProductBodyIntegration {
provisioning: String!
baseUrl: String!
ssoUrl: String
version: ProductBodyIntegrationVersion!
features: ProductIntegrationFeatures!
}
enum ProductBodyIntegrationVersion {
V1
}
type ProductBodyBilling {
type: ProductBodyBillingType!
currency: ProductBodyBillingCurrency!
}
enum ProductBodyBillingCurrency {
USD
}
enum ProductBodyBillingType {
MONTHLY_PRORATED
MONTHLY_ANNIVERSARY
ANNUAL_ANNIVERSARY
}
type ProductBodyTerms {
url: String
provided: Boolean!
}
type Product {
id: ID!
version: ProductVersion!
type: ProductType!
body: ProductBody!
}
enum ProductType {
PRODUCT
}
enum ProductVersion {
Version1
}
type PlanBody {
providerId: ID!
productId: ID!
name: String!
label: String!
state: String!
resizableTo: [ID]
"Array of Region IDs"
regions: [ID]!
"Array of Feature Values"
features: [FeatureValue]!
"The number of days a user gets as a free trial when subscribing to this plan. Trials are valid only once per product; changing plans or adding an additional subscription will not start a new trial."
trialDays: Int
"Dollar value in cents."
cost: Int!
}
type Plan {
id: ID!
version: PlanVersion!
type: PlanType!
body: PlanBody!
}
enum PlanType {
PLAN
}
enum PlanVersion {
Version1
}
type FeatureValueDetails {
label: String!
name: String!
"The cost that will be added to the monthly plan cost when this value is selected or is default for the plan. Cost is deprecated in favor of the `price.cost` field."
cost: Int
"Price describes the cost of a feature. It should be preferred over the `cost` property."
price: FeatureValueDetailsPrice
numericDetails: FeatureNumericDetails
}
type FeatureValueDetailsPrice {
"Cost is the price in cents that will be added to plan's base cost when this value is selected or is default for the plan. Number features should use the cost range instead."
cost: Int
"When a feature is used to multiply the cost of the plan or of another feature, multiply factor is used for calculation. A feature cannot have both a cost and a multiply factor."
multiplyFactor: Int
"Price describes how the feature cost should be calculated."
formula: String
"Description explains how a feature is calculated to the user."
description: String
}
type FeatureValue {
feature: String!
value: String!
}
type FeatureType {
label: String!
name: String!
type: FeatureTypeType!
"This sets whether or not the feature can be customized by a consumer."
customizable: Boolean
"This sets whether or not the feature can be upgraded by the consumer after the resource has provisioned. Upgrading means setting a higher value or selecting a higher element in the list."
upgradable: Boolean
"This sets whether or not the feature can be downgraded by the consumer after the resource has provisioned. Downgrading means setting a lower value or selecting a lower element in the list."
downgradable: Boolean
"Sets if this feature’s value is trackable from the provider, this only really affects numeric constraints."
measurable: Boolean
values: [FeatureValueDetails]
}
enum FeatureTypeType {
BOOLEAN
STRING
NUMBER
}
type FeatureNumericRange {
"Defines the end of the range ( inclusive ), from the previous, or 0; where the cost_multiple starts taking effect. If set to -1 this defines the range to infinity, or the maximum integer the system can handle ( whichever comes first )."
limit: Int
"An integer in 10,000,000ths of cents, will be multiplied by the numeric value set in the feature to determine the cost."
costMultiple: Int
}
type FeatureNumericDetails {
"Sets the increment at which numbers can be selected if customizable, by default this is 1; for example, setting this to 8 would only allow integers in increments of 8 ( 0, 8, 16, ... ). This property is not used if the feature is measurable; except if it is set to 0, setting the increment to 0 means this numeric details has no scale, and will not be or customizable. Some plans may not have a measureable or customizable feature."
increment: Int
"Minimum value that can be set by a user if customizable"
min: Int
"Maximum value that can be set by a user if customizable"
max: Int
"Applied to the end of the number for display, for example the ‘GB’ in ‘20 GB’."
suffix: String
costRanges: [FeatureNumericRange]
}
type ExpandedProduct {
id: ID!
version: ExpandedProductVersion!
type: ExpandedProductType!
body: ProductBody!
plans: [ExpandedPlan]
provider: Provider!
}
enum ExpandedProductType {
PRODUCT
}
enum ExpandedProductVersion {
Version1
}
type ExpandedPlanBody {
providerId: ID
productId: ID
name: String
label: String
state: String
resizableTo: [ID]
"Array of Region IDs"
regions: [ID]
"Array of Feature Values"
features: [FeatureValue]
"The number of days a user gets as a free trial when subscribing to this plan. Trials are valid only once per product; changing plans or adding an additional subscription will not start a new trial."
trialDays: Int
"Dollar value in cents."
cost: Int
"An array of feature definitions for the plan, as defined on the Product."
expandedFeatures: [ExpandedFeature]
"A boolean flag that indicates if a plan is free or not based on it's cost and features."
free: Boolean
"Plan cost using its default features plus base cost."
defaultCost: Int
"A boolean flag that indicates if a plan has customizable features."
customizable: Boolean
}
type ExpandedPlan {
id: ID!
version: ExpandedPlanVersion!
type: ExpandedPlanType!
body: ExpandedPlanBody!
}
enum ExpandedPlanType {
PLAN
}
enum ExpandedPlanVersion {
Version1
}
type ExpandedFeature {
label: String
name: String
type: ExpandedFeatureType
"This sets whether or not the feature can be customized by a consumer."
customizable: Boolean
"This sets whether or not the feature can be upgraded by the consumer after the resource has provisioned. Upgrading means setting a higher value or selecting a higher element in the list."
upgradable: Boolean
"This sets whether or not the feature can be downgraded by the consumer after the resource has provisioned. Downgrading means setting a lower value or selecting a lower element in the list."
downgradable: Boolean
"Sets if this feature’s value is trackable from the provider, this only really affects numeric constraints."
measurable: Boolean
values: [FeatureValueDetails]
"The string value set for the feature on the plan, this should only be used if the value property is null."
valueString: String
value: FeatureValueDetails
}
enum ExpandedFeatureType {
BOOLEAN
STRING
NUMBER
}
type Error {
"The error type"
type: String!
"Explanation of the errors"
message: [String]!
}
type CreateRegion {
body: RegionBody!
}
type CreateProvider {
body: ProviderBody!
}
type CreateProduct {
body: ProductBody!
}
type CreatePlan {
body: PlanBody!
}