platform-api 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cd56c8fca641c79977ca4a3809b9f13480055b6c
4
- data.tar.gz: 9173e001ea62a240b67170d633374f771cd8c0a9
3
+ metadata.gz: 3bc8467de3b27981b877bbe92302829c975b8afb
4
+ data.tar.gz: 6cf2d12bedbc8eeb7d01069933d227a783ab84f9
5
5
  SHA512:
6
- metadata.gz: c503906da1832d534cf247a79c7ba6d524ed8f3e79d57a151e0af587e0a1643ecca230308c83a8ee1c5c293256fa34fd82c2d1504f246789c611454219ba85d3
7
- data.tar.gz: c7cbf30f3547a77d448b71c0666b06a38d4a50739257a9870e3386fbcd1e821f8a2aecd1ee87ab7b94dad3ae7c1aa3281fc15ccbfc3580804cacd1166f7a4aaa
6
+ metadata.gz: 1d865ed05723f7a36ea40ab87c1cb3bfaecff0430744f4deb85ef968f42ee4f6cc5c1cfe11f04902cff2f5faf12bd5f1a4ade7fe1172b0893f53667e23c670d4
7
+ data.tar.gz: eb7481ad322f61c0cd0cbe6afa7fc675ac248acf8d655a55924c37c862f71bdf3f9cd7f4e4ea7f09c3e5a76dede1e2a8efebd1438252862052b5913e2b6259e3
data/Gemfile.lock CHANGED
@@ -1,23 +1,23 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- platform-api (0.2.0)
4
+ platform-api (0.3.0)
5
5
  heroics (~> 0.0.10)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  erubis (2.7.0)
11
- excon (0.33.0)
12
- heroics (0.0.10)
11
+ excon (0.45.3)
12
+ heroics (0.0.12)
13
13
  erubis (~> 2.7.0)
14
14
  excon
15
15
  moneta
16
16
  multi_json (>= 1.9.2)
17
17
  netrc
18
- moneta (0.7.20)
19
- multi_json (1.10.1)
20
- netrc (0.7.7)
18
+ moneta (0.8.0)
19
+ multi_json (1.11.0)
20
+ netrc (0.10.3)
21
21
  rake (10.2.2)
22
22
  yard (0.8.7.2)
23
23
 
data/README.md CHANGED
@@ -81,7 +81,7 @@ require 'platform-api'
81
81
  heroku = PlatformAPI.connect_oauth('e7dd6ad7-3c6a-411e-a2be-c9fe52ac7ed2')
82
82
  ```
83
83
 
84
- The [OAuth article]()https://devcenter.heroku.com/articles/oauth has more information about OAuth tokens, including how to
84
+ The [OAuth article](https://devcenter.heroku.com/articles/oauth) has more information about OAuth tokens, including how to
85
85
  create tokens with specific scopes.
86
86
 
87
87
  Now let's create an app:
@@ -3,9 +3,10 @@
3
3
  #
4
4
  # WARNING: Do not edit by hand, this file was generated by Heroics:
5
5
  #
6
- # https://github.com/heroku/heroics
6
+ # https://github.com/interagent/heroics
7
7
  #
8
8
 
9
+ require 'heroics'
9
10
  require 'uri'
10
11
 
11
12
  module PlatformAPI
@@ -14,13 +15,13 @@ module PlatformAPI
14
15
  # @param api_key [String] The API key to use when connecting.
15
16
  # @param options [Hash<Symbol,String>] Optionally, custom settings
16
17
  # to use with the client. Allowed options are `default_headers`,
17
- # `cache` and `url`.
18
+ # `cache`, `user` and `url`.
18
19
  # @return [Client] A client configured to use the API with HTTP Basic
19
20
  # authentication.
20
21
  def self.connect(api_key, options=nil)
21
22
  options = custom_options(options)
22
23
  uri = URI.parse(options[:url])
23
- uri.user = 'user'
24
+ uri.user = options.fetch(:user, 'user').gsub('@', '%40')
24
25
  uri.password = api_key
25
26
  client = Heroics.client_from_schema(SCHEMA, uri.to_s, options)
26
27
  Client.new(client)
@@ -66,6 +67,7 @@ module PlatformAPI
66
67
  end
67
68
  final_options[:cache] = options[:cache] if options[:cache]
68
69
  final_options[:url] = options[:url] if options[:url]
70
+ final_options[:user] = options[:user] if options[:user]
69
71
  final_options
70
72
  end
71
73
 
@@ -88,21 +90,14 @@ module PlatformAPI
88
90
  @client = client
89
91
  end
90
92
 
91
- # An account feature represents a Heroku labs capability that can be enabled or disabled for an account on Heroku.
92
- #
93
- # @return [AccountFeature]
94
- def account_feature
95
- @account_feature_resource ||= AccountFeature.new(@client)
96
- end
97
-
98
- # An account represents an individual signed up to use the Heroku platform.
93
+ # An add-on attachment represents a connection between an app and an add-on that it has been given access to.
99
94
  #
100
- # @return [Account]
101
- def account
102
- @account_resource ||= Account.new(@client)
95
+ # @return [AddonAttachment]
96
+ def addon_attachment
97
+ @addon_attachment_resource ||= AddonAttachment.new(@client)
103
98
  end
104
99
 
105
- # Add-on services represent add-ons that may be provisioned for apps.
100
+ # Add-on services represent add-ons that may be provisioned for apps. Endpoints under add-on services can be accessed without authentication.
106
101
  #
107
102
  # @return [AddonService]
108
103
  def addon_service
@@ -158,6 +153,13 @@ module PlatformAPI
158
153
  @build_resource ||= Build.new(@client)
159
154
  end
160
155
 
156
+ # An buildpack installtion represents a buildpack that will be run against an app.
157
+ #
158
+ # @return [BuildpackInstallation]
159
+ def buildpack_installation
160
+ @buildpack_installation_resource ||= BuildpackInstallation.new(@client)
161
+ end
162
+
161
163
  # A collaborator represents an account that has been given access to an app on Heroku.
162
164
  #
163
165
  # @return [Collaborator]
@@ -172,6 +174,13 @@ module PlatformAPI
172
174
  @config_var_resource ||= ConfigVar.new(@client)
173
175
  end
174
176
 
177
+ # A credit represents value that will be used up before further charges are assigned to an account.
178
+ #
179
+ # @return [Credit]
180
+ def credit
181
+ @credit_resource ||= Credit.new(@client)
182
+ end
183
+
175
184
  # Domains define what web routes should be routed to an app on Heroku.
176
185
  #
177
186
  # @return [Domain]
@@ -186,6 +195,13 @@ module PlatformAPI
186
195
  @dyno_resource ||= Dyno.new(@client)
187
196
  end
188
197
 
198
+ # An event represents an action performed on another API resource.
199
+ #
200
+ # @return [Event]
201
+ def event
202
+ @event_resource ||= Event.new(@client)
203
+ end
204
+
189
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.
190
206
  #
191
207
  # @return [Formation]
@@ -193,6 +209,20 @@ module PlatformAPI
193
209
  @formation_resource ||= Formation.new(@client)
194
210
  end
195
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
+ # An invoice address represents the address that should be listed on an invoice.
220
+ #
221
+ # @return [InvoiceAddress]
222
+ def invoice_address
223
+ @invoice_address_resource ||= InvoiceAddress.new(@client)
224
+ end
225
+
196
226
  # Keys represent public SSH keys associated with an account and are used to authorize accounts as they are performing git operations.
197
227
  #
198
228
  # @return [Key]
@@ -200,7 +230,7 @@ module PlatformAPI
200
230
  @key_resource ||= Key.new(@client)
201
231
  end
202
232
 
203
- # [Log drains](https://devcenter.heroku.com/articles/logging#syslog-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.
233
+ # [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.
204
234
  #
205
235
  # @return [LogDrain]
206
236
  def log_drain
@@ -256,6 +286,13 @@ module PlatformAPI
256
286
  @organization_app_resource ||= OrganizationApp.new(@client)
257
287
  end
258
288
 
289
+ # An organization invoice is an itemized bill of goods for an organization which includes pricing and charges.
290
+ #
291
+ # @return [OrganizationInvoice]
292
+ def organization_invoice
293
+ @organization_invoice_resource ||= OrganizationInvoice.new(@client)
294
+ end
295
+
259
296
  # An organization member is an individual with access to an organization.
260
297
  #
261
298
  # @return [OrganizationMember]
@@ -270,7 +307,28 @@ module PlatformAPI
270
307
  @organization_resource ||= Organization.new(@client)
271
308
  end
272
309
 
273
- # Plans represent different configurations of add-ons that may be added to apps.
310
+ # This renders a secret that clients can use to build a one-time password to be supplied as a 2nd factor of authentication.
311
+ #
312
+ # @return [OtpSecret]
313
+ def otp_secret
314
+ @otp_secret_resource ||= OtpSecret.new(@client)
315
+ end
316
+
317
+ # A payment represents money collected for an account
318
+ #
319
+ # @return [Payment]
320
+ def payment
321
+ @payment_resource ||= Payment.new(@client)
322
+ end
323
+
324
+ # The on file payment method for an account
325
+ #
326
+ # @return [PaymentMethod]
327
+ def payment_method
328
+ @payment_method_resource ||= PaymentMethod.new(@client)
329
+ end
330
+
331
+ # Plans represent different configurations of add-ons that may be added to apps. Endpoints under add-on services can be accessed without authentication.
274
332
  #
275
333
  # @return [Plan]
276
334
  def plan
@@ -284,6 +342,13 @@ module PlatformAPI
284
342
  @rate_limit_resource ||= RateLimit.new(@client)
285
343
  end
286
344
 
345
+ # Recovery codes grant access to accounts with two-factor authentication enabled.
346
+ #
347
+ # @return [RecoveryCode]
348
+ def recovery_code
349
+ @recovery_code_resource ||= RecoveryCode.new(@client)
350
+ end
351
+
287
352
  # A region represents a geographic location in which your application may run.
288
353
  #
289
354
  # @return [Region]
@@ -305,6 +370,13 @@ module PlatformAPI
305
370
  @slug_resource ||= Slug.new(@client)
306
371
  end
307
372
 
373
+ # A source is a location for uploading and downloading an application's source code.
374
+ #
375
+ # @return [Source]
376
+ def source
377
+ @source_resource ||= Source.new(@client)
378
+ end
379
+
308
380
  # [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.
309
381
  #
310
382
  # @return [SSLEndpoint]
@@ -318,71 +390,87 @@ module PlatformAPI
318
390
  def stack
319
391
  @stack_resource ||= Stack.new(@client)
320
392
  end
393
+
394
+ # An account feature represents a Heroku labs capability that can be enabled or disabled for an account on Heroku.
395
+ #
396
+ # @return [AccountFeature]
397
+ def account_feature
398
+ @account_feature_resource ||= AccountFeature.new(@client)
399
+ end
400
+
401
+ # Tracks a user's preferences and message dismissals
402
+ #
403
+ # @return [UserPreferences]
404
+ def user_preferences
405
+ @user_preferences_resource ||= UserPreferences.new(@client)
406
+ end
407
+
408
+ # An account represents an individual signed up to use the Heroku platform.
409
+ #
410
+ # @return [Account]
411
+ def account
412
+ @account_resource ||= Account.new(@client)
413
+ end
321
414
  end
322
415
 
323
416
  private
324
417
 
325
- # An account feature represents a Heroku labs capability that can be enabled or disabled for an account on Heroku.
326
- class AccountFeature
418
+ # An add-on attachment represents a connection between an app and an add-on that it has been given access to.
419
+ class AddonAttachment
327
420
  def initialize(client)
328
421
  @client = client
329
422
  end
330
423
 
331
- # Info for an existing account feature.
424
+ # Create a new add-on attachment.
332
425
  #
333
- # @param account_feature_id_or_account_feature_name: unique identifier of account feature or unique name of account feature
334
- def info(account_feature_id_or_account_feature_name)
335
- @client.account_feature.info(account_feature_id_or_account_feature_name)
336
- end
337
-
338
- # List existing account features.
339
- def list()
340
- @client.account_feature.list()
426
+ # @param body: the object to pass as the request payload
427
+ def create(body)
428
+ @client.addon_attachment.create(body)
341
429
  end
342
430
 
343
- # Update an existing account feature.
431
+ # Delete an existing add-on attachment.
344
432
  #
345
- # @param account_feature_id_or_account_feature_name: unique identifier of account feature or unique name of account feature
346
- # @param body: the object to pass as the request payload
347
- def update(account_feature_id_or_account_feature_name, body)
348
- @client.account_feature.update(account_feature_id_or_account_feature_name, body)
433
+ # @param addon_attachment_id: unique identifier of this add-on attachment
434
+ def delete(addon_attachment_id)
435
+ @client.addon_attachment.delete(addon_attachment_id)
349
436
  end
350
- end
351
437
 
352
- # An account represents an individual signed up to use the Heroku platform.
353
- class Account
354
- def initialize(client)
355
- @client = client
438
+ # Info for existing add-on attachment.
439
+ #
440
+ # @param addon_attachment_id: unique identifier of this add-on attachment
441
+ def info(addon_attachment_id)
442
+ @client.addon_attachment.info(addon_attachment_id)
356
443
  end
357
444
 
358
- # Info for account.
359
- def info()
360
- @client.account.info()
445
+ # List existing add-on attachments.
446
+ def list()
447
+ @client.addon_attachment.list()
361
448
  end
362
449
 
363
- # Update account.
450
+ # List existing add-on attachments for an add-on.
364
451
  #
365
- # @param body: the object to pass as the request payload
366
- def update(body)
367
- @client.account.update(body)
452
+ # @param addon_id_or_addon_name: unique identifier of add-on or globally unique name of the add-on
453
+ def list_by_add_on(addon_id_or_addon_name)
454
+ @client.addon_attachment.list_by_add_on(addon_id_or_addon_name)
368
455
  end
369
456
 
370
- # Change Email for account.
457
+ # List existing add-on attachments for an app.
371
458
  #
372
- # @param body: the object to pass as the request payload
373
- def change_email(body)
374
- @client.account.change_email(body)
459
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
460
+ def list_by_app(app_id_or_app_name)
461
+ @client.addon_attachment.list_by_app(app_id_or_app_name)
375
462
  end
376
463
 
377
- # Change Password for account.
464
+ # Info for existing add-on attachment for an app.
378
465
  #
379
- # @param body: the object to pass as the request payload
380
- def change_password(body)
381
- @client.account.change_password(body)
466
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
467
+ # @param addon_attachment_id_or_addon_attachment_name: unique identifier of this add-on attachment or unique name for this add-on attachment to this app
468
+ def info_by_app(app_id_or_app_name, addon_attachment_id_or_addon_attachment_name)
469
+ @client.addon_attachment.info_by_app(app_id_or_app_name, addon_attachment_id_or_addon_attachment_name)
382
470
  end
383
471
  end
384
472
 
385
- # Add-on services represent add-ons that may be provisioned for apps.
473
+ # Add-on services represent add-ons that may be provisioned for apps. Endpoints under add-on services can be accessed without authentication.
386
474
  class AddonService
387
475
  def initialize(client)
388
476
  @client = client
@@ -418,30 +506,34 @@ module PlatformAPI
418
506
  # Delete an existing add-on.
419
507
  #
420
508
  # @param app_id_or_app_name: unique identifier of app or unique name of app
421
- # @param addon_id_or_addon_name: unique identifier of add-on or name of the add-on unique within its app
509
+ # @param addon_id_or_addon_name: unique identifier of add-on or globally unique name of the add-on
422
510
  def delete(app_id_or_app_name, addon_id_or_addon_name)
423
511
  @client.addon.delete(app_id_or_app_name, addon_id_or_addon_name)
424
512
  end
425
513
 
426
514
  # Info for an existing add-on.
427
515
  #
428
- # @param app_id_or_app_name: unique identifier of app or unique name of app
429
- # @param addon_id_or_addon_name: unique identifier of add-on or name of the add-on unique within its app
430
- def info(app_id_or_app_name, addon_id_or_addon_name)
431
- @client.addon.info(app_id_or_app_name, addon_id_or_addon_name)
516
+ # @param addon_id_or_addon_name: unique identifier of add-on or globally unique name of the add-on
517
+ def info(addon_id_or_addon_name)
518
+ @client.addon.info(addon_id_or_addon_name)
432
519
  end
433
520
 
434
- # List existing add-ons.
521
+ # List all existing add-ons.
522
+ def list()
523
+ @client.addon.list()
524
+ end
525
+
526
+ # List existing add-ons for an app.
435
527
  #
436
528
  # @param app_id_or_app_name: unique identifier of app or unique name of app
437
- def list(app_id_or_app_name)
438
- @client.addon.list(app_id_or_app_name)
529
+ def list_by_app(app_id_or_app_name)
530
+ @client.addon.list_by_app(app_id_or_app_name)
439
531
  end
440
532
 
441
533
  # Change add-on plan. Some add-ons may not support changing plans. In that case, an error will be returned.
442
534
  #
443
535
  # @param app_id_or_app_name: unique identifier of app or unique name of app
444
- # @param addon_id_or_addon_name: unique identifier of add-on or name of the add-on unique within its app
536
+ # @param addon_id_or_addon_name: unique identifier of add-on or globally unique name of the add-on
445
537
  # @param body: the object to pass as the request payload
446
538
  def update(app_id_or_app_name, addon_id_or_addon_name, body)
447
539
  @client.addon.update(app_id_or_app_name, addon_id_or_addon_name, body)
@@ -627,6 +719,28 @@ module PlatformAPI
627
719
  end
628
720
  end
629
721
 
722
+ # An buildpack installtion represents a buildpack that will be run against an app.
723
+ class BuildpackInstallation
724
+ def initialize(client)
725
+ @client = client
726
+ end
727
+
728
+ # Update an app's buildpack installations.
729
+ #
730
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
731
+ # @param body: the object to pass as the request payload
732
+ def update(app_id_or_app_name, body)
733
+ @client.buildpack_installation.update(app_id_or_app_name, body)
734
+ end
735
+
736
+ # List an app's existing buildpack installations.
737
+ #
738
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
739
+ def list(app_id_or_app_name)
740
+ @client.buildpack_installation.list(app_id_or_app_name)
741
+ end
742
+ end
743
+
630
744
  # A collaborator represents an account that has been given access to an app on Heroku.
631
745
  class Collaborator
632
746
  def initialize(client)
@@ -687,6 +801,32 @@ module PlatformAPI
687
801
  end
688
802
  end
689
803
 
804
+ # A credit represents value that will be used up before further charges are assigned to an account.
805
+ class Credit
806
+ def initialize(client)
807
+ @client = client
808
+ end
809
+
810
+ # Create a new credit.
811
+ #
812
+ # @param body: the object to pass as the request payload
813
+ def create(body)
814
+ @client.credit.create(body)
815
+ end
816
+
817
+ # Info for existing credit.
818
+ #
819
+ # @param credit_id: unique identifier of credit
820
+ def info(credit_id)
821
+ @client.credit.info(credit_id)
822
+ end
823
+
824
+ # List existing credits.
825
+ def list()
826
+ @client.credit.list()
827
+ end
828
+ end
829
+
690
830
  # Domains define what web routes should be routed to an app on Heroku.
691
831
  class Domain
692
832
  def initialize(client)
@@ -770,6 +910,13 @@ module PlatformAPI
770
910
  end
771
911
  end
772
912
 
913
+ # An event represents an action performed on another API resource.
914
+ class Event
915
+ def initialize(client)
916
+ @client = client
917
+ end
918
+ end
919
+
773
920
  # 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.
774
921
  class Formation
775
922
  def initialize(client)
@@ -809,6 +956,44 @@ module PlatformAPI
809
956
  end
810
957
  end
811
958
 
959
+ # An invoice is an itemized bill of goods for an account which includes pricing and charges.
960
+ class Invoice
961
+ def initialize(client)
962
+ @client = client
963
+ end
964
+
965
+ # Info for existing invoice.
966
+ #
967
+ # @param invoice_number: human readable invoice number
968
+ def info(invoice_number)
969
+ @client.invoice.info(invoice_number)
970
+ end
971
+
972
+ # List existing invoices.
973
+ def list()
974
+ @client.invoice.list()
975
+ end
976
+ end
977
+
978
+ # An invoice address represents the address that should be listed on an invoice.
979
+ class InvoiceAddress
980
+ def initialize(client)
981
+ @client = client
982
+ end
983
+
984
+ # Retrieve existing invoice address.
985
+ def info()
986
+ @client.invoice_address.info()
987
+ end
988
+
989
+ # Update invoice address for an account.
990
+ #
991
+ # @param body: the object to pass as the request payload
992
+ def update(body)
993
+ @client.invoice_address.update(body)
994
+ end
995
+ end
996
+
812
997
  # Keys represent public SSH keys associated with an account and are used to authorize accounts as they are performing git operations.
813
998
  class Key
814
999
  def initialize(client)
@@ -842,7 +1027,7 @@ module PlatformAPI
842
1027
  end
843
1028
  end
844
1029
 
845
- # [Log drains](https://devcenter.heroku.com/articles/logging#syslog-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.
1030
+ # [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.
846
1031
  class LogDrain
847
1032
  def initialize(client)
848
1033
  @client = client
@@ -926,6 +1111,13 @@ module PlatformAPI
926
1111
  def list()
927
1112
  @client.oauth_authorization.list()
928
1113
  end
1114
+
1115
+ # Regenerate OAuth tokens. This endpoint is only available to direct authorizations or privileged OAuth clients.
1116
+ #
1117
+ # @param oauth_authorization_id: unique identifier of OAuth authorization
1118
+ def regenerate(oauth_authorization_id)
1119
+ @client.oauth_authorization.regenerate(oauth_authorization_id)
1120
+ end
929
1121
  end
930
1122
 
931
1123
  # 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).
@@ -1006,25 +1198,25 @@ module PlatformAPI
1006
1198
 
1007
1199
  # Delete an existing collaborator from an organization app.
1008
1200
  #
1009
- # @param app_id_or_app_name: unique identifier of app or unique name of app
1010
- # @param collaborator_email_or_collaborator_id: invited email address of collaborator or unique identifier of collaborator
1011
- def delete(app_id_or_app_name, collaborator_email_or_collaborator_id)
1012
- @client.organization_app_collaborator.delete(app_id_or_app_name, collaborator_email_or_collaborator_id)
1201
+ # @param app_name: unique name of app
1202
+ # @param collaborator_email: invited email address of collaborator
1203
+ def delete(app_name, collaborator_email)
1204
+ @client.organization_app_collaborator.delete(app_name, collaborator_email)
1013
1205
  end
1014
1206
 
1015
1207
  # Info for a collaborator on an organization app.
1016
1208
  #
1017
- # @param app_id_or_app_name: unique identifier of app or unique name of app
1018
- # @param collaborator_email_or_collaborator_id: invited email address of collaborator or unique identifier of collaborator
1019
- def info(app_id_or_app_name, collaborator_email_or_collaborator_id)
1020
- @client.organization_app_collaborator.info(app_id_or_app_name, collaborator_email_or_collaborator_id)
1209
+ # @param app_name: unique name of app
1210
+ # @param collaborator_email: invited email address of collaborator
1211
+ def info(app_name, collaborator_email)
1212
+ @client.organization_app_collaborator.info(app_name, collaborator_email)
1021
1213
  end
1022
1214
 
1023
1215
  # List collaborators on an organization app.
1024
1216
  #
1025
- # @param app_id_or_app_name: unique identifier of app or unique name of app
1026
- def list(app_id_or_app_name)
1027
- @client.organization_app_collaborator.list(app_id_or_app_name)
1217
+ # @param app_name: unique name of app
1218
+ def list(app_name)
1219
+ @client.organization_app_collaborator.list(app_name)
1028
1220
  end
1029
1221
  end
1030
1222
 
@@ -1055,33 +1247,55 @@ module PlatformAPI
1055
1247
 
1056
1248
  # Info for an organization app.
1057
1249
  #
1058
- # @param app_id_or_app_name: unique identifier of app or unique name of app
1059
- def info(app_id_or_app_name)
1060
- @client.organization_app.info(app_id_or_app_name)
1250
+ # @param app_name: unique name of app
1251
+ def info(app_name)
1252
+ @client.organization_app.info(app_name)
1061
1253
  end
1062
1254
 
1063
1255
  # Lock or unlock an organization app.
1064
1256
  #
1065
- # @param app_id_or_app_name: unique identifier of app or unique name of app
1257
+ # @param app_name: unique name of app
1066
1258
  # @param body: the object to pass as the request payload
1067
- def update_locked(app_id_or_app_name, body)
1068
- @client.organization_app.update_locked(app_id_or_app_name, body)
1259
+ def update_locked(app_name, body)
1260
+ @client.organization_app.update_locked(app_name, body)
1069
1261
  end
1070
1262
 
1071
1263
  # Transfer an existing organization app to another Heroku account.
1072
1264
  #
1073
- # @param app_id_or_app_name: unique identifier of app or unique name of app
1265
+ # @param app_name: unique name of app
1074
1266
  # @param body: the object to pass as the request payload
1075
- def transfer_to_account(app_id_or_app_name, body)
1076
- @client.organization_app.transfer_to_account(app_id_or_app_name, body)
1267
+ def transfer_to_account(app_name, body)
1268
+ @client.organization_app.transfer_to_account(app_name, body)
1077
1269
  end
1078
1270
 
1079
1271
  # Transfer an existing organization app to another organization.
1080
1272
  #
1081
- # @param app_id_or_app_name: unique identifier of app or unique name of app
1273
+ # @param app_name: unique name of app
1082
1274
  # @param body: the object to pass as the request payload
1083
- def transfer_to_organization(app_id_or_app_name, body)
1084
- @client.organization_app.transfer_to_organization(app_id_or_app_name, body)
1275
+ def transfer_to_organization(app_name, body)
1276
+ @client.organization_app.transfer_to_organization(app_name, body)
1277
+ end
1278
+ end
1279
+
1280
+ # An organization invoice is an itemized bill of goods for an organization which includes pricing and charges.
1281
+ class OrganizationInvoice
1282
+ def initialize(client)
1283
+ @client = client
1284
+ end
1285
+
1286
+ # Info for existing invoice.
1287
+ #
1288
+ # @param organization_name: unique name of organization
1289
+ # @param organization_invoice_number: human readable invoice number
1290
+ def info(organization_name, organization_invoice_number)
1291
+ @client.organization_invoice.info(organization_name, organization_invoice_number)
1292
+ end
1293
+
1294
+ # List existing invoices.
1295
+ #
1296
+ # @param organization_name: unique name of organization
1297
+ def list(organization_name)
1298
+ @client.organization_invoice.list(organization_name)
1085
1299
  end
1086
1300
  end
1087
1301
 
@@ -1126,7 +1340,14 @@ module PlatformAPI
1126
1340
  @client.organization.list()
1127
1341
  end
1128
1342
 
1129
- # Set or Unset the organization as your default organization.
1343
+ # Info for an organization.
1344
+ #
1345
+ # @param organization_name: unique name of organization
1346
+ def info(organization_name)
1347
+ @client.organization.info(organization_name)
1348
+ end
1349
+
1350
+ # Set or unset the organization as your default organization.
1130
1351
  #
1131
1352
  # @param organization_name: unique name of organization
1132
1353
  # @param body: the object to pass as the request payload
@@ -1135,7 +1356,52 @@ module PlatformAPI
1135
1356
  end
1136
1357
  end
1137
1358
 
1138
- # Plans represent different configurations of add-ons that may be added to apps.
1359
+ # This renders a secret that clients can use to build a one-time password to be supplied as a 2nd factor of authentication.
1360
+ class OtpSecret
1361
+ def initialize(client)
1362
+ @client = client
1363
+ end
1364
+
1365
+ # Create new OTP secret. This invalidates any existing OTP secrets on the account.
1366
+ def create()
1367
+ @client.otp_secret.create()
1368
+ end
1369
+ end
1370
+
1371
+ # A payment represents money collected for an account
1372
+ class Payment
1373
+ def initialize(client)
1374
+ @client = client
1375
+ end
1376
+
1377
+ # Create a payment on an existing account
1378
+ #
1379
+ # @param body: the object to pass as the request payload
1380
+ def create(body)
1381
+ @client.payment.create(body)
1382
+ end
1383
+ end
1384
+
1385
+ # The on file payment method for an account
1386
+ class PaymentMethod
1387
+ def initialize(client)
1388
+ @client = client
1389
+ end
1390
+
1391
+ # Update an existing payment method for an account.
1392
+ #
1393
+ # @param body: the object to pass as the request payload
1394
+ def update(body)
1395
+ @client.payment_method.update(body)
1396
+ end
1397
+
1398
+ # Get the current payment method for an account.
1399
+ def get()
1400
+ @client.payment_method.get()
1401
+ end
1402
+ end
1403
+
1404
+ # Plans represent different configurations of add-ons that may be added to apps. Endpoints under add-on services can be accessed without authentication.
1139
1405
  class Plan
1140
1406
  def initialize(client)
1141
1407
  @client = client
@@ -1169,6 +1435,18 @@ module PlatformAPI
1169
1435
  end
1170
1436
  end
1171
1437
 
1438
+ # Recovery codes grant access to accounts with two-factor authentication enabled.
1439
+ class RecoveryCode
1440
+ def initialize(client)
1441
+ @client = client
1442
+ end
1443
+
1444
+ # Generate new recovery codes. This invalidates any existing codes on the account.
1445
+ def create()
1446
+ @client.recovery_code.create()
1447
+ end
1448
+ end
1449
+
1172
1450
  # A region represents a geographic location in which your application may run.
1173
1451
  class Region
1174
1452
  def initialize(client)
@@ -1249,6 +1527,20 @@ module PlatformAPI
1249
1527
  end
1250
1528
  end
1251
1529
 
1530
+ # A source is a location for uploading and downloading an application's source code.
1531
+ class Source
1532
+ def initialize(client)
1533
+ @client = client
1534
+ end
1535
+
1536
+ # Create URLs for uploading and downloading source.
1537
+ #
1538
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1539
+ def create(app_id_or_app_name)
1540
+ @client.source.create(app_id_or_app_name)
1541
+ end
1542
+ end
1543
+
1252
1544
  # [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.
1253
1545
  class SSLEndpoint
1254
1546
  def initialize(client)
@@ -1315,7 +1607,98 @@ module PlatformAPI
1315
1607
  end
1316
1608
  end
1317
1609
 
1610
+ # An account feature represents a Heroku labs capability that can be enabled or disabled for an account on Heroku.
1611
+ class AccountFeature
1612
+ def initialize(client)
1613
+ @client = client
1614
+ end
1615
+
1616
+ # Info for an existing account feature.
1617
+ #
1618
+ # @param account_feature_id_or_account_feature_name: unique identifier of account feature or unique name of account feature
1619
+ def info(account_feature_id_or_account_feature_name)
1620
+ @client.account_feature.info(account_feature_id_or_account_feature_name)
1621
+ end
1622
+
1623
+ # List existing account features.
1624
+ def list()
1625
+ @client.account_feature.list()
1626
+ end
1627
+
1628
+ # Update an existing account feature.
1629
+ #
1630
+ # @param account_feature_id_or_account_feature_name: unique identifier of account feature or unique name of account feature
1631
+ # @param body: the object to pass as the request payload
1632
+ def update(account_feature_id_or_account_feature_name, body)
1633
+ @client.account_feature.update(account_feature_id_or_account_feature_name, body)
1634
+ end
1635
+ end
1636
+
1637
+ # Tracks a user's preferences and message dismissals
1638
+ class UserPreferences
1639
+ def initialize(client)
1640
+ @client = client
1641
+ end
1642
+
1643
+ # Retrieve User Preferences
1644
+ def user_preferences()
1645
+ @client.user_preferences.user_preferences()
1646
+ end
1647
+
1648
+ # Update User Preferences
1649
+ #
1650
+ # @param body: the object to pass as the request payload
1651
+ def update(body)
1652
+ @client.user_preferences.update(body)
1653
+ end
1654
+ end
1655
+
1656
+ # An account represents an individual signed up to use the Heroku platform.
1657
+ class Account
1658
+ def initialize(client)
1659
+ @client = client
1660
+ end
1661
+
1662
+ # Info for account.
1663
+ #
1664
+ # @param account_email_or_account_id: unique email address of account or unique identifier of an account
1665
+ def info(account_email_or_account_id)
1666
+ @client.account.info(account_email_or_account_id)
1667
+ end
1668
+
1669
+ # Update account.
1670
+ #
1671
+ # @param account_email_or_account_id: unique email address of account or unique identifier of an account
1672
+ # @param body: the object to pass as the request payload
1673
+ def update(account_email_or_account_id, body)
1674
+ @client.account.update(account_email_or_account_id, body)
1675
+ end
1676
+
1677
+ # Change Email for account.
1678
+ #
1679
+ # @param account_email_or_account_id: unique email address of account or unique identifier of an account
1680
+ # @param body: the object to pass as the request payload
1681
+ def change_email(account_email_or_account_id, body)
1682
+ @client.account.change_email(account_email_or_account_id, body)
1683
+ end
1684
+
1685
+ # Change Password for account.
1686
+ #
1687
+ # @param account_email_or_account_id: unique email address of account or unique identifier of an account
1688
+ # @param body: the object to pass as the request payload
1689
+ def change_password(account_email_or_account_id, body)
1690
+ @client.account.change_password(account_email_or_account_id, body)
1691
+ end
1692
+
1693
+ # Delete account. Note that this action cannot be undone.
1694
+ #
1695
+ # @param account_email_or_account_id: unique email address of account or unique identifier of an account
1696
+ def delete(account_email_or_account_id)
1697
+ @client.account.delete(account_email_or_account_id)
1698
+ end
1699
+ end
1700
+
1318
1701
  SCHEMA = Heroics::Schema.new(MultiJson.load(<<-'HEROICS_SCHEMA'))
1319
- {"$schema":"http://json-schema.org/draft-04/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","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","title":"Info"},{"description":"List existing account features.","href":"/account/features","method":"GET","rel":"instances","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"]},"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","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"]},"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","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"}},"required":["password"],"type":["object"]},"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"]},"title":"Change Password"}],"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"},"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.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","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"]},"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","title":"Info"},{"description":"List existing addon-services.","href":"/addon-services","method":"GET","rel":"instances","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"},"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","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 updated","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-z][a-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"]},"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","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","title":"Info"},{"description":"List existing add-ons.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons","method":"GET","rel":"instances","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":{"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"}},"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","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","title":"Info"},{"description":"List existing app features.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/features","method":"GET","rel":"instances","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"]},"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","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":"http://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","type":["object"],"properties":{"id":{"$ref":"#/definitions/app/definitions/id"},"name":{"$ref":"#/definitions/app/definitions/name"}}},"build":{"description":"identity and status of build","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":{"type":["object"],"properties":{"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"]}}}},{"description":"Get the status of an app setup.","title":"Info","rel":"self","method":"GET","href":"/app-setups/{(%23%2Fdefinitions%2Fapp-setup%2Fdefinitions%2Fidentity)}"}]},"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","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"]},"title":"Create"},{"description":"Delete an existing app transfer","href":"/account/app-transfers/{(%23%2Fdefinitions%2Fapp-transfer%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","title":"Delete"},{"description":"Info for existing app transfer.","href":"/account/app-transfers/{(%23%2Fdefinitions%2Fapp-transfer%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","title":"Info"},{"description":"List existing apps transfers.","href":"/account/app-transfers","method":"GET","rel":"instances","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"]},"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"}},"type":["object"]},"recipient":{"description":"identity of the recipient of the transfer","properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"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","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-]{3,30}\\.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":"http://example.herokuapp.com","format":"uri","pattern":"^http://[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"]},"title":"Create"},{"description":"Delete an existing app.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","title":"Delete"},{"description":"Info for existing app.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","title":"Info"},{"description":"List existing apps.","href":"/apps","method":"GET","rel":"instances","title":"List"},{"description":"Update an existing app.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"maintenance":{"$ref":"#/definitions/app/definitions/maintenance"},"name":{"$ref":"#/definitions/app/definitions/name"}},"type":["object"]},"title":"Update"}],"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"},"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"}},"type":["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"}}},"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","type":["object"],"definitions":{"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.","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","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","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"]}},"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"]},"title":"Create"},{"description":"Info for existing build.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/builds/{(%23%2Fdefinitions%2Fbuild%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","title":"Info"},{"description":"List existing build.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/builds","method":"GET","rel":"instances","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","example":"01234567-89ab-cdef-0123-456789abcdef","properties":{"id":{"$ref":"#/definitions/slug/definitions/id"}},"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"}},"type":["object"]}}},"collaborator":{"description":"A collaborator represents an account that has been given access to an app on Heroku.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","title":"Heroku Platform API - Collaborator","type":["object"],"definitions":{"created_at":{"description":"when collaborator was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"email":{"description":"invited email address of collaborator","example":"collaborator@example.com","format":"email","readOnly":false,"type":["string"]},"id":{"description":"unique identifier of collaborator","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/collaborator/definitions/email"},{"$ref":"#/definitions/collaborator/definitions/id"}]},"silent":{"default":false,"description":"whether to suppress email invitation when creating collaborator","example":false,"readOnly":false,"type":["boolean"]},"updated_at":{"description":"when collaborator was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new collaborator.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators","method":"POST","rel":"create","schema":{"properties":{"silent":{"$ref":"#/definitions/collaborator/definitions/silent"},"user":{"$ref":"#/definitions/account/definitions/identity"}},"required":["user"],"type":["object"]},"title":"Create"},{"description":"Delete an existing collaborator.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Fcollaborator%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","title":"Delete"},{"description":"Info for existing collaborator.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Fcollaborator%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","title":"Info"},{"description":"List existing collaborators.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators","method":"GET","rel":"instances","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"}},"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","title":"Heroku Platform API - Config Vars","type":["object"],"definitions":{},"links":[{"description":"Get config-vars for app.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/config-vars","method":"GET","rel":"self","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":null,"BAZ":"grault"},"patternProperties":{"^\\w+$":{"type":["string","null"]}},"type":["object"]},"title":"Update"}],"example":{"FOO":"bar","BAZ":"qux"},"patternProperties":{"^\\w+$":{"type":["string"]}},"additionalProperties":false},"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","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"]},"title":"Create"},{"description":"Delete an existing domain","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains/{(%23%2Fdefinitions%2Fdomain%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","title":"Delete"},{"description":"Info for existing domain.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains/{(%23%2Fdefinitions%2Fdomain%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","title":"Info"},{"description":"List existing domains.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains","method":"GET","rel":"instances","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","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,"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"]},"title":"Create"},{"description":"Restart dyno.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/dynos/{(%23%2Fdefinitions%2Fdyno%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"empty","title":"Restart"},{"description":"Restart all dynos","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/dynos","method":"DELETE","rel":"empty","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","title":"Info"},{"description":"List existing dynos.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/dynos","method":"GET","rel":"instances","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"}},"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","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","title":"Info"},{"description":"List process type formation","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/formation","method":"GET","rel":"instances","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":{"updates":[{"process":"web","quantity":1,"size":"2X"}]}}},"required":["updates"],"type":["object"]},"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"]},"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"}}},"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","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"]},"title":"Create"},{"description":"Delete an existing key","href":"/account/keys/{(%23%2Fdefinitions%2Fkey%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","title":"Delete"},{"description":"Info for existing key.","href":"/account/keys/{(%23%2Fdefinitions%2Fkey%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","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/logging#syslog-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","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"]},"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","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","title":"Info"},{"description":"List existing log drains.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/log-drains","method":"GET","rel":"instances","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","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"]},"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","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"]},"title":"Create"},{"description":"Delete OAuth authorization.","href":"/oauth/authorizations/{(%23%2Fdefinitions%2Foauth-authorization%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","title":"Delete"},{"description":"Info for an OAuth authorization.","href":"/oauth/authorizations/{(%23%2Fdefinitions%2Foauth-authorization%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","title":"Info"},{"description":"List OAuth authorizations.","href":"/oauth/authorizations","method":"GET","rel":"instances","title":"List"}],"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"}},"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"}},"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","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"]},"title":"Create"},{"description":"Delete OAuth client.","href":"/oauth/clients/{(%23%2Fdefinitions%2Foauth-client%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","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","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"]},"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","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","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"]},"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"}},"type":["object"]},"authorization":{"description":"authorization for this set of tokens","properties":{"id":{"$ref":"#/definitions/oauth-authorization/definitions/id"}},"type":["object"]},"client":{"description":"OAuth client secret used to obtain token","properties":{"secret":{"$ref":"#/definitions/oauth-client/definitions/secret"}},"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"}},"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"}},"type":["object"]},"session":{"description":"OAuth session using this token","properties":{"id":{"$ref":"#/definitions/oauth-token/definitions/id"}},"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"}},"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","title":"Heroku Platform API - Organization App Collaborator","type":["object"],"definitions":{},"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"]},"title":"Create"},{"description":"Delete an existing collaborator from an organization app.","href":"/organizations/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Fcollaborator%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","title":"Delete"},{"description":"Info for a collaborator on an organization app.","href":"/organizations/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Fcollaborator%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","title":"Info"},{"description":"List collaborators on an organization app.","href":"/organizations/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators","method":"GET","rel":"instances","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"}},"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"]},"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","title":"List"},{"description":"List organization apps.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/apps","method":"GET","rel":"instances","title":"List For Organization"},{"description":"Info for an organization app.","href":"/organizations/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","title":"Info"},{"description":"Lock or unlock an organization app.","href":"/organizations/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"locked":{"$ref":"#/definitions/organization-app/definitions/locked"}},"required":["locked"],"type":["object"]},"title":"Update Locked"},{"description":"Transfer an existing organization app to another Heroku account.","href":"/organizations/apps/{(%23%2Fdefinitions%2Fapp%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%2Fapp%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"owner":{"$ref":"#/definitions/organization/definitions/name"}},"required":["owner"],"type":["object"]},"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","title":"Heroku Platform API - Organization Member","type":["object"],"definitions":{"created_at":{"description":"when organization-member 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"}]},"updated_at":{"description":"when organization-member 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"]},"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","title":"Delete"},{"description":"List members of the organization.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/members","method":"GET","rel":"instances","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"},"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","title":"Heroku Platform API - Organization","type":["object"],"definitions":{"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"]}},"links":[{"description":"List organizations in which you are a member.","href":"/organizations","method":"GET","rel":"instances","title":"List"},{"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"]},"title":"Update"}],"properties":{"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"}}},"plan":{"description":"Plans represent different configurations of add-ons that may be added to apps.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","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"]},"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","title":"Info"},{"description":"List existing plans.","href":"/addon-services/{(%23%2Fdefinitions%2Faddon-service%2Fdefinitions%2Fidentity)}/plans","method":"GET","rel":"instances","title":"List"}],"properties":{"created_at":{"$ref":"#/definitions/plan/definitions/created_at"},"default":{"$ref":"#/definitions/plan/definitions/default"},"description":{"$ref":"#/definitions/plan/definitions/description"},"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"}},"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","title":"Heroku Platform API - Rate Limit","type":["object"],"definitions":{"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","title":"Info"}],"properties":{"remaining":{"$ref":"#/definitions/rate-limit/definitions/remaining"}}},"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","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","title":"Info"},{"description":"List existing regions.","href":"/regions","method":"GET","rel":"instances","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","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","title":"Info"},{"description":"List existing releases.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/releases","method":"GET","rel":"instances","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"]},"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"]},"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"}},"type":["object","null"]},"user":{"description":"user that created the release","properties":{"id":{"$ref":"#/definitions/account/definitions/id"},"email":{"$ref":"#/definitions/account/definitions/email"}},"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","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"]},"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","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"},"process_types":{"$ref":"#/definitions/slug/definitions/process_types"}},"required":["process_types"],"type":["object"]},"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"}},"type":["object"]},"buildpack_provided_description":{"$ref":"#/definitions/slug/definitions/buildpack_provided_description"},"commit":{"$ref":"#/definitions/slug/definitions/commit"},"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"},"updated_at":{"$ref":"#/definitions/slug/definitions/updated_at"}}},"ssl-endpoint":{"description":"[SSL Endpoint](https://devcenter.heroku.com/articles/ssl-endpoint) is a public address serving custom SSL cert for HTTPS traffic to a Heroku app. Note that an app must have the `ssl:endpoint` addon installed before it can provision an SSL Endpoint using these APIs.","$schema":"http://json-schema.org/draft-04/hyper-schema","title":"Heroku Platform API - SSL Endpoint","stability":"production","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"]},"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","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","title":"Info"},{"description":"List existing SSL endpoints.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/ssl-endpoints","method":"GET","rel":"instances","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"]},"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","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","title":"Info"},{"description":"List available stacks.","href":"/stacks","method":"GET","rel":"instances","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"},"collaborator":{"$ref":"#/definitions/collaborator"},"config-var":{"$ref":"#/definitions/config-var"},"domain":{"$ref":"#/definitions/domain"},"dyno":{"$ref":"#/definitions/dyno"},"formation":{"$ref":"#/definitions/formation"},"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"},"plan":{"$ref":"#/definitions/plan"},"rate-limit":{"$ref":"#/definitions/rate-limit"},"region":{"$ref":"#/definitions/region"},"release":{"$ref":"#/definitions/release"},"slug":{"$ref":"#/definitions/slug"},"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.","links":[{"href":"https://api.heroku.com","rel":"self"}],"title":"Heroku Platform API"}
1702
+ {"$schema":"http://interagent.github.io/interagent-hyper-schema","type":["object"],"definitions":{"addon-attachment":{"description":"An add-on attachment represents a connection between an app and an add-on that it has been given access to.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"prototype","strictProperties":true,"title":"Heroku Platform API - Add-on Attachment","type":["object"],"definitions":{"created_at":{"description":"when add-on attachment was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this add-on attachment","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"force":{"default":false,"description":"whether or not to allow existing attachment with same name to be replaced","example":false,"readOnly":false,"type":["boolean"]},"identity":{"anyOf":[{"$ref":"#/definitions/addon-attachment/definitions/id"}]},"scopedIdentity":{"anyOf":[{"$ref":"#/definitions/addon-attachment/definitions/id"},{"$ref":"#/definitions/addon-attachment/definitions/name"}]},"name":{"description":"unique name for this add-on attachment to this app","example":"DATABASE","readOnly":true,"type":["string"]},"updated_at":{"description":"when add-on attachment was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new add-on attachment.","href":"/addon-attachments","method":"POST","rel":"create","schema":{"properties":{"addon":{"$ref":"#/definitions/addon/definitions/identity"},"app":{"$ref":"#/definitions/app/definitions/identity"},"force":{"$ref":"#/definitions/addon-attachment/definitions/force"},"name":{"$ref":"#/definitions/addon-attachment/definitions/name"}},"required":["addon","app"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/addon-attachment"},"title":"Create"},{"description":"Delete an existing add-on attachment.","href":"/addon-attachments/{(%23%2Fdefinitions%2Faddon-attachment%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/addon-attachment"},"title":"Delete"},{"description":"Info for existing add-on attachment.","href":"/addon-attachments/{(%23%2Fdefinitions%2Faddon-attachment%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/addon-attachment"},"title":"Info"},{"description":"List existing add-on attachments.","href":"/addon-attachments","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/addon-attachment"},"type":["array"]},"title":"List"},{"description":"List existing add-on attachments for an add-on.","href":"/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}/addon-attachments","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/addon-attachment"},"type":["array"]},"title":"List by Add-on"},{"description":"List existing add-on attachments for an app.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addon-attachments","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/addon-attachment"},"type":["array"]},"title":"List by App"},{"description":"Info for existing add-on attachment for an app.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addon-attachments/{(%23%2Fdefinitions%2Faddon-attachment%2Fdefinitions%2FscopedIdentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/addon-attachment"},"title":"Info by App"}],"properties":{"addon":{"description":"identity of add-on","properties":{"id":{"$ref":"#/definitions/addon/definitions/id"},"name":{"$ref":"#/definitions/addon/definitions/name"},"app":{"description":"billing application associated with this add-on","type":["object"],"properties":{"id":{"$ref":"#/definitions/app/definitions/id"},"name":{"$ref":"#/definitions/app/definitions/name"}},"strictProperties":true}},"strictProperties":true,"type":["object"]},"app":{"description":"application that is attached to add-on","properties":{"id":{"$ref":"#/definitions/app/definitions/id"},"name":{"$ref":"#/definitions/app/definitions/name"}},"strictProperties":true,"type":["object"]},"created_at":{"$ref":"#/definitions/addon-attachment/definitions/created_at"},"id":{"$ref":"#/definitions/addon-attachment/definitions/id"},"name":{"$ref":"#/definitions/addon-attachment/definitions/name"},"updated_at":{"$ref":"#/definitions/addon-attachment/definitions/updated_at"}}},"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"]},"human_name":{"description":"human-readable name of the addon service provider","example":"Heroku Postgres","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this addon-service","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/addon-service/definitions/id"},{"$ref":"#/definitions/addon-service/definitions/name"}]},"name":{"description":"unique name of this addon-service","example":"heroku-postgresql","readOnly":true,"type":["string"]},"state":{"description":"release status for add-on service","enum":["alpha","beta","ga","shutdown"],"example":"ga","readOnly":true,"type":["string"]},"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"},"human_name":{"$ref":"#/definitions/addon-service/definitions/human_name"},"id":{"$ref":"#/definitions/addon-service/definitions/id"},"name":{"$ref":"#/definitions/addon-service/definitions/name"},"state":{"$ref":"#/definitions/addon-service/definitions/state"},"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 exposed to the owning app by this add-on","example":["FOO","BAZ"],"items":{"type":["string"]},"readOnly":true,"type":["array"]},"created_at":{"description":"when add-on was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of add-on","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/addon/definitions/id"},{"$ref":"#/definitions/addon/definitions/name"}]},"name":{"description":"globally unique name of the add-on","example":"acme-inc-primary-database","pattern":"^[a-zA-Z][A-Za-z0-9_-]+$","readOnly":true,"type":["string"]},"provider_id":{"description":"id of this add-on with its provider","example":"abcd1234","readOnly":true,"type":["string"]},"updated_at":{"description":"when add-on was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"web_url":{"description":"URL for logging into web interface of add-on (e.g. a dashboard)","example":"https://postgres.heroku.com/databases/01234567-89ab-cdef-0123-456789abcdef","format":"uri","readOnly":true,"type":["null","string"]}},"links":[{"description":"Create a new add-on.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons","method":"POST","rel":"create","schema":{"properties":{"attachment":{"description":"name for add-on's initial attachment","example":{"name":"DATABASE_FOLLOWER"},"name":{"$ref":"#/definitions/addon-attachment/definitions/name"},"type":["object"]},"config":{"additionalProperties":false,"description":"custom add-on provisioning options","example":{"db-version":"1.2.3"},"patternProperties":{"^\\w+$":{"type":["string"]}},"type":["object"]},"plan":{"$ref":"#/definitions/plan/definitions/identity"}},"required":["plan"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/addon"},"title":"Create"},{"description":"Delete an existing add-on.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/addon"},"title":"Delete"},{"description":"Info for an existing add-on.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/addon"},"title":"Info"},{"description":"List all existing add-ons.","href":"/addons","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/addon"},"type":["array"]},"title":"List"},{"description":"Info for an existing add-on.","href":"/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/addon"},"title":"Info"},{"description":"List existing add-ons for an app.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/addon"},"type":["array"]},"title":"List by App"},{"description":"Change add-on plan. Some add-ons may not support changing plans. In that case, an error will be returned.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"plan":{"$ref":"#/definitions/plan/definitions/identity"}},"required":["plan"],"type":["object"]},"title":"Update"}],"properties":{"addon_service":{"description":"identity of add-on service","properties":{"id":{"$ref":"#/definitions/addon-service/definitions/id"},"name":{"$ref":"#/definitions/addon-service/definitions/name"}},"strictProperties":true,"type":["object"]},"app":{"description":"billing application associated with this add-on","type":["object"],"properties":{"id":{"$ref":"#/definitions/app/definitions/id"},"name":{"$ref":"#/definitions/app/definitions/name"}},"strictProperties":true},"config_vars":{"$ref":"#/definitions/addon/definitions/config_vars"},"created_at":{"$ref":"#/definitions/addon/definitions/created_at"},"id":{"$ref":"#/definitions/addon/definitions/id"},"name":{"$ref":"#/definitions/addon/definitions/name"},"plan":{"description":"identity of add-on plan","properties":{"id":{"$ref":"#/definitions/plan/definitions/id"},"name":{"$ref":"#/definitions/plan/definitions/name"}},"strictProperties":true,"type":["object"]},"provider_id":{"$ref":"#/definitions/addon/definitions/provider_id"},"updated_at":{"$ref":"#/definitions/addon/definitions/updated_at"},"web_url":{"$ref":"#/definitions/addon/definitions/web_url"}}},"app-feature":{"description":"An app feature represents a Heroku labs capability that can be enabled or disabled for an app on Heroku.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - App Feature","type":["object"],"definitions":{"created_at":{"description":"when app feature was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"description":{"description":"description of app feature","example":"Causes app to example.","readOnly":true,"type":["string"]},"doc_url":{"description":"documentation URL of app feature","example":"http://devcenter.heroku.com/articles/example","readOnly":true,"type":["string"]},"enabled":{"description":"whether or not app feature has been enabled","example":true,"readOnly":false,"type":["boolean"]},"id":{"description":"unique identifier of app feature","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/app-feature/definitions/id"},{"$ref":"#/definitions/app-feature/definitions/name"}]},"name":{"description":"unique name of app feature","example":"name","readOnly":true,"type":["string"]},"state":{"description":"state of app feature","example":"public","readOnly":true,"type":["string"]},"updated_at":{"description":"when app feature was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Info for an existing app feature.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/features/{(%23%2Fdefinitions%2Fapp-feature%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/app-feature"},"title":"Info"},{"description":"List existing app features.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/features","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/app-feature"},"type":["array"]},"title":"List"},{"description":"Update an existing app feature.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/features/{(%23%2Fdefinitions%2Fapp-feature%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"enabled":{"$ref":"#/definitions/app-feature/definitions/enabled"}},"required":["enabled"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/app-feature"},"title":"Update"}],"properties":{"created_at":{"$ref":"#/definitions/app-feature/definitions/created_at"},"description":{"$ref":"#/definitions/app-feature/definitions/description"},"doc_url":{"$ref":"#/definitions/app-feature/definitions/doc_url"},"enabled":{"$ref":"#/definitions/app-feature/definitions/enabled"},"id":{"$ref":"#/definitions/app-feature/definitions/id"},"name":{"$ref":"#/definitions/app-feature/definitions/name"},"state":{"$ref":"#/definitions/app-feature/definitions/state"},"updated_at":{"$ref":"#/definitions/app-feature/definitions/updated_at"}}},"app-setup":{"description":"An app setup represents an app on Heroku that is setup using an environment, addons, and scripts described in an app.json manifest file.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Setup API - App Setup","type":["object"],"definitions":{"id":{"description":"unique identifier of app setup","example":"01234567-89ab-cdef-0123-456789abcdef","readOnly":true,"type":["string"],"format":"uuid"},"identity":{"anyOf":[{"$ref":"#/definitions/app-setup/definitions/id"}]},"created_at":{"description":"when app setup was created","example":"2012-01-01T12:00:00Z","readOnly":true,"type":["string"],"format":"date-time"},"updated_at":{"description":"when app setup was updated","example":"2012-01-01T12:00:00Z","readOnly":true,"type":["string"],"format":"date-time"},"status":{"description":"the overall status of app setup","example":"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":{"buildpack":{"description":"Buildpack to execute in a build","type":["object"],"properties":{"url":{"$ref":"#/definitions/buildpack-installation/definitions/url"}}},"created_at":{"description":"when build was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of build","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/build/definitions/id"}]},"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":{"buildpacks":{"description":"buildpacks executed for this build, in order","type":["array"],"items":{"$ref":"#/definitions/build/definitions/buildpack"}},"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":"List an app's existing buildpack installations.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/buildpack-installations","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/buildpack-installation"},"type":["array"]},"title":"List"}],"properties":{"ordinal":{"$ref":"#/definitions/buildpack-installation/definitions/ordinal"},"buildpack":{"description":"buildpack","properties":{"url":{"$ref":"#/definitions/buildpack-installation/definitions/url"}},"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":{"anyOf":[{"$ref":"#/definitions/credit/definitions/id"}]},"title":{"description":"a name for credit","example":"gift card","type":["string"]},"updated_at":{"description":"when credit was updated","example":"2012-01-01T12:00:00Z","format":"date-time","type":["string"]}},"links":[{"description":"Create a new credit.","href":"/account/credits","method":"POST","rel":"create","schema":{"properties":{"code1":{"description":"first code from a discount card","example":"012abc","type":["string"]},"code2":{"description":"second code from a discount card","example":"012abc","type":["string"]}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/credit"},"title":"Create"},{"description":"Info for existing credit.","href":"/account/credits/{(%23%2Fdefinitions%2Fcredit%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/credit"},"title":"Info"},{"description":"List existing credits.","href":"/account/credits","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/credit"},"type":["array"]},"title":"List"}],"properties":{"amount":{"$ref":"#/definitions/credit/definitions/amount"},"balance":{"$ref":"#/definitions/credit/definitions/balance"},"created_at":{"$ref":"#/definitions/credit/definitions/created_at"},"expires_at":{"$ref":"#/definitions/credit/definitions/expires_at"},"id":{"$ref":"#/definitions/credit/definitions/id"},"title":{"$ref":"#/definitions/credit/definitions/title"},"updated_at":{"$ref":"#/definitions/credit/definitions/updated_at"}}},"domain":{"description":"Domains define what web routes should be routed to an app on Heroku.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Domain","type":["object"],"definitions":{"created_at":{"description":"when domain was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"hostname":{"description":"full hostname","example":"subdomain.example.com","format":"uri","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this domain","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/domain/definitions/id"},{"$ref":"#/definitions/domain/definitions/hostname"}]},"updated_at":{"description":"when domain was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new domain.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains","method":"POST","rel":"create","schema":{"properties":{"hostname":{"$ref":"#/definitions/domain/definitions/hostname"}},"required":["hostname"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/domain"},"title":"Create"},{"description":"Delete an existing domain","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains/{(%23%2Fdefinitions%2Fdomain%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/domain"},"title":"Delete"},{"description":"Info for existing domain.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains/{(%23%2Fdefinitions%2Fdomain%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/domain"},"title":"Info"},{"description":"List existing domains.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/domain"},"type":["array"]},"title":"List"}],"properties":{"app":{"description":"app that owns the domain","properties":{"name":{"$ref":"#/definitions/app/definitions/name"},"id":{"$ref":"#/definitions/app/definitions/id"}},"type":["object"]},"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"}}},"event":{"description":"An event represents an action performed on another API resource.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"development","strictProperties":true,"title":"Heroku Platform API - Event","type":["object"],"definitions":{"action":{"description":"the operation performed on the resource","enum":["create","destroy","update"],"example":"create","readOnly":true,"type":["string"]},"created_at":{"description":"when the event was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"data":{"description":"the serialized resource affected by the event","example":{},"oneOf":[{"$ref":"#/definitions/addon"},{"$ref":"#/definitions/app"},{"$ref":"#/definitions/app-transfer"},{"$ref":"#/definitions/domain"},{"$ref":"#/definitions/dyno"},{"$ref":"#/definitions/formation"},{"$ref":"#/definitions/release"}],"readOnly":true,"type":["object"]},"id":{"description":"unique identifier of an event","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/event/definitions/id"}]},"published_at":{"description":"when the event was published","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["null","string"]},"resource":{"description":"the type of resource affected","enum":["addon","app","app-transfer","domain","dyno","formation","release"],"example":"create","readOnly":true,"type":["string"]},"sequence":{"description":"a numeric string representing the event's sequence","example":"1234567890","pattern":"^[0-9]{1,128}$","readOnly":true,"type":["null","string"]},"updated_at":{"description":"when the event was updated (same as created)","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"version":{"description":"the event's API version string","example":"application/vnd.heroku+json; version=3","readOnly":true,"type":["string"]}},"links":[],"properties":{"action":{"$ref":"#/definitions/event/definitions/action"},"actor":{"description":"user that performed the operation","properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"strictProperties":true,"type":["object"]},"created_at":{"$ref":"#/definitions/event/definitions/created_at"},"data":{"$ref":"#/definitions/event/definitions/data"},"id":{"$ref":"#/definitions/event/definitions/id"},"published_at":{"$ref":"#/definitions/event/definitions/published_at"},"resource":{"$ref":"#/definitions/event/definitions/resource"},"sequence":{"$ref":"#/definitions/event/definitions/sequence"},"updated_at":{"$ref":"#/definitions/event/definitions/updated_at"},"version":{"$ref":"#/definitions/event/definitions/version"}}},"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"}}},"invoice_address":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"An invoice address represents the address that should be listed on an invoice.","title":"Heroku Vault API - Invoice Address","stability":"development","type":["object"],"definitions":{"address_1":{"type":["string"],"description":"invoice street address line 1","example":"40 Hickory Blvd."},"address_2":{"type":["string"],"description":"invoice street address line 2","example":"Suite 300"},"city":{"type":["string"],"description":"invoice city","example":"Seattle"},"country":{"type":["string"],"description":"country","example":"US"},"heroku_id":{"type":["string"],"description":"heroku_id identifier reference","example":"user930223902@heroku.com","readOnly":true},"identity":{"anyOf":[{"$ref":"#/definitions/invoice_address/definitions/heroku_id"}]},"other":{"type":["string"],"description":"metadata / additional information to go on invoice","example":"Company ABC Inc. VAT 903820"},"postal_code":{"type":["string"],"description":"invoice zip code","example":"98101"},"state":{"type":["string"],"description":"invoice state","example":"WA"},"use_invoice_address":{"type":["boolean"],"description":"flag to use the invoice address for an account or not","example":true,"default":false}},"links":[{"description":"Retrieve existing invoice address.","href":"/account/invoice-address","method":"GET","rel":"self","title":"info"},{"description":"Update invoice address for an account.","href":"/account/invoice-address","method":"PUT","rel":"self","title":"update","schema":{"properties":{"address_1":{"$ref":"#/definitions/invoice_address/definitions/address_1"},"address_2":{"$ref":"#/definitions/invoice_address/definitions/address_2"},"city":{"$ref":"#/definitions/invoice_address/definitions/city"},"country":{"$ref":"#/definitions/invoice_address/definitions/country"},"other":{"$ref":"#/definitions/invoice_address/definitions/other"},"postal_code":{"$ref":"#/definitions/invoice_address/definitions/postal_code"},"state":{"$ref":"#/definitions/invoice_address/definitions/state"},"use_invoice_address":{"$ref":"#/definitions/invoice_address/definitions/use_invoice_address"}},"type":["object"]}}],"properties":{"address_1":{"$ref":"#/definitions/invoice_address/definitions/address_1"},"address_2":{"$ref":"#/definitions/invoice_address/definitions/address_2"},"city":{"$ref":"#/definitions/invoice_address/definitions/city"},"country":{"$ref":"#/definitions/invoice_address/definitions/country"},"heroku_id":{"$ref":"#/definitions/invoice_address/definitions/identity"},"other":{"$ref":"#/definitions/invoice_address/definitions/other"},"postal_code":{"$ref":"#/definitions/invoice_address/definitions/postal_code"},"state":{"$ref":"#/definitions/invoice_address/definitions/state"},"use_invoice_address":{"$ref":"#/definitions/invoice_address/definitions/use_invoice_address"}}},"key":{"description":"Keys represent public SSH keys associated with an account and are used to authorize accounts as they are performing git operations.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Key","type":["object"],"definitions":{"comment":{"description":"comment on the key","example":"username@host","readOnly":true,"type":["string"]},"created_at":{"description":"when key was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"email":{"deprecated":true,"description":"deprecated. Please refer to 'comment' instead","example":"username@host","readOnly":true,"type":["string"]},"fingerprint":{"description":"a unique identifying string based on contents","example":"17:63:a4:ba:24:d3:7f:af:17:c8:94:82:7e:80:56:bf","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this key","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/key/definitions/id"},{"$ref":"#/definitions/key/definitions/fingerprint"}]},"public_key":{"description":"full public_key as uploaded","example":"ssh-rsa AAAAB3NzaC1ycVc/../839Uv username@example.com","readOnly":true,"type":["string"]},"updated_at":{"description":"when key was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new key.","href":"/account/keys","method":"POST","rel":"create","schema":{"properties":{"public_key":{"$ref":"#/definitions/key/definitions/public_key"}},"required":["public_key"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/key"},"title":"Create"},{"description":"Delete an existing key","href":"/account/keys/{(%23%2Fdefinitions%2Fkey%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/key"},"title":"Delete"},{"description":"Info for existing key.","href":"/account/keys/{(%23%2Fdefinitions%2Fkey%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/key"},"title":"Info"},{"description":"List existing keys.","href":"/account/keys","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/key"},"type":["array"]},"title":"List"}],"properties":{"comment":{"$ref":"#/definitions/key/definitions/comment"},"created_at":{"$ref":"#/definitions/key/definitions/created_at"},"email":{"$ref":"#/definitions/key/definitions/email"},"fingerprint":{"$ref":"#/definitions/key/definitions/fingerprint"},"id":{"$ref":"#/definitions/key/definitions/id"},"public_key":{"$ref":"#/definitions/key/definitions/public_key"},"updated_at":{"$ref":"#/definitions/key/definitions/updated_at"}}},"log-drain":{"description":"[Log drains](https://devcenter.heroku.com/articles/log-drains) provide a way to forward your Heroku logs to an external syslog server for long-term archiving. This external service must be configured to receive syslog packets from Heroku, whereupon its URL can be added to an app using this API. Some addons will add a log drain when they are provisioned to an app. These drains can only be removed by removing the add-on.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Log Drain","type":["object"],"definitions":{"addon":{"description":"addon that created the drain","example":{"id":"01234567-89ab-cdef-0123-456789abcdef","name":"singing-swiftly-1242"},"properties":{"id":{"$ref":"#/definitions/addon/definitions/id"},"name":{"$ref":"#/definitions/addon/definitions/name"}},"readOnly":true,"type":["object","null"]},"created_at":{"description":"when log drain was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this log drain","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/log-drain/definitions/id"},{"$ref":"#/definitions/log-drain/definitions/url"}]},"token":{"description":"token associated with the log drain","example":"d.01234567-89ab-cdef-0123-456789abcdef","readOnly":true,"type":["string"]},"updated_at":{"description":"when log drain was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"url":{"description":"url associated with the log drain","example":"https://example.com/drain","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new log drain.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/log-drains","method":"POST","rel":"create","schema":{"properties":{"url":{"$ref":"#/definitions/log-drain/definitions/url"}},"required":["url"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/log-drain"},"title":"Create"},{"description":"Delete an existing log drain. Log drains added by add-ons can only be removed by removing the add-on.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/log-drains/{(%23%2Fdefinitions%2Flog-drain%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/log-drain"},"title":"Delete"},{"description":"Info for existing log drain.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/log-drains/{(%23%2Fdefinitions%2Flog-drain%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/log-drain"},"title":"Info"},{"description":"List existing log drains.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/log-drains","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/log-drain"},"type":["array"]},"title":"List"}],"properties":{"addon":{"$ref":"#/definitions/log-drain/definitions/addon"},"created_at":{"$ref":"#/definitions/log-drain/definitions/created_at"},"id":{"$ref":"#/definitions/log-drain/definitions/id"},"token":{"$ref":"#/definitions/log-drain/definitions/token"},"updated_at":{"$ref":"#/definitions/log-drain/definitions/updated_at"},"url":{"$ref":"#/definitions/log-drain/definitions/url"}}},"log-session":{"description":"A log session is a reference to the http based log stream for an app.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Log Session","type":["object"],"definitions":{"created_at":{"description":"when log connection was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"dyno":{"description":"dyno to limit results to","example":"web.1","readOnly":false,"type":["string"]},"id":{"description":"unique identifier of this log session","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/log-session/definitions/id"}]},"lines":{"description":"number of log lines to stream at once","example":10,"readOnly":false,"type":["integer"]},"logplex_url":{"description":"URL for log streaming session","example":"https://logplex.heroku.com/sessions/01234567-89ab-cdef-0123-456789abcdef?srv=1325419200","readOnly":true,"type":["string"]},"source":{"description":"log source to limit results to","example":"app","readOnly":false,"type":["string"]},"tail":{"description":"whether to stream ongoing logs","example":true,"readOnly":false,"type":["boolean"]},"updated_at":{"description":"when log session was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new log session.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/log-sessions","method":"POST","rel":"create","schema":{"properties":{"dyno":{"$ref":"#/definitions/log-session/definitions/dyno"},"lines":{"$ref":"#/definitions/log-session/definitions/lines"},"source":{"$ref":"#/definitions/log-session/definitions/source"},"tail":{"$ref":"#/definitions/log-session/definitions/tail"}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/log-session"},"title":"Create"}],"properties":{"created_at":{"$ref":"#/definitions/log-session/definitions/created_at"},"id":{"$ref":"#/definitions/log-session/definitions/id"},"logplex_url":{"$ref":"#/definitions/log-session/definitions/logplex_url"},"updated_at":{"$ref":"#/definitions/log-session/definitions/updated_at"}}},"oauth-authorization":{"description":"OAuth authorizations represent clients that a Heroku user has authorized to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth)","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - OAuth Authorization","type":["object"],"definitions":{"created_at":{"description":"when OAuth authorization was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"description":{"description":"human-friendly description of this OAuth authorization","example":"sample authorization","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of OAuth authorization","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/oauth-authorization/definitions/id"}]},"scope":{"description":"The scope of access OAuth authorization allows","example":["global"],"readOnly":true,"type":["array"],"items":{"type":["string"]}},"updated_at":{"description":"when OAuth authorization was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new OAuth authorization.","href":"/oauth/authorizations","method":"POST","rel":"create","schema":{"properties":{"client":{"$ref":"#/definitions/oauth-client/definitions/identity"},"description":{"$ref":"#/definitions/oauth-authorization/definitions/description"},"expires_in":{"$ref":"#/definitions/oauth-token/definitions/expires_in"},"scope":{"$ref":"#/definitions/oauth-authorization/definitions/scope"}},"required":["scope"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/oauth-authorization"},"title":"Create"},{"description":"Delete OAuth authorization.","href":"/oauth/authorizations/{(%23%2Fdefinitions%2Foauth-authorization%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/oauth-authorization"},"title":"Delete"},{"description":"Info for an OAuth authorization.","href":"/oauth/authorizations/{(%23%2Fdefinitions%2Foauth-authorization%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/oauth-authorization"},"title":"Info"},{"description":"List OAuth authorizations.","href":"/oauth/authorizations","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/oauth-authorization"},"type":["array"]},"title":"List"},{"description":"Regenerate OAuth tokens. This endpoint is only available to direct authorizations or privileged OAuth clients.","href":"/oauth/authorizations/{(%23%2Fdefinitions%2Foauth-authorization%2Fdefinitions%2Fidentity)}/actions/regenerate-tokens","method":"POST","rel":"update","targetSchema":{"$ref":"#/definitions/oauth-authorization"},"title":"Regenerate"}],"properties":{"access_token":{"description":"access token for this authorization","properties":{"expires_in":{"$ref":"#/definitions/oauth-token/definitions/expires_in"},"id":{"$ref":"#/definitions/oauth-token/definitions/id"},"token":{"$ref":"#/definitions/oauth-token/definitions/token"}},"type":["null","object"]},"client":{"description":"identifier of the client that obtained this authorization, if any","properties":{"id":{"$ref":"#/definitions/oauth-client/definitions/id"},"name":{"$ref":"#/definitions/oauth-client/definitions/name"},"redirect_uri":{"$ref":"#/definitions/oauth-client/definitions/redirect_uri"}},"type":["null","object"]},"created_at":{"$ref":"#/definitions/oauth-authorization/definitions/created_at"},"grant":{"description":"this authorization's grant","properties":{"code":{"$ref":"#/definitions/oauth-grant/definitions/code"},"expires_in":{"$ref":"#/definitions/oauth-grant/definitions/expires_in"},"id":{"$ref":"#/definitions/oauth-grant/definitions/id"}},"strictProperties":true,"type":["null","object"]},"id":{"$ref":"#/definitions/oauth-authorization/definitions/id"},"refresh_token":{"description":"refresh token for this authorization","properties":{"expires_in":{"$ref":"#/definitions/oauth-token/definitions/expires_in"},"id":{"$ref":"#/definitions/oauth-token/definitions/id"},"token":{"$ref":"#/definitions/oauth-token/definitions/token"}},"strictProperties":true,"type":["null","object"]},"scope":{"$ref":"#/definitions/oauth-authorization/definitions/scope"},"updated_at":{"$ref":"#/definitions/oauth-authorization/definitions/updated_at"}}},"oauth-client":{"description":"OAuth clients are applications that Heroku users can authorize to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth).","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - OAuth Client","type":["object"],"definitions":{"created_at":{"description":"when OAuth client was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"description":"unique identifier of this OAuth client","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/oauth-client/definitions/id"}]},"ignores_delinquent":{"description":"whether the client is still operable given a delinquent account","example":false,"readOnly":true,"type":["boolean","null"]},"name":{"description":"OAuth client name","example":"example","readOnly":true,"type":["string"]},"redirect_uri":{"description":"endpoint for redirection after authorization with OAuth client","example":"https://example.com/auth/heroku/callback","readOnly":true,"type":["string"]},"secret":{"description":"secret used to obtain OAuth authorizations under this client","example":"01234567-89ab-cdef-0123-456789abcdef","readOnly":true,"type":["string"]},"updated_at":{"description":"when OAuth client was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new OAuth client.","href":"/oauth/clients","method":"POST","rel":"create","schema":{"properties":{"name":{"$ref":"#/definitions/oauth-client/definitions/name"},"redirect_uri":{"$ref":"#/definitions/oauth-client/definitions/redirect_uri"}},"required":["name","redirect_uri"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/oauth-client"},"title":"Create"},{"description":"Delete OAuth client.","href":"/oauth/clients/{(%23%2Fdefinitions%2Foauth-client%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/oauth-client"},"title":"Delete"},{"description":"Info for an OAuth client","href":"/oauth/clients/{(%23%2Fdefinitions%2Foauth-client%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","title":"Info"},{"description":"List OAuth clients","href":"/oauth/clients","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/oauth-client"},"type":["array"]},"title":"List"},{"description":"Update OAuth client","href":"/oauth/clients/{(%23%2Fdefinitions%2Foauth-client%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"name":{"$ref":"#/definitions/oauth-client/definitions/name"},"redirect_uri":{"$ref":"#/definitions/oauth-client/definitions/redirect_uri"}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/oauth-client"},"title":"Update"}],"properties":{"created_at":{"$ref":"#/definitions/oauth-client/definitions/created_at"},"id":{"$ref":"#/definitions/oauth-client/definitions/id"},"ignores_delinquent":{"$ref":"#/definitions/oauth-client/definitions/ignores_delinquent"},"name":{"$ref":"#/definitions/oauth-client/definitions/name"},"redirect_uri":{"$ref":"#/definitions/oauth-client/definitions/redirect_uri"},"secret":{"$ref":"#/definitions/oauth-client/definitions/secret"},"updated_at":{"$ref":"#/definitions/oauth-client/definitions/updated_at"}}},"oauth-grant":{"description":"OAuth grants are used to obtain authorizations on behalf of a user. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth)","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - OAuth Grant","type":["object"],"definitions":{"code":{"description":"grant code received from OAuth web application authorization","example":"01234567-89ab-cdef-0123-456789abcdef","readOnly":true,"type":["string"]},"expires_in":{"description":"seconds until OAuth grant expires","example":2592000,"readOnly":true,"type":["integer"]},"id":{"description":"unique identifier of OAuth grant","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/oauth-grant/definitions/id"}]},"type":{"description":"type of grant requested, one of `authorization_code` or `refresh_token`","example":"authorization_code","readOnly":false,"type":["string"]}},"links":[],"properties":{}},"oauth-token":{"description":"OAuth tokens provide access for authorized clients to act on behalf of a Heroku user to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth)","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - OAuth Token","type":["object"],"definitions":{"created_at":{"description":"when OAuth token was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"expires_in":{"description":"seconds until OAuth token expires; may be `null` for tokens with indefinite lifetime","example":2592000,"readOnly":true,"type":["null","integer"]},"id":{"description":"unique identifier of OAuth token","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/oauth-token/definitions/id"}]},"token":{"description":"contents of the token to be used for authorization","example":"01234567-89ab-cdef-0123-456789abcdef","readOnly":true,"type":["string"]},"updated_at":{"description":"when OAuth token was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Create a new OAuth token.","href":"/oauth/tokens","method":"POST","rel":"create","schema":{"properties":{"client":{"type":["object"],"properties":{"secret":{"$ref":"#/definitions/oauth-client/definitions/secret"}}},"grant":{"type":["object"],"properties":{"code":{"$ref":"#/definitions/oauth-grant/definitions/code"},"type":{"$ref":"#/definitions/oauth-grant/definitions/type"}}},"refresh_token":{"type":["object"],"properties":{"token":{"$ref":"#/definitions/oauth-token/definitions/token"}}}},"required":["grant","client","refresh_token"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/oauth-token"},"title":"Create"}],"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/organization-app-collaborator"},"title":"Create"},{"description":"Delete an existing collaborator from an organization app.","href":"/organizations/apps/{(%23%2Fdefinitions%2Forganization-app%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Forganization-app-collaborator%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/organization-app-collaborator"},"title":"Delete"},{"description":"Info for a collaborator on an organization app.","href":"/organizations/apps/{(%23%2Fdefinitions%2Forganization-app%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Forganization-app-collaborator%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/organization-app-collaborator"},"title":"Info"},{"description":"List collaborators on an organization app.","href":"/organizations/apps/{(%23%2Fdefinitions%2Forganization-app%2Fdefinitions%2Fidentity)}/collaborators","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/organization-app-collaborator"},"type":["array"]},"title":"List"}],"properties":{"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-invoice":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"An organization invoice is an itemized bill of goods for an organization which includes pricing and charges.","stability":"prototype","strictProperties":true,"title":"Heroku Platform API - Organization Invoice","type":["object"],"definitions":{"addons_total":{"description":"total addons charges in on this invoice","example":25000,"readOnly":true,"type":["integer"]},"database_total":{"description":"total database charges on this invoice","example":25000,"readOnly":true,"type":["integer"]},"charges_total":{"description":"total charges on this invoice","example":0,"readOnly":true,"type":["integer"]},"created_at":{"description":"when invoice was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"credits_total":{"description":"total credits on this invoice","example":100000,"readOnly":true,"type":["integer"]},"dyno_units":{"description":"The total amount of dyno units consumed across dyno types.","example":1.92,"readOnly":true,"type":["number"]},"id":{"description":"unique identifier of this invoice","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/organization-invoice/definitions/number"}]},"number":{"description":"human readable invoice number","example":9403943,"readOnly":true,"type":["integer"]},"payment_status":{"description":"Status of the invoice payment.","example":"Paid","readOnly":true,"type":["string"]},"platform_total":{"description":"total platform charges on this invoice","example":50000,"readOnly":true,"type":["integer"]},"period_end":{"description":"the ending date that the invoice covers","example":"01/31/2014","readOnly":true,"type":["string"]},"period_start":{"description":"the starting date that this invoice covers","example":"01/01/2014","readOnly":true,"type":["string"]},"state":{"description":"payment status for this invoice (pending, successful, failed)","example":1,"readOnly":true,"type":["integer"]},"total":{"description":"combined total of charges and credits on this invoice","example":100000,"readOnly":true,"type":["integer"]},"updated_at":{"description":"when invoice was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"weighted_dyno_hours":{"description":"The total amount of hours consumed across dyno types.","example":1488,"readOnly":true,"type":["number"]}},"links":[{"description":"Info for existing invoice.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/invoices/{(%23%2Fdefinitions%2Forganization-invoice%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/organization-invoice"},"title":"Info"},{"description":"List existing invoices.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/invoices","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/organization-invoice"},"type":["array"]},"title":"List"}],"properties":{"addons_total":{"$ref":"#/definitions/organization-invoice/definitions/addons_total"},"database_total":{"$ref":"#/definitions/organization-invoice/definitions/database_total"},"charges_total":{"$ref":"#/definitions/organization-invoice/definitions/charges_total"},"created_at":{"$ref":"#/definitions/organization-invoice/definitions/created_at"},"credits_total":{"$ref":"#/definitions/organization-invoice/definitions/credits_total"},"dyno_units":{"$ref":"#/definitions/organization-invoice/definitions/dyno_units"},"id":{"$ref":"#/definitions/organization-invoice/definitions/id"},"number":{"$ref":"#/definitions/organization-invoice/definitions/number"},"payment_status":{"$ref":"#/definitions/organization-invoice/definitions/payment_status"},"period_end":{"$ref":"#/definitions/organization-invoice/definitions/period_end"},"period_start":{"$ref":"#/definitions/organization-invoice/definitions/period_start"},"platform_total":{"$ref":"#/definitions/organization-invoice/definitions/platform_total"},"state":{"$ref":"#/definitions/organization-invoice/definitions/state"},"total":{"$ref":"#/definitions/organization-invoice/definitions/total"},"updated_at":{"$ref":"#/definitions/organization-invoice/definitions/updated_at"},"weighted_dyno_hours":{"$ref":"#/definitions/organization-invoice/definitions/weighted_dyno_hours"}}},"organization-member":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"An organization member is an individual with access to an organization.","stability":"prototype","strictProperties":true,"title":"Heroku Platform API - Organization Member","type":["object"],"definitions":{"created_at":{"description":"when the membership record was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"email":{"description":"email address of the organization member","example":"someone@example.org","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/organization-member/definitions/email"}]},"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"]},"id":{"description":"unique identifier of organization","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":true,"type":["string"]},"identity":{"anyOf":[{"$ref":"#/definitions/organization/definitions/name"}]},"name":{"description":"unique name of organization","example":"example","readOnly":true,"type":["string"]},"provisioned_licenses":{"description":"whether the org is provisioned licenses by salesforce.","example":true,"readOnly":true,"type":["boolean"]},"role":{"description":"role in the organization","enum":["admin","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":{"anyOf":[{"$ref":"#/definitions/otp-secret/definitions/id"}]},"updated_at":{"description":"when OTP secret was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"url":{"description":"OTP secret rendered in URL format","example":"otpauth://totp/username@example.com?issuer=Heroku&secret=abcd1234","readOnly":true,"type":["string"]}},"links":[{"description":"Create new OTP secret. This invalidates any existing OTP secrets on the account.","href":"/account/otp-secret","method":"POST","rel":"create","targetSchema":{"$ref":"#/definitions/otp-secret"},"title":"Create"}],"properties":{"created_at":{"$ref":"#/definitions/otp-secret/definitions/created_at"},"id":{"$ref":"#/definitions/otp-secret/definitions/id"},"updated_at":{"$ref":"#/definitions/otp-secret/definitions/updated_at"},"url":{"$ref":"#/definitions/otp-secret/definitions/url"}}},"payment":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"A payment represents money collected for an account","title":"Heroku Vault API - Payments","stability":"prototype","type":["object"],"definitions":{"account_id":{"type":["integer"],"description":"account that payment belongs to","example":8403923,"readOnly":true},"amount":{"type":["number"],"description":"amount of payment in cents","example":50000,"readOnly":false},"created_at":{"description":"when payment was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"id":{"type":["integer"],"description":"legacy unique identifier of payment","example":9403943,"readOnly":true},"identity":{"anyOf":[{"$ref":"#/definitions/payment/definitions/id"}]},"state":{"enum":["failure","pending","success"],"type":["string"],"description":"state of the payment","example":"pending","readOnly":true},"updated_at":{"description":"when credit was updated","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"uuid":{"description":"unique identifier for a payment transaction","example":"01234567-89ab-cdef-0123-456789abcdef","format":"uuid","readOnly":false,"type":["string"]}},"links":[{"description":"Create a payment on an existing account","href":"/account/payments","method":"POST","rel":"self","schema":{"properties":{"amount":{"$ref":"#/definitions/payment/definitions/amount"},"invoice":{"$ref":"#/definitions/invoice/definitions/identity"},"uuid":{"$ref":"#/definitions/payment/definitions/uuid"}},"required":["amount","invoice","uuid"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/payment"},"title":"create"}],"properties":{"amount":{"$ref":"#/definitions/payment/definitions/amount"},"created_at":{"$ref":"#/definitions/payment/definitions/created_at"},"id":{"$ref":"#/definitions/payment/definitions/id"},"invoice":{"description":"identity of invoice","properties":{"id":{"$ref":"#/definitions/invoice/definitions/id"},"number":{"$ref":"#/definitions/invoice/definitions/number"}},"type":["null","object"]},"updated_at":{"$ref":"#/definitions/payment/definitions/updated_at"},"user":{"description":"identity of user issuing payment","properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"}},"strictProperties":true,"type":["object"]},"state":{"$ref":"#/definitions/payment/definitions/state"}}},"payment_method":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"The on file payment method for an account","stability":"prototype","title":"Heroku Vault API - Payment Method","type":["object"],"definitions":{"address_1":{"type":["string"],"description":"street address line 1","example":"40 Hickory Lane"},"address_2":{"type":["string"],"description":"street address line 2","example":"Suite 103"},"card_number":{"type":["string"],"description":"encrypted card number of payment method","example":"encrypted-card-number"},"city":{"type":["string"],"description":"city","example":"San Francisco"},"country":{"type":["string"],"description":"country","example":"US"},"cvv":{"type":["string"],"description":"card verification value","example":"123"},"expiration_month":{"type":["string"],"description":"expiration month","example":"11"},"expiration_year":{"type":["string"],"description":"expiration year","example":"2014"},"first_name":{"type":["string"],"description":"the first name for payment method","example":"Jason"},"last_name":{"type":["string"],"description":"the last name for payment method","example":"Walker"},"other":{"type":["string"],"description":"metadata","example":"Additional information for payment method"},"postal_code":{"type":["string"],"description":"postal code","example":"90210"},"state":{"type":["string"],"description":"state","example":"CA"},"card_last4":{"type":["string"],"description":"last 4 digits of credit card number","example":"1234","readOnly":true},"card_type":{"type":["string"],"description":"name of credit card issuer","example":"VISA","readOnly":true},"heroku_id":{"type":["string"],"description":"heroku_id identifier reference","example":"user930223902@heroku.com","readOnly":true},"identity":{"anyOf":[{"$ref":"#/definitions/invoice_address/definitions/heroku_id"}]}},"links":[{"description":"Update an existing payment method for an account.","href":"/account/payment-method","method":"PATCH","rel":"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"},{"description":"Get the current payment method for an account.","href":"/account/payment-method","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/payment_method"},"title":"get"}],"properties":{"address_1":{"$ref":"#/definitions/payment_method/definitions/address_1"},"address_2":{"$ref":"#/definitions/payment_method/definitions/address_2"},"card_last4":{"$ref":"#/definitions/payment_method/definitions/card_last4"},"card_type":{"$ref":"#/definitions/payment_method/definitions/card_type"},"city":{"$ref":"#/definitions/payment_method/definitions/city"},"country":{"$ref":"#/definitions/payment_method/definitions/country"},"expiration_month":{"$ref":"#/definitions/payment_method/definitions/expiration_month"},"expiration_year":{"$ref":"#/definitions/payment_method/definitions/expiration_year"},"first_name":{"$ref":"#/definitions/payment_method/definitions/first_name"},"last_name":{"$ref":"#/definitions/payment_method/definitions/last_name"},"other":{"$ref":"#/definitions/payment_method/definitions/other"},"postal_code":{"$ref":"#/definitions/payment_method/definitions/postal_code"},"state":{"$ref":"#/definitions/payment_method/definitions/state"}}},"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":{"app":{"description":"app involved in the release","properties":{"name":{"$ref":"#/definitions/app/definitions/name"},"id":{"$ref":"#/definitions/app/definitions/id"}},"type":["object"]},"created_at":{"$ref":"#/definitions/release/definitions/created_at"},"description":{"$ref":"#/definitions/release/definitions/description"},"id":{"$ref":"#/definitions/release/definitions/id"},"updated_at":{"$ref":"#/definitions/release/definitions/updated_at"},"slug":{"description":"slug running in this release","properties":{"id":{"$ref":"#/definitions/slug/definitions/id"}},"strictProperties":true,"type":["object","null"]},"user":{"description":"user that created the release","properties":{"id":{"$ref":"#/definitions/account/definitions/id"},"email":{"$ref":"#/definitions/account/definitions/email"}},"strictProperties":true,"type":["object"]},"version":{"$ref":"#/definitions/release/definitions/version"}}},"slug":{"description":"A slug is a snapshot of your application code that is ready to run on the platform.","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - Slug","type":["object"],"definitions":{"buildpack_provided_description":{"description":"description from buildpack of slug","example":"Ruby/Rack","readOnly":false,"type":["null","string"]},"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":"production","strictProperties":true,"title":"Heroku Platform API - Source","type":["object"],"definitions":{"get_url":{"description":"URL to download the source","example":"https://api.heroku.com/sources/1234.tgz","readOnly":true,"type":["string"]},"put_url":{"description":"URL to upload the source","example":"https://api.heroku.com/sources/1234.tgz","readOnly":true,"type":["string"]}},"links":[{"description":"Create URLs for uploading and downloading source.","href":"/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/sources","method":"POST","rel":"create","targetSchema":{"$ref":"#/definitions/source"},"title":"Create"}],"properties":{"source_blob":{"description":"pointer to the URL where clients can fetch or store the source","properties":{"get_url":{"$ref":"#/definitions/source/definitions/get_url"},"put_url":{"$ref":"#/definitions/source/definitions/put_url"}},"strictProperties":true,"type":["object"]}}},"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-14","readOnly":true,"type":["string"]},"state":{"description":"availability of this stack: beta, deprecated or public","example":"public","readOnly":true,"type":["string"]},"updated_at":{"description":"when stack was last modified","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]}},"links":[{"description":"Stack info.","href":"/stacks/{(%23%2Fdefinitions%2Fstack%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/stack"},"title":"Info"},{"description":"List available stacks.","href":"/stacks","method":"GET","rel":"instances","targetSchema":{"items":{"$ref":"#/definitions/stack"},"type":["array"]},"title":"List"}],"properties":{"created_at":{"$ref":"#/definitions/stack/definitions/created_at"},"id":{"$ref":"#/definitions/stack/definitions/id"},"name":{"$ref":"#/definitions/stack/definitions/name"},"state":{"$ref":"#/definitions/stack/definitions/state"},"updated_at":{"$ref":"#/definitions/stack/definitions/updated_at"}}},"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"}}},"user-preferences":{"description":"Tracks a user's preferences and message dismissals","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","strictProperties":true,"title":"Heroku Platform API - User Preferences","type":["object"],"definitions":{"timezone":{"description":"User's default timezone","example":"UTC","readOnly":false,"type":["string","null"]},"dismissed-github-banner":{"description":"Whether the user has dismissed the GitHub link banner","example":true,"readOnly":false,"type":["boolean","null"]},"dismissed-getting-started":{"description":"Whether the user has dismissed the getting started banner","example":true,"readOnly":false,"type":["boolean","null"]},"dismissed-org-access-controls":{"description":"Whether the user has dismissed the Organization Access Controls banner","example":true,"readOnly":false,"type":["boolean","null"]},"dismissed-org-wizard-notification":{"description":"Whether the user has dismissed the Organization Wizard","example":true,"readOnly":false,"type":["boolean","null"]},"dismissed-pricing-callout":{"description":"Whether the user has dismissed the new pricing banner","example":true,"readOnly":false,"type":["boolean","null"]},"dismissed-sms-banner":{"description":"Whether the user has dismissed the 2FA SMS banner","example":true,"readOnly":false,"type":["boolean","null"]}},"links":[{"description":"Retrieve User Preferences","href":"/users/~/preferences","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/user-preferences"},"title":"User Preferences"},{"description":"Update User Preferences","href":"/users/~/preferences","method":"PATCH","rel":"update","schema":{"properties":{"timezone":{"$ref":"#/definitions/user-preferences/definitions/timezone"},"dismissed-github-banner":{"$ref":"#/definitions/user-preferences/definitions/dismissed-github-banner"},"dismissed-getting-started":{"$ref":"#/definitions/user-preferences/definitions/dismissed-getting-started"},"dismissed-org-access-controls":{"$ref":"#/definitions/user-preferences/definitions/dismissed-org-access-controls"},"dismissed-org-wizard-notification":{"$ref":"#/definitions/user-preferences/definitions/dismissed-org-wizard-notification"},"dismissed-pricing-callout":{"$ref":"#/definitions/user-preferences/definitions/dismissed-pricing-callout"},"dismissed-sms-banner":{"$ref":"#/definitions/user-preferences/definitions/dismissed-sms-banner"}}},"targetSchema":{"$ref":"#/definitions/user-preferences"},"title":"Update"}],"properties":{"timezone":{"$ref":"#/definitions/user-preferences/definitions/timezone"},"dismissed-github-banner":{"$ref":"#/definitions/user-preferences/definitions/dismissed-github-banner"},"dismissed-getting-started":{"$ref":"#/definitions/user-preferences/definitions/dismissed-getting-started"},"dismissed-org-access-controls":{"$ref":"#/definitions/user-preferences/definitions/dismissed-org-access-controls"},"dismissed-org-wizard-notification":{"$ref":"#/definitions/user-preferences/definitions/dismissed-org-wizard-notification"},"dismissed-pricing-callout":{"$ref":"#/definitions/user-preferences/definitions/dismissed-pricing-callout"},"dismissed-sms-banner":{"$ref":"#/definitions/user-preferences/definitions/dismissed-sms-banner"}}},"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"},{"description":"Info for account.","href":"/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}","method":"GET","rel":"self","targetSchema":{"$ref":"#/definitions/account"},"title":"Info"},{"description":"Update account.","href":"/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"allow_tracking":{"$ref":"#/definitions/account/definitions/allow_tracking"},"beta":{"$ref":"#/definitions/account/definitions/beta"},"name":{"$ref":"#/definitions/account/definitions/name"},"password":{"$ref":"#/definitions/account/definitions/password"}},"type":["object"]},"targetSchema":{"$ref":"#/definitions/account"},"title":"Update"},{"description":"Change Email for account.","href":"/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"email":{"$ref":"#/definitions/account/definitions/email"},"password":{"$ref":"#/definitions/account/definitions/password"}},"required":["password","email"],"type":["object"]},"title":"Change Email"},{"description":"Change Password for account.","href":"/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}","method":"PATCH","rel":"update","schema":{"properties":{"new_password":{"$ref":"#/definitions/account/definitions/new_password"},"password":{"$ref":"#/definitions/account/definitions/password"}},"required":["new_password","password"],"type":["object"]},"targetSchema":{"$ref":"#/definitions/account"},"title":"Change Password"},{"description":"Delete account. Note that this action cannot be undone.","href":"/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}","method":"DELETE","rel":"destroy","targetSchema":{"$ref":"#/definitions/account"},"title":"Delete"}],"properties":{"allow_tracking":{"$ref":"#/definitions/account/definitions/allow_tracking"},"beta":{"$ref":"#/definitions/account/definitions/beta"},"created_at":{"$ref":"#/definitions/account/definitions/created_at"},"email":{"$ref":"#/definitions/account/definitions/email"},"id":{"$ref":"#/definitions/account/definitions/id"},"last_login":{"$ref":"#/definitions/account/definitions/last_login"},"name":{"$ref":"#/definitions/account/definitions/name"},"two_factor_authentication":{"$ref":"#/definitions/account/definitions/two_factor_authentication"},"updated_at":{"$ref":"#/definitions/account/definitions/updated_at"},"verified":{"$ref":"#/definitions/account/definitions/verified"},"default_organization":{"description":"organization selected by default","properties":{"id":{"$ref":"#/definitions/organization/definitions/id"},"name":{"$ref":"#/definitions/organization/definitions/name"}},"strictProperties":true,"type":["object","null"]}}}},"properties":{"addon-attachment":{"$ref":"#/definitions/addon-attachment"},"addon-service":{"$ref":"#/definitions/addon-service"},"addon":{"$ref":"#/definitions/addon"},"app-feature":{"$ref":"#/definitions/app-feature"},"app-setup":{"$ref":"#/definitions/app-setup"},"app-transfer":{"$ref":"#/definitions/app-transfer"},"app":{"$ref":"#/definitions/app"},"build-result":{"$ref":"#/definitions/build-result"},"build":{"$ref":"#/definitions/build"},"buildpack-installation":{"$ref":"#/definitions/buildpack-installation"},"collaborator":{"$ref":"#/definitions/collaborator"},"config-var":{"$ref":"#/definitions/config-var"},"credit":{"$ref":"#/definitions/credit"},"domain":{"$ref":"#/definitions/domain"},"dyno":{"$ref":"#/definitions/dyno"},"event":{"$ref":"#/definitions/event"},"formation":{"$ref":"#/definitions/formation"},"invoice":{"$ref":"#/definitions/invoice"},"invoice_address":{"$ref":"#/definitions/invoice_address"},"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-invoice":{"$ref":"#/definitions/organization-invoice"},"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"},"account-feature":{"$ref":"#/definitions/account-feature"},"user-preferences":{"$ref":"#/definitions/user-preferences"},"account":{"$ref":"#/definitions/account"}},"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"}
1320
1703
  HEROICS_SCHEMA
1321
1704
  end