Update Custom Product
curl --request PUT \
--url https://api.example.com/v1/custom-products/{productKey} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"name": "<string>",
"productKey": "<string>",
"metadata": {},
"isDefault": true
}
'import requests
url = "https://api.example.com/v1/custom-products/{productKey}"
payload = {
"name": "<string>",
"productKey": "<string>",
"metadata": {},
"isDefault": True
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', productKey: '<string>', metadata: {}, isDefault: true})
};
fetch('https://api.example.com/v1/custom-products/{productKey}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/custom-products/{productKey}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'productKey' => '<string>',
'metadata' => [
],
'isDefault' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/custom-products/{productKey}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"productKey\": \"<string>\",\n \"metadata\": {},\n \"isDefault\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.example.com/v1/custom-products/{productKey}")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"productKey\": \"<string>\",\n \"metadata\": {},\n \"isDefault\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/custom-products/{productKey}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"productKey\": \"<string>\",\n \"metadata\": {},\n \"isDefault\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"key": "<string>",
"name": "<string>",
"isDefault": true,
"version": 123,
"stripeProductId": "<string>",
"metadata": {},
"prices": [
{
"id": "<string>",
"stripePriceId": "<string>",
"currency": "<string>",
"unitAmount": 123,
"recurringInterval": "<string>",
"recurringIntervalCount": 123,
"isActive": true,
"isDefault": true
}
],
"featureAccess": [
{
"featureKey": "<string>",
"name": "<string>",
"hasAccess": true,
"limit": 123,
"isUnlimited": true
}
]
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Products
Update Custom Product
Update a custom product’s details or default status.
PUT
/
v1
/
custom-products
/
{productKey}
Update Custom Product
curl --request PUT \
--url https://api.example.com/v1/custom-products/{productKey} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"name": "<string>",
"productKey": "<string>",
"metadata": {},
"isDefault": true
}
'import requests
url = "https://api.example.com/v1/custom-products/{productKey}"
payload = {
"name": "<string>",
"productKey": "<string>",
"metadata": {},
"isDefault": True
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', productKey: '<string>', metadata: {}, isDefault: true})
};
fetch('https://api.example.com/v1/custom-products/{productKey}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/custom-products/{productKey}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'productKey' => '<string>',
'metadata' => [
],
'isDefault' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/custom-products/{productKey}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"productKey\": \"<string>\",\n \"metadata\": {},\n \"isDefault\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.example.com/v1/custom-products/{productKey}")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"productKey\": \"<string>\",\n \"metadata\": {},\n \"isDefault\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/custom-products/{productKey}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"productKey\": \"<string>\",\n \"metadata\": {},\n \"isDefault\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"key": "<string>",
"name": "<string>",
"isDefault": true,
"version": 123,
"stripeProductId": "<string>",
"metadata": {},
"prices": [
{
"id": "<string>",
"stripePriceId": "<string>",
"currency": "<string>",
"unitAmount": 123,
"recurringInterval": "<string>",
"recurringIntervalCount": 123,
"isActive": true,
"isDefault": true
}
],
"featureAccess": [
{
"featureKey": "<string>",
"name": "<string>",
"hasAccess": true,
"limit": 123,
"isUnlimited": true
}
]
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Headers
API key from your PriceOS dashboard.
Path Parameters
Product key.
Body
application/json
Response
Custom product updated
Product.
Product ID.
Product key.
Product name.
Product type.
Available options:
stripe, custom Whether this is the default custom product.
Product version number.
Stripe product ID (Stripe products only).
Custom product metadata (custom products only).
Show child attributes
Show child attributes
Stripe prices linked to the product.
Show child attributes
Show child attributes
Feature access entries configured for this product.
Show child attributes
Show child attributes
⌘I