Complete outbound multipart upload and trigger processing
curl --request POST \
--url https://api.sftpsync.io/outbound/uploads/{uploadId}/complete \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"parts": [
{
"partNumber": 1
},
{
"partNumber": 2
},
{
"partNumber": 3
}
]
}
'import requests
url = "https://api.sftpsync.io/outbound/uploads/{uploadId}/complete"
payload = { "parts": [{ "partNumber": 1 }, { "partNumber": 2 }, { "partNumber": 3 }] }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({parts: [{partNumber: 1}, {partNumber: 2}, {partNumber: 3}]})
};
fetch('https://api.sftpsync.io/outbound/uploads/{uploadId}/complete', 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.sftpsync.io/outbound/uploads/{uploadId}/complete",
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([
'parts' => [
[
'partNumber' => 1
],
[
'partNumber' => 2
],
[
'partNumber' => 3
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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.sftpsync.io/outbound/uploads/{uploadId}/complete"
payload := strings.NewReader("{\n \"parts\": [\n {\n \"partNumber\": 1\n },\n {\n \"partNumber\": 2\n },\n {\n \"partNumber\": 3\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.sftpsync.io/outbound/uploads/{uploadId}/complete")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"parts\": [\n {\n \"partNumber\": 1\n },\n {\n \"partNumber\": 2\n },\n {\n \"partNumber\": 3\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sftpsync.io/outbound/uploads/{uploadId}/complete")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"parts\": [\n {\n \"partNumber\": 1\n },\n {\n \"partNumber\": 2\n },\n {\n \"partNumber\": 3\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"message": "Upload a1b2c3d4 completed. Processing started for employees.json",
"filename": "employees.json"
}{
"message": "<string>",
"statusCode": 123,
"error": "<string>"
}{
"message": "<string>",
"statusCode": 123,
"error": "<string>"
}Outbound Uploads
Complete outbound multipart upload and trigger processing
Combines all uploaded parts into one file, stores it in S3, and triggers pipeline processing. The number of parts listed must match totalParts.
POST
/
outbound
/
uploads
/
{uploadId}
/
complete
Complete outbound multipart upload and trigger processing
curl --request POST \
--url https://api.sftpsync.io/outbound/uploads/{uploadId}/complete \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"parts": [
{
"partNumber": 1
},
{
"partNumber": 2
},
{
"partNumber": 3
}
]
}
'import requests
url = "https://api.sftpsync.io/outbound/uploads/{uploadId}/complete"
payload = { "parts": [{ "partNumber": 1 }, { "partNumber": 2 }, { "partNumber": 3 }] }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({parts: [{partNumber: 1}, {partNumber: 2}, {partNumber: 3}]})
};
fetch('https://api.sftpsync.io/outbound/uploads/{uploadId}/complete', 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.sftpsync.io/outbound/uploads/{uploadId}/complete",
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([
'parts' => [
[
'partNumber' => 1
],
[
'partNumber' => 2
],
[
'partNumber' => 3
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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.sftpsync.io/outbound/uploads/{uploadId}/complete"
payload := strings.NewReader("{\n \"parts\": [\n {\n \"partNumber\": 1\n },\n {\n \"partNumber\": 2\n },\n {\n \"partNumber\": 3\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.sftpsync.io/outbound/uploads/{uploadId}/complete")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"parts\": [\n {\n \"partNumber\": 1\n },\n {\n \"partNumber\": 2\n },\n {\n \"partNumber\": 3\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sftpsync.io/outbound/uploads/{uploadId}/complete")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"parts\": [\n {\n \"partNumber\": 1\n },\n {\n \"partNumber\": 2\n },\n {\n \"partNumber\": 3\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"message": "Upload a1b2c3d4 completed. Processing started for employees.json",
"filename": "employees.json"
}{
"message": "<string>",
"statusCode": 123,
"error": "<string>"
}{
"message": "<string>",
"statusCode": 123,
"error": "<string>"
}Authorizations
Path Parameters
Body
application/json
Upload one part for an outbound upload sessionAbort outbound multipart upload and cleanup temp parts
⌘I