Skip to main content
Version: v1

TPP API

The TPP API is used to send ABS registrations, cancellations, claims, and sales data.

The base URL for this API is https://data.absintegrations.com. There will be a version number, endpoint and company name added to the end of the URL for each partner so your API URL will look like https://data.absintegrations.com/v2/partners/tirecompany .

The API uses a very simple REST protocol that, once authorized, just takes a FORM POST with some authorization info in the headers and a JSON representation of the data being sent in the body of the POST.

Record Types

The API accepts four main record types, they may not all be applicable to your use case.

  • Registrations
  • Cancellations
  • Claims
  • Sales

Some key logic to understand:

  • A Registration can only be cancelled once
  • Claims can only be submitted to a valid registration (not cancelled, not expired)
  • Claims can only be submitted to a registration if there are still tires insured on the claim

Below is a list of our standard tables and their fields. If your system can’t generate each of these or if your system has key fields not listed, please contact ABS to discuss your specifics.

The Field Name listed below will be the JSON label for the application/json body of the POST to the API.

Registrations

  • Note: Only send in one registration per invoice. If you sell more than one of the same tire, use TireCount and the DOT1, DOT2 etc fields. Resending the same ShopID and InvoiceNumber will update the registration, not add a new one.
Field NameField DescData TypeRequiredNotes
OrgIDOrganization IDstring (50)NOptional field for grouping things like ownership groups. Will be blank if not passed in
ShopIDDealer/Store/Shop IDstring(25)YShop where the tires were sold
InvoiceNumberInvoice Numberstring(50)YInvoice for the registration
PlanEnrollDatePlan Enroll DatedatetimeYDate of enrollment
EmployeeIDEmployee IDstring(50)YTo track individual responsible for TPP sale
CustomerIDCustomer IDString(50)YEnables data to be filtered by individual customer (could be customer name or customer id number)
VehicleYearVehicle Yearstring(25)Four-digit year
VehicleMakeVehicle Makestring(25)
VehicleModelVehicle Modelstring(25)
VINVINstring(50)If available
CurrentMileageCurrent Vehicle MileageintMileage at time of TPP registration/sale
TiresCoveredCount of Tires CoveredintYHow many tires are covered on this registration
TPPPriceTPP PricemoneyYTPP Price Per Tire
TireBrandTire Make/Brandstring(25)YFor all tire sales with an attached TPP
TireModelTire Modelstring(25)
TireSizeTire Sizestring(25)Y
TirePriceTire Retail PricemoneyYTire Retail Price Per Tire
TireCostTire Wholesale PricemoneyYTire Wholesale Cost Per Tire
TireDOT1TireDOT1string(25)YFor all tire sales with an attached TPP / if available
TireDOT2TireDOT2string(25)
TireDOT3TireDOT3string(25)
TireDOT4TireDOT4string(25)
TireDOT5TireDOT5string(25)
TireDOT6TireDOT6string(25)
CommercialVehicleCommercial Vehiclestring(5)Yes or No (Default is No)

Claims

Field NameField DescData TypeRequiredNotes
OrgIDOrganization IDstring (50)NOptional field for grouping by things like ownership groups. Will be blank if not passed in
ShopIDDealer/Store/Shop IDstring(25)YShop where the registration was sold
InvoiceNumberRepair Invoice Numberstring(25)YInvoice Number for the original registration sale
ClaimDateClaim DatedatetimeYDate of claim
RepairShopIDOriginal Store / ShopIDstring(25)YShop ID where the repair was performed
RepairInvoiceNumberOriginal Invoice Numberstring(50)YInvoice from the repair work
VINVINstring(50)If available
VehicleMileageVehicle Mileage at Time of ClaimintMileage at the time of repair
TireClaimCountCount of Tires in ClaimintYHow many tires were repaired
CreditAmountAmount Credited to Customer (Total)moneyYDiscount amount * quantity
CostPerUnitAmount the Claim Cost Per UnitmoneyYReplacement cost per tire at time of repair
TireLocation1Location of tire 1 on vehiclestring(200)Ex. "front passenger" or "right front"
TireLocation2Location of tire 2 on vehiclestring(200)
TireLocation3Location of tire 3 on vehiclestring(200)
TireLocation4Location of tire 4 on vehiclestring(200)
TireLocation5Location of tire 5 on vehiclestring(200)
TireLocation6Location of tire 6 on vehiclestring(200)
ServiceDescriptionService Classification / Descriptionstring(200)i.e., "sidewall" or "screw in tread" - incorporate dropdown into POS screen?
TireBrandReplacement Tire Make/Brandstring(25)Y
TireModelReplacement Tire Modelstring(25)
TireSizeReplacement Tire Sizestring(25)Y
TireCostReplacement Tire PricemoneyY

Sales

Field NameField DescData TypeRequiredNotes
OrgIDOrganization IDstring (50)NOptional field for grouping by things like ownership groups. Will be blank if not passed in
ShopIDDealer/Store/Shop IDstring(25)YShop that made the sale
InvoiceNumberSale Invoice Numberstring(25)YInvoice number for the sale
SaleDateDate SolddatetimeYDate of the sale
TireCountCount of Tires CoveredintYNumber of tires sold
TireBrandTire Make/Brandstring(25)Yfor all tire sales with and without an attached TPP
TireModelTire Modelstring(25)Y
TireSizeTire Sizestring(25)Y
TirePriceTire Retail PricemoneyYwhat customer pays
TireCostTire Wholesale PricemoneyYwhat shop pays

Cancellations

Field NameField DescData TypeRequiredNotes
OrgIDOrganization IDstring (50)NOptional field for grouping. For example ownership group. Blank if not passed in
ShopIDDealer/Store/Shop IDstring(25)YShop ID from original sale and registration
InvoiceNumberSale Invoice Numberstring(25)YInvoice from the original sale and registration
CancelShopIDDealer/Store/Shop IDstring(25)YShop ID where the tire registrations were cancelled
CancelInvoiceNumberSale Invoice Numberstring(25)YInvoice from the the shop where tire registrations were cancelled
TireCancelCountCount of Tires CancelledintYHow many tires were cancelled
CancelDateDate CancelleddatetimeYDate of the cancellation

Notes on data types

Numeric Data: ABS can usually convert from string representations to appropriate numbers.

Date Time: All dates should be ISO 8601 format YYYYMMDDTHH:MM:SS in UTC time zone preferably or with designated offset from UTC. If your system is always synced to a specific time zone let us know and we can create a custom import based on a static time zone.

Money: Money / dollar amounts should be numeric with 2 decimal point precision or a matching string representation.

If any of data fields are required and empty or malformed, the API will return a HTTP status 400 "Bad Request". It should be easy to determine which fields are not present in the JSON data or badly formed, feel free to contact us if seemingly valid data is being rejected.

Registrations

Sale of a tire that is registered with a warranty.

Notes:

  • TiresCovered is the original number of Tires Covered from the Registration
  • DOT is the Department of Transportation Serial Number for the given tire
  • TireClaimCount is the total claimed so far

Registrations [GET]

Use query parameters to search and retrieve registrations created with us.

Examples:

Shell Example

curl --location --request GET https://data.absintegrations.com/v2/partners/{company_name}?rec=registrations&partnerid={partner_id}&shopid=12345&invoicenumber=12345 \
--header 'content-type: application/json' \
--header 'Authorization: Bearer {JWT}'

Ruby Example

require "uri"
require "net/http"

url = URI("https://data.absintegrations.com/v2/partners/{company_name}?rec=registrations&partnerid={partner_id}&shopid=12345&invoicenumber=12345")

https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {JWT}"

response = https.request(request)
puts response.read_body

Javascript Example

var axios = require('axios')

var config = {
method: 'get',
url: 'https://data.absintegrations.com/v2/partners/{company_name}?rec=registrations&partnerid={partner_id}&shopid=12345&invoicenumber=12345',
headers: {
Authorization: 'Bearer {JWT}',
},
}

axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data))
})
.catch(function (error) {
console.log(error)
})

Go Example

package main

import (
"fmt"
"net/http"
"io/ioutil"
)

func main() {

url := "https://data.absintegrations.com/v2/partners/{company_name}?rec=registrations&partnerid={partner_id}&shopid=12345&invoicenumber=12345"
method := "GET"

client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)

if err != nil {
fmt.Println(err)
}
req.Header.Add("Authorization", "Bearer {JWT}")

res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)

fmt.Println(string(body))
}

Python Example

import requests

url = "https://data.absintegrations.com/v2/partners/{company_name}?rec=registrations&partnerid={partner_id}&shopid=12345&invoicenumber=12345"

payload = {}
headers = {
'Authorization': 'Bearer {JWT}'
}

response = requests.request("GET", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

The above command returns JSON structured like this:

{
"PartnerID": 1001,
"OrgID": "",
"ShopID": "005108",
"InvoiceNumber": "104252",
"PlanEnrollDate": "2018-12-04T00:00:00Z",
"EmployeeID": "JP006",
"CustomerID": "5108-491514",
"VehicleYear": "08",
"VehicleMake": "LEXUS",
"VehicleModel": "IS 250",
"VIN": "JTHBK262X82078324",
"CurrentMileage": 175920,
"TiresCovered": 2,
"TPPPrice": 322.18,
"TireBrand": "SUM",
"TireModel": "225/40R18/XL 92W SUMITOMO HTR A/S P02",
"TireSize": "2254018",
"TirePrice": 104.98,
"TireCost": 74.01,
"TireDOT1": "",
"TireDOT2": "",
"TireDOT3": "",
"TireDOT4": "",
"TireDOT5": "",
"TireDOT6": "",
"CommercialVehicle": "false"
}

Registrations [POST]

Use this endpoint to create one or more new registrations with ABS

Shell Example

curl --request POST \
--url https://data.absintegrations.com/v2/partners/{company_name} \
--header 'authorization: Bearer eyJhb...SQj6A' \
--header 'content-type: application/json' \
--data {
"Registrations": [
{
"ShopID": "005308",
"InvoiceNumber": "1044273",
"PlanEnrollDate": "2018-12-04",
"EmployeeID": "JP0078",
"CustomerID": "5108-460340",
"VehicleYear": "08",
"VehicleMake": "GMC TRUCK",
"VehicleModel": "SIERRA 1500 PICKUP",
"VIN": "2GTEC19C481101249",
"CurrentMileage": "187437",
"TiresCovered": 4,
"TPPPrice": 995.68,
"TireBrand": "NIT",
"TireModel": "P265/65R18 112T NITTO CROSSTEK 2",
"TireSize": "2656518",
"TirePrice": 188.99,
"TireCost": 105.98,
"TireDOT1": "DOT 73C2 KLH0913",
"CommercialVehicle": "false"
}]}

Javascript Example

var axios = require('axios')
var data = {
Registrations: [
{
ShopID: '005308',
InvoiceNumber: '1044273',
PlanEnrollDate: '2018-12-04',
EmployeeID: 'JP0078',
CustomerID: '5108-460340',
VehicleYear: '08',
VehicleMake: 'GMC TRUCK',
VehicleModel: 'SIERRA 1500 PICKUP',
VIN: '2GTEC19C481101249',
CurrentMileage: '187437',
TiresCovered: 4,
TPPPrice: 995.68,
TireBrand: 'NIT',
TireModel: 'P265/65R18 112T NITTO CROSSTEK 2',
TireSize: '2656518',
TirePrice: 188.99,
TireCost: 105.98,
TireDOT1: 'DOT 73C2 KLH0913',
CommercialVehicle: 'false',
},
],
}

var config = {
method: 'post',
url: 'https://data.absintegrations.com/v2/partners/{company_name}',
headers: {
Authorization: 'Bearer {JWT}',
'Content-Type': 'application/json',
},
data: data,
}

axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data))
})
.catch(function (error) {
console.log(error)
})

Ruby Example

require "uri"
require "net/http"

url = URI("https://data.absintegrations.com/v2/partners/{company_name}")

https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true

body = {
"Registrations": [
{
"ShopID": "005308",
"InvoiceNumber": "1044273",
"PlanEnrollDate": "2018-12-04",
"EmployeeID": "JP0078",
"CustomerID": "5108-460340",
"VehicleYear": "08",
"VehicleMake": "GMC TRUCK",
"VehicleModel": "SIERRA 1500 PICKUP",
"VIN": "2GTEC19C481101249",
"CurrentMileage": "187437",
"TiresCovered": 4,
"TPPPrice": 995.68,
"TireBrand": "NIT",
"TireModel": "P265/65R18 112T NITTO CROSSTEK 2",
"TireSize": "2656518",
"TirePrice": 188.99,
"TireCost": 105.98,
"TireDOT1": "DOT 73C2 KLH0913",
"CommercialVehicle": "false"
}
]
}

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {JWT}"
request["Content-Type"] = "application/json"
request.body = body

response = https.request(request)
puts response.read_body

Go Example

package main

import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)

func main() {

url := "https://data.absintegrations.com/v2/partners/{company_name}"
method := "POST"

payload := strings.NewReader("{
\n \"Registrations\": [
\n {
\n \"ShopID\": \"005308\",
\n \"InvoiceNumber\": \"1044273\",
\n \"PlanEnrollDate\": \"2018-12-04\",
\n \"EmployeeID\": \"JP0078\",
\n \"CustomerID\": \"5108-460340\",
\n \"VehicleYear\": \"08\",
\n \"VehicleMake\": \"GMC TRUCK\",
\n \"VehicleModel\": \"SIERRA 1500 PICKUP\",
\n \"VIN\": \"2GTEC19C481101249\",
\n \"CurrentMileage\": \"187437\",
\n \"TiresCovered\": 4,
\n \"TPPPrice\": 995.68,
\n \"TireBrand\": \"NIT\",
\n \"TireModel\": \"P265/65R18 112T NITTO CROSSTEK 2\",
\n \"TireSize\": \"2656518\",
\n \"TirePrice\": 188.99,
\n \"TireCost\": 105.98,
\n \"TireDOT1\": \"DOT 73C2 KLH0913\",
\n \"CommercialVehicle\": \"false\"
\n }
\n ]
\n}")

client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)

if err != nil {
fmt.Println(err)
}
req.Header.Add("Authorization", "Bearer {JWT}")
req.Header.Add("Content-Type", "application/json")

res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)

fmt.Println(string(body))
}

Python Example

import requests
import json

url = "https://data.absintegrations.com/v2/partners/{company_name}"

payload = {
"Registrations": [
{
"ShopID": "005308",
"InvoiceNumber": "1044273",
"PlanEnrollDate": "2018-12-04",
"EmployeeID": "JP0078",
"CustomerID": "5108-460340",
"VehicleYear": "08",
"VehicleMake": "GMC TRUCK",
"VehicleModel": "SIERRA 1500 PICKUP",
"VIN": "2GTEC19C481101249",
"CurrentMileage": "187437",
"TiresCovered": 4,
"TPPPrice": 995.68,
"TireBrand": "NIT",
"TireModel": "P265/65R18 112T NITTO CROSSTEK 2",
"TireSize": "2656518",
"TirePrice": 188.99,
"TireCost": 105.98,
"TireDOT1": "DOT 73C2 KLH0913",
"CommercialVehicle": "false"
}
]
}

headers = {
'Authorization': 'Bearer {JWT}',
'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data = json.dumps(payload))

print(response.text.encode('utf8'))

Registration Status

Each registration will have a status associated with it.

Possible values for WarrantyStatus

  1. Registration is Active
  2. Registration is Cancelled
  3. No Tires left on Registration
  4. Registration is Expired

Notes:

  • TiresCovered is the original number of Tires Covered from the Registration
  • TireClaimCount is the total claimed so far
  • TireCancelCount is the total cancelled so far
  • TiresLeft is the number left on the registration

Registration Status [GET]

This is a special call to check on the status of a registration, call it just like GET Registration but it also returns the current status and number of tires left on the registration.

Shell Example

curl --location --request GET https://data.absintegrations.com/v2/partners/{company_name}?rec=registrationstatus&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345 \
--header 'content-type: application/json' \
--header 'Authorization: Bearer {JWT}'

Python Example

import requests

url = "https://data.absintegrations.com/v2/partners/{company_name}?rec=registrationstatus&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345"

payload = {}
headers = {
'Authorization': 'Bearer {JWT}'
}

response = requests.request("GET", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

Ruby Example

require "uri"
require "net/http"

url = URI("https://data.absintegrations.com/v2/partners/{company_name}?rec=registrationstatus&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345")

https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {JWT}"

response = https.request(request)
puts response.read_body

Javascript Example

var axios = require('axios')

var config = {
method: 'get',
url: 'https://data.absintegrations.com/v2/partners/{company_name}?rec=registrationstatus&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345',
headers: {
Authorization: 'Bearer {JWT}',
},
}

axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data))
})
.catch(function (error) {
console.log(error)
})

Go Example

package main

import (
"fmt"
"net/http"
"io/ioutil"
)

func main() {

url := "https://data.absintegrations.com/v2/partners/{company_name}?rec=registrationstatus&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345"
method := "GET"

client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)

if err != nil {
fmt.Println(err)
}
req.Header.Add("Authorization", "Bearer {JWT}")

res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)

fmt.Println(string(body))
}

The above retursn JSON structured like this

{
"RegistrationID": 70,
"PartnerID": 1001,
"OrgID": "",
"ShopID": "005108",
"InvoiceNumber": "104252",
"PlanEnrollDate": "2018-12-04T00:00:00Z",
"CreatedDate": "2018-11-04T00:00:00Z",
"TiresCovered": 2,
"TireClaimCount": 0,
"TireCancelCount": 0,
"TiresLeft": 2,
"WarrantyStatus": 1,
"CancelDate":,
"ExpireDate":,
"StatusDate":,
"Message": "Registration is Active"
}

Claims

Warranty claim made on a registered sale.

Possible values for ServiceType

  1. REPLACE - tire was replaced
  2. REPAIR - tire went through a repair

Notes:

  • TireClaimCount is the total claimed so far

Claims [GET]

Use this endpoint to get one or more claims

Shell Example

curl --location --request GET https://data.absintegrations.com/v2/partners/{company_name}?rec=claims&partnerid={partnerid}&shopid=12345&invoicenumber=12345 \
--header 'content-type: application/json' \
--header 'Authorization: Bearer {JWT}'

Javascript Example

var axios = require('axios')

var config = {
method: 'get',
url: 'https://data.absintegrations.com/v2/partners/{company_name}?rec=claims&partnerid={partnerid}&shopid=12345&invoicenumber=12345',
headers: {
Authorization: 'Bearer {JWT}',
},
}

axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data))
})
.catch(function (error) {
console.log(error)
})

Go Example

package main

import (
"fmt"
"net/http"
"io/ioutil"
)

func main() {

url := "https://data.absintegrations.com/v2/partners/{company_name}?rec=claims&partnerid={partnerid}&shopid=12345&invoicenumber=12345"
method := "GET"

client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)

if err != nil {
fmt.Println(err)
}
req.Header.Add("Authorization", "Bearer {JWT}")

res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)

fmt.Println(string(body))
}

Python Example

import requests

url = "https://data.absintegrations.com/v2/partners/{company_name}?rec=claims&partnerid={partnerid}&shopid=12345&invoicenumber=12345"

payload = {}
headers = {
'Authorization': 'Bearer {JWT}'
}

response = requests.request("GET", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

Ruby Example

require "uri"
require "net/http"

url = URI("https://data.absintegrations.com/v2/partners/{company_name}?rec=claims&partnerid={partnerid}&shopid=12345&invoicenumber=12345")

https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {JWT}"

response = https.request(request)
puts response.read_body

The above returns JSON structured like this

{
"PartnerID": 1001,
"OrgID": "",
"ShopID": "005108",
"InvoiceNumber": "104155",
"ClaimDate": "2020-01-27T00:00:00Z",
"RepairShopID": "005108",
"RepairInvoiceNumber": "104273",
"VIN": "",
"VehicleMileage": 96192,
"TireClaimCount": 4,
"CreditAmount": 64.04,
"CostPerUnit": 60,
"ServiceType": "REPLACE",
"ServiceDescription": "",
"TireLocation1": "",
"TireLocation2": "",
"TireLocation3": "",
"TireLocation4": "",
"TireLocation5": "",
"TireLocation6": "",
"TireBrand": "SUM",
"TireModel": "235/60R18/XL 107V SUMITOMO HTR A/S P02 BLK",
"TireSize": "2356018",
"TirePrice": 0,
"TireCost": 58.94
}

Claims [POST]

Use this endpoint to create one or more new claims with ABS.

Via Shell

curl --location --request POST 'https://data.absintegrations.com/v2/partners/{company_name}' \
--header 'Authorization: Bearer {JWT}' \
--header 'Content-Type: application/json' \
--data-raw '{
"Claims": [
{
"ShopID": "0056678",
"InvoiceNumber": "35554367",
"ClaimDate": "2020-01-27",
"ShopID": "0056698",
"InvoiceNumber": "9994498",
"VehicleMileage": 96192,
"TireClaimCount": 4,
"CreditAmount": 64.04,
"CostPerUnit": 60.00,
"ServiceType": "REPLACE",
"ServiceDescription": "FLAT REPAIR PASSENGER REAR",
"TireBrand": "SUM",
"TireModel": "235/60R18/XL 107V HTR A/S P02 BLK",
"TireSize": "2356018",
"TireCost": 58.00
}
]
}'

Javascript Example

var axios = require('axios')
var data = {
Claims: [
{
ShopID: '0056678',
InvoiceNumber: '35554367',
ClaimDate: '2020-01-27',
ShopID: '0056698',
InvoiceNumber: '9994498',
VehicleMileage: 96192,
TireClaimCount: 4,
CreditAmount: 64.04,
CostPerUnit: 60.0,
ServiceType: 'REPLACE',
ServiceDescription: 'FLAT REPAIR PASSENGER REAR',
TireBrand: 'SUM',
TireModel: '235/60R18/XL 107V HTR A/S P02 BLK',
TireSize: '2356018',
TireCost: 58.0,
},
],
}

var config = {
method: 'post',
url: 'https://data.absintegrations.com/v2/partners/{company_name}',
headers: {
Authorization: 'Bearer {JWT}',
'Content-Type': 'application/json',
},
data: data,
}

axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data))
})
.catch(function (error) {
console.log(error)
})

Via Python

import requests
import json

url = "https://data.absintegrations.com/v2/partners/{company_name}"

payload = {
"Claims": [
{
"ShopID": "0056678",
"InvoiceNumber": "35554367",
"ClaimDate": "2020-01-27",
"ShopID": "0056698",
"InvoiceNumber": "9994498",
"VehicleMileage": 96192,
"TireClaimCount": 4,
"CreditAmount": 64.04,
"CostPerUnit": 60.00,
"ServiceType": "REPLACE",
"ServiceDescription": "FLAT REPAIR PASSENGER REAR",
"TireBrand": "SUM",
"TireModel": "235/60R18/XL 107V HTR A/S P02 BLK",
"TireSize": "2356018",
"TireCost": 58.00
}
]
}

headers = {
'Authorization': 'Bearer {JWT}',
'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data = json.dumps(payload))

print(response.text.encode('utf8'))

Ruby Example

require "uri"
require "net/http"

url = URI("https://data.absintegrations.com/v2/partners/{company_name}")

https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {JWT}"
request["Content-Type"] = "application/json"
request.body = {
"Claims": [
{
"ShopID": "0056678",
"InvoiceNumber": "35554367",
"ClaimDate": "2020-01-27",
"ShopID": "0056698",
"InvoiceNumber": "9994498",
"VehicleMileage": 96192,
"TireClaimCount": 4,
"CreditAmount": 64.04,
"CostPerUnit": 60.00,
"ServiceType": "REPLACE",
"ServiceDescription": "FLAT REPAIR PASSENGER REAR",
"TireBrand": "SUM",
"TireModel": "235/60R18/XL 107V HTR A/S P02 BLK",
"TireSize": "2356018",
"TireCost": 58.00
}
]
}

response = https.request(request)
puts response.read_body

Go Example

package main

import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)

func main() {

url := "https://data.absintegrations.com/v2/partners/{company_name}"
method := "POST"

payload := strings.NewReader("{
\n \"Claims\": [
\n {
\n \"ShopID\": \"0056678\",
\n \"InvoiceNumber\": \"35554367\",
\n \"ClaimDate\": \"2020-01-27\",
\n \"ShopID\": \"0056698\",
\n \"InvoiceNumber\": \"9994498\",
\n \"VehicleMileage\": 96192,
\n \"TireClaimCount\": 4,
\n \"CreditAmount\": 64.04,
\n \"CostPerUnit\": 60.00,
\n \"ServiceType\": \"REPLACE\",
\n \"ServiceDescription\": \"FLAT REPAIR PASSENGER REAR\",
\n \"TireBrand\": \"SUM\",
\n \"TireModel\": \"235/60R18/XL 107V HTR A/S P02 BLK\",
\n \"TireSize\": \"2356018\",
\n \"TireCost\": 58.00
\n }
\n ]
\n}")

client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)

if err != nil {
fmt.Println(err)
}
req.Header.Add("Authorization", "Bearer {JWT}")
req.Header.Add("Content-Type", "application/json")

res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)

fmt.Println(string(body))
}

Sales

Sales made on tires including registered and unregistered sales.

Sales [GET]

Use this endpoint to retrieve one or more Sales.

Shell Example

curl --location --request GET https://data.absintegrations.com/v2/partners/{company_name}?rec=sales&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345 \
--header 'content-type: application/json' \
--header 'Authorization: Bearer {JWT}'

Ruby Example

require "uri"
require "net/http"

url = URI("https://data.absintegrations.com/v2/partners/{company_name}?rec=sales&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345")

https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {JWT}"

response = https.request(request)
puts response.read_body

Javascript Example

var axios = require('axios')

var config = {
method: 'get',
url: 'https://data.absintegrations.com/v2/partners/{company_name}?rec=sales&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345',
headers: {
Authorization: 'Bearer {JWT}',
},
}

axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data))
})
.catch(function (error) {
console.log(error)
})

Python Example

import requests

url = "https://data.absintegrations.com/v2/partners/{company_name}?rec=sales&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345"

payload = {}
headers = {
'Authorization': 'Bearer {JWT}'
}

response = requests.request("GET", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

Go Example

package main

import (
"fmt"
"net/http"
"io/ioutil"
)

func main() {

url := "https://data.absintegrations.com/v2/partners/{company_name}?rec=sales&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345"
method := "GET"

client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)

if err != nil {
fmt.Println(err)
}
req.Header.Add("Authorization", "Bearer {JWT}")

res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)

fmt.Println(string(body))
}

The above returns JSON structured like this

{
"PartnerID": 1001,
"OrgID":,
"ShopID": "005058",
"InvoiceNumber": "354404",
"SaleDate": "2020-01-27T00:00:00Z",
"TireCount": 1,
"TireBrand":,
"TireModel":,
"TireSize":,
"TirePrice": 99.99,
"TireCost": 78.16
}

Sales [POST]

Use this endpoint to create one or more new sales with ABS.

Shell Example

curl --request POST \
--url https://data.absintegrations.com/v2/partners/{company_name} \
--header 'authorization: Bearer eyJhb...SQj6A' \
--header 'content-type: application/json' \
--data {
"Sales": [
{
"ShopID": "005054568",
"InvoiceNumber": "354365667",
"SaleDate": "2020-01-27",
"TireCount": 4,
"TireBrand": "SUM",
"TireModel": "235/60R18/XL 107V HTR A/S P02 BLK",
"TireSize": "2356018",
"TirePrice": 225.09,
"TireCost": 195.09
}]}

Go Example

package main

import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)

func main() {

url := "https://data.absintegrations.com/v2/partners/{company_name}"
method := "POST"

payload := strings.NewReader("{
\n \"Sales\": [
\n {
\n \"ShopID\": \"005054568\",
\n \"InvoiceNumber\": \"354365667\",
\n \"SaleDate\": \"2020-01-27\",
\n \"TireCount\": 4,
\n \"TireBrand\": \"SUM\",
\n \"TireModel\": \"235/60R18/XL 107V HTR A/S P02 BLK\",
\n \"TireSize\": \"2356018\",
\n \"TirePrice\": 225.09,
\n \"TireCost\": 195.09
\n }
\n ]
\n}")

client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)

if err != nil {
fmt.Println(err)
}
req.Header.Add("Authorization", "Bearer {JWT}")
req.Header.Add("Content-Type", "application/json")

res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)

fmt.Println(string(body))
}

Via Javascript

var axios = require('axios')
var data = {
Sales: [
{
ShopID: '005054568',
InvoiceNumber: '354365667',
SaleDate: '2020-01-27',
TireCount: 4,
TireBrand: 'SUM',
TireModel: '235/60R18/XL 107V HTR A/S P02 BLK',
TireSize: '2356018',
TirePrice: 225.09,
TireCost: 195.09,
},
],
}

var config = {
method: 'post',
url: 'https://data.absintegrations.com/v2/partners/{company_name}',
headers: {
Authorization: 'Bearer {JWT}',
'Content-Type': 'application/json',
},
data: data,
}

axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data))
})
.catch(function (error) {
console.log(error)
})

Python Example

import requests
import json

url = "https://data.absintegrations.com/v2/partners/{company_name}"

payload = {
"Sales": [
{
"ShopID": "005054568",
"InvoiceNumber": "354365667",
"SaleDate": "2020-01-27",
"TireCount": 4,
"TireBrand": "SUM",
"TireModel": "235/60R18/XL 107V HTR A/S P02 BLK",
"TireSize": "2356018",
"TirePrice": 225.09,
"TireCost": 195.09
}
]
}

headers = {
'Authorization': 'Bearer {JWT}',
'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data = json.dumps(payload))

print(response.text.encode('utf8'))

Ruby Example

require "uri"
require "net/http"

url = URI("https://data.absintegrations.com/v2/partners/{company_name}")

https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {JWT}"
request["Content-Type"] = "application/json"
request.body = {
"Sales": [
{
"ShopID": "005054568",
"InvoiceNumber": "354365667",
"SaleDate": "2020-01-27",
"TireCount": 4,
"TireBrand": "SUM",
"TireModel": "235/60R18/XL 107V HTR A/S P02 BLK",
"TireSize": "2356018",
"TirePrice": 225.09,
"TireCost": 195.09
}
]
}

response = https.request(request)
puts response.read_body

Cancellations

Cancellation of an existing warranty.

Cancellations [GET]

Use this endpoint to retrieve one or more cancellations

Shell Example

curl --location --request GET https://data.absintegrations.com/v2/partners/{company_name}?rec=cancellations&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345 \
--header 'content-type: application/json' \
--header 'Authorization: Bearer {JWT}'

Go Example

package main

import (
"fmt"
"net/http"
"io/ioutil"
)

func main() {

url := "https://data.absintegrations.com/v2/partners/{company_name}?rec=cancellations&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345"
method := "GET"

client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)

if err != nil {
fmt.Println(err)
}
req.Header.Add("Authorization", "Bearer {JWT}")

res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)

fmt.Println(string(body))
}

Javascript Example

var axios = require('axios')

var config = {
method: 'get',
url: 'https://data.absintegrations.com/v2/partners/{company_name}?rec=cancellations&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345',
headers: {
Authorization: 'Bearer {JWT}',
},
}

axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data))
})
.catch(function (error) {
console.log(error)
})

Ruby Example

require "uri"
require "net/http"

url = URI("https://data.absintegrations.com/v2/partners/{company_name}?rec=cancellations&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345")

https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {JWT}"

response = https.request(request)
puts response.read_body

Python Example

import requests

url = "https://data.absintegrations.com/v2/partners/{company_name}?rec=cancellations&partnerid={partnerid}&ShopID=12345&InvoiceNumber=12345"

payload = {}
headers = {
'Authorization': 'Bearer {JWT}'
}

response = requests.request("GET", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

The above returns JSON structured like this

{
"PartnerID": 1001,
"OrgID": "",
"ShopID": "005108",
"InvoiceNumber": "104283",
"CancelShopID": "005108",
"CancelInvoiceNumber": "104283",
"CancelDate": "2020-01-27T00:00:00Z"
}

Cancellations [POST]

Use this endpoint to make one or more cancellation with ABS

Shell Example

curl --request POST \
--url https://data.absintegrations.com/v2/partners/{company_name} \
--header 'authorization: Bearer eyJhb...SQj6A' \
--header 'content-type: application/json' \
--data {
"Cancellations": [
{
"ShopID": "005054568",
"InvoiceNumber": "354365667",
"CancelShopID": "005054568",
"CancelInvoiceNumber": "365365167",
"TireCancelCount": "1",
"CancelDate": "2020-01-27"
}]}

Javascript Example

var axios = require('axios')
var data = {
Cancellations: [
{
ShopID: '005054568',
InvoiceNumber: '354365667',
CancelShopID: '005054568',
CancelInvoiceNumber: '365365167',
TireCancelCount: '1',
CancelDate: '2020-01-27',
},
],
}

var config = {
method: 'post',
url: 'https://data.absintegrations.com/v2/partners/{company_name}',
headers: {
Authorization: 'Bearer {JWT}',
'Content-Type': 'application/json',
},
data: data,
}

axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data))
})
.catch(function (error) {
console.log(error)
})

Go Example

package main

import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)

func main() {

url := "https://data.absintegrations.com/v2/partners/{company_name}"
method := "POST"

payload := strings.NewReader("{
\n \"Cancellations\": [
\n {
\n \"ShopID\": \"005054568\",
\n \"InvoiceNumber\": \"354365667\",
\n \"CancelShopID\": \"005054568\",
\n \"CancelInvoiceNumber\": \"365365167\",
\n \"TireCancelCount\": \"1\",
\n \"CancelDate\": \"2020-01-27\"
\n }
\n ]
\n}")

client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)

if err != nil {
fmt.Println(err)
}
req.Header.Add("Authorization", "Bearer {JWT}")
req.Header.Add("Content-Type", "application/json")

res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)

fmt.Println(string(body))
}

Python Example

import requests
import json

url = "https://data.absintegrations.com/v2/partners/{company_name}"

payload = {
"Cancellations": [
{
"ShopID": "005054568",
"InvoiceNumber": "354365667",
"CancelShopID": "005054568",
"CancelInvoiceNumber": "365365167",
"TireCancelCount": "1",
"CancelDate": "2020-01-27"
}
]
}

headers = {
'Authorization': 'Bearer {JWT}',
'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data = json.dumps(payload))

print(response.text.encode('utf8'))

Ruby Example

require "uri"
require "net/http"

url = URI("https://data.absintegrations.com/v2/partners/{company_name}")

https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {JWT}"
request["Content-Type"] = "application/json"
request.body = {
"Cancellations": [
{
"ShopID": "005054568",
"InvoiceNumber": "354365667",
"CancelShopID": "005054568",
"CancelInvoiceNumber": "365365167",
"TireCancelCount": "1",
"CancelDate": "2020-01-27"
}
]
}

response = https.request(request)
puts response.read_body

Testing

While testing and debugging you can read and write from testing tables rather than the production ones. This will keep testing data nicely segregated. All you need to do is POST to partners/{mycompany}_test rather than partners/{mycompany} the url like this:

https://data.absintegrations.com/v2/partners/tirecompany_test