schema.json in platform-api-0.5.0 vs schema.json in platform-api-0.6.0

- old
+ new

@@ -1695,17 +1695,35 @@ }, "source_blob": { "description": "gzipped tarball of source code containing app.json manifest file", "example": "https://example.com/source.tgz?token=xyz", "properties": { + "checksum": { + "description": "an optional checksum of the gzipped tarball for verifying its integrity", + "example": "SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "readOnly": true, + "type": [ + "null", + "string" + ] + }, "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" ] + }, + "version": { + "description": "Version of the gzipped tarball.", + "example": "v1.3.0", + "readOnly": true, + "type": [ + "string", + "null" + ] } }, "type": [ "object" ] @@ -2018,12 +2036,12 @@ "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$", + "example": "https://git.heroku.com/example.git", + "pattern": "^https://git\\.heroku\\.com/[a-z][a-z0-9-]{2,29}\\.git$", "readOnly": true, "type": [ "string" ] }, @@ -2465,21 +2483,10 @@ "strictProperties": true, "type": [ "object" ], "definitions": { - "buildpack": { - "description": "Buildpack to execute in a build", - "type": [ - "object" - ], - "properties": { - "url": { - "$ref": "#/definitions/buildpack-installation/definitions/url" - } - } - }, "created_at": { "description": "when build was created", "example": "2012-01-01T12:00:00Z", "format": "date-time", "readOnly": true, @@ -2512,10 +2519,19 @@ ] }, "source_blob": { "description": "location of gzipped tarball of source code used to create build", "properties": { + "checksum": { + "description": "an optional checksum of the gzipped tarball for verifying its integrity", + "example": "SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "readOnly": true, + "type": [ + "null", + "string" + ] + }, "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": [ @@ -2632,11 +2648,19 @@ "type": [ "array", "null" ], "items": { - "$ref": "#/definitions/build/definitions/buildpack" + "description": "Buildpack to execute in a build", + "type": [ + "object" + ], + "properties": { + "url": { + "$ref": "#/definitions/buildpack-installation/definitions/url" + } + } } }, "created_at": { "$ref": "#/definitions/build/definitions/created_at" }, @@ -2718,19 +2742,19 @@ "type": [ "object" ] }, "url": { - "description": "location of the buildpack for the app", + "description": "location of the buildpack for the app. Either a url (unofficial buildpacks) or an internal urn (heroku official buildpacks).", "example": "https://github.com/heroku/heroku-buildpack-ruby", "readOnly": false, "type": [ "string" ] }, "name": { - "description": "name of the buildpack for the app", + "description": "either the shorthand name (heroku official buildpacks) or url (unofficial buildpacks) of the buildpack for the app", "example": "heroku/ruby", "readOnly": false, "type": [ "string" ] @@ -2743,10 +2767,11 @@ "method": "PUT", "rel": "update", "schema": { "properties": { "updates": { + "description": "The buildpack attribute can accept a name, a url, or a urn.", "items": { "$ref": "#/definitions/buildpack-installation/definitions/update" }, "type": [ "array" @@ -3734,10 +3759,13 @@ { "$ref": "#/definitions/formation" }, { "$ref": "#/definitions/release" + }, + { + "$ref": "#/definitions/space" } ], "readOnly": true, "type": [ "object" @@ -3782,10 +3810,11 @@ "domain", "dyno", "failed-event", "formation", "release", + "space", "user" ], "example": "app", "readOnly": true, "type": [ @@ -4085,23 +4114,23 @@ }, "update": { "additionalProperties": false, "description": "Properties to update a process type", "properties": { - "process": { - "$ref": "#/definitions/formation/definitions/identity" - }, "quantity": { "$ref": "#/definitions/formation/definitions/quantity" }, "size": { "$ref": "#/definitions/formation/definitions/size" + }, + "type": { + "$ref": "#/definitions/formation/definitions/type" } }, "readOnly": false, "required": [ - "process" + "type" ], "type": [ "object" ] } @@ -4144,20 +4173,11 @@ "array" ], "items": { "$ref": "#/definitions/formation/definitions/update" }, - "description": "Array with formation updates. Each element must have \"type\", the id or name of the process type to be updated, and can optionally update its \"quantity\" or \"size\".", - "example": [ - { - "quantity": 1, - "size": "standard-2X", - "type": [ - "web" - ] - } - ] + "description": "Array with formation updates. Each element must have \"type\", the id or name of the process type to be updated, and can optionally update its \"quantity\" or \"size\"." } }, "required": [ "updates" ], @@ -4366,18 +4386,12 @@ "array" ], "items": { "$ref": "#/definitions/inbound-ruleset/definitions/rule" } - }, - "default_action": { - "$ref": "#/definitions/inbound-ruleset/definitions/action" } - }, - "required": [ - "default_action" - ] + } }, "title": "Create" } ], "properties": { @@ -4393,13 +4407,10 @@ ], "items": { "$ref": "#/definitions/inbound-ruleset/definitions/rule" } }, - "default_action": { - "$ref": "#/definitions/inbound-ruleset/definitions/action" - }, "created_by": { "$ref": "#/definitions/account/definitions/email" } } }, @@ -5539,10 +5550,28 @@ "scope": { "$ref": "#/definitions/oauth-authorization/definitions/scope" }, "updated_at": { "$ref": "#/definitions/oauth-authorization/definitions/updated_at" + }, + "user": { + "description": "authenticated user associated with this authorization", + "properties": { + "id": { + "$ref": "#/definitions/account/definitions/id" + }, + "email": { + "$ref": "#/definitions/account/definitions/email" + }, + "full_name": { + "$ref": "#/definitions/account/definitions/name" + } + }, + "strictProperties": true, + "type": [ + "object" + ] } } }, "oauth-client": { "description": "OAuth clients are applications that Heroku users can authorize to automate, customize or extend their usage of the platform. For more information please refer to the [Heroku OAuth documentation](https://devcenter.heroku.com/articles/oauth).", @@ -7934,10 +7963,677 @@ "state": { "$ref": "#/definitions/payment/definitions/state" } } }, + "pipeline-coupling": { + "description": "Information about an app's coupling to a pipeline", + "$schema": "http://json-schema.org/draft-04/hyper-schema", + "stability": "prototype", + "title": "Heroku Platform API - Pipeline Coupling", + "type": [ + "object" + ], + "definitions": { + "created_at": { + "description": "when pipeline coupling was created", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "readOnly": true, + "type": [ + "string" + ] + }, + "id": { + "description": "unique identifier of pipeline coupling", + "example": "01234567-89ab-cdef-0123-456789abcdef", + "format": "uuid", + "readOnly": true, + "type": [ + "string" + ] + }, + "identity": { + "anyOf": [ + { + "$ref": "#/definitions/pipeline-coupling/definitions/id" + } + ] + }, + "stage": { + "description": "target pipeline stage", + "example": "production", + "enum": [ + "review", + "development", + "staging", + "production" + ], + "type": [ + "string" + ] + }, + "updated_at": { + "description": "when pipeline coupling was updated", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "readOnly": true, + "type": [ + "string" + ] + } + }, + "links": [ + { + "description": "List couplings for a pipeline", + "href": "/pipelines/{(%23%2Fdefinitions%2Fpipeline%2Fdefinitions%2Fidentity)}/pipeline-couplings", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/pipeline-coupling" + }, + "type": [ + "array" + ] + }, + "title": "List" + }, + { + "description": "List pipeline couplings.", + "href": "/pipeline-couplings", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/pipeline-coupling" + }, + "type": [ + "array" + ] + }, + "title": "List" + }, + { + "description": "Create a new pipeline coupling.", + "href": "/pipeline-couplings", + "method": "POST", + "rel": "create", + "schema": { + "properties": { + "app": { + "$ref": "#/definitions/app/definitions/identity" + }, + "pipeline": { + "$ref": "#/definitions/pipeline/definitions/identity" + }, + "stage": { + "$ref": "#/definitions/pipeline-coupling/definitions/stage" + } + }, + "required": [ + "app", + "pipeline", + "stage" + ], + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/pipeline-coupling" + }, + "title": "Create" + }, + { + "description": "Info for an existing pipeline coupling.", + "href": "/pipeline-couplings/{(%23%2Fdefinitions%2Fpipeline-coupling%2Fdefinitions%2Fidentity)}", + "method": "GET", + "rel": "self", + "targetSchema": { + "$ref": "#/definitions/pipeline-coupling" + }, + "title": "Info" + }, + { + "description": "Delete an existing pipeline coupling.", + "href": "/pipeline-couplings/{(%23%2Fdefinitions%2Fpipeline-coupling%2Fdefinitions%2Fidentity)}", + "method": "DELETE", + "rel": "delete", + "targetSchema": { + "$ref": "#/definitions/pipeline-coupling" + }, + "title": "Delete" + }, + { + "description": "Update an existing pipeline coupling.", + "href": "/pipeline-couplings/{(%23%2Fdefinitions%2Fpipeline-coupling%2Fdefinitions%2Fidentity)}", + "method": "PATCH", + "rel": "update", + "schema": { + "properties": { + "stage": { + "$ref": "#/definitions/pipeline-coupling/definitions/stage" + } + }, + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/pipeline-coupling" + }, + "title": "Update" + }, + { + "description": "Info for an existing pipeline coupling.", + "href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/pipeline-couplings", + "method": "GET", + "rel": "self", + "targetSchema": { + "$ref": "#/definitions/pipeline-coupling" + }, + "title": "Info" + } + ], + "properties": { + "app": { + "description": "app involved in the pipeline coupling", + "properties": { + "id": { + "$ref": "#/definitions/app/definitions/id" + } + }, + "type": [ + "object" + ] + }, + "created_at": { + "$ref": "#/definitions/pipeline-coupling/definitions/created_at" + }, + "id": { + "$ref": "#/definitions/pipeline-coupling/definitions/id" + }, + "pipeline": { + "description": "pipeline involved in the coupling", + "properties": { + "id": { + "$ref": "#/definitions/pipeline/definitions/id" + } + }, + "type": [ + "object" + ] + }, + "stage": { + "$ref": "#/definitions/pipeline-coupling/definitions/stage" + }, + "updated_at": { + "$ref": "#/definitions/pipeline-coupling/definitions/updated_at" + } + } + }, + "pipeline-promotion-target": { + "description": "Promotion targets represent an individual app being promoted to", + "$schema": "http://json-schema.org/draft-04/hyper-schema", + "stability": "prototype", + "strictProperties": true, + "title": "Heroku Platform API - Pipeline Promotion Target", + "type": [ + "object" + ], + "definitions": { + "error_message": { + "description": "an error message for why the promotion failed", + "example": "User does not have access to that app", + "type": [ + "null", + "string" + ] + }, + "id": { + "description": "unique identifier of promotion target", + "example": "01234567-89ab-cdef-0123-456789abcdef", + "readOnly": true, + "format": "uuid", + "type": [ + "string" + ] + }, + "identity": { + "anyOf": [ + { + "$ref": "#/definitions/pipeline-promotion-target/definitions/id" + } + ] + }, + "status": { + "description": "status of promotion", + "example": "pending", + "readOnly": true, + "enum": [ + "pending", + "succeeded", + "failed" + ], + "type": [ + "string" + ] + } + }, + "links": [ + { + "description": "List promotion targets belonging to an existing promotion.", + "href": "/pipeline-promotions/{(%23%2Fdefinitions%2Fpipeline-promotion%2Fdefinitions%2Fid)}/promotion-targets", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/pipeline-promotion-target" + }, + "type": [ + "array" + ] + }, + "title": "List" + } + ], + "properties": { + "app": { + "description": "the app which was promoted to", + "properties": { + "id": { + "$ref": "#/definitions/app/definitions/id" + } + }, + "strictProperties": true, + "type": [ + "object" + ] + }, + "error_message": { + "$ref": "#/definitions/pipeline-promotion-target/definitions/error_message" + }, + "id": { + "$ref": "#/definitions/pipeline-promotion-target/definitions/id" + }, + "pipeline_promotion": { + "description": "the promotion which the target belongs to", + "properties": { + "id": { + "$ref": "#/definitions/pipeline-promotion/definitions/id" + } + }, + "strictProperties": true, + "type": [ + "object" + ] + }, + "release": { + "description": "the release which was created on the target app", + "properties": { + "id": { + "$ref": "#/definitions/release/definitions/id" + } + }, + "type": [ + "object", + "null" + ] + }, + "status": { + "$ref": "#/definitions/pipeline-promotion-target/definitions/status" + } + } + }, + "pipeline-promotion": { + "description": "Promotions allow you to move code from an app in a pipeline to all targets", + "$schema": "http://json-schema.org/draft-04/hyper-schema", + "stability": "prototype", + "strictProperties": true, + "title": "Heroku Platform API - Pipeline Promotion", + "type": [ + "object" + ], + "definitions": { + "created_at": { + "description": "when promotion was created", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "type": [ + "string" + ] + }, + "id": { + "description": "unique identifier of promotion", + "example": "01234567-89ab-cdef-0123-456789abcdef", + "readOnly": true, + "format": "uuid", + "type": [ + "string" + ] + }, + "identity": { + "anyOf": [ + { + "$ref": "#/definitions/pipeline-promotion/definitions/id" + } + ] + }, + "status": { + "description": "status of promotion", + "example": "pending", + "readOnly": true, + "enum": [ + "pending", + "completed" + ], + "type": [ + "string" + ] + }, + "updated_at": { + "description": "when promotion was updated", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "type": [ + "string", + "null" + ] + } + }, + "links": [ + { + "description": "Create a new promotion.", + "href": "/pipeline-promotions", + "method": "POST", + "rel": "create", + "schema": { + "properties": { + "pipeline": { + "description": "pipeline involved in the promotion", + "properties": { + "id": { + "$ref": "#/definitions/pipeline/definitions/id" + } + }, + "required": [ + "id" + ], + "type": [ + "object" + ] + }, + "source": { + "description": "the app being promoted from", + "properties": { + "app": { + "description": "the app which was promoted from", + "properties": { + "id": { + "$ref": "#/definitions/app/definitions/id" + } + }, + "strictProperties": true, + "type": [ + "object" + ] + } + } + }, + "targets": { + "items": { + "properties": { + "app": { + "description": "the app is being promoted to", + "properties": { + "id": { + "$ref": "#/definitions/app/definitions/id" + } + }, + "strictProperties": true, + "type": [ + "object" + ] + } + } + } + } + }, + "required": [ + "pipeline", + "source", + "targets" + ], + "type": [ + "object" + ] + }, + "title": "Create" + }, + { + "description": "Info for existing pipeline promotion.", + "href": "/pipeline-promotions/{(%23%2Fdefinitions%2Fpipeline-promotion%2Fdefinitions%2Fidentity)}", + "method": "GET", + "rel": "self", + "targetSchema": { + "$ref": "#/definitions/pipeline-promotion" + }, + "title": "Info" + } + ], + "properties": { + "created_at": { + "$ref": "#/definitions/pipeline-promotion/definitions/created_at" + }, + "id": { + "$ref": "#/definitions/pipeline-promotion/definitions/id" + }, + "pipeline": { + "description": "the pipeline which the promotion belongs to", + "properties": { + "id": { + "$ref": "#/definitions/pipeline/definitions/id" + } + }, + "strictProperties": true, + "type": [ + "object" + ] + }, + "source": { + "description": "the app being promoted from", + "properties": { + "app": { + "description": "the app which was promoted from", + "properties": { + "id": { + "$ref": "#/definitions/app/definitions/id" + } + }, + "strictProperties": true, + "type": [ + "object" + ] + }, + "release": { + "description": "the release used to promoted from", + "properties": { + "id": { + "$ref": "#/definitions/release/definitions/id" + } + }, + "type": [ + "object" + ] + } + }, + "strictProperties": true, + "type": [ + "object" + ] + }, + "status": { + "$ref": "#/definitions/pipeline-promotion/definitions/status" + }, + "updated_at": { + "$ref": "#/definitions/pipeline-promotion/definitions/updated_at" + } + } + }, + "pipeline": { + "description": "A pipeline allows grouping of apps into different stages.", + "$schema": "http://json-schema.org/draft-04/hyper-schema", + "stability": "prototype", + "strictProperties": true, + "title": "Heroku Platform API - Pipeline", + "type": [ + "object" + ], + "definitions": { + "created_at": { + "description": "when pipeline was created", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "readOnly": true, + "type": [ + "string" + ] + }, + "id": { + "description": "unique identifier of pipeline", + "example": "01234567-89ab-cdef-0123-456789abcdef", + "format": "uuid", + "readOnly": true, + "type": [ + "string" + ] + }, + "identity": { + "anyOf": [ + { + "$ref": "#/definitions/pipeline/definitions/id" + }, + { + "$ref": "#/definitions/pipeline/definitions/name" + } + ] + }, + "name": { + "description": "name of pipeline", + "example": "example", + "pattern": "^[a-z][a-z0-9-]{2,29}$", + "readOnly": false, + "type": [ + "string" + ] + }, + "updated_at": { + "description": "when pipeline was updated", + "example": "2012-01-01T12:00:00Z", + "format": "date-time", + "readOnly": true, + "type": [ + "string" + ] + } + }, + "links": [ + { + "description": "Create a new pipeline.", + "href": "/pipelines", + "method": "POST", + "rel": "create", + "schema": { + "properties": { + "name": { + "$ref": "#/definitions/pipeline/definitions/name" + } + }, + "required": [ + "name" + ], + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/pipeline" + }, + "title": "Create" + }, + { + "description": "Info for existing pipeline.", + "href": "/pipelines/{(%23%2Fdefinitions%2Fpipeline%2Fdefinitions%2Fidentity)}", + "method": "GET", + "rel": "self", + "targetSchema": { + "$ref": "#/definitions/pipeline" + }, + "title": "Info" + }, + { + "description": "Delete an existing pipeline.", + "href": "/pipelines/{(%23%2Fdefinitions%2Fpipeline%2Fdefinitions%2Fid)}", + "method": "DELETE", + "rel": "delete", + "targetSchema": { + "$ref": "#/definitions/pipeline" + }, + "title": "Delete" + }, + { + "description": "Update an existing pipeline.", + "href": "/pipelines/{(%23%2Fdefinitions%2Fpipeline%2Fdefinitions%2Fid)}", + "method": "PATCH", + "rel": "update", + "schema": { + "properties": { + "name": { + "$ref": "#/definitions/pipeline/definitions/name" + } + }, + "type": [ + "object" + ] + }, + "targetSchema": { + "$ref": "#/definitions/pipeline" + }, + "title": "Update" + }, + { + "description": "List existing pipelines.", + "href": "/pipelines", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/pipeline" + } + }, + "type": [ + "array" + ], + "title": "List" + } + ], + "properties": { + "created_at": { + "$ref": "#/definitions/pipeline/definitions/created_at" + }, + "id": { + "$ref": "#/definitions/pipeline/definitions/id" + }, + "name": { + "$ref": "#/definitions/pipeline/definitions/name" + }, + "updated_at": { + "$ref": "#/definitions/pipeline/definitions/updated_at" + } + } + }, "plan": { "description": "Plans represent different configurations of add-ons that may be added to apps. Endpoints under add-on services can be accessed without authentication.", "$schema": "http://json-schema.org/draft-04/hyper-schema", "stability": "production", "strictProperties": true, @@ -7986,10 +8682,26 @@ "readOnly": true, "type": [ "string" ] }, + "installable_inside_private_network": { + "description": "whether this plan is installable to a Private Spaces app", + "example": false, + "readOnly": true, + "type": [ + "boolean" + ] + }, + "installable_outside_private_network": { + "description": "whether this plan is installable to a Common Runtime app", + "example": true, + "readOnly": true, + "type": [ + "boolean" + ] + }, "identity": { "anyOf": [ { "$ref": "#/definitions/plan/definitions/id" }, @@ -8020,10 +8732,18 @@ "readOnly": true, "type": [ "string" ] }, + "space_default": { + "description": "whether this plan is the default for apps in Private Spaces", + "example": false, + "readOnly": true, + "type": [ + "boolean" + ] + }, "state": { "description": "release status for plan", "example": "public", "readOnly": true, "type": [ @@ -8081,10 +8801,16 @@ "$ref": "#/definitions/plan/definitions/human_name" }, "id": { "$ref": "#/definitions/plan/definitions/id" }, + "installable_inside_private_network": { + "$ref": "#/definitions/plan/definitions/installable_inside_private_network" + }, + "installable_outside_private_network": { + "$ref": "#/definitions/plan/definitions/installable_outside_private_network" + }, "name": { "$ref": "#/definitions/plan/definitions/name" }, "price": { "description": "price", @@ -8099,10 +8825,13 @@ "strictProperties": true, "type": [ "object" ] }, + "space_default": { + "$ref": "#/definitions/plan/definitions/space_default" + }, "state": { "$ref": "#/definitions/plan/definitions/state" }, "updated_at": { "$ref": "#/definitions/plan/definitions/updated_at" @@ -8245,11 +8974,11 @@ "type": [ "string" ] }, "private_capable": { - "description": "whether or not region is available for creating a private space", + "description": "whether or not region is available for creating a Private Space", "example": false, "readOnly": true, "type": [ "boolean" ] @@ -8686,31 +9415,10 @@ "description": "Create a new slug. For more information please refer to [Deploying Slugs using the Platform API](https://devcenter.heroku.com/articles/platform-api-deploying-slugs).", "href": "/apps/{(%23%2Fdefinitions%2Fapp%2Fdefinitions%2Fidentity)}/slugs", "method": "POST", "rel": "create", "schema": { - "example": { - "blob": { - "method": "PUT", - "url": "https://api.heroku.com/slugs/1234.tgz" - }, - "buildpack_provided_description": "Ruby/Rack", - "checksum": "SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "commit": "60883d9e8947a57e04dc9124f25df004866a2051", - "commit_description": "fixed a bug with API documentation", - "created_at": "2012-01-01T12:00:00Z", - "id": "01234567-89ab-cdef-0123-456789abcdef", - "process_types": { - "web": "./bin/web -p $PORT" - }, - "size": 2048, - "stack": { - "id": "01234567-89ab-cdef-0123-456789abcdef", - "name": "cedar-14" - }, - "updated_at\"": "2012-01-01T12:00:00Z" - }, "properties": { "buildpack_provided_description": { "$ref": "#/definitions/slug/definitions/buildpack_provided_description" }, "checksum": { @@ -8735,11 +9443,32 @@ "type": [ "object" ] }, "targetSchema": { - "$ref": "#/definitions/slug" + "$ref": "#/definitions/slug", + "example": { + "blob": { + "method": "PUT", + "url": "https://api.heroku.com/slugs/1234.tgz" + }, + "buildpack_provided_description": "Ruby/Rack", + "checksum": "SHA256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "commit": "60883d9e8947a57e04dc9124f25df004866a2051", + "commit_description": "fixed a bug with API documentation", + "created_at": "2012-01-01T12:00:00Z", + "id": "01234567-89ab-cdef-0123-456789abcdef", + "process_types": { + "web": "./bin/web -p $PORT" + }, + "size": 2048, + "stack": { + "id": "01234567-89ab-cdef-0123-456789abcdef", + "name": "cedar-14" + }, + "updated_at": "2012-01-01T12:00:00Z" + } }, "title": "Create" } ], "properties": { @@ -8909,10 +9638,159 @@ "object" ] } } }, + "space-app-access": { + "description": "Space access represents the privileges a particular user has on a particular space.", + "$schema": "http://json-schema.org/draft-04/hyper-schema", + "stability": "prototype", + "title": "Heroku Platform API - Space Access", + "type": [ + "object" + ], + "definitions": { + "id": { + "description": "unique identifier of the space a user has privileges on", + "example": "01234567-89ab-cdef-0123-456789abcdef", + "format": "uuid", + "readOnly": true, + "type": [ + "string" + ] + }, + "identity": { + "anyOf": [ + { + "$ref": "#/definitions/space-app-access/definitions/id" + } + ] + } + }, + "links": [ + { + "description": "List privileges for a given user on a given space.", + "href": "/spaces/{(%23%2Fdefinitions%2Fspace%2Fdefinitions%2Fidentity)}/members/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}", + "method": "GET", + "rel": "self", + "targetSchema": { + "$ref": "#/definitions/space-app-access" + }, + "title": "Info" + }, + { + "description": "Update an existing user's set of privileges on a space.", + "href": "/spaces/{(%23%2Fdefinitions%2Fspace%2Fdefinitions%2Fidentity)}/members/{(%23%2Fdefinitions%2Faccount%2Fdefinitions%2Fidentity)}", + "method": "PATCH", + "rel": "update", + "schema": { + "properties": { + "privileges": { + "type": [ + "array" + ], + "items": { + "type": [ + "object" + ], + "properties": { + "name": { + "type": [ + "string" + ] + } + } + } + } + } + }, + "targetSchema": { + "$ref": "#/definitions/space-app-access" + }, + "title": "Update" + }, + { + "description": "List all users and their privileges on a space.", + "href": "/spaces/{(%23%2Fdefinitions%2Fspace%2Fdefinitions%2Fidentity)}/members", + "method": "GET", + "rel": "instances", + "targetSchema": { + "items": { + "$ref": "#/definitions/space-app-access" + }, + "type": [ + "array" + ] + }, + "title": "List" + } + ], + "properties": { + "space": { + "description": "space user belongs to", + "properties": { + "name": { + "$ref": "#/definitions/app/definitions/name" + }, + "id": { + "$ref": "#/definitions/app/definitions/id" + } + }, + "strictProperties": true, + "type": [ + "object" + ] + }, + "created_at": { + "$ref": "#/definitions/space/definitions/created_at" + }, + "id": { + "$ref": "#/definitions/space/definitions/id" + }, + "privileges": { + "description": "user space privileges", + "type": [ + "array" + ], + "items": { + "type": [ + "object" + ], + "properties": { + "description": { + "type": [ + "string" + ] + }, + "name": { + "type": [ + "string" + ] + } + } + } + }, + "updated_at": { + "$ref": "#/definitions/space/definitions/updated_at" + }, + "user": { + "description": "identity of user account", + "properties": { + "email": { + "$ref": "#/definitions/account/definitions/email" + }, + "id": { + "$ref": "#/definitions/account/definitions/id" + } + }, + "strictProperties": true, + "type": [ + "object" + ] + } + } + }, "space-nat": { "description": "Network address translation (NAT) for stable outbound IP addresses from a space", "$schema": "http://json-schema.org/draft-04/hyper-schema", "stability": "prototype", "strictProperties": true, @@ -9556,10 +10434,19 @@ "type": [ "string", "null" ] }, + "default-organization": { + "description": "User's default organization", + "example": "sushi-inc", + "readOnly": false, + "type": [ + "string", + "null" + ] + }, "dismissed-github-banner": { "description": "Whether the user has dismissed the GitHub link banner", "example": true, "readOnly": false, "type": [ @@ -9610,10 +10497,24 @@ "type": [ "boolean", "null" ] }, + "dismissed-pipelines-github-banners": { + "description": "Which pipeline uuids the user has dismissed the GitHub banner for", + "example": [ + "96c68759-f310-4910-9867-e0b062064098" + ], + "readOnly": false, + "type": [ + "null", + "array" + ], + "items": { + "$ref": "#/definitions/pipeline/definitions/id" + } + }, "dismissed-sms-banner": { "description": "Whether the user has dismissed the 2FA SMS banner", "example": true, "readOnly": false, "type": [ @@ -9641,10 +10542,13 @@ "schema": { "properties": { "timezone": { "$ref": "#/definitions/user-preferences/definitions/timezone" }, + "default-organization": { + "$ref": "#/definitions/user-preferences/definitions/default-organization" + }, "dismissed-github-banner": { "$ref": "#/definitions/user-preferences/definitions/dismissed-github-banner" }, "dismissed-getting-started": { "$ref": "#/definitions/user-preferences/definitions/dismissed-getting-started" @@ -9656,10 +10560,16 @@ "$ref": "#/definitions/user-preferences/definitions/dismissed-org-wizard-notification" }, "dismissed-pipelines-banner": { "$ref": "#/definitions/user-preferences/definitions/dismissed-pipelines-banner" }, + "dismissed-pipelines-github-banner": { + "$ref": "#/definitions/user-preferences/definitions/dismissed-pipelines-github-banner" + }, + "dismissed-pipelines-github-banners": { + "$ref": "#/definitions/user-preferences/definitions/dismissed-pipelines-github-banners" + }, "dismissed-sms-banner": { "$ref": "#/definitions/user-preferences/definitions/dismissed-sms-banner" } } }, @@ -9671,10 +10581,13 @@ ], "properties": { "timezone": { "$ref": "#/definitions/user-preferences/definitions/timezone" }, + "default-organization": { + "$ref": "#/definitions/user-preferences/definitions/default-organization" + }, "dismissed-github-banner": { "$ref": "#/definitions/user-preferences/definitions/dismissed-github-banner" }, "dismissed-getting-started": { "$ref": "#/definitions/user-preferences/definitions/dismissed-getting-started" @@ -9689,10 +10602,13 @@ "$ref": "#/definitions/user-preferences/definitions/dismissed-pipelines-banner" }, "dismissed-pipelines-github-banner": { "$ref": "#/definitions/user-preferences/definitions/dismissed-pipelines-github-banner" }, + "dismissed-pipelines-github-banners": { + "$ref": "#/definitions/user-preferences/definitions/dismissed-pipelines-github-banners" + }, "dismissed-sms-banner": { "$ref": "#/definitions/user-preferences/definitions/dismissed-sms-banner" } } }, @@ -9789,15 +10705,14 @@ "href": "/organizations/{(%23%2Fdefinitions%2Forganization%2Fdefinitions%2Fidentity)}/whitelisted-addon-services", "method": "POST", "rel": "create", "schema": { "properties": { - "addon": { - "description": "name of one or more Add-ons to whitelist", + "addon_service": { + "description": "name of the Add-on to whitelist", "example": "heroku-postgresql", "type": [ - "array", "string" ] } } }, @@ -9966,10 +10881,22 @@ "$ref": "#/definitions/payment-method" }, "payment": { "$ref": "#/definitions/payment" }, + "pipeline-coupling": { + "$ref": "#/definitions/pipeline-coupling" + }, + "pipeline-promotion-target": { + "$ref": "#/definitions/pipeline-promotion-target" + }, + "pipeline-promotion": { + "$ref": "#/definitions/pipeline-promotion" + }, + "pipeline": { + "$ref": "#/definitions/pipeline" + }, "plan": { "$ref": "#/definitions/plan" }, "rate-limit": { "$ref": "#/definitions/rate-limit" @@ -9989,9 +10916,12 @@ "sms-number": { "$ref": "#/definitions/sms-number" }, "source": { "$ref": "#/definitions/source" + }, + "space-app-access": { + "$ref": "#/definitions/space-app-access" }, "space-nat": { "$ref": "#/definitions/space-nat" }, "space": {