Última modificación: 22 de agosto de 2025
Utiliza la API de cotizaciones para crear, gestionar y obtener cotizaciones de ventas, y así compartir información sobre precios con posibles compradores. Una vez configurada, una cotización se puede compartir con un comprador, ya sea en una URL especificada o a través de un PDF. Los usuarios también pueden gestionar cotizaciones en HubSpot para agregar detalles, actualizar asociaciones y mucho más. Si has configurado los pagos de HubSpot o el procesamiento de pagos con Stripe, puedes configurar una cotización para que se pague a través de esta API. Obtén más información sobre las cotizaciones por pagar.
example-quote-api
Ejemplo de uso: necesitas crear una propuesta de contrato para un cliente interesado en adquirir uno de tus paquetes anuales de servicios de auditoría SEO. A continuación, aprende cómo crear una cotización a través de la API y configurar sus diversas propiedades, asociaciones, estados y mucho más.

Resumen

El proceso de creación de cotizaciones se puede dividir en los siguientes pasos:
  1. Crear una cotización: crea una cotización con algunos detalles, como el nombre y la fecha de vencimiento. También puedes configurar la cotización para habilitar las firmas electrónicas y los pagos.
  2. Configurar asociaciones: asocia la cotización con otros tipos de objetos del CRM, como elementos de pedido, plantillas de cotización, un negocio, entre otros. Durante el siguiente paso, la cotización heredará los valores de propiedad de algunos de estos registros asociados, así como la configuración de la cuenta.
  3. Establecer el estado de la cotización: establece el estado de la cotización para que refleje que está lista para ser compartida con los compradores. Al establecer el estado de la cotización, como convertirla en un borrador editable o en una cotización publicada y accesible de forma pública, heredará ciertas propiedades de los registros de CRM asociados y de la configuración de la cuenta.
  4. Compartir la cotización: una vez que se ha publicado una cotización, puedes compartirla con tus compradores.

Crear una cotización

Para crear una cotización, primero debes configurar sus detalles básicos realizando una solicitud POST a /crm/v3/objects/quotes. Luego, deberás hacer una llamada separada para asociar la cotización con otros objetos, como la plantilla de cotización, los elementos de pedido o un negocio.
Dependiendo de tu flujo de trabajo preferido, puedes crear una cotización con asociaciones a través de una solicitud POST.
En el cuerpo de la solicitud, incluye las siguientes propiedades obligatorias para configurar los detalles básicos:
{
  "properties": {
    "hs_title": "CustomerName - annual SEO audit",
    "hs_expiration_date": "2023-12-10"
  }
}
ParámetroTipoDescripción
hs_titleCadenaEl nombre de la cotización.
hs_expiration_dateCadenaLa fecha en la que vence la cotización.
Las anteriores son solo las propiedades mínimas requeridas para comenzar una cotización, pero se necesitan otras propiedades para publicar una cotización. Para ver todas las propiedades disponibles para las cotizaciones, haz una solicitud GET a crm/v3/properties/quotes. Más información sobre la API de propiedades. La respuesta incluirá un id, que utilizarás para seguir configurando la cotización. Puedes actualizar las propiedades de la cotización en cualquier momento realizando una solicitud PATCH a /crm/v3/objects/quotes/{quoteId}.

Propietario de la cotización

Establecer la propiedad hubspot_owner_id manualmente no es posible debido a que es una propiedad calculada, y cualquier valor será anulado. Cuando se utilizan cotizaciones, la propiedad funciona del siguiente modo:
  • Si hay un negocio asociado a la cotización, la propiedad hubspot_owner_id reflejará la propiedad hs_associated_deal_owner_id (hs_associated_deal_owner_id es una propiedad calculada).
  • Si no hay una cotización asociada a un negocio, la propiedad hubspot_owner_id mostrará la propiedad hs_quote_owner_id.

Habilitar firmas electrónicas

Para habilitar las firmas electrónicas en la cotización, incluye la propiedad booleana hs_esign_enabled en el cuerpo de la solicitud con un valor de true. Ten en cuenta que no podrás agregar firmantes adicionales a través de la API, por lo que deberán agregarse en HubSpot antes de publicar la cotización. Tampoco puedes publicar una cotización con firma electrónica si has excedido tu límite mensual de firmas electrónicas.
{
  "properties": {
    "hs_title": "CustomerName - annual SEO audit",
    "hs_expiration_date": "2023-12-10",
    "hs_esign_enabled": "true"
  }
}
Más adelante, podrás asociar la cotización con todos sus firmantes. Si bien los contactos que firman la cotización existen como contactos en HubSpot, se almacenan como un tipo de asociación independiente de los contactos. Más información sobre cómo asociar cotizaciones con los firmantes de la cotización.

Habilitar los pagos

Para activar los pagos en una cotización, incluye la propiedad booleana hs_payment_enabled en el cuerpo de la solicitud con un valor de true. Dependiendo del procesador de pagos que utilices y de los métodos de pago aceptados, también tendrás que establecer hs_payment_type y hs_allowed_payment_methods.

Nota:

La cuenta de HubSpot debe tener configurados los Pagos de HubSpot o el Procesamiento de pagos con Stripe antes de utilizar esta función.
ParámetroTipoDescripción
hs_payment_enabledBooleanoCuando se establece como true, permite que la cotización pueda procesar el pago utilizando los pagos de HubSpot o el procesamiento de pagos con Stripe. Por opción predeterminada es false.
hs_payment_typeEnumeraciónDetermina qué procesador de pagos se va a utilizar. El valor puede ser HUBSPOT o BYO_STRIPE.
hs_allowed_payment_methodsEnumeraciónLos métodos de pago que se utilizarán (por ejemplo, tarjeta de crédito).
hs_collect_billing_addressBooleanoCuando se establece como true, le permite al comprador introducir su dirección de facturación durante el proceso de pago.
hs_collect_shipping_addressBooleanoCuando se establece como true, le permite al comprador introducir su dirección de envío durante el proceso de pago.
Por ejemplo, para crear una cotización y habilitar los pagos de HubSpot con tarjeta de crédito, débito o ACH, tu solicitud sería la siguiente:
{
  "properties": {
    "hs_title": "CustomerName - annual SEO audit",
    "hs_expiration_date": "2023-12-10",
    "hs_payment_enabled": "true",
    "hs_payment_type": "HUBSPOT",
    "hs_allowed_payment_methods": "CREDIT_OR_DEBIT_CARD;ACH"
  }
}
Para hacer seguimiento del pago, HubSpot actualizará automáticamente las propiedades hs_payment_status y hs_payment_date:
  • Cuando publiques una cotización con los pagos habilitados, HubSpot establecerá automáticamente la propiedad hs_payment_status como PENDING.
  • Si utilizas ACH, cuando se procese el pago, HubSpot establecerá automáticamente la propiedad hs_payment_status a PROCESSING.
  • Cuando se confirme el pago, HubSpot establecerá automáticamente la propiedad hs_payment_status como PAID.
  • Una vez que se pague la cotización, HubSpot establecerá automáticamente hs_payment_date en la fecha y hora en que se confirmó el pago.
  • Una vez confirmado el pago, este se asocia automáticamente a la cotización. Si deseas obtener más información sobre los pagos, consulta la API de pagos.

Agregar asociaciones

Para crear una cotización completa, deberás asociarla con otros registros de CRM, como elementos de pedido, utilizando la API de asociaciones. La siguiente tabla muestra qué asociaciones de registros de CRM se requieren para que una cotización esté completa y cuáles son opcionales. Sigue leyendo para obtener más información sobre cómo buscar los ID de registros y usarlos para crear las asociaciones necesarias.
Tipo de objetoRequeridoDescripción
Elementos de pedidoLos bienes o servicios que se venden a través de la cotización. Puedes crear elementos de pedido a partir de los productos de tu biblioteca de productos o crear elementos de pedido personalizados.
Plantilla de cotizaciónLa plantilla que representa la cotización, además de proporcionar algunos ajustes de configuración predeterminados para la cotización, como el idioma. Cada cotización se puede asociar con una plantilla.
NegocioEl registro del negocio para el seguimiento de los ingresos y el ciclo de vida de las ventas. Una cotización hereda los valores del negocio asociado, incluidos el usuario responsable y la divisa. Cada cotización se puede asociar a un negocio.
ContactoNoCompradores específicos a los que te estás dirigiendo en la cotización.
EmpresaNoUna empresa específica a la que te estás dirigiendo en la cotización. Cada cotización se puede asociar a una empresa.
Descuentos, tarifas e impuestosNoTodos los descuentos, tarifas e impuestos que se apliquen al momento de pagar. Al determinar la cantidad total de la cotización, HubSpot aplica primero los descuentos, seguidos de las tarifas y luego los impuestos. Puedes usar el campo hs_sort_order para reordenar los objetos del mismo tipo. Se pueden establecer en valores o porcentajes fijos en el campo hs_type en FIXED o en PERCENT.

Buscar ID para asociaciones

Para realizar cada asociación, primero tendrás que buscar el ID de cada objeto que quieras asociar. Para obtenerr cada ID, debes realizar una solicitud GET al endpoiny del objeto correspondiente, el cual sigue el mismo patrón en cada objeto del CRM. Al realizar cada solicitud, también puedes incluir un parámetro de consulta de properties para obtener propiedades específicas cuando sea necesario. A continuación se muestran ejemplos de solicitudes GET para cada tipo de objeto.
GET request for line items
/crm/v3/objects/line_items?properties=name

GET request for quote templates
/crm/v3/objects/quote_template?properties=hs_name

GET request for deals
/crm/v3/objects/deals?properties=dealname

GET request for contacts
/crm/v3/objects/contacts?properties=email

GET request for companies
/crm/v3/objects/companies?properties=name

GET request for discounts
crm/v3/objects/discounts?properties=hs_type,hs_value

GET request for fees
crm/v3/objects/fees?properties=hs_type,hs_value

GET request for taxes
crm/v3/objects/taxes?properties=hs_type,hs_value
Cada llamada exitosa devolverá una respuesta 200 con detalles para cada tipo de objeto obtenido. Usarás el valor en el campo id para establecer asociaciones en el siguiente paso.
{
  "results": [
    {
      "id": "235425923863",
      "properties": {
        "hs_createdate": "2023-06-12T16:27:32.794Z",
        "hs_lastmodifieddate": "2023-06-12T16:27:32.794Z",
        "hs_name": "Default Basic",
        "hs_object_id": "235425923863"
      },
      "createdAt": "2023-06-12T16:27:32.794Z",
      "updatedAt": "2023-06-12T16:27:32.794Z",
      "archived": false
    },
    {
      "id": "235425923864",
      "properties": {
        "hs_createdate": "2023-06-12T16:27:32.794Z",
        "hs_lastmodifieddate": "2023-06-12T16:27:32.794Z",
        "hs_name": "Default Modern",
        "hs_object_id": "235425923864"
      },
      "createdAt": "2023-06-12T16:27:32.794Z",
      "updatedAt": "2023-06-12T16:27:32.794Z",
      "archived": false
    },
    {
      "id": "235425923865",
      "properties": {
        "hs_createdate": "2023-06-12T16:27:32.794Z",
        "hs_lastmodifieddate": "2023-06-12T16:27:32.794Z",
        "hs_name": "Default Original",
        "hs_object_id": "235425923865"
      },
      "createdAt": "2023-06-12T16:27:32.794Z",
      "updatedAt": "2023-06-12T16:27:32.794Z",
      "archived": false
    }
  ]
}

Crear asociaciones

Una vez tengas los ID, ahora puedes realizar llamadas a la API de asociaciones para crear las asociaciones. Para cada tipo de objeto que quieras asociar con una cotización, deberás realizar una llamada por separado haciendo una solicitud PUT utilizando la siguiente estructura de URL: /crm/v4/objects/quotes/{fromObjectId}/associations/default/{toObjectType}/{toObjectId}
ParámetroDescripción
fromObjectIdEl ID de la cotización.
toObjectTypeEl tipo de objeto con el que se está asociando. Por ejemplo, line_items, deals y quote_template.
toObjectIdEl ID del objeto con el que asocias la cotización.
A continuación se muestran ejemplos de solicitudes PUT para cada tipo de objeto.
PUT request to associate a line item
/crm/v4/objects/quotes/{quoteId}/associations/default/line_items/{lineItemId}

PUT request to associate a quote template
/crm/v4/objects/quotes/{quoteId}/associations/default/quote_template/{quoteTemplateId}

PUT request to associate a deal
/crm/v4/objects/quotes/{quoteId}/associations/default/deals/{dealId}

PUT request to associate contacts
/crm/v4/objects/quotes/{quoteId}/associations/default/contacts/{contactId}

PUT request to associate companies
/crm/v4/objects/quotes/{quoteId}/associations/default/companies/{companyId}

PUT request to associate discounts
/crm/v4/objects/quotes/{quoteId}/associations/default/discounts/{discountId}

PUT request to associate fees
/crm/v4/objects/quotes/{quoteId}/associations/default/fees/{feeId}

PUT request to associate taxes
/crm/v4/objects/quotes/{quoteId}/associations/default/taxes/{taxId}
Por ejemplo, si tu cotización tiene el ID 123456, las solicitudes para asociar la cotización podrían incluir lo siguiente:
  • Elementos de pedido (ID: 55555, 66666):
    • /crm/v4/objects/quotes/123456/associations/default/line_items/55555
    • /crm/v4/objects/quotes/123456/associations/default/line_items/66666
  • Plantilla de cotización (ID: 987654): /crm/v4/objects/quotes/123456/associations/default/quote_template/987654
  • Negocio (ID: 345345): /crm/v4/objects/quotes/123456/associations/default/deals/345345
Cada asociación exitosa devolverá una respuesta 200 con detalles sobre la asociación. Las llamadas anteriores asociarán los objetos en ambas direcciones, con cada dirección teniendo su propio ID. Por ejemplo, si asocias la cotización con una plantilla de cotización, la respuesta describirá la asociación desde ambos lados. En la respuesta del ejemplo a continuación, 286 es el ID del tipo de asociación de cotización a la plantilla de cotización, y 285 es el ID del tipo de asociación de la plantilla de cotización a cotización.
{
  "status": "COMPLETE",
  "results": [
    {
      "from": {
        "id": "115045534742"
      },
      "to": {
        "id": "102848290"
      },
      "associationSpec": {
        "associationCategory": "HUBSPOT_DEFINED",
        "associationTypeId": 285
      }
    },
    {
      "from": {
        "id": "102848290"
      },
      "to": {
        "id": "115045534742"
      },
      "associationSpec": {
        "associationCategory": "HUBSPOT_DEFINED",
        "associationTypeId": 286
      }
    }
  ],
  "startedAt": "2023-10-12T16:48:40.624Z",
  "completedAt": "2023-10-12T16:48:40.712Z"
}

Ten en cuenta los siguientes límites al asociar una cotización a una plantilla de cotización:

  • Las plantillas de cotizaciones deben crearse antes de que puedan asociarse con una cotización.
  • Una cotización solo se puede asociar con una plantilla de cotización.
  • Esta API no admite cotizaciones preexistentes o propuestas. Solo se puede usar el tipo de plantilla CUSTOMIZABLE_QUOTE_TEMPLATE.

Asociar firmantes de cotizaciones

Si habilitaste la cotización para firmas electrónicas, también deberás crear una asociación entre la cotización y los contactos que están firmando mediante el uso de una etiqueta de asociación específica de cotización a contacto. En lugar de utilizar los endpoints de asociación predeterminados que se muestran arriba, deberás realizar una solicitud PUT a la siguiente URL: /crm/v4/objects/quote/{quoteId}/associations/contact/{contactId} En el cuerpo de la solicitud, deberás especificar associationCategory y associationTypeId, como se muestra a continuación:
[
  {
    "associationCategory": "HUBSPOT_DEFINED",
    "associationTypeId": 702
  }
]

Crear una cotización con asociaciones (solicitud única)

El siguiente cuerpo de solicitud creará una nueva cotización con asociaciones a una plantilla de cotización, un negocio, dos elementos de pedido y un contacto.
Para que el cuerpo de la solicitud que aparece a continuación cree correctamente una cotización en la cuenta, tendrás que actualizar los ID de objeto en el campo associations para que coincidan con los datos existentes en el CRM. Revisa la sección buscar ID para asociaciones para obtener más información.
POST /crm/v3/objects/quote
{
  "properties": {
    "hs_title": "CustomerName - annual SEO audit",
    "hs_expiration_date": "2023-09-30"
  },
  "associations": [
    {
      "to": {
        "id": 115045534742
      },
      "types": [
        {
          "associationCategory": "HUBSPOT_DEFINED",
          "associationTypeId": 286
        }
      ]
    },
    {
      "to": {
        "id": 14795354663
      },
      "types": [
        {
          "associationCategory": "HUBSPOT_DEFINED",
          "associationTypeId": 64
        }
      ]
    },
    {
      "to": {
        "id": 75895447
      },
      "types": [
        {
          "associationCategory": "HUBSPOT_DEFINED",
          "associationTypeId": 67
        }
      ]
    },
    {
      "to": {
        "id": 256143985
      },
      "types": [
        {
          "associationCategory": "HUBSPOT_DEFINED",
          "associationTypeId": 67
        }
      ]
    }
  ]
}
ParámetroTipoDescripción
propertiesObjetoValores de propiedad para definir los detalles de la cotización. Las propiedades requeridas son hs_title y hs_expiration_date:
  • hs_title: el nombre de la cotización.
  • hs_expiration_date: la fecha de caducidad de la cotización.
  • hs_status: el estado de la cotización. Si no se proporciona en el momento de la creación, los usuarios no podrán editar la cotización en HubSpot.
associationsMatrizLos demás registros y objetos del CRM asociados a la cotización. Para que una cotización se pueda publicar, debe tener un negocio asociado y una plantilla de cotización. Los elementos de pedido asociados a una cotización deben ser distintos de los elementos de pedido asociados a la cotización del negocio (es decir, debes crear copias de los elementos de pedido).

Para establecer cada asociación, incluye un objeto independiente en esta matriz con los siguientes campos:
  • to: el ID del registro u objeto que se va a asociar a la cotización.
  • associationCategory: la categoría de etiqueta del tipo de asociación, ya sea "HUBSPOT_DEFINED" (etiqueta predeterminada) o "USER_DEFINED" (etiqueta personalizada).
  • associationTypeId: el ID del tipo de asociación que se está realizando. Por ejemplo:
    • 286: plantilla de cotización a cotización
    • 64: cotización a negocio
    • 67: cotización a elemento de pedido

Nota:

Estos elementos de pedido deben ser diferentes a los elementos de pedido de otros objetos, incluso si están asociados (por ejemplo, asociar una cotización a un negocio). Consulta la documentación de la API de elementos de pedido para obtener más información.

Actualizar el estado de la cotización

El estado de una cotización describe qué tan avanzado está en el proceso de creación, desde la configuración inicial hasta su publicación y el acceso público. El estado de la cotización también puede reflejar el proceso de aprobación de la cotización, si las aprobaciones de cotizaciones están habilitadas para la cuenta. Al establecer el estado de una cotización, HubSpot completará automáticamente ciertas propiedades. Puedes actualizar el estado de una cotización haciendo una solicitud PATCH a /crm/v3/objects/quote/{quoteId}. El estado de una cotización se basa en el campo hs_status. Ciertos estados de cotización permiten a los usuarios editar, publicar y usar la cotización en los flujos de trabajo de aprobación de cotizaciones. A continuación se muestran los estados de cotización disponibles.
  • Sin estado: si no se proporciona ningún valor para el campo hs_status, la cotización estará en el estado Mínimo. La cotización aparecerá en la página de índice de la herramienta cotizaciones, pero no se podrá editar directamente. Las cotizaciones en este estado todavía se pueden usar en la automatización, como la herramienta de secuencias y también están disponibles para analizar dentro de la herramienta de informes.
  • DRAFT: permite editar la cotización en HubSpot. Este estado puede ser útil cuando la cotización no está completamente configurada o si prefieres permitir que los representantes de ventas completen el proceso de configuración de la cotización en HubSpot.
  • APPROVAL_NOT_NEEDED: publica la cotización en una URL de acceso público (hs_quote_link) sin necesidad de aprobación.
  • PENDING_APPROVAL: indica que la cotización está a la espera de ser aprobada antes de que pueda ser publicada.
  • APPROVED: la cotización ha sido aprobada y ahora está publicada en una URL de acceso público (hs_quote_link).
  • REJECTED: indica que la cotización ha sido configurada pero no ha sido aprobada para su publicación y debe editarse antes de que pueda enviarse de nuevo para su aprobación.

Nota:

Si habilitas las firmas electrónicas en la cotización, no podrás publicarla si has superado el límite mensual de firmas electrónicas.
Por ejemplo, la siguiente solicitud publicaría la cotización en una URL de acceso público.
{
  "properties": {
    "hs_status": "APPROVAL_NOT_NEEDED"
  }
}

Nota:

Por opción predeterminada, HubSpot establecerá la propiedad hs_template_type de la cotización en CUSTOMIZABLE_QUOTE_TEMPLATE después de que actualices el estado de la cotización. Este tipo de plantilla es compatible con la API v3, mientras que los siguientes tipos de plantilla son plantillas preexistentes que ya no son compatibles:
  • QUOTE
  • PROPOSAL

Propiedades establecidas por el estado de la cotización

Actualizar el estado de la cotización actualizará las siguientes propiedades:
  • hs_quote_amount: se calcula en función de cualquier elemento de pedido asociado, impuesto, descuento y tarifa.
  • hs_domain: se establece a partir de la plantilla de cotización asociada.
  • hs_slug: se genera de forma aleatoria si no se proporciona un valor.
  • hs_quote_total_preference: se establece en función de la configuración de tu cuenta. Si no has configurado este ajuste, por opción predeterminada será el valor del campo total_first_payment.
  • hs_timezone: es la zona horaria predeterminada de tu cuenta de HubSpot.
  • hs_locale: se establece a partir de la plantilla de cotización asociada.
  • hs_quote_number: se establece en función de la fecha y hora actuales, a menos que se proporcione una.
  • hs_language: se establece a partir de la plantilla de cotización asociada.
  • hs_currency: se establece en función del negocio asociado. Si no has asociado un negocio con la cotización, esta cambiará por opción predeterminada a la divisa predeterminada de tu cuenta de HubSpot.
Además, las propiedades a continuación se calcularán cuando la cotización esté en un estado publicado:
  • hs_pdf_download_link: se rellena con una URL de un PDF para la cotización.
  • hs_locked: se establece en true. Para modificar cualquier propiedad después de haber publicado una cotización, primero debes actualizar el hs_status de la cotización a DRAFT, PENDING_APPROVAL o REJECTED.
  • hs_quote_link: la URL de acceso público de la cotización. Esta es una propiedad de solo lectura y no se puede configurar a través de la API después de la publicación.
  • hs_esign_num_signers_required: si has habilitado las firmas electrónicas, muestra el número de firmas necesarias.
  • hs_payment_status: el estado de cobro del pago, si habilitaste los pagos. Al publicar con los pagos habilitados, esta propiedad se establecerá en PENDING. Una vez que el comprador envíe el pago a través de la cotización, el estado se actualizará automáticamente. Más información sobre cómo habilitar los pagos.

Buscar cotizaciones

Puedes buscar cotizaciones individualmente o en lotes.
  • Para buscar una cotización individual, haz una solicitud GET a /crm/v3/objects/quotes/{quoteID}.
  • Para solicitar una lista de todas las cotizaciones, envía una solicitud GET a /crm/v3/objects/quotes.
En estos endpoints, puedes incluir los siguientes parámetros de consulta en la URL de la solicitud:
ParámetroDescripción
propertiesUna lista separada con comas de las propiedades que se devolverán en la respuesta. Si el contacto de la cotización solicitada no tiene un valor para una propiedad, no aparecerá en la respuesta.
propertiesWithHistoryUna lista separada con comas de las propiedades actuales y anteriores que se devolverán en la respuesta. Si la cotización solicitada no tiene un valor para una propiedad, no aparecerá en la respuesta.
associationsUna lista separada con comas de los objetos para los que se deben obtener los ID asociados. No se devolverán en la respuesta las asociaciones especificadas que no existan. Encuentra más información sobre la API de asociaciones.
Para obtener un lote de cotizaciones específicas por sus ID, haz una solicitud POST a crm/v3/objects/quotes/batch/read e incluye los ID en el cuerpo de la solicitud. También puedes incluir una matriz de properties para especificar qué propiedades devolver. El endpoint por lotes no puede obtener asociaciones. Encuentra más información sobre cómo leer asociaciones en bloques con la API de asociaciones.
{
  "inputs": [{ "id": "342007287" }, { "id": "81204505203" }],
  "properties": ["hs_content", "hs_sentiment", "hs_submission_timestamp"]
}

Permisos

Se requieren los siguientes permisos para que una aplicación cree una cotización que sea válida para publicar:
  • crm.objects.quotes.write, crm.objects.quotes.read, crm.objects.line_items.write, crm.objects.line_items.read, crm.objects.owners.read, crm.objects.contacts.write, crm.objects.contacts.read, crm.objects.deals.write, crm.objects.deals.read, crm.objects.companies.write, crm.objects.companies.read
  • crm.schemas.quote.read, crm.schemas.line_items.read, crm.schemas.contacts.read, crm.schemas.deals.read, crm.schemas.companies.read