curl --request PUT \
--url https://api.meetcampfire.com/rr/api/v1/product/{id} \
--header 'Content-Type: application/json' \
--data '
{
"product_id": "<string>",
"product_name": "<string>",
"product_description": "<string>",
"tag_ids": [
0
],
"tag_group_ids": [
0
],
"currency": "<string>",
"price": 0,
"cost": 0,
"exclude_from_mrr": true,
"is_taxable": true,
"is_renewable": true,
"recognize_revenue": true,
"is_immediate_recognition": true,
"stripe_product_id": "<string>",
"avalara_item_id": 0,
"avalara_item_data": null,
"avalara_tax_code": "<string>",
"anrok_item_id": "<string>",
"sphere_item_id": "<string>",
"netsuite_item_id": "<string>",
"apply_dept_tag_to_invoice_journals": true,
"department": 123,
"invoice_account": 123,
"revenue_account": 123,
"ar_account": 123,
"bad_debt_account": 123,
"invoice_unbilled_account": 123
}
'import requests
url = "https://api.meetcampfire.com/rr/api/v1/product/{id}"
payload = {
"product_id": "<string>",
"product_name": "<string>",
"product_description": "<string>",
"tag_ids": [0],
"tag_group_ids": [0],
"currency": "<string>",
"price": 0,
"cost": 0,
"exclude_from_mrr": True,
"is_taxable": True,
"is_renewable": True,
"recognize_revenue": True,
"is_immediate_recognition": True,
"stripe_product_id": "<string>",
"avalara_item_id": 0,
"avalara_item_data": None,
"avalara_tax_code": "<string>",
"anrok_item_id": "<string>",
"sphere_item_id": "<string>",
"netsuite_item_id": "<string>",
"apply_dept_tag_to_invoice_journals": True,
"department": 123,
"invoice_account": 123,
"revenue_account": 123,
"ar_account": 123,
"bad_debt_account": 123,
"invoice_unbilled_account": 123
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
product_id: '<string>',
product_name: '<string>',
product_description: '<string>',
tag_ids: [0],
tag_group_ids: [0],
currency: '<string>',
price: 0,
cost: 0,
exclude_from_mrr: true,
is_taxable: true,
is_renewable: true,
recognize_revenue: true,
is_immediate_recognition: true,
stripe_product_id: '<string>',
avalara_item_id: 0,
avalara_item_data: null,
avalara_tax_code: '<string>',
anrok_item_id: '<string>',
sphere_item_id: '<string>',
netsuite_item_id: '<string>',
apply_dept_tag_to_invoice_journals: true,
department: 123,
invoice_account: 123,
revenue_account: 123,
ar_account: 123,
bad_debt_account: 123,
invoice_unbilled_account: 123
})
};
fetch('https://api.meetcampfire.com/rr/api/v1/product/{id}', 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.meetcampfire.com/rr/api/v1/product/{id}",
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([
'product_id' => '<string>',
'product_name' => '<string>',
'product_description' => '<string>',
'tag_ids' => [
0
],
'tag_group_ids' => [
0
],
'currency' => '<string>',
'price' => 0,
'cost' => 0,
'exclude_from_mrr' => true,
'is_taxable' => true,
'is_renewable' => true,
'recognize_revenue' => true,
'is_immediate_recognition' => true,
'stripe_product_id' => '<string>',
'avalara_item_id' => 0,
'avalara_item_data' => null,
'avalara_tax_code' => '<string>',
'anrok_item_id' => '<string>',
'sphere_item_id' => '<string>',
'netsuite_item_id' => '<string>',
'apply_dept_tag_to_invoice_journals' => true,
'department' => 123,
'invoice_account' => 123,
'revenue_account' => 123,
'ar_account' => 123,
'bad_debt_account' => 123,
'invoice_unbilled_account' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.meetcampfire.com/rr/api/v1/product/{id}"
payload := strings.NewReader("{\n \"product_id\": \"<string>\",\n \"product_name\": \"<string>\",\n \"product_description\": \"<string>\",\n \"tag_ids\": [\n 0\n ],\n \"tag_group_ids\": [\n 0\n ],\n \"currency\": \"<string>\",\n \"price\": 0,\n \"cost\": 0,\n \"exclude_from_mrr\": true,\n \"is_taxable\": true,\n \"is_renewable\": true,\n \"recognize_revenue\": true,\n \"is_immediate_recognition\": true,\n \"stripe_product_id\": \"<string>\",\n \"avalara_item_id\": 0,\n \"avalara_item_data\": null,\n \"avalara_tax_code\": \"<string>\",\n \"anrok_item_id\": \"<string>\",\n \"sphere_item_id\": \"<string>\",\n \"netsuite_item_id\": \"<string>\",\n \"apply_dept_tag_to_invoice_journals\": true,\n \"department\": 123,\n \"invoice_account\": 123,\n \"revenue_account\": 123,\n \"ar_account\": 123,\n \"bad_debt_account\": 123,\n \"invoice_unbilled_account\": 123\n}")
req, _ := http.NewRequest("PUT", url, payload)
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.meetcampfire.com/rr/api/v1/product/{id}")
.header("Content-Type", "application/json")
.body("{\n \"product_id\": \"<string>\",\n \"product_name\": \"<string>\",\n \"product_description\": \"<string>\",\n \"tag_ids\": [\n 0\n ],\n \"tag_group_ids\": [\n 0\n ],\n \"currency\": \"<string>\",\n \"price\": 0,\n \"cost\": 0,\n \"exclude_from_mrr\": true,\n \"is_taxable\": true,\n \"is_renewable\": true,\n \"recognize_revenue\": true,\n \"is_immediate_recognition\": true,\n \"stripe_product_id\": \"<string>\",\n \"avalara_item_id\": 0,\n \"avalara_item_data\": null,\n \"avalara_tax_code\": \"<string>\",\n \"anrok_item_id\": \"<string>\",\n \"sphere_item_id\": \"<string>\",\n \"netsuite_item_id\": \"<string>\",\n \"apply_dept_tag_to_invoice_journals\": true,\n \"department\": 123,\n \"invoice_account\": 123,\n \"revenue_account\": 123,\n \"ar_account\": 123,\n \"bad_debt_account\": 123,\n \"invoice_unbilled_account\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetcampfire.com/rr/api/v1/product/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"product_id\": \"<string>\",\n \"product_name\": \"<string>\",\n \"product_description\": \"<string>\",\n \"tag_ids\": [\n 0\n ],\n \"tag_group_ids\": [\n 0\n ],\n \"currency\": \"<string>\",\n \"price\": 0,\n \"cost\": 0,\n \"exclude_from_mrr\": true,\n \"is_taxable\": true,\n \"is_renewable\": true,\n \"recognize_revenue\": true,\n \"is_immediate_recognition\": true,\n \"stripe_product_id\": \"<string>\",\n \"avalara_item_id\": 0,\n \"avalara_item_data\": null,\n \"avalara_tax_code\": \"<string>\",\n \"anrok_item_id\": \"<string>\",\n \"sphere_item_id\": \"<string>\",\n \"netsuite_item_id\": \"<string>\",\n \"apply_dept_tag_to_invoice_journals\": true,\n \"department\": 123,\n \"invoice_account\": 123,\n \"revenue_account\": 123,\n \"ar_account\": 123,\n \"bad_debt_account\": 123,\n \"invoice_unbilled_account\": 123\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"is_deleted": false,
"deleted_at": "2023-11-07T05:31:56Z",
"department_name": "<string>",
"invoice_account_name": "<string>",
"revenue_account_name": "<string>",
"ar_account_name": "<string>",
"bad_debt_account_name": "<string>",
"invoice_unbilled_account_name": "<string>",
"tax_account_name": "<string>",
"tags": [
{}
],
"last_modified_at": "2023-11-07T05:31:56Z",
"product_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"display_name": "<string>",
"usage_group_count": 0,
"usage_groups": [
{
"id": 123,
"tier_count": 0,
"tiers": [
{
"id": 123,
"name": "<string>",
"pricing_type": "<string>",
"from_quantity": 0,
"to_quantity": 0,
"price": 0,
"percentage": 0
}
],
"name": "<string>",
"pricing_model": "unit_based",
"unit_of_measure": "<string>"
}
],
"created_at": "2023-11-07T05:31:56Z",
"customer": 123,
"product_id": "<string>",
"product_name": "<string>",
"product_description": "<string>",
"tag_ids": [
0
],
"tag_group_ids": [
0
],
"currency": "<string>",
"price": 0,
"cost": 0,
"exclude_from_mrr": true,
"is_taxable": true,
"is_renewable": true,
"recognize_revenue": true,
"bundled_usage_revenue_recognition_type": "RATABLE",
"is_immediate_recognition": true,
"stripe_product_id": "<string>",
"avalara_item_id": 0,
"avalara_item_data": null,
"avalara_tax_code": "<string>",
"anrok_item_id": "<string>",
"sphere_item_id": "<string>",
"netsuite_item_id": "<string>",
"apply_dept_tag_to_invoice_journals": true,
"department": 123,
"invoice_account": 123,
"revenue_account": 123,
"ar_account": 123,
"bad_debt_account": 123,
"invoice_unbilled_account": 123
}Update Product
curl --request PUT \
--url https://api.meetcampfire.com/rr/api/v1/product/{id} \
--header 'Content-Type: application/json' \
--data '
{
"product_id": "<string>",
"product_name": "<string>",
"product_description": "<string>",
"tag_ids": [
0
],
"tag_group_ids": [
0
],
"currency": "<string>",
"price": 0,
"cost": 0,
"exclude_from_mrr": true,
"is_taxable": true,
"is_renewable": true,
"recognize_revenue": true,
"is_immediate_recognition": true,
"stripe_product_id": "<string>",
"avalara_item_id": 0,
"avalara_item_data": null,
"avalara_tax_code": "<string>",
"anrok_item_id": "<string>",
"sphere_item_id": "<string>",
"netsuite_item_id": "<string>",
"apply_dept_tag_to_invoice_journals": true,
"department": 123,
"invoice_account": 123,
"revenue_account": 123,
"ar_account": 123,
"bad_debt_account": 123,
"invoice_unbilled_account": 123
}
'import requests
url = "https://api.meetcampfire.com/rr/api/v1/product/{id}"
payload = {
"product_id": "<string>",
"product_name": "<string>",
"product_description": "<string>",
"tag_ids": [0],
"tag_group_ids": [0],
"currency": "<string>",
"price": 0,
"cost": 0,
"exclude_from_mrr": True,
"is_taxable": True,
"is_renewable": True,
"recognize_revenue": True,
"is_immediate_recognition": True,
"stripe_product_id": "<string>",
"avalara_item_id": 0,
"avalara_item_data": None,
"avalara_tax_code": "<string>",
"anrok_item_id": "<string>",
"sphere_item_id": "<string>",
"netsuite_item_id": "<string>",
"apply_dept_tag_to_invoice_journals": True,
"department": 123,
"invoice_account": 123,
"revenue_account": 123,
"ar_account": 123,
"bad_debt_account": 123,
"invoice_unbilled_account": 123
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
product_id: '<string>',
product_name: '<string>',
product_description: '<string>',
tag_ids: [0],
tag_group_ids: [0],
currency: '<string>',
price: 0,
cost: 0,
exclude_from_mrr: true,
is_taxable: true,
is_renewable: true,
recognize_revenue: true,
is_immediate_recognition: true,
stripe_product_id: '<string>',
avalara_item_id: 0,
avalara_item_data: null,
avalara_tax_code: '<string>',
anrok_item_id: '<string>',
sphere_item_id: '<string>',
netsuite_item_id: '<string>',
apply_dept_tag_to_invoice_journals: true,
department: 123,
invoice_account: 123,
revenue_account: 123,
ar_account: 123,
bad_debt_account: 123,
invoice_unbilled_account: 123
})
};
fetch('https://api.meetcampfire.com/rr/api/v1/product/{id}', 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.meetcampfire.com/rr/api/v1/product/{id}",
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([
'product_id' => '<string>',
'product_name' => '<string>',
'product_description' => '<string>',
'tag_ids' => [
0
],
'tag_group_ids' => [
0
],
'currency' => '<string>',
'price' => 0,
'cost' => 0,
'exclude_from_mrr' => true,
'is_taxable' => true,
'is_renewable' => true,
'recognize_revenue' => true,
'is_immediate_recognition' => true,
'stripe_product_id' => '<string>',
'avalara_item_id' => 0,
'avalara_item_data' => null,
'avalara_tax_code' => '<string>',
'anrok_item_id' => '<string>',
'sphere_item_id' => '<string>',
'netsuite_item_id' => '<string>',
'apply_dept_tag_to_invoice_journals' => true,
'department' => 123,
'invoice_account' => 123,
'revenue_account' => 123,
'ar_account' => 123,
'bad_debt_account' => 123,
'invoice_unbilled_account' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.meetcampfire.com/rr/api/v1/product/{id}"
payload := strings.NewReader("{\n \"product_id\": \"<string>\",\n \"product_name\": \"<string>\",\n \"product_description\": \"<string>\",\n \"tag_ids\": [\n 0\n ],\n \"tag_group_ids\": [\n 0\n ],\n \"currency\": \"<string>\",\n \"price\": 0,\n \"cost\": 0,\n \"exclude_from_mrr\": true,\n \"is_taxable\": true,\n \"is_renewable\": true,\n \"recognize_revenue\": true,\n \"is_immediate_recognition\": true,\n \"stripe_product_id\": \"<string>\",\n \"avalara_item_id\": 0,\n \"avalara_item_data\": null,\n \"avalara_tax_code\": \"<string>\",\n \"anrok_item_id\": \"<string>\",\n \"sphere_item_id\": \"<string>\",\n \"netsuite_item_id\": \"<string>\",\n \"apply_dept_tag_to_invoice_journals\": true,\n \"department\": 123,\n \"invoice_account\": 123,\n \"revenue_account\": 123,\n \"ar_account\": 123,\n \"bad_debt_account\": 123,\n \"invoice_unbilled_account\": 123\n}")
req, _ := http.NewRequest("PUT", url, payload)
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.meetcampfire.com/rr/api/v1/product/{id}")
.header("Content-Type", "application/json")
.body("{\n \"product_id\": \"<string>\",\n \"product_name\": \"<string>\",\n \"product_description\": \"<string>\",\n \"tag_ids\": [\n 0\n ],\n \"tag_group_ids\": [\n 0\n ],\n \"currency\": \"<string>\",\n \"price\": 0,\n \"cost\": 0,\n \"exclude_from_mrr\": true,\n \"is_taxable\": true,\n \"is_renewable\": true,\n \"recognize_revenue\": true,\n \"is_immediate_recognition\": true,\n \"stripe_product_id\": \"<string>\",\n \"avalara_item_id\": 0,\n \"avalara_item_data\": null,\n \"avalara_tax_code\": \"<string>\",\n \"anrok_item_id\": \"<string>\",\n \"sphere_item_id\": \"<string>\",\n \"netsuite_item_id\": \"<string>\",\n \"apply_dept_tag_to_invoice_journals\": true,\n \"department\": 123,\n \"invoice_account\": 123,\n \"revenue_account\": 123,\n \"ar_account\": 123,\n \"bad_debt_account\": 123,\n \"invoice_unbilled_account\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetcampfire.com/rr/api/v1/product/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"product_id\": \"<string>\",\n \"product_name\": \"<string>\",\n \"product_description\": \"<string>\",\n \"tag_ids\": [\n 0\n ],\n \"tag_group_ids\": [\n 0\n ],\n \"currency\": \"<string>\",\n \"price\": 0,\n \"cost\": 0,\n \"exclude_from_mrr\": true,\n \"is_taxable\": true,\n \"is_renewable\": true,\n \"recognize_revenue\": true,\n \"is_immediate_recognition\": true,\n \"stripe_product_id\": \"<string>\",\n \"avalara_item_id\": 0,\n \"avalara_item_data\": null,\n \"avalara_tax_code\": \"<string>\",\n \"anrok_item_id\": \"<string>\",\n \"sphere_item_id\": \"<string>\",\n \"netsuite_item_id\": \"<string>\",\n \"apply_dept_tag_to_invoice_journals\": true,\n \"department\": 123,\n \"invoice_account\": 123,\n \"revenue_account\": 123,\n \"ar_account\": 123,\n \"bad_debt_account\": 123,\n \"invoice_unbilled_account\": 123\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"is_deleted": false,
"deleted_at": "2023-11-07T05:31:56Z",
"department_name": "<string>",
"invoice_account_name": "<string>",
"revenue_account_name": "<string>",
"ar_account_name": "<string>",
"bad_debt_account_name": "<string>",
"invoice_unbilled_account_name": "<string>",
"tax_account_name": "<string>",
"tags": [
{}
],
"last_modified_at": "2023-11-07T05:31:56Z",
"product_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"display_name": "<string>",
"usage_group_count": 0,
"usage_groups": [
{
"id": 123,
"tier_count": 0,
"tiers": [
{
"id": 123,
"name": "<string>",
"pricing_type": "<string>",
"from_quantity": 0,
"to_quantity": 0,
"price": 0,
"percentage": 0
}
],
"name": "<string>",
"pricing_model": "unit_based",
"unit_of_measure": "<string>"
}
],
"created_at": "2023-11-07T05:31:56Z",
"customer": 123,
"product_id": "<string>",
"product_name": "<string>",
"product_description": "<string>",
"tag_ids": [
0
],
"tag_group_ids": [
0
],
"currency": "<string>",
"price": 0,
"cost": 0,
"exclude_from_mrr": true,
"is_taxable": true,
"is_renewable": true,
"recognize_revenue": true,
"bundled_usage_revenue_recognition_type": "RATABLE",
"is_immediate_recognition": true,
"stripe_product_id": "<string>",
"avalara_item_id": 0,
"avalara_item_data": null,
"avalara_tax_code": "<string>",
"anrok_item_id": "<string>",
"sphere_item_id": "<string>",
"netsuite_item_id": "<string>",
"apply_dept_tag_to_invoice_journals": true,
"department": 123,
"invoice_account": 123,
"revenue_account": 123,
"ar_account": 123,
"bad_debt_account": 123,
"invoice_unbilled_account": 123
}Path Parameters
Body
250250250-9223372036854776000 <= x <= 9223372036854776000-9223372036854776000 <= x <= 92233720368547760003-100000000000000 < x < 100000000000000-1000000000000000000 < x < 1000000000000000000If False, contract-sync skips the revenue-recognition waterfall for this product (no ContractSubscription / RevenueTransaction rows).
Default subscription revenue recognition when this customer-scoped product is created on a contract with a prepaid usage commitment.
RATABLE- RatableRELATIVE_TO_PREPAID_COMMIT- Relative to prepaid commit
RATABLE, RELATIVE_TO_PREPAID_COMMIT When true, revenue for this product is recognized in full on the invoice finalization date instead of being amortized over the service period. Used by the Stripe accrual JE waterfall.
250-9223372036854776000 <= x <= 9223372036854776000Avalara tax code (e.g., SW052000 for SAAS)
50250250250Apply Department and Tag categorization to all lines on Invoice Journals
Response
Show child attributes
Show child attributes
Show child attributes
Show child attributes
250250250-9223372036854776000 <= x <= 9223372036854776000-9223372036854776000 <= x <= 92233720368547760003-100000000000000 < x < 100000000000000-1000000000000000000 < x < 1000000000000000000If False, contract-sync skips the revenue-recognition waterfall for this product (no ContractSubscription / RevenueTransaction rows).
Default subscription revenue recognition when this customer-scoped product is created on a contract with a prepaid usage commitment.
RATABLE- RatableRELATIVE_TO_PREPAID_COMMIT- Relative to prepaid commit
RATABLE, RELATIVE_TO_PREPAID_COMMIT When true, revenue for this product is recognized in full on the invoice finalization date instead of being amortized over the service period. Used by the Stripe accrual JE waterfall.
250-9223372036854776000 <= x <= 9223372036854776000Avalara tax code (e.g., SW052000 for SAAS)
50250250250Apply Department and Tag categorization to all lines on Invoice Journals