curl --request POST \
--url https://api.datalinks.com/api/v1/upload/multipart/{username}/{namespace}/{datasetName}/prepare \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"filename": "large-data.parquet",
"size": 73473457
}
'import requests
url = "https://api.datalinks.com/api/v1/upload/multipart/{username}/{namespace}/{datasetName}/prepare"
payload = {
"filename": "large-data.parquet",
"size": 73473457
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({filename: 'large-data.parquet', size: 73473457})
};
fetch('https://api.datalinks.com/api/v1/upload/multipart/{username}/{namespace}/{datasetName}/prepare', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.datalinks.com/api/v1/upload/multipart/{username}/{namespace}/{datasetName}/prepare",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'filename' => 'large-data.parquet',
'size' => 73473457
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.datalinks.com/api/v1/upload/multipart/{username}/{namespace}/{datasetName}/prepare"
payload := strings.NewReader("{\n \"filename\": \"large-data.parquet\",\n \"size\": 73473457\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.datalinks.com/api/v1/upload/multipart/{username}/{namespace}/{datasetName}/prepare")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"filename\": \"large-data.parquet\",\n \"size\": 73473457\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.datalinks.com/api/v1/upload/multipart/{username}/{namespace}/{datasetName}/prepare")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filename\": \"large-data.parquet\",\n \"size\": 73473457\n}"
response = http.request(request)
puts response.read_body{
"uploadId": "2~VmxqYXRlRDZWfjJrRWRiZ2FEQXk3dHI4DGhGLygtTmQNXEZPQXFzMVZOZTUgdEdrXCEyNStkQUp3U3Q2RjJqSkV4MFNBOWxJCk0yIHEkfcQ",
"key": "uploads/data/20240301-143022-uuid.json",
"partSize": 8388608,
"presignedUrls": [
{
"url": "https://my-data-bucket.s3.amazonaws.com/uploads/data/20240301-143022-uuid.json?partNumber=1&uploadId=...",
"size": 8388608,
"headers": {},
"blockId": "YmxvY2stMDAwMDAwMDE="
}
],
"provider": "azure"
}{
"error_code": "UNAUTHORIZED",
"message": "Missing authentication token",
"error_message": "",
"sub_errors": [
{
"code": "<string>",
"message": "<string>"
}
]
}{
"error_code": "UNAUTHORIZED",
"message": "Missing authentication token",
"error_message": "",
"sub_errors": [
{
"code": "<string>",
"message": "<string>"
}
]
}{
"error_code": "UNAUTHORIZED",
"message": "Missing authentication token",
"error_message": "",
"sub_errors": [
{
"code": "<string>",
"message": "<string>"
}
]
}Prepare multipart upload
Initiate a multipart upload and get presigned URLs for all parts.
curl --request POST \
--url https://api.datalinks.com/api/v1/upload/multipart/{username}/{namespace}/{datasetName}/prepare \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"filename": "large-data.parquet",
"size": 73473457
}
'import requests
url = "https://api.datalinks.com/api/v1/upload/multipart/{username}/{namespace}/{datasetName}/prepare"
payload = {
"filename": "large-data.parquet",
"size": 73473457
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({filename: 'large-data.parquet', size: 73473457})
};
fetch('https://api.datalinks.com/api/v1/upload/multipart/{username}/{namespace}/{datasetName}/prepare', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.datalinks.com/api/v1/upload/multipart/{username}/{namespace}/{datasetName}/prepare",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'filename' => 'large-data.parquet',
'size' => 73473457
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.datalinks.com/api/v1/upload/multipart/{username}/{namespace}/{datasetName}/prepare"
payload := strings.NewReader("{\n \"filename\": \"large-data.parquet\",\n \"size\": 73473457\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.datalinks.com/api/v1/upload/multipart/{username}/{namespace}/{datasetName}/prepare")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"filename\": \"large-data.parquet\",\n \"size\": 73473457\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.datalinks.com/api/v1/upload/multipart/{username}/{namespace}/{datasetName}/prepare")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filename\": \"large-data.parquet\",\n \"size\": 73473457\n}"
response = http.request(request)
puts response.read_body{
"uploadId": "2~VmxqYXRlRDZWfjJrRWRiZ2FEQXk3dHI4DGhGLygtTmQNXEZPQXFzMVZOZTUgdEdrXCEyNStkQUp3U3Q2RjJqSkV4MFNBOWxJCk0yIHEkfcQ",
"key": "uploads/data/20240301-143022-uuid.json",
"partSize": 8388608,
"presignedUrls": [
{
"url": "https://my-data-bucket.s3.amazonaws.com/uploads/data/20240301-143022-uuid.json?partNumber=1&uploadId=...",
"size": 8388608,
"headers": {},
"blockId": "YmxvY2stMDAwMDAwMDE="
}
],
"provider": "azure"
}{
"error_code": "UNAUTHORIZED",
"message": "Missing authentication token",
"error_message": "",
"sub_errors": [
{
"code": "<string>",
"message": "<string>"
}
]
}{
"error_code": "UNAUTHORIZED",
"message": "Missing authentication token",
"error_message": "",
"sub_errors": [
{
"code": "<string>",
"message": "<string>"
}
]
}{
"error_code": "UNAUTHORIZED",
"message": "Missing authentication token",
"error_message": "",
"sub_errors": [
{
"code": "<string>",
"message": "<string>"
}
]
}Authorizations
Use a Bearer token for authentication. Submit the token using the Authorization
header: Authorization: Bearer <token>.
Path Parameters
The username associated with the request.
Namespace for the dataset.
Name of the dataset.
Body
Response
Returns multipart upload details, including presigned URLs.
Unique identifier for the multipart upload session.
"2~VmxqYXRlRDZWfjJrRWRiZ2FEQXk3dHI4DGhGLygtTmQNXEZPQXFzMVZOZTUgdEdrXCEyNStkQUp3U3Q2RjJqSkV4MFNBOWxJCk0yIHEkfcQ"
Generated S3 object key.
"uploads/data/20240301-143022-uuid.json"
Size of each part in bytes (8MB).
8388608
Array of presigned URLs for multipart upload.
1 - 10000 elementsShow child attributes
Show child attributes
Object-storage backend for this upload session, one of "s3" or "azure". Absent means "s3" (the default), so existing S3 clients are unaffected.
"azure"