Skip to content

rmaConfigurationUpdate ​

Updates an existing RMA configuration. All fields except id are optional — only the fields you provide will be updated.

Required scope: edit_rma_configurations


Mutation ​

graphql
mutation RmaConfigurationUpdate($input: RmaConfigurationUpdateInput!) {
  rmaConfigurationUpdate(input: $input) {
    id
    locationId
    portalIsActive
    autoAccept
    acceptMulti
    needsPictures
    requestProductState
    authorizationDelay
    maxAuthorizationDelay
    reasonLines
    expectedResolutions
    emailContact
    shopUrl
    domain
    autoGenerateFinancialResolution
    autoExecuteFinancialResolution
    retainedAmountForShipping
    refundShippingOnPartialReturn
    refundShippingOnCompleteReturn
  }
}

Input: RmaConfigurationUpdateInput ​

FieldTypeRequiredDescription
idID✅UUID of the configuration to update
locationIdString❌Location UUID this configuration applies to
portalIsActiveBoolean❌Enable or disable the customer-facing return portal
domainString❌Custom domain for the return portal
organizationIdString❌Organization UUID
tpAppIds[String]❌Third-party application IDs
needsPicturesBoolean❌Require customers to upload photos of returned items
authorizationDelayInt❌Number of days after purchase within which returns are authorized
maxAuthorizationDelayInt❌Maximum number of days for return authorization
autoAcceptBoolean❌Automatically accept return requests without manual review
acceptMultiBoolean❌Allow multiple returns per original order
requestProductStateBoolean❌Require customers to specify product condition
reasonLines[RmaOrderReturnReason]❌Allowed return reasons: WRONG_ITEM, NOT_RECEIVED, SIZE_PROBLEM, COLOR_PROBLEM, DEFECTIVE, DAMAGED_PRODUCT, UNSATISFIED, ITEMS_NOT_SOLD
expectedResolutions[RmaOrderExpectedResolution]❌Allowed resolution types: NONE, VOUCHER, REPLACE, REFUND
emailContactString❌Contact email displayed on the return portal
shopUrlString❌Shop URL for linking back to the store
customCssString❌Custom CSS to style the return portal
titleColorString❌Title color for the return portal (hex code)
backgroundColorString❌Background color for the return portal (hex code)
headlineString❌Headline text displayed on the return portal
metaDescriptionString❌Meta description for SEO
metaTitleString❌Meta title for SEO
autoGenerateFinancialResolutionBoolean❌Auto-generate financial resolution when return is completed
autoExecuteFinancialResolutionBoolean❌Auto-execute financial resolution without manual review
retainedAmountForShippingFloat❌Default amount to retain for return shipping costs
refundShippingOnPartialReturnBoolean❌Refund original shipping cost on partial returns
refundShippingOnCompleteReturnBoolean❌Refund original shipping cost on complete returns

Example Variables ​

json
{
  "input": {
    "id": "config-uuid-001",
    "autoAccept": true,
    "authorizationDelay": 14,
    "retainedAmountForShipping": 6.99,
    "refundShippingOnPartialReturn": true,
    "headline": "Easy returns within 14 days"
  }
}

Example Response ​

json
{
  "data": {
    "rmaConfigurationUpdate": {
      "id": "config-uuid-001",
      "locationId": "loc-uuid-001",
      "portalIsActive": true,
      "autoAccept": true,
      "acceptMulti": true,
      "needsPictures": true,
      "requestProductState": true,
      "authorizationDelay": 14,
      "maxAuthorizationDelay": 60,
      "reasonLines": [
        "WRONG_ITEM",
        "SIZE_PROBLEM",
        "COLOR_PROBLEM",
        "DEFECTIVE",
        "DAMAGED_PRODUCT",
        "UNSATISFIED"
      ],
      "expectedResolutions": [
        "REFUND",
        "VOUCHER",
        "REPLACE"
      ],
      "emailContact": "returns@mystore.com",
      "shopUrl": "https://mystore.com",
      "domain": "returns.mystore.com",
      "autoGenerateFinancialResolution": true,
      "autoExecuteFinancialResolution": false,
      "retainedAmountForShipping": 6.99,
      "refundShippingOnPartialReturn": true,
      "refundShippingOnCompleteReturn": 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 RmaConfigurationUpdate($input: RmaConfigurationUpdateInput!) { rmaConfigurationUpdate(input: $input) { id locationId portalIsActive autoAccept authorizationDelay retainedAmountForShipping } }",
    "variables": {
      "input": {
        "id": "config-uuid-001",
        "autoAccept": true,
        "authorizationDelay": 14,
        "retainedAmountForShipping": 6.99,
        "headline": "Easy returns within 14 days"
      }
    }
  }'
js
const mutation = `
  mutation RmaConfigurationUpdate($input: RmaConfigurationUpdateInput!) {
    rmaConfigurationUpdate(input: $input) {
      id
      locationId
      portalIsActive
      autoAccept
      authorizationDelay
      retainedAmountForShipping
    }
  }
`;

const variables = {
  input: {
    id: 'config-uuid-001',
    autoAccept: true,
    authorizationDelay: 14,
    retainedAmountForShipping: 6.99,
    headline: 'Easy returns within 14 days',
  },
};

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 }),
});

const { data } = await response.json();
console.log(data.rmaConfigurationUpdate);
python
import os
import requests

mutation = """
mutation RmaConfigurationUpdate($input: RmaConfigurationUpdateInput!) {
  rmaConfigurationUpdate(input: $input) {
    id
    locationId
    portalIsActive
    autoAccept
    authorizationDelay
    retainedAmountForShipping
  }
}
"""

variables = {
    "input": {
        "id": "config-uuid-001",
        "autoAccept": True,
        "authorizationDelay": 14,
        "retainedAmountForShipping": 6.99,
        "headline": "Easy returns within 14 days",
    }
}

response = requests.post(
    'https://api-v3.happycolis.com/graphql',
    headers={'Authorization': f'Bearer {os.environ["ACCESS_TOKEN"]}'},
    json={'query': mutation, 'variables': variables},
)

data = response.json()['data']
print(data['rmaConfigurationUpdate'])
php
<?php
$mutation = <<<'GQL'
mutation RmaConfigurationUpdate($input: RmaConfigurationUpdateInput!) {
  rmaConfigurationUpdate(input: $input) {
    id
    locationId
    portalIsActive
    autoAccept
    authorizationDelay
    retainedAmountForShipping
  }
}
GQL;

$variables = [
    'input' => [
        'id'                        => 'config-uuid-001',
        'autoAccept'                => true,
        'authorizationDelay'        => 14,
        'retainedAmountForShipping' => 6.99,
        'headline'                  => 'Easy returns within 14 days',
    ],
];

$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' => $variables]),
    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']['rmaConfigurationUpdate']);
go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
	"os"
)

func main() {
	mutation := `
		mutation RmaConfigurationUpdate($input: RmaConfigurationUpdateInput!) {
			rmaConfigurationUpdate(input: $input) {
				id
				locationId
				portalIsActive
				autoAccept
				authorizationDelay
				retainedAmountForShipping
			}
		}`

	variables := map[string]any{
		"input": map[string]any{
			"id":                        "config-uuid-001",
			"autoAccept":                true,
			"authorizationDelay":        14,
			"retainedAmountForShipping": 6.99,
			"headline":                  "Easy returns within 14 days",
		},
	}

	body, _ := json.Marshal(map[string]any{
		"query":     mutation,
		"variables": variables,
	})

	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