Skip to content

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 ​

ArgumentTypeRequiredDescription
transferOrderIdString✅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"])
}

HappyColis API Documentation