curl --request POST \
--url https://api.sibipro.com/prod/offers/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customer": {
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com",
"phone": "+1 (123) 456-7890"
},
"address": {
"line1": "123 Main St",
"line2": "Apt 101",
"city": "Springfield",
"stateOrProvince": "IL",
"postalCode": "62701"
},
"product": {
"sku": "GDF511PGRBB",
"addons": [
{
"id": "install-aggregate-id",
"quantity": 1
},
{
"sku": "M007",
"quantity": 1
},
{
"sku": "M021",
"quantity": 1
}
]
},
"subBrandId": "<string>",
"sendOfferImmediately": true,
"allowCommonCarrier": true,
"externalJobID": "<string>",
"buyoutAmount": 50000,
"includeUpsells": true,
"allowExistingOffer": false
}
'import requests
url = "https://api.sibipro.com/prod/offers/"
payload = {
"customer": {
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com",
"phone": "+1 (123) 456-7890"
},
"address": {
"line1": "123 Main St",
"line2": "Apt 101",
"city": "Springfield",
"stateOrProvince": "IL",
"postalCode": "62701"
},
"product": {
"sku": "GDF511PGRBB",
"addons": [
{
"id": "install-aggregate-id",
"quantity": 1
},
{
"sku": "M007",
"quantity": 1
},
{
"sku": "M021",
"quantity": 1
}
]
},
"subBrandId": "<string>",
"sendOfferImmediately": True,
"allowCommonCarrier": True,
"externalJobID": "<string>",
"buyoutAmount": 50000,
"includeUpsells": True,
"allowExistingOffer": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customer: {
firstName: 'John',
lastName: 'Doe',
email: 'john@example.com',
phone: '+1 (123) 456-7890'
},
address: {
line1: '123 Main St',
line2: 'Apt 101',
city: 'Springfield',
stateOrProvince: 'IL',
postalCode: '62701'
},
product: {
sku: 'GDF511PGRBB',
addons: [
{id: 'install-aggregate-id', quantity: 1},
{sku: 'M007', quantity: 1},
{sku: 'M021', quantity: 1}
]
},
subBrandId: '<string>',
sendOfferImmediately: true,
allowCommonCarrier: true,
externalJobID: '<string>',
buyoutAmount: 50000,
includeUpsells: true,
allowExistingOffer: false
})
};
fetch('https://api.sibipro.com/prod/offers/', 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.sibipro.com/prod/offers/",
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([
'customer' => [
'firstName' => 'John',
'lastName' => 'Doe',
'email' => 'john@example.com',
'phone' => '+1 (123) 456-7890'
],
'address' => [
'line1' => '123 Main St',
'line2' => 'Apt 101',
'city' => 'Springfield',
'stateOrProvince' => 'IL',
'postalCode' => '62701'
],
'product' => [
'sku' => 'GDF511PGRBB',
'addons' => [
[
'id' => 'install-aggregate-id',
'quantity' => 1
],
[
'sku' => 'M007',
'quantity' => 1
],
[
'sku' => 'M021',
'quantity' => 1
]
]
],
'subBrandId' => '<string>',
'sendOfferImmediately' => true,
'allowCommonCarrier' => true,
'externalJobID' => '<string>',
'buyoutAmount' => 50000,
'includeUpsells' => true,
'allowExistingOffer' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.sibipro.com/prod/offers/"
payload := strings.NewReader("{\n \"customer\": {\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"john@example.com\",\n \"phone\": \"+1 (123) 456-7890\"\n },\n \"address\": {\n \"line1\": \"123 Main St\",\n \"line2\": \"Apt 101\",\n \"city\": \"Springfield\",\n \"stateOrProvince\": \"IL\",\n \"postalCode\": \"62701\"\n },\n \"product\": {\n \"sku\": \"GDF511PGRBB\",\n \"addons\": [\n {\n \"id\": \"install-aggregate-id\",\n \"quantity\": 1\n },\n {\n \"sku\": \"M007\",\n \"quantity\": 1\n },\n {\n \"sku\": \"M021\",\n \"quantity\": 1\n }\n ]\n },\n \"subBrandId\": \"<string>\",\n \"sendOfferImmediately\": true,\n \"allowCommonCarrier\": true,\n \"externalJobID\": \"<string>\",\n \"buyoutAmount\": 50000,\n \"includeUpsells\": true,\n \"allowExistingOffer\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.sibipro.com/prod/offers/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customer\": {\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"john@example.com\",\n \"phone\": \"+1 (123) 456-7890\"\n },\n \"address\": {\n \"line1\": \"123 Main St\",\n \"line2\": \"Apt 101\",\n \"city\": \"Springfield\",\n \"stateOrProvince\": \"IL\",\n \"postalCode\": \"62701\"\n },\n \"product\": {\n \"sku\": \"GDF511PGRBB\",\n \"addons\": [\n {\n \"id\": \"install-aggregate-id\",\n \"quantity\": 1\n },\n {\n \"sku\": \"M007\",\n \"quantity\": 1\n },\n {\n \"sku\": \"M021\",\n \"quantity\": 1\n }\n ]\n },\n \"subBrandId\": \"<string>\",\n \"sendOfferImmediately\": true,\n \"allowCommonCarrier\": true,\n \"externalJobID\": \"<string>\",\n \"buyoutAmount\": 50000,\n \"includeUpsells\": true,\n \"allowExistingOffer\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sibipro.com/prod/offers/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer\": {\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"john@example.com\",\n \"phone\": \"+1 (123) 456-7890\"\n },\n \"address\": {\n \"line1\": \"123 Main St\",\n \"line2\": \"Apt 101\",\n \"city\": \"Springfield\",\n \"stateOrProvince\": \"IL\",\n \"postalCode\": \"62701\"\n },\n \"product\": {\n \"sku\": \"GDF511PGRBB\",\n \"addons\": [\n {\n \"id\": \"install-aggregate-id\",\n \"quantity\": 1\n },\n {\n \"sku\": \"M007\",\n \"quantity\": 1\n },\n {\n \"sku\": \"M021\",\n \"quantity\": 1\n }\n ]\n },\n \"subBrandId\": \"<string>\",\n \"sendOfferImmediately\": true,\n \"allowCommonCarrier\": true,\n \"externalJobID\": \"<string>\",\n \"buyoutAmount\": 50000,\n \"includeUpsells\": true,\n \"allowExistingOffer\": false\n}"
response = http.request(request)
puts response.read_body{
"id": "testofferid",
"address": {
"line1": "<string>",
"city": "<string>",
"stateOrProvince": "<string>",
"postalCode": "<string>",
"country": "USA",
"line2": "<string>"
},
"createdAt": "2024-01-20T12:00:00Z",
"customerOfferLink": "<string>",
"warnings": [
"This product is only available via common carrier delivery for the selected address."
]
}Create offer
curl --request POST \
--url https://api.sibipro.com/prod/offers/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customer": {
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com",
"phone": "+1 (123) 456-7890"
},
"address": {
"line1": "123 Main St",
"line2": "Apt 101",
"city": "Springfield",
"stateOrProvince": "IL",
"postalCode": "62701"
},
"product": {
"sku": "GDF511PGRBB",
"addons": [
{
"id": "install-aggregate-id",
"quantity": 1
},
{
"sku": "M007",
"quantity": 1
},
{
"sku": "M021",
"quantity": 1
}
]
},
"subBrandId": "<string>",
"sendOfferImmediately": true,
"allowCommonCarrier": true,
"externalJobID": "<string>",
"buyoutAmount": 50000,
"includeUpsells": true,
"allowExistingOffer": false
}
'import requests
url = "https://api.sibipro.com/prod/offers/"
payload = {
"customer": {
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com",
"phone": "+1 (123) 456-7890"
},
"address": {
"line1": "123 Main St",
"line2": "Apt 101",
"city": "Springfield",
"stateOrProvince": "IL",
"postalCode": "62701"
},
"product": {
"sku": "GDF511PGRBB",
"addons": [
{
"id": "install-aggregate-id",
"quantity": 1
},
{
"sku": "M007",
"quantity": 1
},
{
"sku": "M021",
"quantity": 1
}
]
},
"subBrandId": "<string>",
"sendOfferImmediately": True,
"allowCommonCarrier": True,
"externalJobID": "<string>",
"buyoutAmount": 50000,
"includeUpsells": True,
"allowExistingOffer": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customer: {
firstName: 'John',
lastName: 'Doe',
email: 'john@example.com',
phone: '+1 (123) 456-7890'
},
address: {
line1: '123 Main St',
line2: 'Apt 101',
city: 'Springfield',
stateOrProvince: 'IL',
postalCode: '62701'
},
product: {
sku: 'GDF511PGRBB',
addons: [
{id: 'install-aggregate-id', quantity: 1},
{sku: 'M007', quantity: 1},
{sku: 'M021', quantity: 1}
]
},
subBrandId: '<string>',
sendOfferImmediately: true,
allowCommonCarrier: true,
externalJobID: '<string>',
buyoutAmount: 50000,
includeUpsells: true,
allowExistingOffer: false
})
};
fetch('https://api.sibipro.com/prod/offers/', 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.sibipro.com/prod/offers/",
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([
'customer' => [
'firstName' => 'John',
'lastName' => 'Doe',
'email' => 'john@example.com',
'phone' => '+1 (123) 456-7890'
],
'address' => [
'line1' => '123 Main St',
'line2' => 'Apt 101',
'city' => 'Springfield',
'stateOrProvince' => 'IL',
'postalCode' => '62701'
],
'product' => [
'sku' => 'GDF511PGRBB',
'addons' => [
[
'id' => 'install-aggregate-id',
'quantity' => 1
],
[
'sku' => 'M007',
'quantity' => 1
],
[
'sku' => 'M021',
'quantity' => 1
]
]
],
'subBrandId' => '<string>',
'sendOfferImmediately' => true,
'allowCommonCarrier' => true,
'externalJobID' => '<string>',
'buyoutAmount' => 50000,
'includeUpsells' => true,
'allowExistingOffer' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.sibipro.com/prod/offers/"
payload := strings.NewReader("{\n \"customer\": {\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"john@example.com\",\n \"phone\": \"+1 (123) 456-7890\"\n },\n \"address\": {\n \"line1\": \"123 Main St\",\n \"line2\": \"Apt 101\",\n \"city\": \"Springfield\",\n \"stateOrProvince\": \"IL\",\n \"postalCode\": \"62701\"\n },\n \"product\": {\n \"sku\": \"GDF511PGRBB\",\n \"addons\": [\n {\n \"id\": \"install-aggregate-id\",\n \"quantity\": 1\n },\n {\n \"sku\": \"M007\",\n \"quantity\": 1\n },\n {\n \"sku\": \"M021\",\n \"quantity\": 1\n }\n ]\n },\n \"subBrandId\": \"<string>\",\n \"sendOfferImmediately\": true,\n \"allowCommonCarrier\": true,\n \"externalJobID\": \"<string>\",\n \"buyoutAmount\": 50000,\n \"includeUpsells\": true,\n \"allowExistingOffer\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.sibipro.com/prod/offers/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customer\": {\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"john@example.com\",\n \"phone\": \"+1 (123) 456-7890\"\n },\n \"address\": {\n \"line1\": \"123 Main St\",\n \"line2\": \"Apt 101\",\n \"city\": \"Springfield\",\n \"stateOrProvince\": \"IL\",\n \"postalCode\": \"62701\"\n },\n \"product\": {\n \"sku\": \"GDF511PGRBB\",\n \"addons\": [\n {\n \"id\": \"install-aggregate-id\",\n \"quantity\": 1\n },\n {\n \"sku\": \"M007\",\n \"quantity\": 1\n },\n {\n \"sku\": \"M021\",\n \"quantity\": 1\n }\n ]\n },\n \"subBrandId\": \"<string>\",\n \"sendOfferImmediately\": true,\n \"allowCommonCarrier\": true,\n \"externalJobID\": \"<string>\",\n \"buyoutAmount\": 50000,\n \"includeUpsells\": true,\n \"allowExistingOffer\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sibipro.com/prod/offers/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer\": {\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"email\": \"john@example.com\",\n \"phone\": \"+1 (123) 456-7890\"\n },\n \"address\": {\n \"line1\": \"123 Main St\",\n \"line2\": \"Apt 101\",\n \"city\": \"Springfield\",\n \"stateOrProvince\": \"IL\",\n \"postalCode\": \"62701\"\n },\n \"product\": {\n \"sku\": \"GDF511PGRBB\",\n \"addons\": [\n {\n \"id\": \"install-aggregate-id\",\n \"quantity\": 1\n },\n {\n \"sku\": \"M007\",\n \"quantity\": 1\n },\n {\n \"sku\": \"M021\",\n \"quantity\": 1\n }\n ]\n },\n \"subBrandId\": \"<string>\",\n \"sendOfferImmediately\": true,\n \"allowCommonCarrier\": true,\n \"externalJobID\": \"<string>\",\n \"buyoutAmount\": 50000,\n \"includeUpsells\": true,\n \"allowExistingOffer\": false\n}"
response = http.request(request)
puts response.read_body{
"id": "testofferid",
"address": {
"line1": "<string>",
"city": "<string>",
"stateOrProvince": "<string>",
"postalCode": "<string>",
"country": "USA",
"line2": "<string>"
},
"createdAt": "2024-01-20T12:00:00Z",
"customerOfferLink": "<string>",
"warnings": [
"This product is only available via common carrier delivery for the selected address."
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Show child attributes
Show child attributes
Delivery address details
Show child attributes
Show child attributes
{
"line1": "123 Main St",
"line2": "Apt 101",
"city": "Springfield",
"stateOrProvince": "IL",
"postalCode": "62701"
}
Replacement product and add-ons covered by warranty
Show child attributes
Show child attributes
{
"sku": "GDF511PGRBB",
"addons": [
{
"id": "install-aggregate-id",
"quantity": 1
},
{ "sku": "M007", "quantity": 1 },
{ "sku": "M021", "quantity": 1 }
]
}
The ID of the sub-brand used to determine customer-facing branding for the offer
Whether to send the offer email immediately after creation
true
Whether to allow offers for common carrier delivery properties
true
Buyout amount in cents (e.g., 50000 = $500.00). Customer can opt to receive this amount instead of a replacement product.
x >= 050000
Whether to include upsells in the offer
true
Creating an offer for an externalJobID that already has an active (pending or awaiting-customer) offer is rejected with DUPLICATE_ACTIVE_OFFER unless this is true, confirming the duplicate is intentional.
false
Response
Offer created successfully
Unique identifier for the offer
"testofferid"
Show child attributes
Show child attributes
Timestamp when the offer was created
"2024-01-20T12:00:00Z"
Link to allow the customer to authenticate and view the offer
Warnings for the offer
[
"This product is only available via common carrier delivery for the selected address."
]