Code Example

$curl = curl_init();

$endpoint = '{{domain}}/wp-json/wclm/v3/update-license-key';
$parameters = array(
        // Required
        'license_keys' => 'FFFF-FFFF-FFFF-FFFF',

        // Required, WooCommerce Product ID
        'product_id' => '236',

        // Optional, WooCommerce Variation  ID, Default 0. 0 = Product has no variations.
        'variation_id' => '0',

        // Optional, License owner first name
        'owner_first_name' => 'Test',

        // Optional, License owner last name
        'owner_last_name' => 'Test',

        // Optional, License owner email
        'owner_email_address' => 'contact@domain.ltd',

        // Optional, Default 1
        'delivery_limit' => '1',

        // Optional, Default 1
        'remaining_delivery_times' => '1',

        // Optional, Default 1
        'activation_limit' => '3',

        // Optional, Default 1
        'remaining_activations' => '3',

        // Optional, Format YYYY-MM-DD, Default null
        'activation_date' => '2021-04-12',

        // Optional, Format YYYY-MM-DD, Default null
        'expiration_date' => '2022-04-12',

        // Optional, Format YYYY-MM-DD, Default null
        'sold_date' => '2021-04-12',

        // Optional, Default 0
        'validity_days' => '365',

        // Optional, Default 0
        'order_id' => '23',

        // Optional, Default available
        'license_status' => 'sold'
    );

curl_setopt_array($curl, array(
     CURLOPT_URL => $endpoint,
     CURLOPT_RETURNTRANSFER => true,
     CURLOPT_MAXREDIRS => 10,
     CURLOPT_TIMEOUT => 0,
     CURLOPT_FOLLOWLOCATION => true,
     CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
     CURLOPT_CUSTOMREQUEST => 'POST',
     CURLOPT_POSTFIELDS => $parameters,
     CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT'],
     CURLOPT_SSL_VERIFYPEER => false,
     CURLOPT_HTTPHEADER => array(
         // Authenticated user token
         'Authorization: Bearer {{User Token}}'
     )
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

API Responses

{
    "response": {
        "result": "error",
        "code": "100",
        "message": "Invalid license key",
        "api_timestamp": 'current timestamp'
    },
    "signature": "Signature or OpenSSL error"
}
{
    "response": {
        "result": "success",
        "code": "950",
        "message": "License key updated",
        "api_timestamp": 'current timestamp'
    },
    "signature": "Signature or OpenSSL error"
}
{
    "response": {
        "result": "error",
        "code": "960",
        "message": "Invalid product ID",
        "api_timestamp": 'current timestamp'
    },
    "signature": "Signature or OpenSSL error"
}
{
    "response": {
        "result": "error",
        "code": "961",
        "message": "Invalid variation ID",
        "api_timestamp": 'current timestamp'
    },
    "signature": "Signature or OpenSSL error"
}
{
    "response": {
        "result": "error",
        "code": "980",
        "message": "Invalid order ID",
        "api_timestamp": 'current timestamp'
    },
    "signature": "Signature or OpenSSL error"
}
{
    "response": {
        "result": "error",
        "code": "981",
        "message": "The order doesn't have an item with the given product ID",
        "api_timestamp": 'current timestamp'
    },
    "signature": "Signature or OpenSSL error"
}
{
    "response": {
        "result": "error",
        "code": "982",
        "message": "The order doesn't have an item with the given variation ID",
        "api_timestamp": 'current timestamp'
    },
    "signature": "Signature or OpenSSL error"
}

If the authenticated user is not an admin or a shop manager, they will get this response when they attempt to update a license key they don’t own.

Non-admin user roles do not have permission to use this endpoint by default.
They can use it if an admin gives them permission. (This is not recommended).

{
    "response": {
        "result": "error",
        "code": "900",
        "message": "The authenticated user doesn't own this license key",
        "api_timestamp": 'current timestamp'
    },
    "signature": "Signature or OpenSSL error"
}

WordPress’s built-in REST API responses.

{
    "code": "rest_forbidden",
    "message": "Sorry, you are not allowed to do that.",
    "data": {
        "status": 403
    }
}