Skip to content

Instantly share code, notes, and snippets.

@dhotson
Last active August 29, 2015 14:20
Show Gist options
  • Save dhotson/c08d7b63ff4de4c52c40 to your computer and use it in GitHub Desktop.
Save dhotson/c08d7b63ff4de4c52c40 to your computer and use it in GitHub Desktop.
Heroku schema
// curl https://api.heroku.com/schema -H "Accept: application/vnd.heroku+json; version=3"
{
"$schema": "http://interagent.github.io/interagent-hyper-schema",
"definitions": {
"account-feature": {
"description": "An account feature represents a Heroku labs capability that can be enabled or disabled for an account on Heroku.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "production",
"strictProperties": true,
"title": "Heroku Platform API - Account Feature",
"type": [
"object"
],
"definitions": {
"created_at": {
"description": "when account feature was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"description": {
"description": "description of account feature",
"example": "Causes account to example.",
"readOnly": true,
"type": [
"string"
]
},
"doc_url": {
"description": "documentation URL of account feature",
"example": "http://devcenter.heroku.com/articles/example",
"readOnly": true,
"type": [
"string"
]
},
"enabled": {
"description": "whether or not account feature has been enabled",
"example": true,
"readOnly": false,
"type": [
"boolean"
]
},
"id": {
"description": "unique identifier of account feature",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"readOnly": true,
"type": [
"string"
]
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/account-feature/definitions/id"
},
{
"$ref": "#/definitions/account-feature/definitions/name"
}
]
},
"name": {
"description": "unique name of account feature",
"example": "name",
"readOnly": true,
"type": [
"string"
]
},
"state": {
"description": "state of account feature",
"example": "public",
"readOnly": true,
"type": [
"string"
]
},
"updated_at": {
"description": "when account feature was updated",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
}
},
"links": [
{
"description": "Info for an existing account feature.",
"href": "/account/features/{(%23%2Fdefinitions%2Faccount-feature%2Fdefinitions%2Fidentity)}",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/account-feature"
},
"title": "Info"
},
{
"description": "List existing account features.",
"href": "/account/features",
"method": "GET",
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/account-feature"
},
"type": [
"array"
]
},
"title": "List"
},
{
"description": "Update an existing account feature.",
"href": "/account/features/{(%23%2Fdefinitions%2Faccount-feature%2Fdefinitions%2Fidentity)}",
"method": "PATCH",
"rel": "update",
"schema": {
"properties": {
"enabled": {
"$ref": "#/definitions/account-feature/definitions/enabled"
}
},
"required": [
"enabled"
],
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/account-feature"
},
"title": "Update"
}
],
"properties": {
"created_at": {
"$ref": "#/definitions/account-feature/definitions/created_at"
},
"description": {
"$ref": "#/definitions/account-feature/definitions/description"
},
"doc_url": {
"$ref": "#/definitions/account-feature/definitions/doc_url"
},
"enabled": {
"$ref": "#/definitions/account-feature/definitions/enabled"
},
"id": {
"$ref": "#/definitions/account-feature/definitions/id"
},
"name": {
"$ref": "#/definitions/account-feature/definitions/name"
},
"state": {
"$ref": "#/definitions/account-feature/definitions/state"
},
"updated_at": {
"$ref": "#/definitions/account-feature/definitions/updated_at"
}
}
},
"account": {
"description": "An account represents an individual signed up to use the Heroku platform.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "production",
"strictProperties": true,
"title": "Heroku Platform API - Account",
"type": [
"object"
],
"definitions": {
"allow_tracking": {
"default": true,
"description": "whether to allow third party web activity tracking",
"example": true,
"readOnly": false,
"type": [
"boolean"
]
},
"beta": {
"default": false,
"description": "whether allowed to utilize beta Heroku features",
"example": false,
"readOnly": false,
"type": [
"boolean"
]
},
"created_at": {
"description": "when account was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"email": {
"description": "unique email address of account",
"example": "username@example.com",
"format": "email",
"readOnly": false,
"type": [
"string"
]
},
"id": {
"description": "unique identifier of an account",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"readOnly": true,
"type": [
"string"
]
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/account/definitions/email"
},
{
"$ref": "#/definitions/account/definitions/id"
}
]
},
"last_login": {
"description": "when account last authorized with Heroku",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"name": {
"description": "full name of the account owner",
"example": "Tina Edmonds",
"readOnly": false,
"type": [
"string",
"null"
]
},
"new_password": {
"description": "the new password for the account when changing the password",
"example": "newpassword",
"readOnly": true,
"type": [
"string"
]
},
"password": {
"description": "current password on the account",
"example": "currentpassword",
"readOnly": true,
"type": [
"string"
]
},
"two_factor_authentication": {
"description": "whether two-factor auth is enabled on the account",
"example": false,
"readOnly": true,
"type": [
"boolean"
]
},
"updated_at": {
"description": "when account was updated",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"verified": {
"default": false,
"description": "whether account has been verified with billing information",
"example": false,
"readOnly": true,
"type": [
"boolean"
]
}
},
"links": [
{
"description": "Info for account.",
"href": "/account",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/account"
},
"title": "Info"
},
{
"description": "Update account.",
"href": "/account",
"method": "PATCH",
"rel": "update",
"schema": {
"properties": {
"allow_tracking": {
"$ref": "#/definitions/account/definitions/allow_tracking"
},
"beta": {
"$ref": "#/definitions/account/definitions/beta"
},
"name": {
"$ref": "#/definitions/account/definitions/name"
},
"password": {
"$ref": "#/definitions/account/definitions/password"
}
},
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/account"
},
"title": "Update"
},
{
"description": "Change Email for account.",
"href": "/account",
"method": "PATCH",
"rel": "update",
"schema": {
"properties": {
"email": {
"$ref": "#/definitions/account/definitions/email"
},
"password": {
"$ref": "#/definitions/account/definitions/password"
}
},
"required": [
"password",
"email"
],
"type": [
"object"
]
},
"title": "Change Email"
},
{
"description": "Change Password for account.",
"href": "/account",
"method": "PATCH",
"rel": "update",
"schema": {
"properties": {
"new_password": {
"$ref": "#/definitions/account/definitions/new_password"
},
"password": {
"$ref": "#/definitions/account/definitions/password"
}
},
"required": [
"new_password",
"password"
],
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/account"
},
"title": "Change Password"
},
{
"description": "Delete account. Note that this action cannot be undone.",
"href": "/account",
"method": "DELETE",
"rel": "destroy",
"targetSchema": {
"$ref": "#/definitions/account"
},
"title": "Delete"
}
],
"properties": {
"allow_tracking": {
"$ref": "#/definitions/account/definitions/allow_tracking"
},
"beta": {
"$ref": "#/definitions/account/definitions/beta"
},
"created_at": {
"$ref": "#/definitions/account/definitions/created_at"
},
"email": {
"$ref": "#/definitions/account/definitions/email"
},
"id": {
"$ref": "#/definitions/account/definitions/id"
},
"last_login": {
"$ref": "#/definitions/account/definitions/last_login"
},
"name": {
"$ref": "#/definitions/account/definitions/name"
},
"two_factor_authentication": {
"$ref": "#/definitions/account/definitions/two_factor_authentication"
},
"updated_at": {
"$ref": "#/definitions/account/definitions/updated_at"
},
"verified": {
"$ref": "#/definitions/account/definitions/verified"
},
"default_organization": {
"description": "organization selected by default",
"properties": {
"id": {
"$ref": "#/definitions/organization/definitions/identity"
},
"name": {
"$ref": "#/definitions/organization/definitions/name"
}
},
"strictProperties": true,
"type": [
"object",
"null"
]
}
}
},
"addon-attachment": {
"description": "An add-on attachment represents a connection between an app and an add-on that it has been given access to.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "prototype",
"strictProperties": true,
"title": "Heroku Platform API - Add-on Attachment",
"type": [
"object"
],
"definitions": {
"created_at": {
"description": "when add-on attachment was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"id": {
"description": "unique identifier of this add-on attachment",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"readOnly": true,
"type": [
"string"
]
},
"force": {
"default": false,
"description": "whether or not to allow existing attachment with same name to be replaced",
"example": false,
"readOnly": false,
"type": [
"boolean"
]
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/addon-attachment/definitions/id"
}
]
},
"scopedIdentity": {
"anyOf": [
{
"$ref": "#/definitions/addon-attachment/definitions/id"
},
{
"$ref": "#/definitions/addon-attachment/definitions/name"
}
]
},
"name": {
"description": "unique name for this add-on attachment to this app",
"example": "DATABASE",
"readOnly": true,
"type": [
"string"
]
},
"updated_at": {
"description": "when add-on attachment was updated",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
}
},
"links": [
{
"description": "Create a new add-on attachment.",
"href": "/addon-attachments",
"method": "POST",
"rel": "create",
"schema": {
"properties": {
"addon": {
"$ref": "#/definitions/addon/definitions/identity"
},
"app": {
"$ref": "#/definitions/app/definitions/identity"
},
"force": {
"$ref": "#/definitions/addon-attachment/definitions/force"
},
"name": {
"$ref": "#/definitions/addon-attachment/definitions/name"
}
},
"required": [
"addon",
"app"
],
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/addon-attachment"
},
"title": "Create"
},
{
"description": "Delete an existing add-on attachment.",
"href": "/addon-attachments/{(%23%2Fdefinitions%2Faddon-attachment%2Fdefinitions%2Fidentity)}",
"method": "DELETE",
"rel": "destroy",
"targetSchema": {
"$ref": "#/definitions/addon-attachment"
},
"title": "Delete"
},
{
"description": "Info for existing add-on attachment.",
"href": "/addon-attachments/{(%23%2Fdefinitions%2Faddon-attachment%2Fdefinitions%2Fidentity)}",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/addon-attachment"
},
"title": "Info"
},
{
"description": "List existing add-on attachments.",
"href": "/addon-attachments",
"method": "GET",
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/addon-attachment"
},
"type": [
"array"
]
},
"title": "List"
},
{
"description": "List existing add-on attachments for an add-on.",
"href": "/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}/addon-attachments",
"method": "GET",
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/addon-attachment"
},
"type": [
"array"
]
},
"title": "List by Add-on"
},
{
"description": "List existing add-on attachments for an app.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addon-attachments",
"method": "GET",
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/addon-attachment"
},
"type": [
"array"
]
},
"title": "List by App"
},
{
"description": "Info for existing add-on attachment for an app.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addon-attachments/{(%23%2Fdefinitions%2Faddon-attachment%2Fdefinitions%2FscopedIdentity)}",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/addon-attachment"
},
"title": "Info by App"
}
],
"properties": {
"addon": {
"description": "identity of add-on",
"properties": {
"id": {
"$ref": "#/definitions/addon/definitions/id"
},
"name": {
"$ref": "#/definitions/addon/definitions/name"
},
"app": {
"description": "billing application associated with this add-on",
"type": [
"object"
],
"properties": {
"id": {
"$ref": "#/definitions/app/definitions/id"
},
"name": {
"$ref": "#/definitions/app/definitions/name"
}
},
"strictProperties": true
}
}
},
"app": {
"description": "application that is attached to add-on",
"type": [
"object"
],
"properties": {
"id": {
"$ref": "#/definitions/app/definitions/id"
},
"name": {
"$ref": "#/definitions/app/definitions/name"
}
},
"strictProperties": true
},
"created_at": {
"$ref": "#/definitions/addon-attachment/definitions/created_at"
},
"id": {
"$ref": "#/definitions/addon-attachment/definitions/id"
},
"name": {
"$ref": "#/definitions/addon-attachment/definitions/name"
},
"updated_at": {
"$ref": "#/definitions/addon-attachment/definitions/updated_at"
}
}
},
"addon-service": {
"description": "Add-on services represent add-ons that may be provisioned for apps. Endpoints under add-on services can be accessed without authentication.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "production",
"strictProperties": true,
"title": "Heroku Platform API - Add-on Service",
"type": [
"object"
],
"definitions": {
"created_at": {
"description": "when addon-service was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"human_name": {
"description": "human-readable name of the addon service provider",
"example": "Heroku Postgres",
"readOnly": true,
"type": [
"string"
]
},
"id": {
"description": "unique identifier of this addon-service",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"readOnly": true,
"type": [
"string"
]
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/addon-service/definitions/id"
},
{
"$ref": "#/definitions/addon-service/definitions/name"
}
]
},
"name": {
"description": "unique name of this addon-service",
"example": "heroku-postgresql",
"readOnly": true,
"type": [
"string"
]
},
"state": {
"description": "release status for add-on service",
"enum": [
"alpha",
"beta",
"ga",
"shutdown"
],
"example": "ga",
"readOnly": true,
"type": [
"string"
]
},
"updated_at": {
"description": "when addon-service was updated",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
}
},
"links": [
{
"description": "Info for existing addon-service.",
"href": "/addon-services/{(%23%2Fdefinitions%2Faddon-service%2Fdefinitions%2Fidentity)}",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/addon-service"
},
"title": "Info"
},
{
"description": "List existing addon-services.",
"href": "/addon-services",
"method": "GET",
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/addon-service"
},
"type": [
"array"
]
},
"title": "List"
}
],
"properties": {
"created_at": {
"$ref": "#/definitions/addon-service/definitions/created_at"
},
"human_name": {
"$ref": "#/definitions/addon-service/definitions/human_name"
},
"id": {
"$ref": "#/definitions/addon-service/definitions/id"
},
"name": {
"$ref": "#/definitions/addon-service/definitions/name"
},
"state": {
"$ref": "#/definitions/addon-service/definitions/state"
},
"updated_at": {
"$ref": "#/definitions/addon-service/definitions/updated_at"
}
}
},
"addon": {
"description": "Add-ons represent add-ons that have been provisioned for an app.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "production",
"strictProperties": true,
"title": "Heroku Platform API - Add-on",
"type": [
"object"
],
"definitions": {
"config_vars": {
"description": "config vars exposed to the owning app by this add-on",
"example": [
"FOO",
"BAZ"
],
"items": {
"type": [
"string"
]
},
"readOnly": true,
"type": [
"array"
]
},
"created_at": {
"description": "when add-on was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"id": {
"description": "unique identifier of add-on",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"readOnly": true,
"type": [
"string"
]
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/addon/definitions/id"
},
{
"$ref": "#/definitions/addon/definitions/name"
}
]
},
"name": {
"description": "globally unique name of the add-on",
"example": "acme-inc-primary-database",
"pattern": "^[a-zA-Z][A-Za-z0-9_-]+$",
"readOnly": true,
"type": [
"string"
]
},
"provider_id": {
"description": "id of this add-on with its provider",
"example": "abcd1234",
"readOnly": true,
"type": [
"string"
]
},
"updated_at": {
"description": "when add-on was updated",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"web_url": {
"description": "URL for logging into web interface of add-on (e.g. a dashboard)",
"example": "https://postgres.heroku.com/databases/01234567-89ab-cdef-0123-456789abcdef",
"format": "uri",
"readOnly": true,
"type": [
"null",
"string"
]
}
},
"links": [
{
"description": "Create a new add-on.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons",
"method": "POST",
"rel": "create",
"schema": {
"properties": {
"attachment": {
"description": "name for add-on's initial attachment",
"example": {
"name": "DATABASE_FOLLOWER"
},
"name": {
"$ref": "#/definitions/addon-attachment/definitions/name"
},
"type": [
"object"
]
},
"config": {
"additionalProperties": false,
"description": "custom add-on provisioning options",
"example": {
"db-version": "1.2.3"
},
"patternProperties": {
"^\\w+$": {
"type": [
"string"
]
}
},
"type": [
"object"
]
},
"plan": {
"$ref": "#/definitions/plan/definitions/identity"
}
},
"required": [
"plan"
],
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/addon"
},
"title": "Create"
},
{
"description": "Delete an existing add-on.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}",
"method": "DELETE",
"rel": "destroy",
"targetSchema": {
"$ref": "#/definitions/addon"
},
"title": "Delete"
},
{
"description": "Info for an existing add-on.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/addon"
},
"title": "Info"
},
{
"description": "List all existing add-ons.",
"href": "/addons",
"method": "GET",
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/addon"
},
"type": [
"array"
]
},
"title": "List"
},
{
"description": "Info for an existing add-on.",
"href": "/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/addon"
},
"title": "Info"
},
{
"description": "List existing add-ons for an app.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons",
"method": "GET",
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/addon"
},
"type": [
"array"
]
},
"title": "List by App"
},
{
"description": "Change add-on plan. Some add-ons may not support changing plans. In that case, an error will be returned.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons/{(%23%2Fdefinitions%2Faddon%2Fdefinitions%2Fidentity)}",
"method": "PATCH",
"rel": "update",
"schema": {
"properties": {
"plan": {
"$ref": "#/definitions/plan/definitions/identity"
}
},
"required": [
"plan"
],
"type": [
"object"
]
},
"title": "Update"
}
],
"properties": {
"addon_service": {
"description": "identity of add-on service",
"properties": {
"id": {
"$ref": "#/definitions/addon-service/definitions/id"
},
"name": {
"$ref": "#/definitions/addon-service/definitions/name"
}
},
"strictProperties": true,
"type": [
"object"
]
},
"app": {
"description": "billing application associated with this add-on",
"type": [
"object"
],
"properties": {
"id": {
"$ref": "#/definitions/app/definitions/id"
},
"name": {
"$ref": "#/definitions/app/definitions/name"
}
},
"strictProperties": true
},
"config_vars": {
"$ref": "#/definitions/addon/definitions/config_vars"
},
"created_at": {
"$ref": "#/definitions/addon/definitions/created_at"
},
"id": {
"$ref": "#/definitions/addon/definitions/id"
},
"name": {
"$ref": "#/definitions/addon/definitions/name"
},
"plan": {
"description": "identity of add-on plan",
"properties": {
"id": {
"$ref": "#/definitions/plan/definitions/id"
},
"name": {
"$ref": "#/definitions/plan/definitions/name"
}
},
"strictProperties": true,
"type": [
"object"
]
},
"provider_id": {
"$ref": "#/definitions/addon/definitions/provider_id"
},
"updated_at": {
"$ref": "#/definitions/addon/definitions/updated_at"
},
"web_url": {
"$ref": "#/definitions/addon/definitions/web_url"
}
}
},
"app-feature": {
"description": "An app feature represents a Heroku labs capability that can be enabled or disabled for an app on Heroku.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "production",
"strictProperties": true,
"title": "Heroku Platform API - App Feature",
"type": [
"object"
],
"definitions": {
"created_at": {
"description": "when app feature was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"description": {
"description": "description of app feature",
"example": "Causes app to example.",
"readOnly": true,
"type": [
"string"
]
},
"doc_url": {
"description": "documentation URL of app feature",
"example": "http://devcenter.heroku.com/articles/example",
"readOnly": true,
"type": [
"string"
]
},
"enabled": {
"description": "whether or not app feature has been enabled",
"example": true,
"readOnly": false,
"type": [
"boolean"
]
},
"id": {
"description": "unique identifier of app feature",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"readOnly": true,
"type": [
"string"
]
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/app-feature/definitions/id"
},
{
"$ref": "#/definitions/app-feature/definitions/name"
}
]
},
"name": {
"description": "unique name of app feature",
"example": "name",
"readOnly": true,
"type": [
"string"
]
},
"state": {
"description": "state of app feature",
"example": "public",
"readOnly": true,
"type": [
"string"
]
},
"updated_at": {
"description": "when app feature was updated",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
}
},
"links": [
{
"description": "Info for an existing app feature.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/features/{(%23%2Fdefinitions%2Fapp-feature%2Fdefinitions%2Fidentity)}",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/app-feature"
},
"title": "Info"
},
{
"description": "List existing app features.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/features",
"method": "GET",
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/app-feature"
},
"type": [
"array"
]
},
"title": "List"
},
{
"description": "Update an existing app feature.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/features/{(%23%2Fdefinitions%2Fapp-feature%2Fdefinitions%2Fidentity)}",
"method": "PATCH",
"rel": "update",
"schema": {
"properties": {
"enabled": {
"$ref": "#/definitions/app-feature/definitions/enabled"
}
},
"required": [
"enabled"
],
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/app-feature"
},
"title": "Update"
}
],
"properties": {
"created_at": {
"$ref": "#/definitions/app-feature/definitions/created_at"
},
"description": {
"$ref": "#/definitions/app-feature/definitions/description"
},
"doc_url": {
"$ref": "#/definitions/app-feature/definitions/doc_url"
},
"enabled": {
"$ref": "#/definitions/app-feature/definitions/enabled"
},
"id": {
"$ref": "#/definitions/app-feature/definitions/id"
},
"name": {
"$ref": "#/definitions/app-feature/definitions/name"
},
"state": {
"$ref": "#/definitions/app-feature/definitions/state"
},
"updated_at": {
"$ref": "#/definitions/app-feature/definitions/updated_at"
}
}
},
"app-setup": {
"description": "An app setup represents an app on Heroku that is setup using an environment, addons, and scripts described in an app.json manifest file.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "production",
"strictProperties": true,
"title": "Heroku Setup API - App Setup",
"type": [
"object"
],
"definitions": {
"id": {
"description": "unique identifier of app setup",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"readOnly": true,
"type": [
"string"
],
"format": "uuid"
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/app-setup/definitions/id"
}
]
},
"created_at": {
"description": "when app setup was created",
"example": "2012-01-01T12:00:00Z",
"readOnly": true,
"type": [
"string"
],
"format": "date-time"
},
"updated_at": {
"description": "when app setup was updated",
"example": "2012-01-01T12:00:00Z",
"readOnly": true,
"type": [
"string"
],
"format": "date-time"
},
"status": {
"description": "the overall status of app setup",
"example": "succeeded",
"enum": [
"failed",
"pending",
"succeeded"
],
"readOnly": true,
"type": [
"string"
]
},
"resolved_success_url": {
"description": "fully qualified success url",
"example": "https://example.herokuapp.com/welcome",
"readOnly": true,
"type": [
"string",
"null"
]
},
"failure_message": {
"description": "reason that app setup has failed",
"example": "invalid app.json",
"readOnly": true,
"type": [
"string",
"null"
]
},
"manifest_errors": {
"description": "errors associated with invalid app.json manifest file",
"example": [
"config var FOO is required"
],
"readOnly": true,
"items": {
"type": [
"string"
]
},
"type": [
"array"
]
},
"postdeploy": {
"description": "result of postdeploy script",
"type": [
"object",
"null"
],
"properties": {
"output": {
"description": "output of the postdeploy script",
"example": "assets precompiled",
"readOnly": true,
"type": [
"string"
]
},
"exit_code": {
"description": "The exit code of the postdeploy script",
"example": 1,
"readOnly": true,
"type": [
"integer"
]
}
},
"readOnly": true
}
},
"properties": {
"id": {
"$ref": "#/definitions/app-setup/definitions/id"
},
"created_at": {
"$ref": "#/definitions/app-setup/definitions/created_at"
},
"updated_at": {
"$ref": "#/definitions/app-setup/definitions/updated_at"
},
"status": {
"$ref": "#/definitions/app-setup/definitions/status"
},
"failure_message": {
"$ref": "#/definitions/app-setup/definitions/failure_message"
},
"app": {
"description": "identity of app",
"strictProperties": true,
"type": [
"object"
],
"properties": {
"id": {
"$ref": "#/definitions/app/definitions/id"
},
"name": {
"$ref": "#/definitions/app/definitions/name"
}
}
},
"build": {
"description": "identity and status of build",
"strictProperties": true,
"type": [
"object"
],
"properties": {
"id": {
"$ref": "#/definitions/build/definitions/id"
},
"status": {
"$ref": "#/definitions/build/definitions/status"
}
}
},
"manifest_errors": {
"$ref": "#/definitions/app-setup/definitions/manifest_errors"
},
"postdeploy": {
"$ref": "#/definitions/app-setup/definitions/postdeploy"
},
"resolved_success_url": {
"$ref": "#/definitions/app-setup/definitions/resolved_success_url"
}
},
"links": [
{
"description": "Create a new app setup from a gzipped tar archive containing an app.json manifest file.",
"title": "Create",
"rel": "create",
"method": "POST",
"href": "/app-setups",
"schema": {
"required": [
"source_blob"
],
"type": [
"object"
],
"properties": {
"app": {
"description": "optional parameters for created app",
"properties": {
"locked": {
"$ref": "#/definitions/organization-app/definitions/locked"
},
"name": {
"$ref": "#/definitions/app/definitions/name"
},
"organization": {
"$ref": "#/definitions/organization/definitions/name"
},
"personal": {
"$ref": "#/definitions/organization-app/definitions/personal"
},
"region": {
"$ref": "#/definitions/region/definitions/name"
},
"stack": {
"$ref": "#/definitions/stack/definitions/name"
}
},
"type": [
"object"
]
},
"source_blob": {
"description": "gzipped tarball of source code containing app.json manifest file",
"example": "https://example.com/source.tgz?token=xyz",
"properties": {
"url": {
"description": "URL of gzipped tarball of source code containing app.json manifest file",
"example": "https://example.com/source.tgz?token=xyz",
"readOnly": true,
"type": [
"string"
]
}
},
"type": [
"object"
]
},
"overrides": {
"description": "overrides of keys in the app.json manifest file",
"example": {
"env": {
"FOO": "bar",
"BAZ": "qux"
}
},
"properties": {
"env": {
"description": "overrides of the env specified in the app.json manifest file",
"example": {
"FOO": "bar",
"BAZ": "qux"
},
"readOnly": true,
"additionalProperties": false,
"patternProperties": {
"^\\w+$": {
"type": [
"string"
]
}
},
"type": [
"object"
]
}
},
"type": [
"object"
]
}
}
},
"targetSchema": {
"$ref": "#/definitions/app-setup"
}
},
{
"description": "Get the status of an app setup.",
"title": "Info",
"rel": "self",
"method": "GET",
"href": "/app-setups/{(%23%2Fdefinitions%2Fapp-setup%2Fdefinitions%2Fidentity)}",
"targetSchema": {
"$ref": "#/definitions/app-setup"
}
}
]
},
"app-transfer": {
"description": "An app transfer represents a two party interaction for transferring ownership of an app.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "production",
"strictProperties": true,
"title": "Heroku Platform API - App Transfer",
"type": [
"object"
],
"definitions": {
"created_at": {
"description": "when app transfer was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"id": {
"description": "unique identifier of app transfer",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"readOnly": true,
"type": [
"string"
]
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/app-transfer/definitions/id"
},
{
"$ref": "#/definitions/app/definitions/name"
}
]
},
"state": {
"description": "the current state of an app transfer",
"enum": [
"pending",
"accepted",
"declined"
],
"example": "pending",
"readOnly": true,
"type": [
"string"
]
},
"updated_at": {
"description": "when app transfer was updated",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
}
},
"links": [
{
"description": "Create a new app transfer.",
"href": "/account/app-transfers",
"method": "POST",
"rel": "create",
"schema": {
"properties": {
"app": {
"$ref": "#/definitions/app/definitions/identity"
},
"recipient": {
"$ref": "#/definitions/account/definitions/identity"
}
},
"required": [
"app",
"recipient"
],
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/app-transfer"
},
"title": "Create"
},
{
"description": "Delete an existing app transfer",
"href": "/account/app-transfers/{(%23%2Fdefinitions%2Fapp-transfer%2Fdefinitions%2Fidentity)}",
"method": "DELETE",
"rel": "destroy",
"targetSchema": {
"$ref": "#/definitions/app-transfer"
},
"title": "Delete"
},
{
"description": "Info for existing app transfer.",
"href": "/account/app-transfers/{(%23%2Fdefinitions%2Fapp-transfer%2Fdefinitions%2Fidentity)}",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/app-transfer"
},
"title": "Info"
},
{
"description": "List existing apps transfers.",
"href": "/account/app-transfers",
"method": "GET",
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/app-transfer"
},
"type": [
"array"
]
},
"title": "List"
},
{
"description": "Update an existing app transfer.",
"href": "/account/app-transfers/{(%23%2Fdefinitions%2Fapp-transfer%2Fdefinitions%2Fidentity)}",
"method": "PATCH",
"rel": "update",
"schema": {
"properties": {
"state": {
"$ref": "#/definitions/app-transfer/definitions/state"
}
},
"required": [
"state"
],
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/app-transfer"
},
"title": "Update"
}
],
"properties": {
"app": {
"description": "app involved in the transfer",
"properties": {
"name": {
"$ref": "#/definitions/app/definitions/name"
},
"id": {
"$ref": "#/definitions/app/definitions/id"
}
},
"type": [
"object"
]
},
"created_at": {
"$ref": "#/definitions/app-transfer/definitions/created_at"
},
"id": {
"$ref": "#/definitions/app-transfer/definitions/id"
},
"owner": {
"description": "identity of the owner of the transfer",
"properties": {
"email": {
"$ref": "#/definitions/account/definitions/email"
},
"id": {
"$ref": "#/definitions/account/definitions/id"
}
},
"strictProperties": true,
"type": [
"object"
]
},
"recipient": {
"description": "identity of the recipient of the transfer",
"properties": {
"email": {
"$ref": "#/definitions/account/definitions/email"
},
"id": {
"$ref": "#/definitions/account/definitions/id"
}
},
"strictProperties": true,
"type": [
"object"
]
},
"state": {
"$ref": "#/definitions/app-transfer/definitions/state"
},
"updated_at": {
"$ref": "#/definitions/app-transfer/definitions/updated_at"
}
}
},
"app": {
"description": "An app represents the program that you would like to deploy and run on Heroku.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "production",
"strictProperties": true,
"title": "Heroku Platform API - App",
"type": [
"object"
],
"definitions": {
"archived_at": {
"description": "when app was archived",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"null",
"string"
]
},
"buildpack_provided_description": {
"description": "description from buildpack of app",
"example": "Ruby/Rack",
"readOnly": true,
"type": [
"null",
"string"
]
},
"created_at": {
"description": "when app was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"git_url": {
"description": "git repo URL of app",
"example": "git@heroku.com:example.git",
"pattern": "^git@heroku\\.com:[a-z][a-z0-9-]{2,29}\\.git$",
"readOnly": true,
"type": [
"string"
]
},
"id": {
"description": "unique identifier of app",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"readOnly": true,
"type": [
"string"
]
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/app/definitions/id"
},
{
"$ref": "#/definitions/app/definitions/name"
}
]
},
"maintenance": {
"default": false,
"description": "maintenance status of app",
"example": false,
"readOnly": false,
"type": [
"boolean"
]
},
"name": {
"description": "unique name of app",
"example": "example",
"pattern": "^[a-z][a-z0-9-]{3,30}$",
"readOnly": false,
"type": [
"string"
]
},
"released_at": {
"default": null,
"description": "when app was released",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"null",
"string"
]
},
"repo_size": {
"default": null,
"description": "git repo size in bytes of app",
"example": 0,
"readOnly": true,
"type": [
"integer",
"null"
]
},
"slug_size": {
"default": null,
"description": "slug size in bytes of app",
"example": 0,
"readOnly": true,
"type": [
"integer",
"null"
]
},
"updated_at": {
"description": "when app was updated",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"web_url": {
"description": "web URL of app",
"example": "https://example.herokuapp.com/",
"format": "uri",
"pattern": "^https://[a-z][a-z0-9-]{3,30}\\.herokuapp\\.com/$",
"readOnly": true,
"type": [
"string"
]
}
},
"links": [
{
"description": "Create a new app.",
"href": "/apps",
"method": "POST",
"rel": "create",
"schema": {
"properties": {
"name": {
"$ref": "#/definitions/app/definitions/name"
},
"region": {
"$ref": "#/definitions/region/definitions/identity"
},
"stack": {
"$ref": "#/definitions/stack/definitions/identity"
}
},
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/app"
},
"title": "Create"
},
{
"description": "Delete an existing app.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}",
"method": "DELETE",
"rel": "destroy",
"targetSchema": {
"$ref": "#/definitions/app"
},
"title": "Delete"
},
{
"description": "Info for existing app.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/app"
},
"title": "Info"
},
{
"description": "List existing apps.",
"href": "/apps",
"method": "GET",
"ranges": [
"id",
"name",
"updated_at"
],
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/app"
},
"type": [
"array"
]
},
"title": "List"
},
{
"description": "Update an existing app.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}",
"method": "PATCH",
"rel": "update",
"schema": {
"properties": {
"build_stack": {
"$ref": "#/definitions/stack/definitions/identity"
},
"maintenance": {
"$ref": "#/definitions/app/definitions/maintenance"
},
"name": {
"$ref": "#/definitions/app/definitions/name"
}
},
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/app"
},
"title": "Update"
}
],
"properties": {
"archived_at": {
"$ref": "#/definitions/app/definitions/archived_at"
},
"buildpack_provided_description": {
"$ref": "#/definitions/app/definitions/buildpack_provided_description"
},
"build_stack": {
"description": "identity of the stack that will be used for new builds",
"properties": {
"id": {
"$ref": "#/definitions/stack/definitions/id"
},
"name": {
"$ref": "#/definitions/stack/definitions/name"
}
},
"strictProperties": true,
"type": [
"object"
]
},
"created_at": {
"$ref": "#/definitions/app/definitions/created_at"
},
"git_url": {
"$ref": "#/definitions/app/definitions/git_url"
},
"id": {
"$ref": "#/definitions/app/definitions/id"
},
"maintenance": {
"$ref": "#/definitions/app/definitions/maintenance"
},
"name": {
"$ref": "#/definitions/app/definitions/name"
},
"owner": {
"description": "identity of app owner",
"properties": {
"email": {
"$ref": "#/definitions/account/definitions/email"
},
"id": {
"$ref": "#/definitions/account/definitions/id"
}
},
"strictProperties": true,
"type": [
"object"
]
},
"region": {
"description": "identity of app region",
"properties": {
"id": {
"$ref": "#/definitions/region/definitions/id"
},
"name": {
"$ref": "#/definitions/region/definitions/name"
}
},
"strictProperties": true,
"type": [
"object"
]
},
"released_at": {
"$ref": "#/definitions/app/definitions/released_at"
},
"repo_size": {
"$ref": "#/definitions/app/definitions/repo_size"
},
"slug_size": {
"$ref": "#/definitions/app/definitions/slug_size"
},
"stack": {
"description": "identity of app stack",
"properties": {
"id": {
"$ref": "#/definitions/stack/definitions/id"
},
"name": {
"$ref": "#/definitions/stack/definitions/name"
}
},
"strictProperties": true,
"type": [
"object"
]
},
"updated_at": {
"$ref": "#/definitions/app/definitions/updated_at"
},
"web_url": {
"$ref": "#/definitions/app/definitions/web_url"
}
}
},
"build-result": {
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"description": "A build result contains the output from a build.",
"title": "Heroku Build API - Build Result",
"stability": "production",
"strictProperties": true,
"type": [
"object"
],
"definitions": {
"identity": {
},
"exit_code": {
"description": "status from the build",
"example": 0,
"readOnly": true,
"type": [
"number"
]
},
"line": {
"description": "a single line of output to STDOUT or STDERR from the build.",
"strictProperties": true,
"type": [
"object"
],
"example": {
"stream": "STDOUT",
"line": "-----> Ruby app detected\n"
},
"readOnly": true,
"definitions": {
"stream": {
"type": [
"string"
],
"enum": [
"STDOUT",
"STDERR"
],
"description": "The output stream where the line was sent.",
"example": "STDOUT",
"readOnly": true
},
"line": {
"type": [
"string"
],
"example": "-----> Ruby app detected\n",
"readOnly": true,
"description": "A line of output from the build."
}
},
"properties": {
"stream": {
"$ref": "#/definitions/build-result/definitions/line/definitions/stream"
},
"line": {
"$ref": "#/definitions/build-result/definitions/line/definitions/line"
}
}
}
},
"links": [
{
"description": "Info for existing result.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/builds/{(%23%2Fdefinitions%2Fbuild%2Fdefinitions%2Fidentity)}/result",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/build-result"
},
"title": "Info"
}
],
"properties": {
"build": {
"description": "identity of build",
"properties": {
"id": {
"$ref": "#/definitions/build/definitions/id"
},
"status": {
"$ref": "#/definitions/build/definitions/status"
}
},
"type": [
"object"
]
},
"exit_code": {
"$ref": "#/definitions/build-result/definitions/exit_code"
},
"lines": {
"type": [
"array"
],
"items": {
"$ref": "#/definitions/build-result/definitions/line"
},
"description": "A list of all the lines of a build's output.",
"example": [
{
"line": "-----> Ruby app detected\n",
"stream": "STDOUT"
}
]
}
}
},
"build": {
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"description": "A build represents the process of transforming a code tarball into a slug",
"title": "Heroku Build API - Build",
"stability": "production",
"strictProperties": true,
"type": [
"object"
],
"definitions": {
"created_at": {
"description": "when build was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"id": {
"description": "unique identifier of build",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"readOnly": true,
"type": [
"string"
]
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/build/definitions/id"
}
]
},
"source_blob": {
"description": "location of gzipped tarball of source code used to create build",
"properties": {
"url": {
"description": "URL where gzipped tar archive of source code for build was downloaded.",
"example": "https://example.com/source.tgz?token=xyz",
"readOnly": true,
"type": [
"string"
]
},
"version": {
"description": "Version of the gzipped tarball.",
"example": "v1.3.0",
"readOnly": true,
"type": [
"string",
"null"
]
}
},
"strictProperties": true,
"type": [
"object"
]
},
"status": {
"description": "status of build",
"enum": [
"failed",
"pending",
"succeeded"
],
"example": "succeeded",
"readOnly": true,
"type": [
"string"
]
},
"updated_at": {
"description": "when build was updated",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
}
},
"links": [
{
"description": "Create a new build.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/builds",
"method": "POST",
"rel": "create",
"schema": {
"type": [
"object"
],
"properties": {
"source_blob": {
"$ref": "#/definitions/build/definitions/source_blob"
}
},
"required": [
"source_blob"
]
},
"targetSchema": {
"$ref": "#/definitions/build"
},
"title": "Create"
},
{
"description": "Info for existing build.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/builds/{(%23%2Fdefinitions%2Fbuild%2Fdefinitions%2Fidentity)}",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/build"
},
"title": "Info"
},
{
"description": "List existing build.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/builds",
"method": "GET",
"ranges": [
"id",
"started_at"
],
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/build"
},
"type": [
"array"
]
},
"title": "List"
}
],
"properties": {
"created_at": {
"$ref": "#/definitions/build/definitions/created_at"
},
"id": {
"$ref": "#/definitions/build/definitions/id"
},
"source_blob": {
"$ref": "#/definitions/build/definitions/source_blob"
},
"slug": {
"description": "slug created by this build",
"properties": {
"id": {
"$ref": "#/definitions/slug/definitions/id"
}
},
"strictProperties": true,
"type": [
"object",
"null"
]
},
"status": {
"$ref": "#/definitions/build/definitions/status"
},
"updated_at": {
"$ref": "#/definitions/build/definitions/updated_at"
},
"user": {
"description": "user that started the build",
"properties": {
"id": {
"$ref": "#/definitions/account/definitions/id"
},
"email": {
"$ref": "#/definitions/account/definitions/email"
}
},
"strictProperties": true,
"type": [
"object"
]
}
}
},
"buildpack-installation": {
"description": "An buildpack installtion represents a buildpack that will be run against an app.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "production",
"strictProperties": true,
"title": "Heroku Platform API - Buildpack Installations",
"type": [
"object"
],
"definitions": {
"ordinal": {
"description": "determines the order in which the buildpacks will execute",
"example": 0,
"readOnly": true,
"type": [
"integer"
]
},
"update": {
"additionalProperties": false,
"description": "Properties to update a buildpack installation",
"properties": {
"buildpack": {
"$ref": "#/definitions/buildpack-installation/definitions/url"
}
},
"readOnly": false,
"required": [
"buildpack"
],
"type": [
"object"
]
},
"url": {
"description": "location of the buildpack for the app",
"example": "https://github.com/heroku/heroku-buildpack-ruby",
"readOnly": false,
"type": [
"string"
]
}
},
"links": [
{
"description": "Update an app's buildpack installations.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/buildpack-installations",
"method": "PUT",
"rel": "update",
"schema": {
"properties": {
"updates": {
"items": {
"$ref": "#/definitions/buildpack-installation/definitions/update"
},
"type": [
"array"
]
}
},
"required": [
"updates"
],
"type": [
"object"
]
},
"targetSchema": {
"items": {
"$ref": "#/definitions/buildpack-installation"
},
"type": [
"array"
]
},
"title": "Update"
},
{
"description": "Info for existing buildpack installations.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/buildpack-installations",
"method": "GET",
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/buildpack-installation"
},
"type": [
"array"
]
},
"title": "List"
}
],
"properties": {
"ordinal": {
"$ref": "#/definitions/buildpack-installation/definitions/ordinal"
},
"buildpack": {
"description": "buildpack",
"properties": {
"url": {
"$ref": "#/definitions/buildpack-installation/definitions/url"
}
},
"type": [
"object"
]
}
}
},
"collaborator": {
"description": "A collaborator represents an account that has been given access to an app on Heroku.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "production",
"strictProperties": true,
"title": "Heroku Platform API - Collaborator",
"type": [
"object"
],
"definitions": {
"created_at": {
"description": "when collaborator was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"email": {
"description": "invited email address of collaborator",
"example": "collaborator@example.com",
"format": "email",
"readOnly": false,
"type": [
"string"
]
},
"id": {
"description": "unique identifier of collaborator",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"readOnly": true,
"type": [
"string"
]
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/collaborator/definitions/email"
},
{
"$ref": "#/definitions/collaborator/definitions/id"
}
]
},
"silent": {
"default": false,
"description": "whether to suppress email invitation when creating collaborator",
"example": false,
"readOnly": false,
"type": [
"boolean"
]
},
"updated_at": {
"description": "when collaborator was updated",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
}
},
"links": [
{
"description": "Create a new collaborator.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators",
"method": "POST",
"rel": "create",
"schema": {
"properties": {
"silent": {
"$ref": "#/definitions/collaborator/definitions/silent"
},
"user": {
"$ref": "#/definitions/account/definitions/identity"
}
},
"required": [
"user"
],
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/collaborator"
},
"title": "Create"
},
{
"description": "Delete an existing collaborator.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Fcollaborator%2Fdefinitions%2Fidentity)}",
"method": "DELETE",
"rel": "destroy",
"targetSchema": {
"$ref": "#/definitions/collaborator"
},
"title": "Delete"
},
{
"description": "Info for existing collaborator.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Fcollaborator%2Fdefinitions%2Fidentity)}",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/collaborator"
},
"title": "Info"
},
{
"description": "List existing collaborators.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators",
"method": "GET",
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/collaborator"
},
"type": [
"array"
]
},
"title": "List"
}
],
"properties": {
"created_at": {
"$ref": "#/definitions/collaborator/definitions/created_at"
},
"id": {
"$ref": "#/definitions/collaborator/definitions/id"
},
"updated_at": {
"$ref": "#/definitions/collaborator/definitions/updated_at"
},
"user": {
"description": "identity of collaborated account",
"properties": {
"email": {
"$ref": "#/definitions/account/definitions/email"
},
"id": {
"$ref": "#/definitions/account/definitions/id"
}
},
"strictProperties": true,
"type": [
"object"
]
}
}
},
"config-var": {
"description": "Config Vars allow you to manage the configuration information provided to an app on Heroku.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "production",
"strictProperties": true,
"title": "Heroku Platform API - Config Vars",
"type": [
"object"
],
"definitions": {
"config_vars": {
"additionalProperties": false,
"description": "hash of config vars",
"example": {
"FOO": "bar",
"BAZ": "qux"
},
"patternProperties": {
"^\\w+$": {
"type": [
"string",
"null"
]
}
},
"type": [
"object"
]
}
},
"links": [
{
"description": "Get config-vars for app.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/config-vars",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/config-var/definitions/config_vars"
},
"title": "Info"
},
{
"description": "Update config-vars for app. You can update existing config-vars by setting them again, and remove by setting it to `NULL`.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/config-vars",
"method": "PATCH",
"rel": "update",
"schema": {
"additionalProperties": false,
"description": "hash of config changes – update values or delete by seting it to NULL",
"example": {
"FOO": "bar",
"BAZ": "qux"
},
"patternProperties": {
"^\\w+$": {
"type": [
"string",
"null"
]
}
},
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/config-var/definitions/config_vars"
},
"title": "Update"
}
],
"example": {
"FOO": "bar",
"BAZ": "qux"
},
"patternProperties": {
"^\\w+$": {
"type": [
"string"
]
}
}
},
"credit": {
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"description": "A credit represents value that will be used up before further charges are assigned to an account.",
"stability": "development",
"strictProperties": true,
"title": "Heroku Platform API - Credit",
"type": [
"object"
],
"definitions": {
"amount": {
"description": "total value of credit in cents",
"example": 10000,
"type": [
"number"
]
},
"balance": {
"description": "remaining value of credit in cents",
"example": 5000,
"type": [
"number"
]
},
"created_at": {
"description": "when credit was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"type": [
"string"
]
},
"expires_at": {
"description": "when credit will expire",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"type": [
"string"
]
},
"id": {
"description": "unique identifier of credit",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"type": [
"string"
]
},
"identity": {
"$ref": "#/definitions/credit/definitions/id"
},
"title": {
"description": "a name for credit",
"example": "gift card",
"type": [
"string"
]
},
"updated_at": {
"description": "when credit was updated",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"type": [
"string"
]
}
},
"links": [
{
"description": "Create a new credit.",
"href": "/account/credits",
"method": "POST",
"rel": "create",
"schema": {
"properties": {
"code1": {
"description": "first code from a discount card",
"example": "012abc",
"type": [
"string"
]
},
"code2": {
"description": "second code from a discount card",
"example": "012abc",
"type": [
"string"
]
}
},
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/credit"
},
"title": "Create"
},
{
"description": "Info for existing credit.",
"href": "/account/credits/{(%23%2Fdefinitions%2Fcredit%2Fdefinitions%2Fidentity)}",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/credit"
},
"title": "Info"
},
{
"description": "List existing credits.",
"href": "/account/credits",
"method": "GET",
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/credit"
},
"type": [
"array"
]
},
"title": "List"
}
],
"properties": {
"amount": {
"$ref": "#/definitions/credit/definitions/amount"
},
"balance": {
"$ref": "#/definitions/credit/definitions/balance"
},
"created_at": {
"$ref": "#/definitions/credit/definitions/created_at"
},
"expires_at": {
"$ref": "#/definitions/credit/definitions/expires_at"
},
"id": {
"$ref": "#/definitions/credit/definitions/id"
},
"title": {
"$ref": "#/definitions/credit/definitions/title"
},
"updated_at": {
"$ref": "#/definitions/credit/definitions/updated_at"
}
}
},
"domain": {
"description": "Domains define what web routes should be routed to an app on Heroku.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "production",
"strictProperties": true,
"title": "Heroku Platform API - Domain",
"type": [
"object"
],
"definitions": {
"created_at": {
"description": "when domain was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"hostname": {
"description": "full hostname",
"example": "subdomain.example.com",
"readOnly": true,
"type": [
"string"
]
},
"id": {
"description": "unique identifier of this domain",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"readOnly": true,
"type": [
"string"
]
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/domain/definitions/id"
},
{
"$ref": "#/definitions/domain/definitions/hostname"
}
]
},
"updated_at": {
"description": "when domain was updated",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
}
},
"links": [
{
"description": "Create a new domain.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains",
"method": "POST",
"rel": "create",
"schema": {
"properties": {
"hostname": {
"$ref": "#/definitions/domain/definitions/hostname"
}
},
"required": [
"hostname"
],
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/domain"
},
"title": "Create"
},
{
"description": "Delete an existing domain",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains/{(%23%2Fdefinitions%2Fdomain%2Fdefinitions%2Fidentity)}",
"method": "DELETE",
"rel": "destroy",
"targetSchema": {
"$ref": "#/definitions/domain"
},
"title": "Delete"
},
{
"description": "Info for existing domain.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains/{(%23%2Fdefinitions%2Fdomain%2Fdefinitions%2Fidentity)}",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/domain"
},
"title": "Info"
},
{
"description": "List existing domains.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/domains",
"method": "GET",
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/domain"
},
"type": [
"array"
]
},
"title": "List"
}
],
"properties": {
"app": {
"description": "app that owns the domain",
"properties": {
"name": {
"$ref": "#/definitions/app/definitions/name"
},
"id": {
"$ref": "#/definitions/app/definitions/id"
}
},
"type": [
"object"
]
},
"created_at": {
"$ref": "#/definitions/domain/definitions/created_at"
},
"hostname": {
"$ref": "#/definitions/domain/definitions/hostname"
},
"id": {
"$ref": "#/definitions/domain/definitions/id"
},
"updated_at": {
"$ref": "#/definitions/domain/definitions/updated_at"
}
}
},
"dyno": {
"description": "Dynos encapsulate running processes of an app on Heroku.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "production",
"strictProperties": true,
"title": "Heroku Platform API - Dyno",
"type": [
"object"
],
"definitions": {
"attach": {
"description": "whether to stream output or not",
"example": true,
"readOnly": false,
"type": [
"boolean"
]
},
"attach_url": {
"description": "a URL to stream output from for attached processes or null for non-attached processes",
"example": "rendezvous://rendezvous.runtime.heroku.com:5000/{rendezvous-id}",
"readOnly": true,
"type": [
"string",
"null"
]
},
"command": {
"description": "command used to start this process",
"example": "bash",
"readOnly": false,
"type": [
"string"
]
},
"created_at": {
"description": "when dyno was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"env": {
"additionalProperties": false,
"description": "custom environment to add to the dyno config vars",
"example": {
"COLUMNS": "80",
"LINES": "24"
},
"patternProperties": {
"^\\w+$": {
"type": [
"string"
]
}
},
"readOnly": false,
"strictProperties": true,
"type": [
"object"
]
},
"id": {
"description": "unique identifier of this dyno",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"readOnly": true,
"type": [
"string"
]
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/dyno/definitions/id"
},
{
"$ref": "#/definitions/dyno/definitions/name"
}
]
},
"name": {
"description": "the name of this process on this dyno",
"example": "run.1",
"readOnly": true,
"type": [
"string"
]
},
"size": {
"description": "dyno size (default: \"1X\")",
"example": "1X",
"readOnly": false,
"type": [
"string"
]
},
"state": {
"description": "current status of process (either: crashed, down, idle, starting, or up)",
"example": "up",
"readOnly": true,
"type": [
"string"
]
},
"type": {
"description": "type of process",
"example": "run",
"readOnly": true,
"type": [
"string"
]
},
"updated_at": {
"description": "when process last changed state",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
}
},
"links": [
{
"description": "Create a new dyno.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/dynos",
"method": "POST",
"rel": "create",
"schema": {
"properties": {
"attach": {
"$ref": "#/definitions/dyno/definitions/attach"
},
"command": {
"$ref": "#/definitions/dyno/definitions/command"
},
"env": {
"$ref": "#/definitions/dyno/definitions/env"
},
"size": {
"$ref": "#/definitions/dyno/definitions/size"
}
},
"required": [
"command"
],
"type": [
"object"
]
},
"targetSchema": {
"$ref": "#/definitions/dyno"
},
"title": "Create"
},
{
"description": "Restart dyno.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/dynos/{(%23%2Fdefinitions%2Fdyno%2Fdefinitions%2Fidentity)}",
"method": "DELETE",
"rel": "empty",
"targetSchema": {
"additionalPoperties": false,
"type": [
"object"
]
},
"title": "Restart"
},
{
"description": "Restart all dynos",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/dynos",
"method": "DELETE",
"rel": "empty",
"targetSchema": {
"additionalPoperties": false,
"type": [
"object"
]
},
"title": "Restart all"
},
{
"description": "Info for existing dyno.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/dynos/{(%23%2Fdefinitions%2Fdyno%2Fdefinitions%2Fidentity)}",
"method": "GET",
"rel": "self",
"targetSchema": {
"$ref": "#/definitions/dyno"
},
"title": "Info"
},
{
"description": "List existing dynos.",
"href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/dynos",
"method": "GET",
"rel": "instances",
"targetSchema": {
"items": {
"$ref": "#/definitions/dyno"
},
"type": [
"array"
]
},
"title": "List"
}
],
"properties": {
"attach_url": {
"$ref": "#/definitions/dyno/definitions/attach_url"
},
"command": {
"$ref": "#/definitions/dyno/definitions/command"
},
"created_at": {
"$ref": "#/definitions/dyno/definitions/created_at"
},
"id": {
"$ref": "#/definitions/dyno/definitions/id"
},
"name": {
"$ref": "#/definitions/dyno/definitions/name"
},
"release": {
"description": "app release of the dyno",
"properties": {
"id": {
"$ref": "#/definitions/release/definitions/id"
},
"version": {
"$ref": "#/definitions/release/definitions/version"
}
},
"strictProperties": true,
"type": [
"object"
]
},
"size": {
"$ref": "#/definitions/dyno/definitions/size"
},
"state": {
"$ref": "#/definitions/dyno/definitions/state"
},
"type": {
"$ref": "#/definitions/dyno/definitions/type"
},
"updated_at": {
"$ref": "#/definitions/dyno/definitions/updated_at"
}
}
},
"event": {
"description": "An event represents an action performed on another API resource.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "development",
"strictProperties": true,
"title": "Heroku Platform API - Event",
"type": [
"object"
],
"definitions": {
"action": {
"description": "the operation performed on the resource",
"enum": [
"create",
"destroy",
"update"
],
"example": "create",
"readOnly": true,
"type": [
"string"
]
},
"created_at": {
"description": "when the event was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"data": {
"description": "the serialized resource affected by the event",
"example": {
},
"oneOf": [
{
"$ref": "#/definitions/app"
},
{
"$ref": "#/definitions/domain"
},
{
"$ref": "#/definitions/dyno"
},
{
"$ref": "#/definitions/formation"
},
{
"$ref": "#/definitions/release"
}
],
"readOnly": true,
"type": [
"object"
]
},
"id": {
"description": "unique identifier of an event",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"readOnly": true,
"type": [
"string"
]
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/event/definitions/id"
}
]
},
"published_at": {
"description": "when the event was published",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"null",
"string"
]
},
"resource": {
"description": "the type of resource affected",
"enum": [
"app",
"domain",
"dyno",
"formation",
"release"
],
"example": "create",
"readOnly": true,
"type": [
"string"
]
},
"sequence": {
"description": "a numeric string representing the event's sequence",
"example": "1234567890",
"pattern": "^[0-9]{1,128}$",
"readOnly": true,
"type": [
"null",
"string"
]
},
"updated_at": {
"description": "when the event was updated (same as created)",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"version": {
"description": "the event's API version string",
"example": "application/vnd.heroku+json; version=3",
"readOnly": true,
"type": [
"string"
]
}
},
"links": [
],
"properties": {
"action": {
"$ref": "#/definitions/event/definitions/action"
},
"actor": {
"description": "user that performed the operation",
"properties": {
"email": {
"$ref": "#/definitions/account/definitions/email"
},
"id": {
"$ref": "#/definitions/account/definitions/id"
}
},
"strictProperties": true,
"type": [
"object"
]
},
"created_at": {
"$ref": "#/definitions/event/definitions/created_at"
},
"data": {
"$ref": "#/definitions/event/definitions/data"
},
"id": {
"$ref": "#/definitions/event/definitions/id"
},
"published_at": {
"$ref": "#/definitions/event/definitions/published_at"
},
"resource": {
"$ref": "#/definitions/event/definitions/resource"
},
"sequence": {
"$ref": "#/definitions/event/definitions/sequence"
},
"updated_at": {
"$ref": "#/definitions/event/definitions/updated_at"
},
"version": {
"$ref": "#/definitions/event/definitions/version"
}
}
},
"formation": {
"description": "The formation of processes that should be maintained for an app. Update the formation to scale processes or change dyno sizes. Available process type names and commands are defined by the `process_types` attribute for the [slug](#slug) currently released on an app.",
"$schema": "http://json-schema.org/draft-04/hyper-schema",
"stability": "production",
"strictProperties": true,
"title": "Heroku Platform API - Formation",
"type": [
"object"
],
"definitions": {
"command": {
"description": "command to use to launch this process",
"example": "bundle exec rails server -p $PORT",
"readOnly": false,
"type": [
"string"
]
},
"created_at": {
"description": "when process type was created",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"id": {
"description": "unique identifier of this process type",
"example": "01234567-89ab-cdef-0123-456789abcdef",
"format": "uuid",
"readOnly": true,
"type": [
"string"
]
},
"identity": {
"anyOf": [
{
"$ref": "#/definitions/formation/definitions/id"
},
{
"$ref": "#/definitions/formation/definitions/type"
}
]
},
"quantity": {
"description": "number of processes to maintain",
"example": 1,
"readOnly": false,
"type": [
"integer"
]
},
"size": {
"description": "dyno size (default: \"1X\")",
"example": "1X",
"readOnly": false,
"type": [
"string"
]
},
"type": {
"description": "type of process to maintain",
"example": "web",
"readOnly": true,
"type": [
"string"
]
},
"updated_at": {
"description": "when dyno type was updated",
"example": "2012-01-01T12:00:00Z",
"format": "date-time",
"readOnly": true,
"type": [
"string"
]
},
"update": {
"additionalProperties": false,
"description": "Properties to update a process type",
"properties": {
"process": {
"$ref": "#/definitions/formation/definitions/identity"
},
"quantity": {