Your service
AiGenda API
Storage
1
POST /audio/
title, size, content_type
2
id, url[]
part upload URLs
3
PUT part
to url[i]
4
ETag
in the response header
5
POST /complete_upload/
PartNumber and ETag
6
GET /info/
until is_uploaded: true
1
Your service → AiGenda API
POST /audio/
title, size, content_type
2
AiGenda API → Your service
id, url[]
part upload URLs
3
Your service → Storage
PUT part
to url[i]
4
Storage → Your service
ETag
in the response header
5
Your service → AiGenda API
POST /complete_upload/
PartNumber and ETag
6
Your service → AiGenda API
GET /info/
until is_uploaded: true
Steps
1
Create a recording
Response 201
url is always an array: one link per file part, each part about 10 MB. So you usually get several links: an 18 MB file gets two.2
Upload the parts
Split the file into as many parts as there are links:
- part size:
ceil(size / len(url))bytes, the last part is shorter; - part number
i(starting from one) goes to the linkurl[i-1]; - method
PUT, request body: the part’s bytes, no JSON and no multipart form; - save the
ETagheader from the storage response together with its double quotes:"9b2cf535f27731c974343645a3985328".
ETag is readable), so you can upload from a frontend too.3
Complete the upload
Pass the part numbers and their Response:
ETag values in the order you uploaded them.200 with an empty body.4
Wait for confirmation
Poll
info/ every 2 seconds until you get is_uploaded: true. It usually takes less than a second. Then start processing.