platform-api 0.0.7 → 0.0.8

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: aad4c07d28820ad4465208a27de3c6327b311850
4
- data.tar.gz: 9b490f8772f41b9b08e7eaa11826bbff20a1db6d
3
+ metadata.gz: 83ce747d641b41648378f3ba9a234c4afd0722ce
4
+ data.tar.gz: e757e94cf47afef3958378afc8a9ac25e4b45e0f
5
5
  SHA512:
6
- metadata.gz: 5cd33ad3ca2359bfc6cb925ea70be257f2ba4fe371b01a75f7a59c653c2226065313708fef89ef9ed27f033c62d7ec6d20cba8639a83e8803acea9e871e125c4
7
- data.tar.gz: 6e1021dc31f5a50cf4e3d1931a8a47f2b48856c9d049f8d2595dc5f6488498e1d8f66ae28b3942e27b0402287369941aa473c334f45fb3effdb7c5c5906891f9
6
+ metadata.gz: e4fc8731e9cae2632380f1ad77bf46032744e08ea972022d080f0ea51fe8ad2ede3dc794242e8509da8b703a3d5069580a1273cbd987e2a3436573b5ae9f6913
7
+ data.tar.gz: 29ba00fbc72349e7cc4c3b85486840f2fededde9ea70f8d4f376a267a05001d8a9950f532a15f9e56eb43bcc67d0f6a12d3b46faf6d304af752ac94c4252173f
data/.gitignore CHANGED
@@ -1 +1,3 @@
1
+ .yardoc
2
+ doc/
1
3
  pkg/
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ -m markdown
data/Gemfile.lock CHANGED
@@ -1,22 +1,23 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- platform-api (0.0.7)
4
+ platform-api (0.0.8)
5
5
  heroics (~> 0.0.5)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- excon (0.32.1)
10
+ excon (0.33.0)
11
11
  heroics (0.0.6)
12
12
  excon
13
13
  moneta
14
14
  multi_json
15
15
  netrc
16
16
  moneta (0.7.20)
17
- multi_json (1.9.2)
17
+ multi_json (1.9.3)
18
18
  netrc (0.7.7)
19
19
  rake (10.2.2)
20
+ yard (0.8.7.2)
20
21
 
21
22
  PLATFORMS
22
23
  ruby
@@ -25,3 +26,4 @@ DEPENDENCIES
25
26
  bundler (~> 1.3)
26
27
  platform-api!
27
28
  rake
29
+ yard
data/README.md CHANGED
@@ -35,21 +35,17 @@ Add-on, Config Vars, Formation, etc. Each resource includes detailed
35
35
  information about the support actions. For example, the [Formation](https://devcenter.heroku.com/articles/platform-api-reference#formation)
36
36
  resource has [Info](https://devcenter.heroku.com/articles/platform-api-reference#formation-info), [List](https://devcenter.heroku.com/articles/platform-api-reference#formation-list), [Batch update](https://devcenter.heroku.com/articles/platform-api-reference#formation-batch-update), and [Update](https://devcenter.heroku.com/articles/platform-api-reference#formation-update) actions.
37
37
 
38
- You can easily map any resource and its related action client methods. The
39
- formation actions above are accessed as `heroku.formation.info`,
40
- `heroku.formation.list`, `heroku.formation.batch_update` and
41
- `heroku.formation.update`. When the URL for one of these actions includes
42
- parameters they should be passed as arguments to the method. When the request
43
- expects a request payload it should be passed as a Ruby Hash in the final
44
- argument to the method.
38
+ Resources and their related actions are available as methods on the client.
39
+ When the URL for an action includes parameters they're passed as arguments to
40
+ the method. When the request expects a request payload it's passed as a Hash
41
+ in the final argument to the method.
45
42
 
46
43
  For example, to get information about the `web` formation on the `sushi` app
47
44
  you'd invoke `heroku.formation.info('sushi', 'web')` and it would return a
48
45
  Ruby object that matches the one given in the [response example](https://devcenter.heroku.com/articles/platform-api-reference#formation-info).
49
46
 
50
- Once you get used to these basic patterns using the client is quite easy
51
- because it maps directly to the documentation. Below we'll go through some
52
- more detailed examples to give a better idea about how it works.
47
+ The [API documentation] contains a description of all available resources and
48
+ methods.
53
49
 
54
50
  ### Handling errors
55
51
 
@@ -258,9 +254,8 @@ heroku.formation.update('floating-retreat-4255', 'web', {"size" => "1X"})
258
254
  "updated_at"=>"2014-03-13T04:24:46Z"}
259
255
  ```
260
256
 
261
- Hopefully this has given you a taste of how the client works and an
262
- understanding of how resources and actions are mapped from the documentation.
263
- If you have questions please feel free to file issues.
257
+ Hopefully this has given you a taste of how the client works. If you have
258
+ questions please feel free to file issues.
264
259
 
265
260
  ### Debugging
266
261
 
@@ -269,6 +264,16 @@ can start your program or an `irb` session with the `EXCON_DEBUG=1`
269
264
  environment variable to cause request and response data to be written to
270
265
  `STDERR`.
271
266
 
267
+ ### Building API documentation
268
+
269
+ Build documentation with:
270
+
271
+ ```
272
+ rake yard
273
+ ```
274
+
275
+ And then visit `docs/index.html` to read it.
276
+
272
277
  ## Contributing
273
278
 
274
279
  1. [Fork the repository](https://github.com/heroku/platform-api/fork).
data/Rakefile CHANGED
@@ -1 +1,5 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+ require 'yard'
3
+
4
+ desc 'Doc the things'
5
+ YARD::Rake::YardocTask.new
@@ -1,26 +1,1194 @@
1
+ # encoding: utf-8
2
+
3
+ #
4
+ # WARNING: Do not edit by hand, this file was generated by Heroics:
5
+ #
6
+ # https://github.com/heroku/heroics
7
+ #
8
+
9
+ require 'uri'
10
+
1
11
  module PlatformAPI
2
- # Get a client configured with the specified OAuth token.
3
- def self.connect_oauth(oauth_token)
4
- url = "https://api.heroku.com"
5
- default_headers = {'Accept' => 'application/vnd.heroku+json; version=3'}
6
- cache = Moneta.new(:File, dir: "#{Dir.home}/.heroku/platform-api")
7
- options = {default_headers: default_headers, cache: cache}
8
- schema_json = File.read("#{File.dirname(__FILE__)}/schema.json")
9
- schema = Heroics::Schema.new(MultiJson.decode(schema_json))
10
- Heroics.oauth_client_from_schema(oauth_token, schema, url, options)
12
+ # Get a Client configured to use HTTP Basic authentication.
13
+ #
14
+ # @param username [String] The username to use with the API.
15
+ # @param password [String] The password to use with the API.
16
+ # @param headers [Hash<String,String>] Optionally, custom to headers to
17
+ # include with every response.
18
+ # @return [Client] A client configured to use the API with HTTP Basic
19
+ # authentication.
20
+ def self.connect(username, password, headers=nil)
21
+ url = URI.parse("https://api.heroku.com")
22
+ url.user = username
23
+ url.password = password
24
+ default_headers = {"Accept"=>"application/vnd.heroku+json; version=3"}
25
+ unless headers.nil?
26
+ default_headers.merge!(headers)
27
+ end
28
+ cache = Moneta.new(:File, dir: "#{Dir.home}/.heroics/platform-api")
29
+ options = {
30
+ options: {default_headers: default_headers,
31
+ cache: cache}
32
+ }
33
+ client = Heroics.client_from_schema(SCHEMA, url.to_s, options)
34
+ Client.new(client)
11
35
  end
12
36
 
13
- # Get a client configured with the specified API token.
37
+ # Get a Client configured to use OAuth authentication.
14
38
  #
15
- # Always prefer `connect_oauth` unless there's a very good reason you must
16
- # use a non-OAuth API token.
17
- def self.connect(token)
18
- url = "https://:#{token}@api.heroku.com"
19
- default_headers = {'Accept' => 'application/vnd.heroku+json; version=3'}
20
- cache = Moneta.new(:File, dir: "#{Dir.home}/.heroku/platform-api")
21
- options = {default_headers: default_headers, cache: cache}
22
- schema_json = File.read("#{File.dirname(__FILE__)}/schema.json")
23
- schema = Heroics::Schema.new(MultiJson.decode(schema_json))
24
- Heroics.client_from_schema(schema, url, options)
39
+ # @param oauth_token [String] The OAuth token to use with the API.
40
+ # @param headers [Hash<String,String>] Optionally, custom to headers to
41
+ # include with every response.
42
+ # @return [Client] A client configured to use the API with OAuth
43
+ # authentication.
44
+ def self.connect_oauth(oauth_token, headers=nil)
45
+ url = "https://api.heroku.com"
46
+ default_headers = {"Accept"=>"application/vnd.heroku+json; version=3"}
47
+ unless headers.nil?
48
+ default_headers.merge!(headers)
49
+ end
50
+ cache = Moneta.new(:File, dir: "#{Dir.home}/.heroics/platform-api")
51
+ options = {
52
+ options: {default_headers: default_headers,
53
+ cache: cache}
54
+ }
55
+ client = Heroics.client_from_schema(oauth_token, SCHEMA, url, options)
56
+ Client.new(client)
57
+ end
58
+
59
+ # The platform API empowers developers to automate, extend and combine Heroku with other services.
60
+ class Client
61
+ def initialize(client)
62
+ @client = client
63
+ end
64
+
65
+ # An account feature represents a Heroku labs capability that can be enabled or disabled for an account on Heroku.
66
+ #
67
+ # @return [AccountFeature]
68
+ def account_feature
69
+ @account_feature_resource ||= AccountFeature.new(@client)
70
+ end
71
+
72
+ # An account represents an individual signed up to use the Heroku platform.
73
+ #
74
+ # @return [Account]
75
+ def account
76
+ @account_resource ||= Account.new(@client)
77
+ end
78
+
79
+ # Add-on services represent add-ons that may be provisioned for apps.
80
+ #
81
+ # @return [AddonService]
82
+ def addon_service
83
+ @addon_service_resource ||= AddonService.new(@client)
84
+ end
85
+
86
+ # Add-ons represent add-ons that have been provisioned for an app.
87
+ #
88
+ # @return [Addon]
89
+ def addon
90
+ @addon_resource ||= Addon.new(@client)
91
+ end
92
+
93
+ # An app feature represents a Heroku labs capability that can be enabled or disabled for an app on Heroku.
94
+ #
95
+ # @return [AppFeature]
96
+ def app_feature
97
+ @app_feature_resource ||= AppFeature.new(@client)
98
+ end
99
+
100
+ # An app transfer represents a two party interaction for transferring ownership of an app.
101
+ #
102
+ # @return [AppTransfer]
103
+ def app_transfer
104
+ @app_transfer_resource ||= AppTransfer.new(@client)
105
+ end
106
+
107
+ # An app represents the program that you would like to deploy and run on Heroku.
108
+ #
109
+ # @return [App]
110
+ def app
111
+ @app_resource ||= App.new(@client)
112
+ end
113
+
114
+ # A collaborator represents an account that has been given access to an app on Heroku.
115
+ #
116
+ # @return [Collaborator]
117
+ def collaborator
118
+ @collaborator_resource ||= Collaborator.new(@client)
119
+ end
120
+
121
+ # Config Vars allow you to manage the configuration information provided to an app on Heroku.
122
+ #
123
+ # @return [ConfigVar]
124
+ def config_var
125
+ @config_var_resource ||= ConfigVar.new(@client)
126
+ end
127
+
128
+ # Domains define what web routes should be routed to an app on Heroku.
129
+ #
130
+ # @return [Domain]
131
+ def domain
132
+ @domain_resource ||= Domain.new(@client)
133
+ end
134
+
135
+ # Dynos encapsulate running processes of an app on Heroku.
136
+ #
137
+ # @return [Dyno]
138
+ def dyno
139
+ @dyno_resource ||= Dyno.new(@client)
140
+ end
141
+
142
+ # 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.
143
+ #
144
+ # @return [Formation]
145
+ def formation
146
+ @formation_resource ||= Formation.new(@client)
147
+ end
148
+
149
+ # Keys represent public SSH keys associated with an account and are used to authorize accounts as they are performing git operations.
150
+ #
151
+ # @return [Key]
152
+ def key
153
+ @key_resource ||= Key.new(@client)
154
+ end
155
+
156
+ # [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.
157
+ #
158
+ # @return [LogDrain]
159
+ def log_drain
160
+ @log_drain_resource ||= LogDrain.new(@client)
161
+ end
162
+
163
+ # A log session is a reference to the http based log stream for an app.
164
+ #
165
+ # @return [LogSession]
166
+ def log_session
167
+ @log_session_resource ||= LogSession.new(@client)
168
+ end
169
+
170
+ # 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)
171
+ #
172
+ # @return [OauthAuthorization]
173
+ def oauth_authorization
174
+ @oauth_authorization_resource ||= OauthAuthorization.new(@client)
175
+ end
176
+
177
+ # 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).
178
+ #
179
+ # @return [OauthClient]
180
+ def oauth_client
181
+ @oauth_client_resource ||= OauthClient.new(@client)
182
+ end
183
+
184
+ # 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)
185
+ #
186
+ # @return [OauthGrant]
187
+ def oauth_grant
188
+ @oauth_grant_resource ||= OauthGrant.new(@client)
189
+ end
190
+
191
+ # 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)
192
+ #
193
+ # @return [OauthToken]
194
+ def oauth_token
195
+ @oauth_token_resource ||= OauthToken.new(@client)
196
+ end
197
+
198
+ # An organization collaborator represents an account that has been given access to an organization app on Heroku.
199
+ #
200
+ # @return [OrganizationAppCollaborator]
201
+ def organization_app_collaborator
202
+ @organization_app_collaborator_resource ||= OrganizationAppCollaborator.new(@client)
203
+ end
204
+
205
+ # An organization app encapsulates the organization specific functionality of Heroku apps.
206
+ #
207
+ # @return [OrganizationApp]
208
+ def organization_app
209
+ @organization_app_resource ||= OrganizationApp.new(@client)
210
+ end
211
+
212
+ # An organization member is an individual with access to an organization.
213
+ #
214
+ # @return [OrganizationMember]
215
+ def organization_member
216
+ @organization_member_resource ||= OrganizationMember.new(@client)
217
+ end
218
+
219
+ # Organizations allow you to manage access to a shared group of applications across your development team.
220
+ #
221
+ # @return [Organization]
222
+ def organization
223
+ @organization_resource ||= Organization.new(@client)
224
+ end
225
+
226
+ # Plans represent different configurations of add-ons that may be added to apps.
227
+ #
228
+ # @return [Plan]
229
+ def plan
230
+ @plan_resource ||= Plan.new(@client)
231
+ end
232
+
233
+ # Rate Limit represents the number of request tokens each account holds. Requests to this endpoint do not count towards the rate limit.
234
+ #
235
+ # @return [RateLimit]
236
+ def rate_limit
237
+ @rate_limit_resource ||= RateLimit.new(@client)
238
+ end
239
+
240
+ # A region represents a geographic location in which your application may run.
241
+ #
242
+ # @return [Region]
243
+ def region
244
+ @region_resource ||= Region.new(@client)
245
+ end
246
+
247
+ # A release represents a combination of code, config vars and add-ons for an app on Heroku.
248
+ #
249
+ # @return [Release]
250
+ def release
251
+ @release_resource ||= Release.new(@client)
252
+ end
253
+
254
+ # A slug is a snapshot of your application code that is ready to run on the platform.
255
+ #
256
+ # @return [Slug]
257
+ def slug
258
+ @slug_resource ||= Slug.new(@client)
259
+ end
260
+
261
+ # [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.
262
+ #
263
+ # @return [SSLEndpoint]
264
+ def ssl_endpoint
265
+ @ssl_endpoint_resource ||= SSLEndpoint.new(@client)
266
+ end
267
+
268
+ # Stacks are the different application execution environments available in the Heroku platform.
269
+ #
270
+ # @return [Stack]
271
+ def stack
272
+ @stack_resource ||= Stack.new(@client)
273
+ end
274
+ end
275
+
276
+ private
277
+
278
+ # An account feature represents a Heroku labs capability that can be enabled or disabled for an account on Heroku.
279
+ class AccountFeature
280
+ def initialize(client)
281
+ @client = client
282
+ end
283
+
284
+ # Info for an existing account feature.
285
+ #
286
+ # @param account_feature_id_or_account_feature_name: unique identifier of account feature or unique name of account feature
287
+ def info(account_feature_id_or_account_feature_name)
288
+ @client.account_feature.info(account_feature_id_or_account_feature_name)
289
+ end
290
+
291
+ # List existing account features.
292
+ def list()
293
+ @client.account_feature.list()
294
+ end
295
+
296
+ # Update an existing account feature.
297
+ #
298
+ # @param account_feature_id_or_account_feature_name: unique identifier of account feature or unique name of account feature
299
+ # @param body: the object to pass as the request payload
300
+ def update(account_feature_id_or_account_feature_name, body)
301
+ @client.account_feature.update(account_feature_id_or_account_feature_name, body)
302
+ end
303
+ end
304
+
305
+ # An account represents an individual signed up to use the Heroku platform.
306
+ class Account
307
+ def initialize(client)
308
+ @client = client
309
+ end
310
+
311
+ # Info for account.
312
+ def info()
313
+ @client.account.info()
314
+ end
315
+
316
+ # Update account.
317
+ #
318
+ # @param body: the object to pass as the request payload
319
+ def update(body)
320
+ @client.account.update(body)
321
+ end
322
+
323
+ # Change Email for account.
324
+ #
325
+ # @param body: the object to pass as the request payload
326
+ def change_email(body)
327
+ @client.account.change_email(body)
328
+ end
329
+
330
+ # Change Password for account.
331
+ #
332
+ # @param body: the object to pass as the request payload
333
+ def change_password(body)
334
+ @client.account.change_password(body)
335
+ end
25
336
  end
337
+
338
+ # Add-on services represent add-ons that may be provisioned for apps.
339
+ class AddonService
340
+ def initialize(client)
341
+ @client = client
342
+ end
343
+
344
+ # Info for existing addon-service.
345
+ #
346
+ # @param addon_service_id_or_addon_service_name: unique identifier of this addon-service or unique name of this addon-service
347
+ def info(addon_service_id_or_addon_service_name)
348
+ @client.addon_service.info(addon_service_id_or_addon_service_name)
349
+ end
350
+
351
+ # List existing addon-services.
352
+ def list()
353
+ @client.addon_service.list()
354
+ end
355
+ end
356
+
357
+ # Add-ons represent add-ons that have been provisioned for an app.
358
+ class Addon
359
+ def initialize(client)
360
+ @client = client
361
+ end
362
+
363
+ # Create a new add-on.
364
+ #
365
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
366
+ # @param body: the object to pass as the request payload
367
+ def create(app_id_or_app_name, body)
368
+ @client.addon.create(app_id_or_app_name, body)
369
+ end
370
+
371
+ # Delete an existing add-on.
372
+ #
373
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
374
+ # @param addon_id_or_addon_name: unique identifier of add-on or name of the add-on unique within its app
375
+ def delete(app_id_or_app_name, addon_id_or_addon_name)
376
+ @client.addon.delete(app_id_or_app_name, addon_id_or_addon_name)
377
+ end
378
+
379
+ # Info for an existing add-on.
380
+ #
381
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
382
+ # @param addon_id_or_addon_name: unique identifier of add-on or name of the add-on unique within its app
383
+ def info(app_id_or_app_name, addon_id_or_addon_name)
384
+ @client.addon.info(app_id_or_app_name, addon_id_or_addon_name)
385
+ end
386
+
387
+ # List existing add-ons.
388
+ #
389
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
390
+ def list(app_id_or_app_name)
391
+ @client.addon.list(app_id_or_app_name)
392
+ end
393
+
394
+ # Change add-on plan. Some add-ons may not support changing plans. In that case, an error will be returned.
395
+ #
396
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
397
+ # @param addon_id_or_addon_name: unique identifier of add-on or name of the add-on unique within its app
398
+ # @param body: the object to pass as the request payload
399
+ def update(app_id_or_app_name, addon_id_or_addon_name, body)
400
+ @client.addon.update(app_id_or_app_name, addon_id_or_addon_name, body)
401
+ end
402
+ end
403
+
404
+ # An app feature represents a Heroku labs capability that can be enabled or disabled for an app on Heroku.
405
+ class AppFeature
406
+ def initialize(client)
407
+ @client = client
408
+ end
409
+
410
+ # Info for an existing app feature.
411
+ #
412
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
413
+ # @param app_feature_id_or_app_feature_name: unique identifier of app feature or unique name of app feature
414
+ def info(app_id_or_app_name, app_feature_id_or_app_feature_name)
415
+ @client.app_feature.info(app_id_or_app_name, app_feature_id_or_app_feature_name)
416
+ end
417
+
418
+ # List existing app features.
419
+ #
420
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
421
+ def list(app_id_or_app_name)
422
+ @client.app_feature.list(app_id_or_app_name)
423
+ end
424
+
425
+ # Update an existing app feature.
426
+ #
427
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
428
+ # @param app_feature_id_or_app_feature_name: unique identifier of app feature or unique name of app feature
429
+ # @param body: the object to pass as the request payload
430
+ def update(app_id_or_app_name, app_feature_id_or_app_feature_name, body)
431
+ @client.app_feature.update(app_id_or_app_name, app_feature_id_or_app_feature_name, body)
432
+ end
433
+ end
434
+
435
+ # An app transfer represents a two party interaction for transferring ownership of an app.
436
+ class AppTransfer
437
+ def initialize(client)
438
+ @client = client
439
+ end
440
+
441
+ # Create a new app transfer.
442
+ #
443
+ # @param body: the object to pass as the request payload
444
+ def create(body)
445
+ @client.app_transfer.create(body)
446
+ end
447
+
448
+ # Delete an existing app transfer
449
+ #
450
+ # @param app_transfer_id_or_app_name: unique identifier of app transfer or unique name of app
451
+ def delete(app_transfer_id_or_app_name)
452
+ @client.app_transfer.delete(app_transfer_id_or_app_name)
453
+ end
454
+
455
+ # Info for existing app transfer.
456
+ #
457
+ # @param app_transfer_id_or_app_name: unique identifier of app transfer or unique name of app
458
+ def info(app_transfer_id_or_app_name)
459
+ @client.app_transfer.info(app_transfer_id_or_app_name)
460
+ end
461
+
462
+ # List existing apps transfers.
463
+ def list()
464
+ @client.app_transfer.list()
465
+ end
466
+
467
+ # Update an existing app transfer.
468
+ #
469
+ # @param app_transfer_id_or_app_name: unique identifier of app transfer or unique name of app
470
+ # @param body: the object to pass as the request payload
471
+ def update(app_transfer_id_or_app_name, body)
472
+ @client.app_transfer.update(app_transfer_id_or_app_name, body)
473
+ end
474
+ end
475
+
476
+ # An app represents the program that you would like to deploy and run on Heroku.
477
+ class App
478
+ def initialize(client)
479
+ @client = client
480
+ end
481
+
482
+ # Create a new app.
483
+ #
484
+ # @param body: the object to pass as the request payload
485
+ def create(body)
486
+ @client.app.create(body)
487
+ end
488
+
489
+ # Delete an existing app.
490
+ #
491
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
492
+ def delete(app_id_or_app_name)
493
+ @client.app.delete(app_id_or_app_name)
494
+ end
495
+
496
+ # Info for existing app.
497
+ #
498
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
499
+ def info(app_id_or_app_name)
500
+ @client.app.info(app_id_or_app_name)
501
+ end
502
+
503
+ # List existing apps.
504
+ def list()
505
+ @client.app.list()
506
+ end
507
+
508
+ # Update an existing app.
509
+ #
510
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
511
+ # @param body: the object to pass as the request payload
512
+ def update(app_id_or_app_name, body)
513
+ @client.app.update(app_id_or_app_name, body)
514
+ end
515
+ end
516
+
517
+ # A collaborator represents an account that has been given access to an app on Heroku.
518
+ class Collaborator
519
+ def initialize(client)
520
+ @client = client
521
+ end
522
+
523
+ # Create a new collaborator.
524
+ #
525
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
526
+ # @param body: the object to pass as the request payload
527
+ def create(app_id_or_app_name, body)
528
+ @client.collaborator.create(app_id_or_app_name, body)
529
+ end
530
+
531
+ # Delete an existing collaborator.
532
+ #
533
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
534
+ # @param collaborator_email_or_collaborator_id: invited email address of collaborator or unique identifier of collaborator
535
+ def delete(app_id_or_app_name, collaborator_email_or_collaborator_id)
536
+ @client.collaborator.delete(app_id_or_app_name, collaborator_email_or_collaborator_id)
537
+ end
538
+
539
+ # Info for existing collaborator.
540
+ #
541
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
542
+ # @param collaborator_email_or_collaborator_id: invited email address of collaborator or unique identifier of collaborator
543
+ def info(app_id_or_app_name, collaborator_email_or_collaborator_id)
544
+ @client.collaborator.info(app_id_or_app_name, collaborator_email_or_collaborator_id)
545
+ end
546
+
547
+ # List existing collaborators.
548
+ #
549
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
550
+ def list(app_id_or_app_name)
551
+ @client.collaborator.list(app_id_or_app_name)
552
+ end
553
+ end
554
+
555
+ # Config Vars allow you to manage the configuration information provided to an app on Heroku.
556
+ class ConfigVar
557
+ def initialize(client)
558
+ @client = client
559
+ end
560
+
561
+ # Get config-vars for app.
562
+ def info()
563
+ @client.config_var.info()
564
+ end
565
+
566
+ # Update config-vars for app. You can update existing config-vars by setting them again, and remove by setting it to `NULL`.
567
+ #
568
+ # @param body: the object to pass as the request payload
569
+ def update(body)
570
+ @client.config_var.update(body)
571
+ end
572
+ end
573
+
574
+ # Domains define what web routes should be routed to an app on Heroku.
575
+ class Domain
576
+ def initialize(client)
577
+ @client = client
578
+ end
579
+
580
+ # Create a new domain.
581
+ #
582
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
583
+ # @param body: the object to pass as the request payload
584
+ def create(app_id_or_app_name, body)
585
+ @client.domain.create(app_id_or_app_name, body)
586
+ end
587
+
588
+ # Delete an existing domain
589
+ #
590
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
591
+ # @param domain_id_or_domain_hostname: unique identifier of this domain or full hostname
592
+ def delete(app_id_or_app_name, domain_id_or_domain_hostname)
593
+ @client.domain.delete(app_id_or_app_name, domain_id_or_domain_hostname)
594
+ end
595
+
596
+ # Info for existing domain.
597
+ #
598
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
599
+ # @param domain_id_or_domain_hostname: unique identifier of this domain or full hostname
600
+ def info(app_id_or_app_name, domain_id_or_domain_hostname)
601
+ @client.domain.info(app_id_or_app_name, domain_id_or_domain_hostname)
602
+ end
603
+
604
+ # List existing domains.
605
+ #
606
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
607
+ def list(app_id_or_app_name)
608
+ @client.domain.list(app_id_or_app_name)
609
+ end
610
+ end
611
+
612
+ # Dynos encapsulate running processes of an app on Heroku.
613
+ class Dyno
614
+ def initialize(client)
615
+ @client = client
616
+ end
617
+
618
+ # Create a new dyno.
619
+ #
620
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
621
+ # @param body: the object to pass as the request payload
622
+ def create(app_id_or_app_name, body)
623
+ @client.dyno.create(app_id_or_app_name, body)
624
+ end
625
+
626
+ # Restart dyno.
627
+ #
628
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
629
+ # @param dyno_id_or_dyno_name: unique identifier of this dyno or the name of this process on this dyno
630
+ def restart(app_id_or_app_name, dyno_id_or_dyno_name)
631
+ @client.dyno.restart(app_id_or_app_name, dyno_id_or_dyno_name)
632
+ end
633
+
634
+ # Restart all dynos
635
+ #
636
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
637
+ def restart_all(app_id_or_app_name)
638
+ @client.dyno.restart_all(app_id_or_app_name)
639
+ end
640
+
641
+ # Info for existing dyno.
642
+ #
643
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
644
+ # @param dyno_id_or_dyno_name: unique identifier of this dyno or the name of this process on this dyno
645
+ def info(app_id_or_app_name, dyno_id_or_dyno_name)
646
+ @client.dyno.info(app_id_or_app_name, dyno_id_or_dyno_name)
647
+ end
648
+
649
+ # List existing dynos.
650
+ #
651
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
652
+ def list(app_id_or_app_name)
653
+ @client.dyno.list(app_id_or_app_name)
654
+ end
655
+ end
656
+
657
+ # 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.
658
+ class Formation
659
+ def initialize(client)
660
+ @client = client
661
+ end
662
+
663
+ # Info for a process type
664
+ #
665
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
666
+ # @param formation_id_or_formation_type: unique identifier of this process type or type of process to maintain
667
+ def info(app_id_or_app_name, formation_id_or_formation_type)
668
+ @client.formation.info(app_id_or_app_name, formation_id_or_formation_type)
669
+ end
670
+
671
+ # List process type formation
672
+ #
673
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
674
+ def list(app_id_or_app_name)
675
+ @client.formation.list(app_id_or_app_name)
676
+ end
677
+
678
+ # Batch update process types
679
+ #
680
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
681
+ # @param body: the object to pass as the request payload
682
+ def batch_update(app_id_or_app_name, body)
683
+ @client.formation.batch_update(app_id_or_app_name, body)
684
+ end
685
+
686
+ # Update process type
687
+ #
688
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
689
+ # @param formation_id_or_formation_type: unique identifier of this process type or type of process to maintain
690
+ # @param body: the object to pass as the request payload
691
+ def update(app_id_or_app_name, formation_id_or_formation_type, body)
692
+ @client.formation.update(app_id_or_app_name, formation_id_or_formation_type, body)
693
+ end
694
+ end
695
+
696
+ # Keys represent public SSH keys associated with an account and are used to authorize accounts as they are performing git operations.
697
+ class Key
698
+ def initialize(client)
699
+ @client = client
700
+ end
701
+
702
+ # Create a new key.
703
+ #
704
+ # @param body: the object to pass as the request payload
705
+ def create(body)
706
+ @client.key.create(body)
707
+ end
708
+
709
+ # Delete an existing key
710
+ #
711
+ # @param key_id_or_key_fingerprint: unique identifier of this key or a unique identifying string based on contents
712
+ def delete(key_id_or_key_fingerprint)
713
+ @client.key.delete(key_id_or_key_fingerprint)
714
+ end
715
+
716
+ # Info for existing key.
717
+ #
718
+ # @param key_id_or_key_fingerprint: unique identifier of this key or a unique identifying string based on contents
719
+ def info(key_id_or_key_fingerprint)
720
+ @client.key.info(key_id_or_key_fingerprint)
721
+ end
722
+
723
+ # List existing keys.
724
+ def list()
725
+ @client.key.list()
726
+ end
727
+ end
728
+
729
+ # [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.
730
+ class LogDrain
731
+ def initialize(client)
732
+ @client = client
733
+ end
734
+
735
+ # Create a new log drain.
736
+ #
737
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
738
+ # @param body: the object to pass as the request payload
739
+ def create(app_id_or_app_name, body)
740
+ @client.log_drain.create(app_id_or_app_name, body)
741
+ end
742
+
743
+ # Delete an existing log drain. Log drains added by add-ons can only be removed by removing the add-on.
744
+ #
745
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
746
+ # @param log_drain_id_or_log_drain_url: unique identifier of this log drain or url associated with the log drain
747
+ def delete(app_id_or_app_name, log_drain_id_or_log_drain_url)
748
+ @client.log_drain.delete(app_id_or_app_name, log_drain_id_or_log_drain_url)
749
+ end
750
+
751
+ # Info for existing log drain.
752
+ #
753
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
754
+ # @param log_drain_id_or_log_drain_url: unique identifier of this log drain or url associated with the log drain
755
+ def info(app_id_or_app_name, log_drain_id_or_log_drain_url)
756
+ @client.log_drain.info(app_id_or_app_name, log_drain_id_or_log_drain_url)
757
+ end
758
+
759
+ # List existing log drains.
760
+ #
761
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
762
+ def list(app_id_or_app_name)
763
+ @client.log_drain.list(app_id_or_app_name)
764
+ end
765
+ end
766
+
767
+ # A log session is a reference to the http based log stream for an app.
768
+ class LogSession
769
+ def initialize(client)
770
+ @client = client
771
+ end
772
+
773
+ # Create a new log session.
774
+ #
775
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
776
+ # @param body: the object to pass as the request payload
777
+ def create(app_id_or_app_name, body)
778
+ @client.log_session.create(app_id_or_app_name, body)
779
+ end
780
+ end
781
+
782
+ # 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)
783
+ class OauthAuthorization
784
+ def initialize(client)
785
+ @client = client
786
+ end
787
+
788
+ # Create a new OAuth authorization.
789
+ #
790
+ # @param body: the object to pass as the request payload
791
+ def create(body)
792
+ @client.oauth_authorization.create(body)
793
+ end
794
+
795
+ # Delete OAuth authorization.
796
+ #
797
+ # @param oauth_authorization_id: unique identifier of OAuth authorization
798
+ def delete(oauth_authorization_id)
799
+ @client.oauth_authorization.delete(oauth_authorization_id)
800
+ end
801
+
802
+ # Info for an OAuth authorization.
803
+ #
804
+ # @param oauth_authorization_id: unique identifier of OAuth authorization
805
+ def info(oauth_authorization_id)
806
+ @client.oauth_authorization.info(oauth_authorization_id)
807
+ end
808
+
809
+ # List OAuth authorizations.
810
+ def list()
811
+ @client.oauth_authorization.list()
812
+ end
813
+ end
814
+
815
+ # 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).
816
+ class OauthClient
817
+ def initialize(client)
818
+ @client = client
819
+ end
820
+
821
+ # Create a new OAuth client.
822
+ #
823
+ # @param body: the object to pass as the request payload
824
+ def create(body)
825
+ @client.oauth_client.create(body)
826
+ end
827
+
828
+ # Delete OAuth client.
829
+ #
830
+ # @param oauth_client_id: unique identifier of this OAuth client
831
+ def delete(oauth_client_id)
832
+ @client.oauth_client.delete(oauth_client_id)
833
+ end
834
+
835
+ # Info for an OAuth client
836
+ #
837
+ # @param oauth_client_id: unique identifier of this OAuth client
838
+ def info(oauth_client_id)
839
+ @client.oauth_client.info(oauth_client_id)
840
+ end
841
+
842
+ # List OAuth clients
843
+ def list()
844
+ @client.oauth_client.list()
845
+ end
846
+
847
+ # Update OAuth client
848
+ #
849
+ # @param oauth_client_id: unique identifier of this OAuth client
850
+ # @param body: the object to pass as the request payload
851
+ def update(oauth_client_id, body)
852
+ @client.oauth_client.update(oauth_client_id, body)
853
+ end
854
+ end
855
+
856
+ # 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)
857
+ class OauthGrant
858
+ def initialize(client)
859
+ @client = client
860
+ end
861
+ end
862
+
863
+ # 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)
864
+ class OauthToken
865
+ def initialize(client)
866
+ @client = client
867
+ end
868
+
869
+ # Create a new OAuth token.
870
+ #
871
+ # @param body: the object to pass as the request payload
872
+ def create(body)
873
+ @client.oauth_token.create(body)
874
+ end
875
+ end
876
+
877
+ # An organization collaborator represents an account that has been given access to an organization app on Heroku.
878
+ class OrganizationAppCollaborator
879
+ def initialize(client)
880
+ @client = client
881
+ end
882
+
883
+ # 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.
884
+ #
885
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
886
+ # @param body: the object to pass as the request payload
887
+ def create(app_id_or_app_name, body)
888
+ @client.organization_app_collaborator.create(app_id_or_app_name, body)
889
+ end
890
+
891
+ # Delete an existing collaborator from an organization app.
892
+ #
893
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
894
+ # @param collaborator_email_or_collaborator_id: invited email address of collaborator or unique identifier of collaborator
895
+ def delete(app_id_or_app_name, collaborator_email_or_collaborator_id)
896
+ @client.organization_app_collaborator.delete(app_id_or_app_name, collaborator_email_or_collaborator_id)
897
+ end
898
+
899
+ # Info for a collaborator on an organization app.
900
+ #
901
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
902
+ # @param collaborator_email_or_collaborator_id: invited email address of collaborator or unique identifier of collaborator
903
+ def info(app_id_or_app_name, collaborator_email_or_collaborator_id)
904
+ @client.organization_app_collaborator.info(app_id_or_app_name, collaborator_email_or_collaborator_id)
905
+ end
906
+
907
+ # List collaborators on an organization app.
908
+ #
909
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
910
+ def list(app_id_or_app_name)
911
+ @client.organization_app_collaborator.list(app_id_or_app_name)
912
+ end
913
+ end
914
+
915
+ # An organization app encapsulates the organization specific functionality of Heroku apps.
916
+ class OrganizationApp
917
+ def initialize(client)
918
+ @client = client
919
+ end
920
+
921
+ # Create a new organization app. Use this endpoint instead of the `/apps` endpoint when you want to create an app that will be owned by an organization in which you are a member, rather than your personal account.
922
+ #
923
+ # @param organization_name: unique name of organization
924
+ # @param body: the object to pass as the request payload
925
+ def create(organization_name, body)
926
+ @client.organization_app.create(organization_name, body)
927
+ end
928
+
929
+ # List organization apps.
930
+ #
931
+ # @param organization_name: unique name of organization
932
+ def list(organization_name)
933
+ @client.organization_app.list(organization_name)
934
+ end
935
+
936
+ # Lock or unlock an organization app.
937
+ #
938
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
939
+ # @param body: the object to pass as the request payload
940
+ def update_locked(app_id_or_app_name, body)
941
+ @client.organization_app.update_locked(app_id_or_app_name, body)
942
+ end
943
+
944
+ # Transfer an existing organization app to another Heroku account.
945
+ #
946
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
947
+ # @param body: the object to pass as the request payload
948
+ def transfer_to_account(app_id_or_app_name, body)
949
+ @client.organization_app.transfer_to_account(app_id_or_app_name, body)
950
+ end
951
+
952
+ # Transfer an existing organization app to another organization.
953
+ #
954
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
955
+ # @param body: the object to pass as the request payload
956
+ def transfer_to_organization(app_id_or_app_name, body)
957
+ @client.organization_app.transfer_to_organization(app_id_or_app_name, body)
958
+ end
959
+ end
960
+
961
+ # An organization member is an individual with access to an organization.
962
+ class OrganizationMember
963
+ def initialize(client)
964
+ @client = client
965
+ end
966
+
967
+ # Create a new organization member, or update their role.
968
+ #
969
+ # @param organization_name: unique name of organization
970
+ # @param body: the object to pass as the request payload
971
+ def create_or_update(organization_name, body)
972
+ @client.organization_member.create_or_update(organization_name, body)
973
+ end
974
+
975
+ # Remove a member from the organization.
976
+ #
977
+ # @param organization_name: unique name of organization
978
+ # @param organization_member_email: email address of the organization member
979
+ def delete(organization_name, organization_member_email)
980
+ @client.organization_member.delete(organization_name, organization_member_email)
981
+ end
982
+
983
+ # List members of the organization.
984
+ #
985
+ # @param organization_name: unique name of organization
986
+ def list(organization_name)
987
+ @client.organization_member.list(organization_name)
988
+ end
989
+ end
990
+
991
+ # Organizations allow you to manage access to a shared group of applications across your development team.
992
+ class Organization
993
+ def initialize(client)
994
+ @client = client
995
+ end
996
+
997
+ # List organizations in which you are a member.
998
+ def list()
999
+ @client.organization.list()
1000
+ end
1001
+
1002
+ # Set or Unset the organization as your default organization.
1003
+ #
1004
+ # @param organization_name: unique name of organization
1005
+ # @param body: the object to pass as the request payload
1006
+ def update(organization_name, body)
1007
+ @client.organization.update(organization_name, body)
1008
+ end
1009
+ end
1010
+
1011
+ # Plans represent different configurations of add-ons that may be added to apps.
1012
+ class Plan
1013
+ def initialize(client)
1014
+ @client = client
1015
+ end
1016
+
1017
+ # Info for existing plan.
1018
+ #
1019
+ # @param addon_service_id_or_addon_service_name: unique identifier of this addon-service or unique name of this addon-service
1020
+ # @param plan_id_or_plan_name: unique identifier of this plan or unique name of this plan
1021
+ def info(addon_service_id_or_addon_service_name, plan_id_or_plan_name)
1022
+ @client.plan.info(addon_service_id_or_addon_service_name, plan_id_or_plan_name)
1023
+ end
1024
+
1025
+ # List existing plans.
1026
+ #
1027
+ # @param addon_service_id_or_addon_service_name: unique identifier of this addon-service or unique name of this addon-service
1028
+ def list(addon_service_id_or_addon_service_name)
1029
+ @client.plan.list(addon_service_id_or_addon_service_name)
1030
+ end
1031
+ end
1032
+
1033
+ # Rate Limit represents the number of request tokens each account holds. Requests to this endpoint do not count towards the rate limit.
1034
+ class RateLimit
1035
+ def initialize(client)
1036
+ @client = client
1037
+ end
1038
+
1039
+ # Info for rate limits.
1040
+ def info()
1041
+ @client.rate_limit.info()
1042
+ end
1043
+ end
1044
+
1045
+ # A region represents a geographic location in which your application may run.
1046
+ class Region
1047
+ def initialize(client)
1048
+ @client = client
1049
+ end
1050
+
1051
+ # Info for existing region.
1052
+ #
1053
+ # @param region_id_or_region_name: unique identifier of region or unique name of region
1054
+ def info(region_id_or_region_name)
1055
+ @client.region.info(region_id_or_region_name)
1056
+ end
1057
+
1058
+ # List existing regions.
1059
+ def list()
1060
+ @client.region.list()
1061
+ end
1062
+ end
1063
+
1064
+ # A release represents a combination of code, config vars and add-ons for an app on Heroku.
1065
+ class Release
1066
+ def initialize(client)
1067
+ @client = client
1068
+ end
1069
+
1070
+ # Info for existing release.
1071
+ #
1072
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1073
+ # @param release_id_or_release_version: unique identifier of release or unique version assigned to the release
1074
+ def info(app_id_or_app_name, release_id_or_release_version)
1075
+ @client.release.info(app_id_or_app_name, release_id_or_release_version)
1076
+ end
1077
+
1078
+ # List existing releases.
1079
+ #
1080
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1081
+ def list(app_id_or_app_name)
1082
+ @client.release.list(app_id_or_app_name)
1083
+ end
1084
+
1085
+ # Create new release. The API cannot be used to create releases on Bamboo apps.
1086
+ #
1087
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1088
+ # @param body: the object to pass as the request payload
1089
+ def create(app_id_or_app_name, body)
1090
+ @client.release.create(app_id_or_app_name, body)
1091
+ end
1092
+
1093
+ # Rollback to an existing release.
1094
+ #
1095
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1096
+ # @param body: the object to pass as the request payload
1097
+ def rollback(app_id_or_app_name, body)
1098
+ @client.release.rollback(app_id_or_app_name, body)
1099
+ end
1100
+ end
1101
+
1102
+ # A slug is a snapshot of your application code that is ready to run on the platform.
1103
+ class Slug
1104
+ def initialize(client)
1105
+ @client = client
1106
+ end
1107
+
1108
+ # Info for existing slug.
1109
+ #
1110
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1111
+ # @param slug_id: unique identifier of slug
1112
+ def info(app_id_or_app_name, slug_id)
1113
+ @client.slug.info(app_id_or_app_name, slug_id)
1114
+ end
1115
+
1116
+ # 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).
1117
+ #
1118
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1119
+ # @param body: the object to pass as the request payload
1120
+ def create(app_id_or_app_name, body)
1121
+ @client.slug.create(app_id_or_app_name, body)
1122
+ end
1123
+ end
1124
+
1125
+ # [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.
1126
+ class SSLEndpoint
1127
+ def initialize(client)
1128
+ @client = client
1129
+ end
1130
+
1131
+ # Create a new SSL endpoint.
1132
+ #
1133
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1134
+ # @param body: the object to pass as the request payload
1135
+ def create(app_id_or_app_name, body)
1136
+ @client.ssl_endpoint.create(app_id_or_app_name, body)
1137
+ end
1138
+
1139
+ # Delete existing SSL endpoint.
1140
+ #
1141
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1142
+ # @param ssl_endpoint_id_or_ssl_endpoint_name: unique identifier of this SSL endpoint or unique name for SSL endpoint
1143
+ def delete(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name)
1144
+ @client.ssl_endpoint.delete(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name)
1145
+ end
1146
+
1147
+ # Info for existing SSL endpoint.
1148
+ #
1149
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1150
+ # @param ssl_endpoint_id_or_ssl_endpoint_name: unique identifier of this SSL endpoint or unique name for SSL endpoint
1151
+ def info(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name)
1152
+ @client.ssl_endpoint.info(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name)
1153
+ end
1154
+
1155
+ # List existing SSL endpoints.
1156
+ #
1157
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1158
+ def list(app_id_or_app_name)
1159
+ @client.ssl_endpoint.list(app_id_or_app_name)
1160
+ end
1161
+
1162
+ # Update an existing SSL endpoint.
1163
+ #
1164
+ # @param app_id_or_app_name: unique identifier of app or unique name of app
1165
+ # @param ssl_endpoint_id_or_ssl_endpoint_name: unique identifier of this SSL endpoint or unique name for SSL endpoint
1166
+ # @param body: the object to pass as the request payload
1167
+ def update(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name, body)
1168
+ @client.ssl_endpoint.update(app_id_or_app_name, ssl_endpoint_id_or_ssl_endpoint_name, body)
1169
+ end
1170
+ end
1171
+
1172
+ # Stacks are the different application execution environments available in the Heroku platform.
1173
+ class Stack
1174
+ def initialize(client)
1175
+ @client = client
1176
+ end
1177
+
1178
+ # Stack info.
1179
+ #
1180
+ # @param stack_name_or_stack_id: unique name of stack or unique identifier of stack
1181
+ def info(stack_name_or_stack_id)
1182
+ @client.stack.info(stack_name_or_stack_id)
1183
+ end
1184
+
1185
+ # List available stacks.
1186
+ def list()
1187
+ @client.stack.list()
1188
+ end
1189
+ end
1190
+
1191
+ SCHEMA = Heroics::Schema.new(MultiJson.load(<<-'HEROICS_SCHEMA'))
1192
+ {"description":"The platform API empowers developers to automate, extend and combine Heroku with other services.","definitions":{"account-feature":{"description":"An account feature represents a Heroku labs capability that can be enabled or disabled for an account on Heroku.","id":"schema/account-feature","$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.","id":"schema/account","$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"]},"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"},"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.","id":"schema/addon-service","$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.","id":"schema/addon","$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.","id":"schema/app-feature","$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-transfer":{"description":"An app transfer represents a two party interaction for transferring ownership of an app.","id":"schema/app-transfer","$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.","id":"schema/app","$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","format":"uri","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"}}},"collaborator":{"description":"A collaborator represents an account that has been given access to an app on Heroku.","id":"schema/collaborator","$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.","id":"schema/config-var","$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.","id":"schema/domain","$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.","id":"schema/dyno","$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.","id":"schema/formation","$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.","id":"schema/key","$schema":"http://json-schema.org/draft-04/hyper-schema","stability":"production","title":"Heroku Platform API - Key","type":["object"],"definitions":{"created_at":{"description":"when key was created","example":"2012-01-01T12:00:00Z","format":"date-time","readOnly":true,"type":["string"]},"email":{"description":"email address provided in key contents","example":"username@example.com","format":"email","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":{"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.","id":"schema/log-drain","$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.","id":"schema/log-session","$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)","id":"schema/oauth-authorization","$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).","id":"schema/oauth-client","$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)","id":"schema/oauth-grant","$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)","id":"schema/oauth-token","$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.","id":"schema/organization-app-collaborator","$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.","id":"schema/organization-app","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"]}},"links":[{"description":"Create a new organization app. Use this endpoint instead of the `/apps` endpoint when you want to create an app that will be owned by an organization in which you are a member, rather than your personal account.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/apps","method":"POST","rel":"create","schema":{"properties":{"locked":{"$ref":"#/definitions/organization-app/definitions/locked"},"name":{"$ref":"#/definitions/app/definitions/name"},"region":{"$ref":"#/definitions/region/definitions/name"},"stack":{"$ref":"#/definitions/stack/definitions/name"}},"type":["object"]},"title":"Create"},{"description":"List organization apps.","href":"/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/apps","method":"GET","rel":"instances","title":"List"},{"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"}},"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"}},"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"}},"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"},"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"}}},"organization-member":{"$schema":"http://json-schema.org/draft-04/hyper-schema","description":"An organization member is an individual with access to an organization.","id":"schema/organization-member","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"}},"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.","id":"schema/organization","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.","id":"schema/plan","$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.","id":"schema/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.","id":"schema/region","$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.","id":"schema/release","$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.","id":"schema/slug","$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.","id":"schema/ssl-endpoint","$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.","id":"schema/stack","$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-transfer":{"$ref":"#/definitions/app-transfer"},"app":{"$ref":"#/definitions/app"},"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"}},"$schema":"http://json-schema.org/draft-04/hyper-schema","title":"Heroku Platform API","type":["object"]}
1193
+ HEROICS_SCHEMA
26
1194
  end