snap_deploy 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1532 @@
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 SnapDeploy::Provider::Heroku::API
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(:Memory)
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
+ # Add-on services represent add-ons that may be provisioned for apps. Endpoints under add-on services can be accessed without authentication.
108
+ #
109
+ # @return [AddonService]
110
+ def addon_service
111
+ @addon_service_resource ||= AddonService.new(@client)
112
+ end
113
+
114
+ # Add-ons represent add-ons that have been provisioned for an app.
115
+ #
116
+ # @return [Addon]
117
+ def addon
118
+ @addon_resource ||= Addon.new(@client)
119
+ end
120
+
121
+ # An app feature represents a Heroku labs capability that can be enabled or disabled for an app on Heroku.
122
+ #
123
+ # @return [AppFeature]
124
+ def app_feature
125
+ @app_feature_resource ||= AppFeature.new(@client)
126
+ end
127
+
128
+ # An app setup represents an app on Heroku that is setup using an environment, addons, and scripts described in an app.json manifest file.
129
+ #
130
+ # @return [AppSetup]
131
+ def app_setup
132
+ @app_setup_resource ||= AppSetup.new(@client)
133
+ end
134
+
135
+ # An app transfer represents a two party interaction for transferring ownership of an app.
136
+ #
137
+ # @return [AppTransfer]
138
+ def app_transfer
139
+ @app_transfer_resource ||= AppTransfer.new(@client)
140
+ end
141
+
142
+ # An app represents the program that you would like to deploy and run on Heroku.
143
+ #
144
+ # @return [App]
145
+ def app
146
+ @app_resource ||= App.new(@client)
147
+ end
148
+
149
+ # A build result contains the output from a build.
150
+ #
151
+ # @return [BuildResult]
152
+ def build_result
153
+ @build_result_resource ||= BuildResult.new(@client)
154
+ end
155
+
156
+ # A build represents the process of transforming a code tarball into a slug
157
+ #
158
+ # @return [Build]
159
+ def build
160
+ @build_resource ||= Build.new(@client)
161
+ end
162
+
163
+ # An buildpack installtion represents a buildpack that will be run against an app.
164
+ #
165
+ # @return [BuildpackInstallation]
166
+ def buildpack_installation
167
+ @buildpack_installation_resource ||= BuildpackInstallation.new(@client)
168
+ end
169
+
170
+ # A collaborator represents an account that has been given access to an app on Heroku.
171
+ #
172
+ # @return [Collaborator]
173
+ def collaborator
174
+ @collaborator_resource ||= Collaborator.new(@client)
175
+ end
176
+
177
+ # Config Vars allow you to manage the configuration information provided to an app on Heroku.
178
+ #
179
+ # @return [ConfigVar]
180
+ def config_var
181
+ @config_var_resource ||= ConfigVar.new(@client)
182
+ end
183
+
184
+ # A credit represents value that will be used up before further charges are assigned to an account.
185
+ #
186
+ # @return [Credit]
187
+ def credit
188
+ @credit_resource ||= Credit.new(@client)
189
+ end
190
+
191
+ # Domains define what web routes should be routed to an app on Heroku.
192
+ #
193
+ # @return [Domain]
194
+ def domain
195
+ @domain_resource ||= Domain.new(@client)
196
+ end
197
+
198
+ # Dynos encapsulate running processes of an app on Heroku.
199
+ #
200
+ # @return [Dyno]
201
+ def dyno
202
+ @dyno_resource ||= Dyno.new(@client)
203
+ end
204
+
205
+ # 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.
206
+ #
207
+ # @return [Formation]
208
+ def formation
209
+ @formation_resource ||= Formation.new(@client)
210
+ end
211
+
212
+ # An invoice is an itemized bill of goods for an account which includes pricing and charges.
213
+ #
214
+ # @return [Invoice]
215
+ def invoice
216
+ @invoice_resource ||= Invoice.new(@client)
217
+ end
218
+
219
+ # Keys represent public SSH keys associated with an account and are used to authorize accounts as they are performing git operations.
220
+ #
221
+ # @return [Key]
222
+ def key
223
+ @key_resource ||= Key.new(@client)
224
+ end
225
+
226
+ # [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.
227
+ #
228
+ # @return [LogDrain]
229
+ def log_drain
230
+ @log_drain_resource ||= LogDrain.new(@client)
231
+ end
232
+
233
+ # A log session is a reference to the http based log stream for an app.
234
+ #
235
+ # @return [LogSession]
236
+ def log_session
237
+ @log_session_resource ||= LogSession.new(@client)
238
+ end
239
+
240
+ # 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)
241
+ #
242
+ # @return [OauthAuthorization]
243
+ def oauth_authorization
244
+ @oauth_authorization_resource ||= OauthAuthorization.new(@client)
245
+ end
246
+
247
+ # 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).
248
+ #
249
+ # @return [OauthClient]
250
+ def oauth_client
251
+ @oauth_client_resource ||= OauthClient.new(@client)
252
+ end
253
+
254
+ # 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)
255
+ #
256
+ # @return [OauthGrant]
257
+ def oauth_grant
258
+ @oauth_grant_resource ||= OauthGrant.new(@client)
259
+ end
260
+
261
+ # 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)
262
+ #
263
+ # @return [OauthToken]
264
+ def oauth_token
265
+ @oauth_token_resource ||= OauthToken.new(@client)
266
+ end
267
+
268
+ # An organization collaborator represents an account that has been given access to an organization app on Heroku.
269
+ #
270
+ # @return [OrganizationAppCollaborator]
271
+ def organization_app_collaborator
272
+ @organization_app_collaborator_resource ||= OrganizationAppCollaborator.new(@client)
273
+ end
274
+
275
+ # An organization app encapsulates the organization specific functionality of Heroku apps.
276
+ #
277
+ # @return [OrganizationApp]
278
+ def organization_app
279
+ @organization_app_resource ||= OrganizationApp.new(@client)
280
+ end
281
+
282
+ # An organization member is an individual with access to an organization.
283
+ #
284
+ # @return [OrganizationMember]
285
+ def organization_member
286
+ @organization_member_resource ||= OrganizationMember.new(@client)
287
+ end
288
+
289
+ # Organizations allow you to manage access to a shared group of applications across your development team.
290
+ #
291
+ # @return [Organization]
292
+ def organization
293
+ @organization_resource ||= Organization.new(@client)
294
+ end
295
+
296
+ # This renders a secret that clients can use to build a one-time password to be supplied as a 2nd factor of authentication.
297
+ #
298
+ # @return [OtpSecret]
299
+ def otp_secret
300
+ @otp_secret_resource ||= OtpSecret.new(@client)
301
+ end
302
+
303
+ # A payment represents money collected for an account
304
+ #
305
+ # @return [Payment]
306
+ def payment
307
+ @payment_resource ||= Payment.new(@client)
308
+ end
309
+
310
+ # The on file payment method for an account
311
+ #
312
+ # @return [PaymentMethod]
313
+ def payment_method
314
+ @payment_method_resource ||= PaymentMethod.new(@client)
315
+ end
316
+
317
+ # Plans represent different configurations of add-ons that may be added to apps. Endpoints under add-on services can be accessed without authentication.
318
+ #
319
+ # @return [Plan]
320
+ def plan
321
+ @plan_resource ||= Plan.new(@client)
322
+ end
323
+
324
+ # Rate Limit represents the number of request tokens each account holds. Requests to this endpoint do not count towards the rate limit.
325
+ #
326
+ # @return [RateLimit]
327
+ def rate_limit
328
+ @rate_limit_resource ||= RateLimit.new(@client)
329
+ end
330
+
331
+ # Recovery codes grant access to accounts with two-factor authentication enabled.
332
+ #
333
+ # @return [RecoveryCode]
334
+ def recovery_code
335
+ @recovery_code_resource ||= RecoveryCode.new(@client)
336
+ end
337
+
338
+ # A region represents a geographic location in which your application may run.
339
+ #
340
+ # @return [Region]
341
+ def region
342
+ @region_resource ||= Region.new(@client)
343
+ end
344
+
345
+ # A release represents a combination of code, config vars and add-ons for an app on Heroku.
346
+ #
347
+ # @return [Release]
348
+ def release
349
+ @release_resource ||= Release.new(@client)
350
+ end
351
+
352
+ # A slug is a snapshot of your application code that is ready to run on the platform.
353
+ #
354
+ # @return [Slug]
355
+ def slug
356
+ @slug_resource ||= Slug.new(@client)
357
+ end
358
+
359
+ # A source is a location for uploading and downloading an application's source code.
360
+ #
361
+ # @return [Source]
362
+ def source
363
+ @source_resource ||= Source.new(@client)
364
+ end
365
+
366
+ # [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.
367
+ #
368
+ # @return [SSLEndpoint]
369
+ def ssl_endpoint
370
+ @ssl_endpoint_resource ||= SSLEndpoint.new(@client)
371
+ end
372
+
373
+ # Stacks are the different application execution environments available in the Heroku platform.
374
+ #
375
+ # @return [Stack]
376
+ def stack
377
+ @stack_resource ||= Stack.new(@client)
378
+ end
379
+ end
380
+
381
+ private
382
+
383
+ # An account feature represents a Heroku labs capability that can be enabled or disabled for an account on Heroku.
384
+ class AccountFeature
385
+ def initialize(client)
386
+ @client = client
387
+ end
388
+
389
+ # Info for an existing account feature.
390
+ #
391
+ # @param account_feature_id_or_account_feature_name: unique identifier of account feature or unique name of account feature
392
+ def info(account_feature_id_or_account_feature_name)
393
+ @client.account_feature.info(account_feature_id_or_account_feature_name)
394
+ end
395
+
396
+ # List existing account features.
397
+ def list()
398
+ @client.account_feature.list()
399
+ end
400
+
401
+ # Update an existing account feature.
402
+ #
403
+ # @param account_feature_id_or_account_feature_name: unique identifier of account feature or unique name of account feature
404
+ # @param body: the object to pass as the request payload
405
+ def update(account_feature_id_or_account_feature_name, body)
406
+ @client.account_feature.update(account_feature_id_or_account_feature_name, body)
407
+ end
408
+ end
409
+
410
+ # An account represents an individual signed up to use the Heroku platform.
411
+ class Account
412
+ def initialize(client)
413
+ @client = client
414
+ end
415
+
416
+ # Info for account.
417
+ def info()
418
+ @client.account.info()
419
+ end
420
+
421
+ # Update account.
422
+ #
423
+ # @param body: the object to pass as the request payload
424
+ def update(body)
425
+ @client.account.update(body)
426
+ end
427
+
428
+ # Change Email for account.
429
+ #
430
+ # @param body: the object to pass as the request payload
431
+ def change_email(body)
432
+ @client.account.change_email(body)
433
+ end
434
+
435
+ # Change Password for account.
436
+ #
437
+ # @param body: the object to pass as the request payload
438
+ def change_password(body)
439
+ @client.account.change_password(body)
440
+ end
441
+
442
+ # Delete account. Note that this action cannot be undone.
443
+ def delete()
444
+ @client.account.delete()
445
+ end
446
+ end
447
+
448
+ # Add-on services represent add-ons that may be provisioned for apps. Endpoints under add-on services can be accessed without authentication.
449
+ class AddonService
450
+ def initialize(client)
451
+ @client = client
452
+ end
453
+
454
+ # Info for existing addon-service.
455
+ #
456
+ # @param addon_service_id_or_addon_service_name: unique identifier of this addon-service or unique name of this addon-service
457
+ def info(addon_service_id_or_addon_service_name)
458
+ @client.addon_service.info(addon_service_id_or_addon_service_name)
459
+ end
460
+
461
+ # List existing addon-services.
462
+ def list()
463
+ @client.addon_service.list()
464
+ end
465
+ end
466
+
467
+ # Add-ons represent add-ons that have been provisioned for an app.
468
+ class Addon
469
+ def initialize(client)
470
+ @client = client
471
+ end
472
+
473
+ # Create a new add-on.
474
+ #
475
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
476
+ # @param body: the object to pass as the request payload
477
+ def create(app_id_or_app_name, body)
478
+ @client.addon.create(app_id_or_app_name, body)
479
+ end
480
+
481
+ # Delete an existing add-on.
482
+ #
483
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
484
+ # @param addon_id_or_addon_name: unique identifier of add-on or name of the add-on unique within its app
485
+ def delete(app_id_or_app_name, addon_id_or_addon_name)
486
+ @client.addon.delete(app_id_or_app_name, addon_id_or_addon_name)
487
+ end
488
+
489
+ # Info for an existing add-on.
490
+ #
491
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
492
+ # @param addon_id_or_addon_name: unique identifier of add-on or name of the add-on unique within its app
493
+ def info(app_id_or_app_name, addon_id_or_addon_name)
494
+ @client.addon.info(app_id_or_app_name, addon_id_or_addon_name)
495
+ end
496
+
497
+ # List existing add-ons.
498
+ #
499
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
500
+ def list(app_id_or_app_name)
501
+ @client.addon.list(app_id_or_app_name)
502
+ end
503
+
504
+ # Change add-on plan. Some add-ons may not support changing plans. In that case, an error will be returned.
505
+ #
506
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
507
+ # @param addon_id_or_addon_name: unique identifier of add-on or name of the add-on unique within its app
508
+ # @param body: the object to pass as the request payload
509
+ def update(app_id_or_app_name, addon_id_or_addon_name, body)
510
+ @client.addon.update(app_id_or_app_name, addon_id_or_addon_name, body)
511
+ end
512
+ end
513
+
514
+ # An app feature represents a Heroku labs capability that can be enabled or disabled for an app on Heroku.
515
+ class AppFeature
516
+ def initialize(client)
517
+ @client = client
518
+ end
519
+
520
+ # Info for an existing app feature.
521
+ #
522
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
523
+ # @param app_feature_id_or_app_feature_name: unique identifier of app feature or unique name of app feature
524
+ def info(app_id_or_app_name, app_feature_id_or_app_feature_name)
525
+ @client.app_feature.info(app_id_or_app_name, app_feature_id_or_app_feature_name)
526
+ end
527
+
528
+ # List existing app features.
529
+ #
530
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
531
+ def list(app_id_or_app_name)
532
+ @client.app_feature.list(app_id_or_app_name)
533
+ end
534
+
535
+ # Update an existing app feature.
536
+ #
537
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
538
+ # @param app_feature_id_or_app_feature_name: unique identifier of app feature or unique name of app feature
539
+ # @param body: the object to pass as the request payload
540
+ def update(app_id_or_app_name, app_feature_id_or_app_feature_name, body)
541
+ @client.app_feature.update(app_id_or_app_name, app_feature_id_or_app_feature_name, body)
542
+ end
543
+ end
544
+
545
+ # An app setup represents an app on Heroku that is setup using an environment, addons, and scripts described in an app.json manifest file.
546
+ class AppSetup
547
+ def initialize(client)
548
+ @client = client
549
+ end
550
+
551
+ # Create a new app setup from a gzipped tar archive containing an app.json manifest file.
552
+ #
553
+ # @param body: the object to pass as the request payload
554
+ def create(body)
555
+ @client.app_setup.create(body)
556
+ end
557
+
558
+ # Get the status of an app setup.
559
+ #
560
+ # @param app_setup_id: unique identifier of app setup
561
+ def info(app_setup_id)
562
+ @client.app_setup.info(app_setup_id)
563
+ end
564
+ end
565
+
566
+ # An app transfer represents a two party interaction for transferring ownership of an app.
567
+ class AppTransfer
568
+ def initialize(client)
569
+ @client = client
570
+ end
571
+
572
+ # Create a new app transfer.
573
+ #
574
+ # @param body: the object to pass as the request payload
575
+ def create(body)
576
+ @client.app_transfer.create(body)
577
+ end
578
+
579
+ # Delete an existing app transfer
580
+ #
581
+ # @param app_transfer_id_or_app_name: unique identifier of app transfer or unique name of app
582
+ def delete(app_transfer_id_or_app_name)
583
+ @client.app_transfer.delete(app_transfer_id_or_app_name)
584
+ end
585
+
586
+ # Info for existing app transfer.
587
+ #
588
+ # @param app_transfer_id_or_app_name: unique identifier of app transfer or unique name of app
589
+ def info(app_transfer_id_or_app_name)
590
+ @client.app_transfer.info(app_transfer_id_or_app_name)
591
+ end
592
+
593
+ # List existing apps transfers.
594
+ def list()
595
+ @client.app_transfer.list()
596
+ end
597
+
598
+ # Update an existing app transfer.
599
+ #
600
+ # @param app_transfer_id_or_app_name: unique identifier of app transfer or unique name of app
601
+ # @param body: the object to pass as the request payload
602
+ def update(app_transfer_id_or_app_name, body)
603
+ @client.app_transfer.update(app_transfer_id_or_app_name, body)
604
+ end
605
+ end
606
+
607
+ # An app represents the program that you would like to deploy and run on Heroku.
608
+ class App
609
+ def initialize(client)
610
+ @client = client
611
+ end
612
+
613
+ # Create a new app.
614
+ #
615
+ # @param body: the object to pass as the request payload
616
+ def create(body)
617
+ @client.app.create(body)
618
+ end
619
+
620
+ # Delete an existing app.
621
+ #
622
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
623
+ def delete(app_id_or_app_name)
624
+ @client.app.delete(app_id_or_app_name)
625
+ end
626
+
627
+ # Info for existing app.
628
+ #
629
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
630
+ def info(app_id_or_app_name)
631
+ @client.app.info(app_id_or_app_name)
632
+ end
633
+
634
+ # List existing apps.
635
+ def list()
636
+ @client.app.list()
637
+ end
638
+
639
+ # Update an existing app.
640
+ #
641
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
642
+ # @param body: the object to pass as the request payload
643
+ def update(app_id_or_app_name, body)
644
+ @client.app.update(app_id_or_app_name, body)
645
+ end
646
+ end
647
+
648
+ # A build result contains the output from a build.
649
+ class BuildResult
650
+ def initialize(client)
651
+ @client = client
652
+ end
653
+
654
+ # Info for existing result.
655
+ #
656
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
657
+ # @param build_id: unique identifier of build
658
+ def info(app_id_or_app_name, build_id)
659
+ @client.build_result.info(app_id_or_app_name, build_id)
660
+ end
661
+ end
662
+
663
+ # A build represents the process of transforming a code tarball into a slug
664
+ class Build
665
+ def initialize(client)
666
+ @client = client
667
+ end
668
+
669
+ # Create a new build.
670
+ #
671
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
672
+ # @param body: the object to pass as the request payload
673
+ def create(app_id_or_app_name, body)
674
+ @client.build.create(app_id_or_app_name, body)
675
+ end
676
+
677
+ # Info for existing build.
678
+ #
679
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
680
+ # @param build_id: unique identifier of build
681
+ def info(app_id_or_app_name, build_id)
682
+ @client.build.info(app_id_or_app_name, build_id)
683
+ end
684
+
685
+ # List existing build.
686
+ #
687
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
688
+ def list(app_id_or_app_name)
689
+ @client.build.list(app_id_or_app_name)
690
+ end
691
+ end
692
+
693
+ # An buildpack installtion represents a buildpack that will be run against an app.
694
+ class BuildpackInstallation
695
+ def initialize(client)
696
+ @client = client
697
+ end
698
+
699
+ # Update an app's buildpack installations.
700
+ #
701
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
702
+ # @param body: the object to pass as the request payload
703
+ def update(app_id_or_app_name, body)
704
+ @client.buildpack_installation.update(app_id_or_app_name, body)
705
+ end
706
+
707
+ # Info for existing buildpack installations.
708
+ #
709
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
710
+ def list(app_id_or_app_name)
711
+ @client.buildpack_installation.list(app_id_or_app_name)
712
+ end
713
+ end
714
+
715
+ # A collaborator represents an account that has been given access to an app on Heroku.
716
+ class Collaborator
717
+ def initialize(client)
718
+ @client = client
719
+ end
720
+
721
+ # Create a new collaborator.
722
+ #
723
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
724
+ # @param body: the object to pass as the request payload
725
+ def create(app_id_or_app_name, body)
726
+ @client.collaborator.create(app_id_or_app_name, body)
727
+ end
728
+
729
+ # Delete an existing collaborator.
730
+ #
731
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
732
+ # @param collaborator_email_or_collaborator_id: invited email address of collaborator or unique identifier of collaborator
733
+ def delete(app_id_or_app_name, collaborator_email_or_collaborator_id)
734
+ @client.collaborator.delete(app_id_or_app_name, collaborator_email_or_collaborator_id)
735
+ end
736
+
737
+ # Info for existing collaborator.
738
+ #
739
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
740
+ # @param collaborator_email_or_collaborator_id: invited email address of collaborator or unique identifier of collaborator
741
+ def info(app_id_or_app_name, collaborator_email_or_collaborator_id)
742
+ @client.collaborator.info(app_id_or_app_name, collaborator_email_or_collaborator_id)
743
+ end
744
+
745
+ # List existing collaborators.
746
+ #
747
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
748
+ def list(app_id_or_app_name)
749
+ @client.collaborator.list(app_id_or_app_name)
750
+ end
751
+ end
752
+
753
+ # Config Vars allow you to manage the configuration information provided to an app on Heroku.
754
+ class ConfigVar
755
+ def initialize(client)
756
+ @client = client
757
+ end
758
+
759
+ # Get config-vars for app.
760
+ #
761
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
762
+ def info(app_id_or_app_name)
763
+ @client.config_var.info(app_id_or_app_name)
764
+ end
765
+
766
+ # Update config-vars for app. You can update existing config-vars by setting them again, and remove by setting it to `NULL`.
767
+ #
768
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
769
+ # @param body: the object to pass as the request payload
770
+ def update(app_id_or_app_name, body)
771
+ @client.config_var.update(app_id_or_app_name, body)
772
+ end
773
+ end
774
+
775
+ # A credit represents value that will be used up before further charges are assigned to an account.
776
+ class Credit
777
+ def initialize(client)
778
+ @client = client
779
+ end
780
+
781
+ # Create a new credit.
782
+ #
783
+ # @param body: the object to pass as the request payload
784
+ def create(body)
785
+ @client.credit.create(body)
786
+ end
787
+
788
+ # Info for existing credit.
789
+ #
790
+ # @param credit_identity:
791
+ def info(credit_identity)
792
+ @client.credit.info(credit_identity)
793
+ end
794
+
795
+ # List existing credits.
796
+ def list()
797
+ @client.credit.list()
798
+ end
799
+ end
800
+
801
+ # Domains define what web routes should be routed to an app on Heroku.
802
+ class Domain
803
+ def initialize(client)
804
+ @client = client
805
+ end
806
+
807
+ # Create a new domain.
808
+ #
809
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
810
+ # @param body: the object to pass as the request payload
811
+ def create(app_id_or_app_name, body)
812
+ @client.domain.create(app_id_or_app_name, body)
813
+ end
814
+
815
+ # Delete an existing domain
816
+ #
817
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
818
+ # @param domain_id_or_domain_hostname: unique identifier of this domain or full hostname
819
+ def delete(app_id_or_app_name, domain_id_or_domain_hostname)
820
+ @client.domain.delete(app_id_or_app_name, domain_id_or_domain_hostname)
821
+ end
822
+
823
+ # Info for existing domain.
824
+ #
825
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
826
+ # @param domain_id_or_domain_hostname: unique identifier of this domain or full hostname
827
+ def info(app_id_or_app_name, domain_id_or_domain_hostname)
828
+ @client.domain.info(app_id_or_app_name, domain_id_or_domain_hostname)
829
+ end
830
+
831
+ # List existing domains.
832
+ #
833
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
834
+ def list(app_id_or_app_name)
835
+ @client.domain.list(app_id_or_app_name)
836
+ end
837
+ end
838
+
839
+ # Dynos encapsulate running processes of an app on Heroku.
840
+ class Dyno
841
+ def initialize(client)
842
+ @client = client
843
+ end
844
+
845
+ # Create a new dyno.
846
+ #
847
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
848
+ # @param body: the object to pass as the request payload
849
+ def create(app_id_or_app_name, body)
850
+ @client.dyno.create(app_id_or_app_name, body)
851
+ end
852
+
853
+ # Restart dyno.
854
+ #
855
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
856
+ # @param dyno_id_or_dyno_name: unique identifier of this dyno or the name of this process on this dyno
857
+ def restart(app_id_or_app_name, dyno_id_or_dyno_name)
858
+ @client.dyno.restart(app_id_or_app_name, dyno_id_or_dyno_name)
859
+ end
860
+
861
+ # Restart all dynos
862
+ #
863
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
864
+ def restart_all(app_id_or_app_name)
865
+ @client.dyno.restart_all(app_id_or_app_name)
866
+ end
867
+
868
+ # Info for existing dyno.
869
+ #
870
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
871
+ # @param dyno_id_or_dyno_name: unique identifier of this dyno or the name of this process on this dyno
872
+ def info(app_id_or_app_name, dyno_id_or_dyno_name)
873
+ @client.dyno.info(app_id_or_app_name, dyno_id_or_dyno_name)
874
+ end
875
+
876
+ # List existing dynos.
877
+ #
878
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
879
+ def list(app_id_or_app_name)
880
+ @client.dyno.list(app_id_or_app_name)
881
+ end
882
+ end
883
+
884
+ # 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.
885
+ class Formation
886
+ def initialize(client)
887
+ @client = client
888
+ end
889
+
890
+ # Info for a process type
891
+ #
892
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
893
+ # @param formation_id_or_formation_type: unique identifier of this process type or type of process to maintain
894
+ def info(app_id_or_app_name, formation_id_or_formation_type)
895
+ @client.formation.info(app_id_or_app_name, formation_id_or_formation_type)
896
+ end
897
+
898
+ # List process type formation
899
+ #
900
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
901
+ def list(app_id_or_app_name)
902
+ @client.formation.list(app_id_or_app_name)
903
+ end
904
+
905
+ # Batch update process types
906
+ #
907
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
908
+ # @param body: the object to pass as the request payload
909
+ def batch_update(app_id_or_app_name, body)
910
+ @client.formation.batch_update(app_id_or_app_name, body)
911
+ end
912
+
913
+ # Update process type
914
+ #
915
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
916
+ # @param formation_id_or_formation_type: unique identifier of this process type or type of process to maintain
917
+ # @param body: the object to pass as the request payload
918
+ def update(app_id_or_app_name, formation_id_or_formation_type, body)
919
+ @client.formation.update(app_id_or_app_name, formation_id_or_formation_type, body)
920
+ end
921
+ end
922
+
923
+ # An invoice is an itemized bill of goods for an account which includes pricing and charges.
924
+ class Invoice
925
+ def initialize(client)
926
+ @client = client
927
+ end
928
+
929
+ # Info for existing invoice.
930
+ #
931
+ # @param invoice_number: human readable invoice number
932
+ def info(invoice_number)
933
+ @client.invoice.info(invoice_number)
934
+ end
935
+
936
+ # List existing invoices.
937
+ def list()
938
+ @client.invoice.list()
939
+ end
940
+ end
941
+
942
+ # Keys represent public SSH keys associated with an account and are used to authorize accounts as they are performing git operations.
943
+ class Key
944
+ def initialize(client)
945
+ @client = client
946
+ end
947
+
948
+ # Create a new key.
949
+ #
950
+ # @param body: the object to pass as the request payload
951
+ def create(body)
952
+ @client.key.create(body)
953
+ end
954
+
955
+ # Delete an existing key
956
+ #
957
+ # @param key_id_or_key_fingerprint: unique identifier of this key or a unique identifying string based on contents
958
+ def delete(key_id_or_key_fingerprint)
959
+ @client.key.delete(key_id_or_key_fingerprint)
960
+ end
961
+
962
+ # Info for existing key.
963
+ #
964
+ # @param key_id_or_key_fingerprint: unique identifier of this key or a unique identifying string based on contents
965
+ def info(key_id_or_key_fingerprint)
966
+ @client.key.info(key_id_or_key_fingerprint)
967
+ end
968
+
969
+ # List existing keys.
970
+ def list()
971
+ @client.key.list()
972
+ end
973
+ end
974
+
975
+ # [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.
976
+ class LogDrain
977
+ def initialize(client)
978
+ @client = client
979
+ end
980
+
981
+ # Create a new log drain.
982
+ #
983
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
984
+ # @param body: the object to pass as the request payload
985
+ def create(app_id_or_app_name, body)
986
+ @client.log_drain.create(app_id_or_app_name, body)
987
+ end
988
+
989
+ # Delete an existing log drain. Log drains added by add-ons can only be removed by removing the add-on.
990
+ #
991
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
992
+ # @param log_drain_id_or_log_drain_url: unique identifier of this log drain or url associated with the log drain
993
+ def delete(app_id_or_app_name, log_drain_id_or_log_drain_url)
994
+ @client.log_drain.delete(app_id_or_app_name, log_drain_id_or_log_drain_url)
995
+ end
996
+
997
+ # Info for existing log drain.
998
+ #
999
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1000
+ # @param log_drain_id_or_log_drain_url: unique identifier of this log drain or url associated with the log drain
1001
+ def info(app_id_or_app_name, log_drain_id_or_log_drain_url)
1002
+ @client.log_drain.info(app_id_or_app_name, log_drain_id_or_log_drain_url)
1003
+ end
1004
+
1005
+ # List existing log drains.
1006
+ #
1007
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1008
+ def list(app_id_or_app_name)
1009
+ @client.log_drain.list(app_id_or_app_name)
1010
+ end
1011
+ end
1012
+
1013
+ # A log session is a reference to the http based log stream for an app.
1014
+ class LogSession
1015
+ def initialize(client)
1016
+ @client = client
1017
+ end
1018
+
1019
+ # Create a new log session.
1020
+ #
1021
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1022
+ # @param body: the object to pass as the request payload
1023
+ def create(app_id_or_app_name, body)
1024
+ @client.log_session.create(app_id_or_app_name, body)
1025
+ end
1026
+ end
1027
+
1028
+ # 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)
1029
+ class OauthAuthorization
1030
+ def initialize(client)
1031
+ @client = client
1032
+ end
1033
+
1034
+ # Create a new OAuth authorization.
1035
+ #
1036
+ # @param body: the object to pass as the request payload
1037
+ def create(body)
1038
+ @client.oauth_authorization.create(body)
1039
+ end
1040
+
1041
+ # Delete OAuth authorization.
1042
+ #
1043
+ # @param oauth_authorization_id: unique identifier of OAuth authorization
1044
+ def delete(oauth_authorization_id)
1045
+ @client.oauth_authorization.delete(oauth_authorization_id)
1046
+ end
1047
+
1048
+ # Info for an OAuth authorization.
1049
+ #
1050
+ # @param oauth_authorization_id: unique identifier of OAuth authorization
1051
+ def info(oauth_authorization_id)
1052
+ @client.oauth_authorization.info(oauth_authorization_id)
1053
+ end
1054
+
1055
+ # List OAuth authorizations.
1056
+ def list()
1057
+ @client.oauth_authorization.list()
1058
+ end
1059
+
1060
+ # Regenerate OAuth tokens. This endpoint is only available to direct authorizations or privileged OAuth clients.
1061
+ #
1062
+ # @param oauth_authorization_id: unique identifier of OAuth authorization
1063
+ def regenerate(oauth_authorization_id)
1064
+ @client.oauth_authorization.regenerate(oauth_authorization_id)
1065
+ end
1066
+ end
1067
+
1068
+ # 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).
1069
+ class OauthClient
1070
+ def initialize(client)
1071
+ @client = client
1072
+ end
1073
+
1074
+ # Create a new OAuth client.
1075
+ #
1076
+ # @param body: the object to pass as the request payload
1077
+ def create(body)
1078
+ @client.oauth_client.create(body)
1079
+ end
1080
+
1081
+ # Delete OAuth client.
1082
+ #
1083
+ # @param oauth_client_id: unique identifier of this OAuth client
1084
+ def delete(oauth_client_id)
1085
+ @client.oauth_client.delete(oauth_client_id)
1086
+ end
1087
+
1088
+ # Info for an OAuth client
1089
+ #
1090
+ # @param oauth_client_id: unique identifier of this OAuth client
1091
+ def info(oauth_client_id)
1092
+ @client.oauth_client.info(oauth_client_id)
1093
+ end
1094
+
1095
+ # List OAuth clients
1096
+ def list()
1097
+ @client.oauth_client.list()
1098
+ end
1099
+
1100
+ # Update OAuth client
1101
+ #
1102
+ # @param oauth_client_id: unique identifier of this OAuth client
1103
+ # @param body: the object to pass as the request payload
1104
+ def update(oauth_client_id, body)
1105
+ @client.oauth_client.update(oauth_client_id, body)
1106
+ end
1107
+ end
1108
+
1109
+ # 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)
1110
+ class OauthGrant
1111
+ def initialize(client)
1112
+ @client = client
1113
+ end
1114
+ end
1115
+
1116
+ # 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)
1117
+ class OauthToken
1118
+ def initialize(client)
1119
+ @client = client
1120
+ end
1121
+
1122
+ # Create a new OAuth token.
1123
+ #
1124
+ # @param body: the object to pass as the request payload
1125
+ def create(body)
1126
+ @client.oauth_token.create(body)
1127
+ end
1128
+ end
1129
+
1130
+ # An organization collaborator represents an account that has been given access to an organization app on Heroku.
1131
+ class OrganizationAppCollaborator
1132
+ def initialize(client)
1133
+ @client = client
1134
+ end
1135
+
1136
+ # 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) according to their role in the organization.
1137
+ #
1138
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1139
+ # @param body: the object to pass as the request payload
1140
+ def create(app_id_or_app_name, body)
1141
+ @client.organization_app_collaborator.create(app_id_or_app_name, body)
1142
+ end
1143
+
1144
+ # Delete an existing collaborator from an organization app.
1145
+ #
1146
+ # @param app_name: unique name of app
1147
+ # @param collaborator_email: invited email address of collaborator
1148
+ def delete(app_name, collaborator_email)
1149
+ @client.organization_app_collaborator.delete(app_name, collaborator_email)
1150
+ end
1151
+
1152
+ # Info for a collaborator on an organization app.
1153
+ #
1154
+ # @param app_name: unique name of app
1155
+ # @param collaborator_email: invited email address of collaborator
1156
+ def info(app_name, collaborator_email)
1157
+ @client.organization_app_collaborator.info(app_name, collaborator_email)
1158
+ end
1159
+
1160
+ # List collaborators on an organization app.
1161
+ #
1162
+ # @param app_name: unique name of app
1163
+ def list(app_name)
1164
+ @client.organization_app_collaborator.list(app_name)
1165
+ end
1166
+ end
1167
+
1168
+ # An organization app encapsulates the organization specific functionality of Heroku apps.
1169
+ class OrganizationApp
1170
+ def initialize(client)
1171
+ @client = client
1172
+ end
1173
+
1174
+ # Create a new app in the specified organization, in the default organization if unspecified, or in personal account, if default organization is not set.
1175
+ #
1176
+ # @param body: the object to pass as the request payload
1177
+ def create(body)
1178
+ @client.organization_app.create(body)
1179
+ end
1180
+
1181
+ # List apps in the default organization, or in personal account, if default organization is not set.
1182
+ def list()
1183
+ @client.organization_app.list()
1184
+ end
1185
+
1186
+ # List organization apps.
1187
+ #
1188
+ # @param organization_name: unique name of organization
1189
+ def list_for_organization(organization_name)
1190
+ @client.organization_app.list_for_organization(organization_name)
1191
+ end
1192
+
1193
+ # Info for an organization app.
1194
+ #
1195
+ # @param app_name: unique name of app
1196
+ def info(app_name)
1197
+ @client.organization_app.info(app_name)
1198
+ end
1199
+
1200
+ # Lock or unlock an organization app.
1201
+ #
1202
+ # @param app_name: unique name of app
1203
+ # @param body: the object to pass as the request payload
1204
+ def update_locked(app_name, body)
1205
+ @client.organization_app.update_locked(app_name, body)
1206
+ end
1207
+
1208
+ # Transfer an existing organization app to another Heroku account.
1209
+ #
1210
+ # @param app_name: unique name of app
1211
+ # @param body: the object to pass as the request payload
1212
+ def transfer_to_account(app_name, body)
1213
+ @client.organization_app.transfer_to_account(app_name, body)
1214
+ end
1215
+
1216
+ # Transfer an existing organization app to another organization.
1217
+ #
1218
+ # @param app_name: unique name of app
1219
+ # @param body: the object to pass as the request payload
1220
+ def transfer_to_organization(app_name, body)
1221
+ @client.organization_app.transfer_to_organization(app_name, body)
1222
+ end
1223
+ end
1224
+
1225
+ # An organization member is an individual with access to an organization.
1226
+ class OrganizationMember
1227
+ def initialize(client)
1228
+ @client = client
1229
+ end
1230
+
1231
+ # Create a new organization member, or update their role.
1232
+ #
1233
+ # @param organization_name: unique name of organization
1234
+ # @param body: the object to pass as the request payload
1235
+ def create_or_update(organization_name, body)
1236
+ @client.organization_member.create_or_update(organization_name, body)
1237
+ end
1238
+
1239
+ # Remove a member from the organization.
1240
+ #
1241
+ # @param organization_name: unique name of organization
1242
+ # @param organization_member_email: email address of the organization member
1243
+ def delete(organization_name, organization_member_email)
1244
+ @client.organization_member.delete(organization_name, organization_member_email)
1245
+ end
1246
+
1247
+ # List members of the organization.
1248
+ #
1249
+ # @param organization_name: unique name of organization
1250
+ def list(organization_name)
1251
+ @client.organization_member.list(organization_name)
1252
+ end
1253
+ end
1254
+
1255
+ # Organizations allow you to manage access to a shared group of applications across your development team.
1256
+ class Organization
1257
+ def initialize(client)
1258
+ @client = client
1259
+ end
1260
+
1261
+ # List organizations in which you are a member.
1262
+ def list()
1263
+ @client.organization.list()
1264
+ end
1265
+
1266
+ # Info for an organization.
1267
+ #
1268
+ # @param organization_name: unique name of organization
1269
+ def info(organization_name)
1270
+ @client.organization.info(organization_name)
1271
+ end
1272
+
1273
+ # Set or unset the organization as your default organization.
1274
+ #
1275
+ # @param organization_name: unique name of organization
1276
+ # @param body: the object to pass as the request payload
1277
+ def update(organization_name, body)
1278
+ @client.organization.update(organization_name, body)
1279
+ end
1280
+ end
1281
+
1282
+ # This renders a secret that clients can use to build a one-time password to be supplied as a 2nd factor of authentication.
1283
+ class OtpSecret
1284
+ def initialize(client)
1285
+ @client = client
1286
+ end
1287
+
1288
+ # Create new OTP secret. This invalidates any existing OTP secrets on the account.
1289
+ def create()
1290
+ @client.otp_secret.create()
1291
+ end
1292
+ end
1293
+
1294
+ # A payment represents money collected for an account
1295
+ class Payment
1296
+ def initialize(client)
1297
+ @client = client
1298
+ end
1299
+
1300
+ # Create a payment on an existing account
1301
+ #
1302
+ # @param body: the object to pass as the request payload
1303
+ def create(body)
1304
+ @client.payment.create(body)
1305
+ end
1306
+ end
1307
+
1308
+ # The on file payment method for an account
1309
+ class PaymentMethod
1310
+ def initialize(client)
1311
+ @client = client
1312
+ end
1313
+
1314
+ # Update an existing payment method for an account.
1315
+ #
1316
+ # @param body: the object to pass as the request payload
1317
+ def update(body)
1318
+ @client.payment_method.update(body)
1319
+ end
1320
+ end
1321
+
1322
+ # Plans represent different configurations of add-ons that may be added to apps. Endpoints under add-on services can be accessed without authentication.
1323
+ class Plan
1324
+ def initialize(client)
1325
+ @client = client
1326
+ end
1327
+
1328
+ # Info for existing plan.
1329
+ #
1330
+ # @param addon_service_id_or_addon_service_name: unique identifier of this addon-service or unique name of this addon-service
1331
+ # @param plan_id_or_plan_name: unique identifier of this plan or unique name of this plan
1332
+ def info(addon_service_id_or_addon_service_name, plan_id_or_plan_name)
1333
+ @client.plan.info(addon_service_id_or_addon_service_name, plan_id_or_plan_name)
1334
+ end
1335
+
1336
+ # List existing plans.
1337
+ #
1338
+ # @param addon_service_id_or_addon_service_name: unique identifier of this addon-service or unique name of this addon-service
1339
+ def list(addon_service_id_or_addon_service_name)
1340
+ @client.plan.list(addon_service_id_or_addon_service_name)
1341
+ end
1342
+ end
1343
+
1344
+ # Rate Limit represents the number of request tokens each account holds. Requests to this endpoint do not count towards the rate limit.
1345
+ class RateLimit
1346
+ def initialize(client)
1347
+ @client = client
1348
+ end
1349
+
1350
+ # Info for rate limits.
1351
+ def info()
1352
+ @client.rate_limit.info()
1353
+ end
1354
+ end
1355
+
1356
+ # Recovery codes grant access to accounts with two-factor authentication enabled.
1357
+ class RecoveryCode
1358
+ def initialize(client)
1359
+ @client = client
1360
+ end
1361
+
1362
+ # Generate new recovery codes. This invalidates any existing codes on the account.
1363
+ def create()
1364
+ @client.recovery_code.create()
1365
+ end
1366
+ end
1367
+
1368
+ # A region represents a geographic location in which your application may run.
1369
+ class Region
1370
+ def initialize(client)
1371
+ @client = client
1372
+ end
1373
+
1374
+ # Info for existing region.
1375
+ #
1376
+ # @param region_id_or_region_name: unique identifier of region or unique name of region
1377
+ def info(region_id_or_region_name)
1378
+ @client.region.info(region_id_or_region_name)
1379
+ end
1380
+
1381
+ # List existing regions.
1382
+ def list()
1383
+ @client.region.list()
1384
+ end
1385
+ end
1386
+
1387
+ # A release represents a combination of code, config vars and add-ons for an app on Heroku.
1388
+ class Release
1389
+ def initialize(client)
1390
+ @client = client
1391
+ end
1392
+
1393
+ # Info for existing release.
1394
+ #
1395
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1396
+ # @param release_id_or_release_version: unique identifier of release or unique version assigned to the release
1397
+ def info(app_id_or_app_name, release_id_or_release_version)
1398
+ @client.release.info(app_id_or_app_name, release_id_or_release_version)
1399
+ end
1400
+
1401
+ # List existing releases.
1402
+ #
1403
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1404
+ def list(app_id_or_app_name)
1405
+ @client.release.list(app_id_or_app_name)
1406
+ end
1407
+
1408
+ # Create new release. The API cannot be used to create releases on Bamboo apps.
1409
+ #
1410
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1411
+ # @param body: the object to pass as the request payload
1412
+ def create(app_id_or_app_name, body)
1413
+ @client.release.create(app_id_or_app_name, body)
1414
+ end
1415
+
1416
+ # Rollback to an existing release.
1417
+ #
1418
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1419
+ # @param body: the object to pass as the request payload
1420
+ def rollback(app_id_or_app_name, body)
1421
+ @client.release.rollback(app_id_or_app_name, body)
1422
+ end
1423
+ end
1424
+
1425
+ # A slug is a snapshot of your application code that is ready to run on the platform.
1426
+ class Slug
1427
+ def initialize(client)
1428
+ @client = client
1429
+ end
1430
+
1431
+ # Info for existing slug.
1432
+ #
1433
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1434
+ # @param slug_id: unique identifier of slug
1435
+ def info(app_id_or_app_name, slug_id)
1436
+ @client.slug.info(app_id_or_app_name, slug_id)
1437
+ end
1438
+
1439
+ # 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?preview=1).
1440
+ #
1441
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1442
+ # @param body: the object to pass as the request payload
1443
+ def create(app_id_or_app_name, body)
1444
+ @client.slug.create(app_id_or_app_name, body)
1445
+ end
1446
+ end
1447
+
1448
+ # A source is a location for uploading and downloading an application's source code.
1449
+ class Source
1450
+ def initialize(client)
1451
+ @client = client
1452
+ end
1453
+
1454
+ # Create URLs for uploading and downloading source.
1455
+ #
1456
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1457
+ # @param body: the object to pass as the request payload
1458
+ def create(app_id_or_app_name, body)
1459
+ @client.source.create(app_id_or_app_name, body)
1460
+ end
1461
+ end
1462
+
1463
+ # [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.
1464
+ class SSLEndpoint
1465
+ def initialize(client)
1466
+ @client = client
1467
+ end
1468
+
1469
+ # Create a new SSL endpoint.
1470
+ #
1471
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1472
+ # @param body: the object to pass as the request payload
1473
+ def create(app_id_or_app_name, body)
1474
+ @client.ssl_endpoint.create(app_id_or_app_name, body)
1475
+ end
1476
+
1477
+ # Delete existing SSL endpoint.
1478
+ #
1479
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1480
+ # @param ssl_endpoint_id_or_ssl_endpoint_name: unique identifier of this SSL endpoint or unique name for SSL endpoint
1481
+ def delete(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name)
1482
+ @client.ssl_endpoint.delete(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name)
1483
+ end
1484
+
1485
+ # Info for existing SSL endpoint.
1486
+ #
1487
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1488
+ # @param ssl_endpoint_id_or_ssl_endpoint_name: unique identifier of this SSL endpoint or unique name for SSL endpoint
1489
+ def info(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name)
1490
+ @client.ssl_endpoint.info(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name)
1491
+ end
1492
+
1493
+ # List existing SSL endpoints.
1494
+ #
1495
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1496
+ def list(app_id_or_app_name)
1497
+ @client.ssl_endpoint.list(app_id_or_app_name)
1498
+ end
1499
+
1500
+ # Update an existing SSL endpoint.
1501
+ #
1502
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1503
+ # @param ssl_endpoint_id_or_ssl_endpoint_name: unique identifier of this SSL endpoint or unique name for SSL endpoint
1504
+ # @param body: the object to pass as the request payload
1505
+ def update(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name, body)
1506
+ @client.ssl_endpoint.update(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name, body)
1507
+ end
1508
+ end
1509
+
1510
+ # Stacks are the different application execution environments available in the Heroku platform.
1511
+ class Stack
1512
+ def initialize(client)
1513
+ @client = client
1514
+ end
1515
+
1516
+ # Stack info.
1517
+ #
1518
+ # @param stack_name_or_stack_id: unique name of stack or unique identifier of stack
1519
+ def info(stack_name_or_stack_id)
1520
+ @client.stack.info(stack_name_or_stack_id)
1521
+ end
1522
+
1523
+ # List available stacks.
1524
+ def list()
1525
+ @client.stack.list()
1526
+ end
1527
+ end
1528
+
1529
+ SCHEMA = Heroics::Schema.new(MultiJson.load(<<-'HEROICS_SCHEMA'))
1530
+ {"$schema":"http://interagent.github.io/interagent-hyper-schema","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"}]},"last_login":{"description":"when account last authorized with Heroku","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"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"]},"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"}],"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"},"two_factor_authentication":{"$ref":"#/definitions/account/definitions/two_factor_authentication"},"updated_at":{"$ref":"#/definitions/account/definitions/updated_at"},"verified":{"$ref":"#/definitions/account/definitions/verified"}}},"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":{"created_at":{"description":"when addon-service was created","example":"2012-01-01T12:00:00Z","format":"date-time","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"]},"human_name":{"description":"human-readable name of the addon service provider","example":"Heroku Postgres","readOnly":true,"type":["string"]},"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":{"created_at":{"$ref":"#/definitions/addon-service/definitions/created_at"},"id":{"$ref":"#/definitions/addon-service/definitions/id"},"name":{"$ref":"#/definitions/addon-service/definitions/name"},"human_name":{"$ref":"#/definitions/addon-service/definitions/human_name"},"updated_at":{"$ref":"#/definitions/addon-service/definitions/updated_at"}}},"addon":{"description":"Add-ons represent add-ons that have been provisioned for an app.","$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 associated with this application","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":"name of the add-on unique within its app","example":"heroku-postgresql-teal","pattern":"^[a-zA-Z][A-Za-z0-9_-]+$","readOnly":true,"type":["string"]},"provider_id":{"description":"id of this add-on with its provider","example":"app123@heroku.com","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"]}},"links":[{"description":"Create a new add-on.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons","method":"POST","rel":"create","schema":{"properties":{"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 existing add-ons.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/addon"},"type":["array"]},"title":"List"},{"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"}}},"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":"succeeded","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":["object"],"properties":{"id":{"$ref":"#/definitions/build/definitions/id"},"status":{"$ref":"#/definitions/build/definitions/status"}}},"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"}]},"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"}},"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-]{3,30}$","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":"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"},"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","description":"A build result contains the output from a build.","title":"Heroku Build API - Build Result","stability":"production","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"}},"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.","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":{"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"}]},"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":{"created_at":{"$ref":"#/definitions/build/definitions/created_at"},"id":{"$ref":"#/definitions/build/definitions/id"},"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":"An buildpack installtion 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"]}},"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":"Info for 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"}},"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","strictProperties":true,"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":{"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"]}}},"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":{"$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"]},"hostname":{"description":"full hostname","example":"subdomain.example.com","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"}]},"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":{"created_at":{"$ref":"#/definitions/domain/definitions/created_at"},"hostname":{"$ref":"#/definitions/domain/definitions/hostname"},"id":{"$ref":"#/definitions/domain/definitions/id"},"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: \"1X\")","example":"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"]},"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"}}},"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: \"1X\")","example":"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 \"process\", the id or name of the process type to be updated, and can optionally update its \"quantity\" or \"size\".","example":[{"process":"web","quantity":1,"size":"2X"}]}},"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":{"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"}}},"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"]},"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"},"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":{"items":{"$ref":"#/definitions/key"},"type":["array"]},"title":"Info"},{"description":"List existing keys.","href":"/account/keys","method":"GET","rel":"instances","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":"example","properties":{"id":{"$ref":"#/definitions/addon/definitions/id"}},"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"}],"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-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","strictProperties":true,"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) 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/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/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/collaborator"},"title":"Info"},{"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/collaborator"},"type":["array"]},"title":"List"}],"properties":{"created_at":{"$ref":"#/definitions/collaborator/definitions/created_at"},"id":{"$ref":"#/definitions/collaborator/definitions/id"},"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"},"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"},"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-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"}]},"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"}}},"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"]},"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","member","collaborator"],"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":{"$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"}}},"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","example":50000,"format":"$500.00 in cents - which would be 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"}}},"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"}},"links":[{"description":"Update an existing payment method for an account.","href":"/account/payment-method","method":"PUT","rel":"empty","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"}],"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"}}},"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":{"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"}]},"name":{"description":"unique name of region","example":"us","readOnly":true,"type":["string"]},"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":{"created_at":{"$ref":"#/definitions/region/definitions/created_at"},"description":{"$ref":"#/definitions/region/definitions/description"},"id":{"$ref":"#/definitions/region/definitions/id"},"name":{"$ref":"#/definitions/region/definitions/name"},"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. The API cannot be used to create releases on Bamboo apps.","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":{"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"]},"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?preview=1).","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/slugs","method":"POST","rel":"create","schema":{"properties":{"buildpack_provided_description":{"$ref":"#/definitions/slug/definitions/buildpack_provided_description"},"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"},"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"}}},"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":"prototype","strictProperties":true,"title":"Heroku Platform API - Source","type":["object"],"definitions":{"get_url":{"description":"URL to download the source","example":"https://api.heroku.com/slugs/1234.tgz","readOnly":true,"type":["string"]},"put_url":{"description":"URL to upload the source","example":"https://api.heroku.com/slugs/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","schema":{"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"]}},"type":["object"]},"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"]}}},"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-]{3,30}$","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","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"}}}},"properties":{"account-feature":{"$ref":"#/definitions/account-feature"},"account":{"$ref":"#/definitions/account"},"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"},"formation":{"$ref":"#/definitions/formation"},"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-app-collaborator":{"$ref":"#/definitions/organization-app-collaborator"},"organization-app":{"$ref":"#/definitions/organization-app"},"organization-member":{"$ref":"#/definitions/organization-member"},"organization":{"$ref":"#/definitions/organization"},"otp-secret":{"$ref":"#/definitions/otp-secret"},"payment":{"$ref":"#/definitions/payment"},"payment_method":{"$ref":"#/definitions/payment_method"},"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"},"source":{"$ref":"#/definitions/source"},"ssl-endpoint":{"$ref":"#/definitions/ssl-endpoint"},"stack":{"$ref":"#/definitions/stack"}},"type":["object"],"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"}
1531
+ HEROICS_SCHEMA
1532
+ end