{ "openapi" : "3.0.1", "info" : { "title" : "Analytics Reporting", "description" : "Basepom for all HubSpot Projects", "version" : "2027-03-beta", "x-hubspot-product-tier-requirements" : { "marketing" : "FREE", "sales" : "FREE", "service" : "FREE", "cms" : "FREE", "commerce" : "FREE", "crmHub" : "FREE", "dataHub" : "FREE" } }, "servers" : [ { "url" : "https://api.hubapi.com" } ], "tags" : [ { "name" : "Dashboards" }, { "name" : "Reports" } ], "paths" : { "/analytics/reporting/2027-03-beta/dashboards" : { "get" : { "tags" : [ "Dashboards" ], "summary" : "Search dashboards", "description" : "Searches for and returns pages of dashboards using a variety of filters. Search is eventually-consistent; changes to dashboards may take a few seconds to reflect in search results.\n\nAlso supports retrieving pages of archived dashboards; however, the following restrictions apply: only the `limit` and `after` parameters are respected, all others are ignored; archived dashboard retrieval does not support filtering, custom sorting, or property projection. Results are always returned in order from most recently deleted to least recently deleted.", "operationId" : "get-/analytics/reporting/2027-03-beta/dashboards", "parameters" : [ { "name" : "after", "in" : "query", "description" : "A cursor token for pagination. Use the value from the previous response's paging.next.after field.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "example" : null } }, { "name" : "archived", "in" : "query", "description" : "Whether to retrieve archived dashboards only. Default false.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "boolean", "example" : null } }, { "name" : "businessUnitIds", "in" : "query", "description" : "Filter to dashboards that are a part of the specified business units.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } } }, { "name" : "createdAfter", "in" : "query", "description" : "Filter to dashboards created after the specified date and time.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date-time", "example" : null } }, { "name" : "createdBefore", "in" : "query", "description" : "Filter to dashboards created before the specified date and time.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date-time", "example" : null } }, { "name" : "ids", "in" : "query", "description" : "Filter to dashboards with the specified IDs.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } } }, { "name" : "limit", "in" : "query", "description" : "The maximum number of results to display per page. Default 25, max 100.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "integer", "format" : "int32", "example" : null } }, { "name" : "onlyFavorites", "in" : "query", "description" : "Filter to only dashboards that are favorited by the requesting user. Default false.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "boolean", "example" : null } }, { "name" : "ownerUserIds", "in" : "query", "description" : "Filter to dashboards owned by the specified users.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } } }, { "name" : "properties", "in" : "query", "description" : "Additional properties to include in the response. Valid values are: `permissions`, `tags`, `widgets`, `widgets.report`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } } }, { "name" : "q", "in" : "query", "description" : "Filter to dashboards whose name or description contains the search string.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "example" : null } }, { "name" : "sort", "in" : "query", "description" : "Sort field and direction. Supported fields are `name`, `updatedAt`, and `lastViewedAt`. Defaults to `-updatedAt`", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } } }, { "name" : "tagIds", "in" : "query", "description" : "Filter to dashboards tagged with the specified tags.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } } }, { "name" : "updatedAfter", "in" : "query", "description" : "Filter to dashboards updated after the specified date and time.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date-time", "example" : null } }, { "name" : "updatedBefore", "in" : "query", "description" : "Filter to dashboards updated before the specified date and time.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date-time", "example" : null } } ], "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/CollectionResponseWithTotalPublicDashboard" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.read" ] }, { "oauth2" : [ "reporting.full.admin" ] }, { "oauth2" : [ "crm.hubsql.execute" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } }, "post" : { "tags" : [ "Dashboards" ], "summary" : "Create dashboard", "description" : "Creates a new dashboard. Existing reports can optionally be attached to the dashboard at creation time; report widgets will be appended sequentially.\n\nAttaching reports to the dashboard is done on a best-effort basis, and it's possible that some or all reports may fail to be attached. The dashboard will still be created, and no error will be returned. The requestor should check the `widgets` field in the response object to see which reports were successfully attached.", "operationId" : "post-/analytics/reporting/2027-03-beta/dashboards", "parameters" : [ ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicDashboardCreateRequest" }, "example" : null } }, "required" : true }, "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicDashboard" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/dashboards/batch/archive" : { "post" : { "tags" : [ "Dashboards" ], "summary" : "Batch archive dashboards", "description" : "Archives one or more dashboards. Already-archived dashboards are silently ignored. The maximum batch size is 500.\n\nIf any of the requested items fail, the response code will be `207 Multi-Status` and the response will include details of individual failures.\n\nArchived dashboards are purged after 90 days.", "operationId" : "post-/analytics/reporting/2027-03-beta/dashboards/batch/archive", "parameters" : [ ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchInputString" }, "example" : null } }, "required" : true }, "responses" : { "204" : { "description" : "No content", "content" : { } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/dashboards/batch/restore" : { "post" : { "tags" : [ "Dashboards" ], "summary" : "Batch restore dashboards", "description" : "Restores one or more archived dashboards. Already-active dashboards are silently ignored. The maximum batch size is 500.\n\nIf any of the requested items fail, the response code will be `207 Multi-Status` and the response will include details of individual failures.", "operationId" : "post-/analytics/reporting/2027-03-beta/dashboards/batch/restore_/analytics/reporting/2027-03-beta/dashboards/batch/restore", "parameters" : [ ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchInputString" }, "example" : null } }, "required" : true }, "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchResponsePublicDashboard" }, "example" : null } } }, "207" : { "description" : "multiple statuses", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchResponsePublicDashboardWithErrors" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/dashboards/owners/batch/update" : { "post" : { "tags" : [ "Dashboards" ], "summary" : "Batch update dashboard owners", "description" : "Updates the owner of one or more dashboards. The maximum batch size is 500.\n\nIf any of the requested items fail, the response code will be `207 Multi-Status` and the response will include details of individual failures.", "operationId" : "post-/analytics/reporting/2027-03-beta/dashboards/owners/batch/update_/analytics/reporting/2027-03-beta/dashboards/owners/batch/update", "parameters" : [ ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchInputWithOwnerId" }, "example" : null } }, "required" : true }, "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchResponsePublicDashboard" }, "example" : null } } }, "207" : { "description" : "multiple statuses", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchResponsePublicDashboardWithErrors" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/dashboards/permissions/batch/update" : { "post" : { "tags" : [ "Dashboards" ], "summary" : "Batch update dashboard permissions", "description" : "Updates the permissions for one or more dashboards. The maximum batch size is 500.\n\nIf any of the requested items fail, the response code will be `207 Multi-Status` and the response will include details of individual failures.", "operationId" : "post-/analytics/reporting/2027-03-beta/dashboards/permissions/batch/update_/analytics/reporting/2027-03-beta/dashboards/permissions/batch/update", "parameters" : [ ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchInputWithDashboardPermissions" }, "example" : null } }, "required" : true }, "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchResponsePublicDashboard" }, "example" : null } } }, "207" : { "description" : "multiple statuses", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchResponsePublicDashboardWithErrors" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/dashboards/{dashboardId}" : { "get" : { "tags" : [ "Dashboards" ], "summary" : "Get dashboard", "description" : "Retrieves a single dashboard.\n\nAlso supports retrieving archived dashboards via the `archived` query parameter. Retrieving archived dashboards requires the requesting user to be the dashboard owner, a reporting admin, or a super admin.", "operationId" : "get-/analytics/reporting/2027-03-beta/dashboards/{dashboardId}", "parameters" : [ { "name" : "dashboardId", "in" : "path", "description" : "The ID of the dashboard to retrieve.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int64", "example" : null } }, { "name" : "archived", "in" : "query", "description" : "Whether to retrieve an archived dashboard instead of an active one. Default false.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "boolean", "example" : null, "default" : false } }, { "name" : "properties", "in" : "query", "description" : "Additional properties to include in the response. Valid values are: `permissions`, `tags`, `widgets`, `widgets.report`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } } } ], "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicDashboard" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.read" ] }, { "oauth2" : [ "reporting.full.admin" ] }, { "oauth2" : [ "crm.hubsql.execute" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } }, "patch" : { "tags" : [ "Dashboards" ], "summary" : "Update dashboard", "description" : "Partially updates a dashboard. All fields in the request are optional; only the fields which are present will be updated.\n\nCan also be used to archive or restore a dashboard using the `archived` field. When `archived` is present in a request, it must be the only field present, or it will result in an error. Archived dashboards are purged after 90 days.", "operationId" : "patch-/analytics/reporting/2027-03-beta/dashboards/{dashboardId}_/analytics/reporting/2027-03-beta/dashboards/{dashboardId}", "parameters" : [ { "name" : "dashboardId", "in" : "path", "description" : "The ID of the dashboard to update.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int64", "example" : null } } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicDashboardUpdateRequest" }, "example" : null } }, "required" : true }, "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicDashboard" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.edit" ] }, { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/dashboards/{dashboardId}/batch/widgets" : { "post" : { "tags" : [ "Dashboards" ], "summary" : "Batch add reports to dashboard", "description" : "Adds one or more reports to a dashboard. Report widgets are appended to the end of the existing dashboard layout. Any reports which are already on the dashboard, don't exist, or the requesting user doesn't have permissions for are skipped. Check the dashboard in the response to determine which reports were successfully added.\n\nDashboards cannot have more than 50 reports on them; attempting to add beyond that limit will fail.", "operationId" : "post-/analytics/reporting/2027-03-beta/dashboards/{dashboardId}/batch/widgets", "parameters" : [ { "name" : "dashboardId", "in" : "path", "description" : "The ID of the dashboard to add reports to.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int64", "example" : null } } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchInputString" }, "example" : null } }, "required" : true }, "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicDashboard" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.edit" ] }, { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/dashboards/{dashboardId}/clone" : { "post" : { "tags" : [ "Dashboards" ], "summary" : "Clone dashboard", "description" : "Clones an existing dashboard. The cloned dashboard may either retain references to the reports on the original dashboard, or clone the original's reports and reference the clones.", "operationId" : "post-/analytics/reporting/2027-03-beta/dashboards/{dashboardId}/clone", "parameters" : [ { "name" : "dashboardId", "in" : "path", "description" : "The ID of the dashboard to clone.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int64", "example" : null } } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicDashboardCloneRequest" }, "example" : null } }, "required" : true }, "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicDashboard" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/dashboards/{dashboardId}/export" : { "post" : { "tags" : [ "Dashboards" ], "summary" : "Export dashboard", "description" : "Exports a dashboard's content to one or more HubSpot users via standard HubSpot communication channels (notably, email).\n\nStatus tracking is not available; a successful request will result in a `204 No Content` response.\n\nAny set of HubSpot users can be specified as the recipients. However, if a given user does not have access to reporting, does not have CRM export permissions, etc., then they will receive a notification with an error rather than a successful export.\n\n**NOTE: This API can only be called from apps with user-level access.** Attempting to call from an app with account-level access (including legacy apps) will fail, because only real users can request exports.", "operationId" : "post-/analytics/reporting/2027-03-beta/dashboards/{dashboardId}/export", "parameters" : [ { "name" : "dashboardId", "in" : "path", "description" : "The ID of the dashboard to export.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int64", "example" : null } } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicDashboardExportRequest" }, "example" : null } }, "required" : true }, "responses" : { "204" : { "description" : "No content", "content" : { } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.read" ] }, { "oauth2" : [ "reporting.full.admin" ] }, { "oauth2" : [ "crm.hubsql.execute" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/dashboards/{dashboardId}/widgets/{reportId}" : { "put" : { "tags" : [ "Dashboards" ], "summary" : "Add report to dashboard", "description" : "Adds a single report to a dashboard. The report widget is appended to the end of the existing dashboard layout. If the report is already on the dashboard, does not exist, or the requesting user doesn't have permission to access it, does nothing. Check the dashboard in the response to determine whether the report was successfully added.\n\nDashboards cannot have more than 50 reports on them; attempting to add beyond that limit will fail.", "operationId" : "put-/analytics/reporting/2027-03-beta/dashboards/{dashboardId}/widgets/{reportId}", "parameters" : [ { "name" : "dashboardId", "in" : "path", "description" : "The ID of the dashboard to modify", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int64", "example" : null } }, { "name" : "reportId", "in" : "path", "description" : "The ID of the report to add to the dashboard.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int64", "example" : null } } ], "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicDashboard" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.edit" ] }, { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } }, "delete" : { "tags" : [ "Dashboards" ], "summary" : "Remove report from dashboard", "description" : "Removes a single report from a dashboard.", "operationId" : "delete-/analytics/reporting/2027-03-beta/dashboards/{dashboardId}/widgets/{reportId}", "parameters" : [ { "name" : "dashboardId", "in" : "path", "description" : "The ID of the dashboard to modify.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int64", "example" : null } }, { "name" : "reportId", "in" : "path", "description" : "The ID of the report to remove from the dashboard.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int64", "example" : null } } ], "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicDashboard" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.edit" ] }, { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/reports" : { "get" : { "tags" : [ "Reports" ], "summary" : "Search reports", "description" : "Searches for and returns pages of reports using a variety of filters. Search is eventually-consistent; changes to dashboards may take a few seconds to reflect in search results.\n\nAlso supports retrieving pages of archived reports; however, the following restrictions apply: only the `limit` and `after` parameters are respected, all others are ignored; archived report retrieval does not support filtering, custom sorting, or property projection. Results are always returned in order from most recently deleted to least recently deleted.", "operationId" : "get-/analytics/reporting/2027-03-beta/reports", "parameters" : [ { "name" : "after", "in" : "query", "description" : "A cursor token for pagination. Use the value from the previous response's paging.next.after field.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "example" : null } }, { "name" : "archived", "in" : "query", "description" : "Whether to retrieve archived reports only. Default false.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "boolean", "example" : null } }, { "name" : "businessUnitIds", "in" : "query", "description" : "Filter to reports that are a part of the specified business units.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } } }, { "name" : "createdAfter", "in" : "query", "description" : "Filter to reports created after a specific date and time.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date-time", "example" : null } }, { "name" : "createdBefore", "in" : "query", "description" : "Filter to reports created before a specific date and time.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date-time", "example" : null } }, { "name" : "dashboardId", "in" : "query", "description" : "Filter to reports on the specified dashboard.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "example" : null } }, { "name" : "ids", "in" : "query", "description" : "Filter to reports with the specified IDs.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } } }, { "name" : "limit", "in" : "query", "description" : "The maximum number of results to display per page. Default 25, max 100.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "integer", "format" : "int32", "example" : null } }, { "name" : "onDashboard", "in" : "query", "description" : "Filter to reports that are on, or not on, any dashboard. Unset by default.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "boolean", "example" : null } }, { "name" : "onlyFavorites", "in" : "query", "description" : "Filter to only reports that are favorited by the requesting user. Default false.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "boolean", "example" : null } }, { "name" : "ownerUserIds", "in" : "query", "description" : "Filter to reports owned by the specified users.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } } }, { "name" : "properties", "in" : "query", "description" : "Additional properties to include in the response. Valid values are: `dashboardIds`, `permissions`, `tags`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } } }, { "name" : "q", "in" : "query", "description" : "Filter to reports whose name or description contains the search string.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "example" : null } }, { "name" : "sort", "in" : "query", "description" : "Sort field and direction. Supported fields are `name`, `updatedAt`, and `lastViewedAt`. Defaults to `-updatedAt`", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } } }, { "name" : "tagIds", "in" : "query", "description" : "Filter to reports tagged with the specified tags.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } } }, { "name" : "updatedAfter", "in" : "query", "description" : "Filter to reports updated after a specific date and time.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date-time", "example" : null } }, { "name" : "updatedBefore", "in" : "query", "description" : "Filter to reports updated before a specific date and time.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "string", "format" : "date-time", "example" : null } } ], "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/CollectionResponseWithTotalPublicReport" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.read" ] }, { "oauth2" : [ "reporting.full.admin" ] }, { "oauth2" : [ "crm.hubsql.execute" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/reports/batch/archive" : { "post" : { "tags" : [ "Reports" ], "summary" : "Batch archive reports", "description" : "Archives one or more reports. Already-archived reports are silently ignored. The maximum batch size is 500.\n\nIf any of the requested items fail, the response code will be `207 Multi-Status` and the response will include details of individual failures.\n\nArchived reports are purged after 90 days.", "operationId" : "post-/analytics/reporting/2027-03-beta/reports/batch/archive", "parameters" : [ ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchInputString" }, "example" : null } }, "required" : true }, "responses" : { "204" : { "description" : "No content", "content" : { } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/reports/batch/restore" : { "post" : { "tags" : [ "Reports" ], "summary" : "Batch restore reports", "description" : "Restores one or more archived reports. Already-active reports are silently ignored. The maximum batch size is 500.\n\nIf any of the requested items fail, the response code will be `207 Multi-Status` and the response will include details of individual failures.", "operationId" : "post-/analytics/reporting/2027-03-beta/reports/batch/restore_/analytics/reporting/2027-03-beta/reports/batch/restore", "parameters" : [ ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchInputString" }, "example" : null } }, "required" : true }, "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchResponsePublicReport" }, "example" : null } } }, "207" : { "description" : "multiple statuses", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchResponsePublicReportWithErrors" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/reports/owners/batch/update" : { "post" : { "tags" : [ "Reports" ], "summary" : "Batch update report owners", "description" : "Updates the owner of one or more reports. The maximum batch size is 500.\n\nIf any of the requested items fail, the response code will be `207 Multi-Status` and the response will include details of individual failures.", "operationId" : "post-/analytics/reporting/2027-03-beta/reports/owners/batch/update_/analytics/reporting/2027-03-beta/reports/owners/batch/update", "parameters" : [ ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchInputWithOwnerId" }, "example" : null } }, "required" : true }, "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchResponsePublicReport" }, "example" : null } } }, "207" : { "description" : "multiple statuses", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchResponsePublicReportWithErrors" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/reports/permissions/batch/update" : { "post" : { "tags" : [ "Reports" ], "summary" : "Batch update report permissions", "description" : "Updates the permissions for one or more reports. The maximum batch size is 500.\n\nIf any of the requested items fail, the response code will be `207 Multi-Status` and the response will include details of individual failures.\n\nNote that reports on any dashboards cannot have their permissions updated; they inherit the dashboards' permissions. Attempting to update them will result in an error.", "operationId" : "post-/analytics/reporting/2027-03-beta/reports/permissions/batch/update_/analytics/reporting/2027-03-beta/reports/permissions/batch/update", "parameters" : [ ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchInputWithReportPermissions" }, "example" : null } }, "required" : true }, "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchResponsePublicReport" }, "example" : null } } }, "207" : { "description" : "multiple statuses", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/BatchResponsePublicReportWithErrors" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/reports/{reportId}" : { "get" : { "tags" : [ "Reports" ], "summary" : "Get report", "description" : "Retrieves a single report.\n\nAlso supports retrieving archived reports via the `archived` query parameter. Retrieving archived reports requires the requesting user to be the report owner, a reporting admin, or a super admin.", "operationId" : "get-/analytics/reporting/2027-03-beta/reports/{reportId}", "parameters" : [ { "name" : "reportId", "in" : "path", "description" : "The ID of the report to retrieve.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int64", "example" : null } }, { "name" : "archived", "in" : "query", "description" : "Whether to retrieve an archived dashboard instead of an active one. Default false.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "boolean", "example" : null, "default" : false } }, { "name" : "properties", "in" : "query", "description" : "Additional properties to include in the response. Valid values are: `dashboardIds`, `permissions`, `tags`.", "required" : false, "style" : "form", "explode" : true, "schema" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } } } ], "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicReport" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.read" ] }, { "oauth2" : [ "reporting.full.admin" ] }, { "oauth2" : [ "crm.hubsql.execute" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } }, "patch" : { "tags" : [ "Reports" ], "summary" : "Update report", "description" : "Partially updates a report. All fields in the request are optional; only the fields which are present will be updated.\n\nCan also be used to archive or restore a report using the `archived` field. When `archived` is present in a request, it must be the only field present, or it will result in an error. Archived reports are purged after 90 days.\n\nNote that reports on any dashboards cannot have their permissions updated; they inherit the dashboards' permissions. Attempting to update them will result in an error.", "operationId" : "patch-/analytics/reporting/2027-03-beta/reports/{reportId}_/analytics/reporting/2027-03-beta/reports/{reportId}", "parameters" : [ { "name" : "reportId", "in" : "path", "description" : "The ID of the report to update.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int64", "example" : null } } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicReportUpdateRequest" }, "example" : null } }, "required" : true }, "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicReport" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.edit" ] }, { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/reports/{reportId}/clone" : { "post" : { "tags" : [ "Reports" ], "summary" : "Clone report", "description" : "Clones an existing report.", "operationId" : "post-/analytics/reporting/2027-03-beta/reports/{reportId}/clone_/analytics/reporting/2027-03-beta/reports/{reportId}/clone", "parameters" : [ { "name" : "reportId", "in" : "path", "description" : "The ID of the report to clone.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int64", "example" : null } } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicReportCloneRequest" }, "example" : null } }, "required" : true }, "responses" : { "200" : { "description" : "successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicReport" }, "example" : null } } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.write" ] }, { "oauth2" : [ "reporting.full.admin" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } }, "/analytics/reporting/2027-03-beta/reports/{reportId}/export" : { "post" : { "tags" : [ "Reports" ], "summary" : "Export report", "description" : "Exports a report to one or more HubSpot users via standard HubSpot communication channels (notably, email).\n\nStatus tracking is not available; a successful request will result in a `204 No Content` response.\n\nAny set of HubSpot users can be specified as the recipients. However, if a given user does not have access to reporting, does not have CRM export permissions, etc., then they will receive a notification with an error rather than a successful export.\n\n**NOTE: This API can only be called from apps with user-level access.** Attempting to call from an app with account-level access (including legacy apps) will fail, because only real users can request exports.", "operationId" : "post-/analytics/reporting/2027-03-beta/reports/{reportId}/export", "parameters" : [ { "name" : "reportId", "in" : "path", "description" : "The ID of the report to export.", "required" : true, "style" : "simple", "explode" : false, "schema" : { "type" : "integer", "format" : "int64", "example" : null } } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/PublicReportExportRequest" }, "example" : null } }, "required" : true }, "responses" : { "204" : { "description" : "No content", "content" : { } }, "default" : { "description" : "", "$ref" : "#/components/responses/Error" } }, "security" : [ { "oauth2" : [ "reporting.full.read" ] }, { "oauth2" : [ "reporting.full.admin" ] }, { "oauth2" : [ "crm.hubsql.execute" ] } ], "x-hubspot-user-level-auth" : { "internalOnly" : false } } } }, "components" : { "schemas" : { "BatchInputString" : { "required" : [ "inputs" ], "type" : "object", "properties" : { "inputs" : { "type" : "array", "description" : "Array of report or dashboard IDs.", "example" : null, "items" : { "type" : "string", "example" : null } } }, "example" : null }, "BatchInputWithDashboardPermissions" : { "required" : [ "inputs", "permissions" ], "type" : "object", "properties" : { "inputs" : { "type" : "array", "description" : "Array of dashboard IDs.", "example" : null, "items" : { "type" : "string", "example" : null } }, "permissions" : { "$ref" : "#/components/schemas/PublicDashboardPermissions" } }, "example" : null }, "BatchInputWithOwnerId" : { "required" : [ "inputs", "ownerId" ], "type" : "object", "properties" : { "inputs" : { "type" : "array", "description" : "Array of report or dashboard IDs.", "example" : null, "items" : { "type" : "string", "example" : null } }, "ownerId" : { "type" : "string", "description" : "The ID of the user to change the owner to.", "example" : null } }, "example" : null }, "BatchInputWithReportPermissions" : { "required" : [ "inputs", "permissions" ], "type" : "object", "properties" : { "inputs" : { "type" : "array", "description" : "Array of report IDs.", "example" : null, "items" : { "type" : "string", "example" : null } }, "permissions" : { "$ref" : "#/components/schemas/PublicReportPermissions" } }, "example" : null }, "BatchResponsePublicDashboard" : { "required" : [ "completedAt", "results", "startedAt", "status" ], "type" : "object", "properties" : { "completedAt" : { "type" : "string", "description" : "The date and time when the batch operation was completed, in ISO 8601 format.", "format" : "date-time", "example" : null }, "links" : { "type" : "object", "additionalProperties" : { "type" : "string", "example" : null }, "description" : "A map of link names to associated URIs, providing additional information related to the batch operation.", "example" : null }, "requestedAt" : { "type" : "string", "description" : "The date and time when the batch operation was requested, in ISO 8601 format.", "format" : "date-time", "example" : null }, "results" : { "type" : "array", "description" : "An array of dashboard objects representing the successful results of the batch operation.", "example" : null, "items" : { "$ref" : "#/components/schemas/PublicDashboard" } }, "startedAt" : { "type" : "string", "description" : "The date and time when the batch operation started, in ISO 8601 format.", "format" : "date-time", "example" : null }, "status" : { "type" : "string", "description" : "The current status of the batch operation. Valid values include 'PENDING', 'PROCESSING', 'CANCELED', and 'COMPLETE'.", "example" : null, "enum" : [ "CANCELED", "COMPLETE", "PENDING", "PROCESSING" ] } }, "example" : null }, "BatchResponsePublicDashboardWithErrors" : { "required" : [ "completedAt", "results", "startedAt", "status" ], "type" : "object", "properties" : { "completedAt" : { "type" : "string", "description" : "The date and time when the batch operation was completed, in ISO 8601 format.", "format" : "date-time", "example" : null }, "errors" : { "type" : "array", "description" : "An array of error objects detailing any errors that occurred during the batch operation.", "example" : null, "items" : { "$ref" : "#/components/schemas/StandardError" } }, "links" : { "type" : "object", "additionalProperties" : { "type" : "string", "example" : null }, "description" : "A map of link names to associated URIs, providing additional information related to the batch operation.", "example" : null }, "numErrors" : { "type" : "integer", "description" : "The number of errors encountered during the batch operation.", "format" : "int32", "example" : null }, "requestedAt" : { "type" : "string", "description" : "The date and time when the batch operation was requested, in ISO 8601 format.", "format" : "date-time", "example" : null }, "results" : { "type" : "array", "description" : "An array of dashboard objects representing the successful results of the batch operation.", "example" : null, "items" : { "$ref" : "#/components/schemas/PublicDashboard" } }, "startedAt" : { "type" : "string", "description" : "The date and time when the batch operation started, in ISO 8601 format.", "format" : "date-time", "example" : null }, "status" : { "type" : "string", "description" : "The current status of the batch operation. Valid values include 'PENDING', 'PROCESSING', 'CANCELED', and 'COMPLETE'.", "example" : null, "enum" : [ "CANCELED", "COMPLETE", "PENDING", "PROCESSING" ] } }, "example" : null }, "BatchResponsePublicReport" : { "required" : [ "completedAt", "results", "startedAt", "status" ], "type" : "object", "properties" : { "completedAt" : { "type" : "string", "description" : "The date and time when the batch operation was completed, in ISO 8601 format.", "format" : "date-time", "example" : null }, "links" : { "type" : "object", "additionalProperties" : { "type" : "string", "example" : null }, "description" : "A map of link names to associated URIs, providing additional resources or documentation related to the batch operation.", "example" : null }, "requestedAt" : { "type" : "string", "description" : "The date and time when the batch operation was requested, in ISO 8601 format.", "format" : "date-time", "example" : null }, "results" : { "type" : "array", "description" : "An array of report objects representing the successful results of the batch operation.", "example" : null, "items" : { "$ref" : "#/components/schemas/PublicReport" } }, "startedAt" : { "type" : "string", "description" : "The date and time when the batch operation started, in ISO 8601 format.", "format" : "date-time", "example" : null }, "status" : { "type" : "string", "description" : "The current status of the batch operation. Valid values include 'PENDING', 'PROCESSING', 'CANCELED', and 'COMPLETE'.", "example" : null, "enum" : [ "CANCELED", "COMPLETE", "PENDING", "PROCESSING" ] } }, "example" : null }, "BatchResponsePublicReportWithErrors" : { "required" : [ "completedAt", "results", "startedAt", "status" ], "type" : "object", "properties" : { "completedAt" : { "type" : "string", "description" : "The date and time when the batch operation was completed, in ISO 8601 format.", "format" : "date-time", "example" : null }, "errors" : { "type" : "array", "description" : "An array of error objects detailing any errors that occurred during the batch operation.", "example" : null, "items" : { "$ref" : "#/components/schemas/StandardError" } }, "links" : { "type" : "object", "additionalProperties" : { "type" : "string", "example" : null }, "description" : "A map of link names to associated URIs that provide additional information or actions related to the batch operation.", "example" : null }, "numErrors" : { "type" : "integer", "description" : "The number of errors encountered during the batch operation.", "format" : "int32", "example" : null }, "requestedAt" : { "type" : "string", "description" : "The date and time when the batch operation was requested, in ISO 8601 format.", "format" : "date-time", "example" : null }, "results" : { "type" : "array", "description" : "An array of report objects representing the successful results of the batch operation.", "example" : null, "items" : { "$ref" : "#/components/schemas/PublicReport" } }, "startedAt" : { "type" : "string", "description" : "The date and time when the batch operation started, in ISO 8601 format.", "format" : "date-time", "example" : null }, "status" : { "type" : "string", "description" : "The current status of the batch operation. Valid values include 'PENDING', 'PROCESSING', 'CANCELED', and 'COMPLETE'.", "example" : null, "enum" : [ "CANCELED", "COMPLETE", "PENDING", "PROCESSING" ] } }, "example" : null }, "CollectionResponseWithTotalPublicDashboard" : { "required" : [ "results", "total" ], "type" : "object", "properties" : { "paging" : { "$ref" : "#/components/schemas/Paging" }, "results" : { "type" : "array", "description" : "An array of dashboards objects.", "example" : null, "items" : { "$ref" : "#/components/schemas/PublicDashboard" } }, "total" : { "type" : "integer", "description" : "The total number of dashboards available.", "format" : "int32", "example" : null } }, "example" : null }, "CollectionResponseWithTotalPublicReport" : { "required" : [ "results", "total" ], "type" : "object", "properties" : { "paging" : { "$ref" : "#/components/schemas/Paging" }, "results" : { "type" : "array", "description" : "An array of report objects.", "example" : null, "items" : { "$ref" : "#/components/schemas/PublicReport" } }, "total" : { "type" : "integer", "description" : "The total number of reports available.", "format" : "int32", "example" : null } }, "example" : null }, "Error" : { "required" : [ "category", "correlationId", "message" ], "type" : "object", "properties" : { "category" : { "type" : "string", "description" : "The error category, represented as a string.", "example" : null }, "context" : { "type" : "object", "additionalProperties" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } }, "description" : "An object providing context about the error condition, with additional properties as arrays of strings.", "example" : "{invalidPropertyName=[propertyValue], missingScopes=[scope1, scope2]}" }, "correlationId" : { "type" : "string", "description" : "A unique identifier for the request, used for tracking and support purposes. It is a string formatted as a UUID.", "format" : "uuid", "example" : "aeb5f871-7f07-4993-9211-075dc63e7cbf" }, "errors" : { "type" : "array", "description" : "An array containing further information about the error, with each item being an ErrorDetail object.", "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. It is an object with string properties.", "example" : null }, "message" : { "type" : "string", "description" : "A human readable message describing the error along with remediation steps where appropriate. It is a string.", "example" : "An error occurred" }, "subCategory" : { "type" : "string", "description" : "A specific category providing more detailed information about the error. It is a string.", "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, represented as an object with additional properties that are arrays of strings.", "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 }, "NextPage" : { "required" : [ "after" ], "type" : "object", "properties" : { "after" : { "type" : "string", "description" : "A string token representing the cursor for the next page of results.", "example" : null }, "link" : { "type" : "string", "description" : "A string URL that links to the next page of results.", "example" : null } }, "description" : "Specifies the paging information needed to retrieve the next set of results in a paginated API response", "example" : null }, "Paging" : { "type" : "object", "properties" : { "next" : { "$ref" : "#/components/schemas/NextPage" }, "prev" : { "$ref" : "#/components/schemas/PreviousPage" } }, "description" : "Represents the pagination information for navigating through a list of results in the API. It provides details on how to access the previous or next set of results.", "example" : null }, "PreviousPage" : { "required" : [ "before" ], "type" : "object", "properties" : { "before" : { "type" : "string", "description" : "A string token representing the cursor for the previous page of results.", "example" : null }, "link" : { "type" : "string", "description" : "A string URL that links to the previous page of results.", "example" : null } }, "description" : "specifies the paging information needed to retrieve the previous set of results in a paginated API response", "example" : null }, "PublicDashboard" : { "required" : [ "archived", "businessUnitId", "createdAt", "id", "name", "updatedAt" ], "type" : "object", "properties" : { "archived" : { "type" : "boolean", "description" : "Whether the dashboard is archived.", "example" : null }, "archivedAt" : { "type" : "string", "description" : "If the dashboard is archived, the date and time when the dashboard was archived, in ISO 8601 format. Absent if the dashboard is not archived.", "format" : "date-time", "example" : null }, "businessUnitId" : { "type" : "string", "description" : "The ID of the business unit that the dashboard is associated with.", "example" : null }, "createdAt" : { "type" : "string", "description" : "The date and time when the dashboard was created, in ISO 8601 format.", "format" : "date-time", "example" : null }, "createdByUserId" : { "type" : "string", "description" : "The ID of the user who created the dashboard. May be absent.", "example" : null }, "description" : { "type" : "string", "description" : "A description of the dashboard. May be absent.", "example" : null }, "id" : { "type" : "string", "description" : "The ID of the dashboard.", "example" : null }, "lastViewedAt" : { "type" : "string", "description" : "The date and time when the dashboard was last viewed, in ISO 8601 format. Absent if it has not been viewed yet.", "format" : "date-time", "example" : null }, "lastViewedByUserId" : { "type" : "string", "description" : "The ID of the user who last viewed the dashboard. Absent if it has not been viewed yet.", "example" : null }, "name" : { "type" : "string", "description" : "The name of the dashboard.", "example" : null }, "ownerUserId" : { "type" : "string", "description" : "The ID of the user who owns the dashboard. Absent if the dashboard is currently unowned.", "example" : null }, "permissions" : { "$ref" : "#/components/schemas/PublicDashboardPermissions" }, "tags" : { "type" : "array", "description" : "Array of objects representing the tags that the dashboard is tagged with.\n\nFor GET endpoints, only returned when requested by including the `tags` field in the `properties` query parameter. For other endpoints, returned when applicable.", "example" : null, "items" : { "$ref" : "#/components/schemas/PublicTag" } }, "updatedAt" : { "type" : "string", "description" : "The date and time when the dashboard was last updated, in ISO 8601 format.", "format" : "date-time", "example" : null }, "updatedByUserId" : { "type" : "string", "description" : "The ID of the user who last updated the dashboard. May be absent.", "example" : null }, "widgets" : { "type" : "array", "description" : "An array of objects representing the widgets on the dashboard.\n\nFor GET endpoints, only returned when requested by including the `widgets` field in the `properties` query parameter. For other endpoints, returned when applicable.", "example" : null, "items" : { "$ref" : "#/components/schemas/PublicDashboardWidget" } } }, "example" : null }, "PublicDashboardCloneRequest" : { "required" : [ "cloneReports", "name", "permissions" ], "type" : "object", "properties" : { "cloneReports" : { "type" : "boolean", "description" : "Whether to create clones of the reports from the original dashboard to use on the cloned dashboard (`true`), or reference the same report objects as the original dashboard (`false`). Optional, defaults to `true`.", "example" : null }, "name" : { "type" : "string", "description" : "The name of the cloned dashboard.", "example" : null }, "permissions" : { "$ref" : "#/components/schemas/PublicDashboardPermissions" } }, "example" : null }, "PublicDashboardCreateRequest" : { "required" : [ "name", "permissions" ], "type" : "object", "properties" : { "businessUnitId" : { "type" : "string", "description" : "The ID of the business unit to associate the new dashboard with. Optional, the account's default is used by default.", "example" : null }, "description" : { "type" : "string", "description" : "A description of the new dashboard. Optional.", "example" : null }, "name" : { "type" : "string", "description" : "The name of the new dashboard.", "example" : null }, "permissions" : { "$ref" : "#/components/schemas/PublicDashboardPermissions" }, "reportIdsToAdd" : { "type" : "array", "description" : "Array of IDs of reports that should be added to the dashboard after creation. Optional.", "example" : null, "items" : { "type" : "string", "example" : null } } }, "example" : null }, "PublicDashboardExportRequest" : { "required" : [ "exportType" ], "type" : "object", "properties" : { "exportType" : { "type" : "string", "description" : "The type of export to perform. Valid values are:\n- `SCREENSHOT`: Individual report screenshots.\n- `PDF`: PDF with individual report screenshots.\n- `PPTX` PPTX with individual report screenshots.\n- `ZIP`: ZIP of individual report screenshots.\n- `CSV`: ZIP with one or more CSV files per report.\n- `XLS`: ZIP with one or more XLS files per report.\n- `XLSX: ZIP with one or more XLSX files per report.", "example" : null, "enum" : [ "CSV", "PDF", "PPTX", "SCREENSHOT", "XLS", "XLSX", "ZIP" ] }, "message" : { "type" : "string", "description" : "The message to include with the export. Optional, empty by default.", "example" : null }, "recipientUserIds" : { "type" : "array", "description" : "Array of user IDs to send the export to. If absent or empty, the requesting user is used as the sole recipient; otherwise, this exact set of users is used.", "example" : null, "items" : { "type" : "string", "example" : null } }, "reportIds" : { "type" : "array", "description" : "Array of IDs of reports to optionally narrow the export to. IDs of reports that are not on the dashboard are ignored. If absent or empty, all reports on the dashboard are included.", "example" : null, "items" : { "type" : "string", "example" : null } }, "subject" : { "type" : "string", "description" : "The subject line to use for the export. If absent, the name of the requested report will be used. Max length of 100 characters.", "example" : null } }, "example" : null }, "PublicDashboardPermissions" : { "required" : [ "permissionType" ], "type" : "object", "properties" : { "permissionType" : { "type" : "string", "description" : "The type of permission to apply to the report. Valid values are:\n- PRIVATE: The report is only accessible to its owner and administrators.\n- EVERYONE_VIEW: The report is viewable by everyone.\n- EVERYONE_EDIT: The report is viewable and editable by everyone.\n- SPECIFIC: In addition to the owner, specific users and/or teams are granted VIEW or EDIT permissions. The `specificPermissions` field must also be present.", "example" : null, "enum" : [ "EVERYONE_EDIT", "EVERYONE_VIEW", "PRIVATE", "SPECIFIC" ] }, "specificPermissions" : { "type" : "array", "description" : "Array of specific permission grants. Must be present when `permissionType` is set to `SPECIFIC`, ignored otherwise.\n\nDashboards can have one or two specific permission configurations: one for VIEW grants and/or one for EDIT grants. Specific users and/or teams receive either VIEW or EDIT permissions based on which configuration they appear in. A given user or team cannot appear in both VIEW and EDIT configurations.", "example" : null, "items" : { "$ref" : "#/components/schemas/PublicSpecificPermissionConfig" } } }, "example" : null }, "PublicDashboardUpdateRequest" : { "type" : "object", "properties" : { "archived" : { "type" : "boolean", "description" : "Whether to archive (`true`) or restore (`false`) the dashboard. Cannot be combined with any other fields.", "example" : null }, "businessUnitId" : { "type" : "object", "properties" : { }, "description" : "The new business unit ID to use for the dashboard. Set to `null` to reset to the account's default business unit. Omit to leave unchanged.", "example" : null }, "description" : { "type" : "object", "properties" : { }, "description" : "The new description to use for the dashboard. Set to `null` to clear the description. Omit to leave unchanged.", "example" : null }, "name" : { "type" : "string", "description" : "The new name to use for the dashboard. Omit to leave unchanged.", "example" : null }, "ownerUserId" : { "type" : "string", "description" : "The ID of the user to change the dashboard's owner to. Omit to leave unchanged.", "example" : null }, "permissions" : { "$ref" : "#/components/schemas/PublicDashboardPermissions" } }, "example" : null }, "PublicDashboardWidget" : { "required" : [ "reportId", "widgetLayout" ], "type" : "object", "properties" : { "report" : { "$ref" : "#/components/schemas/PublicReport" }, "reportId" : { "type" : "string", "description" : "The ID of the report the widget contains.", "example" : null }, "widgetLayout" : { "$ref" : "#/components/schemas/PublicDashboardWidgetLayout" } }, "example" : null }, "PublicDashboardWidgetLayout" : { "required" : [ "height", "width", "x", "y" ], "type" : "object", "properties" : { "height" : { "type" : "integer", "description" : "The height of the widget in the dashboard grid.", "format" : "int32", "example" : null }, "width" : { "type" : "integer", "description" : "The width of the widget in the dashboard grid.", "format" : "int32", "example" : null }, "x" : { "type" : "integer", "description" : "The 0-based absolute horizontal position of the widget in the dashboard grid.", "format" : "int32", "example" : null }, "y" : { "type" : "integer", "description" : "The 0-based absolute vertical position of the widget in the dashboard grid.", "format" : "int32", "example" : null } }, "example" : null }, "PublicPermissionGrant" : { "required" : [ "grantType", "granteeId" ], "type" : "object", "properties" : { "grantType" : { "type" : "string", "description" : "The type of entity to grant permissions to, either `USER` or `TEAM`.", "example" : null, "enum" : [ "TEAM", "USER" ] }, "granteeId" : { "type" : "string", "description" : "The ID of the user or team to grant permissions to.", "example" : null } }, "example" : null }, "PublicReport" : { "required" : [ "archived", "businessUnitId", "createdAt", "id", "name", "updatedAt" ], "type" : "object", "properties" : { "archived" : { "type" : "boolean", "description" : "Whether the report is archived.", "example" : null }, "archivedAt" : { "type" : "string", "description" : "If the report is archived, the date and time when the report was archived, in ISO 8601 format. Absent if the report is not archived.", "format" : "date-time", "example" : null }, "businessUnitId" : { "type" : "string", "description" : "The ID of the business unit that the report is associated with.", "example" : null }, "createdAt" : { "type" : "string", "description" : "The date and time when the report was created, in ISO 8601 format.", "format" : "date-time", "example" : null }, "createdByUserId" : { "type" : "string", "description" : "The ID of the user who created the report. May be absent.", "example" : null }, "dashboardIds" : { "type" : "array", "description" : "Array of IDs of the dashboards that this report is on.\n\nFor GET endpoints, only returned when requested by including the `dashboardIds` field in the `properties` query parameter. For other endpoints, not returned.", "example" : null, "items" : { "type" : "string", "example" : null } }, "description" : { "type" : "string", "description" : "A description of the report. May be absent.", "example" : null }, "id" : { "type" : "string", "description" : "The ID of the report.", "example" : null }, "lastViewedAt" : { "type" : "string", "description" : "The date and time when the report was last viewed, in ISO 8601 format. Absent if it has not been viewed yet.", "format" : "date-time", "example" : null }, "lastViewedByUserId" : { "type" : "string", "description" : "The ID of the user who last viewed the report. Absent if it has not been viewed yet.", "example" : null }, "name" : { "type" : "string", "description" : "The name of the report.", "example" : null }, "ownerUserId" : { "type" : "string", "description" : "The ID of the user who owns the report. Absent if the report is currently unowned.", "example" : null }, "permissions" : { "$ref" : "#/components/schemas/PublicReportPermissions" }, "tags" : { "type" : "array", "description" : "Array of objects representing the tags that the report is tagged with.\n\nFor GET endpoints, only returned when requested by including the `tags` field in the `properties` query parameter. For other endpoints, returned when applicable.", "example" : null, "items" : { "$ref" : "#/components/schemas/PublicTag" } }, "updatedAt" : { "type" : "string", "description" : "The date and time when the report was last updated, in ISO 8601 format.", "format" : "date-time", "example" : null }, "updatedByUserId" : { "type" : "string", "description" : "The ID of the user who last updated the report. May be absent.", "example" : null } }, "example" : null }, "PublicReportCloneRequest" : { "required" : [ "name", "permissions" ], "type" : "object", "properties" : { "name" : { "type" : "string", "description" : "The name of the cloned report.", "example" : null }, "permissions" : { "$ref" : "#/components/schemas/PublicReportPermissions" } }, "example" : null }, "PublicReportExportRequest" : { "required" : [ "exportType" ], "type" : "object", "properties" : { "exportType" : { "type" : "string", "description" : "The type of export to perform. Valid values are:\n- `SCREENSHOT`: Screenshot of the report.\n- `CSV`: ZIP with one or more CSV files.\n- `XLS`: ZIP with one or more XLS files.\n- `XLSX: ZIP with one or more XLSX files.", "example" : null, "enum" : [ "CSV", "SCREENSHOT", "XLS", "XLSX" ] }, "message" : { "type" : "string", "description" : "The message to include with the export. Optional, empty by default.", "example" : null }, "recipientUserIds" : { "type" : "array", "description" : "Array of user IDs to send the export to. If absent or empty, the requesting user is used as the sole recipient; otherwise, this exact set of users is used.", "example" : null, "items" : { "type" : "string", "example" : null } }, "subject" : { "type" : "string", "description" : "The subject line to use for the export. If absent, the name of the requested report will be used. Max length of 100 characters.", "example" : null } }, "example" : null }, "PublicReportPermissions" : { "required" : [ "permissionType" ], "type" : "object", "properties" : { "permissionType" : { "type" : "string", "description" : "The type of permission to apply to the report. Valid values are:\n- PRIVATE: The report is only accessible to its owner and administrators.\n- EVERYONE_VIEW: The report is viewable by everyone.\n- EVERYONE_EDIT: The report is viewable and editable by everyone.\n- SPECIFIC: In addition to the owner, specific users and/or teams are granted VIEW or EDIT permissions. The `specificPermissions` field must also be present.", "example" : null, "enum" : [ "EVERYONE_EDIT", "EVERYONE_VIEW", "PRIVATE", "SPECIFIC" ] }, "specificPermissions" : { "$ref" : "#/components/schemas/PublicSpecificPermissionConfig" } }, "example" : null }, "PublicReportUpdateRequest" : { "type" : "object", "properties" : { "archived" : { "type" : "boolean", "description" : "Whether to archive (`true`) or restore (`false`) the report. Cannot be combined with any other fields.", "example" : null }, "businessUnitId" : { "type" : "object", "properties" : { }, "description" : "The new business unit ID to use for the report. Set to `null` to reset to the account's default business unit. Omit to leave unchanged.", "example" : "string" }, "description" : { "type" : "object", "properties" : { }, "description" : "The new description to use for the report. Set to `null` to clear the description. Omit to leave unchanged.", "example" : "string" }, "name" : { "type" : "string", "description" : "The new name to use for the report. Omit to leave unchanged.", "example" : null }, "ownerUserId" : { "type" : "string", "description" : "The ID of the user to change the report's owner to. Omit to leave unchanged.", "example" : null }, "permissions" : { "$ref" : "#/components/schemas/PublicReportPermissions" } }, "example" : null }, "PublicSpecificPermissionConfig" : { "required" : [ "permissionType" ], "type" : "object", "properties" : { "grants" : { "type" : "array", "description" : "An array of grants detailing the users and/or teams to grant the specific permission to. At least one grantee must be specified.", "example" : null, "items" : { "$ref" : "#/components/schemas/PublicPermissionGrant" } }, "permissionType" : { "type" : "string", "description" : "The type of permission granted, either `VIEW` or `EDIT`.", "example" : null, "enum" : [ "EDIT", "VIEW" ] } }, "example" : null }, "PublicTag" : { "required" : [ "id", "name" ], "type" : "object", "properties" : { "createdAt" : { "type" : "string", "description" : "The date and time when the tag was created, in ISO 8601 format. May be absent.", "format" : "date-time", "example" : null }, "createdByUserId" : { "type" : "string", "description" : "The ID of the user who created the tag. May be absent.", "example" : null }, "id" : { "type" : "string", "description" : "The ID for the tag.", "example" : null }, "name" : { "type" : "string", "description" : "The name of the tag.", "example" : null }, "updatedAt" : { "type" : "string", "description" : "The date and time when the tag was last updated, in ISO 8601 format. May be absent.", "format" : "date-time", "example" : null }, "updatedByUserId" : { "type" : "string", "description" : "The ID of the user who last updated the tag. May be absent.", "example" : null } }, "example" : null }, "StandardError" : { "required" : [ "category", "context", "errors", "links", "message", "status" ], "type" : "object", "properties" : { "category" : { "type" : "string", "description" : "A string categorizing the type of error.", "example" : null }, "context" : { "type" : "object", "additionalProperties" : { "type" : "array", "example" : null, "items" : { "type" : "string", "example" : null } }, "description" : "An object containing additional context about the error, with keys as context names and values as arrays of strings.", "example" : null }, "errors" : { "type" : "array", "description" : "An array of ErrorDetail objects providing further information about the error.", "example" : null, "items" : { "$ref" : "#/components/schemas/ErrorDetail" } }, "id" : { "type" : "string", "description" : "A string representing a unique identifier for the error.", "example" : null }, "links" : { "type" : "object", "additionalProperties" : { "type" : "string", "example" : null }, "description" : "An object mapping link names to their associated URIs, which may contain documentation or remediation steps related to the error.", "example" : null }, "message" : { "type" : "string", "description" : "A string containing a human-readable message describing the error.", "example" : null }, "status" : { "type" : "string", "description" : "A string indicating the status of the error.", "example" : null }, "subCategory" : { "type" : "object", "properties" : { }, "description" : "An object providing more specific categorization of the error.", "example" : null } }, "description" : "Ye olde error", "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" : { "crm.hubsql.execute" : "", "reporting.full.admin" : "", "reporting.full.edit" : "", "reporting.full.read" : "", "reporting.full.write" : "" } } } }, "private_apps" : { "type" : "apiKey", "name" : "private-app", "in" : "header" }, "private_apps_legacy" : { "type" : "apiKey", "name" : "private-app-legacy", "in" : "header" } } }, "x-hubspot-product-tier-requirements" : { "marketing" : "FREE", "sales" : "FREE", "service" : "FREE", "cms" : "FREE", "commerce" : "FREE", "crmHub" : "FREE", "dataHub" : "FREE" } }