Costing Management
Compare Cost Sheet Versions
Compare two versions and report structured diffs (costs, BOM, processing).
GET
/
costings
/
{costing_id}
/
versions
/
{v1}
/
compare
/
{v2}
Compare Cost Sheet Versions
curl --request GET \
--url https://vinmake-erp.onrender.com/costings/{costing_id}/versions/{v1}/compare/{v2} \
--header 'Authorization: Bearer <token>'import requests
url = "https://vinmake-erp.onrender.com/costings/{costing_id}/versions/{v1}/compare/{v2}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://vinmake-erp.onrender.com/costings/{costing_id}/versions/{v1}/compare/{v2}', 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://vinmake-erp.onrender.com/costings/{costing_id}/versions/{v1}/compare/{v2}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://vinmake-erp.onrender.com/costings/{costing_id}/versions/{v1}/compare/{v2}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://vinmake-erp.onrender.com/costings/{costing_id}/versions/{v1}/compare/{v2}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://vinmake-erp.onrender.com/costings/{costing_id}/versions/{v1}/compare/{v2}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"costSheetId": "<string>",
"versionA": {
"versionNumber": 123,
"createdDate": "2023-11-07T05:31:56Z",
"createdBy": "<string>",
"changeDescription": "<string>",
"status": "<string>",
"isFinal": false,
"finalizedAt": "2023-11-07T05:31:56Z",
"finalizedById": "<string>",
"stageKey": "<string>",
"stageLabel": "<string>"
},
"versionB": {
"versionNumber": 123,
"createdDate": "2023-11-07T05:31:56Z",
"createdBy": "<string>",
"changeDescription": "<string>",
"status": "<string>",
"isFinal": false,
"finalizedAt": "2023-11-07T05:31:56Z",
"finalizedById": "<string>",
"stageKey": "<string>",
"stageLabel": "<string>"
},
"costChanges": [
{
"field": "<string>",
"label": "<string>",
"versionAValue": 123,
"versionBValue": 123
}
],
"bomChanges": [
{
"changeType": "<string>",
"key": "<string>",
"materialName": "<string>",
"oldValue": {},
"newValue": {},
"fieldChanges": [
{
"field": "<string>",
"versionAValue": null,
"versionBValue": null
}
],
"description": "<string>"
}
],
"processingChanges": [
{
"changeType": "<string>",
"key": "<string>",
"oldValue": {},
"newValue": {},
"fieldChanges": [
{
"field": "<string>",
"versionAValue": null,
"versionBValue": null
}
],
"description": "<string>"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Headers
Path Parameters
The costing document ID
First version number
Required range:
x >= 1Second version number
Required range:
x >= 1Response
Successful Response
Version metadata used for listing and comparison
Show child attributes
Show child attributes
Version metadata used for listing and comparison
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
⌘I
Compare Cost Sheet Versions
curl --request GET \
--url https://vinmake-erp.onrender.com/costings/{costing_id}/versions/{v1}/compare/{v2} \
--header 'Authorization: Bearer <token>'import requests
url = "https://vinmake-erp.onrender.com/costings/{costing_id}/versions/{v1}/compare/{v2}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://vinmake-erp.onrender.com/costings/{costing_id}/versions/{v1}/compare/{v2}', 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://vinmake-erp.onrender.com/costings/{costing_id}/versions/{v1}/compare/{v2}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://vinmake-erp.onrender.com/costings/{costing_id}/versions/{v1}/compare/{v2}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://vinmake-erp.onrender.com/costings/{costing_id}/versions/{v1}/compare/{v2}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://vinmake-erp.onrender.com/costings/{costing_id}/versions/{v1}/compare/{v2}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"costSheetId": "<string>",
"versionA": {
"versionNumber": 123,
"createdDate": "2023-11-07T05:31:56Z",
"createdBy": "<string>",
"changeDescription": "<string>",
"status": "<string>",
"isFinal": false,
"finalizedAt": "2023-11-07T05:31:56Z",
"finalizedById": "<string>",
"stageKey": "<string>",
"stageLabel": "<string>"
},
"versionB": {
"versionNumber": 123,
"createdDate": "2023-11-07T05:31:56Z",
"createdBy": "<string>",
"changeDescription": "<string>",
"status": "<string>",
"isFinal": false,
"finalizedAt": "2023-11-07T05:31:56Z",
"finalizedById": "<string>",
"stageKey": "<string>",
"stageLabel": "<string>"
},
"costChanges": [
{
"field": "<string>",
"label": "<string>",
"versionAValue": 123,
"versionBValue": 123
}
],
"bomChanges": [
{
"changeType": "<string>",
"key": "<string>",
"materialName": "<string>",
"oldValue": {},
"newValue": {},
"fieldChanges": [
{
"field": "<string>",
"versionAValue": null,
"versionBValue": null
}
],
"description": "<string>"
}
],
"processingChanges": [
{
"changeType": "<string>",
"key": "<string>",
"oldValue": {},
"newValue": {},
"fieldChanges": [
{
"field": "<string>",
"versionAValue": null,
"versionBValue": null
}
],
"description": "<string>"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}