openapi: 3.0.3 info: title: PostHog actions dashboard_templates API version: 1.0.0 description: '' tags: - name: dashboard_templates paths: /api/projects/{project_id}/dashboard_templates/: get: operationId: dashboard_templates_list parameters: - in: query name: is_featured schema: type: boolean description: Omit for all templates. When set, filter by featured flag; parsed with str_to_bool (same as other API query booleans). - name: limit required: false in: query description: Number of results to return per page. schema: type: integer - name: offset required: false in: query description: The initial index from which to return the results. schema: type: integer - in: query name: ordering schema: type: string enum: - -created_at - -template_name - created_at - template_name description: Optional. When not using `search`, results are sorted with featured templates first (`is_featured=true`), then by `template_name` (case-insensitive A–Z; `-template_name` for Z–A) or by `created_at` (`-created_at` for newest first). When `search` is set, order is featured first, then relevance rank, then case-insensitive name for ties. - $ref: '#/components/parameters/ProjectIdPath' - in: query name: scope schema: type: string enum: - feature_flag - global - team description: 'Optional. `global`: official templates only. `team`: this project''s saved templates only (`scope=team` rows for the current project). `feature_flag`: feature-flag dashboard templates only. Omit for both official and this project''s templates (default dashboard template picker behavior).' tags: - dashboard_templates security: - PersonalAPIKeyAuth: - dashboard_template:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedDashboardTemplateList' description: '' x-explicit-tags: - core - dashboards post: operationId: dashboard_templates_create parameters: - $ref: '#/components/parameters/ProjectIdPath' tags: - dashboard_templates requestBody: content: application/json: schema: $ref: '#/components/schemas/DashboardTemplate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DashboardTemplate' multipart/form-data: schema: $ref: '#/components/schemas/DashboardTemplate' security: - PersonalAPIKeyAuth: - dashboard_template:write responses: '201': content: application/json: schema: $ref: '#/components/schemas/DashboardTemplate' description: '' x-explicit-tags: - core - dashboards /api/projects/{project_id}/dashboard_templates/{id}/: get: operationId: dashboard_templates_retrieve parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this dashboard template. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - dashboard_templates security: - PersonalAPIKeyAuth: - dashboard_template:read responses: '200': content: application/json: schema: $ref: '#/components/schemas/DashboardTemplate' description: '' x-explicit-tags: - core put: operationId: dashboard_templates_update parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this dashboard template. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - dashboard_templates requestBody: content: application/json: schema: $ref: '#/components/schemas/DashboardTemplate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/DashboardTemplate' multipart/form-data: schema: $ref: '#/components/schemas/DashboardTemplate' security: - PersonalAPIKeyAuth: - dashboard_template:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/DashboardTemplate' description: '' x-explicit-tags: - core patch: operationId: dashboard_templates_partial_update parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this dashboard template. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - dashboard_templates requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedDashboardTemplate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/PatchedDashboardTemplate' multipart/form-data: schema: $ref: '#/components/schemas/PatchedDashboardTemplate' security: - PersonalAPIKeyAuth: - dashboard_template:write responses: '200': content: application/json: schema: $ref: '#/components/schemas/DashboardTemplate' description: '' x-explicit-tags: - core delete: operationId: dashboard_templates_destroy description: Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true parameters: - in: path name: id schema: type: string format: uuid description: A UUID string identifying this dashboard template. required: true - $ref: '#/components/parameters/ProjectIdPath' tags: - dashboard_templates security: - PersonalAPIKeyAuth: - dashboard_template:write responses: '405': description: No response body x-explicit-tags: - core /api/projects/{project_id}/dashboard_templates/copy_between_projects/: post: operationId: dashboard_templates_copy_between_projects_create description: Creates a new team-scoped template in the **target** project (URL) from a **team-scoped** source template in the same organization. Global and feature-flag templates return 400. Cross-organization or inaccessible sources return 404. Source and destination projects must differ (400 if equal). Conflicting `template_name` values on the destination are auto-suffixed with `(copy)`, `(copy 2)`, … summary: Copy a team template to this project parameters: - $ref: '#/components/parameters/ProjectIdPath' tags: - dashboard_templates requestBody: content: application/json: schema: $ref: '#/components/schemas/CopyDashboardTemplate' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/CopyDashboardTemplate' multipart/form-data: schema: $ref: '#/components/schemas/CopyDashboardTemplate' required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/DashboardTemplate' description: '' x-explicit-tags: - core - dashboards /api/projects/{project_id}/dashboard_templates/json_schema/: get: operationId: dashboard_templates_json_schema_retrieve parameters: - $ref: '#/components/parameters/ProjectIdPath' tags: - dashboard_templates responses: '200': description: No response body x-explicit-tags: - core - dashboards components: schemas: CopyDashboardTemplate: type: object properties: source_template_id: type: string format: uuid description: UUID of a team-scoped template in the same organization. Global and feature-flag templates cannot be copied with this endpoint. required: - source_template_id BlankEnum: enum: - '' UserBasic: type: object properties: id: type: integer readOnly: true uuid: type: string format: uuid readOnly: true distinct_id: type: string nullable: true maxLength: 200 first_name: type: string maxLength: 150 last_name: type: string maxLength: 150 email: type: string format: email title: Email address maxLength: 254 is_email_verified: type: boolean nullable: true hedgehog_config: type: object additionalProperties: true nullable: true readOnly: true role_at_organization: nullable: true oneOf: - $ref: '#/components/schemas/RoleAtOrganizationEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' required: - email - hedgehog_config - id - uuid DashboardTemplateScopeEnum: enum: - team - global - feature_flag type: string description: '* `team` - Only team * `global` - Global * `feature_flag` - Feature Flag' DashboardTemplate: type: object properties: id: type: string format: uuid readOnly: true template_name: type: string nullable: true maxLength: 400 dashboard_description: type: string nullable: true maxLength: 400 dashboard_filters: nullable: true tags: type: array items: type: string maxLength: 255 nullable: true tiles: nullable: true variables: nullable: true deleted: type: boolean nullable: true created_at: type: string format: date-time readOnly: true nullable: true created_by: allOf: - $ref: '#/components/schemas/UserBasic' readOnly: true image_url: type: string nullable: true maxLength: 8201 team_id: type: integer nullable: true readOnly: true scope: nullable: true oneOf: - $ref: '#/components/schemas/DashboardTemplateScopeEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' availability_contexts: type: array items: type: string maxLength: 255 nullable: true is_featured: type: boolean description: Manually curated; used to highlight templates in the UI. required: - created_at - created_by - id - team_id PaginatedDashboardTemplateList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=400&limit=100 previous: type: string nullable: true format: uri example: http://api.example.org/accounts/?offset=200&limit=100 results: type: array items: $ref: '#/components/schemas/DashboardTemplate' RoleAtOrganizationEnum: enum: - engineering - data - product - founder - leadership - marketing - sales - other type: string description: '* `engineering` - Engineering * `data` - Data * `product` - Product Management * `founder` - Founder * `leadership` - Leadership * `marketing` - Marketing * `sales` - Sales / Success * `other` - Other' PatchedDashboardTemplate: type: object properties: id: type: string format: uuid readOnly: true template_name: type: string nullable: true maxLength: 400 dashboard_description: type: string nullable: true maxLength: 400 dashboard_filters: nullable: true tags: type: array items: type: string maxLength: 255 nullable: true tiles: nullable: true variables: nullable: true deleted: type: boolean nullable: true created_at: type: string format: date-time readOnly: true nullable: true created_by: allOf: - $ref: '#/components/schemas/UserBasic' readOnly: true image_url: type: string nullable: true maxLength: 8201 team_id: type: integer nullable: true readOnly: true scope: nullable: true oneOf: - $ref: '#/components/schemas/DashboardTemplateScopeEnum' - $ref: '#/components/schemas/BlankEnum' - $ref: '#/components/schemas/NullEnum' availability_contexts: type: array items: type: string maxLength: 255 nullable: true is_featured: type: boolean description: Manually curated; used to highlight templates in the UI. NullEnum: enum: - null parameters: ProjectIdPath: in: path name: project_id required: true schema: type: string description: Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/. securitySchemes: PersonalAPIKeyAuth: type: http scheme: bearer x-tagGroups: - name: All endpoints tags: - LLM Analytics - actions - activity_log - activity_logs - advanced_activity_logs - alerts - annotations - approval_policies - batch_exports - cdp - change_requests - code - code-invites - cohorts - comments - conversations - core - customer_analytics - customer_journeys - customer_profile_configs - dashboard_templates - dashboards - data_color_themes - data_modeling_jobs - data_warehouse - dataset_items - datasets - desktop_recordings - domains - early_access_feature - early_access_features - elements - endpoints - environments - error_tracking - evaluation_runs - evaluations - event_definitions - event_filter - event_schemas - events - experiment_holdouts - experiment_saved_metrics - experiments - exports - external_data_schemas - external_data_sources - feature_flags - file_system - file_system_shortcut - flag_value - groups - groups_types - health_issues - heatmap_screenshots - heatmaps - hog_flows - hog_function_templates - hog_functions - insight_variables - insights - integrations - invites - js-snippet - legal_documents - lineage - live_debugger_breakpoints - llm_analytics - llm_prompts - llm_skills - logs - managed_viewsets - max - max_tools - mcp_server_installations - mcp_servers - mcp_store - mcp_tools - members - notebooks - oauth_applications - object_media_previews - organizations - persisted_folder - persons - platform_features - plugin_configs - product_analytics - product_tours - project_secret_api_keys - projects - property_definitions - proxy_records - public_hog_function_templates - query - replay - reverse_proxy - role_external_references - roles - sandbox-environments - sandbox_environments - saved - schema_property_groups - sdk_doctor - session_group_summaries - session_recording_playlists - session_recordings - session_summaries - sessions - signals - subscriptions - surveys - taggers - task-automations - task-runs - task_automations - tasks - uploaded_media - user_home_settings - user_interviews - users - visual_review - warehouse_dag - warehouse_model_paths - warehouse_saved_queries - warehouse_saved_query_folders - warehouse_tables - warehouse_view_link - warehouse_view_links - web_analytics - web_experiments - web_vitals - welcome - workflows