Migrar vistas de tarjetas
curl --request POST \
--url https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/views/migrate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"allowDuplicateAppCardIds": true,
"appCardId": 123,
"legacyCrmCardId": 123,
"helpdeskAppCardId": 123
}
'import requests
url = "https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/views/migrate"
payload = {
"allowDuplicateAppCardIds": True,
"appCardId": 123,
"legacyCrmCardId": 123,
"helpdeskAppCardId": 123
}
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({
allowDuplicateAppCardIds: true,
appCardId: 123,
legacyCrmCardId: 123,
helpdeskAppCardId: 123
})
};
fetch('https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/views/migrate', 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/crm/extensions/cards-dev/2026-03/{appId}/views/migrate",
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([
'allowDuplicateAppCardIds' => true,
'appCardId' => 123,
'legacyCrmCardId' => 123,
'helpdeskAppCardId' => 123
]),
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.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/views/migrate"
payload := strings.NewReader("{\n \"allowDuplicateAppCardIds\": true,\n \"appCardId\": 123,\n \"legacyCrmCardId\": 123,\n \"helpdeskAppCardId\": 123\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.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/views/migrate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"allowDuplicateAppCardIds\": true,\n \"appCardId\": 123,\n \"legacyCrmCardId\": 123,\n \"helpdeskAppCardId\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/views/migrate")
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 \"allowDuplicateAppCardIds\": true,\n \"appCardId\": 123,\n \"legacyCrmCardId\": 123,\n \"helpdeskAppCardId\": 123\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"endedAt": 123,
"remainingPortalCount": 123,
"startedAt": 123,
"totalPortalCount": 123
}{
"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"
}
}Tarjetas del CRM
Migrate CRM card views
Cambia una tarjeta del CRM anterior por una tarjeta de aplicación en las vistas. Consulta la documentación de “Migrar una tarjeta del CRM anterior a una tarjeta de aplicación” para obtener más información.
POST
/
crm
/
extensions
/
cards-dev
/
2026-03
/
{appId}
/
views
/
migrate
Migrar vistas de tarjetas
curl --request POST \
--url https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/views/migrate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"allowDuplicateAppCardIds": true,
"appCardId": 123,
"legacyCrmCardId": 123,
"helpdeskAppCardId": 123
}
'import requests
url = "https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/views/migrate"
payload = {
"allowDuplicateAppCardIds": True,
"appCardId": 123,
"legacyCrmCardId": 123,
"helpdeskAppCardId": 123
}
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({
allowDuplicateAppCardIds: true,
appCardId: 123,
legacyCrmCardId: 123,
helpdeskAppCardId: 123
})
};
fetch('https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/views/migrate', 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/crm/extensions/cards-dev/2026-03/{appId}/views/migrate",
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([
'allowDuplicateAppCardIds' => true,
'appCardId' => 123,
'legacyCrmCardId' => 123,
'helpdeskAppCardId' => 123
]),
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.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/views/migrate"
payload := strings.NewReader("{\n \"allowDuplicateAppCardIds\": true,\n \"appCardId\": 123,\n \"legacyCrmCardId\": 123,\n \"helpdeskAppCardId\": 123\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.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/views/migrate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"allowDuplicateAppCardIds\": true,\n \"appCardId\": 123,\n \"legacyCrmCardId\": 123,\n \"helpdeskAppCardId\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hubapi.com/crm/extensions/cards-dev/2026-03/{appId}/views/migrate")
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 \"allowDuplicateAppCardIds\": true,\n \"appCardId\": 123,\n \"legacyCrmCardId\": 123,\n \"helpdeskAppCardId\": 123\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>",
"endedAt": 123,
"remainingPortalCount": 123,
"startedAt": 123,
"totalPortalCount": 123
}{
"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
Autorizaciones
The access token received from the authorization server in the OAuth 2.0 flow.
Parámetros de ruta
Cuerpo
application/json
Respuesta
successful operation
Un mensaje legible por humanos que describe el progreso de la migración.
La marca de tiempo que indica cuándo terminó la migración.
El número de portales que quedan por cambiar de la tarjeta del CRM anterior a la tarjeta de la aplicación
La marca de tiempo de cuándo comenzó la migración.
El número total de portales que tienen acceso a la tarjeta del CRM anterior
Última modificación el 3 de abril de 2026