curl --request POST \
--url https://api.meetcampfire.com/rev/api/v1/performance-obligations \
--header 'Content-Type: application/json' \
--data '
{
"contract": 123,
"ordinal": 1073741823,
"contract_line": 123,
"product": 123,
"currency": "<string>",
"invoiced_amount": 0,
"allocated_amount": 0,
"standalone_selling_price": 0,
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"delivery_date": "2023-12-25",
"revenue_account": 123,
"deferred_revenue_account": 123,
"department": 123,
"tags": [
123
]
}
'import requests
url = "https://api.meetcampfire.com/rev/api/v1/performance-obligations"
payload = {
"contract": 123,
"ordinal": 1073741823,
"contract_line": 123,
"product": 123,
"currency": "<string>",
"invoiced_amount": 0,
"allocated_amount": 0,
"standalone_selling_price": 0,
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"delivery_date": "2023-12-25",
"revenue_account": 123,
"deferred_revenue_account": 123,
"department": 123,
"tags": [123]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
contract: 123,
ordinal: 1073741823,
contract_line: 123,
product: 123,
currency: '<string>',
invoiced_amount: 0,
allocated_amount: 0,
standalone_selling_price: 0,
start_date: '2023-12-25',
end_date: '2023-12-25',
delivery_date: '2023-12-25',
revenue_account: 123,
deferred_revenue_account: 123,
department: 123,
tags: [123]
})
};
fetch('https://api.meetcampfire.com/rev/api/v1/performance-obligations', 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/rev/api/v1/performance-obligations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'contract' => 123,
'ordinal' => 1073741823,
'contract_line' => 123,
'product' => 123,
'currency' => '<string>',
'invoiced_amount' => 0,
'allocated_amount' => 0,
'standalone_selling_price' => 0,
'start_date' => '2023-12-25',
'end_date' => '2023-12-25',
'delivery_date' => '2023-12-25',
'revenue_account' => 123,
'deferred_revenue_account' => 123,
'department' => 123,
'tags' => [
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/rev/api/v1/performance-obligations"
payload := strings.NewReader("{\n \"contract\": 123,\n \"ordinal\": 1073741823,\n \"contract_line\": 123,\n \"product\": 123,\n \"currency\": \"<string>\",\n \"invoiced_amount\": 0,\n \"allocated_amount\": 0,\n \"standalone_selling_price\": 0,\n \"start_date\": \"2023-12-25\",\n \"end_date\": \"2023-12-25\",\n \"delivery_date\": \"2023-12-25\",\n \"revenue_account\": 123,\n \"deferred_revenue_account\": 123,\n \"department\": 123,\n \"tags\": [\n 123\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.meetcampfire.com/rev/api/v1/performance-obligations")
.header("Content-Type", "application/json")
.body("{\n \"contract\": 123,\n \"ordinal\": 1073741823,\n \"contract_line\": 123,\n \"product\": 123,\n \"currency\": \"<string>\",\n \"invoiced_amount\": 0,\n \"allocated_amount\": 0,\n \"standalone_selling_price\": 0,\n \"start_date\": \"2023-12-25\",\n \"end_date\": \"2023-12-25\",\n \"delivery_date\": \"2023-12-25\",\n \"revenue_account\": 123,\n \"deferred_revenue_account\": 123,\n \"department\": 123,\n \"tags\": [\n 123\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetcampfire.com/rev/api/v1/performance-obligations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"contract\": 123,\n \"ordinal\": 1073741823,\n \"contract_line\": 123,\n \"product\": 123,\n \"currency\": \"<string>\",\n \"invoiced_amount\": 0,\n \"allocated_amount\": 0,\n \"standalone_selling_price\": 0,\n \"start_date\": \"2023-12-25\",\n \"end_date\": \"2023-12-25\",\n \"delivery_date\": \"2023-12-25\",\n \"revenue_account\": 123,\n \"deferred_revenue_account\": 123,\n \"department\": 123,\n \"tags\": [\n 123\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"contract": 123,
"contract_name": "<string>",
"product_name": "",
"department_name": "",
"created_at": "2023-11-07T05:31:56Z",
"last_modified_at": "2023-11-07T05:31:56Z",
"ordinal": 1073741823,
"contract_line": 123,
"product": 123,
"period_source": "LINE",
"status": "ACTIVE",
"recognition_method": "STRAIGHT_LINE",
"recognition_proration": "MONTHLY",
"currency": "<string>",
"invoiced_amount": 0,
"allocated_amount": 0,
"standalone_selling_price": 0,
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"delivery_date": "2023-12-25",
"revenue_account": 123,
"deferred_revenue_account": 123,
"department": 123,
"tags": [
123
]
}Create Performance Obligation
curl --request POST \
--url https://api.meetcampfire.com/rev/api/v1/performance-obligations \
--header 'Content-Type: application/json' \
--data '
{
"contract": 123,
"ordinal": 1073741823,
"contract_line": 123,
"product": 123,
"currency": "<string>",
"invoiced_amount": 0,
"allocated_amount": 0,
"standalone_selling_price": 0,
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"delivery_date": "2023-12-25",
"revenue_account": 123,
"deferred_revenue_account": 123,
"department": 123,
"tags": [
123
]
}
'import requests
url = "https://api.meetcampfire.com/rev/api/v1/performance-obligations"
payload = {
"contract": 123,
"ordinal": 1073741823,
"contract_line": 123,
"product": 123,
"currency": "<string>",
"invoiced_amount": 0,
"allocated_amount": 0,
"standalone_selling_price": 0,
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"delivery_date": "2023-12-25",
"revenue_account": 123,
"deferred_revenue_account": 123,
"department": 123,
"tags": [123]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
contract: 123,
ordinal: 1073741823,
contract_line: 123,
product: 123,
currency: '<string>',
invoiced_amount: 0,
allocated_amount: 0,
standalone_selling_price: 0,
start_date: '2023-12-25',
end_date: '2023-12-25',
delivery_date: '2023-12-25',
revenue_account: 123,
deferred_revenue_account: 123,
department: 123,
tags: [123]
})
};
fetch('https://api.meetcampfire.com/rev/api/v1/performance-obligations', 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/rev/api/v1/performance-obligations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'contract' => 123,
'ordinal' => 1073741823,
'contract_line' => 123,
'product' => 123,
'currency' => '<string>',
'invoiced_amount' => 0,
'allocated_amount' => 0,
'standalone_selling_price' => 0,
'start_date' => '2023-12-25',
'end_date' => '2023-12-25',
'delivery_date' => '2023-12-25',
'revenue_account' => 123,
'deferred_revenue_account' => 123,
'department' => 123,
'tags' => [
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/rev/api/v1/performance-obligations"
payload := strings.NewReader("{\n \"contract\": 123,\n \"ordinal\": 1073741823,\n \"contract_line\": 123,\n \"product\": 123,\n \"currency\": \"<string>\",\n \"invoiced_amount\": 0,\n \"allocated_amount\": 0,\n \"standalone_selling_price\": 0,\n \"start_date\": \"2023-12-25\",\n \"end_date\": \"2023-12-25\",\n \"delivery_date\": \"2023-12-25\",\n \"revenue_account\": 123,\n \"deferred_revenue_account\": 123,\n \"department\": 123,\n \"tags\": [\n 123\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.meetcampfire.com/rev/api/v1/performance-obligations")
.header("Content-Type", "application/json")
.body("{\n \"contract\": 123,\n \"ordinal\": 1073741823,\n \"contract_line\": 123,\n \"product\": 123,\n \"currency\": \"<string>\",\n \"invoiced_amount\": 0,\n \"allocated_amount\": 0,\n \"standalone_selling_price\": 0,\n \"start_date\": \"2023-12-25\",\n \"end_date\": \"2023-12-25\",\n \"delivery_date\": \"2023-12-25\",\n \"revenue_account\": 123,\n \"deferred_revenue_account\": 123,\n \"department\": 123,\n \"tags\": [\n 123\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetcampfire.com/rev/api/v1/performance-obligations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"contract\": 123,\n \"ordinal\": 1073741823,\n \"contract_line\": 123,\n \"product\": 123,\n \"currency\": \"<string>\",\n \"invoiced_amount\": 0,\n \"allocated_amount\": 0,\n \"standalone_selling_price\": 0,\n \"start_date\": \"2023-12-25\",\n \"end_date\": \"2023-12-25\",\n \"delivery_date\": \"2023-12-25\",\n \"revenue_account\": 123,\n \"deferred_revenue_account\": 123,\n \"department\": 123,\n \"tags\": [\n 123\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"contract": 123,
"contract_name": "<string>",
"product_name": "",
"department_name": "",
"created_at": "2023-11-07T05:31:56Z",
"last_modified_at": "2023-11-07T05:31:56Z",
"ordinal": 1073741823,
"contract_line": 123,
"product": 123,
"period_source": "LINE",
"status": "ACTIVE",
"recognition_method": "STRAIGHT_LINE",
"recognition_proration": "MONTHLY",
"currency": "<string>",
"invoiced_amount": 0,
"allocated_amount": 0,
"standalone_selling_price": 0,
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"delivery_date": "2023-12-25",
"revenue_account": 123,
"deferred_revenue_account": 123,
"department": 123,
"tags": [
123
]
}Body
Base serializer that injects the request user's customer on create and restricts related-object querysets to the same customer.
0 <= x <= 2147483647LINE- Contract line datesLINKED_OBLIGATION- Follows another obligationCONTRACT_TERM- Full contract term
LINE, LINKED_OBLIGATION, CONTRACT_TERM ACTIVE- ActiveCOMPLETED- CompletedTERMINATED- Terminated
ACTIVE, COMPLETED, TERMINATED STRAIGHT_LINE- Ratable (straight-line)POINT_IN_TIME- Point-in-timeUSAGE_COMMIT- As-consumed — commit drawdownUSAGE_PAYGO- As-consumed — pay-as-you-goUSAGE_MIRROR- As-consumed — mirrors linked commit
STRAIGHT_LINE, POINT_IN_TIME, USAGE_COMMIT, USAGE_PAYGO, USAGE_MIRROR MONTHLY- MonthlyTHIRTY_DAY- 30-day monthDAILY- Daily
MONTHLY, THIRTY_DAY, DAILY 3-10000000000000 < x < 10000000000000-10000000000000 < x < 10000000000000What this obligation would sell for on its own, the basis the transaction price is allocated on. Null on obligations booked before it was recorded.
-10000000000000 < x < 10000000000000Revenue cannot be recognized before delivery. Recognition scheduled before this date catches up in the delivery month.
Response
Base serializer that injects the request user's customer on create and restricts related-object querysets to the same customer.
0 <= x <= 2147483647LINE- Contract line datesLINKED_OBLIGATION- Follows another obligationCONTRACT_TERM- Full contract term
LINE, LINKED_OBLIGATION, CONTRACT_TERM ACTIVE- ActiveCOMPLETED- CompletedTERMINATED- Terminated
ACTIVE, COMPLETED, TERMINATED STRAIGHT_LINE- Ratable (straight-line)POINT_IN_TIME- Point-in-timeUSAGE_COMMIT- As-consumed — commit drawdownUSAGE_PAYGO- As-consumed — pay-as-you-goUSAGE_MIRROR- As-consumed — mirrors linked commit
STRAIGHT_LINE, POINT_IN_TIME, USAGE_COMMIT, USAGE_PAYGO, USAGE_MIRROR MONTHLY- MonthlyTHIRTY_DAY- 30-day monthDAILY- Daily
MONTHLY, THIRTY_DAY, DAILY 3-10000000000000 < x < 10000000000000-10000000000000 < x < 10000000000000What this obligation would sell for on its own, the basis the transaction price is allocated on. Null on obligations booked before it was recorded.
-10000000000000 < x < 10000000000000Revenue cannot be recognized before delivery. Recognition scheduled before this date catches up in the delivery month.