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
transferOrderIdStringInternal 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