When using a remote blobstore, such as AWS, the response is a redirect to the actual location of the bits. If the client is automatically following redirects, then the OAuth token that was used to communicate with Cloud Controller will be replayed on the new redirect request. Some blobstores may reject the request in that case. Clients may need to follow the redirect without including the OAuth token.
POST /v3/packages/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35/upload
bits_name=application.zip&bits_path=%2Ftmp%2Fd20151103-23074-11v6hzf%2Fapplication.zip
Authorization: bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoidWFhLWlkLTg2IiwiZW1haWwiOiJlbWFpbC04NEBzb21lZG9tYWluLmNvbSIsInNjb3BlIjpbImNsb3VkX2NvbnRyb2xsZXIucmVhZCIsImNsb3VkX2NvbnRyb2xsZXIud3JpdGUiXSwiYXVkIjpbImNsb3VkX2NvbnRyb2xsZXIiXSwiZXhwIjoxNDQ3MTE2ODM0fQ.uJnbCdRpjblvqLSQaz_KVz_gCvI34lnJREC0xyWQODY Host: example.org Content-Type: application/x-www-form-urlencoded Cookie:
curl "https://api.[your-domain.com]/v3/packages/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35/upload" -d 'bits_name=application.zip&bits_path=%2Ftmp%2Fd20151103-23074-11v6hzf%2Fapplication.zip' -X POST \ -H "Authorization: bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoidWFhLWlkLTg2IiwiZW1haWwiOiJlbWFpbC04NEBzb21lZG9tYWluLmNvbSIsInNjb3BlIjpbImNsb3VkX2NvbnRyb2xsZXIucmVhZCIsImNsb3VkX2NvbnRyb2xsZXIud3JpdGUiXSwiYXVkIjpbImNsb3VkX2NvbnRyb2xsZXIiXSwiZXhwIjoxNDQ3MTE2ODM0fQ.uJnbCdRpjblvqLSQaz_KVz_gCvI34lnJREC0xyWQODY" \ -H "Host: example.org" \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Cookie: "
200 OK
{ "guid": "guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35", "type": "bits", "data": { "hash": { "type": "sha1", "value": null }, "error": null }, "state": "PROCESSING_UPLOAD", "created_at": "2015-11-03T00:53:54Z", "updated_at": "2015-11-03T00:53:54Z", "links": { "self": { "href": "/v3/packages/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35" }, "upload": { "href": "/v3/packages/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35/upload", "method": "POST" }, "download": { "href": "/v3/packages/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35/download", "method": "GET" }, "stage": { "href": "/v3/packages/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35/droplets", "method": "POST" }, "app": { "href": "/v3/apps/guid-9767322f-2c3c-4d1d-8df2-002933ebc012" } } }
Content-Type: application/json;charset=utf-8 X-VCAP-Request-ID: fe32aa67-a48b-46ea-ada9-f6a736084f79 Content-Length: 860 X-Content-Type-Options: nosniff
GET /v3/packages/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35
Authorization: bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoidWFhLWlkLTg2IiwiZW1haWwiOiJlbWFpbC04NEBzb21lZG9tYWluLmNvbSIsInNjb3BlIjpbImNsb3VkX2NvbnRyb2xsZXIucmVhZCIsImNsb3VkX2NvbnRyb2xsZXIud3JpdGUiXSwiYXVkIjpbImNsb3VkX2NvbnRyb2xsZXIiXSwiZXhwIjoxNDQ3MTE2ODM0fQ.uJnbCdRpjblvqLSQaz_KVz_gCvI34lnJREC0xyWQODY Host: example.org Cookie:
curl "https://api.[your-domain.com]/v3/packages/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35" -X GET \ -H "Authorization: bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoidWFhLWlkLTg2IiwiZW1haWwiOiJlbWFpbC04NEBzb21lZG9tYWluLmNvbSIsInNjb3BlIjpbImNsb3VkX2NvbnRyb2xsZXIucmVhZCIsImNsb3VkX2NvbnRyb2xsZXIud3JpdGUiXSwiYXVkIjpbImNsb3VkX2NvbnRyb2xsZXIiXSwiZXhwIjoxNDQ3MTE2ODM0fQ.uJnbCdRpjblvqLSQaz_KVz_gCvI34lnJREC0xyWQODY" \ -H "Host: example.org" \ -H "Cookie: "
200 OK
{ "guid": "guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35", "type": "bits", "data": { "hash": { "type": "sha1", "value": "e1d1539f72786504e7aa78f1ba550e371d56e83e" }, "error": null }, "state": "READY", "created_at": "2015-11-03T00:53:54Z", "updated_at": "2015-11-03T00:53:54Z", "links": { "self": { "href": "/v3/packages/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35" }, "upload": { "href": "/v3/packages/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35/upload", "method": "POST" }, "download": { "href": "/v3/packages/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35/download", "method": "GET" }, "stage": { "href": "/v3/packages/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35/droplets", "method": "POST" }, "app": { "href": "/v3/apps/guid-9767322f-2c3c-4d1d-8df2-002933ebc012" } } }
Content-Type: application/json;charset=utf-8 X-VCAP-Request-ID: c1452820-9826-4124-a4ea-18c28b1f1519 Content-Length: 886 X-Content-Type-Options: nosniff
GET /v3/packages/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35/download
Authorization: bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoidWFhLWlkLTg2IiwiZW1haWwiOiJlbWFpbC04NEBzb21lZG9tYWluLmNvbSIsInNjb3BlIjpbImNsb3VkX2NvbnRyb2xsZXIucmVhZCIsImNsb3VkX2NvbnRyb2xsZXIud3JpdGUiXSwiYXVkIjpbImNsb3VkX2NvbnRyb2xsZXIiXSwiZXhwIjoxNDQ3MTE2ODM0fQ.uJnbCdRpjblvqLSQaz_KVz_gCvI34lnJREC0xyWQODY Host: example.org Cookie:
curl "https://api.[your-domain.com]/v3/packages/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35/download" -X GET \ -H "Authorization: bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoidWFhLWlkLTg2IiwiZW1haWwiOiJlbWFpbC04NEBzb21lZG9tYWluLmNvbSIsInNjb3BlIjpbImNsb3VkX2NvbnRyb2xsZXIucmVhZCIsImNsb3VkX2NvbnRyb2xsZXIud3JpdGUiXSwiYXVkIjpbImNsb3VkX2NvbnRyb2xsZXIiXSwiZXhwIjoxNDQ3MTE2ODM0fQ.uJnbCdRpjblvqLSQaz_KVz_gCvI34lnJREC0xyWQODY" \ -H "Host: example.org" \ -H "Cookie: "
302 Found
Content-Type: application/json;charset=utf-8 Location: https://cc-packages.s3.amazonaws.com/gu/id/guid-b2048a5b-6b81-422f-9ac1-19ea0ecfdb35?X-Amz-Expires=3600&X-Amz-Date=20151103T005354Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=fake_aws_key_id/20151103/us-east-1/s3/aws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=600d35466c0f051c9a8a4a6f28a4f020560572630ed3773250f85977939e185c X-VCAP-Request-ID: e69576a9-6225-4eb1-89b5-58f00b114def Content-Length: 0 X-Content-Type-Options: nosniff