{ "openapi" : "3.0.1", "info" : { "title" : "Public App Crm Cards", "description" : "Allows an app to extend the CRM UI by surfacing custom cards in the sidebar of record pages. These cards are defined up-front as part of app configuration, then populated by external data fetch requests when the record page is accessed by a user.", "version" : "v3", "x-hubspot-product-tier-requirements" : { "marketing" : "FREE", "sales" : "FREE", "service" : "FREE", "cms" : "FREE", "commerce" : "FREE", "crmHub" : "FREE", "dataHub" : "FREE" }, "x-hubspot-api-use-case" : "Add a custom card to contact records that displays data from your external bug tracking software.", "x-hubspot-related-documentation" : [ { "name" : "Custom Cards Guide", "url" : "https://developers.hubspot.com/docs/guides/api/crm/extensions/crm-cards" } ], "x-hubspot-introduction" : "Create custom cards to data from external systems on CRM records. Requires a public public app. These CRM cards are different from the UI extensions you can create with projects." }, "servers" : [ { "url" : "https://api.hubapi.com" } ], "tags" : [ { "name" : "Advanced" }, { "name" : "Basic" } ], "paths" : { "/crm/v3/extensions/cards-dev/sample-response" : { "get" : { "tags" : [ "Basic" ], "summary" : "Get sample card detail response", "description" : "Returns an example card detail response. This is the payload with displayed details for a card that will be shown to a user. An app should send this in response to the data fetch request.", "operationId" : "get-/crm/v3/extensions/cards-dev/sample-response_getCardsSampleResponse", "parameters" : [ ], "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/IntegratorCardPayloadResponse" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } } } }, "/crm/v3/extensions/cards-dev/{appId}" : { "get" : { "tags" : [ "Basic" ], "summary" : "Get all cards", "description" : "Returns a list of cards for a given app.", "operationId" : "get-/crm/v3/extensions/cards-dev/{appId}_getAll", "parameters" : [ { "name" : "appId", "in" : "path", "description" : "The id of the app containing the Legacy CRM Card(s)", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int32", "example" : null } } ], "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicCardListResponse" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "developer_hapikey" : [ ] } ] }, "post" : { "tags" : [ "Basic" ], "summary" : "Create a new card", "description" : "Defines a new card that will become active on an account when this app is installed.", "operationId" : "post-/crm/v3/extensions/cards-dev/{appId}_create", "parameters" : [ { "name" : "appId", "in" : "path", "description" : "The id of the app to contain the Legacy CRM Card", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int32", "example" : null } } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/CardCreateRequest" }, "example" : null } }, "required" : true }, "responses" : { "201" : { "description" : "successful operation", "headers" : { "Location" : { "description" : "URL of the newly created resource", "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : null } } }, "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicCardResponse" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "developer_hapikey" : [ ] } ] } }, "/crm/v3/extensions/cards-dev/{appId}/views/migrate" : { "post" : { "tags" : [ "Advanced" ], "summary" : "Migrate Card In Views", "description" : "Swaps a Legacy CRM Card with an App Card in views. Reference the \"Migrate a legacy CRM card to an app card\" docs for more information", "operationId" : "post-/crm/v3/extensions/cards-dev/{appId}/views/migrate_/crm/v3/extensions/cards-dev/{appId}/views/migrate", "parameters" : [ { "name" : "appId", "in" : "path", "description" : "The id of the app containing the Legacy CRM Card", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int32", "example" : null } } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/CardMigrateViewsRequest" }, "example" : null } }, "required" : true }, "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/CardMigrateViewsResponse" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "developer_hapikey" : [ ] } ] } }, "/crm/v3/extensions/cards-dev/{appId}/{cardId}" : { "get" : { "tags" : [ "Basic" ], "summary" : "Get a card.", "description" : "Returns the definition for a card with the given ID.", "operationId" : "get-/crm/v3/extensions/cards-dev/{appId}/{cardId}_getById", "parameters" : [ { "name" : "appId", "in" : "path", "description" : "The id of the app containing the Legacy CRM Card.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int32", "example" : null } }, { "name" : "cardId", "in" : "path", "description" : "The id of the Legacy CRM Card", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : null } } ], "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicCardResponse" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "developer_hapikey" : [ ] } ] }, "delete" : { "tags" : [ "Basic" ], "summary" : "Delete a card", "description" : "Permanently deletes a card definition with the given ID. Once deleted, data fetch requests for this card will no longer be sent to your service. This can't be undone.", "operationId" : "delete-/crm/v3/extensions/cards-dev/{appId}/{cardId}_archive", "parameters" : [ { "name" : "appId", "in" : "path", "description" : "The id of the app containing the Legacy CRM Card", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int32", "example" : null } }, { "name" : "cardId", "in" : "path", "description" : "The ID of the card to delete.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : null } } ], "responses" : { "204" : { "description" : "No content", "content" : { } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "developer_hapikey" : [ ] } ] }, "patch" : { "tags" : [ "Basic" ], "summary" : "Update a card", "description" : "Update a card definition with new details.", "operationId" : "patch-/crm/v3/extensions/cards-dev/{appId}/{cardId}_update", "parameters" : [ { "name" : "appId", "in" : "path", "description" : "The id of the app containing the Legacy CRM Card.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int32", "example" : null } }, { "name" : "cardId", "in" : "path", "description" : "The id of the app containing the Legacy CRM Card", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "string", "example" : null } } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/CardPatchRequest" }, "example" : null } }, "required" : true }, "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicCardResponse" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "developer_hapikey" : [ ] } ] } } }, "components" : { "schemas" : { "ActionConfirmationBody" : { "required" : [ "cancelButtonLabel", "confirmButtonLabel", "prompt" ], "type" : "object", "properties" : { "cancelButtonLabel" : { "type" : "string", "description" : "The label for the button that cancels the action.", "example" : null }, "confirmButtonLabel" : { "type" : "string", "description" : "The label for the button that confirms the action.", "example" : null }, "prompt" : { "type" : "string", "description" : "The message displayed to the user to confirm the action.", "example" : null } }, "example" : null }, "ActionHookActionBody" : { "title" : "ACTION_HOOK", "required" : [ "httpMethod", "propertyNamesIncluded", "type", "url" ], "type" : "object", "properties" : { "confirmation" : { "$ref" : "#/components/schemas/ActionConfirmationBody" }, "httpMethod" : { "type" : "string", "description" : "The HTTP method to be used when making the call, which can be set to GET, POST, PUT, DELETE, or PATCH. If using GET or DELETE", "example" : null, "enum" : [ "CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "TRACE" ] }, "label" : { "type" : "string", "description" : "The label for this property as you'd like it displayed to users.", "example" : null }, "propertyNamesIncluded" : { "type" : "array", "description" : "A list of property names that will be included on the action. See the documentation for more information", "example" : null, "items" : { "type" : "string", "example" : null } }, "type" : { "type" : "string", "description" : "The type of status.", "example" : null, "default" : "ACTION_HOOK", "enum" : [ "ACTION_HOOK" ] }, "url" : { "type" : "string", "description" : "The URL endpoint that will be called when the action is triggered.", "example" : null } }, "example" : null, "x-hubspot-sub-type-impl" : true }, "CardActions" : { "required" : [ "baseUrls" ], "type" : "object", "properties" : { "baseUrls" : { "type" : "array", "description" : "A list of URL prefixes that will be accepted for card action URLs. If your data fetch response includes an action URL that doesn't begin with one of these values, it will result in an error and the card will not be displayed.", "example" : null, "items" : { "type" : "string", "example" : null } } }, "description" : "Configuration for custom user actions on cards.", "example" : { "baseUrls" : [ "https://www.example.com/hubspot" ] } }, "CardAuditResponse" : { "required" : [ "actionType", "applicationId", "authSource", "changedAt", "initiatingUserId", "objectTypeId" ], "type" : "object", "properties" : { "actionType" : { "type" : "string", "description" : "The type of action performed, with possible values: CREATE, DELETE, UPDATE.", "example" : null, "enum" : [ "CREATE", "DELETE", "UPDATE" ] }, "applicationId" : { "type" : "integer", "description" : "The ID of the application associated with the card.", "format" : "int32", "example" : null }, "authSource" : { "type" : "string", "description" : "The source of authentication for the action, with possible values: APP, EXTERNAL, INTERNAL.", "example" : null, "enum" : [ "APP", "EXTERNAL", "INTERNAL" ] }, "changedAt" : { "type" : "integer", "description" : "The timestamp indicating when the change occurred.", "format" : "int64", "example" : null }, "initiatingUserId" : { "type" : "integer", "description" : "The ID of the user who initiated the action.", "format" : "int32", "example" : null }, "objectTypeId" : { "type" : "integer", "description" : "The ID of the card.", "format" : "int64", "example" : null } }, "example" : null }, "CardCreateRequest" : { "required" : [ "actions", "display", "fetch", "title" ], "type" : "object", "properties" : { "actions" : { "$ref" : "#/components/schemas/CardActions" }, "display" : { "$ref" : "#/components/schemas/CardDisplayBody" }, "fetch" : { "$ref" : "#/components/schemas/CardFetchBody" }, "title" : { "type" : "string", "description" : "The top-level title for this card, displayed to users in the CRM UI. It is a string.", "example" : null } }, "description" : "State of card definition to be created", "example" : { "actions" : { "baseUrls" : [ "https://www.example.com/hubspot" ] }, "display" : { "properties" : [ { "dataType" : "STRING", "label" : "Pets Name", "name" : "pet_name" } ] }, "fetch" : { "objectTypes" : [ { "name" : "contacts", "propertiesToSend" : [ "email", "firstname" ] } ], "targetUrl" : "https://www.example.com/hubspot/target" }, "title" : "PetSpot" } }, "CardDisplayBody" : { "required" : [ "properties" ], "type" : "object", "properties" : { "properties" : { "type" : "array", "description" : "Card display properties. These will will be rendered as \"label : value\" pairs in the card UI. See the [example card](#) in the overview docs for more details.", "example" : null, "items" : { "$ref" : "#/components/schemas/CardDisplayProperty" } } }, "description" : "Configuration for displayed info on a card", "example" : null }, "CardDisplayProperty" : { "required" : [ "dataType", "label", "name", "options" ], "type" : "object", "properties" : { "dataType" : { "type" : "string", "description" : "Type of data represented by this property.", "example" : null, "enum" : [ "BOOLEAN", "CURRENCY", "DATE", "DATETIME", "EMAIL", "LINK", "NUMERIC", "STATUS", "STRING" ] }, "label" : { "type" : "string", "description" : "The label for this property as you'd like it displayed to users.", "example" : null }, "name" : { "type" : "string", "description" : "An internal identifier for this property. This value must be unique TODO.", "example" : null }, "options" : { "type" : "array", "description" : "An array of available options that can be displayed. Only used in when `dataType` is `STATUS`.", "example" : null, "items" : { "$ref" : "#/components/schemas/DisplayOption" } } }, "description" : "Definition for a card display property.", "example" : null }, "CardFetchBody" : { "required" : [ "objectTypes", "targetUrl" ], "type" : "object", "properties" : { "cardType" : { "type" : "string", "description" : "A deprecated field to determine the type of card returned.", "example" : null, "enum" : [ "EXTERNAL", "SERVERLESS" ] }, "objectTypes" : { "type" : "array", "description" : "An array of CRM object types where this card should be displayed. HubSpot will call your data fetch URL whenever a user visits a record page of the types defined here.", "example" : null, "items" : { "$ref" : "#/components/schemas/CardObjectTypeBody" } }, "serverlessFunction" : { "type" : "string", "description" : "A deprecated field to specify serverless functionality with the card", "example" : null }, "targetUrl" : { "type" : "string", "description" : "URL to a service endpoints that will respond with card details. HubSpot will call this endpoint each time a user visits a CRM record page where this card should be displayed.", "example" : null } }, "description" : "Configuration for this card's data fetch request.", "example" : null }, "CardFetchBodyPatch" : { "required" : [ "objectTypes" ], "type" : "object", "properties" : { "cardType" : { "type" : "string", "description" : "A deprecated field to determine the type of card returned.", "example" : null, "enum" : [ "EXTERNAL", "SERVERLESS" ] }, "objectTypes" : { "type" : "array", "description" : "An array of CRM object types where this card should be displayed. HubSpot will call your target URL whenever a user visits a record page of the types defined here.", "example" : null, "items" : { "$ref" : "#/components/schemas/CardObjectTypeBody" } }, "serverlessFunction" : { "type" : "string", "description" : "A deprecated field to specify serverless functionality with the card", "example" : null }, "targetUrl" : { "type" : "string", "description" : "URL to a service endpoint that will respond with details for this card. HubSpot will call this endpoint each time a user visits a CRM record page where this card should be displayed.", "example" : null } }, "description" : "Variant of CardFetchBody with fields as optional for patches", "example" : null }, "CardMigrateViewsRequest" : { "required" : [ "allowDuplicateAppCardIds", "appCardId", "legacyCrmCardId" ], "type" : "object", "properties" : { "allowDuplicateAppCardIds" : { "type" : "boolean", "description" : "Defaults to false. This allow more than one Legacy CRM Card Migration to point to the same extension card. This is prevented by default to avoid accidental consolidation of cards.", "example" : null }, "appCardId" : { "type" : "integer", "description" : "The id of the App Card to replace the Legacy CRM Card in views", "format" : "int64", "example" : null }, "helpdeskAppCardId" : { "type" : "integer", "description" : "The id of the Helpdesk App Card to replace the Legacy CRM Card in Helpdesk views. Only necessary if the Legacy CRM Card supported tickets, as then it would have been available on helpdesk views.", "format" : "int64", "example" : null }, "legacyCrmCardId" : { "type" : "integer", "description" : "The id of the Legacy CRM Card to swap", "format" : "int64", "example" : null }, "tabAppCardId" : { "type" : "integer", "format" : "int64", "example" : null } }, "example" : null }, "CardMigrateViewsResponse" : { "required" : [ "message" ], "type" : "object", "properties" : { "endedAt" : { "type" : "integer", "description" : "The timestamp for when the migration ended.", "format" : "int64", "example" : null }, "message" : { "type" : "string", "description" : "A human readable message describing the error along with remediation steps where appropriate", "example" : null }, "remainingPortalCount" : { "type" : "integer", "description" : "The number of portals that remain to be swapped from the Legacy CRM Card to the App Card", "format" : "int64", "example" : null }, "startedAt" : { "type" : "integer", "description" : "The timestamp for when the migration started.", "format" : "int64", "example" : null }, "totalPortalCount" : { "type" : "integer", "description" : "The total number of portals that have access to the Legacy CRM Card", "format" : "int64", "example" : null } }, "example" : null }, "CardObjectTypeBody" : { "required" : [ "name", "propertiesToSend" ], "type" : "object", "properties" : { "name" : { "type" : "string", "description" : "A CRM object type where this card should be displayed.", "example" : null, "enum" : [ "companies", "contacts", "deals", "marketing_events", "tickets" ] }, "propertiesToSend" : { "type" : "array", "description" : "An array of properties that should be sent to this card's target URL when the data fetch request is made. Must be valid properties for the corresponding CRM object type.", "example" : null, "items" : { "type" : "string", "example" : null } } }, "example" : null }, "CardPatchRequest" : { "type" : "object", "properties" : { "actions" : { "$ref" : "#/components/schemas/CardActions" }, "display" : { "$ref" : "#/components/schemas/CardDisplayBody" }, "fetch" : { "$ref" : "#/components/schemas/CardFetchBodyPatch" }, "title" : { "type" : "string", "description" : "The top-level title for this card. Displayed to users in the CRM UI.", "example" : null } }, "description" : "Body for a patch with optional fields", "example" : { "actions" : { "baseUrls" : [ "https://www.example.com/hubspot" ] }, "display" : { "properties" : [ { "dataType" : "STRING", "label" : "Pets Name", "name" : "pet_name" } ] }, "fetch" : { "objectTypes" : [ { "name" : "contacts", "propertiesToSend" : [ "email", "firstname" ] } ], "targetUrl" : "https://www.example.com/hubspot/target" }, "title" : "PetSpot" } }, "DisplayOption" : { "required" : [ "label", "name", "type" ], "type" : "object", "properties" : { "label" : { "type" : "string", "description" : "The text that will be displayed to users for this option.", "example" : null }, "name" : { "type" : "string", "description" : "JSON-friendly unique name for option.", "example" : null }, "type" : { "type" : "string", "description" : "The type of status.", "example" : null, "enum" : [ "DANGER", "DEFAULT", "INFO", "SUCCESS", "WARNING" ] } }, "description" : "Option definition for STATUS dataTypes.", "example" : null }, "Error" : { "required" : [ "category", "correlationId", "message" ], "type" : "object", "properties" : { "category" : { "type" : "string", "description" : "The error category", "example" : null }, "context" : { "type" : "object", "additionalProperties" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } }, "description" : "Context about the error condition", "example" : "{invalidPropertyName=[propertyValue], missingScopes=[scope1, scope2]}" }, "correlationId" : { "type" : "string", "description" : "A unique identifier for the request. Include this value with any error reports or support tickets", "format" : "uuid", "example" : "aeb5f871-7f07-4993-9211-075dc63e7cbf" }, "errors" : { "type" : "array", "description" : "further information about the error", "example" : null, "items" : { "$ref" : "#/components/schemas/ErrorDetail" } }, "links" : { "type" : "object", "additionalProperties" : { "type" : "string", "example" : null }, "description" : "A map of link names to associated URIs containing documentation about the error or recommended remediation steps", "example" : null }, "message" : { "type" : "string", "description" : "A human readable message describing the error along with remediation steps where appropriate", "example" : "An error occurred" }, "subCategory" : { "type" : "string", "description" : "A specific category that contains more specific detail about the error", "example" : null } }, "description" : "Represents an error response returned by the API when an operation fails. This component is used in various endpoints to provide detailed information about the error encountered.", "example" : { "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" } } }, "ErrorDetail" : { "required" : [ "message" ], "type" : "object", "properties" : { "code" : { "type" : "string", "description" : "The status code associated with the error detail", "example" : null }, "context" : { "type" : "object", "additionalProperties" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } }, "description" : "Context about the error condition", "example" : "{missingScopes=[scope1, scope2]}" }, "in" : { "type" : "string", "description" : "The name of the field or parameter in which the error was found.", "example" : null }, "message" : { "type" : "string", "description" : "A human readable message describing the error along with remediation steps where appropriate", "example" : null }, "subCategory" : { "type" : "string", "description" : "A specific category that contains more specific detail about the error", "example" : null } }, "description" : "Represents detailed information about an error that occurred in the API. This component is used to provide additional context and specifics about errors, typically as part of an error response.", "example" : null }, "IFrameActionBody" : { "title" : "IFRAME", "required" : [ "height", "propertyNamesIncluded", "type", "url", "width" ], "type" : "object", "properties" : { "height" : { "type" : "integer", "description" : "The height of the iframe in pixels.", "format" : "int32", "example" : null }, "label" : { "type" : "string", "description" : "The label for this property as you'd like it displayed to users.", "example" : null }, "propertyNamesIncluded" : { "type" : "array", "description" : "A list of property names that will be included on the url of the iframe.", "example" : null, "items" : { "type" : "string", "example" : null } }, "type" : { "type" : "string", "description" : "The type of status.", "example" : null, "default" : "IFRAME", "enum" : [ "IFRAME" ] }, "url" : { "type" : "string", "description" : "The URL endpoint that will be loaded in the iframe when triggered.", "example" : null }, "width" : { "type" : "integer", "description" : "The width of the iframe in pixels.", "format" : "int32", "example" : null } }, "example" : null, "x-hubspot-sub-type-impl" : true }, "IntegratorCardPayloadResponse" : { "required" : [ "totalCount" ], "type" : "object", "properties" : { "allItemsLinkUrl" : { "type" : "string", "description" : "URL to a page the integrator has built that displays all details for this card. This URL will be displayed to users under a `See more [x]` link if there are more than five items in your response, where `[x]` is the value of `itemLabel`.", "example" : null }, "cardLabel" : { "type" : "string", "description" : "The label to be used for the `allItemsLinkUrl` link (e.g. 'See more tickets'). If not provided, this falls back to the card's title.", "example" : null }, "responseVersion" : { "type" : "string", "description" : "The number version of the response.", "example" : null, "enum" : [ "v1", "v3" ] }, "sections" : { "type" : "array", "description" : "A list of up to five valid card sub categories.", "example" : null, "items" : { "$ref" : "#/components/schemas/IntegratorObjectResult" } }, "topLevelActions" : { "$ref" : "#/components/schemas/TopLevelActions" }, "totalCount" : { "type" : "integer", "description" : "The total number of card properties that will be sent in this response.", "format" : "int32", "example" : null } }, "description" : "The card details payload, sent to HubSpot by an app in response to a data fetch request when a user visits a CRM record page.", "example" : null }, "IntegratorObjectResult" : { "required" : [ "actions", "id", "title", "tokens" ], "type" : "object", "properties" : { "actions" : { "type" : "array", "description" : "A list of actions associated with the card, which can include action hooks, confirmation action hooks, or iframes.", "example" : null, "items" : { "example" : null, "oneOf" : [ { "$ref" : "#/components/schemas/ActionHookActionBody" }, { "$ref" : "#/components/schemas/IFrameActionBody" } ] } }, "id" : { "type" : "string", "description" : "The unique identifier for the card.", "example" : null }, "linkUrl" : { "type" : "string", "description" : "A URL used on the title of the card", "example" : null }, "title" : { "type" : "string", "description" : "The top-level title for this card. Displayed to users in the CRM UI.", "example" : null }, "tokens" : { "type" : "array", "description" : "A collection of tokens representing specific properties related to the card.", "example" : null, "items" : { "$ref" : "#/components/schemas/ObjectToken" } } }, "example" : null }, "ObjectToken" : { "required" : [ "value" ], "type" : "object", "properties" : { "dataType" : { "type" : "string", "description" : "Type of data represented by this property.", "example" : null, "enum" : [ "BOOLEAN", "CURRENCY", "DATE", "DATETIME", "EMAIL", "LINK", "NUMERIC", "STATUS", "STRING" ] }, "label" : { "type" : "string", "description" : "The label for this property as you'd like it displayed to users.", "example" : null }, "name" : { "type" : "string", "description" : "An internal identifier for this property. This value must be unique TODO.", "example" : null }, "value" : { "type" : "string", "description" : "The value of the property", "example" : null } }, "example" : null }, "PublicCardFetchBody" : { "required" : [ "objectTypes", "targetUrl" ], "type" : "object", "properties" : { "objectTypes" : { "type" : "array", "description" : "An array of CRM object types where this card should be displayed. HubSpot will call your target URL whenever a user visits a record page of the types defined here.", "example" : null, "items" : { "$ref" : "#/components/schemas/CardObjectTypeBody" } }, "targetUrl" : { "type" : "string", "description" : "URL to a service endpoint that will respond with details for this card. HubSpot will call this endpoint each time a user visits a CRM record page where this card should be displayed.", "example" : null } }, "example" : null }, "PublicCardListResponse" : { "required" : [ "results" ], "type" : "object", "properties" : { "results" : { "type" : "array", "description" : "A list of card responses", "example" : null, "items" : { "$ref" : "#/components/schemas/PublicCardResponse" } } }, "example" : null }, "PublicCardResponse" : { "required" : [ "actions", "auditHistory", "display", "fetch", "id", "title" ], "type" : "object", "properties" : { "actions" : { "$ref" : "#/components/schemas/CardActions" }, "auditHistory" : { "type" : "array", "description" : "A list of actions performed on the card, including creation, deletion, and updates.", "example" : null, "items" : { "$ref" : "#/components/schemas/CardAuditResponse" } }, "createdAt" : { "type" : "string", "description" : "The date and time when the card was created.", "format" : "date-time", "example" : null }, "display" : { "$ref" : "#/components/schemas/CardDisplayBody" }, "fetch" : { "$ref" : "#/components/schemas/PublicCardFetchBody" }, "id" : { "type" : "string", "description" : "The unique id of the card.", "example" : null }, "title" : { "type" : "string", "description" : "The top-level title for this card. Displayed to users in the CRM UI.", "example" : null }, "updatedAt" : { "type" : "string", "description" : "The date and time when the card was last updated.", "format" : "date-time", "example" : null } }, "example" : null }, "TopLevelActions" : { "required" : [ "secondary" ], "type" : "object", "properties" : { "primary" : { "description" : "Defines the primary action for a card, which can be either an action hook or an iframe.", "example" : null, "oneOf" : [ { "$ref" : "#/components/schemas/ActionHookActionBody" }, { "$ref" : "#/components/schemas/IFrameActionBody" } ] }, "secondary" : { "type" : "array", "description" : "Specifies a list of secondary actions for a card, each of which can be an action hook or an iframe.", "example" : null, "items" : { "example" : null, "oneOf" : [ { "$ref" : "#/components/schemas/ActionHookActionBody" }, { "$ref" : "#/components/schemas/IFrameActionBody" } ] } }, "settings" : { "$ref" : "#/components/schemas/IFrameActionBody" } }, "example" : null } }, "responses" : { "Error" : { "description" : "An error occurred.", "content" : { "*/*" : { "schema" : { "$ref" : "#/components/schemas/Error" }, "example" : null } } } }, "securitySchemes" : { "developer_hapikey" : { "type" : "apiKey", "name" : "hapikey", "in" : "query" }, "oauth2" : { "type" : "oauth2", "flows" : { "authorizationCode" : { "authorizationUrl" : "https://app.hubspot.com/oauth/authorize", "tokenUrl" : "https://api.hubapi.com/oauth/v1/token", "scopes" : { } } } }, "private_apps" : { "type" : "apiKey", "name" : "private-app", "in" : "header" }, "private_apps_legacy" : { "type" : "apiKey", "name" : "private-app-legacy", "in" : "header" } } }, "x-hubspot-available-client-libraries" : [ "Node", "Python", "Ruby", "PHP" ], "x-hubspot-product-tier-requirements" : { "marketing" : "FREE", "sales" : "FREE", "service" : "FREE", "cms" : "FREE", "commerce" : "FREE", "crmHub" : "FREE", "dataHub" : "FREE" } }