schema.json in platform-api-1.0.1 vs schema.json in platform-api-2.0.0

- old
+ new

@@ -88,10 +88,26 @@ "format": "date-time", "readOnly": true, "type": [ "string" ] + }, + "display_name": { + "description": "user readable feature name", + "example": "My Feature", + "readOnly": true, + "type": [ + "string" + ] + }, + "feedback_email": { + "description": "e-mail to send feedback about the feature", + "example": "feedback@heroku.com", + "readOnly": true, + "type": [ + "string" + ] } }, "links": [ { "description": "Info for an existing account feature.", @@ -164,10 +180,16 @@ "state": { "$ref": "#/definitions/account-feature/definitions/state" }, "updated_at": { "$ref": "#/definitions/account-feature/definitions/updated_at" + }, + "display_name": { + "$ref": "#/definitions/account-feature/definitions/display_name" + }, + "feedback_email": { + "$ref": "#/definitions/account-feature/definitions/feedback_email" } } }, "account": { "description": "An account represents an individual signed up to use the Heroku platform.", @@ -392,11 +414,11 @@ "method": "GET", "rel": "self", "targetSchema": { "$ref": "#/definitions/account" }, - "title": "Info" + "title": "Info By User" }, { "description": "Update account.", "href": "/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}", "method": "PATCH", @@ -418,21 +440,21 @@ ] }, "targetSchema": { "$ref": "#/definitions/account" }, - "title": "Update" + "title": "Update By User" }, { "description": "Delete account. Note that this action cannot be undone.", "href": "/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}", "method": "DELETE", "rel": "destroy", "targetSchema": { "$ref": "#/definitions/account" }, - "title": "Delete" + "title": "Delete By User" } ], "properties": { "allow_tracking": { "$ref": "#/definitions/account/definitions/allow_tracking" @@ -534,21 +556,21 @@ "method": "POST", "rel": "create", "targetSchema": { "$ref": "#/definitions/add-on" }, - "title": "Create - Provision" + "title": "Provision" }, { "description": "Mark an add-on as deprovisioned.", "href": "/addons/{(%23%2Fdefinitions%2Fadd-on%2Fdefinitions%2Fidentity)}/actions/deprovision", "method": "POST", "rel": "create", "targetSchema": { "$ref": "#/definitions/add-on" }, - "title": "Create - Deprovision" + "title": "Deprovision" } ], "properties": { } }, @@ -612,10 +634,19 @@ "readOnly": true, "type": [ "string" ] }, + "namespace": { + "description": "attachment namespace", + "example": "role:analytics", + "readOnly": true, + "type": [ + "null", + "string" + ] + }, "updated_at": { "description": "when add-on attachment was updated", "example": "2012-01-01T12:00:00Z", "format": "date-time", "readOnly": true, @@ -651,10 +682,13 @@ "force": { "$ref": "#/definitions/add-on-attachment/definitions/force" }, "name": { "$ref": "#/definitions/add-on-attachment/definitions/name" + }, + "namespace": { + "$ref": "#/definitions/add-on-attachment/definitions/namespace" } }, "required": [ "addon", "app" @@ -817,10 +851,13 @@ "$ref": "#/definitions/add-on-attachment/definitions/id" }, "name": { "$ref": "#/definitions/add-on-attachment/definitions/name" }, + "namespace": { + "$ref": "#/definitions/add-on-attachment/definitions/namespace" + }, "updated_at": { "$ref": "#/definitions/add-on-attachment/definitions/updated_at" }, "web_url": { "$ref": "#/definitions/add-on-attachment/definitions/web_url" @@ -895,10 +932,13 @@ "type": [ "object" ] }, "targetSchema": { + "type": [ + "array" + ], "items": { "$ref": "#/definitions/add-on-config" } }, "title": "Update" @@ -1058,11 +1098,11 @@ }, "type": [ "array" ] }, - "title": "List" + "title": "List By Region" } ], "properties": { "id": { "$ref": "#/definitions/add-on-region-capability/definitions/id" @@ -1373,10 +1413,35 @@ ] } }, "links": [ { + "description": "List all existing add-ons.", + "href": "/addons", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/add-on" + }, + "type": [ + "array" + ] + }, + "title": "List" + }, + { + "description": "Info for an existing add-on.", + "href": "/addons/{(%23%2Fdefinitions%2Fadd-on%2Fdefinitions%2Fidentity)}", + "method": "GET", + "rel": "self", + "targetSchema": { + "$ref": "#/definitions/add-on" + }, + "title": "Info" + }, + { "description": "Create a new add-on.", "href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons", "method": "POST", "rel": "create", "schema": { @@ -1442,36 +1507,46 @@ "method": "GET", "rel": "self", "targetSchema": { "$ref": "#/definitions/add-on" }, - "title": "Info" + "title": "Info By App" }, { - "description": "List all existing add-ons.", - "href": "/addons", + "description": "List existing add-ons for an app.", + "href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons", "method": "GET", "rel": "instances", "targetSchema": { "items": { "$ref": "#/definitions/add-on" }, "type": [ "array" ] }, - "title": "List" + "title": "List By App" }, { - "description": "Info for an existing add-on.", - "href": "/addons/{(%23%2Fdefinitions%2Fadd-on%2Fdefinitions%2Fidentity)}", - "method": "GET", - "rel": "self", - "targetSchema": { - "$ref": "#/definitions/add-on" + "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%2Fadd-on%2Fdefinitions%2Fidentity)}", + "method": "PATCH", + "rel": "update", + "schema": { + "properties": { + "plan": { + "$ref": "#/definitions/plan/definitions/identity" + } + }, + "required": [ + "plan" + ], + "type": [ + "object" + ] }, - "title": "Info" + "title": "Update" }, { "description": "List all existing add-ons a user has access to", "href": "/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}/addons", "method": "GET", @@ -1482,46 +1557,26 @@ }, "type": [ "array" ] }, - "title": "List by User" + "title": "List By User" }, { - "description": "List existing add-ons for an app.", - "href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/addons", + "description": "List add-ons used across all Team apps", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/addons", "method": "GET", "rel": "instances", "targetSchema": { "items": { "$ref": "#/definitions/add-on" }, "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%2Fadd-on%2Fdefinitions%2Fidentity)}", - "method": "PATCH", - "rel": "update", - "schema": { - "properties": { - "plan": { - "$ref": "#/definitions/plan/definitions/identity" - } - }, - "required": [ - "plan" - ], - "type": [ - "object" - ] - }, - "title": "Update" + "title": "List By Team" } ], "properties": { "actions": { "$ref": "#/definitions/add-on/definitions/actions" @@ -1681,10 +1736,26 @@ "format": "date-time", "readOnly": true, "type": [ "string" ] + }, + "display_name": { + "description": "user readable feature name", + "example": "My Feature", + "readOnly": true, + "type": [ + "string" + ] + }, + "feedback_email": { + "description": "e-mail to send feedback about the feature", + "example": "feedback@heroku.com", + "readOnly": true, + "type": [ + "string" + ] } }, "links": [ { "description": "Info for an existing app feature.", @@ -1757,10 +1828,16 @@ "state": { "$ref": "#/definitions/app-feature/definitions/state" }, "updated_at": { "$ref": "#/definitions/app-feature/definitions/updated_at" + }, + "display_name": { + "$ref": "#/definitions/app-feature/definitions/display_name" + }, + "feedback_email": { + "$ref": "#/definitions/app-feature/definitions/feedback_email" } } }, "app-formation-set": { "description": "App formation set describes the combination of process types with their quantities and sizes as well as application process tier", @@ -2592,11 +2669,11 @@ ] }, "title": "List" }, { - "description": "List owned and collaborated apps (excludes organization apps).", + "description": "List owned and collaborated apps (excludes team apps).", "href": "/users/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}/apps", "method": "GET", "ranges": [ "id", "name", @@ -2705,10 +2782,25 @@ "type": [ "null", "object" ] }, + "team": { + "description": "identity of team", + "properties": { + "id": { + "$ref": "#/definitions/team/definitions/id" + }, + "name": { + "$ref": "#/definitions/team/definitions/name" + } + }, + "type": [ + "null", + "object" + ] + }, "region": { "description": "identity of app region", "properties": { "id": { "$ref": "#/definitions/region/definitions/id" @@ -3438,15 +3530,15 @@ "permissions": { "type": [ "array" ], "items": { - "$ref": "#/definitions/organization-app-permission" + "$ref": "#/definitions/team-app-permission" } }, "role": { - "$ref": "#/definitions/organization/definitions/role" + "$ref": "#/definitions/team/definitions/role" }, "updated_at": { "$ref": "#/definitions/collaborator/definitions/updated_at" }, "user": { @@ -4450,10 +4542,13 @@ { "$ref": "#/definitions/release" }, { "$ref": "#/definitions/space" + }, + { + "$ref": "#/definitions/team" } ], "readOnly": true, "type": [ "object" @@ -4502,10 +4597,11 @@ "formation-set", "inbound-ruleset", "organization", "release", "space", + "team", "user" ], "example": "app", "readOnly": true, "type": [ @@ -4777,11 +4873,11 @@ "schema": { "$ref": "#/definitions/filter-apps/definitions/filter" }, "targetSchema": { "items": { - "$ref": "#/definitions/organization-app" + "$ref": "#/definitions/team-app" }, "type": [ "array" ] } @@ -4947,11 +5043,11 @@ }, "type": [ "array" ] }, - "title": "Batch update" + "title": "Batch Update" }, { "description": "Update process type", "href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/formation/{(%23%2Fdefinitions%2Fformation%2Fdefinitions%2Fidentity)}", "method": "PATCH", @@ -5098,11 +5194,11 @@ }, "type": [ "array" ] }, - "title": "List" + "title": "List By Organization" }, { "description": "Create an Identity Provider for an organization", "href": "/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fname)}/identity-providers", "method": "POST", @@ -5132,11 +5228,11 @@ ] }, "targetSchema": { "$ref": "#/definitions/identity-provider" }, - "title": "Create" + "title": "Create By Organization" }, { "description": "Update an organization's Identity Provider", "href": "/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fname)}/identity-providers/{(%23%2Fdefinitions%2Fidentity-provider%2Fdefinitions%2Fid)}", "method": "PATCH", @@ -5161,21 +5257,109 @@ ] }, "targetSchema": { "$ref": "#/definitions/identity-provider" }, - "title": "Update" + "title": "Update By Organization" }, { "description": "Delete an organization's Identity Provider", "href": "/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fname)}/identity-providers/{(%23%2Fdefinitions%2Fidentity-provider%2Fdefinitions%2Fid)}", "method": "DELETE", "rel": "destroy", "targetSchema": { "$ref": "#/definitions/identity-provider" }, - "title": "Delete" + "title": "Delete By Organization" + }, + { + "description": "Get a list of a team's Identity Providers", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/identity-providers", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/identity-provider" + }, + "type": [ + "array" + ] + }, + "title": "List By Team" + }, + { + "description": "Create an Identity Provider for a team", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/identity-providers", + "method": "POST", + "rel": "create", + "schema": { + "properties": { + "certificate": { + "$ref": "#/definitions/identity-provider/definitions/certificate" + }, + "entity_id": { + "$ref": "#/definitions/identity-provider/definitions/entity_id" + }, + "slo_target_url": { + "$ref": "#/definitions/identity-provider/definitions/slo_target_url" + }, + "sso_target_url": { + "$ref": "#/definitions/identity-provider/definitions/sso_target_url" + } + }, + "required": [ + "certificate", + "sso_target_url", + "entity_id" + ], + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/identity-provider" + }, + "title": "Create By Team" + }, + { + "description": "Update a team's Identity Provider", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/identity-providers/{(%23%2Fdefinitions%2Fidentity-provider%2Fdefinitions%2Fid)}", + "method": "PATCH", + "rel": "update", + "schema": { + "properties": { + "certificate": { + "$ref": "#/definitions/identity-provider/definitions/certificate" + }, + "entity_id": { + "$ref": "#/definitions/identity-provider/definitions/entity_id" + }, + "slo_target_url": { + "$ref": "#/definitions/identity-provider/definitions/slo_target_url" + }, + "sso_target_url": { + "$ref": "#/definitions/identity-provider/definitions/sso_target_url" + } + }, + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/identity-provider" + }, + "title": "Update By Team" + }, + { + "description": "Delete a team's Identity Provider", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fname)}/identity-providers/{(%23%2Fdefinitions%2Fidentity-provider%2Fdefinitions%2Fid)}", + "method": "DELETE", + "rel": "destroy", + "targetSchema": { + "$ref": "#/definitions/identity-provider" + }, + "title": "Delete By Team" } ], "properties": { "certificate": { "$ref": "#/definitions/identity-provider/definitions/certificate" @@ -5294,11 +5478,11 @@ "method": "GET", "rel": "self", "targetSchema": { "$ref": "#/definitions/inbound-ruleset" }, - "title": "Info" + "title": "Current" }, { "description": "Info on an existing Inbound Ruleset", "href": "/spaces/{(%23%2Fdefinitions%2Fspace%2Fdefinitions%2Fidentity)}/inbound-rulesets/{(%23%2Fdefinitions%2Finbound-ruleset%2Fdefinitions%2Fidentity)}", "method": "GET", @@ -7075,12 +7259,13 @@ } } }, "organization-add-on": { "$schema": "http://json-schema.org/draft-04/hyper-schema", - "description": "A list of add-ons the Organization uses across all apps", + "description": "Deprecated: A list of add-ons the Organization uses across all apps", "stability": "production", + "deprecated_at": "2017-04-10", "title": "Heroku Platform API - Organization Add-on", "type": [ "object" ], "links": [ @@ -7100,13 +7285,14 @@ "title": "List For Organization" } ] }, "organization-app-collaborator": { - "description": "An organization collaborator represents an account that has been given access to an organization app on Heroku.", + "description": "Deprecated: An organization collaborator represents an account that has been given access to an organization app on Heroku.", "$schema": "http://json-schema.org/draft-04/hyper-schema", "stability": "prototype", + "deprecated_at": "2017-04-10", "title": "Heroku Platform API - Organization App Collaborator", "type": [ "object" ], "definitions": { @@ -7124,10 +7310,19 @@ "href": "/organizations/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators", "method": "POST", "rel": "create", "schema": { "properties": { + "permissions": { + "type": [ + "array" + ], + "items": { + "$ref": "#/definitions/organization-app-permission/definitions/name" + }, + "description": "An array of permissions to give to the collaborator." + }, "silent": { "$ref": "#/definitions/collaborator/definitions/silent" }, "user": { "$ref": "#/definitions/account/definitions/identity" @@ -7168,10 +7363,29 @@ { "description": "Update an existing collaborator from an organization app.", "href": "/organizations/apps/{(%23%2Fdefinitions%2Forganization-app%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Forganization-app-collaborator%2Fdefinitions%2Fidentity)}", "method": "PATCH", "rel": "update", + "schema": { + "properties": { + "permissions": { + "type": [ + "array" + ], + "items": { + "$ref": "#/definitions/organization-app-permission/definitions/name" + }, + "description": "An array of permissions to give to the collaborator." + } + }, + "required": [ + "permissions" + ], + "type": [ + "object" + ] + }, "targetSchema": { "$ref": "#/definitions/organization-app-collaborator" }, "title": "Update" }, @@ -7239,12 +7453,13 @@ } } }, "organization-app": { "$schema": "http://json-schema.org/draft-04/hyper-schema", - "description": "An organization app encapsulates the organization specific functionality of Heroku apps.", + "description": "Deprecated: An organization app encapsulates the organization specific functionality of Heroku apps.", "stability": "prototype", + "deprecated_at": "2017-04-10", "title": "Heroku Platform API - Organization App", "type": [ "object" ], "definitions": { @@ -7534,13 +7749,14 @@ "$ref": "#/definitions/app/definitions/web_url" } } }, "organization-feature": { - "description": "An organization feature represents a feature enabled on an organization account.", + "description": "Deprecated: An organization feature represents a feature enabled on an organization account.", "$schema": "http://json-schema.org/draft-04/hyper-schema", "stability": "prototype", + "deprecated_at": "2017-04-10", "strictProperties": true, "title": "Heroku Platform API - Organization Feature", "type": [ "object" ], @@ -7569,11 +7785,11 @@ "type": [ "string" ] }, "enabled": { - "description": "whether or not account feature has been enabled", + "description": "whether or not organization feature has been enabled", "example": true, "readOnly": false, "type": [ "boolean" ] @@ -7619,15 +7835,31 @@ "format": "date-time", "readOnly": true, "type": [ "string" ] + }, + "display_name": { + "description": "user readable feature name", + "example": "My Feature", + "readOnly": true, + "type": [ + "string" + ] + }, + "feedback_email": { + "description": "e-mail to send feedback about the feature", + "example": "feedback@heroku.com", + "readOnly": true, + "type": [ + "string" + ] } }, "links": [ { - "description": "Info for an existing account feature.", + "description": "Info for an existing organization feature.", "href": "/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/features/{(%23%2Fdefinitions%2Forganization-feature%2Fdefinitions%2Fidentity)}", "method": "GET", "rel": "self", "targetSchema": { "$ref": "#/definitions/organization-feature" @@ -7646,43 +7878,73 @@ "type": [ "array" ] }, "title": "List" + }, + { + "description": "Update an existing organization feature.", + "href": "/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/features/{(%23%2Fdefinitions%2Forganization-feature%2Fdefinitions%2Fidentity)}", + "method": "PATCH", + "rel": "update", + "schema": { + "properties": { + "enabled": { + "$ref": "#/definitions/organization-feature/definitions/enabled" + } + }, + "required": [ + "enabled" + ], + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/organization-feature" + }, + "title": "Update" } ], "properties": { "created_at": { - "$ref": "#/definitions/account-feature/definitions/created_at" + "$ref": "#/definitions/organization-feature/definitions/created_at" }, "description": { - "$ref": "#/definitions/account-feature/definitions/description" + "$ref": "#/definitions/organization-feature/definitions/description" }, "doc_url": { - "$ref": "#/definitions/account-feature/definitions/doc_url" + "$ref": "#/definitions/organization-feature/definitions/doc_url" }, "enabled": { - "$ref": "#/definitions/account-feature/definitions/enabled" + "$ref": "#/definitions/organization-feature/definitions/enabled" }, "id": { - "$ref": "#/definitions/account-feature/definitions/id" + "$ref": "#/definitions/organization-feature/definitions/id" }, "name": { - "$ref": "#/definitions/account-feature/definitions/name" + "$ref": "#/definitions/organization-feature/definitions/name" }, "state": { - "$ref": "#/definitions/account-feature/definitions/state" + "$ref": "#/definitions/organization-feature/definitions/state" }, "updated_at": { - "$ref": "#/definitions/account-feature/definitions/updated_at" + "$ref": "#/definitions/organization-feature/definitions/updated_at" + }, + "display_name": { + "$ref": "#/definitions/organization-feature/definitions/display_name" + }, + "feedback_email": { + "$ref": "#/definitions/organization-feature/definitions/feedback_email" } } }, "organization-invitation": { - "description": "An organization invitation represents an invite to an organization.", + "description": "Deprecated: An organization invitation represents an invite to an organization.", "$schema": "http://json-schema.org/draft-04/hyper-schema", "stability": "prototype", + "deprecated_at": "2017-04-10", "strictProperties": true, "title": "Heroku Platform API - Organization Invitation", "type": [ "object" ], @@ -7861,12 +8123,13 @@ } } }, "organization-invoice": { "$schema": "http://json-schema.org/draft-04/hyper-schema", - "description": "An organization invoice is an itemized bill of goods for an organization which includes pricing and charges.", + "description": "Deprecated: An organization invoice is an itemized bill of goods for an organization which includes pricing and charges.", "stability": "prototype", + "deprecated_at": "2017-04-10", "strictProperties": true, "title": "Heroku Platform API - Organization Invoice", "type": [ "object" ], @@ -8088,12 +8351,13 @@ } } }, "organization-member": { "$schema": "http://json-schema.org/draft-04/hyper-schema", - "description": "An organization member is an individual with access to an organization.", + "description": "Deprecated: An organization member is an individual with access to an organization.", "stability": "prototype", + "deprecated_at": "2017-04-10", "additionalProperties": false, "required": [ "created_at", "email", "federated", @@ -8305,11 +8569,11 @@ }, "type": [ "array" ] }, - "title": "List" + "title": "App List" } ], "properties": { "created_at": { "$ref": "#/definitions/organization-member/definitions/created_at" @@ -8351,13 +8615,14 @@ ] } } }, "organization-preferences": { - "description": "Tracks an organization's preferences", + "description": "Deprecated: Tracks an organization's preferences", "$schema": "http://json-schema.org/draft-04/hyper-schema", "stability": "prototype", + "deprecated_at": "2017-04-10", "strictProperties": true, "title": "Heroku Platform API - Organization Preferences", "type": [ "object" ], @@ -8405,10 +8670,13 @@ "description": "Update Organization Preferences", "href": "/organizations/{(%23%2Fdefinitions%2Forganization-preferences%2Fdefinitions%2Fidentity)}/preferences", "method": "PATCH", "rel": "update", "schema": { + "type": [ + "object" + ], "properties": { "whitelisting-enabled": { "$ref": "#/definitions/organization-preferences/definitions/whitelisting-enabled" } } @@ -8428,12 +8696,13 @@ } } }, "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.", + "description": "Deprecated: Organizations allow you to manage access to a shared group of applications across your development team.", "stability": "prototype", + "deprecated_at": "2017-04-10", "strictProperties": true, "title": "Heroku Platform API - Organization", "type": [ "object" ], @@ -8882,11 +9151,11 @@ "method": "GET", "rel": "self", "targetSchema": { "$ref": "#/definitions/outbound-ruleset" }, - "title": "Info" + "title": "Current" }, { "description": "Info on an existing Outbound Ruleset", "href": "/spaces/{(%23%2Fdefinitions%2Fspace%2Fdefinitions%2Fidentity)}/outbound-rulesets/{(%23%2Fdefinitions%2Foutbound-ruleset%2Fdefinitions%2Fidentity)}", "method": "GET", @@ -9057,12 +9326,13 @@ } } }, "organization-app-permission": { "$schema": "http://json-schema.org/draft-04/hyper-schema", - "description": "An organization app permission is a behavior that is assigned to a user in an organization app.", + "description": "Deprecated: An organization app permission is a behavior that is assigned to a user in an organization app.", "stability": "prototype", + "deprecated_at": "2017-04-10", "title": "Heroku Platform API - Organization App Permission", "type": [ "object" ], "definitions": { @@ -9186,11 +9456,11 @@ }, "type": [ "array" ] }, - "title": "List" + "title": "List By Pipeline" }, { "description": "List pipeline couplings.", "href": "/pipeline-couplings", "method": "GET", @@ -9275,18 +9545,18 @@ "$ref": "#/definitions/pipeline-coupling" }, "title": "Update" }, { - "description": "Info for an existing pipeline coupling.", + "description": "Info for an existing app pipeline coupling.", "href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/pipeline-couplings", "method": "GET", "rel": "self", "targetSchema": { "$ref": "#/definitions/pipeline-coupling" }, - "title": "Info" + "title": "Info By App" } ], "properties": { "app": { "description": "app involved in the pipeline coupling", @@ -9515,10 +9785,13 @@ "object" ] }, "source": { "description": "the app being promoted from", + "type": [ + "object" + ], "properties": { "app": { "description": "the app which was promoted from", "properties": { "id": { @@ -9531,11 +9804,17 @@ ] } } }, "targets": { + "type": [ + "array" + ], "items": { + "type": [ + "object" + ], "properties": { "app": { "description": "the app is being promoted to", "properties": { "id": { @@ -9757,17 +10036,17 @@ "description": "List existing pipelines.", "href": "/pipelines", "method": "GET", "rel": "instances", "targetSchema": { + "type": [ + "array" + ], "items": { "$ref": "#/definitions/pipeline" } }, - "type": [ - "array" - ], "title": "List" } ], "properties": { "created_at": { @@ -9947,20 +10226,30 @@ } }, "links": [ { "description": "Info for existing plan.", - "href": "/addon-services/{(%23%2Fdefinitions%2Fadd-on-service%2Fdefinitions%2Fidentity)}/plans/{(%23%2Fdefinitions%2Fplan%2Fdefinitions%2Fidentity)}", + "href": "/plans/{(%23%2Fdefinitions%2Fplan%2Fdefinitions%2Fidentity)}", "method": "GET", "rel": "self", "targetSchema": { "$ref": "#/definitions/plan" }, "title": "Info" }, { - "description": "List existing plans.", + "description": "Info for existing plan by Add-on.", + "href": "/addon-services/{(%23%2Fdefinitions%2Fadd-on-service%2Fdefinitions%2Fidentity)}/plans/{(%23%2Fdefinitions%2Fplan%2Fdefinitions%2Fidentity)}", + "method": "GET", + "rel": "self", + "targetSchema": { + "$ref": "#/definitions/plan" + }, + "title": "Info By Add-on" + }, + { + "description": "List existing plans by Add-on.", "href": "/addon-services/{(%23%2Fdefinitions%2Fadd-on-service%2Fdefinitions%2Fidentity)}/plans", "method": "GET", "rel": "instances", "targetSchema": { "items": { @@ -9968,11 +10257,11 @@ }, "type": [ "array" ] }, - "title": "List" + "title": "List By Add-on" } ], "properties": { "addon_service": { "description": "identity of add-on service", @@ -11100,10 +11389,13 @@ "description": "Update an existing user's set of permissions on a space.", "href": "/spaces/{(%23%2Fdefinitions%2Fspace%2Fdefinitions%2Fidentity)}/members/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}", "method": "PATCH", "rel": "update", "schema": { + "type": [ + "object" + ], "properties": { "permissions": { "type": [ "array" ], @@ -11482,10 +11774,24 @@ }, "type": [ "object" ] }, + "team": { + "description": "team that owns this space", + "properties": { + "id": { + "$ref": "#/definitions/team/definitions/id" + }, + "name": { + "$ref": "#/definitions/team/definitions/name" + } + }, + "type": [ + "object" + ] + }, "region": { "description": "identity of space region", "properties": { "id": { "$ref": "#/definitions/region/definitions/id" @@ -11848,10 +12154,1809 @@ "updated_at": { "$ref": "#/definitions/stack/definitions/updated_at" } } }, + "team-app-collaborator": { + "description": "A team collaborator represents an account that has been given access to a team app on Heroku.", + "$schema": "http://json-schema.org/draft-04/hyper-schema", + "stability": "development", + "title": "Heroku Platform API - Team App Collaborator", + "type": [ + "object" + ], + "definitions": { + "identity": { + "anyOf": [ + { + "$ref": "#/definitions/collaborator/definitions/email" + } + ] + } + }, + "links": [ + { + "description": "Create a new collaborator on a team app. Use this endpoint instead of the `/apps/{app_id_or_name}/collaborator` endpoint when you want the collaborator to be granted [permissions] (https://devcenter.heroku.com/articles/org-users-access#roles-and-app-permissions) according to their role in the team.", + "href": "/teams/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/collaborators", + "method": "POST", + "rel": "create", + "schema": { + "properties": { + "permissions": { + "type": [ + "array" + ], + "items": { + "$ref": "#/definitions/team-app-permission/definitions/name" + }, + "description": "An array of permissions to give to the collaborator." + }, + "silent": { + "$ref": "#/definitions/collaborator/definitions/silent" + }, + "user": { + "$ref": "#/definitions/account/definitions/identity" + } + }, + "required": [ + "user" + ], + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/team-app-collaborator" + }, + "title": "Create" + }, + { + "description": "Delete an existing collaborator from a team app.", + "href": "/teams/apps/{(%23%2Fdefinitions%2Fteam-app%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Fteam-app-collaborator%2Fdefinitions%2Fidentity)}", + "method": "DELETE", + "rel": "destroy", + "targetSchema": { + "$ref": "#/definitions/team-app-collaborator" + }, + "title": "Delete" + }, + { + "description": "Info for a collaborator on a team app.", + "href": "/teams/apps/{(%23%2Fdefinitions%2Fteam-app%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Fteam-app-collaborator%2Fdefinitions%2Fidentity)}", + "method": "GET", + "rel": "self", + "targetSchema": { + "$ref": "#/definitions/team-app-collaborator" + }, + "title": "Info" + }, + { + "description": "Update an existing collaborator from a team app.", + "href": "/teams/apps/{(%23%2Fdefinitions%2Fteam-app%2Fdefinitions%2Fidentity)}/collaborators/{(%23%2Fdefinitions%2Fteam-app-collaborator%2Fdefinitions%2Fidentity)}", + "method": "PATCH", + "rel": "update", + "schema": { + "properties": { + "permissions": { + "type": [ + "array" + ], + "items": { + "$ref": "#/definitions/team-app-permission/definitions/name" + }, + "description": "An array of permissions to give to the collaborator." + } + }, + "required": [ + "permissions" + ], + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/team-app-collaborator" + }, + "title": "Update" + }, + { + "description": "List collaborators on a team app.", + "href": "/teams/apps/{(%23%2Fdefinitions%2Fteam-app%2Fdefinitions%2Fidentity)}/collaborators", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/team-app-collaborator" + }, + "type": [ + "array" + ] + }, + "title": "List" + } + ], + "properties": { + "app": { + "description": "app collaborator belongs to", + "properties": { + "name": { + "$ref": "#/definitions/app/definitions/name" + }, + "id": { + "$ref": "#/definitions/app/definitions/id" + } + }, + "strictProperties": true, + "type": [ + "object" + ] + }, + "created_at": { + "$ref": "#/definitions/collaborator/definitions/created_at" + }, + "id": { + "$ref": "#/definitions/collaborator/definitions/id" + }, + "role": { + "$ref": "#/definitions/team/definitions/role" + }, + "updated_at": { + "$ref": "#/definitions/collaborator/definitions/updated_at" + }, + "user": { + "description": "identity of collaborated account", + "properties": { + "email": { + "$ref": "#/definitions/account/definitions/email" + }, + "federated": { + "$ref": "#/definitions/account/definitions/federated" + }, + "id": { + "$ref": "#/definitions/account/definitions/id" + } + }, + "strictProperties": true, + "type": [ + "object" + ] + } + } + }, + "team-app-permission": { + "$schema": "http://json-schema.org/draft-04/hyper-schema", + "description": "A team app permission is a behavior that is assigned to a user in a team app.", + "stability": "prototype", + "title": "Heroku Platform API - Team App Permission", + "type": [ + "object" + ], + "definitions": { + "identity": { + "anyOf": [ + { + "$ref": "#/definitions/team-app-permission/definitions/name" + } + ] + }, + "name": { + "description": "The name of the app permission.", + "example": "view", + "readOnly": true, + "type": [ + "string" + ] + }, + "description": { + "description": "A description of what the app permission allows.", + "example": "Can manage config, deploy, run commands and restart the app.", + "readOnly": true, + "type": [ + "string" + ] + } + }, + "links": [ + { + "description": "Lists permissions available to teams.", + "href": "/teams/permissions", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/team-app-permission" + }, + "type": [ + "array" + ] + }, + "title": "List" + } + ], + "properties": { + "name": { + "$ref": "#/definitions/team-app-permission/definitions/name" + }, + "description": { + "$ref": "#/definitions/team-app-permission/definitions/description" + } + } + }, + "team-app": { + "$schema": "http://json-schema.org/draft-04/hyper-schema", + "description": "An team app encapsulates the team specific functionality of Heroku apps.", + "stability": "development", + "title": "Heroku Platform API - Team App", + "type": [ + "object" + ], + "definitions": { + "locked": { + "default": false, + "description": "are other team members forbidden from joining this app.", + "example": false, + "type": [ + "boolean" + ] + }, + "identity": { + "anyOf": [ + { + "$ref": "#/definitions/app/definitions/name" + } + ] + }, + "joined": { + "default": false, + "description": "is the current member a collaborator on this app.", + "example": false, + "type": [ + "boolean" + ] + }, + "personal": { + "default": false, + "description": "force creation of the app in the user account even if a default team is set.", + "example": false, + "type": [ + "boolean" + ] + } + }, + "links": [ + { + "description": "Create a new app in the specified team, in the default team if unspecified, or in personal account, if default team is not set.", + "href": "/teams/apps", + "method": "POST", + "rel": "create", + "schema": { + "properties": { + "locked": { + "$ref": "#/definitions/team-app/definitions/locked" + }, + "name": { + "$ref": "#/definitions/app/definitions/name" + }, + "team": { + "$ref": "#/definitions/team/definitions/name" + }, + "personal": { + "$ref": "#/definitions/team-app/definitions/personal" + }, + "region": { + "$ref": "#/definitions/region/definitions/name" + }, + "space": { + "$ref": "#/definitions/space/definitions/name" + }, + "stack": { + "$ref": "#/definitions/stack/definitions/name" + } + }, + "type": [ + "object" + ] + }, + "title": "Create" + }, + { + "description": "List apps in the default team, or in personal account, if default team is not set.", + "href": "/teams/apps", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/team-app" + }, + "type": [ + "array" + ] + }, + "title": "List" + }, + { + "description": "Info for a team app.", + "href": "/teams/apps/{(%23%2Fdefinitions%2Fteam-app%2Fdefinitions%2Fidentity)}", + "method": "GET", + "rel": "self", + "title": "Info" + }, + { + "description": "Lock or unlock a team app.", + "href": "/teams/apps/{(%23%2Fdefinitions%2Fteam-app%2Fdefinitions%2Fidentity)}", + "method": "PATCH", + "rel": "update", + "schema": { + "properties": { + "locked": { + "$ref": "#/definitions/team-app/definitions/locked" + } + }, + "required": [ + "locked" + ], + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/team-app" + }, + "title": "Update Locked" + }, + { + "description": "Transfer an existing team app to another Heroku account.", + "href": "/teams/apps/{(%23%2Fdefinitions%2Fteam-app%2Fdefinitions%2Fidentity)}", + "method": "PATCH", + "rel": "update", + "schema": { + "properties": { + "owner": { + "$ref": "#/definitions/account/definitions/identity" + } + }, + "required": [ + "owner" + ], + "type": [ + "object" + ] + }, + "title": "Transfer to Account" + }, + { + "description": "Transfer an existing team app to another team.", + "href": "/teams/apps/{(%23%2Fdefinitions%2Fteam-app%2Fdefinitions%2Fidentity)}", + "method": "PATCH", + "rel": "update", + "schema": { + "properties": { + "owner": { + "$ref": "#/definitions/team/definitions/name" + } + }, + "required": [ + "owner" + ], + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/team-app" + }, + "title": "Transfer to Team" + }, + { + "description": "List team apps.", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/apps", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/team-app" + }, + "type": [ + "array" + ] + }, + "title": "List By Team" + } + ], + "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/team-app/definitions/joined" + }, + "locked": { + "$ref": "#/definitions/team-app/definitions/locked" + }, + "maintenance": { + "$ref": "#/definitions/app/definitions/maintenance" + }, + "name": { + "$ref": "#/definitions/app/definitions/name" + }, + "team": { + "description": "team that owns this app", + "properties": { + "name": { + "$ref": "#/definitions/team/definitions/name" + } + }, + "type": [ + "null", + "object" + ] + }, + "owner": { + "description": "identity of app owner", + "properties": { + "email": { + "$ref": "#/definitions/account/definitions/email" + }, + "id": { + "$ref": "#/definitions/account/definitions/id" + } + }, + "type": [ + "null", + "object" + ] + }, + "region": { + "description": "identity of app region", + "properties": { + "id": { + "$ref": "#/definitions/region/definitions/id" + }, + "name": { + "$ref": "#/definitions/region/definitions/name" + } + }, + "type": [ + "object" + ] + }, + "released_at": { + "$ref": "#/definitions/app/definitions/released_at" + }, + "repo_size": { + "$ref": "#/definitions/app/definitions/repo_size" + }, + "slug_size": { + "$ref": "#/definitions/app/definitions/slug_size" + }, + "space": { + "description": "identity of space", + "properties": { + "id": { + "$ref": "#/definitions/space/definitions/id" + }, + "name": { + "$ref": "#/definitions/space/definitions/name" + } + }, + "type": [ + "null", + "object" + ] + }, + "stack": { + "description": "identity of app stack", + "properties": { + "id": { + "$ref": "#/definitions/stack/definitions/id" + }, + "name": { + "$ref": "#/definitions/stack/definitions/name" + } + }, + "type": [ + "object" + ] + }, + "updated_at": { + "$ref": "#/definitions/app/definitions/updated_at" + }, + "web_url": { + "$ref": "#/definitions/app/definitions/web_url" + } + } + }, + "team-feature": { + "description": "A team feature represents a feature enabled on a team account.", + "$schema": "http://json-schema.org/draft-04/hyper-schema", + "stability": "development", + "strictProperties": true, + "title": "Heroku Platform API - Team Feature", + "type": [ + "object" + ], + "definitions": { + "created_at": { + "description": "when team feature was created", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "readOnly": true, + "type": [ + "string" + ] + }, + "description": { + "description": "description of team feature", + "example": "Causes account to example.", + "readOnly": true, + "type": [ + "string" + ] + }, + "doc_url": { + "description": "documentation URL of team feature", + "example": "http://devcenter.heroku.com/articles/example", + "readOnly": true, + "type": [ + "string" + ] + }, + "enabled": { + "description": "whether or not team feature has been enabled", + "example": true, + "readOnly": false, + "type": [ + "boolean" + ] + }, + "id": { + "description": "unique identifier of team feature", + "example": "01234567-89ab-cdef-0123-456789abcdef", + "format": "uuid", + "readOnly": true, + "type": [ + "string" + ] + }, + "identity": { + "anyOf": [ + { + "$ref": "#/definitions/team-feature/definitions/id" + }, + { + "$ref": "#/definitions/team-feature/definitions/name" + } + ] + }, + "name": { + "description": "unique name of team feature", + "example": "name", + "readOnly": true, + "type": [ + "string" + ] + }, + "state": { + "description": "state of team feature", + "example": "public", + "readOnly": true, + "type": [ + "string" + ] + }, + "updated_at": { + "description": "when team feature was updated", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "readOnly": true, + "type": [ + "string" + ] + }, + "display_name": { + "description": "user readable feature name", + "example": "My Feature", + "readOnly": true, + "type": [ + "string" + ] + }, + "feedback_email": { + "description": "e-mail to send feedback about the feature", + "example": "feedback@heroku.com", + "readOnly": true, + "type": [ + "string" + ] + } + }, + "links": [ + { + "description": "Info for an existing team feature.", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/features/{(%23%2Fdefinitions%2Fteam-feature%2Fdefinitions%2Fidentity)}", + "method": "GET", + "rel": "self", + "targetSchema": { + "$ref": "#/definitions/team-feature" + }, + "title": "Info" + }, + { + "description": "List existing team features.", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/features", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/team-feature" + }, + "type": [ + "array" + ] + }, + "title": "List" + } + ], + "properties": { + "created_at": { + "$ref": "#/definitions/team-feature/definitions/created_at" + }, + "description": { + "$ref": "#/definitions/team-feature/definitions/description" + }, + "doc_url": { + "$ref": "#/definitions/team-feature/definitions/doc_url" + }, + "enabled": { + "$ref": "#/definitions/team-feature/definitions/enabled" + }, + "id": { + "$ref": "#/definitions/team-feature/definitions/id" + }, + "name": { + "$ref": "#/definitions/team-feature/definitions/name" + }, + "state": { + "$ref": "#/definitions/team-feature/definitions/state" + }, + "updated_at": { + "$ref": "#/definitions/team-feature/definitions/updated_at" + }, + "display_name": { + "$ref": "#/definitions/team-feature/definitions/display_name" + }, + "feedback_email": { + "$ref": "#/definitions/team-feature/definitions/feedback_email" + } + } + }, + "team-invitation": { + "description": "A team invitation represents an invite to a team.", + "$schema": "http://json-schema.org/draft-04/hyper-schema", + "stability": "development", + "strictProperties": true, + "title": "Heroku Platform API - Team Invitation", + "type": [ + "object" + ], + "definitions": { + "created_at": { + "description": "when invitation was created", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "readOnly": true, + "type": [ + "string" + ] + }, + "identity": { + "anyOf": [ + { + "$ref": "#/definitions/team-invitation/definitions/id" + } + ] + }, + "id": { + "description": "unique identifier of an invitation", + "example": "01234567-89ab-cdef-0123-456789abcdef", + "format": "uuid", + "readOnly": true, + "type": [ + "string" + ] + }, + "token": { + "description": "special token for invitation", + "example": "614ae25aa2d4802096cd7c18625b526c", + "readOnly": true, + "type": [ + "string" + ] + }, + "updated_at": { + "description": "when invitation was updated", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "readOnly": true, + "type": [ + "string" + ] + } + }, + "links": [ + { + "description": "Get a list of a team's Identity Providers", + "title": "List", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fname)}/invitations", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/team-invitation" + }, + "type": [ + "array" + ] + } + }, + { + "description": "Create Team Invitation", + "title": "Create", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/invitations", + "method": "PUT", + "rel": "update", + "schema": { + "properties": { + "email": { + "$ref": "#/definitions/account/definitions/email" + }, + "role": { + "$ref": "#/definitions/team/definitions/role" + } + }, + "required": [ + "email", + "role" + ], + "type": [ + "object" + ] + } + }, + { + "description": "Revoke a team invitation.", + "title": "Revoke", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/invitations/{(%23%2Fdefinitions%2Fteam-invitation%2Fdefinitions%2Fidentity)}", + "method": "DELETE", + "rel": "self" + }, + { + "description": "Get an invitation by its token", + "title": "Get", + "href": "/teams/invitations/{(%23%2Fdefinitions%2Fteam-invitation%2Fdefinitions%2Ftoken)}", + "method": "GET", + "rel": "instances", + "targetSchema": { + "$ref": "#/definitions/team-invitation" + } + }, + { + "description": "Accept Team Invitation", + "title": "Accept", + "href": "/teams/invitations/{(%23%2Fdefinitions%2Fteam-invitation%2Fdefinitions%2Ftoken)}/accept", + "method": "POST", + "rel": "create", + "targetSchema": { + "$ref": "#/definitions/team-member" + } + } + ], + "properties": { + "created_at": { + "$ref": "#/definitions/team-invitation/definitions/created_at" + }, + "id": { + "$ref": "#/definitions/team-invitation/definitions/id" + }, + "invited_by": { + "properties": { + "email": { + "$ref": "#/definitions/account/definitions/email" + }, + "id": { + "$ref": "#/definitions/account/definitions/id" + }, + "name": { + "$ref": "#/definitions/account/definitions/name" + } + }, + "strictProperties": true, + "type": [ + "object" + ] + }, + "team": { + "properties": { + "id": { + "$ref": "#/definitions/team/definitions/id" + }, + "name": { + "$ref": "#/definitions/team/definitions/name" + } + }, + "strictProperties": true, + "type": [ + "object" + ] + }, + "role": { + "$ref": "#/definitions/team/definitions/role" + }, + "updated_at": { + "$ref": "#/definitions/team-invitation/definitions/updated_at" + }, + "user": { + "properties": { + "email": { + "$ref": "#/definitions/account/definitions/email" + }, + "id": { + "$ref": "#/definitions/account/definitions/id" + }, + "name": { + "$ref": "#/definitions/account/definitions/name" + } + }, + "strictProperties": true, + "type": [ + "object" + ] + } + } + }, + "team-invoice": { + "$schema": "http://json-schema.org/draft-04/hyper-schema", + "description": "A Team Invoice is an itemized bill of goods for a team which includes pricing and charges.", + "stability": "development", + "strictProperties": true, + "title": "Heroku Platform API - Team Invoice", + "type": [ + "object" + ], + "definitions": { + "addons_total": { + "description": "total add-ons charges in on this invoice", + "example": 25000, + "readOnly": true, + "type": [ + "integer" + ] + }, + "database_total": { + "description": "total database charges on this invoice", + "example": 25000, + "readOnly": true, + "type": [ + "integer" + ] + }, + "charges_total": { + "description": "total charges on this invoice", + "example": 0, + "readOnly": true, + "type": [ + "integer" + ] + }, + "created_at": { + "description": "when invoice was created", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "readOnly": true, + "type": [ + "string" + ] + }, + "credits_total": { + "description": "total credits on this invoice", + "example": 100000, + "readOnly": true, + "type": [ + "integer" + ] + }, + "dyno_units": { + "description": "total amount of dyno units consumed across dyno types.", + "example": 1.92, + "readOnly": true, + "type": [ + "number" + ] + }, + "id": { + "description": "unique identifier of this invoice", + "example": "01234567-89ab-cdef-0123-456789abcdef", + "format": "uuid", + "readOnly": true, + "type": [ + "string" + ] + }, + "identity": { + "anyOf": [ + { + "$ref": "#/definitions/team-invoice/definitions/number" + } + ] + }, + "number": { + "description": "human readable invoice number", + "example": 9403943, + "readOnly": true, + "type": [ + "integer" + ] + }, + "payment_status": { + "description": "status of the invoice payment", + "example": "Paid", + "readOnly": true, + "type": [ + "string" + ] + }, + "platform_total": { + "description": "total platform charges on this invoice", + "example": 50000, + "readOnly": true, + "type": [ + "integer" + ] + }, + "period_end": { + "description": "the ending date that the invoice covers", + "example": "01/31/2014", + "readOnly": true, + "type": [ + "string" + ] + }, + "period_start": { + "description": "the starting date that this invoice covers", + "example": "01/01/2014", + "readOnly": true, + "type": [ + "string" + ] + }, + "state": { + "description": "payment status for this invoice (pending, successful, failed)", + "example": 1, + "readOnly": true, + "type": [ + "integer" + ] + }, + "total": { + "description": "combined total of charges and credits on this invoice", + "example": 100000, + "readOnly": true, + "type": [ + "integer" + ] + }, + "updated_at": { + "description": "when invoice was updated", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "readOnly": true, + "type": [ + "string" + ] + }, + "weighted_dyno_hours": { + "description": "The total amount of hours consumed across dyno types.", + "example": 1488, + "readOnly": true, + "type": [ + "number" + ] + } + }, + "links": [ + { + "description": "Info for existing invoice.", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/invoices/{(%23%2Fdefinitions%2Fteam-invoice%2Fdefinitions%2Fidentity)}", + "method": "GET", + "rel": "self", + "targetSchema": { + "$ref": "#/definitions/team-invoice" + }, + "title": "Info" + }, + { + "description": "List existing invoices.", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/invoices", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/team-invoice" + }, + "type": [ + "array" + ] + }, + "title": "List" + } + ], + "properties": { + "addons_total": { + "$ref": "#/definitions/team-invoice/definitions/addons_total" + }, + "database_total": { + "$ref": "#/definitions/team-invoice/definitions/database_total" + }, + "charges_total": { + "$ref": "#/definitions/team-invoice/definitions/charges_total" + }, + "created_at": { + "$ref": "#/definitions/team-invoice/definitions/created_at" + }, + "credits_total": { + "$ref": "#/definitions/team-invoice/definitions/credits_total" + }, + "dyno_units": { + "$ref": "#/definitions/team-invoice/definitions/dyno_units" + }, + "id": { + "$ref": "#/definitions/team-invoice/definitions/id" + }, + "number": { + "$ref": "#/definitions/team-invoice/definitions/number" + }, + "payment_status": { + "$ref": "#/definitions/team-invoice/definitions/payment_status" + }, + "period_end": { + "$ref": "#/definitions/team-invoice/definitions/period_end" + }, + "period_start": { + "$ref": "#/definitions/team-invoice/definitions/period_start" + }, + "platform_total": { + "$ref": "#/definitions/team-invoice/definitions/platform_total" + }, + "state": { + "$ref": "#/definitions/team-invoice/definitions/state" + }, + "total": { + "$ref": "#/definitions/team-invoice/definitions/total" + }, + "updated_at": { + "$ref": "#/definitions/team-invoice/definitions/updated_at" + }, + "weighted_dyno_hours": { + "$ref": "#/definitions/team-invoice/definitions/weighted_dyno_hours" + } + } + }, + "team-member": { + "$schema": "http://json-schema.org/draft-04/hyper-schema", + "description": "A team member is an individual with access to a team.", + "stability": "development", + "additionalProperties": false, + "required": [ + "created_at", + "email", + "federated", + "updated_at" + ], + "title": "Heroku Platform API - Team Member", + "type": [ + "object" + ], + "definitions": { + "created_at": { + "description": "when the membership record was created", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "readOnly": true, + "type": [ + "string" + ] + }, + "email": { + "description": "email address of the team member", + "example": "someone@example.org", + "readOnly": true, + "type": [ + "string" + ] + }, + "federated": { + "description": "whether the user is federated and belongs to an Identity Provider", + "example": false, + "readOnly": true, + "type": [ + "boolean" + ] + }, + "id": { + "description": "unique identifier of the team member", + "example": "01234567-89ab-cdef-0123-456789abcdef", + "format": "uuid", + "readOnly": true, + "type": [ + "string" + ] + }, + "identity": { + "anyOf": [ + { + "$ref": "#/definitions/team-member/definitions/email" + }, + { + "$ref": "#/definitions/team-member/definitions/id" + } + ] + }, + "name": { + "description": "full name of the team member", + "example": "Tina Edmonds", + "readOnly": true, + "type": [ + "string", + "null" + ] + }, + "two_factor_authentication": { + "description": "whether the Enterprise team member has two factor authentication enabled", + "example": true, + "readOnly": true, + "type": [ + "boolean" + ] + }, + "updated_at": { + "description": "when the membership record was updated", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "readOnly": true, + "type": [ + "string" + ] + } + }, + "links": [ + { + "description": "Create a new team member, or update their role.", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/members", + "method": "PUT", + "rel": "create", + "schema": { + "properties": { + "email": { + "$ref": "#/definitions/team-member/definitions/email" + }, + "federated": { + "$ref": "#/definitions/team-member/definitions/federated" + }, + "role": { + "$ref": "#/definitions/team/definitions/role" + } + }, + "required": [ + "email", + "role" + ], + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/team-member" + }, + "title": "Create or Update" + }, + { + "description": "Create a new team member.", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/members", + "method": "POST", + "rel": "create", + "schema": { + "properties": { + "email": { + "$ref": "#/definitions/team-member/definitions/email" + }, + "federated": { + "$ref": "#/definitions/team-member/definitions/federated" + }, + "role": { + "$ref": "#/definitions/team/definitions/role" + } + }, + "required": [ + "email", + "role" + ], + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/team-member" + }, + "title": "Create" + }, + { + "description": "Update a team member.", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/members", + "method": "PATCH", + "rel": "update", + "schema": { + "properties": { + "email": { + "$ref": "#/definitions/team-member/definitions/email" + }, + "federated": { + "$ref": "#/definitions/team-member/definitions/federated" + }, + "role": { + "$ref": "#/definitions/team/definitions/role" + } + }, + "required": [ + "email", + "role" + ], + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/team-member" + }, + "title": "Update" + }, + { + "description": "Remove a member from the team.", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/members/{(%23%2Fdefinitions%2Fteam-member%2Fdefinitions%2Fidentity)}", + "method": "DELETE", + "rel": "destroy", + "targetSchema": { + "$ref": "#/definitions/team-member" + }, + "title": "Delete" + }, + { + "description": "List members of the team.", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/members", + "method": "GET", + "ranges": [ + "email" + ], + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/team-member" + }, + "type": [ + "array" + ] + }, + "title": "List" + }, + { + "description": "List the apps of a team member.", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/members/{(%23%2Fdefinitions%2Fteam-member%2Fdefinitions%2Fidentity)}/apps", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/team-app" + }, + "type": [ + "array" + ] + }, + "title": "List By Member" + } + ], + "properties": { + "created_at": { + "$ref": "#/definitions/team-member/definitions/created_at" + }, + "email": { + "$ref": "#/definitions/team-member/definitions/email" + }, + "federated": { + "$ref": "#/definitions/team-member/definitions/federated" + }, + "id": { + "$ref": "#/definitions/team-member/definitions/id" + }, + "role": { + "$ref": "#/definitions/team/definitions/role" + }, + "two_factor_authentication": { + "$ref": "#/definitions/team-member/definitions/two_factor_authentication" + }, + "updated_at": { + "$ref": "#/definitions/team-member/definitions/updated_at" + }, + "user": { + "description": "user information for the membership", + "properties": { + "email": { + "$ref": "#/definitions/account/definitions/email" + }, + "id": { + "$ref": "#/definitions/account/definitions/id" + }, + "name": { + "$ref": "#/definitions/account/definitions/name" + } + }, + "strictProperties": true, + "type": [ + "object" + ] + } + } + }, + "team-preferences": { + "description": "Tracks a Team's Preferences", + "$schema": "http://json-schema.org/draft-04/hyper-schema", + "stability": "development", + "strictProperties": true, + "title": "Heroku Platform API - Team Preferences", + "type": [ + "object" + ], + "definitions": { + "default-permission": { + "description": "The default permission used when adding new members to the team", + "example": "member", + "readOnly": false, + "enum": [ + "admin", + "member", + "viewer", + null + ], + "type": [ + "null", + "string" + ] + }, + "identity": { + "$ref": "#/definitions/team/definitions/identity" + }, + "whitelisting-enabled": { + "description": "Whether whitelisting rules should be applied to add-on installations", + "example": true, + "readOnly": false, + "type": [ + "boolean", + "null" + ] + } + }, + "links": [ + { + "description": "Retrieve Team Preferences", + "href": "/teams/{(%23%2Fdefinitions%2Fteam-preferences%2Fdefinitions%2Fidentity)}/preferences", + "method": "GET", + "rel": "self", + "targetSchema": { + "$ref": "#/definitions/team-preferences" + }, + "title": "List" + }, + { + "description": "Update Team Preferences", + "href": "/teams/{(%23%2Fdefinitions%2Fteam-preferences%2Fdefinitions%2Fidentity)}/preferences", + "method": "PATCH", + "rel": "update", + "schema": { + "type": [ + "object" + ], + "properties": { + "whitelisting-enabled": { + "$ref": "#/definitions/team-preferences/definitions/whitelisting-enabled" + } + } + }, + "targetSchema": { + "$ref": "#/definitions/team-preferences" + }, + "title": "Update" + } + ], + "properties": { + "default-permission": { + "$ref": "#/definitions/team-preferences/definitions/default-permission" + }, + "whitelisting-enabled": { + "$ref": "#/definitions/team-preferences/definitions/whitelisting-enabled" + } + } + }, + "team": { + "$schema": "http://json-schema.org/draft-04/hyper-schema", + "description": "Teams allow you to manage access to a shared group of applications and other resources.", + "stability": "development", + "strictProperties": true, + "title": "Heroku Platform API - Team", + "type": [ + "object" + ], + "definitions": { + "created_at": { + "description": "when the team was created", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "readOnly": true, + "type": [ + "string" + ] + }, + "credit_card_collections": { + "description": "whether charges incurred by the team are paid by credit card.", + "example": true, + "readOnly": true, + "type": [ + "boolean" + ] + }, + "default": { + "description": "whether to use this team when none is specified", + "example": true, + "readOnly": false, + "type": [ + "boolean" + ] + }, + "id": { + "description": "unique identifier of team", + "example": "01234567-89ab-cdef-0123-456789abcdef", + "format": "uuid", + "readOnly": true, + "type": [ + "string" + ] + }, + "identity": { + "anyOf": [ + { + "$ref": "#/definitions/team/definitions/name" + }, + { + "$ref": "#/definitions/team/definitions/id" + } + ] + }, + "address_1": { + "type": [ + "string" + ], + "description": "street address line 1", + "example": "40 Hickory Lane" + }, + "address_2": { + "type": [ + "string" + ], + "description": "street address line 2", + "example": "Suite 103" + }, + "card_number": { + "type": [ + "string" + ], + "description": "encrypted card number of payment method", + "example": "encrypted-card-number" + }, + "city": { + "type": [ + "string" + ], + "description": "city", + "example": "San Francisco" + }, + "country": { + "type": [ + "string" + ], + "description": "country", + "example": "US" + }, + "cvv": { + "type": [ + "string" + ], + "description": "card verification value", + "example": "123" + }, + "expiration_month": { + "type": [ + "string" + ], + "description": "expiration month", + "example": "11" + }, + "expiration_year": { + "type": [ + "string" + ], + "description": "expiration year", + "example": "2014" + }, + "first_name": { + "type": [ + "string" + ], + "description": "the first name for payment method", + "example": "Jason" + }, + "last_name": { + "type": [ + "string" + ], + "description": "the last name for payment method", + "example": "Walker" + }, + "other": { + "type": [ + "string" + ], + "description": "metadata", + "example": "Additional information for payment method" + }, + "postal_code": { + "type": [ + "string" + ], + "description": "postal code", + "example": "90210" + }, + "state": { + "type": [ + "string" + ], + "description": "state", + "example": "CA" + }, + "membership_limit": { + "description": "upper limit of members allowed in a team.", + "example": 25, + "readOnly": true, + "type": [ + "number", + "null" + ] + }, + "name": { + "description": "unique name of team", + "example": "example", + "readOnly": true, + "type": [ + "string" + ] + }, + "provisioned_licenses": { + "description": "whether the team is provisioned licenses by salesforce.", + "example": true, + "readOnly": true, + "type": [ + "boolean" + ] + }, + "role": { + "description": "role in the team", + "enum": [ + "admin", + "collaborator", + "member", + "owner", + null + ], + "example": "admin", + "readOnly": true, + "type": [ + "null", + "string" + ] + }, + "type": { + "description": "type of team.", + "example": "team", + "enum": [ + "enterprise", + "team" + ], + "readOnly": true, + "type": [ + "string" + ] + }, + "updated_at": { + "description": "when the team was updated", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "readOnly": true, + "type": [ + "string" + ] + } + }, + "links": [ + { + "description": "List teams in which you are a member.", + "href": "/teams", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/team" + }, + "type": [ + "array" + ] + }, + "title": "List" + }, + { + "description": "Info for a team.", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}", + "method": "GET", + "rel": "self", + "title": "Info" + }, + { + "description": "Update team properties.", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}", + "method": "PATCH", + "rel": "update", + "schema": { + "properties": { + "default": { + "$ref": "#/definitions/team/definitions/default" + }, + "name": { + "$ref": "#/definitions/team/definitions/name" + } + }, + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/team" + }, + "title": "Update" + }, + { + "description": "Create a new team.", + "href": "/teams", + "method": "POST", + "rel": "create", + "schema": { + "properties": { + "name": { + "$ref": "#/definitions/team/definitions/name" + }, + "address_1": { + "$ref": "#/definitions/team/definitions/address_1" + }, + "address_2": { + "$ref": "#/definitions/team/definitions/address_2" + }, + "card_number": { + "$ref": "#/definitions/team/definitions/card_number" + }, + "city": { + "$ref": "#/definitions/team/definitions/city" + }, + "country": { + "$ref": "#/definitions/team/definitions/country" + }, + "cvv": { + "$ref": "#/definitions/team/definitions/cvv" + }, + "expiration_month": { + "$ref": "#/definitions/team/definitions/expiration_month" + }, + "expiration_year": { + "$ref": "#/definitions/team/definitions/expiration_year" + }, + "first_name": { + "$ref": "#/definitions/team/definitions/first_name" + }, + "last_name": { + "$ref": "#/definitions/team/definitions/last_name" + }, + "other": { + "$ref": "#/definitions/team/definitions/other" + }, + "postal_code": { + "$ref": "#/definitions/team/definitions/postal_code" + }, + "state": { + "$ref": "#/definitions/team/definitions/state" + } + }, + "required": [ + "name" + ], + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/team" + }, + "title": "Create" + }, + { + "description": "Delete an existing team.", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}", + "method": "DELETE", + "rel": "destroy", + "targetSchema": { + "$ref": "#/definitions/team" + }, + "title": "Delete" + } + ], + "properties": { + "id": { + "$ref": "#/definitions/team/definitions/id" + }, + "created_at": { + "$ref": "#/definitions/team/definitions/created_at" + }, + "credit_card_collections": { + "$ref": "#/definitions/team/definitions/credit_card_collections" + }, + "default": { + "$ref": "#/definitions/team/definitions/default" + }, + "membership_limit": { + "$ref": "#/definitions/team/definitions/membership_limit" + }, + "name": { + "$ref": "#/definitions/team/definitions/name" + }, + "provisioned_licenses": { + "$ref": "#/definitions/team/definitions/provisioned_licenses" + }, + "role": { + "$ref": "#/definitions/team/definitions/role" + }, + "type": { + "$ref": "#/definitions/team/definitions/type" + }, + "updated_at": { + "$ref": "#/definitions/team/definitions/updated_at" + } + } + }, "user-preferences": { "description": "Tracks a user's preferences and message dismissals", "$schema": "http://json-schema.org/draft-04/hyper-schema", "stability": "production", "strictProperties": true, @@ -11989,10 +14094,13 @@ "description": "Update User Preferences", "href": "/users/{(%23%2Fdefinitions%2Fuser-preferences%2Fdefinitions%2Fidentity)}/preferences", "method": "PATCH", "rel": "update", "schema": { + "type": [ + "object" + ], "properties": { "timezone": { "$ref": "#/definitions/user-preferences/definitions/timezone" }, "default-organization": { @@ -12155,18 +14263,21 @@ }, "type": [ "array" ] }, - "title": "List" + "title": "List By Organization" }, { "description": "Whitelist an Add-on Service", "href": "/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/whitelisted-addon-services", "method": "POST", "rel": "create", "schema": { + "type": [ + "object" + ], "properties": { "addon_service": { "description": "name of the Add-on to whitelist", "example": "heroku-postgresql", "type": [ @@ -12181,21 +14292,75 @@ }, "type": [ "array" ] }, - "title": "Create" + "title": "Create By Organization" }, { "description": "Remove a whitelisted entity", "href": "/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/whitelisted-addon-services/{(%23%2Fdefinitions%2Fwhitelisted-add-on-service%2Fdefinitions%2Fidentity)}", "method": "DELETE", "rel": "destroy", "targetSchema": { "$ref": "#/definitions/whitelisted-add-on-service" }, - "title": "Delete" + "title": "Delete By Organization" + }, + { + "description": "List all whitelisted Add-on Services for a Team", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/whitelisted-addon-services", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/whitelisted-add-on-service" + }, + "type": [ + "array" + ] + }, + "title": "List By Team" + }, + { + "description": "Whitelist an Add-on Service", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/whitelisted-addon-services", + "method": "POST", + "rel": "create", + "schema": { + "type": [ + "object" + ], + "properties": { + "addon_service": { + "description": "name of the Add-on to whitelist", + "example": "heroku-postgresql", + "type": [ + "string" + ] + } + } + }, + "targetSchema": { + "items": { + "$ref": "#/definitions/whitelisted-add-on-service" + }, + "type": [ + "array" + ] + }, + "title": "Create By Team" + }, + { + "description": "Remove a whitelisted entity", + "href": "/teams/{(%23%2Fdefinitions%2Fteam%2Fdefinitions%2Fidentity)}/whitelisted-addon-services/{(%23%2Fdefinitions%2Fwhitelisted-add-on-service%2Fdefinitions%2Fidentity)}", + "method": "DELETE", + "rel": "destroy", + "targetSchema": { + "$ref": "#/definitions/whitelisted-add-on-service" + }, + "title": "Delete By Team" } ], "properties": { "added_at": { "$ref": "#/definitions/whitelisted-add-on-service/definitions/added_at" @@ -12414,9 +14579,36 @@ "ssl-endpoint": { "$ref": "#/definitions/ssl-endpoint" }, "stack": { "$ref": "#/definitions/stack" + }, + "team-app-collaborator": { + "$ref": "#/definitions/team-app-collaborator" + }, + "team-app-permission": { + "$ref": "#/definitions/team-app-permission" + }, + "team-app": { + "$ref": "#/definitions/team-app" + }, + "team-feature": { + "$ref": "#/definitions/team-feature" + }, + "team-invitation": { + "$ref": "#/definitions/team-invitation" + }, + "team-invoice": { + "$ref": "#/definitions/team-invoice" + }, + "team-member": { + "$ref": "#/definitions/team-member" + }, + "team-preferences": { + "$ref": "#/definitions/team-preferences" + }, + "team": { + "$ref": "#/definitions/team" }, "user-preferences": { "$ref": "#/definitions/user-preferences" }, "whitelisted-add-on-service": {