SelectwinDOCS
Products variants

Variants - Update

Atualiza uma ou mais variantes em lote ou conforme payload; inclua `id` da variante e campos a alterar.

PATCH
/v1/products/{productId}/variants

Atualiza uma ou mais variantes em lote ou conforme payload; inclua id da variante e campos a alterar.

Authorization

SelectKeyAuth
selectkey<token>

API key for all authenticated requests. Send your key in the selectkey header (e.g. sandbox sl_test_…, production sl_live_…).

In: header

Path Parameters

productId*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/v1/products/prd_01hqzvabc/variants" \  -H "Content-Type: application/json" \  -d '{    "pricing": {      "unitPrice": 9900,      "currency": "BRL",      "schema": "unit",      "type": "oneTime",      "oldPrice": 14900,      "costPerItem": 4500,      "trialInterval": "day",      "trialIntervalCount": 7,      "billingType": "prepaid",      "billingFrequency": "monthly",      "billingFrequencyCount": 1,      "billingExactDay": 10,      "cycles": 12    },    "id": "var_abc123",    "name": "Annual Plan",    "description": "Example text",    "sku": "SKU-001",    "images": [      "https://example.com/variant.png"    ],    "metadata": {      "tier": "pro"    },    "attributes": {},    "externalReference": "VAR-EXT-1",    "enabled": true  }'
{
  "status": "success",
  "updated": 1,
  "results": [
    {
      "id": "var_01hqzvabc",
      "name": "Annual Plan",
      "enabled": true,
      "description": "Yearly billing",
      "sku": "SKU-001",
      "pricing": {
        "oldPrice": 14900,
        "unitPrice": 10900,
        "currency": "BRL",
        "daysTrial": 7,
        "billingType": "prepaid",
        "billingFrequency": "monthly",
        "billingFrequencyCount": 1,
        "billingExactDay": 10,
        "cycles": 12,
        "trialInterval": "day",
        "trialIntervalCount": 7,
        "costPerItem": 4500
      },
      "images": [
        "https://cdn.selectwin.io/v/var.png"
      ],
      "metadata": {
        "tier": "pro"
      },
      "externalReference": "VAR-EXT-1",
      "attributes": {}
    }
  ]
}
{
  "error": {
    "status": "Bad Request",
    "statusCode": 400,
    "category": "validation",
    "message": "Validation errors occurred",
    "details": "One or more parameters are invalid or out of range. Please check the parameters and try again.",
    "params": [
      {
        "payment[currency]": "currency must be one of [BRL]"
      },
      {
        "amount": "amount is required"
      }
    ],
    "code": "invalidParameters",
    "resource": "client"
  }
}
{
  "error": {
    "status": "Unauthorized",
    "statusCode": 401,
    "category": "authentication",
    "message": "Unauthorized",
    "details": "Authentication failed. The provided API key is invalid or does not have permission to operate.",
    "code": "unauthorized"
  }
}
{
  "error": {
    "status": "Forbidden",
    "statusCode": 403,
    "category": "authorization",
    "message": "Forbidden",
    "details": "Access denied. This may be due to IP blocks, domain restrictions, or insufficient permissions.",
    "code": "forbidden"
  }
}
{
  "error": {
    "status": "Not Found",
    "statusCode": 404,
    "category": "client",
    "message": "Not Found",
    "details": "The requested resource was not found on the server.",
    "code": "notFound"
  }
}
{
  "error": {
    "status": "Unprocessable Entity",
    "statusCode": 422,
    "category": "validation",
    "message": "Unprocessable Entity",
    "details": "The request was understood, but contains invalid data that could not be processed.",
    "code": "unprocessableEntity"
  }
}
{
  "error": {
    "status": "Too Many Requests",
    "statusCode": 429,
    "category": "rate_limit",
    "message": "Too Many Requests",
    "details": "The number of requests exceeded the limit allowed for the IP or user.",
    "retryAfterMinutes": 60,
    "code": "tooManyRequests"
  }
}
{
  "error": {
    "status": "Internal Server Error",
    "statusCode": 500,
    "category": "server",
    "message": "Server error.",
    "details": "An internal server error occurred. Please try again later.",
    "code": "serverError",
    "resource": "server"
  }
}