Storage API
Storage API allows to store any kind of files in the ConnectyCube cloud. Mainly it is used for chat attachments, users avatars, group chat pictures.
All files in the ConnectyCube are named as blobs - binary large object. It is a data type that can store binary objects or data.
File model
Section titled “File model”| Parameter | Description |
|---|---|
| id | FIle identifier |
| created_at | Date and time when file was created. System creates this parameter automatically |
| updated_at | Date and time when file was updated. System creates this parameter automatically |
| name | File name, the lenth can be min 1 char and max 100 chars |
| status | (deprecated) Status of file, can be ‘null’ or ‘complete’ |
| public | File availability / access. Can be public or private. By default all created files are private |
| uid | Unique identifier that points to an object in Amazon S3 service. Mainly used to download file content. |
| content_type | Type of file. Format: mime type |
| size | File size |
| blob_object_access | Data that are used for upload or download file |
| last_read_access_ts | (deprecated) Last date and time when the file was accessed |
| set_completed_at | (deprecated) Date and time when ‘Completed’ status was set for a file with ‘Declaring file uploaded’ request |
File upload flow
Section titled “File upload flow”The complete file upload flow looks as follow:
Create a file
Section titled “Create a file”With a create a file request a new file can be created on server and used in the application. To create a new file at least two mandatory parameters content_type and name should be set to identify what file will be created.
As a response, created file will receive blob_object_access parameter with a link on Amazon S3 service where this file will be stored.
Endpoint
Section titled “Endpoint”POST https://api.connectycube.com/blobsParameters
Section titled “Parameters”| Parameter | Required | Description |
|---|---|---|
| blob[content_type] | Yes | Mime content type. This is a type of file to create, it can be image, video, audio, etc. |
| blob[name] | Yes | Name of a new file |
| blob[public] | No | File visibility. Can be public or private. By default all created files are private (blob[public]=false) |
Request example
Section titled “Request example”curl -X POST \-H "Content-Type: application/json" \-H "CB-Token: <TOKEN>" \-d '{"blob": {"content_type": "image/jpeg", "name": "cat.jpeg"}}' \https://api.connectycube.com/blobsResponse
Section titled “Response”{ "blob": { "id": 46919, "uid": "763ef825ad8748239ed07def2c14555100", "content_type": "image/jpeg", "name": "cat.jpeg", "size": null, "created_at": "2018-12-10T10:26:01Z", "updated_at": "2018-12-10T10:26:01Z", "public": true, "blob_object_access": { "id": 46919, "blob_id": 46919, "expires": "2018-12-10T11:26:01Z", "object_access_type": "Write", "params": "https://s3.amazonaws.com/cb-shared-s3?Content-Type=image%2Fjpeg&Expires=Mon%2C%2010%20Dec%202018%2011%3A26%3A01%20GMT&acl=public-read&key=763ef825ad8748239ed07def2c14555100&policy=eyJleHBpcmF0aW9uIjoiMjAxOC0xMi0xMFQxMToyNjowMVoiLCJjb25kaXRpb25zIjpbeyJidWNrZXQiOiJjYi1zaGFyZWQtczMifSx7ImFjbCI6InB1YmxpYy1yZWFkIn0seyJDb250ZW50LVR5cGUiOiJpbWFnZS9qcGVnIn0seyJzdWNjZXNzX2FjdGlvbl9zdGF0dXMiOiIyMDEifSx7IkV4cGlyZXMiOiJNb24sIDEwIERlYyAyMDE4IDExOjI2OjAxIEdNVCJ9LHsia2V5IjoiNzYzZWY4MjVhZDg3NDgyMzllZDA3ZGVmMmMxNDU1NTEwMCJ9LHsieC1hbXotY3JlZGVudGlhbCI6IkFLSUFJRzNXUFQ3UkFMWU9aVzZRLzIwMTgxMjEwL3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSx7IngtYW16LWFsZ29yaXRobSI6IkFXUzQtSE1BQy1TSEEyNTYifSx7IngtYW16LWRhdGUiOiIyMDE4MTIxMFQxMDI2MDFaIn1dfQ%3D%3D&success_action_status=201&x-amz-algorithm=AWS4-HMAC-SHA256&x-amz-credential=AKIAIG3WPT7RALYOZW6Q%2F20181210%2Fus-east-1%2Fs3%2Faws4_request&x-amz-date=20181210T102601Z&x-amz-signature=718eabea1a52a1cf03f926310a22ad7f68daa5b2b66432abaed2a0f90e74952d" } }}Upload a file
Section titled “Upload a file”Upload a file with the parameters taken from blob_object_access field from create a file response.
Note: The maximum size of the uploaded file is 100 Mb.
Endpoint
Section titled “Endpoint”POST https://cb-shared-s3.s3.amazonaws.comParameters
Section titled “Parameters”Use parameters and URL from blob_object_access received as a response for Create a file request. The complete list pf parameters can vary.
| Parameter | Value |
|---|---|
| Content-Type | image/jpg |
| Expires | Fri, 23 Nov 2018 15.30.33 GMT |
| acl | public-read |
| key | c44be580f3294f1ca18056d62f75864500 |
| policy | eyJleHBpcmF0aW9…OVoifV19 |
| success_action_status | 201 |
| x-amz-algorithm | AWS4-HMAC-SHA256 |
| x-amz-credential | AKIAIG3WPT7RALYOZW6Q/20181123/us-east-1/s3/aws4_request |
| x-amz-date | 20181123T141009Z |
| x-amz-signature | 6b76f67cc72313fd5c1f39a75af3ec99bc7363cc6db1adf7e9e0d73091c05299 |
| file | root to the profile_image.jpg |
Request example
Section titled “Request example”curl -X POST -F "Content-Type=image/jpeg" -F "Expires=Fri, 17 Dec 2018 23:30:00 GMT" -F "acl=public-read" -F "key=c44be580f3294f1ca18056d62f75864500" -F "policy=eyJleHBpcmF0aW9uIjoiMjAxNS0wOS0zMFQxMzZGQ4N2ZlNGIyOTlmZjQxZjYzNjMzYmY5YzEwMCJ9LHsieC1hbXotY3JlZGVudGlhbCI6IkFLSUFJWTdLRk0yM1hHWEo3UjdBLzIwMTUwOTMwL3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSx7IngtYW16LWFsZ29yaXRobSI6IkFXUzQtSE1BQy1TSEEyNTYifSx7IngtYW16LWRhd" -F "success_action_status=201" -F "x-amz-algorithm=AWS4-HMAC-SHA256" -F "x-amz-credential=AKIAIY7KFM23XGXJ7R7A/20150930/us-east-1/s3/aws4_request" -F "x-amz-date=20181217T141009Z" -F "x-amz-signature=6b76f67cc72313fd5c1f39a75af3ec99bc7363cc6db1adf7e9e0d73091c05299" -F "file=@profile_image.jpg"https://cb-shared-s3.s3.amazonaws.comResponse
Section titled “Response”<PostResponse> <Location> https://cb-shared-s3.s3.amazonaws.com/g6f92bcf84374e4fb8961537f7a7de908 </Location> <Bucket>cb-shared-s3</Bucket> <Key>g6f92bcf84374e4fb8961537f7a7de908</Key> <ETag>"cv1aae3a4mkiob83bc7h1e21eb7e2m88"</ETag></PostResponse>Declare file uploaded
Section titled “Declare file uploaded”Declaring file as uploaded by set a ‘Complete’ status for the uploaded file.
Endpoint
Section titled “Endpoint”PUT https://api.connectycube.com/blobs/{blob_id}/completeParameters
Section titled “Parameters”| Parameter | Required | Description |
|---|---|---|
| blob[size] | Yes | Size of the uploaded file, in bytes |
Request example
Section titled “Request example”curl -X POST \-H "Content-Type: application/json" \-H "CB-Token: <TOKEN>" \-d '{"blob": {"size": "347"}}' \https://api.connectycube.com/blobs/111/completeResponse
Section titled “Response”200 OKGet information about file by ID
Section titled “Get information about file by ID”Retrieving of information about file by specifying its ID.
Endpoint
Section titled “Endpoint”GET https://api.connectycube.com/blobs/{blob_id}Request example
Section titled “Request example”curl -X GET \-H "CB-Token: <TOKEN>" \https://api.connectycube.com/blobs/8049Response
Section titled “Response”{ "blob": { "id": 8049, "uid": "9ad79a5b8bb1430fbc4bbf7be6215cb700", "content_type": "image/jpeg", "name": "Mixed_Pets.jpg", "size": 70980, "created_at": "2018-08-02T07:52:51Z", "updated_at": "2018-08-02T07:52:51Z", "public": true }}Get files list (deprecated)
Section titled “Get files list (deprecated)”Get list of files created by the current user. User ID is taken from the token specified in the request.
Endpoint
Section titled “Endpoint”GET https://api.connectycube.com/blobsParameters
Section titled “Parameters”| Parameter | Required | Description |
|---|---|---|
| page | No | Number of page to show. The first page is shown by default |
| per_page | No | Number of results to show per page. Default number of results per page - 10, maximum number of results per page - 100 |
Request example
Section titled “Request example”curl -X GET \-H "CB-Token: <TOKEN>" \https://api.connectycube.com/blobsResponse
Section titled “Response”{ "current_page": 1, "per_page": 10, "total_entries": 1, "items": [ { "blob": { "id": 8049, "uid": "9ad79a5b8bb1430fbc4bbf7be6215cb700", "content_type": "image/jpeg", "name": "Pets.jpg", "size": 70980, "created_at": "2018-08-02T07:52:51Z", "updated_at": "2018-08-02T07:52:51Z", "blob_status": "complete", "set_completed_at": "2018-08-02T07:52:51Z", "public": true } } ]}Download file by UID
Section titled “Download file by UID”Download file (get file as a redirect to the S3 object) by its UID. UID is a parameter created by system automatically with a ‘create a file’ request. Only file set as complete can be downloaded.
All public file (blob[public]=true) can be downloaded without a session token.
Endpoit
Section titled “Endpoit”GET https://api.connectycube.com/blobs/{uid}/downloadRequest example
Section titled “Request example”curl -X GET \-H "CB-Token: <TOKEN>" \https://api.connectycube.com/blobs/9ad79a5b8bb1430fbc4bbf7be6215cb744/downloadResponse
Section titled “Response”301 redirect to fileGet file object by UID
Section titled “Get file object by UID”Retrieving of information about file by specifying its UID.
Endpoint
Section titled “Endpoint”GET https://api.connectycube.com/blobs/{blob_uid}/objectParameters
Section titled “Parameters”| Parameter | Required | Description |
|---|---|---|
| download_url | No | include download url to response |
Request example
Section titled “Request example”curl -X GET \-H "CB-Token: <TOKEN>" \https://api.connectycube.com/blobs/789AFF0737033E93E179BD7491169D6043B0/object?download_url=1Response
Section titled “Response”{ "blob": { "id": 8049, "uid": "789AFF0737033E93E179BD7491169D6043B0", "content_type": "image/jpeg", "name": "Mixed_Pets.jpg", "size": 70980, "created_at": "2018-08-02T07:52:51Z", "updated_at": "2018-08-02T07:52:51Z", "public": true, "blob_object_access": { "dowload_url": "https://cb-shared-s3.s3.amazonaws.com/789AFF0737033E93E179BD7491169D6043B0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIATFRX3OIRNHFSRZEEL%2F20221007%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221007T104904Z&X-Amz-Expires=604800&X-Amz-Signature=1eade6afb3e571c24131a15bf520058uffdv7393521e16e51de1c317c43908b1c5b52&X-Amz-SignedHeaders=host&response-cache-control=max-age%3D604800" } }}Edit a file (deprecated)
Section titled “Edit a file (deprecated)”Update one or more parameters of the file.
Endpoint
Section titled “Endpoint”PUT https://api.connectycube.com/blobs/{blob_id}Parameters
Section titled “Parameters”| Parameter | Required | Description |
|---|---|---|
| blob[content_type] | Optional | Type of file, format: mime content type |
| blob[name] | Optional | File name with a length up to 100 chars |
| blob[new] | Optional | Set to ‘1’ if file content should be changed |
Request example
Section titled “Request example”curl -X PUT \-H "Content-Type: application/json" \-H "CB-Token: <TOKEN>" \-d '{"blob": {"name": "My photo"}}' \https://api.connectycube.com/blobs/111Response
Section titled “Response” { "blob": { "id": 8049, "uid": "9ad79a5b8bb1430fbc4bbf7be6215cb700", "content_type": "image/jpeg", "name": "My photo", "size": 70980, "created_at": "2018-08-02T07:52:51Z", "updated_at": "2018-12-10T10:21:18Z", "blob_status": "complete", "set_completed_at": "2018-08-02T07:52:51Z", "public": true }}Delete a file
Section titled “Delete a file”Delete a file from server by its ID.
Endpoint
Section titled “Endpoint”DELETE https://api.connectycube.com/blobs/{blob_id}Request example
Section titled “Request example”curl -X DELETE \-H "CB-Token: <TOKEN>" \https://api.connectycube.com/blobs/111Response
Section titled “Response”200 OK