Obtener cambios
curl --request GET \
--url https://api.hubapi.com/commerce/contracts/2027-03-beta/contracts/{contractId}/changes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hubapi.com/commerce/contracts/2027-03-beta/contracts/{contractId}/changes"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hubapi.com/commerce/contracts/2027-03-beta/contracts/{contractId}/changes', 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.hubapi.com/commerce/contracts/2027-03-beta/contracts/{contractId}/changes",
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://api.hubapi.com/commerce/contracts/2027-03-beta/contracts/{contractId}/changes"
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://api.hubapi.com/commerce/contracts/2027-03-beta/contracts/{contractId}/changes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/commerce/contracts/2027-03-beta/contracts/{contractId}/changes")
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{
"changes": [
{
"contractId": "<string>",
"id": "<string>",
"lineItemChanges": [
{
"action": "ADD",
"rampKey": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"lineItemAdd": {
"mode": "CUSTOM",
"name": "<string>",
"pricing": {
"prices": [
{
"currencyCode": "<string>",
"price": {},
"maxQuantity": 123
}
],
"pricingModel": "FLAT"
},
"quantity": 123,
"allowBuyerSelectedQuantity": true,
"billingCycleAnchorDate": "2023-12-25",
"billingStartDelayDays": 123,
"billingStartDelayMonths": 123,
"buyerSelectedQuantityMax": 123,
"buyerSelectedQuantityMin": 123,
"description": "<string>",
"discount": 123,
"discountPercentage": 123,
"externalId": "<string>",
"images": "<string>",
"isEditablePrice": true,
"isOptional": true,
"lineItemCurrencyCode": "<string>",
"positionOnQuote": 123,
"priceBookId": "<string>",
"productId": "<string>",
"productType": "<string>",
"recurringBillingEndDate": "2023-12-25",
"recurringBillingFrequency": "ANNUALLY",
"recurringBillingPeriod": "<string>",
"recurringBillingStartDate": "2023-12-25",
"richTextDescription": "<string>",
"sku": "<string>",
"taxCategory": "<string>",
"taxRateGroupId": "<string>",
"variantId": "<string>"
},
"lineItemUpdate": {
"allowBuyerSelectedQuantity": {},
"billingCycleAnchorDate": {},
"billingStartDelayDays": {},
"billingStartDelayMonths": {},
"buyerSelectedQuantityMax": {},
"buyerSelectedQuantityMin": {},
"description": {},
"discount": {},
"discountPercentage": {},
"externalId": {},
"images": {},
"isEditablePrice": {},
"isOptional": {},
"lineItemCurrencyCode": {},
"name": {},
"positionOnQuote": {},
"priceBookId": {},
"pricing": {},
"productType": {},
"quantity": {},
"recurringBillingEndDate": {},
"recurringBillingFrequency": {},
"recurringBillingPeriod": {},
"recurringBillingStartDate": {},
"richTextDescription": {},
"sku": {},
"taxCategory": {},
"taxRateGroupId": {},
"variantId": {}
}
}
],
"prorating": true,
"status": "ACCEPTED",
"type": "DIRECT",
"createdAt": "2023-11-07T05:31:56Z",
"effectiveDate": "2023-12-25",
"name": "<string>",
"quoteId": "<string>",
"updatedAt": "2023-11-07T05:31:56Z"
}
]
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Cambios
Retrieve changes
Obtén una lista de los cambios asociados a un contrato específico en tu cuenta de HubSpot. Este punto de conexión es útil para hacer un seguimiento de las modificaciones hechas a un contrato a lo largo del tiempo, lo que te permite auditar los cambios y entender el historial de las modificaciones de un contrato.
GET
/
commerce
/
contracts
/
2027-03-beta
/
contracts
/
{contractId}
/
changes
Obtener cambios
curl --request GET \
--url https://api.hubapi.com/commerce/contracts/2027-03-beta/contracts/{contractId}/changes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.hubapi.com/commerce/contracts/2027-03-beta/contracts/{contractId}/changes"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.hubapi.com/commerce/contracts/2027-03-beta/contracts/{contractId}/changes', 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.hubapi.com/commerce/contracts/2027-03-beta/contracts/{contractId}/changes",
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://api.hubapi.com/commerce/contracts/2027-03-beta/contracts/{contractId}/changes"
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://api.hubapi.com/commerce/contracts/2027-03-beta/contracts/{contractId}/changes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/commerce/contracts/2027-03-beta/contracts/{contractId}/changes")
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{
"changes": [
{
"contractId": "<string>",
"id": "<string>",
"lineItemChanges": [
{
"action": "ADD",
"rampKey": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"lineItemAdd": {
"mode": "CUSTOM",
"name": "<string>",
"pricing": {
"prices": [
{
"currencyCode": "<string>",
"price": {},
"maxQuantity": 123
}
],
"pricingModel": "FLAT"
},
"quantity": 123,
"allowBuyerSelectedQuantity": true,
"billingCycleAnchorDate": "2023-12-25",
"billingStartDelayDays": 123,
"billingStartDelayMonths": 123,
"buyerSelectedQuantityMax": 123,
"buyerSelectedQuantityMin": 123,
"description": "<string>",
"discount": 123,
"discountPercentage": 123,
"externalId": "<string>",
"images": "<string>",
"isEditablePrice": true,
"isOptional": true,
"lineItemCurrencyCode": "<string>",
"positionOnQuote": 123,
"priceBookId": "<string>",
"productId": "<string>",
"productType": "<string>",
"recurringBillingEndDate": "2023-12-25",
"recurringBillingFrequency": "ANNUALLY",
"recurringBillingPeriod": "<string>",
"recurringBillingStartDate": "2023-12-25",
"richTextDescription": "<string>",
"sku": "<string>",
"taxCategory": "<string>",
"taxRateGroupId": "<string>",
"variantId": "<string>"
},
"lineItemUpdate": {
"allowBuyerSelectedQuantity": {},
"billingCycleAnchorDate": {},
"billingStartDelayDays": {},
"billingStartDelayMonths": {},
"buyerSelectedQuantityMax": {},
"buyerSelectedQuantityMin": {},
"description": {},
"discount": {},
"discountPercentage": {},
"externalId": {},
"images": {},
"isEditablePrice": {},
"isOptional": {},
"lineItemCurrencyCode": {},
"name": {},
"positionOnQuote": {},
"priceBookId": {},
"pricing": {},
"productType": {},
"quantity": {},
"recurringBillingEndDate": {},
"recurringBillingFrequency": {},
"recurringBillingPeriod": {},
"recurringBillingStartDate": {},
"richTextDescription": {},
"sku": {},
"taxCategory": {},
"taxRateGroupId": {},
"variantId": {}
}
}
],
"prorating": true,
"status": "ACCEPTED",
"type": "DIRECT",
"createdAt": "2023-11-07T05:31:56Z",
"effectiveDate": "2023-12-25",
"name": "<string>",
"quoteId": "<string>",
"updatedAt": "2023-11-07T05:31:56Z"
}
]
}{
"message": "Invalid input (details will vary based on the error)",
"correlationId": "aeb5f871-7f07-4993-9211-075dc63e7cbf",
"category": "VALIDATION_ERROR",
"links": {
"knowledge-base": "https://www.hubspot.com/products/service/knowledge-base"
}
}Supported products
Supported products
Required Scopes
Required Scopes
Autorizaciones
The access token received from the authorization server in the OAuth 2.0 flow.
FlowAuthorization Code
- Authorization URL
- https://app.hubspot.com/oauth/authorize
- Token URL
- https://api.hubapi.com/oauth/v1/token
Scopes1
contracts-read
Parámetros de ruta
Respuesta
successful operation
Un conjunto de objetos de cambio de contrato, cada uno de los cuales representa un cambio específico hecho al contrato. Cada elemento del conjunto es un objeto ContractChangeResponse.
Show child attributes
Show child attributes
Última modificación el 6 de octubre de 2026