platform-api 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0c847e31df19c359a864c2db40cb86096b560299
4
- data.tar.gz: f1126988284a9b13bace7e9f6ad8f514949d6f70
3
+ metadata.gz: 1a902190d68e671763ee99cff9b7eae6a4773d36
4
+ data.tar.gz: c18e6c88dfb161fd8070bf4126cd08a1e49e56e3
5
5
  SHA512:
6
- metadata.gz: f4233cef54679df32027789777bc954f50c878bd82abdb5bb3567180dde0e5d38540c8d5cecf826f5a2c333579928a532a2ca4c4fd59c91c237819b8572224d2
7
- data.tar.gz: 40bbd9ca40baf8581968bf5f7cccfee9139b504f1f128660c8d4bfe23784b637898118a19ceae6775fcb9bbd373a8804223265ef20c67df4cf65b093edf28d19
6
+ metadata.gz: 2981e426f10b4a1903a171e0ca190fa2fc336651a717505b645e381268702db2cd330b7cd24aef1f7d4348ae6aa1c8d53f14afb1bd7c5af93ee674cf11274390
7
+ data.tar.gz: 0fc5191f747c0d6204519a65e0c890869b66a694e27ddd6f87284e9848bd7a70902949967fda8fde86174cc3b8fa0a46b13774d941ca84d0dd52b4033e835836
@@ -1,2 +1,2065 @@
1
- bundler: command not found: heroics-generate
2
- Install missing gem executables with `bundle install`
1
+ # encoding: utf-8
2
+
3
+ #
4
+ # WARNING: Do not edit by hand, this file was generated by Heroics:
5
+ #
6
+ # https://github.com/interagent/heroics
7
+ #
8
+
9
+ require 'heroics'
10
+ require 'uri'
11
+
12
+ module PlatformAPI
13
+ # Get a Client configured to use HTTP Basic authentication.
14
+ #
15
+ # @param api_key [String] The API key to use when connecting.
16
+ # @param options [Hash<Symbol,String>] Optionally, custom settings
17
+ # to use with the client. Allowed options are `default_headers`,
18
+ # `cache`, `user` and `url`.
19
+ # @return [Client] A client configured to use the API with HTTP Basic
20
+ # authentication.
21
+ def self.connect(api_key, options=nil)
22
+ options = custom_options(options)
23
+ uri = URI.parse(options[:url])
24
+ uri.user = options.fetch(:user, 'user').gsub('@', '%40')
25
+ uri.password = api_key
26
+ client = Heroics.client_from_schema(SCHEMA, uri.to_s, options)
27
+ Client.new(client)
28
+ end
29
+
30
+ # Get a Client configured to use OAuth authentication.
31
+ #
32
+ # @param oauth_token [String] The OAuth token to use with the API.
33
+ # @param options [Hash<Symbol,String>] Optionally, custom settings
34
+ # to use with the client. Allowed options are `default_headers`,
35
+ # `cache` and `url`.
36
+ # @return [Client] A client configured to use the API with OAuth
37
+ # authentication.
38
+ def self.connect_oauth(oauth_token, options=nil)
39
+ options = custom_options(options)
40
+ url = options[:url]
41
+ client = Heroics.oauth_client_from_schema(oauth_token, SCHEMA, url, options)
42
+ Client.new(client)
43
+ end
44
+
45
+ # Get a Client configured to use Token authentication.
46
+ #
47
+ # @param token [String] The token to use with the API.
48
+ # @param options [Hash<Symbol,String>] Optionally, custom settings
49
+ # to use with the client. Allowed options are `default_headers`,
50
+ # `cache` and `url`.
51
+ # @return [Client] A client configured to use the API with OAuth
52
+ # authentication.
53
+ def self.connect_token(token, options=nil)
54
+ options = custom_options(options)
55
+ url = options[:url]
56
+ client = Heroics.token_client_from_schema(token, SCHEMA, url, options)
57
+ Client.new(client)
58
+ end
59
+
60
+ # Get customized options.
61
+ def self.custom_options(options)
62
+ return default_options if options.nil?
63
+
64
+ final_options = default_options
65
+ if options[:default_headers]
66
+ final_options[:default_headers].merge!(options[:default_headers])
67
+ end
68
+ final_options[:cache] = options[:cache] if options[:cache]
69
+ final_options[:url] = options[:url] if options[:url]
70
+ final_options[:user] = options[:user] if options[:user]
71
+ final_options
72
+ end
73
+
74
+ # Get the default options.
75
+ def self.default_options
76
+ default_headers = {"Accept"=>"application/vnd.heroku+json; version=3"}
77
+ cache = Moneta.new(:File, dir: "#{Dir.home}/.heroics/platform-api")
78
+ {
79
+ default_headers: default_headers,
80
+ cache: cache,
81
+ url: "https://api.heroku.com"
82
+ }
83
+ end
84
+
85
+ private_class_method :default_options, :custom_options
86
+
87
+ # The platform API empowers developers to automate, extend and combine Heroku with other services.
88
+ class Client
89
+ def initialize(client)
90
+ @client = client
91
+ end
92
+
93
+ # An account feature represents a Heroku labs capability that can be enabled or disabled for an account on Heroku.
94
+ #
95
+ # @return [AccountFeature]
96
+ def account_feature
97
+ @account_feature_resource ||= AccountFeature.new(@client)
98
+ end
99
+
100
+ # An account represents an individual signed up to use the Heroku platform.
101
+ #
102
+ # @return [Account]
103
+ def account
104
+ @account_resource ||= Account.new(@client)
105
+ end
106
+
107
+ # An add-on attachment represents a connection between an app and an add-on that it has been given access to.
108
+ #
109
+ # @return [AddonAttachment]
110
+ def addon_attachment
111
+ @addon_attachment_resource ||= AddonAttachment.new(@client)
112
+ end
113
+
114
+ # Add-on services represent add-ons that may be provisioned for apps. Endpoints under add-on services can be accessed without authentication.
115
+ #
116
+ # @return [AddonService]
117
+ def addon_service
118
+ @addon_service_resource ||= AddonService.new(@client)
119
+ end
120
+
121
+ # Add-ons represent add-ons that have been provisioned and attached to one or more apps.
122
+ #
123
+ # @return [Addon]
124
+ def addon
125
+ @addon_resource ||= Addon.new(@client)
126
+ end
127
+
128
+ # An app feature represents a Heroku labs capability that can be enabled or disabled for an app on Heroku.
129
+ #
130
+ # @return [AppFeature]
131
+ def app_feature
132
+ @app_feature_resource ||= AppFeature.new(@client)
133
+ end
134
+
135
+ # An app setup represents an app on Heroku that is setup using an environment, addons, and scripts described in an app.json manifest file.
136
+ #
137
+ # @return [AppSetup]
138
+ def app_setup
139
+ @app_setup_resource ||= AppSetup.new(@client)
140
+ end
141
+
142
+ # An app transfer represents a two party interaction for transferring ownership of an app.
143
+ #
144
+ # @return [AppTransfer]
145
+ def app_transfer
146
+ @app_transfer_resource ||= AppTransfer.new(@client)
147
+ end
148
+
149
+ # An app represents the program that you would like to deploy and run on Heroku.
150
+ #
151
+ # @return [App]
152
+ def app
153
+ @app_resource ||= App.new(@client)
154
+ end
155
+
156
+ # A build result contains the output from a build.
157
+ #
158
+ # @return [BuildResult]
159
+ def build_result
160
+ @build_result_resource ||= BuildResult.new(@client)
161
+ end
162
+
163
+ # A build represents the process of transforming a code tarball into a slug
164
+ #
165
+ # @return [Build]
166
+ def build
167
+ @build_resource ||= Build.new(@client)
168
+ end
169
+
170
+ # A buildpack installation represents a buildpack that will be run against an app.
171
+ #
172
+ # @return [BuildpackInstallation]
173
+ def buildpack_installation
174
+ @buildpack_installation_resource ||= BuildpackInstallation.new(@client)
175
+ end
176
+
177
+ # A collaborator represents an account that has been given access to an app on Heroku.
178
+ #
179
+ # @return [Collaborator]
180
+ def collaborator
181
+ @collaborator_resource ||= Collaborator.new(@client)
182
+ end
183
+
184
+ # Config Vars allow you to manage the configuration information provided to an app on Heroku.
185
+ #
186
+ # @return [ConfigVar]
187
+ def config_var
188
+ @config_var_resource ||= ConfigVar.new(@client)
189
+ end
190
+
191
+ # A credit represents value that will be used up before further charges are assigned to an account.
192
+ #
193
+ # @return [Credit]
194
+ def credit
195
+ @credit_resource ||= Credit.new(@client)
196
+ end
197
+
198
+ # Domains define what web routes should be routed to an app on Heroku.
199
+ #
200
+ # @return [Domain]
201
+ def domain
202
+ @domain_resource ||= Domain.new(@client)
203
+ end
204
+
205
+ # Dynos encapsulate running processes of an app on Heroku.
206
+ #
207
+ # @return [Dyno]
208
+ def dyno
209
+ @dyno_resource ||= Dyno.new(@client)
210
+ end
211
+
212
+ # An event represents an action performed on another API resource.
213
+ #
214
+ # @return [Event]
215
+ def event
216
+ @event_resource ||= Event.new(@client)
217
+ end
218
+
219
+ # A failed event represents a failure of an action performed on another API resource.
220
+ #
221
+ # @return [FailedEvent]
222
+ def failed_event
223
+ @failed_event_resource ||= FailedEvent.new(@client)
224
+ end
225
+
226
+ # The formation of processes that should be maintained for an app. Update the formation to scale processes or change dyno sizes. Available process type names and commands are defined by the `process_types` attribute for the [slug](#slug) currently released on an app.
227
+ #
228
+ # @return [Formation]
229
+ def formation
230
+ @formation_resource ||= Formation.new(@client)
231
+ end
232
+
233
+ # An inbound-ruleset is a collection of rules that specify what hosts can or cannot connect to an application.
234
+ #
235
+ # @return [InboundRuleset]
236
+ def inbound_ruleset
237
+ @inbound_ruleset_resource ||= InboundRuleset.new(@client)
238
+ end
239
+
240
+ # An invitation represents an invite sent to a user to use the Heroku platform.
241
+ #
242
+ # @return [Invitation]
243
+ def invitation
244
+ @invitation_resource ||= Invitation.new(@client)
245
+ end
246
+
247
+ # An invoice address represents the address that should be listed on an invoice.
248
+ #
249
+ # @return [InvoiceAddress]
250
+ def invoice_address
251
+ @invoice_address_resource ||= InvoiceAddress.new(@client)
252
+ end
253
+
254
+ # An invoice is an itemized bill of goods for an account which includes pricing and charges.
255
+ #
256
+ # @return [Invoice]
257
+ def invoice
258
+ @invoice_resource ||= Invoice.new(@client)
259
+ end
260
+
261
+ # Keys represent public SSH keys associated with an account and are used to authorize accounts as they are performing git operations.
262
+ #
263
+ # @return [Key]
264
+ def key
265
+ @key_resource ||= Key.new(@client)
266
+ end
267
+
268
+ # [Log drains](https://devcenter.heroku.com/articles/log-drains) provide a way to forward your Heroku logs to an external syslog server for long-term archiving. This external service must be configured to receive syslog packets from Heroku, whereupon its URL can be added to an app using this API. Some addons will add a log drain when they are provisioned to an app. These drains can only be removed by removing the add-on.
269
+ #
270
+ # @return [LogDrain]
271
+ def log_drain
272
+ @log_drain_resource ||= LogDrain.new(@client)
273
+ end
274
+
275
+ # A log session is a reference to the http based log stream for an app.
276
+ #
277
+ # @return [LogSession]
278
+ def log_session
279
+ @log_session_resource ||= LogSession.new(@client)
280
+ end
281
+
282
+ # OAuth authorizations represent clients that a Heroku user has authorized to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth)
283
+ #
284
+ # @return [OauthAuthorization]
285
+ def oauth_authorization
286
+ @oauth_authorization_resource ||= OauthAuthorization.new(@client)
287
+ end
288
+
289
+ # OAuth clients are applications that Heroku users can authorize to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth).
290
+ #
291
+ # @return [OauthClient]
292
+ def oauth_client
293
+ @oauth_client_resource ||= OauthClient.new(@client)
294
+ end
295
+
296
+ # OAuth grants are used to obtain authorizations on behalf of a user. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth)
297
+ #
298
+ # @return [OauthGrant]
299
+ def oauth_grant
300
+ @oauth_grant_resource ||= OauthGrant.new(@client)
301
+ end
302
+
303
+ # OAuth tokens provide access for authorized clients to act on behalf of a Heroku user to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth)
304
+ #
305
+ # @return [OauthToken]
306
+ def oauth_token
307
+ @oauth_token_resource ||= OauthToken.new(@client)
308
+ end
309
+
310
+ # A list of add-ons the Organization uses across all apps
311
+ #
312
+ # @return [OrganizationAddon]
313
+ def organization_addon
314
+ @organization_addon_resource ||= OrganizationAddon.new(@client)
315
+ end
316
+
317
+ # An organization collaborator represents an account that has been given access to an organization app on Heroku.
318
+ #
319
+ # @return [OrganizationAppCollaborator]
320
+ def organization_app_collaborator
321
+ @organization_app_collaborator_resource ||= OrganizationAppCollaborator.new(@client)
322
+ end
323
+
324
+ # An organization app encapsulates the organization specific functionality of Heroku apps.
325
+ #
326
+ # @return [OrganizationApp]
327
+ def organization_app
328
+ @organization_app_resource ||= OrganizationApp.new(@client)
329
+ end
330
+
331
+ # An organization invoice is an itemized bill of goods for an organization which includes pricing and charges.
332
+ #
333
+ # @return [OrganizationInvoice]
334
+ def organization_invoice
335
+ @organization_invoice_resource ||= OrganizationInvoice.new(@client)
336
+ end
337
+
338
+ # An organization member is an individual with access to an organization.
339
+ #
340
+ # @return [OrganizationMember]
341
+ def organization_member
342
+ @organization_member_resource ||= OrganizationMember.new(@client)
343
+ end
344
+
345
+ # The on file payment method for an account
346
+ #
347
+ # @return [OrganizationPaymentMethod]
348
+ def organization_payment_method
349
+ @organization_payment_method_resource ||= OrganizationPaymentMethod.new(@client)
350
+ end
351
+
352
+ # Tracks an organization's preferences
353
+ #
354
+ # @return [OrganizationPreferences]
355
+ def organization_preferences
356
+ @organization_preferences_resource ||= OrganizationPreferences.new(@client)
357
+ end
358
+
359
+ # Organizations allow you to manage access to a shared group of applications across your development team.
360
+ #
361
+ # @return [Organization]
362
+ def organization
363
+ @organization_resource ||= Organization.new(@client)
364
+ end
365
+
366
+ # This renders a secret that clients can use to build a one-time password to be supplied as a 2nd factor of authentication.
367
+ #
368
+ # @return [OtpSecret]
369
+ def otp_secret
370
+ @otp_secret_resource ||= OtpSecret.new(@client)
371
+ end
372
+
373
+ # A password reset represents a in-process password reset attempt.
374
+ #
375
+ # @return [PasswordReset]
376
+ def password_reset
377
+ @password_reset_resource ||= PasswordReset.new(@client)
378
+ end
379
+
380
+ # The on file payment method for an account
381
+ #
382
+ # @return [PaymentMethod]
383
+ def payment_method
384
+ @payment_method_resource ||= PaymentMethod.new(@client)
385
+ end
386
+
387
+ # A payment represents money collected for an account
388
+ #
389
+ # @return [Payment]
390
+ def payment
391
+ @payment_resource ||= Payment.new(@client)
392
+ end
393
+
394
+ # Plans represent different configurations of add-ons that may be added to apps. Endpoints under add-on services can be accessed without authentication.
395
+ #
396
+ # @return [Plan]
397
+ def plan
398
+ @plan_resource ||= Plan.new(@client)
399
+ end
400
+
401
+ # Rate Limit represents the number of request tokens each account holds. Requests to this endpoint do not count towards the rate limit.
402
+ #
403
+ # @return [RateLimit]
404
+ def rate_limit
405
+ @rate_limit_resource ||= RateLimit.new(@client)
406
+ end
407
+
408
+ # Recovery codes grant access to accounts with two-factor authentication enabled.
409
+ #
410
+ # @return [RecoveryCode]
411
+ def recovery_code
412
+ @recovery_code_resource ||= RecoveryCode.new(@client)
413
+ end
414
+
415
+ # A region represents a geographic location in which your application may run.
416
+ #
417
+ # @return [Region]
418
+ def region
419
+ @region_resource ||= Region.new(@client)
420
+ end
421
+
422
+ # A release represents a combination of code, config vars and add-ons for an app on Heroku.
423
+ #
424
+ # @return [Release]
425
+ def release
426
+ @release_resource ||= Release.new(@client)
427
+ end
428
+
429
+ # A slug is a snapshot of your application code that is ready to run on the platform.
430
+ #
431
+ # @return [Slug]
432
+ def slug
433
+ @slug_resource ||= Slug.new(@client)
434
+ end
435
+
436
+ # SMS numbers are used for recovery on accounts with two-factor authentication enabled.
437
+ #
438
+ # @return [SmsNumber]
439
+ def sms_number
440
+ @sms_number_resource ||= SmsNumber.new(@client)
441
+ end
442
+
443
+ # A source is a location for uploading and downloading an application's source code.
444
+ #
445
+ # @return [Source]
446
+ def source
447
+ @source_resource ||= Source.new(@client)
448
+ end
449
+
450
+ # Network address translation (NAT) for stable outbound IP addresses from a space
451
+ #
452
+ # @return [SpaceNat]
453
+ def space_nat
454
+ @space_nat_resource ||= SpaceNat.new(@client)
455
+ end
456
+
457
+ # A space is an isolated, highly available, secure app execution environments, running in the modern VPC substrate.
458
+ #
459
+ # @return [Space]
460
+ def space
461
+ @space_resource ||= Space.new(@client)
462
+ end
463
+
464
+ # [SSL Endpoint](https://devcenter.heroku.com/articles/ssl-endpoint) is a public address serving custom SSL cert for HTTPS traffic to a Heroku app. Note that an app must have the `ssl:endpoint` addon installed before it can provision an SSL Endpoint using these APIs.
465
+ #
466
+ # @return [SSLEndpoint]
467
+ def ssl_endpoint
468
+ @ssl_endpoint_resource ||= SSLEndpoint.new(@client)
469
+ end
470
+
471
+ # Stacks are the different application execution environments available in the Heroku platform.
472
+ #
473
+ # @return [Stack]
474
+ def stack
475
+ @stack_resource ||= Stack.new(@client)
476
+ end
477
+
478
+ # Tracks a user's preferences and message dismissals
479
+ #
480
+ # @return [UserPreferences]
481
+ def user_preferences
482
+ @user_preferences_resource ||= UserPreferences.new(@client)
483
+ end
484
+
485
+ # Entities that have been whitelisted to be used by an Organization
486
+ #
487
+ # @return [WhitelistedAddonService]
488
+ def whitelisted_addon_service
489
+ @whitelisted_addon_service_resource ||= WhitelistedAddonService.new(@client)
490
+ end
491
+ end
492
+
493
+ private
494
+
495
+ # An account feature represents a Heroku labs capability that can be enabled or disabled for an account on Heroku.
496
+ class AccountFeature
497
+ def initialize(client)
498
+ @client = client
499
+ end
500
+
501
+ # Info for an existing account feature.
502
+ #
503
+ # @param account_feature_id_or_account_feature_name: unique identifier of account feature or unique name of account feature
504
+ def info(account_feature_id_or_account_feature_name)
505
+ @client.account_feature.info(account_feature_id_or_account_feature_name)
506
+ end
507
+
508
+ # List existing account features.
509
+ def list()
510
+ @client.account_feature.list()
511
+ end
512
+
513
+ # Update an existing account feature.
514
+ #
515
+ # @param account_feature_id_or_account_feature_name: unique identifier of account feature or unique name of account feature
516
+ # @param body: the object to pass as the request payload
517
+ def update(account_feature_id_or_account_feature_name, body)
518
+ @client.account_feature.update(account_feature_id_or_account_feature_name, body)
519
+ end
520
+ end
521
+
522
+ # An account represents an individual signed up to use the Heroku platform.
523
+ class Account
524
+ def initialize(client)
525
+ @client = client
526
+ end
527
+
528
+ # Info for account.
529
+ #
530
+ # @param account_email_or_account_id_or_account_self: unique email address of account or unique identifier of an account or Implicit reference to currently authorized user
531
+ def info(account_email_or_account_id_or_account_self)
532
+ @client.account.info(account_email_or_account_id_or_account_self)
533
+ end
534
+
535
+ # Update account.
536
+ #
537
+ # @param account_email_or_account_id_or_account_self: unique email address of account or unique identifier of an account or Implicit reference to currently authorized user
538
+ # @param body: the object to pass as the request payload
539
+ def update(account_email_or_account_id_or_account_self, body)
540
+ @client.account.update(account_email_or_account_id_or_account_self, body)
541
+ end
542
+
543
+ # Change Email for account.
544
+ #
545
+ # @param account_email_or_account_id_or_account_self: unique email address of account or unique identifier of an account or Implicit reference to currently authorized user
546
+ # @param body: the object to pass as the request payload
547
+ def change_email(account_email_or_account_id_or_account_self, body)
548
+ @client.account.change_email(account_email_or_account_id_or_account_self, body)
549
+ end
550
+
551
+ # Change Password for account.
552
+ #
553
+ # @param account_email_or_account_id_or_account_self: unique email address of account or unique identifier of an account or Implicit reference to currently authorized user
554
+ # @param body: the object to pass as the request payload
555
+ def change_password(account_email_or_account_id_or_account_self, body)
556
+ @client.account.change_password(account_email_or_account_id_or_account_self, body)
557
+ end
558
+
559
+ # Delete account. Note that this action cannot be undone.
560
+ #
561
+ # @param account_email_or_account_id_or_account_self: unique email address of account or unique identifier of an account or Implicit reference to currently authorized user
562
+ def delete(account_email_or_account_id_or_account_self)
563
+ @client.account.delete(account_email_or_account_id_or_account_self)
564
+ end
565
+ end
566
+
567
+ # An add-on attachment represents a connection between an app and an add-on that it has been given access to.
568
+ class AddonAttachment
569
+ def initialize(client)
570
+ @client = client
571
+ end
572
+
573
+ # Create a new add-on attachment.
574
+ #
575
+ # @param body: the object to pass as the request payload
576
+ def create(body)
577
+ @client.addon_attachment.create(body)
578
+ end
579
+
580
+ # Delete an existing add-on attachment.
581
+ #
582
+ # @param addon_attachment_id: unique identifier of this add-on attachment
583
+ def delete(addon_attachment_id)
584
+ @client.addon_attachment.delete(addon_attachment_id)
585
+ end
586
+
587
+ # Info for existing add-on attachment.
588
+ #
589
+ # @param addon_attachment_id: unique identifier of this add-on attachment
590
+ def info(addon_attachment_id)
591
+ @client.addon_attachment.info(addon_attachment_id)
592
+ end
593
+
594
+ # List existing add-on attachments.
595
+ def list()
596
+ @client.addon_attachment.list()
597
+ end
598
+
599
+ # List existing add-on attachments for an add-on.
600
+ #
601
+ # @param addon_id_or_addon_name: unique identifier of add-on or globally unique name of the add-on
602
+ def list_by_add_on(addon_id_or_addon_name)
603
+ @client.addon_attachment.list_by_add_on(addon_id_or_addon_name)
604
+ end
605
+
606
+ # List existing add-on attachments for an app.
607
+ #
608
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
609
+ def list_by_app(app_id_or_app_name)
610
+ @client.addon_attachment.list_by_app(app_id_or_app_name)
611
+ end
612
+
613
+ # Info for existing add-on attachment for an app.
614
+ #
615
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
616
+ # @param addon_attachment_id_or_addon_attachment_name: unique identifier of this add-on attachment or unique name for this add-on attachment to this app
617
+ def info_by_app(app_id_or_app_name, addon_attachment_id_or_addon_attachment_name)
618
+ @client.addon_attachment.info_by_app(app_id_or_app_name, addon_attachment_id_or_addon_attachment_name)
619
+ end
620
+ end
621
+
622
+ # Add-on services represent add-ons that may be provisioned for apps. Endpoints under add-on services can be accessed without authentication.
623
+ class AddonService
624
+ def initialize(client)
625
+ @client = client
626
+ end
627
+
628
+ # Info for existing addon-service.
629
+ #
630
+ # @param addon_service_id_or_addon_service_name: unique identifier of this addon-service or unique name of this addon-service
631
+ def info(addon_service_id_or_addon_service_name)
632
+ @client.addon_service.info(addon_service_id_or_addon_service_name)
633
+ end
634
+
635
+ # List existing addon-services.
636
+ def list()
637
+ @client.addon_service.list()
638
+ end
639
+ end
640
+
641
+ # Add-ons represent add-ons that have been provisioned and attached to one or more apps.
642
+ class Addon
643
+ def initialize(client)
644
+ @client = client
645
+ end
646
+
647
+ # Create a new add-on.
648
+ #
649
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
650
+ # @param body: the object to pass as the request payload
651
+ def create(app_id_or_app_name, body)
652
+ @client.addon.create(app_id_or_app_name, body)
653
+ end
654
+
655
+ # Delete an existing add-on.
656
+ #
657
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
658
+ # @param addon_id_or_addon_name: unique identifier of add-on or globally unique name of the add-on
659
+ def delete(app_id_or_app_name, addon_id_or_addon_name)
660
+ @client.addon.delete(app_id_or_app_name, addon_id_or_addon_name)
661
+ end
662
+
663
+ # Info for an existing add-on.
664
+ #
665
+ # @param addon_id_or_addon_name: unique identifier of add-on or globally unique name of the add-on
666
+ def info(addon_id_or_addon_name)
667
+ @client.addon.info(addon_id_or_addon_name)
668
+ end
669
+
670
+ # List all existing add-ons.
671
+ def list()
672
+ @client.addon.list()
673
+ end
674
+
675
+ # List existing add-ons for an app.
676
+ #
677
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
678
+ def list_by_app(app_id_or_app_name)
679
+ @client.addon.list_by_app(app_id_or_app_name)
680
+ end
681
+
682
+ # Change add-on plan. Some add-ons may not support changing plans. In that case, an error will be returned.
683
+ #
684
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
685
+ # @param addon_id_or_addon_name: unique identifier of add-on or globally unique name of the add-on
686
+ # @param body: the object to pass as the request payload
687
+ def update(app_id_or_app_name, addon_id_or_addon_name, body)
688
+ @client.addon.update(app_id_or_app_name, addon_id_or_addon_name, body)
689
+ end
690
+ end
691
+
692
+ # An app feature represents a Heroku labs capability that can be enabled or disabled for an app on Heroku.
693
+ class AppFeature
694
+ def initialize(client)
695
+ @client = client
696
+ end
697
+
698
+ # Info for an existing app feature.
699
+ #
700
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
701
+ # @param app_feature_id_or_app_feature_name: unique identifier of app feature or unique name of app feature
702
+ def info(app_id_or_app_name, app_feature_id_or_app_feature_name)
703
+ @client.app_feature.info(app_id_or_app_name, app_feature_id_or_app_feature_name)
704
+ end
705
+
706
+ # List existing app features.
707
+ #
708
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
709
+ def list(app_id_or_app_name)
710
+ @client.app_feature.list(app_id_or_app_name)
711
+ end
712
+
713
+ # Update an existing app feature.
714
+ #
715
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
716
+ # @param app_feature_id_or_app_feature_name: unique identifier of app feature or unique name of app feature
717
+ # @param body: the object to pass as the request payload
718
+ def update(app_id_or_app_name, app_feature_id_or_app_feature_name, body)
719
+ @client.app_feature.update(app_id_or_app_name, app_feature_id_or_app_feature_name, body)
720
+ end
721
+ end
722
+
723
+ # An app setup represents an app on Heroku that is setup using an environment, addons, and scripts described in an app.json manifest file.
724
+ class AppSetup
725
+ def initialize(client)
726
+ @client = client
727
+ end
728
+
729
+ # Create a new app setup from a gzipped tar archive containing an app.json manifest file.
730
+ #
731
+ # @param body: the object to pass as the request payload
732
+ def create(body)
733
+ @client.app_setup.create(body)
734
+ end
735
+
736
+ # Get the status of an app setup.
737
+ #
738
+ # @param app_setup_id: unique identifier of app setup
739
+ def info(app_setup_id)
740
+ @client.app_setup.info(app_setup_id)
741
+ end
742
+ end
743
+
744
+ # An app transfer represents a two party interaction for transferring ownership of an app.
745
+ class AppTransfer
746
+ def initialize(client)
747
+ @client = client
748
+ end
749
+
750
+ # Create a new app transfer.
751
+ #
752
+ # @param body: the object to pass as the request payload
753
+ def create(body)
754
+ @client.app_transfer.create(body)
755
+ end
756
+
757
+ # Delete an existing app transfer
758
+ #
759
+ # @param app_transfer_id_or_app_name: unique identifier of app transfer or unique name of app
760
+ def delete(app_transfer_id_or_app_name)
761
+ @client.app_transfer.delete(app_transfer_id_or_app_name)
762
+ end
763
+
764
+ # Info for existing app transfer.
765
+ #
766
+ # @param app_transfer_id_or_app_name: unique identifier of app transfer or unique name of app
767
+ def info(app_transfer_id_or_app_name)
768
+ @client.app_transfer.info(app_transfer_id_or_app_name)
769
+ end
770
+
771
+ # List existing apps transfers.
772
+ def list()
773
+ @client.app_transfer.list()
774
+ end
775
+
776
+ # Update an existing app transfer.
777
+ #
778
+ # @param app_transfer_id_or_app_name: unique identifier of app transfer or unique name of app
779
+ # @param body: the object to pass as the request payload
780
+ def update(app_transfer_id_or_app_name, body)
781
+ @client.app_transfer.update(app_transfer_id_or_app_name, body)
782
+ end
783
+ end
784
+
785
+ # An app represents the program that you would like to deploy and run on Heroku.
786
+ class App
787
+ def initialize(client)
788
+ @client = client
789
+ end
790
+
791
+ # Create a new app.
792
+ #
793
+ # @param body: the object to pass as the request payload
794
+ def create(body)
795
+ @client.app.create(body)
796
+ end
797
+
798
+ # Delete an existing app.
799
+ #
800
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
801
+ def delete(app_id_or_app_name)
802
+ @client.app.delete(app_id_or_app_name)
803
+ end
804
+
805
+ # Info for existing app.
806
+ #
807
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
808
+ def info(app_id_or_app_name)
809
+ @client.app.info(app_id_or_app_name)
810
+ end
811
+
812
+ # List existing apps.
813
+ def list()
814
+ @client.app.list()
815
+ end
816
+
817
+ # List owned and collaborated apps (excludes organization apps).
818
+ #
819
+ # @param account_email_or_account_id_or_account_self: unique email address of account or unique identifier of an account or Implicit reference to currently authorized user
820
+ def list_owned_and_collaborated(account_email_or_account_id_or_account_self)
821
+ @client.app.list_owned_and_collaborated(account_email_or_account_id_or_account_self)
822
+ end
823
+
824
+ # Update an existing app.
825
+ #
826
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
827
+ # @param body: the object to pass as the request payload
828
+ def update(app_id_or_app_name, body)
829
+ @client.app.update(app_id_or_app_name, body)
830
+ end
831
+ end
832
+
833
+ # A build result contains the output from a build.
834
+ class BuildResult
835
+ def initialize(client)
836
+ @client = client
837
+ end
838
+
839
+ # Info for existing result.
840
+ #
841
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
842
+ # @param build_id: unique identifier of build
843
+ def info(app_id_or_app_name, build_id)
844
+ @client.build_result.info(app_id_or_app_name, build_id)
845
+ end
846
+ end
847
+
848
+ # A build represents the process of transforming a code tarball into a slug
849
+ class Build
850
+ def initialize(client)
851
+ @client = client
852
+ end
853
+
854
+ # Create a new build.
855
+ #
856
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
857
+ # @param body: the object to pass as the request payload
858
+ def create(app_id_or_app_name, body)
859
+ @client.build.create(app_id_or_app_name, body)
860
+ end
861
+
862
+ # Info for existing build.
863
+ #
864
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
865
+ # @param build_id: unique identifier of build
866
+ def info(app_id_or_app_name, build_id)
867
+ @client.build.info(app_id_or_app_name, build_id)
868
+ end
869
+
870
+ # List existing build.
871
+ #
872
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
873
+ def list(app_id_or_app_name)
874
+ @client.build.list(app_id_or_app_name)
875
+ end
876
+ end
877
+
878
+ # A buildpack installation represents a buildpack that will be run against an app.
879
+ class BuildpackInstallation
880
+ def initialize(client)
881
+ @client = client
882
+ end
883
+
884
+ # Update an app's buildpack installations.
885
+ #
886
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
887
+ # @param body: the object to pass as the request payload
888
+ def update(app_id_or_app_name, body)
889
+ @client.buildpack_installation.update(app_id_or_app_name, body)
890
+ end
891
+
892
+ # List an app's existing buildpack installations.
893
+ #
894
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
895
+ def list(app_id_or_app_name)
896
+ @client.buildpack_installation.list(app_id_or_app_name)
897
+ end
898
+ end
899
+
900
+ # A collaborator represents an account that has been given access to an app on Heroku.
901
+ class Collaborator
902
+ def initialize(client)
903
+ @client = client
904
+ end
905
+
906
+ # Create a new collaborator.
907
+ #
908
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
909
+ # @param body: the object to pass as the request payload
910
+ def create(app_id_or_app_name, body)
911
+ @client.collaborator.create(app_id_or_app_name, body)
912
+ end
913
+
914
+ # Delete an existing collaborator.
915
+ #
916
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
917
+ # @param collaborator_email_or_collaborator_id: invited email address of collaborator or unique identifier of collaborator
918
+ def delete(app_id_or_app_name, collaborator_email_or_collaborator_id)
919
+ @client.collaborator.delete(app_id_or_app_name, collaborator_email_or_collaborator_id)
920
+ end
921
+
922
+ # Info for existing collaborator.
923
+ #
924
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
925
+ # @param collaborator_email_or_collaborator_id: invited email address of collaborator or unique identifier of collaborator
926
+ def info(app_id_or_app_name, collaborator_email_or_collaborator_id)
927
+ @client.collaborator.info(app_id_or_app_name, collaborator_email_or_collaborator_id)
928
+ end
929
+
930
+ # List existing collaborators.
931
+ #
932
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
933
+ def list(app_id_or_app_name)
934
+ @client.collaborator.list(app_id_or_app_name)
935
+ end
936
+ end
937
+
938
+ # Config Vars allow you to manage the configuration information provided to an app on Heroku.
939
+ class ConfigVar
940
+ def initialize(client)
941
+ @client = client
942
+ end
943
+
944
+ # Get config-vars for app.
945
+ #
946
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
947
+ def info(app_id_or_app_name)
948
+ @client.config_var.info(app_id_or_app_name)
949
+ end
950
+
951
+ # Update config-vars for app. You can update existing config-vars by setting them again, and remove by setting it to `NULL`.
952
+ #
953
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
954
+ # @param body: the object to pass as the request payload
955
+ def update(app_id_or_app_name, body)
956
+ @client.config_var.update(app_id_or_app_name, body)
957
+ end
958
+ end
959
+
960
+ # A credit represents value that will be used up before further charges are assigned to an account.
961
+ class Credit
962
+ def initialize(client)
963
+ @client = client
964
+ end
965
+
966
+ # Create a new credit.
967
+ #
968
+ # @param body: the object to pass as the request payload
969
+ def create(body)
970
+ @client.credit.create(body)
971
+ end
972
+
973
+ # Info for existing credit.
974
+ #
975
+ # @param credit_id: unique identifier of credit
976
+ def info(credit_id)
977
+ @client.credit.info(credit_id)
978
+ end
979
+
980
+ # List existing credits.
981
+ def list()
982
+ @client.credit.list()
983
+ end
984
+ end
985
+
986
+ # Domains define what web routes should be routed to an app on Heroku.
987
+ class Domain
988
+ def initialize(client)
989
+ @client = client
990
+ end
991
+
992
+ # Create a new domain.
993
+ #
994
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
995
+ # @param body: the object to pass as the request payload
996
+ def create(app_id_or_app_name, body)
997
+ @client.domain.create(app_id_or_app_name, body)
998
+ end
999
+
1000
+ # Delete an existing domain
1001
+ #
1002
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1003
+ # @param domain_id_or_domain_hostname: unique identifier of this domain or full hostname
1004
+ def delete(app_id_or_app_name, domain_id_or_domain_hostname)
1005
+ @client.domain.delete(app_id_or_app_name, domain_id_or_domain_hostname)
1006
+ end
1007
+
1008
+ # Info for existing domain.
1009
+ #
1010
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1011
+ # @param domain_id_or_domain_hostname: unique identifier of this domain or full hostname
1012
+ def info(app_id_or_app_name, domain_id_or_domain_hostname)
1013
+ @client.domain.info(app_id_or_app_name, domain_id_or_domain_hostname)
1014
+ end
1015
+
1016
+ # List existing domains.
1017
+ #
1018
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1019
+ def list(app_id_or_app_name)
1020
+ @client.domain.list(app_id_or_app_name)
1021
+ end
1022
+ end
1023
+
1024
+ # Dynos encapsulate running processes of an app on Heroku.
1025
+ class Dyno
1026
+ def initialize(client)
1027
+ @client = client
1028
+ end
1029
+
1030
+ # Create a new dyno.
1031
+ #
1032
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1033
+ # @param body: the object to pass as the request payload
1034
+ def create(app_id_or_app_name, body)
1035
+ @client.dyno.create(app_id_or_app_name, body)
1036
+ end
1037
+
1038
+ # Restart dyno.
1039
+ #
1040
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1041
+ # @param dyno_id_or_dyno_name: unique identifier of this dyno or the name of this process on this dyno
1042
+ def restart(app_id_or_app_name, dyno_id_or_dyno_name)
1043
+ @client.dyno.restart(app_id_or_app_name, dyno_id_or_dyno_name)
1044
+ end
1045
+
1046
+ # Restart all dynos
1047
+ #
1048
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1049
+ def restart_all(app_id_or_app_name)
1050
+ @client.dyno.restart_all(app_id_or_app_name)
1051
+ end
1052
+
1053
+ # Info for existing dyno.
1054
+ #
1055
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1056
+ # @param dyno_id_or_dyno_name: unique identifier of this dyno or the name of this process on this dyno
1057
+ def info(app_id_or_app_name, dyno_id_or_dyno_name)
1058
+ @client.dyno.info(app_id_or_app_name, dyno_id_or_dyno_name)
1059
+ end
1060
+
1061
+ # List existing dynos.
1062
+ #
1063
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1064
+ def list(app_id_or_app_name)
1065
+ @client.dyno.list(app_id_or_app_name)
1066
+ end
1067
+ end
1068
+
1069
+ # An event represents an action performed on another API resource.
1070
+ class Event
1071
+ def initialize(client)
1072
+ @client = client
1073
+ end
1074
+ end
1075
+
1076
+ # A failed event represents a failure of an action performed on another API resource.
1077
+ class FailedEvent
1078
+ def initialize(client)
1079
+ @client = client
1080
+ end
1081
+ end
1082
+
1083
+ # The formation of processes that should be maintained for an app. Update the formation to scale processes or change dyno sizes. Available process type names and commands are defined by the `process_types` attribute for the [slug](#slug) currently released on an app.
1084
+ class Formation
1085
+ def initialize(client)
1086
+ @client = client
1087
+ end
1088
+
1089
+ # Info for a process type
1090
+ #
1091
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1092
+ # @param formation_id_or_formation_type: unique identifier of this process type or type of process to maintain
1093
+ def info(app_id_or_app_name, formation_id_or_formation_type)
1094
+ @client.formation.info(app_id_or_app_name, formation_id_or_formation_type)
1095
+ end
1096
+
1097
+ # List process type formation
1098
+ #
1099
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1100
+ def list(app_id_or_app_name)
1101
+ @client.formation.list(app_id_or_app_name)
1102
+ end
1103
+
1104
+ # Batch update process types
1105
+ #
1106
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1107
+ # @param body: the object to pass as the request payload
1108
+ def batch_update(app_id_or_app_name, body)
1109
+ @client.formation.batch_update(app_id_or_app_name, body)
1110
+ end
1111
+
1112
+ # Update process type
1113
+ #
1114
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1115
+ # @param formation_id_or_formation_type: unique identifier of this process type or type of process to maintain
1116
+ # @param body: the object to pass as the request payload
1117
+ def update(app_id_or_app_name, formation_id_or_formation_type, body)
1118
+ @client.formation.update(app_id_or_app_name, formation_id_or_formation_type, body)
1119
+ end
1120
+ end
1121
+
1122
+ # An inbound-ruleset is a collection of rules that specify what hosts can or cannot connect to an application.
1123
+ class InboundRuleset
1124
+ def initialize(client)
1125
+ @client = client
1126
+ end
1127
+
1128
+ # Info on an existing Inbound Ruleset
1129
+ #
1130
+ # @param space_id_or_space_name: unique identifier of space or unique name of space
1131
+ # @param inbound_ruleset_id: unique identifier of an inbound-ruleset
1132
+ def info(space_id_or_space_name, inbound_ruleset_id)
1133
+ @client.inbound_ruleset.info(space_id_or_space_name, inbound_ruleset_id)
1134
+ end
1135
+
1136
+ # List all inbound rulesets for a space
1137
+ #
1138
+ # @param space_id_or_space_name: unique identifier of space or unique name of space
1139
+ def list(space_id_or_space_name)
1140
+ @client.inbound_ruleset.list(space_id_or_space_name)
1141
+ end
1142
+
1143
+ # Create a new inbound ruleset
1144
+ #
1145
+ # @param space_id_or_space_name: unique identifier of space or unique name of space
1146
+ # @param body: the object to pass as the request payload
1147
+ def create(space_id_or_space_name, body)
1148
+ @client.inbound_ruleset.create(space_id_or_space_name, body)
1149
+ end
1150
+ end
1151
+
1152
+ # An invitation represents an invite sent to a user to use the Heroku platform.
1153
+ class Invitation
1154
+ def initialize(client)
1155
+ @client = client
1156
+ end
1157
+
1158
+ # Info for invitation.
1159
+ #
1160
+ # @param invitation_token: Unique identifier of an invitation
1161
+ def info(invitation_token)
1162
+ @client.invitation.info(invitation_token)
1163
+ end
1164
+
1165
+ # Finalize Invitation and Create Account.
1166
+ #
1167
+ # @param invitation_token: Unique identifier of an invitation
1168
+ # @param body: the object to pass as the request payload
1169
+ def finalize_invitation(invitation_token, body)
1170
+ @client.invitation.finalize_invitation(invitation_token, body)
1171
+ end
1172
+
1173
+ # Invite a user.
1174
+ #
1175
+ # @param body: the object to pass as the request payload
1176
+ def invitation(body)
1177
+ @client.invitation.invitation(body)
1178
+ end
1179
+ end
1180
+
1181
+ # An invoice address represents the address that should be listed on an invoice.
1182
+ class InvoiceAddress
1183
+ def initialize(client)
1184
+ @client = client
1185
+ end
1186
+
1187
+ # Retrieve existing invoice address.
1188
+ def info()
1189
+ @client.invoice_address.info()
1190
+ end
1191
+
1192
+ # Update invoice address for an account.
1193
+ #
1194
+ # @param body: the object to pass as the request payload
1195
+ def update(body)
1196
+ @client.invoice_address.update(body)
1197
+ end
1198
+ end
1199
+
1200
+ # An invoice is an itemized bill of goods for an account which includes pricing and charges.
1201
+ class Invoice
1202
+ def initialize(client)
1203
+ @client = client
1204
+ end
1205
+
1206
+ # Info for existing invoice.
1207
+ #
1208
+ # @param invoice_number: human readable invoice number
1209
+ def info(invoice_number)
1210
+ @client.invoice.info(invoice_number)
1211
+ end
1212
+
1213
+ # List existing invoices.
1214
+ def list()
1215
+ @client.invoice.list()
1216
+ end
1217
+ end
1218
+
1219
+ # Keys represent public SSH keys associated with an account and are used to authorize accounts as they are performing git operations.
1220
+ class Key
1221
+ def initialize(client)
1222
+ @client = client
1223
+ end
1224
+
1225
+ # Create a new key.
1226
+ #
1227
+ # @param body: the object to pass as the request payload
1228
+ def create(body)
1229
+ @client.key.create(body)
1230
+ end
1231
+
1232
+ # Delete an existing key
1233
+ #
1234
+ # @param key_id_or_key_fingerprint: unique identifier of this key or a unique identifying string based on contents
1235
+ def delete(key_id_or_key_fingerprint)
1236
+ @client.key.delete(key_id_or_key_fingerprint)
1237
+ end
1238
+
1239
+ # Info for existing key.
1240
+ #
1241
+ # @param key_id_or_key_fingerprint: unique identifier of this key or a unique identifying string based on contents
1242
+ def info(key_id_or_key_fingerprint)
1243
+ @client.key.info(key_id_or_key_fingerprint)
1244
+ end
1245
+
1246
+ # List existing keys.
1247
+ def list()
1248
+ @client.key.list()
1249
+ end
1250
+ end
1251
+
1252
+ # [Log drains](https://devcenter.heroku.com/articles/log-drains) provide a way to forward your Heroku logs to an external syslog server for long-term archiving. This external service must be configured to receive syslog packets from Heroku, whereupon its URL can be added to an app using this API. Some addons will add a log drain when they are provisioned to an app. These drains can only be removed by removing the add-on.
1253
+ class LogDrain
1254
+ def initialize(client)
1255
+ @client = client
1256
+ end
1257
+
1258
+ # Create a new log drain.
1259
+ #
1260
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1261
+ # @param body: the object to pass as the request payload
1262
+ def create(app_id_or_app_name, body)
1263
+ @client.log_drain.create(app_id_or_app_name, body)
1264
+ end
1265
+
1266
+ # Delete an existing log drain. Log drains added by add-ons can only be removed by removing the add-on.
1267
+ #
1268
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1269
+ # @param log_drain_id_or_log_drain_url: unique identifier of this log drain or url associated with the log drain
1270
+ def delete(app_id_or_app_name, log_drain_id_or_log_drain_url)
1271
+ @client.log_drain.delete(app_id_or_app_name, log_drain_id_or_log_drain_url)
1272
+ end
1273
+
1274
+ # Info for existing log drain.
1275
+ #
1276
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1277
+ # @param log_drain_id_or_log_drain_url: unique identifier of this log drain or url associated with the log drain
1278
+ def info(app_id_or_app_name, log_drain_id_or_log_drain_url)
1279
+ @client.log_drain.info(app_id_or_app_name, log_drain_id_or_log_drain_url)
1280
+ end
1281
+
1282
+ # List existing log drains.
1283
+ #
1284
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1285
+ def list(app_id_or_app_name)
1286
+ @client.log_drain.list(app_id_or_app_name)
1287
+ end
1288
+ end
1289
+
1290
+ # A log session is a reference to the http based log stream for an app.
1291
+ class LogSession
1292
+ def initialize(client)
1293
+ @client = client
1294
+ end
1295
+
1296
+ # Create a new log session.
1297
+ #
1298
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1299
+ # @param body: the object to pass as the request payload
1300
+ def create(app_id_or_app_name, body)
1301
+ @client.log_session.create(app_id_or_app_name, body)
1302
+ end
1303
+ end
1304
+
1305
+ # OAuth authorizations represent clients that a Heroku user has authorized to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth)
1306
+ class OauthAuthorization
1307
+ def initialize(client)
1308
+ @client = client
1309
+ end
1310
+
1311
+ # Create a new OAuth authorization.
1312
+ #
1313
+ # @param body: the object to pass as the request payload
1314
+ def create(body)
1315
+ @client.oauth_authorization.create(body)
1316
+ end
1317
+
1318
+ # Delete OAuth authorization.
1319
+ #
1320
+ # @param oauth_authorization_id: unique identifier of OAuth authorization
1321
+ def delete(oauth_authorization_id)
1322
+ @client.oauth_authorization.delete(oauth_authorization_id)
1323
+ end
1324
+
1325
+ # Info for an OAuth authorization.
1326
+ #
1327
+ # @param oauth_authorization_id: unique identifier of OAuth authorization
1328
+ def info(oauth_authorization_id)
1329
+ @client.oauth_authorization.info(oauth_authorization_id)
1330
+ end
1331
+
1332
+ # List OAuth authorizations.
1333
+ def list()
1334
+ @client.oauth_authorization.list()
1335
+ end
1336
+
1337
+ # Regenerate OAuth tokens. This endpoint is only available to direct authorizations or privileged OAuth clients.
1338
+ #
1339
+ # @param oauth_authorization_id: unique identifier of OAuth authorization
1340
+ def regenerate(oauth_authorization_id)
1341
+ @client.oauth_authorization.regenerate(oauth_authorization_id)
1342
+ end
1343
+ end
1344
+
1345
+ # OAuth clients are applications that Heroku users can authorize to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth).
1346
+ class OauthClient
1347
+ def initialize(client)
1348
+ @client = client
1349
+ end
1350
+
1351
+ # Create a new OAuth client.
1352
+ #
1353
+ # @param body: the object to pass as the request payload
1354
+ def create(body)
1355
+ @client.oauth_client.create(body)
1356
+ end
1357
+
1358
+ # Delete OAuth client.
1359
+ #
1360
+ # @param oauth_client_id: unique identifier of this OAuth client
1361
+ def delete(oauth_client_id)
1362
+ @client.oauth_client.delete(oauth_client_id)
1363
+ end
1364
+
1365
+ # Info for an OAuth client
1366
+ #
1367
+ # @param oauth_client_id: unique identifier of this OAuth client
1368
+ def info(oauth_client_id)
1369
+ @client.oauth_client.info(oauth_client_id)
1370
+ end
1371
+
1372
+ # List OAuth clients
1373
+ def list()
1374
+ @client.oauth_client.list()
1375
+ end
1376
+
1377
+ # Update OAuth client
1378
+ #
1379
+ # @param oauth_client_id: unique identifier of this OAuth client
1380
+ # @param body: the object to pass as the request payload
1381
+ def update(oauth_client_id, body)
1382
+ @client.oauth_client.update(oauth_client_id, body)
1383
+ end
1384
+ end
1385
+
1386
+ # OAuth grants are used to obtain authorizations on behalf of a user. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth)
1387
+ class OauthGrant
1388
+ def initialize(client)
1389
+ @client = client
1390
+ end
1391
+ end
1392
+
1393
+ # OAuth tokens provide access for authorized clients to act on behalf of a Heroku user to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth)
1394
+ class OauthToken
1395
+ def initialize(client)
1396
+ @client = client
1397
+ end
1398
+
1399
+ # Create a new OAuth token.
1400
+ #
1401
+ # @param body: the object to pass as the request payload
1402
+ def create(body)
1403
+ @client.oauth_token.create(body)
1404
+ end
1405
+
1406
+ # Revoke OAuth access token.
1407
+ #
1408
+ # @param oauth_token_id: unique identifier of OAuth token
1409
+ def delete(oauth_token_id)
1410
+ @client.oauth_token.delete(oauth_token_id)
1411
+ end
1412
+ end
1413
+
1414
+ # A list of add-ons the Organization uses across all apps
1415
+ class OrganizationAddon
1416
+ def initialize(client)
1417
+ @client = client
1418
+ end
1419
+
1420
+ # List add-ons used across all Organization apps
1421
+ #
1422
+ # @param organization_name: unique name of organization
1423
+ def list_for_organization(organization_name)
1424
+ @client.organization_addon.list_for_organization(organization_name)
1425
+ end
1426
+ end
1427
+
1428
+ # An organization collaborator represents an account that has been given access to an organization app on Heroku.
1429
+ class OrganizationAppCollaborator
1430
+ def initialize(client)
1431
+ @client = client
1432
+ end
1433
+
1434
+ # Create a new collaborator on an organization app. Use this endpoint instead of the `/apps/{app_id_or_name}/collaborator` endpoint when you want the collaborator to be granted [privileges] (https://devcenter.heroku.com/articles/org-users-access#roles-and-app-privileges) according to their role in the organization.
1435
+ #
1436
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1437
+ # @param body: the object to pass as the request payload
1438
+ def create(app_id_or_app_name, body)
1439
+ @client.organization_app_collaborator.create(app_id_or_app_name, body)
1440
+ end
1441
+
1442
+ # Delete an existing collaborator from an organization app.
1443
+ #
1444
+ # @param app_name: unique name of app
1445
+ # @param collaborator_email: invited email address of collaborator
1446
+ def delete(app_name, collaborator_email)
1447
+ @client.organization_app_collaborator.delete(app_name, collaborator_email)
1448
+ end
1449
+
1450
+ # Info for a collaborator on an organization app.
1451
+ #
1452
+ # @param app_name: unique name of app
1453
+ # @param collaborator_email: invited email address of collaborator
1454
+ def info(app_name, collaborator_email)
1455
+ @client.organization_app_collaborator.info(app_name, collaborator_email)
1456
+ end
1457
+
1458
+ # Update an existing collaborator from an organization app.
1459
+ #
1460
+ # @param app_name: unique name of app
1461
+ # @param collaborator_email: invited email address of collaborator
1462
+ def update(app_name, collaborator_email)
1463
+ @client.organization_app_collaborator.update(app_name, collaborator_email)
1464
+ end
1465
+
1466
+ # List collaborators on an organization app.
1467
+ #
1468
+ # @param app_name: unique name of app
1469
+ def list(app_name)
1470
+ @client.organization_app_collaborator.list(app_name)
1471
+ end
1472
+ end
1473
+
1474
+ # An organization app encapsulates the organization specific functionality of Heroku apps.
1475
+ class OrganizationApp
1476
+ def initialize(client)
1477
+ @client = client
1478
+ end
1479
+
1480
+ # Create a new app in the specified organization, in the default organization if unspecified, or in personal account, if default organization is not set.
1481
+ #
1482
+ # @param body: the object to pass as the request payload
1483
+ def create(body)
1484
+ @client.organization_app.create(body)
1485
+ end
1486
+
1487
+ # List apps in the default organization, or in personal account, if default organization is not set.
1488
+ def list()
1489
+ @client.organization_app.list()
1490
+ end
1491
+
1492
+ # List organization apps.
1493
+ #
1494
+ # @param organization_name: unique name of organization
1495
+ def list_for_organization(organization_name)
1496
+ @client.organization_app.list_for_organization(organization_name)
1497
+ end
1498
+
1499
+ # Info for an organization app.
1500
+ #
1501
+ # @param app_name: unique name of app
1502
+ def info(app_name)
1503
+ @client.organization_app.info(app_name)
1504
+ end
1505
+
1506
+ # Lock or unlock an organization app.
1507
+ #
1508
+ # @param app_name: unique name of app
1509
+ # @param body: the object to pass as the request payload
1510
+ def update_locked(app_name, body)
1511
+ @client.organization_app.update_locked(app_name, body)
1512
+ end
1513
+
1514
+ # Transfer an existing organization app to another Heroku account.
1515
+ #
1516
+ # @param app_name: unique name of app
1517
+ # @param body: the object to pass as the request payload
1518
+ def transfer_to_account(app_name, body)
1519
+ @client.organization_app.transfer_to_account(app_name, body)
1520
+ end
1521
+
1522
+ # Transfer an existing organization app to another organization.
1523
+ #
1524
+ # @param app_name: unique name of app
1525
+ # @param body: the object to pass as the request payload
1526
+ def transfer_to_organization(app_name, body)
1527
+ @client.organization_app.transfer_to_organization(app_name, body)
1528
+ end
1529
+ end
1530
+
1531
+ # An organization invoice is an itemized bill of goods for an organization which includes pricing and charges.
1532
+ class OrganizationInvoice
1533
+ def initialize(client)
1534
+ @client = client
1535
+ end
1536
+
1537
+ # Info for existing invoice.
1538
+ #
1539
+ # @param organization_name: unique name of organization
1540
+ # @param organization_invoice_number: human readable invoice number
1541
+ def info(organization_name, organization_invoice_number)
1542
+ @client.organization_invoice.info(organization_name, organization_invoice_number)
1543
+ end
1544
+
1545
+ # List existing invoices.
1546
+ #
1547
+ # @param organization_name: unique name of organization
1548
+ def list(organization_name)
1549
+ @client.organization_invoice.list(organization_name)
1550
+ end
1551
+ end
1552
+
1553
+ # An organization member is an individual with access to an organization.
1554
+ class OrganizationMember
1555
+ def initialize(client)
1556
+ @client = client
1557
+ end
1558
+
1559
+ # Create a new organization member, or update their role.
1560
+ #
1561
+ # @param organization_name: unique name of organization
1562
+ # @param body: the object to pass as the request payload
1563
+ def create_or_update(organization_name, body)
1564
+ @client.organization_member.create_or_update(organization_name, body)
1565
+ end
1566
+
1567
+ # Remove a member from the organization.
1568
+ #
1569
+ # @param organization_name: unique name of organization
1570
+ # @param organization_member_email_or_app_id: email address of the organization member or unique identifier of app
1571
+ def delete(organization_name, organization_member_email_or_app_id)
1572
+ @client.organization_member.delete(organization_name, organization_member_email_or_app_id)
1573
+ end
1574
+
1575
+ # List members of the organization.
1576
+ #
1577
+ # @param organization_name: unique name of organization
1578
+ def list(organization_name)
1579
+ @client.organization_member.list(organization_name)
1580
+ end
1581
+ end
1582
+
1583
+ # The on file payment method for an account
1584
+ class OrganizationPaymentMethod
1585
+ def initialize(client)
1586
+ @client = client
1587
+ end
1588
+
1589
+ # Update an existing payment method for an account.
1590
+ #
1591
+ # @param organization_name: unique name of organization
1592
+ # @param body: the object to pass as the request payload
1593
+ def update(organization_name, body)
1594
+ @client.organization_payment_method.update(organization_name, body)
1595
+ end
1596
+
1597
+ # Get the current payment method for an account.
1598
+ #
1599
+ # @param organization_name: unique name of organization
1600
+ def get(organization_name)
1601
+ @client.organization_payment_method.get(organization_name)
1602
+ end
1603
+ end
1604
+
1605
+ # Tracks an organization's preferences
1606
+ class OrganizationPreferences
1607
+ def initialize(client)
1608
+ @client = client
1609
+ end
1610
+
1611
+ # Retrieve Organization Preferences
1612
+ #
1613
+ # @param organization_preferences_identity:
1614
+ def list(organization_preferences_identity)
1615
+ @client.organization_preferences.list(organization_preferences_identity)
1616
+ end
1617
+
1618
+ # Update Organization Preferences
1619
+ #
1620
+ # @param organization_preferences_identity:
1621
+ # @param body: the object to pass as the request payload
1622
+ def update(organization_preferences_identity, body)
1623
+ @client.organization_preferences.update(organization_preferences_identity, body)
1624
+ end
1625
+ end
1626
+
1627
+ # Organizations allow you to manage access to a shared group of applications across your development team.
1628
+ class Organization
1629
+ def initialize(client)
1630
+ @client = client
1631
+ end
1632
+
1633
+ # List organizations in which you are a member.
1634
+ def list()
1635
+ @client.organization.list()
1636
+ end
1637
+
1638
+ # Info for an organization.
1639
+ #
1640
+ # @param organization_name: unique name of organization
1641
+ def info(organization_name)
1642
+ @client.organization.info(organization_name)
1643
+ end
1644
+
1645
+ # Set or unset the organization as your default organization.
1646
+ #
1647
+ # @param organization_name: unique name of organization
1648
+ # @param body: the object to pass as the request payload
1649
+ def update(organization_name, body)
1650
+ @client.organization.update(organization_name, body)
1651
+ end
1652
+ end
1653
+
1654
+ # This renders a secret that clients can use to build a one-time password to be supplied as a 2nd factor of authentication.
1655
+ class OtpSecret
1656
+ def initialize(client)
1657
+ @client = client
1658
+ end
1659
+
1660
+ # Create new OTP secret. This invalidates any existing OTP secrets on the account.
1661
+ def create()
1662
+ @client.otp_secret.create()
1663
+ end
1664
+ end
1665
+
1666
+ # A password reset represents a in-process password reset attempt.
1667
+ class PasswordReset
1668
+ def initialize(client)
1669
+ @client = client
1670
+ end
1671
+
1672
+ # Reset account's password. This will send a reset password link to the user's email address.
1673
+ #
1674
+ # @param body: the object to pass as the request payload
1675
+ def reset_password(body)
1676
+ @client.password_reset.reset_password(body)
1677
+ end
1678
+
1679
+ # Complete password reset.
1680
+ #
1681
+ # @param password_reset_reset_password_token: unique identifier of a password reset attempt
1682
+ # @param body: the object to pass as the request payload
1683
+ def complete_reset_password(password_reset_reset_password_token, body)
1684
+ @client.password_reset.complete_reset_password(password_reset_reset_password_token, body)
1685
+ end
1686
+ end
1687
+
1688
+ # The on file payment method for an account
1689
+ class PaymentMethod
1690
+ def initialize(client)
1691
+ @client = client
1692
+ end
1693
+
1694
+ # Update an existing payment method for an account.
1695
+ #
1696
+ # @param body: the object to pass as the request payload
1697
+ def update(body)
1698
+ @client.payment_method.update(body)
1699
+ end
1700
+
1701
+ # Get the current payment method for an account.
1702
+ def get()
1703
+ @client.payment_method.get()
1704
+ end
1705
+ end
1706
+
1707
+ # A payment represents money collected for an account
1708
+ class Payment
1709
+ def initialize(client)
1710
+ @client = client
1711
+ end
1712
+
1713
+ # Create a payment on an existing account
1714
+ #
1715
+ # @param body: the object to pass as the request payload
1716
+ def create(body)
1717
+ @client.payment.create(body)
1718
+ end
1719
+ end
1720
+
1721
+ # Plans represent different configurations of add-ons that may be added to apps. Endpoints under add-on services can be accessed without authentication.
1722
+ class Plan
1723
+ def initialize(client)
1724
+ @client = client
1725
+ end
1726
+
1727
+ # Info for existing plan.
1728
+ #
1729
+ # @param addon_service_id_or_addon_service_name: unique identifier of this addon-service or unique name of this addon-service
1730
+ # @param plan_id_or_plan_name: unique identifier of this plan or unique name of this plan
1731
+ def info(addon_service_id_or_addon_service_name, plan_id_or_plan_name)
1732
+ @client.plan.info(addon_service_id_or_addon_service_name, plan_id_or_plan_name)
1733
+ end
1734
+
1735
+ # List existing plans.
1736
+ #
1737
+ # @param addon_service_id_or_addon_service_name: unique identifier of this addon-service or unique name of this addon-service
1738
+ def list(addon_service_id_or_addon_service_name)
1739
+ @client.plan.list(addon_service_id_or_addon_service_name)
1740
+ end
1741
+ end
1742
+
1743
+ # Rate Limit represents the number of request tokens each account holds. Requests to this endpoint do not count towards the rate limit.
1744
+ class RateLimit
1745
+ def initialize(client)
1746
+ @client = client
1747
+ end
1748
+
1749
+ # Info for rate limits.
1750
+ def info()
1751
+ @client.rate_limit.info()
1752
+ end
1753
+ end
1754
+
1755
+ # Recovery codes grant access to accounts with two-factor authentication enabled.
1756
+ class RecoveryCode
1757
+ def initialize(client)
1758
+ @client = client
1759
+ end
1760
+
1761
+ # Generate new recovery codes. This invalidates any existing codes on the account.
1762
+ def create()
1763
+ @client.recovery_code.create()
1764
+ end
1765
+ end
1766
+
1767
+ # A region represents a geographic location in which your application may run.
1768
+ class Region
1769
+ def initialize(client)
1770
+ @client = client
1771
+ end
1772
+
1773
+ # Info for existing region.
1774
+ #
1775
+ # @param region_id_or_region_name: unique identifier of region or unique name of region
1776
+ def info(region_id_or_region_name)
1777
+ @client.region.info(region_id_or_region_name)
1778
+ end
1779
+
1780
+ # List existing regions.
1781
+ def list()
1782
+ @client.region.list()
1783
+ end
1784
+ end
1785
+
1786
+ # A release represents a combination of code, config vars and add-ons for an app on Heroku.
1787
+ class Release
1788
+ def initialize(client)
1789
+ @client = client
1790
+ end
1791
+
1792
+ # Info for existing release.
1793
+ #
1794
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1795
+ # @param release_id_or_release_version: unique identifier of release or unique version assigned to the release
1796
+ def info(app_id_or_app_name, release_id_or_release_version)
1797
+ @client.release.info(app_id_or_app_name, release_id_or_release_version)
1798
+ end
1799
+
1800
+ # List existing releases.
1801
+ #
1802
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1803
+ def list(app_id_or_app_name)
1804
+ @client.release.list(app_id_or_app_name)
1805
+ end
1806
+
1807
+ # Create new release.
1808
+ #
1809
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1810
+ # @param body: the object to pass as the request payload
1811
+ def create(app_id_or_app_name, body)
1812
+ @client.release.create(app_id_or_app_name, body)
1813
+ end
1814
+
1815
+ # Rollback to an existing release.
1816
+ #
1817
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1818
+ # @param body: the object to pass as the request payload
1819
+ def rollback(app_id_or_app_name, body)
1820
+ @client.release.rollback(app_id_or_app_name, body)
1821
+ end
1822
+ end
1823
+
1824
+ # A slug is a snapshot of your application code that is ready to run on the platform.
1825
+ class Slug
1826
+ def initialize(client)
1827
+ @client = client
1828
+ end
1829
+
1830
+ # Info for existing slug.
1831
+ #
1832
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1833
+ # @param slug_id: unique identifier of slug
1834
+ def info(app_id_or_app_name, slug_id)
1835
+ @client.slug.info(app_id_or_app_name, slug_id)
1836
+ end
1837
+
1838
+ # Create a new slug. For more information please refer to [Deploying Slugs using the Platform API](https://devcenter.heroku.com/articles/platform-api-deploying-slugs).
1839
+ #
1840
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1841
+ # @param body: the object to pass as the request payload
1842
+ def create(app_id_or_app_name, body)
1843
+ @client.slug.create(app_id_or_app_name, body)
1844
+ end
1845
+ end
1846
+
1847
+ # SMS numbers are used for recovery on accounts with two-factor authentication enabled.
1848
+ class SmsNumber
1849
+ def initialize(client)
1850
+ @client = client
1851
+ end
1852
+
1853
+ # Recover an account using an SMS recovery code
1854
+ #
1855
+ # @param account_email_or_account_id_or_account_self: unique email address of account or unique identifier of an account or Implicit reference to currently authorized user
1856
+ def sms_number(account_email_or_account_id_or_account_self)
1857
+ @client.sms_number.sms_number(account_email_or_account_id_or_account_self)
1858
+ end
1859
+
1860
+ # Recover an account using an SMS recovery code
1861
+ #
1862
+ # @param account_email_or_account_id_or_account_self: unique email address of account or unique identifier of an account or Implicit reference to currently authorized user
1863
+ def recover(account_email_or_account_id_or_account_self)
1864
+ @client.sms_number.recover(account_email_or_account_id_or_account_self)
1865
+ end
1866
+
1867
+ # Confirm an SMS number change with a confirmation code
1868
+ #
1869
+ # @param account_email_or_account_id_or_account_self: unique email address of account or unique identifier of an account or Implicit reference to currently authorized user
1870
+ def confirm(account_email_or_account_id_or_account_self)
1871
+ @client.sms_number.confirm(account_email_or_account_id_or_account_self)
1872
+ end
1873
+ end
1874
+
1875
+ # A source is a location for uploading and downloading an application's source code.
1876
+ class Source
1877
+ def initialize(client)
1878
+ @client = client
1879
+ end
1880
+
1881
+ # Create URLs for uploading and downloading source.
1882
+ #
1883
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1884
+ def create(app_id_or_app_name)
1885
+ @client.source.create(app_id_or_app_name)
1886
+ end
1887
+ end
1888
+
1889
+ # Network address translation (NAT) for stable outbound IP addresses from a space
1890
+ class SpaceNat
1891
+ def initialize(client)
1892
+ @client = client
1893
+ end
1894
+
1895
+ # Current state of network address translation for a space.
1896
+ #
1897
+ # @param space_id_or_space_name: unique identifier of space or unique name of space
1898
+ def info(space_id_or_space_name)
1899
+ @client.space_nat.info(space_id_or_space_name)
1900
+ end
1901
+ end
1902
+
1903
+ # A space is an isolated, highly available, secure app execution environments, running in the modern VPC substrate.
1904
+ class Space
1905
+ def initialize(client)
1906
+ @client = client
1907
+ end
1908
+
1909
+ # List existing spaces.
1910
+ def list()
1911
+ @client.space.list()
1912
+ end
1913
+
1914
+ # Info for existing space.
1915
+ #
1916
+ # @param space_id_or_space_name: unique identifier of space or unique name of space
1917
+ def info(space_id_or_space_name)
1918
+ @client.space.info(space_id_or_space_name)
1919
+ end
1920
+
1921
+ # Update an existing space.
1922
+ #
1923
+ # @param space_id_or_space_name: unique identifier of space or unique name of space
1924
+ # @param body: the object to pass as the request payload
1925
+ def update(space_id_or_space_name, body)
1926
+ @client.space.update(space_id_or_space_name, body)
1927
+ end
1928
+
1929
+ # Delete an existing space.
1930
+ #
1931
+ # @param space_id_or_space_name: unique identifier of space or unique name of space
1932
+ def delete(space_id_or_space_name)
1933
+ @client.space.delete(space_id_or_space_name)
1934
+ end
1935
+
1936
+ # Create a new space.
1937
+ #
1938
+ # @param body: the object to pass as the request payload
1939
+ def create(body)
1940
+ @client.space.create(body)
1941
+ end
1942
+ end
1943
+
1944
+ # [SSL Endpoint](https://devcenter.heroku.com/articles/ssl-endpoint) is a public address serving custom SSL cert for HTTPS traffic to a Heroku app. Note that an app must have the `ssl:endpoint` addon installed before it can provision an SSL Endpoint using these APIs.
1945
+ class SSLEndpoint
1946
+ def initialize(client)
1947
+ @client = client
1948
+ end
1949
+
1950
+ # Create a new SSL endpoint.
1951
+ #
1952
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1953
+ # @param body: the object to pass as the request payload
1954
+ def create(app_id_or_app_name, body)
1955
+ @client.ssl_endpoint.create(app_id_or_app_name, body)
1956
+ end
1957
+
1958
+ # Delete existing SSL endpoint.
1959
+ #
1960
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1961
+ # @param ssl_endpoint_id_or_ssl_endpoint_name: unique identifier of this SSL endpoint or unique name for SSL endpoint
1962
+ def delete(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name)
1963
+ @client.ssl_endpoint.delete(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name)
1964
+ end
1965
+
1966
+ # Info for existing SSL endpoint.
1967
+ #
1968
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1969
+ # @param ssl_endpoint_id_or_ssl_endpoint_name: unique identifier of this SSL endpoint or unique name for SSL endpoint
1970
+ def info(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name)
1971
+ @client.ssl_endpoint.info(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name)
1972
+ end
1973
+
1974
+ # List existing SSL endpoints.
1975
+ #
1976
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1977
+ def list(app_id_or_app_name)
1978
+ @client.ssl_endpoint.list(app_id_or_app_name)
1979
+ end
1980
+
1981
+ # Update an existing SSL endpoint.
1982
+ #
1983
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1984
+ # @param ssl_endpoint_id_or_ssl_endpoint_name: unique identifier of this SSL endpoint or unique name for SSL endpoint
1985
+ # @param body: the object to pass as the request payload
1986
+ def update(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name, body)
1987
+ @client.ssl_endpoint.update(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name, body)
1988
+ end
1989
+ end
1990
+
1991
+ # Stacks are the different application execution environments available in the Heroku platform.
1992
+ class Stack
1993
+ def initialize(client)
1994
+ @client = client
1995
+ end
1996
+
1997
+ # Stack info.
1998
+ #
1999
+ # @param stack_name_or_stack_id: unique name of stack or unique identifier of stack
2000
+ def info(stack_name_or_stack_id)
2001
+ @client.stack.info(stack_name_or_stack_id)
2002
+ end
2003
+
2004
+ # List available stacks.
2005
+ def list()
2006
+ @client.stack.list()
2007
+ end
2008
+ end
2009
+
2010
+ # Tracks a user's preferences and message dismissals
2011
+ class UserPreferences
2012
+ def initialize(client)
2013
+ @client = client
2014
+ end
2015
+
2016
+ # Retrieve User Preferences
2017
+ #
2018
+ # @param user_preferences_self: Implicit reference to currently authorized user
2019
+ def list(user_preferences_self)
2020
+ @client.user_preferences.list(user_preferences_self)
2021
+ end
2022
+
2023
+ # Update User Preferences
2024
+ #
2025
+ # @param user_preferences_self: Implicit reference to currently authorized user
2026
+ # @param body: the object to pass as the request payload
2027
+ def update(user_preferences_self, body)
2028
+ @client.user_preferences.update(user_preferences_self, body)
2029
+ end
2030
+ end
2031
+
2032
+ # Entities that have been whitelisted to be used by an Organization
2033
+ class WhitelistedAddonService
2034
+ def initialize(client)
2035
+ @client = client
2036
+ end
2037
+
2038
+ # List all whitelisted Add-on Services for an Organization
2039
+ #
2040
+ # @param organization_name: unique name of organization
2041
+ def list(organization_name)
2042
+ @client.whitelisted_addon_service.list(organization_name)
2043
+ end
2044
+
2045
+ # Whitelist an Add-on Service
2046
+ #
2047
+ # @param organization_name: unique name of organization
2048
+ # @param body: the object to pass as the request payload
2049
+ def create(organization_name, body)
2050
+ @client.whitelisted_addon_service.create(organization_name, body)
2051
+ end
2052
+
2053
+ # Remove a whitelisted entity
2054
+ #
2055
+ # @param organization_name: unique name of organization
2056
+ # @param whitelisted_addon_service_id_or_addon_service_name: unique identifier for this whitelisting entity or unique name of this addon-service
2057
+ def delete(organization_name, whitelisted_addon_service_id_or_addon_service_name)
2058
+ @client.whitelisted_addon_service.delete(organization_name, whitelisted_addon_service_id_or_addon_service_name)
2059
+ end
2060
+ end
2061
+
2062
+ SCHEMA = Heroics::Schema.new(MultiJson.load(<<-'HEROICS_SCHEMA'))
2063
+ {"$schema":"http://interagent.github.io/interagent-hyper-schema","type":["object"],"definitions":{"account-feature":{"description":"An account feature represents a Heroku labs capability that can be enabled or disabled for an account on Heroku.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Account Feature","type":["object"],"definitions":{"created_at":{"description":"when account feature was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"description":{"description":"description of account feature","example":"Causes account to example.","readOnly":true,"type":["string"]},"doc_url":{"description":"documentation URL of account feature","example":"http://devcenter.heroku.com/articles/example","readOnly":true,"type":["string"]},"enabled":{"description":"whether or not account feature has been enabled","example":true,"readOnly":false,"type":["boolean"]},"id":{"description":"unique identifier of account feature","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/account-feature/definitions/id"},{"$ref":"#/definitions/account-feature/definitions/name"}]},"name":{"description":"unique name of account feature","example":"name","readOnly":true,"type":["string"]},"state":{"description":"state of account feature","example":"public","readOnly":true,"type":["string"]},"updated_at":{"description":"when account feature was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Info for an existing account feature.","href":"/account/features/{(%23%2Fdefinitions%2Faccount-feature%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/account-feature"},"title":"Info"},{"description":"List existing account features.","href":"/account/features","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/account-feature"},"type":["array"]},"title":"List"},{"description":"Update an existing account feature.","href":"/account/features/{(%23%2Fdefinitions%2Faccount-feature%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"enabled":{"$ref":"#/definitions/account-feature/definitions/enabled"}},"required":["enabled"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/account-feature"},"title":"Update"}],"properties":{"created_at":{"$ref":"#/definitions/account-feature/definitions/created_at"},"description":{"$ref":"#/definitions/account-feature/definitions/description"},"doc_url":{"$ref":"#/definitions/account-feature/definitions/doc_url"},"enabled":{"$ref":"#/definitions/account-feature/definitions/enabled"},"id":{"$ref":"#/definitions/account-feature/definitions/id"},"name":{"$ref":"#/definitions/account-feature/definitions/name"},"state":{"$ref":"#/definitions/account-feature/definitions/state"},"updated_at":{"$ref":"#/definitions/account-feature/definitions/updated_at"}}},"account":{"description":"An account represents an individual signed up to use the Heroku platform.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Account","type":["object"],"definitions":{"allow_tracking":{"default":true,"description":"whether to allow third party web activity tracking","example":true,"readOnly":false,"type":["boolean"]},"beta":{"default":false,"description":"whether allowed to utilize beta Heroku features","example":false,"readOnly":false,"type":["boolean"]},"created_at":{"description":"when account was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"email":{"description":"unique email address of account","example":"username@example.com","format":"email","readOnly":false,"type":["string"]},"id":{"description":"unique identifier of an account","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/account/definitions/email"},{"$ref":"#/definitions/account/definitions/id"},{"$ref":"#/definitions/account/definitions/self"}]},"last_login":{"description":"when account last authorized with Heroku","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string","null"]},"name":{"description":"full name of the account owner","example":"Tina Edmonds","readOnly":false,"type":["string","null"]},"new_password":{"description":"the new password for the account when changing the password","example":"newpassword","readOnly":true,"type":["string"]},"password":{"description":"current password on the account","example":"currentpassword","readOnly":true,"type":["string"]},"self":{"description":"Implicit reference to currently authorized user","enum":["~"],"example":"~","readOnly":true,"type":["string"]},"sms_number":{"description":"SMS number of account","example":"+1 ***-***-1234","readOnly":true,"type":["string","null"]},"suspended_at":{"description":"when account was suspended","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string","null"]},"delinquent_at":{"description":"when account became delinquent","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string","null"]},"two_factor_authentication":{"description":"whether two-factor auth is enabled on the account","example":false,"readOnly":true,"type":["boolean"]},"updated_at":{"description":"when account was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"verified":{"default":false,"description":"whether account has been verified with billing information","example":false,"readOnly":true,"type":["boolean"]}},"links":[{"description":"Info for account.","href":"/account","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/account"},"title":"Info"},{"description":"Update account.","href":"/account","method":"PATCH","rel":"update","schema":{"properties":{"allow_tracking":{"$ref":"#/definitions/account/definitions/allow_tracking"},"beta":{"$ref":"#/definitions/account/definitions/beta"},"name":{"$ref":"#/definitions/account/definitions/name"},"password":{"$ref":"#/definitions/account/definitions/password"}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/account"},"title":"Update"},{"description":"Change Email for account.","href":"/account","method":"PATCH","rel":"update","schema":{"properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"password":{"$ref":"#/definitions/account/definitions/password"}},"required":["password","email"],"type":["object"]},"title":"Change Email"},{"description":"Change Password for account.","href":"/account","method":"PATCH","rel":"update","schema":{"properties":{"new_password":{"$ref":"#/definitions/account/definitions/new_password"},"password":{"$ref":"#/definitions/account/definitions/password"}},"required":["new_password","password"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/account"},"title":"Change Password"},{"description":"Delete account. Note that this action cannot be undone.","href":"/account","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/account"},"title":"Delete"},{"description":"Info for account.","href":"/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/account"},"title":"Info"},{"description":"Update account.","href":"/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"allow_tracking":{"$ref":"#/definitions/account/definitions/allow_tracking"},"beta":{"$ref":"#/definitions/account/definitions/beta"},"name":{"$ref":"#/definitions/account/definitions/name"},"password":{"$ref":"#/definitions/account/definitions/password"}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/account"},"title":"Update"},{"description":"Change Email for account.","href":"/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"password":{"$ref":"#/definitions/account/definitions/password"}},"required":["password","email"],"type":["object"]},"title":"Change Email"},{"description":"Change Password for account.","href":"/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"new_password":{"$ref":"#/definitions/account/definitions/new_password"},"password":{"$ref":"#/definitions/account/definitions/password"}},"required":["new_password","password"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/account"},"title":"Change Password"},{"description":"Delete account. Note that this action cannot be undone.","href":"/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/account"},"title":"Delete"}],"properties":{"allow_tracking":{"$ref":"#/definitions/account/definitions/allow_tracking"},"beta":{"$ref":"#/definitions/account/definitions/beta"},"created_at":{"$ref":"#/definitions/account/definitions/created_at"},"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"},"last_login":{"$ref":"#/definitions/account/definitions/last_login"},"name":{"$ref":"#/definitions/account/definitions/name"},"sms_number":{"$ref":"#/definitions/account/definitions/sms_number"},"suspended_at":{"$ref":"#/definitions/account/definitions/suspended_at"},"delinquent_at":{"$ref":"#/definitions/account/definitions/delinquent_at"},"two_factor_authentication":{"$ref":"#/definitions/account/definitions/two_factor_authentication"},"updated_at":{"$ref":"#/definitions/account/definitions/updated_at"},"verified":{"$ref":"#/definitions/account/definitions/verified"},"default_organization":{"description":"organization selected by default","properties":{"id":{"$ref":"#/definitions/organization/definitions/id"},"name":{"$ref":"#/definitions/organization/definitions/name"}},"strictProperties":true,"type":["object","null"]}}},"addon-attachment":{"description":"An add-on attachment represents a connection between an app and an add-on that it has been given access to.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"prototype","strictProperties":true,"title":"Heroku Platform API - Add-on Attachment","type":["object"],"definitions":{"created_at":{"description":"when add-on attachment was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this add-on attachment","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"force":{"default":false,"description":"whether or not to allow existing attachment with same name to be replaced","example":false,"readOnly":false,"type":["boolean"]},"identity":{"anyOf":[{"$ref":"#/definitions/addon-attachment/definitions/id"}]},"scopedIdentity":{"anyOf":[{"$ref":"#/definitions/addon-attachment/definitions/id"},{"$ref":"#/definitions/addon-attachment/definitions/name"}]},"name":{"description":"unique name for this add-on attachment to this app","example":"DATABASE","readOnly":true,"type":["string"]},"updated_at":{"description":"when add-on attachment was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"web_url":{"description":"URL for logging into web interface of add-on in attached app context","example":"https://postgres.heroku.com/databases/01234567-89ab-cdef-0123-456789abcdef","format":"uri","readOnly":true,"type":["null","string"]}},"links":[{"description":"Create a new add-on attachment.","href":"/addon-attachments","method":"POST","rel":"create","schema":{"properties":{"addon":{"$ref":"#/definitions/addon/definitions/identity"},"app":{"$ref":"#/definitions/app/definitions/identity"},"force":{"$ref":"#/definitions/addon-attachment/definitions/force"},"name":{"$ref":"#/definitions/addon-attachment/definitions/name"}},"required":["addon","app"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/addon-attachment"},"title":"Create"},{"description":"Delete an existing add-on attachment.","href":"/addon-attachments/{(%23%2Fdefinitions%2Faddon-attachment%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/addon-attachment"},"title":"Delete"},{"description":"Info for existing add-on attachment.","href":"/addon-attachments/{(%23%2Fdefinitions%2Faddon-attachment%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/addon-attachment"},"title":"Info"},{"description":"List existing add-on attachments.","href":"/addon-attachments","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/addon-attachment"},"type":["array"]},"title":"List"},{"description":"List existing add-on attachments for an add-on.","href":"/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}/addon-attachments","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/addon-attachment"},"type":["array"]},"title":"List by Add-on"},{"description":"List existing add-on attachments for an app.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addon-attachments","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/addon-attachment"},"type":["array"]},"title":"List by App"},{"description":"Info for existing add-on attachment for an app.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addon-attachments/{(%23%2Fdefinitions%2Faddon-attachment%2Fdefinitions%2FscopedIdentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/addon-attachment"},"title":"Info by App"}],"properties":{"addon":{"description":"identity of add-on","properties":{"id":{"$ref":"#/definitions/addon/definitions/id"},"name":{"$ref":"#/definitions/addon/definitions/name"},"app":{"description":"billing application associated with this add-on","type":["object"],"properties":{"id":{"$ref":"#/definitions/app/definitions/id"},"name":{"$ref":"#/definitions/app/definitions/name"}},"strictProperties":true}},"strictProperties":true,"type":["object"]},"app":{"description":"application that is attached to add-on","properties":{"id":{"$ref":"#/definitions/app/definitions/id"},"name":{"$ref":"#/definitions/app/definitions/name"}},"strictProperties":true,"type":["object"]},"created_at":{"$ref":"#/definitions/addon-attachment/definitions/created_at"},"id":{"$ref":"#/definitions/addon-attachment/definitions/id"},"name":{"$ref":"#/definitions/addon-attachment/definitions/name"},"updated_at":{"$ref":"#/definitions/addon-attachment/definitions/updated_at"},"web_url":{"$ref":"#/definitions/addon-attachment/definitions/web_url"}}},"addon-service":{"description":"Add-on services represent add-ons that may be provisioned for apps. Endpoints under add-on services can be accessed without authentication.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Add-on Service","type":["object"],"definitions":{"cli_plugin_name":{"description":"npm package name of the add-on service's Heroku CLI plugin","example":"heroku-papertrail","readOnly":true,"type":["string","null"]},"created_at":{"description":"when addon-service was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"human_name":{"description":"human-readable name of the addon service provider","example":"Heroku Postgres","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this addon-service","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/addon-service/definitions/id"},{"$ref":"#/definitions/addon-service/definitions/name"}]},"name":{"description":"unique name of this addon-service","example":"heroku-postgresql","readOnly":true,"type":["string"]},"state":{"description":"release status for add-on service","enum":["alpha","beta","ga","shutdown"],"example":"ga","readOnly":true,"type":["string"]},"supports_multiple_installations":{"default":false,"description":"whether or not apps can have access to more than one instance of this add-on at the same time","example":false,"readOnly":true,"type":["boolean"]},"supports_sharing":{"default":false,"description":"whether or not apps can have access to add-ons billed to a different app","example":false,"readOnly":true,"type":["boolean"]},"updated_at":{"description":"when addon-service was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Info for existing addon-service.","href":"/addon-services/{(%23%2Fdefinitions%2Faddon-service%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/addon-service"},"title":"Info"},{"description":"List existing addon-services.","href":"/addon-services","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/addon-service"},"type":["array"]},"title":"List"}],"properties":{"cli_plugin_name":{"$ref":"#/definitions/addon-service/definitions/cli_plugin_name"},"created_at":{"$ref":"#/definitions/addon-service/definitions/created_at"},"human_name":{"$ref":"#/definitions/addon-service/definitions/human_name"},"id":{"$ref":"#/definitions/addon-service/definitions/id"},"name":{"$ref":"#/definitions/addon-service/definitions/name"},"state":{"$ref":"#/definitions/addon-service/definitions/state"},"supports_multiple_installations":{"$ref":"#/definitions/addon-service/definitions/supports_multiple_installations"},"supports_sharing":{"$ref":"#/definitions/addon-service/definitions/supports_sharing"},"updated_at":{"$ref":"#/definitions/addon-service/definitions/updated_at"}}},"addon":{"description":"Add-ons represent add-ons that have been provisioned and attached to one or more apps.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Add-on","type":["object"],"definitions":{"config_vars":{"description":"config vars exposed to the owning app by this add-on","example":["FOO","BAZ"],"items":{"type":["string"]},"readOnly":true,"type":["array"]},"created_at":{"description":"when add-on was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of add-on","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/addon/definitions/id"},{"$ref":"#/definitions/addon/definitions/name"}]},"name":{"description":"globally unique name of the add-on","example":"acme-inc-primary-database","pattern":"^[a-zA-Z][A-Za-z0-9_-]+$","readOnly":true,"type":["string"]},"provider_id":{"description":"id of this add-on with its provider","example":"abcd1234","readOnly":true,"type":["string"]},"updated_at":{"description":"when add-on was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"web_url":{"description":"URL for logging into web interface of add-on (e.g. a dashboard)","example":"https://postgres.heroku.com/databases/01234567-89ab-cdef-0123-456789abcdef","format":"uri","readOnly":true,"type":["null","string"]}},"links":[{"description":"Create a new add-on.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons","method":"POST","rel":"create","schema":{"properties":{"attachment":{"description":"name for add-on's initial attachment","example":{"name":"DATABASE_FOLLOWER"},"name":{"$ref":"#/definitions/addon-attachment/definitions/name"},"type":["object"]},"config":{"additionalProperties":false,"description":"custom add-on provisioning options","example":{"db-version":"1.2.3"},"patternProperties":{"^\\w+$":{"type":["string"]}},"type":["object"]},"plan":{"$ref":"#/definitions/plan/definitions/identity"}},"required":["plan"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/addon"},"title":"Create"},{"description":"Delete an existing add-on.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/addon"},"title":"Delete"},{"description":"Info for an existing add-on.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/addon"},"title":"Info"},{"description":"List all existing add-ons.","href":"/addons","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/addon"},"type":["array"]},"title":"List"},{"description":"Info for an existing add-on.","href":"/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/addon"},"title":"Info"},{"description":"List existing add-ons for an app.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/addon"},"type":["array"]},"title":"List by App"},{"description":"Change add-on plan. Some add-ons may not support changing plans. In that case, an error will be returned.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"plan":{"$ref":"#/definitions/plan/definitions/identity"}},"required":["plan"],"type":["object"]},"title":"Update"}],"properties":{"addon_service":{"description":"identity of add-on service","properties":{"id":{"$ref":"#/definitions/addon-service/definitions/id"},"name":{"$ref":"#/definitions/addon-service/definitions/name"}},"strictProperties":true,"type":["object"]},"app":{"description":"billing application associated with this add-on","type":["object"],"properties":{"id":{"$ref":"#/definitions/app/definitions/id"},"name":{"$ref":"#/definitions/app/definitions/name"}},"strictProperties":true},"config_vars":{"$ref":"#/definitions/addon/definitions/config_vars"},"created_at":{"$ref":"#/definitions/addon/definitions/created_at"},"id":{"$ref":"#/definitions/addon/definitions/id"},"name":{"$ref":"#/definitions/addon/definitions/name"},"plan":{"description":"identity of add-on plan","properties":{"id":{"$ref":"#/definitions/plan/definitions/id"},"name":{"$ref":"#/definitions/plan/definitions/name"}},"strictProperties":true,"type":["object"]},"provider_id":{"$ref":"#/definitions/addon/definitions/provider_id"},"updated_at":{"$ref":"#/definitions/addon/definitions/updated_at"},"web_url":{"$ref":"#/definitions/addon/definitions/web_url"}}},"app-feature":{"description":"An app feature represents a Heroku labs capability that can be enabled or disabled for an app on Heroku.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - App Feature","type":["object"],"definitions":{"created_at":{"description":"when app feature was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"description":{"description":"description of app feature","example":"Causes app to example.","readOnly":true,"type":["string"]},"doc_url":{"description":"documentation URL of app feature","example":"http://devcenter.heroku.com/articles/example","readOnly":true,"type":["string"]},"enabled":{"description":"whether or not app feature has been enabled","example":true,"readOnly":false,"type":["boolean"]},"id":{"description":"unique identifier of app feature","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/app-feature/definitions/id"},{"$ref":"#/definitions/app-feature/definitions/name"}]},"name":{"description":"unique name of app feature","example":"name","readOnly":true,"type":["string"]},"state":{"description":"state of app feature","example":"public","readOnly":true,"type":["string"]},"updated_at":{"description":"when app feature was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Info for an existing app feature.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/features/{(%23%2Fdefinitions%2Fapp-feature%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/app-feature"},"title":"Info"},{"description":"List existing app features.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/features","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/app-feature"},"type":["array"]},"title":"List"},{"description":"Update an existing app feature.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/features/{(%23%2Fdefinitions%2Fapp-feature%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"enabled":{"$ref":"#/definitions/app-feature/definitions/enabled"}},"required":["enabled"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/app-feature"},"title":"Update"}],"properties":{"created_at":{"$ref":"#/definitions/app-feature/definitions/created_at"},"description":{"$ref":"#/definitions/app-feature/definitions/description"},"doc_url":{"$ref":"#/definitions/app-feature/definitions/doc_url"},"enabled":{"$ref":"#/definitions/app-feature/definitions/enabled"},"id":{"$ref":"#/definitions/app-feature/definitions/id"},"name":{"$ref":"#/definitions/app-feature/definitions/name"},"state":{"$ref":"#/definitions/app-feature/definitions/state"},"updated_at":{"$ref":"#/definitions/app-feature/definitions/updated_at"}}},"app-setup":{"description":"An app setup represents an app on Heroku that is setup using an environment, addons, and scripts described in an app.json manifest file.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Setup API - App Setup","type":["object"],"definitions":{"id":{"description":"unique identifier of app setup","example":"01234567-89ab-cdef-0123-456789abcdef","readOnly":true,"type":["string"],"format":"uuid"},"identity":{"anyOf":[{"$ref":"#/definitions/app-setup/definitions/id"}]},"created_at":{"description":"when app setup was created","example":"2012-01-01T12:00:00Z","readOnly":true,"type":["string"],"format":"date-time"},"updated_at":{"description":"when app setup was updated","example":"2012-01-01T12:00:00Z","readOnly":true,"type":["string"],"format":"date-time"},"status":{"description":"the overall status of app setup","example":"failed","enum":["failed","pending","succeeded"],"readOnly":true,"type":["string"]},"resolved_success_url":{"description":"fully qualified success url","example":"https://example.herokuapp.com/welcome","readOnly":true,"type":["string","null"]},"failure_message":{"description":"reason that app setup has failed","example":"invalid app.json","readOnly":true,"type":["string","null"]},"manifest_errors":{"description":"errors associated with invalid app.json manifest file","example":["config var FOO is required"],"readOnly":true,"items":{"type":["string"]},"type":["array"]},"postdeploy":{"description":"result of postdeploy script","type":["object","null"],"properties":{"output":{"description":"output of the postdeploy script","example":"assets precompiled","readOnly":true,"type":["string"]},"exit_code":{"description":"The exit code of the postdeploy script","example":1,"readOnly":true,"type":["integer"]}},"readOnly":true}},"properties":{"id":{"$ref":"#/definitions/app-setup/definitions/id"},"created_at":{"$ref":"#/definitions/app-setup/definitions/created_at"},"updated_at":{"$ref":"#/definitions/app-setup/definitions/updated_at"},"status":{"$ref":"#/definitions/app-setup/definitions/status"},"failure_message":{"$ref":"#/definitions/app-setup/definitions/failure_message"},"app":{"description":"identity of app","strictProperties":true,"type":["object"],"properties":{"id":{"$ref":"#/definitions/app/definitions/id"},"name":{"$ref":"#/definitions/app/definitions/name"}}},"build":{"description":"identity and status of build","strictProperties":true,"type":["null","object"],"properties":{"id":{"$ref":"#/definitions/build/definitions/id"},"status":{"$ref":"#/definitions/build/definitions/status"},"output_stream_url":{"$ref":"#/definitions/build/definitions/output_stream_url"}}},"manifest_errors":{"$ref":"#/definitions/app-setup/definitions/manifest_errors"},"postdeploy":{"$ref":"#/definitions/app-setup/definitions/postdeploy"},"resolved_success_url":{"$ref":"#/definitions/app-setup/definitions/resolved_success_url"}},"links":[{"description":"Create a new app setup from a gzipped tar archive containing an app.json manifest file.","title":"Create","rel":"create","method":"POST","href":"/app-setups","schema":{"required":["source_blob"],"type":["object"],"properties":{"app":{"description":"optional parameters for created app","properties":{"locked":{"$ref":"#/definitions/organization-app/definitions/locked"},"name":{"$ref":"#/definitions/app/definitions/name"},"organization":{"$ref":"#/definitions/organization/definitions/name"},"personal":{"$ref":"#/definitions/organization-app/definitions/personal"},"region":{"$ref":"#/definitions/region/definitions/name"},"stack":{"$ref":"#/definitions/stack/definitions/name"}},"type":["object"]},"source_blob":{"description":"gzipped tarball of source code containing app.json manifest file","example":"https://example.com/source.tgz?token=xyz","properties":{"url":{"description":"URL of gzipped tarball of source code containing app.json manifest file","example":"https://example.com/source.tgz?token=xyz","readOnly":true,"type":["string"]}},"type":["object"]},"overrides":{"description":"overrides of keys in the app.json manifest file","example":{"env":{"FOO":"bar","BAZ":"qux"}},"properties":{"env":{"description":"overrides of the env specified in the app.json manifest file","example":{"FOO":"bar","BAZ":"qux"},"readOnly":true,"additionalProperties":false,"patternProperties":{"^\\w+$":{"type":["string"]}},"type":["object"]}},"type":["object"]}}},"targetSchema":{"$ref":"#/definitions/app-setup"}},{"description":"Get the status of an app setup.","title":"Info","rel":"self","method":"GET","href":"/app-setups/{(%23%2Fdefinitions%2Fapp-setup%2Fdefinitions%2Fidentity)}","targetSchema":{"$ref":"#/definitions/app-setup"}}]},"app-transfer":{"description":"An app transfer represents a two party interaction for transferring ownership of an app.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - App Transfer","type":["object"],"definitions":{"created_at":{"description":"when app transfer was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of app transfer","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/app-transfer/definitions/id"},{"$ref":"#/definitions/app/definitions/name"}]},"silent":{"default":false,"description":"whether to suppress email notification when transferring apps","example":false,"readOnly":true,"type":["boolean"]},"state":{"description":"the current state of an app transfer","enum":["pending","accepted","declined"],"example":"pending","readOnly":true,"type":["string"]},"updated_at":{"description":"when app transfer was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new app transfer.","href":"/account/app-transfers","method":"POST","rel":"create","schema":{"properties":{"app":{"$ref":"#/definitions/app/definitions/identity"},"recipient":{"$ref":"#/definitions/account/definitions/identity"},"silent":{"$ref":"#/definitions/app-transfer/definitions/silent"}},"required":["app","recipient"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/app-transfer"},"title":"Create"},{"description":"Delete an existing app transfer","href":"/account/app-transfers/{(%23%2Fdefinitions%2Fapp-transfer%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/app-transfer"},"title":"Delete"},{"description":"Info for existing app transfer.","href":"/account/app-transfers/{(%23%2Fdefinitions%2Fapp-transfer%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/app-transfer"},"title":"Info"},{"description":"List existing apps transfers.","href":"/account/app-transfers","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/app-transfer"},"type":["array"]},"title":"List"},{"description":"Update an existing app transfer.","href":"/account/app-transfers/{(%23%2Fdefinitions%2Fapp-transfer%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"state":{"$ref":"#/definitions/app-transfer/definitions/state"}},"required":["state"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/app-transfer"},"title":"Update"}],"properties":{"app":{"description":"app involved in the transfer","properties":{"name":{"$ref":"#/definitions/app/definitions/name"},"id":{"$ref":"#/definitions/app/definitions/id"}},"type":["object"]},"created_at":{"$ref":"#/definitions/app-transfer/definitions/created_at"},"id":{"$ref":"#/definitions/app-transfer/definitions/id"},"owner":{"description":"identity of the owner of the transfer","properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"strictProperties":true,"type":["object"]},"recipient":{"description":"identity of the recipient of the transfer","properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"strictProperties":true,"type":["object"]},"state":{"$ref":"#/definitions/app-transfer/definitions/state"},"updated_at":{"$ref":"#/definitions/app-transfer/definitions/updated_at"}}},"app":{"description":"An app represents the program that you would like to deploy and run on Heroku.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - App","type":["object"],"definitions":{"archived_at":{"description":"when app was archived","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["null","string"]},"buildpack_provided_description":{"description":"description from buildpack of app","example":"Ruby/Rack","readOnly":true,"type":["null","string"]},"created_at":{"description":"when app was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"git_url":{"description":"git repo URL of app","example":"git@heroku.com:example.git","pattern":"^git@heroku\\.com:[a-z][a-z0-9-]{2,29}\\.git$","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of app","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/app/definitions/id"},{"$ref":"#/definitions/app/definitions/name"}]},"maintenance":{"default":false,"description":"maintenance status of app","example":false,"readOnly":false,"type":["boolean"]},"name":{"description":"unique name of app","example":"example","pattern":"^[a-z][a-z0-9-]{2,29}$","readOnly":false,"type":["string"]},"released_at":{"default":null,"description":"when app was released","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["null","string"]},"repo_size":{"default":null,"description":"git repo size in bytes of app","example":0,"readOnly":true,"type":["integer","null"]},"slug_size":{"default":null,"description":"slug size in bytes of app","example":0,"readOnly":true,"type":["integer","null"]},"updated_at":{"description":"when app was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"web_url":{"description":"web URL of app","example":"https://example.herokuapp.com/","format":"uri","pattern":"^https?://[a-z][a-z0-9-]{3,30}\\.herokuapp\\.com/$","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new app.","href":"/apps","method":"POST","rel":"create","schema":{"properties":{"name":{"$ref":"#/definitions/app/definitions/name"},"region":{"$ref":"#/definitions/region/definitions/identity"},"stack":{"$ref":"#/definitions/stack/definitions/identity"}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/app"},"title":"Create"},{"description":"Delete an existing app.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/app"},"title":"Delete"},{"description":"Info for existing app.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/app"},"title":"Info"},{"description":"List existing apps.","href":"/apps","method":"GET","ranges":["id","name","updated_at"],"rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/app"},"type":["array"]},"title":"List"},{"description":"List owned and collaborated apps (excludes organization apps).","href":"/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}/apps","method":"GET","ranges":["id","name","updated_at"],"rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/app"},"type":["array"]},"title":"List Owned and Collaborated"},{"description":"Update an existing app.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"build_stack":{"$ref":"#/definitions/stack/definitions/identity"},"maintenance":{"$ref":"#/definitions/app/definitions/maintenance"},"name":{"$ref":"#/definitions/app/definitions/name"}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/app"},"title":"Update"}],"properties":{"archived_at":{"$ref":"#/definitions/app/definitions/archived_at"},"buildpack_provided_description":{"$ref":"#/definitions/app/definitions/buildpack_provided_description"},"build_stack":{"description":"identity of the stack that will be used for new builds","properties":{"id":{"$ref":"#/definitions/stack/definitions/id"},"name":{"$ref":"#/definitions/stack/definitions/name"}},"strictProperties":true,"type":["object"]},"created_at":{"$ref":"#/definitions/app/definitions/created_at"},"git_url":{"$ref":"#/definitions/app/definitions/git_url"},"id":{"$ref":"#/definitions/app/definitions/id"},"maintenance":{"$ref":"#/definitions/app/definitions/maintenance"},"name":{"$ref":"#/definitions/app/definitions/name"},"owner":{"description":"identity of app owner","properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"strictProperties":true,"type":["object"]},"region":{"description":"identity of app region","properties":{"id":{"$ref":"#/definitions/region/definitions/id"},"name":{"$ref":"#/definitions/region/definitions/name"}},"strictProperties":true,"type":["object"]},"released_at":{"$ref":"#/definitions/app/definitions/released_at"},"repo_size":{"$ref":"#/definitions/app/definitions/repo_size"},"slug_size":{"$ref":"#/definitions/app/definitions/slug_size"},"space":{"description":"identity of space","properties":{"id":{"$ref":"#/definitions/space/definitions/id"},"name":{"$ref":"#/definitions/space/definitions/name"}},"type":["null","object"]},"stack":{"description":"identity of app stack","properties":{"id":{"$ref":"#/definitions/stack/definitions/id"},"name":{"$ref":"#/definitions/stack/definitions/name"}},"strictProperties":true,"type":["object"]},"updated_at":{"$ref":"#/definitions/app/definitions/updated_at"},"web_url":{"$ref":"#/definitions/app/definitions/web_url"}}},"build-result":{"$schema":"http://json-schema.org/draft-04/hyper-schema","deactivate_on":"2016-10-01","description":"A build result contains the output from a build.","title":"Heroku Build API - Build Result","stability":"deprecation","strictProperties":true,"type":["object"],"definitions":{"identity":{},"exit_code":{"description":"status from the build","example":0,"readOnly":true,"type":["number"]},"line":{"description":"a single line of output to STDOUT or STDERR from the build.","strictProperties":true,"type":["object"],"example":{"stream":"STDOUT","line":"-----> Ruby app detected\n"},"readOnly":true,"definitions":{"stream":{"type":["string"],"enum":["STDOUT","STDERR"],"description":"The output stream where the line was sent.","example":"STDOUT","readOnly":true},"line":{"type":["string"],"example":"-----> Ruby app detected\n","readOnly":true,"description":"A line of output from the build."}},"properties":{"stream":{"$ref":"#/definitions/build-result/definitions/line/definitions/stream"},"line":{"$ref":"#/definitions/build-result/definitions/line/definitions/line"}}}},"links":[{"description":"Info for existing result.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/builds/{(%23%2Fdefinitions%2Fbuild%2Fdefinitions%2Fidentity)}/result","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/build-result"},"title":"Info"}],"properties":{"build":{"description":"identity of build","properties":{"id":{"$ref":"#/definitions/build/definitions/id"},"status":{"$ref":"#/definitions/build/definitions/status"},"output_stream_url":{"$ref":"#/definitions/build/definitions/output_stream_url"}},"type":["object"]},"exit_code":{"$ref":"#/definitions/build-result/definitions/exit_code"},"lines":{"type":["array"],"items":{"$ref":"#/definitions/build-result/definitions/line"},"description":"A list of all the lines of a build's output. This has been replaced by the `output_stream_url` attribute on the build resource.","example":[{"line":"-----> Ruby app detected\n","stream":"STDOUT"}]}}},"build":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"A build represents the process of transforming a code tarball into a slug","title":"Heroku Build API - Build","stability":"production","strictProperties":true,"type":["object"],"definitions":{"buildpack":{"description":"Buildpack to execute in a build","type":["object"],"properties":{"url":{"$ref":"#/definitions/buildpack-installation/definitions/url"}}},"created_at":{"description":"when build was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of build","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/build/definitions/id"}]},"output_stream_url":{"description":"Build process output will be available from this URL as a stream. The stream is available as either `text/plain` or `text/event-stream`. Clients should be prepared to handle disconnects and can resume the stream by sending a `Range` header (for `text/plain`) or a `Last-Event-Id` header (for `text/event-stream`).","example":"https://build-output.heroku.com/streams/01234567-89ab-cdef-0123-456789abcdef","readOnly":true,"type":["string"]},"source_blob":{"description":"location of gzipped tarball of source code used to create build","properties":{"url":{"description":"URL where gzipped tar archive of source code for build was downloaded.","example":"https://example.com/source.tgz?token=xyz","readOnly":true,"type":["string"]},"version":{"description":"Version of the gzipped tarball.","example":"v1.3.0","readOnly":true,"type":["string","null"]}},"strictProperties":true,"type":["object"]},"status":{"description":"status of build","enum":["failed","pending","succeeded"],"example":"succeeded","readOnly":true,"type":["string"]},"updated_at":{"description":"when build was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new build.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/builds","method":"POST","rel":"create","schema":{"type":["object"],"properties":{"source_blob":{"$ref":"#/definitions/build/definitions/source_blob"}},"required":["source_blob"]},"targetSchema":{"$ref":"#/definitions/build"},"title":"Create"},{"description":"Info for existing build.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/builds/{(%23%2Fdefinitions%2Fbuild%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/build"},"title":"Info"},{"description":"List existing build.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/builds","method":"GET","ranges":["id","started_at"],"rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/build"},"type":["array"]},"title":"List"}],"properties":{"app":{"description":"app that the build belongs to","properties":{"id":{"$ref":"#/definitions/app/definitions/id"}},"strictProperties":true,"type":["object"]},"buildpacks":{"description":"buildpacks executed for this build, in order","type":["array","null"],"items":{"$ref":"#/definitions/build/definitions/buildpack"}},"created_at":{"$ref":"#/definitions/build/definitions/created_at"},"id":{"$ref":"#/definitions/build/definitions/id"},"output_stream_url":{"$ref":"#/definitions/build/definitions/output_stream_url"},"source_blob":{"$ref":"#/definitions/build/definitions/source_blob"},"slug":{"description":"slug created by this build","properties":{"id":{"$ref":"#/definitions/slug/definitions/id"}},"strictProperties":true,"type":["object","null"]},"status":{"$ref":"#/definitions/build/definitions/status"},"updated_at":{"$ref":"#/definitions/build/definitions/updated_at"},"user":{"description":"user that started the build","properties":{"id":{"$ref":"#/definitions/account/definitions/id"},"email":{"$ref":"#/definitions/account/definitions/email"}},"strictProperties":true,"type":["object"]}}},"buildpack-installation":{"description":"A buildpack installation represents a buildpack that will be run against an app.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Buildpack Installations","type":["object"],"definitions":{"ordinal":{"description":"determines the order in which the buildpacks will execute","example":0,"readOnly":true,"type":["integer"]},"update":{"additionalProperties":false,"description":"Properties to update a buildpack installation","properties":{"buildpack":{"$ref":"#/definitions/buildpack-installation/definitions/url"}},"readOnly":false,"required":["buildpack"],"type":["object"]},"url":{"description":"location of the buildpack for the app","example":"https://github.com/heroku/heroku-buildpack-ruby","readOnly":false,"type":["string"]},"name":{"description":"name of the buildpack for the app","example":"heroku/ruby","readOnly":false,"type":["string"]}},"links":[{"description":"Update an app's buildpack installations.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/buildpack-installations","method":"PUT","rel":"update","schema":{"properties":{"updates":{"items":{"$ref":"#/definitions/buildpack-installation/definitions/update"},"type":["array"]}},"required":["updates"],"type":["object"]},"targetSchema":{"items":{"$ref":"#/definitions/buildpack-installation"},"type":["array"]},"title":"Update"},{"description":"List an app's existing buildpack installations.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/buildpack-installations","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/buildpack-installation"},"type":["array"]},"title":"List"}],"properties":{"ordinal":{"$ref":"#/definitions/buildpack-installation/definitions/ordinal"},"buildpack":{"description":"buildpack","properties":{"url":{"$ref":"#/definitions/buildpack-installation/definitions/url"},"name":{"$ref":"#/definitions/buildpack-installation/definitions/name"}},"type":["object"]}}},"collaborator":{"description":"A collaborator represents an account that has been given access to an app on Heroku.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","title":"Heroku Platform API - Collaborator","type":["object"],"definitions":{"created_at":{"description":"when collaborator was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"email":{"description":"invited email address of collaborator","example":"collaborator@example.com","format":"email","readOnly":false,"type":["string"]},"id":{"description":"unique identifier of collaborator","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/collaborator/definitions/email"},{"$ref":"#/definitions/collaborator/definitions/id"}]},"silent":{"default":false,"description":"whether to suppress email invitation when creating collaborator","example":false,"readOnly":false,"type":["boolean"]},"updated_at":{"description":"when collaborator was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new collaborator.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators","method":"POST","rel":"create","schema":{"properties":{"silent":{"$ref":"#/definitions/collaborator/definitions/silent"},"user":{"$ref":"#/definitions/account/definitions/identity"}},"required":["user"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/collaborator"},"title":"Create"},{"description":"Delete an existing collaborator.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Fcollaborator%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/collaborator"},"title":"Delete"},{"description":"Info for existing collaborator.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Fcollaborator%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/collaborator"},"title":"Info"},{"description":"List existing collaborators.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/collaborator"},"type":["array"]},"title":"List"}],"properties":{"app":{"description":"app collaborator belongs to","properties":{"name":{"$ref":"#/definitions/app/definitions/name"},"id":{"$ref":"#/definitions/app/definitions/id"}},"strictProperties":true,"type":["object"]},"created_at":{"$ref":"#/definitions/collaborator/definitions/created_at"},"id":{"$ref":"#/definitions/collaborator/definitions/id"},"updated_at":{"$ref":"#/definitions/collaborator/definitions/updated_at"},"user":{"description":"identity of collaborated account","properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"strictProperties":true,"type":["object"]}},"required":["app","created_at","id","updated_at","user"]},"config-var":{"description":"Config Vars allow you to manage the configuration information provided to an app on Heroku.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Config Vars","type":["object"],"definitions":{"config_vars":{"additionalProperties":false,"description":"hash of config vars","example":{"FOO":"bar","BAZ":"qux"},"patternProperties":{"^\\w+$":{"type":["string","null"]}},"type":["object"]}},"links":[{"description":"Get config-vars for app.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/config-vars","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/config-var/definitions/config_vars"},"title":"Info"},{"description":"Update config-vars for app. You can update existing config-vars by setting them again, and remove by setting it to `NULL`.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/config-vars","method":"PATCH","rel":"update","schema":{"additionalProperties":false,"description":"hash of config changes – update values or delete by seting it to NULL","example":{"FOO":"bar","BAZ":"qux"},"patternProperties":{"^\\w+$":{"type":["string","null"]}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/config-var/definitions/config_vars"},"title":"Update"}],"example":{"FOO":"bar","BAZ":"qux"},"patternProperties":{"^\\w+$":{"type":["string"]}}},"credit":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"A credit represents value that will be used up before further charges are assigned to an account.","stability":"development","strictProperties":true,"title":"Heroku Platform API - Credit","type":["object"],"definitions":{"amount":{"description":"total value of credit in cents","example":10000,"type":["number"]},"balance":{"description":"remaining value of credit in cents","example":5000,"type":["number"]},"created_at":{"description":"when credit was created","example":"2012-01-01T12:00:00Z","format":"date-time","type":["string"]},"expires_at":{"description":"when credit will expire","example":"2012-01-01T12:00:00Z","format":"date-time","type":["string"]},"id":{"description":"unique identifier of credit","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/credit/definitions/id"}]},"title":{"description":"a name for credit","example":"gift card","type":["string"]},"updated_at":{"description":"when credit was updated","example":"2012-01-01T12:00:00Z","format":"date-time","type":["string"]}},"links":[{"description":"Create a new credit.","href":"/account/credits","method":"POST","rel":"create","schema":{"properties":{"code1":{"description":"first code from a discount card","example":"012abc","type":["string"]},"code2":{"description":"second code from a discount card","example":"012abc","type":["string"]}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/credit"},"title":"Create"},{"description":"Info for existing credit.","href":"/account/credits/{(%23%2Fdefinitions%2Fcredit%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/credit"},"title":"Info"},{"description":"List existing credits.","href":"/account/credits","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/credit"},"type":["array"]},"title":"List"}],"properties":{"amount":{"$ref":"#/definitions/credit/definitions/amount"},"balance":{"$ref":"#/definitions/credit/definitions/balance"},"created_at":{"$ref":"#/definitions/credit/definitions/created_at"},"expires_at":{"$ref":"#/definitions/credit/definitions/expires_at"},"id":{"$ref":"#/definitions/credit/definitions/id"},"title":{"$ref":"#/definitions/credit/definitions/title"},"updated_at":{"$ref":"#/definitions/credit/definitions/updated_at"}}},"domain":{"description":"Domains define what web routes should be routed to an app on Heroku.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Domain","type":["object"],"definitions":{"created_at":{"description":"when domain was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"cname":{"description":"canonical name record, the address to point a domain at","example":"example.herokudns.com","readOnly":true,"type":["null","string"]},"hostname":{"description":"full hostname","example":"subdomain.example.com","format":"uri","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this domain","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/domain/definitions/id"},{"$ref":"#/definitions/domain/definitions/hostname"}]},"kind":{"description":"type of domain name","enum":["heroku","custom"],"example":"custom","readOnly":true,"type":["string"]},"updated_at":{"description":"when domain was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new domain.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains","method":"POST","rel":"create","schema":{"properties":{"hostname":{"$ref":"#/definitions/domain/definitions/hostname"}},"required":["hostname"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/domain"},"title":"Create"},{"description":"Delete an existing domain","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains/{(%23%2Fdefinitions%2Fdomain%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/domain"},"title":"Delete"},{"description":"Info for existing domain.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains/{(%23%2Fdefinitions%2Fdomain%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/domain"},"title":"Info"},{"description":"List existing domains.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/domain"},"type":["array"]},"title":"List"}],"properties":{"app":{"description":"app that owns the domain","properties":{"name":{"$ref":"#/definitions/app/definitions/name"},"id":{"$ref":"#/definitions/app/definitions/id"}},"type":["object"]},"cname":{"$ref":"#/definitions/domain/definitions/cname"},"created_at":{"$ref":"#/definitions/domain/definitions/created_at"},"hostname":{"$ref":"#/definitions/domain/definitions/hostname"},"id":{"$ref":"#/definitions/domain/definitions/id"},"kind":{"$ref":"#/definitions/domain/definitions/kind"},"updated_at":{"$ref":"#/definitions/domain/definitions/updated_at"}}},"dyno":{"description":"Dynos encapsulate running processes of an app on Heroku.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Dyno","type":["object"],"definitions":{"attach":{"description":"whether to stream output or not","example":true,"readOnly":false,"type":["boolean"]},"attach_url":{"description":"a URL to stream output from for attached processes or null for non-attached processes","example":"rendezvous://rendezvous.runtime.heroku.com:5000/{rendezvous-id}","readOnly":true,"type":["string","null"]},"command":{"description":"command used to start this process","example":"bash","readOnly":false,"type":["string"]},"created_at":{"description":"when dyno was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"env":{"additionalProperties":false,"description":"custom environment to add to the dyno config vars","example":{"COLUMNS":"80","LINES":"24"},"patternProperties":{"^\\w+$":{"type":["string"]}},"readOnly":false,"strictProperties":true,"type":["object"]},"id":{"description":"unique identifier of this dyno","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/dyno/definitions/id"},{"$ref":"#/definitions/dyno/definitions/name"}]},"name":{"description":"the name of this process on this dyno","example":"run.1","readOnly":true,"type":["string"]},"size":{"description":"dyno size (default: \"standard-1X\")","example":"standard-1X","readOnly":false,"type":["string"]},"state":{"description":"current status of process (either: crashed, down, idle, starting, or up)","example":"up","readOnly":true,"type":["string"]},"type":{"description":"type of process","example":"run","readOnly":true,"type":["string"]},"updated_at":{"description":"when process last changed state","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new dyno.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/dynos","method":"POST","rel":"create","schema":{"properties":{"attach":{"$ref":"#/definitions/dyno/definitions/attach"},"command":{"$ref":"#/definitions/dyno/definitions/command"},"env":{"$ref":"#/definitions/dyno/definitions/env"},"size":{"$ref":"#/definitions/dyno/definitions/size"}},"required":["command"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/dyno"},"title":"Create"},{"description":"Restart dyno.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/dynos/{(%23%2Fdefinitions%2Fdyno%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"empty","targetSchema":{"additionalPoperties":false,"type":["object"]},"title":"Restart"},{"description":"Restart all dynos","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/dynos","method":"DELETE","rel":"empty","targetSchema":{"additionalPoperties":false,"type":["object"]},"title":"Restart all"},{"description":"Info for existing dyno.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/dynos/{(%23%2Fdefinitions%2Fdyno%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/dyno"},"title":"Info"},{"description":"List existing dynos.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/dynos","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/dyno"},"type":["array"]},"title":"List"}],"properties":{"attach_url":{"$ref":"#/definitions/dyno/definitions/attach_url"},"command":{"$ref":"#/definitions/dyno/definitions/command"},"created_at":{"$ref":"#/definitions/dyno/definitions/created_at"},"id":{"$ref":"#/definitions/dyno/definitions/id"},"name":{"$ref":"#/definitions/dyno/definitions/name"},"release":{"description":"app release of the dyno","properties":{"id":{"$ref":"#/definitions/release/definitions/id"},"version":{"$ref":"#/definitions/release/definitions/version"}},"strictProperties":true,"type":["object"]},"app":{"description":"app formation belongs to","properties":{"name":{"$ref":"#/definitions/app/definitions/name"},"id":{"$ref":"#/definitions/app/definitions/id"}},"type":["object"]},"size":{"$ref":"#/definitions/dyno/definitions/size"},"state":{"$ref":"#/definitions/dyno/definitions/state"},"type":{"$ref":"#/definitions/dyno/definitions/type"},"updated_at":{"$ref":"#/definitions/dyno/definitions/updated_at"}}},"event":{"description":"An event represents an action performed on another API resource.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"development","strictProperties":true,"title":"Heroku Platform API - Event","type":["object"],"definitions":{"action":{"description":"the operation performed on the resource","enum":["create","destroy","update"],"example":"create","readOnly":true,"type":["string"]},"created_at":{"description":"when the event was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"data":{"description":"the serialized resource affected by the event","example":{},"anyOf":[{"$ref":"#/definitions/account"},{"$ref":"#/definitions/addon"},{"$ref":"#/definitions/addon-attachment"},{"$ref":"#/definitions/app"},{"$ref":"#/definitions/app-setup"},{"$ref":"#/definitions/app-transfer"},{"$ref":"#/definitions/build"},{"$ref":"#/definitions/collaborator"},{"$ref":"#/definitions/domain"},{"$ref":"#/definitions/dyno"},{"$ref":"#/definitions/failed-event"},{"$ref":"#/definitions/formation"},{"$ref":"#/definitions/release"}],"readOnly":true,"type":["object"]},"id":{"description":"unique identifier of an event","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/event/definitions/id"}]},"published_at":{"description":"when the event was published","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["null","string"]},"resource":{"description":"the type of resource affected","enum":["addon","addon-attachment","app","app-setup","app-transfer","build","collaborator","domain","dyno","failed-event","formation","release","user"],"example":"app","readOnly":true,"type":["string"]},"sequence":{"description":"a numeric string representing the event's sequence","example":"1234567890","pattern":"^[0-9]{1,128}$","readOnly":true,"type":["null","string"]},"updated_at":{"description":"when the event was updated (same as created)","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"version":{"description":"the event's API version string","example":"application/vnd.heroku+json; version=3","readOnly":true,"type":["string"]}},"links":[],"properties":{"action":{"$ref":"#/definitions/event/definitions/action"},"actor":{"description":"user that performed the operation","properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"strictProperties":true,"type":["object"]},"created_at":{"$ref":"#/definitions/event/definitions/created_at"},"data":{"$ref":"#/definitions/event/definitions/data"},"id":{"$ref":"#/definitions/event/definitions/id"},"previous_data":{"description":"data fields that were changed during update with previous values","type":["object"]},"published_at":{"$ref":"#/definitions/event/definitions/published_at"},"resource":{"$ref":"#/definitions/event/definitions/resource"},"sequence":{"$ref":"#/definitions/event/definitions/sequence"},"updated_at":{"$ref":"#/definitions/event/definitions/updated_at"},"version":{"$ref":"#/definitions/event/definitions/version"}}},"failed-event":{"description":"A failed event represents a failure of an action performed on another API resource.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"development","strictProperties":true,"title":"Heroku Platform API - Failed Event","type":["object"],"definitions":{"action":{"description":"The attempted operation performed on the resource.","enum":["create","destroy","update","unknown"],"example":"create","readOnly":true,"type":["string"]},"error_id":{"description":"ID of error raised.","example":"rate_limit","readOnly":true,"type":["string","null"]},"message":{"description":"A detailed error message.","example":"Your account reached the API rate limit\nPlease wait a few minutes before making new requests","readOnly":true,"type":["string"]},"method":{"description":"The HTTP method type of the failed action.","enum":["DELETE","GET","HEAD","OPTIONS","PATCH","POST","PUT"],"example":"POST","readOnly":true,"type":["string"]},"code":{"description":"An HTTP status code.","example":404,"readOnly":true,"type":["integer","null"]},"identity":{"anyOf":[{"$ref":"#/definitions/event/definitions/id"}]},"path":{"description":"The path of the attempted operation.","example":"/apps/my-app","readOnly":true,"type":["string"]},"resource_id":{"description":"Unique identifier of a resource.","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]}},"links":[],"properties":{"action":{"$ref":"#/definitions/failed-event/definitions/action"},"code":{"$ref":"#/definitions/failed-event/definitions/code"},"error_id":{"$ref":"#/definitions/failed-event/definitions/error_id"},"message":{"$ref":"#/definitions/failed-event/definitions/message"},"method":{"$ref":"#/definitions/failed-event/definitions/method"},"path":{"$ref":"#/definitions/failed-event/definitions/path"},"resource":{"description":"The related resource of the failed action.","properties":{"id":{"$ref":"#/definitions/failed-event/definitions/resource_id"},"name":{"$ref":"#/definitions/event/definitions/resource"}},"strictProperties":true,"type":["object","null"]}}},"formation":{"description":"The formation of processes that should be maintained for an app. Update the formation to scale processes or change dyno sizes. Available process type names and commands are defined by the `process_types` attribute for the [slug](#slug) currently released on an app.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Formation","type":["object"],"definitions":{"command":{"description":"command to use to launch this process","example":"bundle exec rails server -p $PORT","readOnly":false,"type":["string"]},"created_at":{"description":"when process type was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this process type","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/formation/definitions/id"},{"$ref":"#/definitions/formation/definitions/type"}]},"quantity":{"description":"number of processes to maintain","example":1,"readOnly":false,"type":["integer"]},"size":{"description":"dyno size (default: \"standard-1X\")","example":"standard-1X","readOnly":false,"type":["string"]},"type":{"description":"type of process to maintain","example":"web","readOnly":true,"type":["string"]},"updated_at":{"description":"when dyno type was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"update":{"additionalProperties":false,"description":"Properties to update a process type","properties":{"process":{"$ref":"#/definitions/formation/definitions/identity"},"quantity":{"$ref":"#/definitions/formation/definitions/quantity"},"size":{"$ref":"#/definitions/formation/definitions/size"}},"readOnly":false,"required":["process"],"type":["object"]}},"links":[{"description":"Info for a process type","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/formation/{(%23%2Fdefinitions%2Fformation%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/formation"},"title":"Info"},{"description":"List process type formation","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/formation","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/formation"},"type":["array"]},"title":"List"},{"description":"Batch update process types","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/formation","method":"PATCH","rel":"update","schema":{"properties":{"updates":{"type":["array"],"items":{"$ref":"#/definitions/formation/definitions/update"},"description":"Array with formation updates. Each element must have \"type\", the id or name of the process type to be updated, and can optionally update its \"quantity\" or \"size\".","example":[{"quantity":1,"size":"standard-2X","type":["web"]}]}},"required":["updates"],"type":["object"]},"targetSchema":{"items":{"$ref":"#/definitions/formation"},"type":["array"]},"title":"Batch update"},{"description":"Update process type","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/formation/{(%23%2Fdefinitions%2Fformation%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"quantity":{"$ref":"#/definitions/formation/definitions/quantity"},"size":{"$ref":"#/definitions/formation/definitions/size"}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/formation"},"title":"Update","type":["object"]}],"properties":{"app":{"description":"app formation belongs to","properties":{"name":{"$ref":"#/definitions/app/definitions/name"},"id":{"$ref":"#/definitions/app/definitions/id"}},"type":["object"]},"command":{"$ref":"#/definitions/formation/definitions/command"},"created_at":{"$ref":"#/definitions/formation/definitions/created_at"},"id":{"$ref":"#/definitions/formation/definitions/id"},"quantity":{"$ref":"#/definitions/formation/definitions/quantity"},"size":{"$ref":"#/definitions/formation/definitions/size"},"type":{"$ref":"#/definitions/formation/definitions/type"},"updated_at":{"$ref":"#/definitions/formation/definitions/updated_at"}}},"inbound-ruleset":{"description":"An inbound-ruleset is a collection of rules that specify what hosts can or cannot connect to an application.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"prototype","strictProperties":true,"title":"Heroku Platform API - Inbound Ruleset","type":["object"],"definitions":{"action":{"description":"states whether the connection is allowed or denied","example":"allow","readOnly":false,"type":["string"],"enum":["allow","deny"]},"source":{"description":"is the request’s source in CIDR notation","example":"1.1.1.1/1","pattern":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$","readOnly":false,"type":["string"]},"created_at":{"description":"when inbound-ruleset was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of an inbound-ruleset","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/inbound-ruleset/definitions/id"}]},"rule":{"description":"the combination of an IP address in CIDR notation and whether to allow or deny it's traffic.","type":["object"],"properties":{"action":{"$ref":"#/definitions/inbound-ruleset/definitions/action"},"source":{"$ref":"#/definitions/inbound-ruleset/definitions/source"}},"required":["source","action"]}},"links":[{"description":"Current inbound ruleset for a space","href":"/spaces/{(%23%2Fdefinitions%2Fspace%2Fdefinitions%2Fidentity)}/inbound-ruleset","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/inbound-ruleset"},"title":"Info"},{"description":"Info on an existing Inbound Ruleset","href":"/spaces/{(%23%2Fdefinitions%2Fspace%2Fdefinitions%2Fidentity)}/inbound-rulesets/{(%23%2Fdefinitions%2Finbound-ruleset%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/inbound-ruleset"},"title":"Info"},{"description":"List all inbound rulesets for a space","href":"/spaces/{(%23%2Fdefinitions%2Fspace%2Fdefinitions%2Fidentity)}/inbound-rulesets","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/inbound-ruleset"},"type":["array"]},"title":"List"},{"description":"Create a new inbound ruleset","href":"/spaces/{(%23%2Fdefinitions%2Fspace%2Fdefinitions%2Fidentity)}/inbound-ruleset","method":"PUT","rel":"create","schema":{"type":["object"],"properties":{"rules":{"type":["array"],"items":{"$ref":"#/definitions/inbound-ruleset/definitions/rule"}},"default_action":{"$ref":"#/definitions/inbound-ruleset/definitions/action"}},"required":["default_action"]},"title":"Create"}],"properties":{"id":{"$ref":"#/definitions/inbound-ruleset/definitions/id"},"created_at":{"$ref":"#/definitions/inbound-ruleset/definitions/created_at"},"rules":{"type":["array"],"items":{"$ref":"#/definitions/inbound-ruleset/definitions/rule"}},"default_action":{"$ref":"#/definitions/inbound-ruleset/definitions/action"},"created_by":{"$ref":"#/definitions/account/definitions/email"}}},"invitation":{"description":"An invitation represents an invite sent to a user to use the Heroku platform.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Invitation","type":["object"],"definitions":{"created_at":{"description":"when invitation was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/invitation/definitions/token"}]},"receive_newsletter":{"description":"whether this user should receive a newsletter or not","example":false,"readOnly":true,"type":["boolean"]},"token":{"description":"Unique identifier of an invitation","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]}},"links":[{"description":"Info for invitation.","href":"/invitations/{(%23%2Fdefinitions%2Finvitation%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","title":"Info"},{"description":"Finalize Invitation and Create Account.","href":"/invitations/{(%23%2Fdefinitions%2Finvitation%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"password":{"$ref":"#/definitions/account/definitions/password"},"password_confirmation":{"$ref":"#/definitions/account/definitions/password"},"receive_newsletter":{"$ref":"#/definitions/invitation/definitions/receive_newsletter"}},"required":["password","password_confirmation"],"type":["object"]},"title":"Finalize Invitation"},{"description":"Invite a user.","href":"/invitations","method":"POST","rel":"self","schema":{"properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"name":{"$ref":"#/definitions/account/definitions/name"}},"required":["email","name"],"type":["object"]},"title":"Invitation"}],"properties":{"created_at":{"$ref":"#/definitions/invitation/definitions/created_at"},"user":{"properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"strictProperties":true,"type":["object"]}}},"invoice-address":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"An invoice address represents the address that should be listed on an invoice.","title":"Heroku Vault API - Invoice Address","stability":"development","type":["object"],"definitions":{"address_1":{"type":["string"],"description":"invoice street address line 1","example":"40 Hickory Blvd."},"address_2":{"type":["string"],"description":"invoice street address line 2","example":"Suite 300"},"city":{"type":["string"],"description":"invoice city","example":"Seattle"},"country":{"type":["string"],"description":"country","example":"US"},"heroku_id":{"type":["string"],"description":"heroku_id identifier reference","example":"user930223902@heroku.com","readOnly":true},"identity":{"anyOf":[{"$ref":"#/definitions/invoice-address/definitions/heroku_id"}]},"other":{"type":["string"],"description":"metadata / additional information to go on invoice","example":"Company ABC Inc. VAT 903820"},"postal_code":{"type":["string"],"description":"invoice zip code","example":"98101"},"state":{"type":["string"],"description":"invoice state","example":"WA"},"use_invoice_address":{"type":["boolean"],"description":"flag to use the invoice address for an account or not","example":true,"default":false}},"links":[{"description":"Retrieve existing invoice address.","href":"/account/invoice-address","method":"GET","rel":"self","title":"info"},{"description":"Update invoice address for an account.","href":"/account/invoice-address","method":"PUT","rel":"self","title":"update","schema":{"properties":{"address_1":{"$ref":"#/definitions/invoice-address/definitions/address_1"},"address_2":{"$ref":"#/definitions/invoice-address/definitions/address_2"},"city":{"$ref":"#/definitions/invoice-address/definitions/city"},"country":{"$ref":"#/definitions/invoice-address/definitions/country"},"other":{"$ref":"#/definitions/invoice-address/definitions/other"},"postal_code":{"$ref":"#/definitions/invoice-address/definitions/postal_code"},"state":{"$ref":"#/definitions/invoice-address/definitions/state"},"use_invoice_address":{"$ref":"#/definitions/invoice-address/definitions/use_invoice_address"}},"type":["object"]}}],"properties":{"address_1":{"$ref":"#/definitions/invoice-address/definitions/address_1"},"address_2":{"$ref":"#/definitions/invoice-address/definitions/address_2"},"city":{"$ref":"#/definitions/invoice-address/definitions/city"},"country":{"$ref":"#/definitions/invoice-address/definitions/country"},"heroku_id":{"$ref":"#/definitions/invoice-address/definitions/identity"},"other":{"$ref":"#/definitions/invoice-address/definitions/other"},"postal_code":{"$ref":"#/definitions/invoice-address/definitions/postal_code"},"state":{"$ref":"#/definitions/invoice-address/definitions/state"},"use_invoice_address":{"$ref":"#/definitions/invoice-address/definitions/use_invoice_address"}}},"invoice":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"An invoice is an itemized bill of goods for an account which includes pricing and charges.","stability":"development","strictProperties":true,"title":"Heroku Platform API - Invoice","type":["object"],"definitions":{"charges_total":{"description":"total charges on this invoice","example":100.0,"readOnly":true,"type":["number"]},"created_at":{"description":"when invoice was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"credits_total":{"description":"total credits on this invoice","example":100.0,"readOnly":true,"type":["number"]},"id":{"description":"unique identifier of this invoice","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/invoice/definitions/number"}]},"number":{"description":"human readable invoice number","example":9403943,"readOnly":true,"type":["integer"]},"period_end":{"description":"the ending date that the invoice covers","example":"01/31/2014","readOnly":true,"type":["string"]},"period_start":{"description":"the starting date that this invoice covers","example":"01/01/2014","readOnly":true,"type":["string"]},"state":{"description":"payment status for this invoice (pending, successful, failed)","example":1,"readOnly":true,"type":["integer"]},"total":{"description":"combined total of charges and credits on this invoice","example":100.0,"readOnly":true,"type":["number"]},"updated_at":{"description":"when invoice was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Info for existing invoice.","href":"/account/invoices/{(%23%2Fdefinitions%2Finvoice%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/invoice"},"title":"Info"},{"description":"List existing invoices.","href":"/account/invoices","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/invoice"},"type":["array"]},"title":"List"}],"properties":{"charges_total":{"$ref":"#/definitions/invoice/definitions/charges_total"},"created_at":{"$ref":"#/definitions/invoice/definitions/created_at"},"credits_total":{"$ref":"#/definitions/invoice/definitions/credits_total"},"id":{"$ref":"#/definitions/invoice/definitions/id"},"number":{"$ref":"#/definitions/invoice/definitions/number"},"period_end":{"$ref":"#/definitions/invoice/definitions/period_end"},"period_start":{"$ref":"#/definitions/invoice/definitions/period_start"},"state":{"$ref":"#/definitions/invoice/definitions/state"},"total":{"$ref":"#/definitions/invoice/definitions/total"},"updated_at":{"$ref":"#/definitions/invoice/definitions/updated_at"}}},"key":{"description":"Keys represent public SSH keys associated with an account and are used to authorize accounts as they are performing git operations.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Key","type":["object"],"definitions":{"comment":{"description":"comment on the key","example":"username@host","readOnly":true,"type":["string"]},"created_at":{"description":"when key was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"email":{"deprecated":true,"description":"deprecated. Please refer to 'comment' instead","example":"username@host","readOnly":true,"type":["string"]},"fingerprint":{"description":"a unique identifying string based on contents","example":"17:63:a4:ba:24:d3:7f:af:17:c8:94:82:7e:80:56:bf","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this key","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/key/definitions/id"},{"$ref":"#/definitions/key/definitions/fingerprint"}]},"public_key":{"description":"full public_key as uploaded","example":"ssh-rsa AAAAB3NzaC1ycVc/../839Uv username@example.com","readOnly":true,"type":["string"]},"updated_at":{"description":"when key was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new key.","href":"/account/keys","method":"POST","rel":"create","schema":{"properties":{"public_key":{"$ref":"#/definitions/key/definitions/public_key"}},"required":["public_key"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/key"},"title":"Create"},{"description":"Delete an existing key","href":"/account/keys/{(%23%2Fdefinitions%2Fkey%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/key"},"title":"Delete"},{"description":"Info for existing key.","href":"/account/keys/{(%23%2Fdefinitions%2Fkey%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/key"},"title":"Info"},{"description":"List existing keys.","href":"/account/keys","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/key"},"type":["array"]},"title":"List"}],"properties":{"comment":{"$ref":"#/definitions/key/definitions/comment"},"created_at":{"$ref":"#/definitions/key/definitions/created_at"},"email":{"$ref":"#/definitions/key/definitions/email"},"fingerprint":{"$ref":"#/definitions/key/definitions/fingerprint"},"id":{"$ref":"#/definitions/key/definitions/id"},"public_key":{"$ref":"#/definitions/key/definitions/public_key"},"updated_at":{"$ref":"#/definitions/key/definitions/updated_at"}}},"log-drain":{"description":"[Log drains](https://devcenter.heroku.com/articles/log-drains) provide a way to forward your Heroku logs to an external syslog server for long-term archiving. This external service must be configured to receive syslog packets from Heroku, whereupon its URL can be added to an app using this API. Some addons will add a log drain when they are provisioned to an app. These drains can only be removed by removing the add-on.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Log Drain","type":["object"],"definitions":{"addon":{"description":"addon that created the drain","example":{"id":"01234567-89ab-cdef-0123-456789abcdef","name":"singing-swiftly-1242"},"properties":{"id":{"$ref":"#/definitions/addon/definitions/id"},"name":{"$ref":"#/definitions/addon/definitions/name"}},"readOnly":true,"type":["object","null"]},"created_at":{"description":"when log drain was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this log drain","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/log-drain/definitions/id"},{"$ref":"#/definitions/log-drain/definitions/url"}]},"token":{"description":"token associated with the log drain","example":"d.01234567-89ab-cdef-0123-456789abcdef","readOnly":true,"type":["string"]},"updated_at":{"description":"when log drain was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"url":{"description":"url associated with the log drain","example":"https://example.com/drain","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new log drain.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/log-drains","method":"POST","rel":"create","schema":{"properties":{"url":{"$ref":"#/definitions/log-drain/definitions/url"}},"required":["url"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/log-drain"},"title":"Create"},{"description":"Delete an existing log drain. Log drains added by add-ons can only be removed by removing the add-on.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/log-drains/{(%23%2Fdefinitions%2Flog-drain%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/log-drain"},"title":"Delete"},{"description":"Info for existing log drain.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/log-drains/{(%23%2Fdefinitions%2Flog-drain%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/log-drain"},"title":"Info"},{"description":"List existing log drains.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/log-drains","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/log-drain"},"type":["array"]},"title":"List"}],"properties":{"addon":{"$ref":"#/definitions/log-drain/definitions/addon"},"created_at":{"$ref":"#/definitions/log-drain/definitions/created_at"},"id":{"$ref":"#/definitions/log-drain/definitions/id"},"token":{"$ref":"#/definitions/log-drain/definitions/token"},"updated_at":{"$ref":"#/definitions/log-drain/definitions/updated_at"},"url":{"$ref":"#/definitions/log-drain/definitions/url"}}},"log-session":{"description":"A log session is a reference to the http based log stream for an app.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Log Session","type":["object"],"definitions":{"created_at":{"description":"when log connection was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"dyno":{"description":"dyno to limit results to","example":"web.1","readOnly":false,"type":["string"]},"id":{"description":"unique identifier of this log session","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/log-session/definitions/id"}]},"lines":{"description":"number of log lines to stream at once","example":10,"readOnly":false,"type":["integer"]},"logplex_url":{"description":"URL for log streaming session","example":"https://logplex.heroku.com/sessions/01234567-89ab-cdef-0123-456789abcdef?srv=1325419200","readOnly":true,"type":["string"]},"source":{"description":"log source to limit results to","example":"app","readOnly":false,"type":["string"]},"tail":{"description":"whether to stream ongoing logs","example":true,"readOnly":false,"type":["boolean"]},"updated_at":{"description":"when log session was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new log session.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/log-sessions","method":"POST","rel":"create","schema":{"properties":{"dyno":{"$ref":"#/definitions/log-session/definitions/dyno"},"lines":{"$ref":"#/definitions/log-session/definitions/lines"},"source":{"$ref":"#/definitions/log-session/definitions/source"},"tail":{"$ref":"#/definitions/log-session/definitions/tail"}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/log-session"},"title":"Create"}],"properties":{"created_at":{"$ref":"#/definitions/log-session/definitions/created_at"},"id":{"$ref":"#/definitions/log-session/definitions/id"},"logplex_url":{"$ref":"#/definitions/log-session/definitions/logplex_url"},"updated_at":{"$ref":"#/definitions/log-session/definitions/updated_at"}}},"oauth-authorization":{"description":"OAuth authorizations represent clients that a Heroku user has authorized to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth)","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - OAuth Authorization","type":["object"],"definitions":{"created_at":{"description":"when OAuth authorization was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"description":{"description":"human-friendly description of this OAuth authorization","example":"sample authorization","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of OAuth authorization","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/oauth-authorization/definitions/id"}]},"scope":{"description":"The scope of access OAuth authorization allows","example":["global"],"readOnly":true,"type":["array"],"items":{"type":["string"]}},"updated_at":{"description":"when OAuth authorization was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new OAuth authorization.","href":"/oauth/authorizations","method":"POST","rel":"create","schema":{"properties":{"client":{"$ref":"#/definitions/oauth-client/definitions/identity"},"description":{"$ref":"#/definitions/oauth-authorization/definitions/description"},"expires_in":{"$ref":"#/definitions/oauth-token/definitions/expires_in"},"scope":{"$ref":"#/definitions/oauth-authorization/definitions/scope"}},"required":["scope"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/oauth-authorization"},"title":"Create"},{"description":"Delete OAuth authorization.","href":"/oauth/authorizations/{(%23%2Fdefinitions%2Foauth-authorization%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/oauth-authorization"},"title":"Delete"},{"description":"Info for an OAuth authorization.","href":"/oauth/authorizations/{(%23%2Fdefinitions%2Foauth-authorization%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/oauth-authorization"},"title":"Info"},{"description":"List OAuth authorizations.","href":"/oauth/authorizations","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/oauth-authorization"},"type":["array"]},"title":"List"},{"description":"Regenerate OAuth tokens. This endpoint is only available to direct authorizations or privileged OAuth clients.","href":"/oauth/authorizations/{(%23%2Fdefinitions%2Foauth-authorization%2Fdefinitions%2Fidentity)}/actions/regenerate-tokens","method":"POST","rel":"update","targetSchema":{"$ref":"#/definitions/oauth-authorization"},"title":"Regenerate"}],"properties":{"access_token":{"description":"access token for this authorization","properties":{"expires_in":{"$ref":"#/definitions/oauth-token/definitions/expires_in"},"id":{"$ref":"#/definitions/oauth-token/definitions/id"},"token":{"$ref":"#/definitions/oauth-token/definitions/token"}},"type":["null","object"]},"client":{"description":"identifier of the client that obtained this authorization, if any","properties":{"id":{"$ref":"#/definitions/oauth-client/definitions/id"},"name":{"$ref":"#/definitions/oauth-client/definitions/name"},"redirect_uri":{"$ref":"#/definitions/oauth-client/definitions/redirect_uri"}},"type":["null","object"]},"created_at":{"$ref":"#/definitions/oauth-authorization/definitions/created_at"},"grant":{"description":"this authorization's grant","properties":{"code":{"$ref":"#/definitions/oauth-grant/definitions/code"},"expires_in":{"$ref":"#/definitions/oauth-grant/definitions/expires_in"},"id":{"$ref":"#/definitions/oauth-grant/definitions/id"}},"strictProperties":true,"type":["null","object"]},"id":{"$ref":"#/definitions/oauth-authorization/definitions/id"},"refresh_token":{"description":"refresh token for this authorization","properties":{"expires_in":{"$ref":"#/definitions/oauth-token/definitions/expires_in"},"id":{"$ref":"#/definitions/oauth-token/definitions/id"},"token":{"$ref":"#/definitions/oauth-token/definitions/token"}},"strictProperties":true,"type":["null","object"]},"scope":{"$ref":"#/definitions/oauth-authorization/definitions/scope"},"updated_at":{"$ref":"#/definitions/oauth-authorization/definitions/updated_at"}}},"oauth-client":{"description":"OAuth clients are applications that Heroku users can authorize to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth).","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - OAuth Client","type":["object"],"definitions":{"created_at":{"description":"when OAuth client was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this OAuth client","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/oauth-client/definitions/id"}]},"ignores_delinquent":{"description":"whether the client is still operable given a delinquent account","example":false,"readOnly":true,"type":["boolean","null"]},"name":{"description":"OAuth client name","example":"example","readOnly":true,"type":["string"]},"redirect_uri":{"description":"endpoint for redirection after authorization with OAuth client","example":"https://example.com/auth/heroku/callback","readOnly":true,"type":["string"]},"secret":{"description":"secret used to obtain OAuth authorizations under this client","example":"01234567-89ab-cdef-0123-456789abcdef","readOnly":true,"type":["string"]},"updated_at":{"description":"when OAuth client was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new OAuth client.","href":"/oauth/clients","method":"POST","rel":"create","schema":{"properties":{"name":{"$ref":"#/definitions/oauth-client/definitions/name"},"redirect_uri":{"$ref":"#/definitions/oauth-client/definitions/redirect_uri"}},"required":["name","redirect_uri"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/oauth-client"},"title":"Create"},{"description":"Delete OAuth client.","href":"/oauth/clients/{(%23%2Fdefinitions%2Foauth-client%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/oauth-client"},"title":"Delete"},{"description":"Info for an OAuth client","href":"/oauth/clients/{(%23%2Fdefinitions%2Foauth-client%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","title":"Info"},{"description":"List OAuth clients","href":"/oauth/clients","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/oauth-client"},"type":["array"]},"title":"List"},{"description":"Update OAuth client","href":"/oauth/clients/{(%23%2Fdefinitions%2Foauth-client%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"name":{"$ref":"#/definitions/oauth-client/definitions/name"},"redirect_uri":{"$ref":"#/definitions/oauth-client/definitions/redirect_uri"}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/oauth-client"},"title":"Update"}],"properties":{"created_at":{"$ref":"#/definitions/oauth-client/definitions/created_at"},"id":{"$ref":"#/definitions/oauth-client/definitions/id"},"ignores_delinquent":{"$ref":"#/definitions/oauth-client/definitions/ignores_delinquent"},"name":{"$ref":"#/definitions/oauth-client/definitions/name"},"redirect_uri":{"$ref":"#/definitions/oauth-client/definitions/redirect_uri"},"secret":{"$ref":"#/definitions/oauth-client/definitions/secret"},"updated_at":{"$ref":"#/definitions/oauth-client/definitions/updated_at"}}},"oauth-grant":{"description":"OAuth grants are used to obtain authorizations on behalf of a user. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth)","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - OAuth Grant","type":["object"],"definitions":{"code":{"description":"grant code received from OAuth web application authorization","example":"01234567-89ab-cdef-0123-456789abcdef","readOnly":true,"type":["string"]},"expires_in":{"description":"seconds until OAuth grant expires","example":2592000,"readOnly":true,"type":["integer"]},"id":{"description":"unique identifier of OAuth grant","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/oauth-grant/definitions/id"}]},"type":{"description":"type of grant requested, one of `authorization_code` or `refresh_token`","example":"authorization_code","readOnly":false,"type":["string"]}},"links":[],"properties":{}},"oauth-token":{"description":"OAuth tokens provide access for authorized clients to act on behalf of a Heroku user to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth)","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - OAuth Token","type":["object"],"definitions":{"created_at":{"description":"when OAuth token was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"expires_in":{"description":"seconds until OAuth token expires; may be `null` for tokens with indefinite lifetime","example":2592000,"readOnly":true,"type":["null","integer"]},"id":{"description":"unique identifier of OAuth token","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/oauth-token/definitions/id"}]},"token":{"description":"contents of the token to be used for authorization","example":"01234567-89ab-cdef-0123-456789abcdef","readOnly":true,"type":["string"]},"updated_at":{"description":"when OAuth token was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new OAuth token.","href":"/oauth/tokens","method":"POST","rel":"create","schema":{"properties":{"client":{"type":["object"],"properties":{"secret":{"$ref":"#/definitions/oauth-client/definitions/secret"}}},"grant":{"type":["object"],"properties":{"code":{"$ref":"#/definitions/oauth-grant/definitions/code"},"type":{"$ref":"#/definitions/oauth-grant/definitions/type"}}},"refresh_token":{"type":["object"],"properties":{"token":{"$ref":"#/definitions/oauth-token/definitions/token"}}}},"required":["grant","client","refresh_token"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/oauth-token"},"title":"Create"},{"description":"Revoke OAuth access token.","href":"/oauth/tokens/{(%23%2Fdefinitions%2Foauth-token%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/oauth-token"},"title":"Delete"}],"properties":{"access_token":{"description":"current access token","properties":{"expires_in":{"$ref":"#/definitions/oauth-token/definitions/expires_in"},"id":{"$ref":"#/definitions/oauth-token/definitions/id"},"token":{"$ref":"#/definitions/oauth-token/definitions/token"}},"strictProperties":true,"type":["object"]},"authorization":{"description":"authorization for this set of tokens","properties":{"id":{"$ref":"#/definitions/oauth-authorization/definitions/id"}},"strictProperties":true,"type":["object"]},"client":{"description":"OAuth client secret used to obtain token","properties":{"secret":{"$ref":"#/definitions/oauth-client/definitions/secret"}},"strictProperties":true,"type":["null","object"]},"created_at":{"$ref":"#/definitions/oauth-token/definitions/created_at"},"grant":{"description":"grant used on the underlying authorization","properties":{"code":{"$ref":"#/definitions/oauth-grant/definitions/code"},"type":{"$ref":"#/definitions/oauth-grant/definitions/type"}},"strictProperties":true,"type":["object"]},"id":{"$ref":"#/definitions/oauth-token/definitions/id"},"refresh_token":{"description":"refresh token for this authorization","properties":{"expires_in":{"$ref":"#/definitions/oauth-token/definitions/expires_in"},"id":{"$ref":"#/definitions/oauth-token/definitions/id"},"token":{"$ref":"#/definitions/oauth-token/definitions/token"}},"strictProperties":true,"type":["object"]},"session":{"description":"OAuth session using this token","properties":{"id":{"$ref":"#/definitions/oauth-token/definitions/id"}},"strictProperties":true,"type":["object"]},"updated_at":{"$ref":"#/definitions/oauth-token/definitions/updated_at"},"user":{"description":"Reference to the user associated with this token","properties":{"id":{"$ref":"#/definitions/account/definitions/id"}},"strictProperties":true,"type":["object"]}}},"organization-addon":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"A list of add-ons the Organization uses across all apps","stability":"production","title":"Heroku Platform API - Organization Add-on","type":["object"],"links":[{"description":"List add-ons used across all Organization apps","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/addons","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/addon"},"type":["array"]},"title":"List For Organization"}]},"organization-app-collaborator":{"description":"An organization collaborator represents an account that has been given access to an organization app on Heroku.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"prototype","title":"Heroku Platform API - Organization App Collaborator","type":["object"],"definitions":{"identity":{"anyOf":[{"$ref":"#/definitions/collaborator/definitions/email"}]}},"links":[{"description":"Create a new collaborator on an organization app. Use this endpoint instead of the `/apps/{app_id_or_name}/collaborator` endpoint when you want the collaborator to be granted [privileges] (https://devcenter.heroku.com/articles/org-users-access#roles-and-app-privileges) according to their role in the organization.","href":"/organizations/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators","method":"POST","rel":"create","schema":{"properties":{"silent":{"$ref":"#/definitions/collaborator/definitions/silent"},"user":{"$ref":"#/definitions/account/definitions/identity"}},"required":["user"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/organization-app-collaborator"},"title":"Create"},{"description":"Delete an existing collaborator from an organization app.","href":"/organizations/apps/{(%23%2Fdefinitions%2Forganization-app%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Forganization-app-collaborator%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/organization-app-collaborator"},"title":"Delete"},{"description":"Info for a collaborator on an organization app.","href":"/organizations/apps/{(%23%2Fdefinitions%2Forganization-app%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Forganization-app-collaborator%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/organization-app-collaborator"},"title":"Info"},{"description":"Update an existing collaborator from an organization app.","href":"/organizations/apps/{(%23%2Fdefinitions%2Forganization-app%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Forganization-app-collaborator%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","targetSchema":{"$ref":"#/definitions/organization-app-collaborator"},"title":"Update"},{"description":"List collaborators on an organization app.","href":"/organizations/apps/{(%23%2Fdefinitions%2Forganization-app%2Fdefinitions%2Fidentity)}/collaborators","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/organization-app-collaborator"},"type":["array"]},"title":"List"}],"properties":{"app":{"description":"app collaborator belongs to","properties":{"name":{"$ref":"#/definitions/app/definitions/name"},"id":{"$ref":"#/definitions/app/definitions/id"}},"strictProperties":true,"type":["object"]},"created_at":{"$ref":"#/definitions/collaborator/definitions/created_at"},"id":{"$ref":"#/definitions/collaborator/definitions/id"},"privileges":{"description":"collborator privileges","properties":{"description":{"type":["string"]},"name":{"type":["string"]}}},"role":{"$ref":"#/definitions/organization/definitions/role"},"updated_at":{"$ref":"#/definitions/collaborator/definitions/updated_at"},"user":{"description":"identity of collaborated account","properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"strictProperties":true,"type":["object"]}}},"organization-app":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"An organization app encapsulates the organization specific functionality of Heroku apps.","stability":"prototype","title":"Heroku Platform API - Organization App","type":["object"],"definitions":{"locked":{"default":false,"description":"are other organization members forbidden from joining this app.","example":false,"type":["boolean"]},"identity":{"anyOf":[{"$ref":"#/definitions/app/definitions/name"}]},"joined":{"default":false,"description":"is the current member a collaborator on this app.","example":false,"type":["boolean"]},"personal":{"default":false,"description":"force creation of the app in the user account even if a default org is set.","example":false,"type":["boolean"]}},"links":[{"description":"Create a new app in the specified organization, in the default organization if unspecified, or in personal account, if default organization is not set.","href":"/organizations/apps","method":"POST","rel":"create","schema":{"properties":{"locked":{"$ref":"#/definitions/organization-app/definitions/locked"},"name":{"$ref":"#/definitions/app/definitions/name"},"organization":{"$ref":"#/definitions/organization/definitions/name"},"personal":{"$ref":"#/definitions/organization-app/definitions/personal"},"region":{"$ref":"#/definitions/region/definitions/name"},"space":{"$ref":"#/definitions/space/definitions/name"},"stack":{"$ref":"#/definitions/stack/definitions/name"}},"type":["object"]},"title":"Create"},{"description":"List apps in the default organization, or in personal account, if default organization is not set.","href":"/organizations/apps","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/organization-app"},"type":["array"]},"title":"List"},{"description":"List organization apps.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/apps","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/organization-app"},"type":["array"]},"title":"List For Organization"},{"description":"Info for an organization app.","href":"/organizations/apps/{(%23%2Fdefinitions%2Forganization-app%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","title":"Info"},{"description":"Lock or unlock an organization app.","href":"/organizations/apps/{(%23%2Fdefinitions%2Forganization-app%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"locked":{"$ref":"#/definitions/organization-app/definitions/locked"}},"required":["locked"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/organization-app"},"title":"Update Locked"},{"description":"Transfer an existing organization app to another Heroku account.","href":"/organizations/apps/{(%23%2Fdefinitions%2Forganization-app%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"owner":{"$ref":"#/definitions/account/definitions/identity"}},"required":["owner"],"type":["object"]},"title":"Transfer to Account"},{"description":"Transfer an existing organization app to another organization.","href":"/organizations/apps/{(%23%2Fdefinitions%2Forganization-app%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"owner":{"$ref":"#/definitions/organization/definitions/name"}},"required":["owner"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/organization-app"},"title":"Transfer to Organization"}],"properties":{"archived_at":{"$ref":"#/definitions/app/definitions/archived_at"},"buildpack_provided_description":{"$ref":"#/definitions/app/definitions/buildpack_provided_description"},"created_at":{"$ref":"#/definitions/app/definitions/created_at"},"git_url":{"$ref":"#/definitions/app/definitions/git_url"},"id":{"$ref":"#/definitions/app/definitions/id"},"joined":{"$ref":"#/definitions/organization-app/definitions/joined"},"locked":{"$ref":"#/definitions/organization-app/definitions/locked"},"maintenance":{"$ref":"#/definitions/app/definitions/maintenance"},"name":{"$ref":"#/definitions/app/definitions/name"},"organization":{"description":"organization that owns this app","properties":{"name":{"$ref":"#/definitions/organization/definitions/name"}},"type":["null","object"]},"owner":{"description":"identity of app owner","properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"type":["null","object"]},"region":{"description":"identity of app region","properties":{"id":{"$ref":"#/definitions/region/definitions/id"},"name":{"$ref":"#/definitions/region/definitions/name"}},"type":["object"]},"released_at":{"$ref":"#/definitions/app/definitions/released_at"},"repo_size":{"$ref":"#/definitions/app/definitions/repo_size"},"slug_size":{"$ref":"#/definitions/app/definitions/slug_size"},"space":{"description":"identity of space","properties":{"id":{"$ref":"#/definitions/space/definitions/id"},"name":{"$ref":"#/definitions/space/definitions/name"}},"type":["null","object"]},"stack":{"description":"identity of app stack","properties":{"id":{"$ref":"#/definitions/stack/definitions/id"},"name":{"$ref":"#/definitions/stack/definitions/name"}},"type":["object"]},"updated_at":{"$ref":"#/definitions/app/definitions/updated_at"},"web_url":{"$ref":"#/definitions/app/definitions/web_url"}}},"organization-invoice":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"An organization invoice is an itemized bill of goods for an organization which includes pricing and charges.","stability":"prototype","strictProperties":true,"title":"Heroku Platform API - Organization Invoice","type":["object"],"definitions":{"addons_total":{"description":"total addons charges in on this invoice","example":25000,"readOnly":true,"type":["integer"]},"database_total":{"description":"total database charges on this invoice","example":25000,"readOnly":true,"type":["integer"]},"charges_total":{"description":"total charges on this invoice","example":0,"readOnly":true,"type":["integer"]},"created_at":{"description":"when invoice was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"credits_total":{"description":"total credits on this invoice","example":100000,"readOnly":true,"type":["integer"]},"dyno_units":{"description":"The total amount of dyno units consumed across dyno types.","example":1.92,"readOnly":true,"type":["number"]},"id":{"description":"unique identifier of this invoice","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/organization-invoice/definitions/number"}]},"number":{"description":"human readable invoice number","example":9403943,"readOnly":true,"type":["integer"]},"payment_status":{"description":"Status of the invoice payment.","example":"Paid","readOnly":true,"type":["string"]},"platform_total":{"description":"total platform charges on this invoice","example":50000,"readOnly":true,"type":["integer"]},"period_end":{"description":"the ending date that the invoice covers","example":"01/31/2014","readOnly":true,"type":["string"]},"period_start":{"description":"the starting date that this invoice covers","example":"01/01/2014","readOnly":true,"type":["string"]},"state":{"description":"payment status for this invoice (pending, successful, failed)","example":1,"readOnly":true,"type":["integer"]},"total":{"description":"combined total of charges and credits on this invoice","example":100000,"readOnly":true,"type":["integer"]},"updated_at":{"description":"when invoice was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"weighted_dyno_hours":{"description":"The total amount of hours consumed across dyno types.","example":1488,"readOnly":true,"type":["number"]}},"links":[{"description":"Info for existing invoice.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/invoices/{(%23%2Fdefinitions%2Forganization-invoice%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/organization-invoice"},"title":"Info"},{"description":"List existing invoices.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/invoices","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/organization-invoice"},"type":["array"]},"title":"List"}],"properties":{"addons_total":{"$ref":"#/definitions/organization-invoice/definitions/addons_total"},"database_total":{"$ref":"#/definitions/organization-invoice/definitions/database_total"},"charges_total":{"$ref":"#/definitions/organization-invoice/definitions/charges_total"},"created_at":{"$ref":"#/definitions/organization-invoice/definitions/created_at"},"credits_total":{"$ref":"#/definitions/organization-invoice/definitions/credits_total"},"dyno_units":{"$ref":"#/definitions/organization-invoice/definitions/dyno_units"},"id":{"$ref":"#/definitions/organization-invoice/definitions/id"},"number":{"$ref":"#/definitions/organization-invoice/definitions/number"},"payment_status":{"$ref":"#/definitions/organization-invoice/definitions/payment_status"},"period_end":{"$ref":"#/definitions/organization-invoice/definitions/period_end"},"period_start":{"$ref":"#/definitions/organization-invoice/definitions/period_start"},"platform_total":{"$ref":"#/definitions/organization-invoice/definitions/platform_total"},"state":{"$ref":"#/definitions/organization-invoice/definitions/state"},"total":{"$ref":"#/definitions/organization-invoice/definitions/total"},"updated_at":{"$ref":"#/definitions/organization-invoice/definitions/updated_at"},"weighted_dyno_hours":{"$ref":"#/definitions/organization-invoice/definitions/weighted_dyno_hours"}}},"organization-member":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"An organization member is an individual with access to an organization.","stability":"prototype","strictProperties":true,"title":"Heroku Platform API - Organization Member","type":["object"],"definitions":{"created_at":{"description":"when the membership record was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"email":{"description":"email address of the organization member","example":"someone@example.org","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/organization-member/definitions/email"},{"$ref":"#/definitions/app/definitions/id"}]},"two_factor_authentication":{"description":"whether the organization member has two factor authentication enabled","example":true,"readOnly":true,"type":["boolean"]},"updated_at":{"description":"when the membership record was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new organization member, or update their role.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/members","method":"PUT","rel":"create","schema":{"properties":{"email":{"$ref":"#/definitions/organization-member/definitions/email"},"role":{"$ref":"#/definitions/organization/definitions/role"}},"required":["email","role"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/organization-member"},"title":"Create or Update"},{"description":"Remove a member from the organization.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/members/{(%23%2Fdefinitions%2Forganization-member%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/organization-member"},"title":"Delete"},{"description":"List members of the organization.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/members","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/organization-member"},"type":["array"]},"title":"List"}],"properties":{"created_at":{"$ref":"#/definitions/organization-member/definitions/created_at"},"email":{"$ref":"#/definitions/organization-member/definitions/email"},"role":{"$ref":"#/definitions/organization/definitions/role"},"two_factor_authentication":{"$ref":"#/definitions/organization-member/definitions/two_factor_authentication"},"updated_at":{"$ref":"#/definitions/organization-member/definitions/updated_at"},"user":{"description":"user information for the membership","properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"strictProperties":true,"type":["object"]}}},"organization-payment-method":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"The on file payment method for an account","stability":"prototype","title":"Heroku Vault API - Payment Method","type":["object"],"definitions":{"address_1":{"type":["string"],"description":"street address line 1","example":"40 Hickory Lane"},"address_2":{"type":["string"],"description":"street address line 2","example":"Suite 103"},"card_number":{"type":["string"],"description":"encrypted card number of payment method","example":"encrypted-card-number"},"city":{"type":["string"],"description":"city","example":"San Francisco"},"country":{"type":["string"],"description":"country","example":"US"},"cvv":{"type":["string"],"description":"card verification value","example":"123"},"expiration_month":{"type":["string"],"description":"expiration month","example":"11"},"expiration_year":{"type":["string"],"description":"expiration year","example":"2014"},"first_name":{"type":["string"],"description":"the first name for payment method","example":"Jason"},"last_name":{"type":["string"],"description":"the last name for payment method","example":"Walker"},"other":{"type":["string"],"description":"metadata","example":"Additional information for payment method"},"postal_code":{"type":["string"],"description":"postal code","example":"90210"},"state":{"type":["string"],"description":"state","example":"CA"},"card_last4":{"type":["string"],"description":"last 4 digits of credit card number","example":"1234","readOnly":true},"card_type":{"type":["string"],"description":"name of credit card issuer","example":"VISA","readOnly":true},"heroku_id":{"type":["string"],"description":"heroku_id identifier reference","example":"user930223902@heroku.com","readOnly":true},"identity":{"anyOf":[{"$ref":"#/definitions/invoice-address/definitions/heroku_id"}]}},"links":[{"description":"Update an existing payment method for an account.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/payment-method","method":"PATCH","rel":"update","schema":{"properties":{"address_1":{"$ref":"#/definitions/organization-payment-method/definitions/address_1"},"address_2":{"$ref":"#/definitions/organization-payment-method/definitions/address_2"},"card_number":{"$ref":"#/definitions/organization-payment-method/definitions/card_number"},"city":{"$ref":"#/definitions/organization-payment-method/definitions/city"},"country":{"$ref":"#/definitions/organization-payment-method/definitions/country"},"cvv":{"$ref":"#/definitions/organization-payment-method/definitions/cvv"},"expiration_month":{"$ref":"#/definitions/organization-payment-method/definitions/expiration_month"},"expiration_year":{"$ref":"#/definitions/organization-payment-method/definitions/expiration_year"},"first_name":{"$ref":"#/definitions/organization-payment-method/definitions/first_name"},"last_name":{"$ref":"#/definitions/organization-payment-method/definitions/last_name"},"other":{"$ref":"#/definitions/organization-payment-method/definitions/other"},"postal_code":{"$ref":"#/definitions/organization-payment-method/definitions/postal_code"},"state":{"$ref":"#/definitions/organization-payment-method/definitions/state"}},"required":["address_1","address_2","card_number","city","country","cvv","expiration_month","expiration_year","first_name","last_name","postal_code","state"],"type":["object"]},"title":"update"},{"description":"Get the current payment method for an account.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/payment-method","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/organization-payment-method"},"title":"get"}],"properties":{"address_1":{"$ref":"#/definitions/organization-payment-method/definitions/address_1"},"address_2":{"$ref":"#/definitions/organization-payment-method/definitions/address_2"},"card_last4":{"$ref":"#/definitions/organization-payment-method/definitions/card_last4"},"card_type":{"$ref":"#/definitions/organization-payment-method/definitions/card_type"},"city":{"$ref":"#/definitions/organization-payment-method/definitions/city"},"country":{"$ref":"#/definitions/organization-payment-method/definitions/country"},"expiration_month":{"$ref":"#/definitions/organization-payment-method/definitions/expiration_month"},"expiration_year":{"$ref":"#/definitions/organization-payment-method/definitions/expiration_year"},"first_name":{"$ref":"#/definitions/organization-payment-method/definitions/first_name"},"last_name":{"$ref":"#/definitions/organization-payment-method/definitions/last_name"},"other":{"$ref":"#/definitions/organization-payment-method/definitions/other"},"postal_code":{"$ref":"#/definitions/organization-payment-method/definitions/postal_code"},"state":{"$ref":"#/definitions/organization-payment-method/definitions/state"}}},"organization-preferences":{"description":"Tracks an organization's preferences","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"prototype","strictProperties":true,"title":"Heroku Platform API - Organization Preferences","type":["object"],"definitions":{"identity":{"$ref":"#/definitions/organization/definitions/identity"},"whitelisting-enabled":{"description":"Whether whitelisting rules should be applied to add-on installations","example":true,"readOnly":false,"type":["boolean","null"]}},"links":[{"description":"Retrieve Organization Preferences","href":"/organizations/{(%23%2Fdefinitions%2Forganization-preferences%2Fdefinitions%2Fidentity)}/preferences","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/organization-preferences"},"title":"List"},{"description":"Update Organization Preferences","href":"/organizations/{(%23%2Fdefinitions%2Forganization-preferences%2Fdefinitions%2Fidentity)}/preferences","method":"PATCH","rel":"update","schema":{"properties":{"whitelisting-enabled":{"$ref":"#/definitions/organization-preferences/definitions/whitelisting-enabled"}}},"targetSchema":{"$ref":"#/definitions/organization-preferences"},"title":"Update"}],"properties":{"whitelisting-enabled":{"$ref":"#/definitions/organization-preferences/definitions/whitelisting-enabled"}}},"organization":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"Organizations allow you to manage access to a shared group of applications across your development team.","stability":"prototype","strictProperties":true,"title":"Heroku Platform API - Organization","type":["object"],"definitions":{"created_at":{"description":"when the organization was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"credit_card_collections":{"description":"whether charges incurred by the org are paid by credit card.","example":true,"readOnly":true,"type":["boolean"]},"default":{"description":"whether to use this organization when none is specified","example":true,"readOnly":false,"type":["boolean"]},"id":{"description":"unique identifier of organization","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/organization/definitions/name"}]},"name":{"description":"unique name of organization","example":"example","readOnly":true,"type":["string"]},"provisioned_licenses":{"description":"whether the org is provisioned licenses by salesforce.","example":true,"readOnly":true,"type":["boolean"]},"role":{"description":"role in the organization","enum":["admin","collaborator","member","owner"],"example":"admin","readOnly":true,"type":["string"]},"updated_at":{"description":"when the organization was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"List organizations in which you are a member.","href":"/organizations","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/organization"},"type":["array"]},"title":"List"},{"description":"Info for an organization.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","title":"Info"},{"description":"Set or unset the organization as your default organization.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"default":{"$ref":"#/definitions/organization/definitions/default"}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/organization"},"title":"Update"}],"properties":{"created_at":{"$ref":"#/definitions/organization/definitions/created_at"},"credit_card_collections":{"$ref":"#/definitions/organization/definitions/credit_card_collections"},"default":{"$ref":"#/definitions/organization/definitions/default"},"name":{"$ref":"#/definitions/organization/definitions/name"},"provisioned_licenses":{"$ref":"#/definitions/organization/definitions/provisioned_licenses"},"role":{"$ref":"#/definitions/organization/definitions/role"},"updated_at":{"$ref":"#/definitions/organization/definitions/updated_at"}}},"otp-secret":{"description":"This renders a secret that clients can use to build a one-time password to be supplied as a 2nd factor of authentication.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"development","strictProperties":true,"title":"Heroku Platform API - OTP Secret","type":["object"],"definitions":{"created_at":{"description":"when OTP secret was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of OTP secret","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/otp-secret/definitions/id"}]},"updated_at":{"description":"when OTP secret was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"url":{"description":"OTP secret rendered in URL format","example":"otpauth://totp/username@example.com?issuer=Heroku&secret=abcd1234","readOnly":true,"type":["string"]}},"links":[{"description":"Create new OTP secret. This invalidates any existing OTP secrets on the account.","href":"/account/otp-secret","method":"POST","rel":"create","targetSchema":{"$ref":"#/definitions/otp-secret"},"title":"Create"}],"properties":{"created_at":{"$ref":"#/definitions/otp-secret/definitions/created_at"},"id":{"$ref":"#/definitions/otp-secret/definitions/id"},"updated_at":{"$ref":"#/definitions/otp-secret/definitions/updated_at"},"url":{"$ref":"#/definitions/otp-secret/definitions/url"}}},"password-reset":{"description":"A password reset represents a in-process password reset attempt.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - PasswordReset","type":["object"],"definitions":{"created_at":{"description":"when password reset was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/account/definitions/email"}]},"password_confirmation":{"description":"confirmation of the new password","example":"newpassword","readOnly":true,"type":["string"]},"reset_password_token":{"description":"unique identifier of a password reset attempt","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]}},"links":[{"description":"Reset account's password. This will send a reset password link to the user's email address.","href":"/password-resets","method":"POST","rel":"self","schema":{"properties":{"email":{"$ref":"#/definitions/account/definitions/email"}},"type":["object"]},"title":"Reset Password"},{"description":"Complete password reset.","href":"/password-resets/{(%23%2Fdefinitions%2Fpassword-reset%2Fdefinitions%2Freset_password_token)}/actions/finalize","method":"POST","rel":"self","schema":{"properties":{"password":{"$ref":"#/definitions/account/definitions/password"},"password_confirmation":{"$ref":"#/definitions/password-reset/definitions/password_confirmation"}},"type":["object"]},"title":"Complete Reset Password"}],"properties":{"created_at":{"$ref":"#/definitions/password-reset/definitions/created_at"},"user":{"properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"strictProperties":true,"type":["object"]}}},"payment-method":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"The on file payment method for an account","stability":"prototype","title":"Heroku Vault API - Payment Method","type":["object"],"definitions":{"address_1":{"type":["string"],"description":"street address line 1","example":"40 Hickory Lane"},"address_2":{"type":["string"],"description":"street address line 2","example":"Suite 103"},"card_number":{"type":["string"],"description":"encrypted card number of payment method","example":"encrypted-card-number"},"city":{"type":["string"],"description":"city","example":"San Francisco"},"country":{"type":["string"],"description":"country","example":"US"},"cvv":{"type":["string"],"description":"card verification value","example":"123"},"expiration_month":{"type":["string"],"description":"expiration month","example":"11"},"expiration_year":{"type":["string"],"description":"expiration year","example":"2014"},"first_name":{"type":["string"],"description":"the first name for payment method","example":"Jason"},"last_name":{"type":["string"],"description":"the last name for payment method","example":"Walker"},"other":{"type":["string"],"description":"metadata","example":"Additional information for payment method"},"postal_code":{"type":["string"],"description":"postal code","example":"90210"},"state":{"type":["string"],"description":"state","example":"CA"},"card_last4":{"type":["string"],"description":"last 4 digits of credit card number","example":"1234","readOnly":true},"card_type":{"type":["string"],"description":"name of credit card issuer","example":"VISA","readOnly":true},"heroku_id":{"type":["string"],"description":"heroku_id identifier reference","example":"user930223902@heroku.com","readOnly":true},"identity":{"anyOf":[{"$ref":"#/definitions/invoice-address/definitions/heroku_id"}]}},"links":[{"description":"Update an existing payment method for an account.","href":"/account/payment-method","method":"PATCH","rel":"update","schema":{"properties":{"address_1":{"$ref":"#/definitions/payment-method/definitions/address_1"},"address_2":{"$ref":"#/definitions/payment-method/definitions/address_2"},"card_number":{"$ref":"#/definitions/payment-method/definitions/card_number"},"city":{"$ref":"#/definitions/payment-method/definitions/city"},"country":{"$ref":"#/definitions/payment-method/definitions/country"},"cvv":{"$ref":"#/definitions/payment-method/definitions/cvv"},"expiration_month":{"$ref":"#/definitions/payment-method/definitions/expiration_month"},"expiration_year":{"$ref":"#/definitions/payment-method/definitions/expiration_year"},"first_name":{"$ref":"#/definitions/payment-method/definitions/first_name"},"last_name":{"$ref":"#/definitions/payment-method/definitions/last_name"},"other":{"$ref":"#/definitions/payment-method/definitions/other"},"postal_code":{"$ref":"#/definitions/payment-method/definitions/postal_code"},"state":{"$ref":"#/definitions/payment-method/definitions/state"}},"required":["address_1","address_2","card_number","city","country","cvv","expiration_month","expiration_year","first_name","last_name","postal_code","state"],"type":["object"]},"title":"update"},{"description":"Get the current payment method for an account.","href":"/account/payment-method","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/payment-method"},"title":"get"}],"properties":{"address_1":{"$ref":"#/definitions/payment-method/definitions/address_1"},"address_2":{"$ref":"#/definitions/payment-method/definitions/address_2"},"card_last4":{"$ref":"#/definitions/payment-method/definitions/card_last4"},"card_type":{"$ref":"#/definitions/payment-method/definitions/card_type"},"city":{"$ref":"#/definitions/payment-method/definitions/city"},"country":{"$ref":"#/definitions/payment-method/definitions/country"},"expiration_month":{"$ref":"#/definitions/payment-method/definitions/expiration_month"},"expiration_year":{"$ref":"#/definitions/payment-method/definitions/expiration_year"},"first_name":{"$ref":"#/definitions/payment-method/definitions/first_name"},"last_name":{"$ref":"#/definitions/payment-method/definitions/last_name"},"other":{"$ref":"#/definitions/payment-method/definitions/other"},"postal_code":{"$ref":"#/definitions/payment-method/definitions/postal_code"},"state":{"$ref":"#/definitions/payment-method/definitions/state"}}},"payment":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"A payment represents money collected for an account","title":"Heroku Vault API - Payments","stability":"prototype","type":["object"],"definitions":{"account_id":{"type":["integer"],"description":"account that payment belongs to","example":8403923,"readOnly":true},"amount":{"type":["number"],"description":"amount of payment in cents","example":50000,"readOnly":false},"created_at":{"description":"when payment was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"type":["integer"],"description":"legacy unique identifier of payment","example":9403943,"readOnly":true},"identity":{"anyOf":[{"$ref":"#/definitions/payment/definitions/id"}]},"state":{"enum":["failure","pending","success"],"type":["string"],"description":"state of the payment","example":"pending","readOnly":true},"updated_at":{"description":"when credit was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"uuid":{"description":"unique identifier for a payment transaction","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":false,"type":["string"]}},"links":[{"description":"Create a payment on an existing account","href":"/account/payments","method":"POST","rel":"self","schema":{"properties":{"amount":{"$ref":"#/definitions/payment/definitions/amount"},"invoice":{"$ref":"#/definitions/invoice/definitions/identity"},"uuid":{"$ref":"#/definitions/payment/definitions/uuid"}},"required":["amount","invoice","uuid"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/payment"},"title":"create"}],"properties":{"amount":{"$ref":"#/definitions/payment/definitions/amount"},"created_at":{"$ref":"#/definitions/payment/definitions/created_at"},"id":{"$ref":"#/definitions/payment/definitions/id"},"invoice":{"description":"identity of invoice","properties":{"id":{"$ref":"#/definitions/invoice/definitions/id"},"number":{"$ref":"#/definitions/invoice/definitions/number"}},"type":["null","object"]},"updated_at":{"$ref":"#/definitions/payment/definitions/updated_at"},"user":{"description":"identity of user issuing payment","properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"strictProperties":true,"type":["object"]},"state":{"$ref":"#/definitions/payment/definitions/state"}}},"plan":{"description":"Plans represent different configurations of add-ons that may be added to apps. Endpoints under add-on services can be accessed without authentication.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Plan","type":["object"],"definitions":{"created_at":{"description":"when plan was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"default":{"description":"whether this plan is the default for its addon service","example":false,"readOnly":true,"type":["boolean"]},"description":{"description":"description of plan","example":"Heroku Postgres Dev","readOnly":true,"type":["string"]},"human_name":{"description":"human readable name of the addon plan","example":"Dev","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this plan","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/plan/definitions/id"},{"$ref":"#/definitions/plan/definitions/name"}]},"name":{"description":"unique name of this plan","example":"heroku-postgresql:dev","readOnly":true,"type":["string"]},"cents":{"description":"price in cents per unit of plan","example":0,"readOnly":true,"type":["integer"]},"unit":{"description":"unit of price for plan","example":"month","readOnly":true,"type":["string"]},"state":{"description":"release status for plan","example":"public","readOnly":true,"type":["string"]},"updated_at":{"description":"when plan was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Info for existing plan.","href":"/addon-services/{(%23%2Fdefinitions%2Faddon-service%2Fdefinitions%2Fidentity)}/plans/{(%23%2Fdefinitions%2Fplan%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/plan"},"title":"Info"},{"description":"List existing plans.","href":"/addon-services/{(%23%2Fdefinitions%2Faddon-service%2Fdefinitions%2Fidentity)}/plans","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/plan"},"type":["array"]},"title":"List"}],"properties":{"created_at":{"$ref":"#/definitions/plan/definitions/created_at"},"default":{"$ref":"#/definitions/plan/definitions/default"},"description":{"$ref":"#/definitions/plan/definitions/description"},"human_name":{"$ref":"#/definitions/plan/definitions/human_name"},"id":{"$ref":"#/definitions/plan/definitions/id"},"name":{"$ref":"#/definitions/plan/definitions/name"},"price":{"description":"price","properties":{"cents":{"$ref":"#/definitions/plan/definitions/cents"},"unit":{"$ref":"#/definitions/plan/definitions/unit"}},"strictProperties":true,"type":["object"]},"state":{"$ref":"#/definitions/plan/definitions/state"},"updated_at":{"$ref":"#/definitions/plan/definitions/updated_at"}}},"rate-limit":{"description":"Rate Limit represents the number of request tokens each account holds. Requests to this endpoint do not count towards the rate limit.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Rate Limit","type":["object"],"definitions":{"identity":{},"remaining":{"description":"allowed requests remaining in current interval","example":2399,"readOnly":true,"type":["integer"]}},"links":[{"description":"Info for rate limits.","href":"/account/rate-limits","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/rate-limit"},"title":"Info"}],"properties":{"remaining":{"$ref":"#/definitions/rate-limit/definitions/remaining"}}},"recovery-code":{"description":"Recovery codes grant access to accounts with two-factor authentication enabled.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"development","strictProperties":true,"title":"Heroku Platform API - Recovery Code","type":["array"],"items":{"example":"0123456789abcdef","type":["string"]},"links":[{"description":"Generate new recovery codes. This invalidates any existing codes on the account.","href":"/account/recovery-codes","method":"POST","rel":"create","targetSchema":{"$ref":"#/definitions/recovery-code"},"title":"Create"}]},"region":{"description":"A region represents a geographic location in which your application may run.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Region","type":["object"],"definitions":{"country":{"description":"country where the region exists","example":"United States","readOnly":true,"type":["string"]},"created_at":{"description":"when region was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"description":{"description":"description of region","example":"United States","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of region","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/region/definitions/id"},{"$ref":"#/definitions/region/definitions/name"}]},"locale":{"description":"area in the country where the region exists","example":"Virginia","readOnly":true,"type":["string"]},"name":{"description":"unique name of region","example":"us","readOnly":true,"type":["string"]},"private_capable":{"description":"whether or not region is available for creating a private space","example":false,"readOnly":true,"type":["boolean"]},"provider":{"description":"provider of underlying substrate","type":["object"],"properties":{"name":{"description":"name of provider","example":"amazon-web-services","readOnly":true,"type":["string"]},"region":{"description":"region name used by provider","example":"us-east-1","readOnly":true,"type":["string"]}},"readOnly":true},"updated_at":{"description":"when region was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Info for existing region.","href":"/regions/{(%23%2Fdefinitions%2Fregion%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/region"},"title":"Info"},{"description":"List existing regions.","href":"/regions","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/region"},"type":["array"]},"title":"List"}],"properties":{"country":{"$ref":"#/definitions/region/definitions/country"},"created_at":{"$ref":"#/definitions/region/definitions/created_at"},"description":{"$ref":"#/definitions/region/definitions/description"},"id":{"$ref":"#/definitions/region/definitions/id"},"locale":{"$ref":"#/definitions/region/definitions/locale"},"name":{"$ref":"#/definitions/region/definitions/name"},"private_capable":{"$ref":"#/definitions/region/definitions/private_capable"},"provider":{"$ref":"#/definitions/region/definitions/provider"},"updated_at":{"$ref":"#/definitions/region/definitions/updated_at"}}},"release":{"description":"A release represents a combination of code, config vars and add-ons for an app on Heroku.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Release","type":["object"],"definitions":{"created_at":{"description":"when release was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"description":{"description":"description of changes in this release","example":"Added new feature","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of release","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/release/definitions/id"},{"$ref":"#/definitions/release/definitions/version"}]},"updated_at":{"description":"when release was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"version":{"description":"unique version assigned to the release","example":11,"readOnly":true,"type":["integer"]}},"links":[{"description":"Info for existing release.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/releases/{(%23%2Fdefinitions%2Frelease%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/release"},"title":"Info"},{"description":"List existing releases.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/releases","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/release"},"type":["array"]},"title":"List"},{"description":"Create new release.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/releases","method":"POST","rel":"create","schema":{"properties":{"description":{"$ref":"#/definitions/release/definitions/description"},"slug":{"$ref":"#/definitions/slug/definitions/identity"}},"required":["slug"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/release"},"title":"Create"},{"description":"Rollback to an existing release.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/releases","method":"POST","rel":"create","schema":{"properties":{"release":{"$ref":"#/definitions/release/definitions/id"}},"required":["release"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/release"},"title":"Rollback"}],"properties":{"app":{"description":"app involved in the release","properties":{"name":{"$ref":"#/definitions/app/definitions/name"},"id":{"$ref":"#/definitions/app/definitions/id"}},"type":["object"]},"created_at":{"$ref":"#/definitions/release/definitions/created_at"},"description":{"$ref":"#/definitions/release/definitions/description"},"id":{"$ref":"#/definitions/release/definitions/id"},"updated_at":{"$ref":"#/definitions/release/definitions/updated_at"},"slug":{"description":"slug running in this release","properties":{"id":{"$ref":"#/definitions/slug/definitions/id"}},"strictProperties":true,"type":["object","null"]},"user":{"description":"user that created the release","properties":{"id":{"$ref":"#/definitions/account/definitions/id"},"email":{"$ref":"#/definitions/account/definitions/email"}},"strictProperties":true,"type":["object"]},"version":{"$ref":"#/definitions/release/definitions/version"}}},"slug":{"description":"A slug is a snapshot of your application code that is ready to run on the platform.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Slug","type":["object"],"definitions":{"buildpack_provided_description":{"description":"description from buildpack of slug","example":"Ruby/Rack","readOnly":false,"type":["null","string"]},"checksum":{"description":"an optional checksum of the slug for verifying its integrity","example":"SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","readOnly":true,"type":["null","string"]},"commit":{"description":"identification of the code with your version control system (eg: SHA of the git HEAD)","example":"60883d9e8947a57e04dc9124f25df004866a2051","readOnly":false,"type":["null","string"]},"commit_description":{"description":"an optional description of the provided commit","example":"fixed a bug with API documentation","readOnly":false,"type":["null","string"]},"created_at":{"description":"when slug was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of slug","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/slug/definitions/id"}]},"method":{"description":"method to be used to interact with the slug blob","example":"GET","readOnly":true,"type":["string"]},"process_types":{"additionalProperties":false,"description":"hash mapping process type names to their respective command","example":{"web":"./bin/web -p $PORT"},"patternProperties":{"^\\w+$":{"type":["string"]}},"readOnly":false,"type":["object"]},"size":{"default":null,"description":"size of slug, in bytes","example":2048,"readOnly":true,"type":["integer","null"]},"updated_at":{"description":"when slug was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"url":{"description":"URL to interact with the slug blob","example":"https://api.heroku.com/slugs/1234.tgz","readOnly":true,"type":["string"]}},"links":[{"description":"Info for existing slug.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/slugs/{(%23%2Fdefinitions%2Fslug%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/slug"},"title":"Info"},{"description":"Create a new slug. For more information please refer to [Deploying Slugs using the Platform API](https://devcenter.heroku.com/articles/platform-api-deploying-slugs).","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/slugs","method":"POST","rel":"create","schema":{"example":{"blob":{"method":"PUT","url":"https://api.heroku.com/slugs/1234.tgz"},"buildpack_provided_description":"Ruby/Rack","checksum":"SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","commit":"60883d9e8947a57e04dc9124f25df004866a2051","commit_description":"fixed a bug with API documentation","created_at":"2012-01-01T12:00:00Z","id":"01234567-89ab-cdef-0123-456789abcdef","process_types":{"web":"./bin/web -p $PORT"},"size":2048,"stack":{"id":"01234567-89ab-cdef-0123-456789abcdef","name":"cedar-14"},"updated_at\"":"2012-01-01T12:00:00Z"},"properties":{"buildpack_provided_description":{"$ref":"#/definitions/slug/definitions/buildpack_provided_description"},"checksum":{"$ref":"#/definitions/slug/definitions/checksum"},"commit":{"$ref":"#/definitions/slug/definitions/commit"},"commit_description":{"$ref":"#/definitions/slug/definitions/commit_description"},"process_types":{"$ref":"#/definitions/slug/definitions/process_types"},"stack":{"$ref":"#/definitions/stack/definitions/identity"}},"required":["process_types"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/slug"},"title":"Create"}],"properties":{"blob":{"description":"pointer to the url where clients can fetch or store the actual release binary","properties":{"method":{"$ref":"#/definitions/slug/definitions/method"},"url":{"$ref":"#/definitions/slug/definitions/url"}},"strictProperties":true,"type":["object"]},"buildpack_provided_description":{"$ref":"#/definitions/slug/definitions/buildpack_provided_description"},"checksum":{"$ref":"#/definitions/slug/definitions/checksum"},"commit":{"$ref":"#/definitions/slug/definitions/commit"},"commit_description":{"$ref":"#/definitions/slug/definitions/commit_description"},"created_at":{"$ref":"#/definitions/slug/definitions/created_at"},"id":{"$ref":"#/definitions/slug/definitions/id"},"process_types":{"$ref":"#/definitions/slug/definitions/process_types"},"size":{"$ref":"#/definitions/slug/definitions/size"},"stack":{"description":"identity of slug stack","properties":{"id":{"$ref":"#/definitions/stack/definitions/id"},"name":{"$ref":"#/definitions/stack/definitions/name"}},"strictProperties":true,"type":["object"]},"updated_at":{"$ref":"#/definitions/slug/definitions/updated_at"}}},"sms-number":{"description":"SMS numbers are used for recovery on accounts with two-factor authentication enabled.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - SMS Number","type":["object"],"definitions":{"sms_number":{"$ref":"#/definitions/account/definitions/sms_number"}},"links":[{"description":"Recover an account using an SMS recovery code","href":"/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}/sms-number","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/sms-number"},"title":"SMS Number"},{"description":"Recover an account using an SMS recovery code","href":"/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}/sms-number/actions/recover","method":"POST","rel":"self","targetSchema":{"$ref":"#/definitions/sms-number"},"title":"Recover"},{"description":"Confirm an SMS number change with a confirmation code","href":"/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}/sms-number/actions/confirm","method":"POST","rel":"self","targetSchema":{"$ref":"#/definitions/sms-number"},"title":"Confirm"}],"properties":{"sms_number":{"$ref":"#/definitions/account/definitions/sms_number"}}},"source":{"description":"A source is a location for uploading and downloading an application's source code.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Source","type":["object"],"definitions":{"get_url":{"description":"URL to download the source","example":"https://api.heroku.com/sources/1234.tgz","readOnly":true,"type":["string"]},"put_url":{"description":"URL to upload the source","example":"https://api.heroku.com/sources/1234.tgz","readOnly":true,"type":["string"]}},"links":[{"description":"Create URLs for uploading and downloading source.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/sources","method":"POST","rel":"create","targetSchema":{"$ref":"#/definitions/source"},"title":"Create"}],"properties":{"source_blob":{"description":"pointer to the URL where clients can fetch or store the source","properties":{"get_url":{"$ref":"#/definitions/source/definitions/get_url"},"put_url":{"$ref":"#/definitions/source/definitions/put_url"}},"strictProperties":true,"type":["object"]}}},"space-nat":{"description":"Network address translation (NAT) for stable outbound IP addresses from a space","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"prototype","strictProperties":true,"title":"Heroku Platform API - Space Network Address Translation","type":["object"],"definitions":{"created_at":{"description":"when network address translation for a space was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"ip_v4_address":{"example":"123.123.123.123","format":"ipv4","pattern":"^(([01]?\\d?\\d|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d?\\d|2[0-4]\\d|25[0-5])$","type":["string"]},"sources":{"description":"potential IPs from which outbound network traffic will originate","readOnly":true,"type":["array"],"items":{"$ref":"#/definitions/space-nat/definitions/ip_v4_address"}},"state":{"description":"availability of network address translation for a space","enum":["disabled","updating","enabled"],"example":"enabled","readOnly":true,"type":["string"]},"updated_at":{"description":"when network address translation for a space was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Current state of network address translation for a space.","href":"/spaces/{(%23%2Fdefinitions%2Fspace%2Fdefinitions%2Fidentity)}/nat","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/space-nat"},"title":"Info"}],"properties":{"created_at":{"$ref":"#/definitions/space-nat/definitions/created_at"},"sources":{"$ref":"#/definitions/space-nat/definitions/sources"},"state":{"$ref":"#/definitions/space-nat/definitions/state"},"updated_at":{"$ref":"#/definitions/space-nat/definitions/updated_at"}}},"space":{"description":"A space is an isolated, highly available, secure app execution environments, running in the modern VPC substrate.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"prototype","strictProperties":true,"title":"Heroku Platform API - Space","type":["object"],"definitions":{"created_at":{"description":"when space was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of space","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/space/definitions/id"},{"$ref":"#/definitions/space/definitions/name"}]},"name":{"description":"unique name of space","example":"nasa","readOnly":false,"pattern":"^[a-z0-9](?:[a-z0-9]|-(?!-))+[a-z0-9]$","type":["string"]},"state":{"description":"availability of this space","enum":["allocating","allocated","deleting"],"example":"allocated","readOnly":true,"type":["string"]},"updated_at":{"description":"when space was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"List existing spaces.","href":"/spaces","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/space"},"type":["array"]},"title":"List"},{"description":"Info for existing space.","href":"/spaces/{(%23%2Fdefinitions%2Fspace%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/space"},"title":"Info"},{"description":"Update an existing space.","href":"/spaces/{(%23%2Fdefinitions%2Fspace%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"name":{"$ref":"#/definitions/space/definitions/name"}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/space"},"title":"Update"},{"description":"Delete an existing space.","href":"/spaces/{(%23%2Fdefinitions%2Fspace%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/space"},"title":"Delete"},{"description":"Create a new space.","href":"/spaces","method":"POST","rel":"create","schema":{"properties":{"name":{"$ref":"#/definitions/space/definitions/name"},"region":{"$ref":"#/definitions/region/definitions/identity"}},"required":["name"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/space"},"title":"Create"}],"properties":{"created_at":{"$ref":"#/definitions/space/definitions/created_at"},"id":{"$ref":"#/definitions/space/definitions/id"},"name":{"$ref":"#/definitions/space/definitions/name"},"organization":{"description":"organization that owns this space","properties":{"name":{"$ref":"#/definitions/organization/definitions/name"}},"type":["null","object"]},"region":{"description":"identity of space region","properties":{"id":{"$ref":"#/definitions/region/definitions/id"},"name":{"$ref":"#/definitions/region/definitions/name"}},"strictProperties":true,"type":["object"]},"state":{"$ref":"#/definitions/space/definitions/state"},"updated_at":{"$ref":"#/definitions/space/definitions/updated_at"}}},"ssl-endpoint":{"description":"[SSL Endpoint](https://devcenter.heroku.com/articles/ssl-endpoint) is a public address serving custom SSL cert for HTTPS traffic to a Heroku app. Note that an app must have the `ssl:endpoint` addon installed before it can provision an SSL Endpoint using these APIs.","$schema":"http://json-schema.org/draft-04/hyper-schema","title":"Heroku Platform API - SSL Endpoint","stability":"production","strictProperties":true,"type":["object"],"definitions":{"certificate_chain":{"description":"raw contents of the public certificate chain (eg: .crt or .pem file)","example":"-----BEGIN CERTIFICATE----- ...","readOnly":false,"type":["string"]},"cname":{"description":"canonical name record, the address to point a domain at","example":"example.herokussl.com","readOnly":false,"type":["string"]},"created_at":{"description":"when endpoint was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this SSL endpoint","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/ssl-endpoint/definitions/id"},{"$ref":"#/definitions/ssl-endpoint/definitions/name"}]},"name":{"description":"unique name for SSL endpoint","example":"example","pattern":"^[a-z][a-z0-9-]{2,29}$","readOnly":true,"type":["string"]},"preprocess":{"default":true,"description":"allow Heroku to modify an uploaded public certificate chain if deemed advantageous by adding missing intermediaries, stripping unnecessary ones, etc.","example":true,"readOnly":false,"type":["boolean"]},"private_key":{"description":"contents of the private key (eg .key file)","example":"-----BEGIN RSA PRIVATE KEY----- ...","readOnly":false,"type":["string"]},"rollback":{"default":false,"description":"indicates that a rollback should be performed","example":false,"readOnly":false,"type":["boolean"]},"updated_at":{"description":"when endpoint was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new SSL endpoint.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/ssl-endpoints","method":"POST","rel":"create","schema":{"properties":{"certificate_chain":{"$ref":"#/definitions/ssl-endpoint/definitions/certificate_chain"},"preprocess":{"$ref":"#/definitions/ssl-endpoint/definitions/preprocess"},"private_key":{"$ref":"#/definitions/ssl-endpoint/definitions/private_key"}},"required":["certificate_chain","private_key"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/ssl-endpoint"},"title":"Create"},{"description":"Delete existing SSL endpoint.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/ssl-endpoints/{(%23%2Fdefinitions%2Fssl-endpoint%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/ssl-endpoint"},"title":"Delete"},{"description":"Info for existing SSL endpoint.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/ssl-endpoints/{(%23%2Fdefinitions%2Fssl-endpoint%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/ssl-endpoint"},"title":"Info"},{"description":"List existing SSL endpoints.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/ssl-endpoints","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/ssl-endpoint"},"type":["array"]},"title":"List"},{"description":"Update an existing SSL endpoint.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/ssl-endpoints/{(%23%2Fdefinitions%2Fssl-endpoint%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"certificate_chain":{"$ref":"#/definitions/ssl-endpoint/definitions/certificate_chain"},"preprocess":{"$ref":"#/definitions/ssl-endpoint/definitions/preprocess"},"private_key":{"$ref":"#/definitions/ssl-endpoint/definitions/private_key"},"rollback":{"$ref":"#/definitions/ssl-endpoint/definitions/rollback"}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/ssl-endpoint"},"title":"Update"}],"properties":{"certificate_chain":{"$ref":"#/definitions/ssl-endpoint/definitions/certificate_chain"},"cname":{"$ref":"#/definitions/ssl-endpoint/definitions/cname"},"created_at":{"$ref":"#/definitions/ssl-endpoint/definitions/created_at"},"id":{"$ref":"#/definitions/ssl-endpoint/definitions/id"},"name":{"$ref":"#/definitions/ssl-endpoint/definitions/name"},"updated_at":{"$ref":"#/definitions/ssl-endpoint/definitions/updated_at"}}},"stack":{"description":"Stacks are the different application execution environments available in the Heroku platform.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Stack","type":["object"],"definitions":{"created_at":{"description":"when stack was introduced","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of stack","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/stack/definitions/name"},{"$ref":"#/definitions/stack/definitions/id"}]},"name":{"description":"unique name of stack","example":"cedar-14","readOnly":true,"type":["string"]},"state":{"description":"availability of this stack: beta, deprecated or public","example":"public","readOnly":true,"type":["string"]},"updated_at":{"description":"when stack was last modified","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Stack info.","href":"/stacks/{(%23%2Fdefinitions%2Fstack%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/stack"},"title":"Info"},{"description":"List available stacks.","href":"/stacks","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/stack"},"type":["array"]},"title":"List"}],"properties":{"created_at":{"$ref":"#/definitions/stack/definitions/created_at"},"id":{"$ref":"#/definitions/stack/definitions/id"},"name":{"$ref":"#/definitions/stack/definitions/name"},"state":{"$ref":"#/definitions/stack/definitions/state"},"updated_at":{"$ref":"#/definitions/stack/definitions/updated_at"}}},"user-preferences":{"description":"Tracks a user's preferences and message dismissals","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - User Preferences","type":["object"],"definitions":{"identity":{"anyOf":[{"$ref":"#/definitions/user-preferences/definitions/self"}]},"self":{"description":"Implicit reference to currently authorized user","enum":["~"],"example":"~","readOnly":true,"type":["string"]},"timezone":{"description":"User's default timezone","example":"UTC","readOnly":false,"type":["string","null"]},"dismissed-github-banner":{"description":"Whether the user has dismissed the GitHub link banner","example":true,"readOnly":false,"type":["boolean","null"]},"dismissed-getting-started":{"description":"Whether the user has dismissed the getting started banner","example":true,"readOnly":false,"type":["boolean","null"]},"dismissed-org-access-controls":{"description":"Whether the user has dismissed the Organization Access Controls banner","example":true,"readOnly":false,"type":["boolean","null"]},"dismissed-org-wizard-notification":{"description":"Whether the user has dismissed the Organization Wizard","example":true,"readOnly":false,"type":["boolean","null"]},"dismissed-pipelines-banner":{"description":"Whether the user has dismissed the Pipelines banner","example":true,"readOnly":false,"type":["boolean","null"]},"dismissed-pipelines-github-banner":{"description":"Whether the user has dismissed the GitHub banner on a pipeline overview","example":true,"readOnly":false,"type":["boolean","null"]},"dismissed-sms-banner":{"description":"Whether the user has dismissed the 2FA SMS banner","example":true,"readOnly":false,"type":["boolean","null"]}},"links":[{"description":"Retrieve User Preferences","href":"/users/{(%23%2Fdefinitions%2Fuser-preferences%2Fdefinitions%2Fidentity)}/preferences","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/user-preferences"},"title":"List"},{"description":"Update User Preferences","href":"/users/{(%23%2Fdefinitions%2Fuser-preferences%2Fdefinitions%2Fidentity)}/preferences","method":"PATCH","rel":"update","schema":{"properties":{"timezone":{"$ref":"#/definitions/user-preferences/definitions/timezone"},"dismissed-github-banner":{"$ref":"#/definitions/user-preferences/definitions/dismissed-github-banner"},"dismissed-getting-started":{"$ref":"#/definitions/user-preferences/definitions/dismissed-getting-started"},"dismissed-org-access-controls":{"$ref":"#/definitions/user-preferences/definitions/dismissed-org-access-controls"},"dismissed-org-wizard-notification":{"$ref":"#/definitions/user-preferences/definitions/dismissed-org-wizard-notification"},"dismissed-pipelines-banner":{"$ref":"#/definitions/user-preferences/definitions/dismissed-pipelines-banner"},"dismissed-sms-banner":{"$ref":"#/definitions/user-preferences/definitions/dismissed-sms-banner"}}},"targetSchema":{"$ref":"#/definitions/user-preferences"},"title":"Update"}],"properties":{"timezone":{"$ref":"#/definitions/user-preferences/definitions/timezone"},"dismissed-github-banner":{"$ref":"#/definitions/user-preferences/definitions/dismissed-github-banner"},"dismissed-getting-started":{"$ref":"#/definitions/user-preferences/definitions/dismissed-getting-started"},"dismissed-org-access-controls":{"$ref":"#/definitions/user-preferences/definitions/dismissed-org-access-controls"},"dismissed-org-wizard-notification":{"$ref":"#/definitions/user-preferences/definitions/dismissed-org-wizard-notification"},"dismissed-pipelines-banner":{"$ref":"#/definitions/user-preferences/definitions/dismissed-pipelines-banner"},"dismissed-pipelines-github-banner":{"$ref":"#/definitions/user-preferences/definitions/dismissed-pipelines-github-banner"},"dismissed-sms-banner":{"$ref":"#/definitions/user-preferences/definitions/dismissed-sms-banner"}}},"whitelisted-addon-service":{"description":"Entities that have been whitelisted to be used by an Organization","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"prototype","strictProperties":true,"title":"Heroku Platform API - Whitelisted Entity","type":["object"],"definitions":{"added_at":{"description":"when the add-on service was whitelisted","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"added_by":{"description":"the user which whitelisted the Add-on Service","properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"readOnly":true,"type":["object"]},"addon_service":{"description":"the Add-on Service whitelisted for use","properties":{"id":{"$ref":"#/definitions/addon-service/definitions/id"},"name":{"$ref":"#/definitions/addon-service/definitions/name"},"human_name":{"$ref":"#/definitions/addon-service/definitions/human_name"}},"readOnly":true,"type":["object"]},"id":{"description":"unique identifier for this whitelisting entity","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/whitelisted-addon-service/definitions/id"},{"$ref":"#/definitions/addon-service/definitions/name"}]}},"links":[{"description":"List all whitelisted Add-on Services for an Organization","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/whitelisted-addon-services","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/whitelisted-addon-service"},"type":["array"]},"title":"List"},{"description":"Whitelist an Add-on Service","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/whitelisted-addon-services","method":"POST","rel":"create","schema":{"properties":{"addon":{"description":"name of one or more Add-ons to whitelist","example":"heroku-postgresql","type":["array","string"]}}},"targetSchema":{"items":{"$ref":"#/definitions/whitelisted-addon-service"},"type":["array"]},"title":"Create"},{"description":"Remove a whitelisted entity","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/whitelisted-addon-services/{(%23%2Fdefinitions%2Fwhitelisted-addon-service%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/whitelisted-addon-service"},"title":"Delete"}],"properties":{"added_at":{"$ref":"#/definitions/whitelisted-addon-service/definitions/added_at"},"added_by":{"$ref":"#/definitions/whitelisted-addon-service/definitions/added_by"},"addon_service":{"$ref":"#/definitions/whitelisted-addon-service/definitions/addon_service"},"id":{"$ref":"#/definitions/whitelisted-addon-service/definitions/id"}}}},"properties":{"account-feature":{"$ref":"#/definitions/account-feature"},"account":{"$ref":"#/definitions/account"},"addon-attachment":{"$ref":"#/definitions/addon-attachment"},"addon-service":{"$ref":"#/definitions/addon-service"},"addon":{"$ref":"#/definitions/addon"},"app-feature":{"$ref":"#/definitions/app-feature"},"app-setup":{"$ref":"#/definitions/app-setup"},"app-transfer":{"$ref":"#/definitions/app-transfer"},"app":{"$ref":"#/definitions/app"},"build-result":{"$ref":"#/definitions/build-result"},"build":{"$ref":"#/definitions/build"},"buildpack-installation":{"$ref":"#/definitions/buildpack-installation"},"collaborator":{"$ref":"#/definitions/collaborator"},"config-var":{"$ref":"#/definitions/config-var"},"credit":{"$ref":"#/definitions/credit"},"domain":{"$ref":"#/definitions/domain"},"dyno":{"$ref":"#/definitions/dyno"},"event":{"$ref":"#/definitions/event"},"failed-event":{"$ref":"#/definitions/failed-event"},"formation":{"$ref":"#/definitions/formation"},"inbound-ruleset":{"$ref":"#/definitions/inbound-ruleset"},"invitation":{"$ref":"#/definitions/invitation"},"invoice-address":{"$ref":"#/definitions/invoice-address"},"invoice":{"$ref":"#/definitions/invoice"},"key":{"$ref":"#/definitions/key"},"log-drain":{"$ref":"#/definitions/log-drain"},"log-session":{"$ref":"#/definitions/log-session"},"oauth-authorization":{"$ref":"#/definitions/oauth-authorization"},"oauth-client":{"$ref":"#/definitions/oauth-client"},"oauth-grant":{"$ref":"#/definitions/oauth-grant"},"oauth-token":{"$ref":"#/definitions/oauth-token"},"organization-addon":{"$ref":"#/definitions/organization-addon"},"organization-app-collaborator":{"$ref":"#/definitions/organization-app-collaborator"},"organization-app":{"$ref":"#/definitions/organization-app"},"organization-invoice":{"$ref":"#/definitions/organization-invoice"},"organization-member":{"$ref":"#/definitions/organization-member"},"organization-payment-method":{"$ref":"#/definitions/organization-payment-method"},"organization-preferences":{"$ref":"#/definitions/organization-preferences"},"organization":{"$ref":"#/definitions/organization"},"otp-secret":{"$ref":"#/definitions/otp-secret"},"password-reset":{"$ref":"#/definitions/password-reset"},"payment-method":{"$ref":"#/definitions/payment-method"},"payment":{"$ref":"#/definitions/payment"},"plan":{"$ref":"#/definitions/plan"},"rate-limit":{"$ref":"#/definitions/rate-limit"},"recovery-code":{"$ref":"#/definitions/recovery-code"},"region":{"$ref":"#/definitions/region"},"release":{"$ref":"#/definitions/release"},"slug":{"$ref":"#/definitions/slug"},"sms-number":{"$ref":"#/definitions/sms-number"},"source":{"$ref":"#/definitions/source"},"space-nat":{"$ref":"#/definitions/space-nat"},"space":{"$ref":"#/definitions/space"},"ssl-endpoint":{"$ref":"#/definitions/ssl-endpoint"},"stack":{"$ref":"#/definitions/stack"},"user-preferences":{"$ref":"#/definitions/user-preferences"},"whitelisted-addon-service":{"$ref":"#/definitions/whitelisted-addon-service"}},"description":"The platform API empowers developers to automate, extend and combine Heroku with other services.","id":"http://api.heroku.com/schema#","links":[{"href":"https://api.heroku.com","rel":"self"},{"href":"/schema","method":"GET","rel":"self","targetSchema":{"additionalProperties":true}}],"title":"Heroku Platform API"}
2064
+ HEROICS_SCHEMA
2065
+ end