transferOrderComplete
Manually marks a transfer order as completed, transitioning it to the COMPLETED terminal state.
Under normal circumstances, transfer orders auto-complete when all expected quantities have been received. Use transferOrderComplete when received quantities do not match expected quantities (partial reception, damaged goods, extra items) and you need to close the transfer order manually.
Required scope: edit_transfer_orders
Mutation
graphql
mutation TransferOrderComplete($transferOrderId: String!) {
transferOrderComplete(transferOrderId: $transferOrderId)
}Return type: Boolean
Returns true if the transfer order was successfully marked as completed.
Arguments
| Argument | Type | Required | Description |
|---|---|---|---|
transferOrderId | String | ✅ | Internal UUID of the transfer order to complete |
Example Variables
json
{
"transferOrderId": "550e8400-e29b-41d4-a716-446655440000"
}Example Response
json
{
"data": {
"transferOrderComplete": true
}
}Code Examples
bash
curl -X POST https://api-v3.happycolis.com/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d '{
"query": "mutation TransferOrderComplete($transferOrderId: String!) { transferOrderComplete(transferOrderId: $transferOrderId) }",
"variables": {
"transferOrderId": "550e8400-e29b-41d4-a716-446655440000"
}
}'js
const mutation = `
mutation TransferOrderComplete($transferOrderId: String!) {
transferOrderComplete(transferOrderId: $transferOrderId)
}
`;
const response = await fetch('https://api-v3.happycolis.com/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.ACCESS_TOKEN}`,
},
body: JSON.stringify({
query: mutation,
variables: { transferOrderId: '550e8400-e29b-41d4-a716-446655440000' },
}),
});
const { data } = await response.json();
console.log(data.transferOrderComplete);python
import os
import requests
mutation = """
mutation TransferOrderComplete($transferOrderId: String!) {
transferOrderComplete(transferOrderId: $transferOrderId)
}
"""
response = requests.post(
'https://api-v3.happycolis.com/graphql',
headers={'Authorization': f'Bearer {os.environ["ACCESS_TOKEN"]}'},
json={
'query': mutation,
'variables': {'transferOrderId': '550e8400-e29b-41d4-a716-446655440000'},
},
)
data = response.json()['data']
print(data['transferOrderComplete'])php
<?php
$mutation = <<<'GQL'
mutation TransferOrderComplete($transferOrderId: String!) {
transferOrderComplete(transferOrderId: $transferOrderId)
}
GQL;
$ch = curl_init('https://api-v3.happycolis.com/graphql');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
'query' => $mutation,
'variables' => ['transferOrderId' => '550e8400-e29b-41d4-a716-446655440000'],
]),
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer ' . getenv('ACCESS_TOKEN'),
],
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($result['data']['transferOrderComplete']);go
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main() {
mutation := `
mutation TransferOrderComplete($transferOrderId: String!) {
transferOrderComplete(transferOrderId: $transferOrderId)
}`
body, _ := json.Marshal(map[string]any{
"query": mutation,
"variables": map[string]any{"transferOrderId": "550e8400-e29b-41d4-a716-446655440000"},
})
req, _ := http.NewRequest("POST", "https://api-v3.happycolis.com/graphql", bytes.NewBuffer(body))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer "+os.Getenv("ACCESS_TOKEN"))
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
var result map[string]any
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result["data"])
}