Altimate AI METABASE API
The METABASE API from Altimate AI — 6 operation(s) for metabase.
The METABASE API from Altimate AI — 6 operation(s) for metabase.
openapi: 3.1.0
info:
title: Fast ACCOUNT_COSTS METABASE API
version: 0.1.0
tags:
- name: METABASE
paths:
/metabase/auth/metabase/token:
post:
tags:
- METABASE
summary: Generate Metabase Token
description: "Generate a signed JWT token for Metabase embedded analytics.\n\nThis endpoint creates a JWT token that can be used with Metabase's\nembedded analytics feature to authenticate users and control access\nto dashboards and data.\n\nArgs:\n request: MetabaseJWTRequest containing optional groups and expiration\n current_user: The authenticated user from the request\n\nReturns:\n dict: Contains the signed JWT token with user info from request"
operationId: generate_metabase_token_metabase_auth_metabase_token_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MetabaseJWTRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/MetabaseJWTResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- HTTPBearer: []
- HTTPBearer: []
/metabase/dashboards:
get:
tags:
- METABASE
summary: Get Tenant Dashboards
description: "Get paginated dashboards from local database with advanced filtering and sorting.\n\nThis endpoint fetches dashboard metadata from the local database\nthat was previously synced from Metabase by the sync worker.\n\nArgs:\n page: Page number (starts from 1)\n page_size: Number of dashboards per page (max 100)\n search: Search term for dashboard name/description\n tags: Filter by specific tags\n collection_ids: Filter by collection IDs\n collection_names: Filter by collection names\n created_after: ISO date string - filter dashboards created after this date\n created_before: ISO date string - filter dashboards created before this date\n updated_after: ISO date string - filter dashboards updated after this date\n updated_before: ISO date string - filter dashboards updated before this date\n has_description: Filter dashboards with/without descriptions\n archived: Include/exclude archived dashboards\n sort_by: Sort by field: name, created_at, updated_at, collection_name\n sort_order: Sort order: asc, desc\n\nReturns:\n dict: Contains the filtered, sorted, and paginated dashboards for the current tenant"
operationId: get_tenant_dashboards_metabase_dashboards_get
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: page
in: query
required: false
schema:
type: integer
minimum: 1
description: Page number (starts from 1)
default: 1
title: Page
description: Page number (starts from 1)
- name: page_size
in: query
required: false
schema:
type: integer
maximum: 100
minimum: 1
description: Number of dashboards per page (max 100)
default: 10
title: Page Size
description: Number of dashboards per page (max 100)
- name: search
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Search term for dashboard name/description
title: Search
description: Search term for dashboard name/description
- name: tags
in: query
required: false
schema:
anyOf:
- type: array
items:
type: string
- type: 'null'
description: Filter by specific tags
title: Tags
description: Filter by specific tags
- name: collection_ids
in: query
required: false
schema:
anyOf:
- type: array
items:
type: integer
- type: 'null'
description: Filter by collection IDs
title: Collection Ids
description: Filter by collection IDs
- name: collection_names
in: query
required: false
schema:
anyOf:
- type: array
items:
type: string
- type: 'null'
description: Filter by collection names
title: Collection Names
description: Filter by collection names
- name: created_after
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: ISO date string - filter dashboards created after this date
title: Created After
description: ISO date string - filter dashboards created after this date
- name: created_before
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: ISO date string - filter dashboards created before this date
title: Created Before
description: ISO date string - filter dashboards created before this date
- name: updated_after
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: ISO date string - filter dashboards updated after this date
title: Updated After
description: ISO date string - filter dashboards updated after this date
- name: updated_before
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: ISO date string - filter dashboards updated before this date
title: Updated Before
description: ISO date string - filter dashboards updated before this date
- name: has_description
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
description: Filter dashboards with/without descriptions
title: Has Description
description: Filter dashboards with/without descriptions
- name: archived
in: query
required: false
schema:
anyOf:
- type: boolean
- type: 'null'
description: Include/exclude archived dashboards
title: Archived
description: Include/exclude archived dashboards
- name: sort_by
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Sort by field: name, created_at, updated_at, collection_name'
default: updated_at
title: Sort By
description: 'Sort by field: name, created_at, updated_at, collection_name'
- name: sort_order
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Sort order: asc, desc'
default: desc
title: Sort Order
description: 'Sort order: asc, desc'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DashboardsResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/metabase/sync-dashboard-metadata:
post:
tags:
- METABASE
summary: Sync Dashboard Metadata
description: "Sync Metabase dashboard metadata from Airflow DAG to local database.\n\nThis endpoint receives collections and dashboards data from an Airflow DAG\nand stores the metadata in the local PostgreSQL database for the specified tenant.\n\nArgs:\n request: SyncDashboardMetadataRequest containing tenant, collections, dashboards, and fetch timestamp\n\nReturns:\n SyncDashboardMetadataResponse with sync operation results"
operationId: sync_dashboard_metadata_metabase_sync_dashboard_metadata_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SyncDashboardMetadataRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/SyncDashboardMetadataResponse'
- $ref: '#/components/schemas/SyncDashboardMetadataErrorResponse'
title: Response Sync Dashboard Metadata Metabase Sync Dashboard Metadata Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
deprecated: true
security:
- HTTPBearer: []
- HTTPBearer: []
/metabase/dashboards/{dashboard_id}:
get:
tags:
- METABASE
summary: Get Dashboard By Id
description: "Get a specific dashboard by ID from the local database.\n\nThis endpoint retrieves dashboard metadata for a specific dashboard ID\nthat was previously synced from Metabase.\n\nArgs:\n dashboard_id: The ID of the dashboard to retrieve\n\nReturns:\n MetabaseDashboardDetail with dashboard information"
operationId: get_dashboard_by_id_metabase_dashboards__dashboard_id__get
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: dashboard_id
in: path
required: true
schema:
type: integer
title: Dashboard Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/MetabaseDashboardDetail'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/metabase/dashboards/sync-all:
post:
tags:
- METABASE
summary: Trigger Sync All Dashboards
description: 'Trigger the Celery worker to sync Metabase dashboards for all tenants.
Returns HTTP 202 with queued task id so the UI can track it.'
operationId: trigger_sync_all_dashboards_metabase_dashboards_sync_all_post
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Trigger Sync All Dashboards Metabase Dashboards Sync All Post
security:
- HTTPBearer: []
- HTTPBearer: []
/metabase/has-tag:
get:
tags:
- METABASE
summary: Has Dashboard Tag
description: "Check whether the provided tag exists in any `SpacesDashboard` for the current tenant (case-insensitive).\n\nArgs:\n tag: The tag to check for\n\nReturns:\n True if present (case-insensitive), else False"
operationId: has_dashboard_tag_metabase_has_tag_get
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: tag
in: query
required: true
schema:
type: string
minLength: 1
description: Tag to check for in dashboards
title: Tag
description: Tag to check for in dashboards
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: boolean
title: Response Has Dashboard Tag Metabase Has Tag Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
SyncDashboardMetadataRequest:
properties:
tenant_name:
type: string
title: Tenant Name
collections:
items:
$ref: '#/components/schemas/MetabaseCollectionSync'
type: array
title: Collections
dashboards:
items:
$ref: '#/components/schemas/MetabaseDashboardSync'
type: array
title: Dashboards
fetch_timestamp:
type: string
title: Fetch Timestamp
type: object
required:
- tenant_name
- collections
- dashboards
- fetch_timestamp
title: SyncDashboardMetadataRequest
MetabaseCollectionSync:
properties:
id:
type: integer
title: Id
name:
type: string
title: Name
description:
anyOf:
- type: string
- type: 'null'
title: Description
color:
anyOf:
- type: string
- type: 'null'
title: Color
parent_id:
anyOf:
- type: integer
- type: 'null'
title: Parent Id
personal_owner_id:
anyOf:
- type: integer
- type: 'null'
title: Personal Owner Id
created_at:
anyOf:
- type: string
- type: 'null'
title: Created At
updated_at:
anyOf:
- type: string
- type: 'null'
title: Updated At
archived:
anyOf:
- type: boolean
- type: 'null'
title: Archived
slug:
anyOf:
- type: string
- type: 'null'
title: Slug
location:
anyOf:
- type: string
- type: 'null'
title: Location
namespace:
anyOf:
- type: string
- type: 'null'
title: Namespace
authority_level:
anyOf:
- type: string
- type: 'null'
title: Authority Level
type:
anyOf:
- type: string
- type: 'null'
title: Type
type: object
required:
- id
- name
title: MetabaseCollectionSync
MetabaseDashboardSync:
properties:
id:
type: integer
title: Id
name:
type: string
title: Name
description:
anyOf:
- type: string
- type: 'null'
title: Description
collection_id:
anyOf:
- type: integer
- type: 'null'
title: Collection Id
collection_position:
anyOf:
- type: integer
- type: 'null'
title: Collection Position
creator_id:
anyOf:
- type: integer
- type: 'null'
title: Creator Id
created_at:
anyOf:
- type: string
- type: 'null'
title: Created At
updated_at:
anyOf:
- type: string
- type: 'null'
title: Updated At
archived:
anyOf:
- type: boolean
- type: 'null'
title: Archived
public_uuid:
anyOf:
- type: string
- type: 'null'
title: Public Uuid
made_public_by_id:
anyOf:
- type: integer
- type: 'null'
title: Made Public By Id
enable_embedding:
anyOf:
- type: boolean
- type: 'null'
title: Enable Embedding
embedding_params:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Embedding Params
caveats:
anyOf:
- type: string
- type: 'null'
title: Caveats
points_of_interest:
anyOf:
- type: string
- type: 'null'
title: Points Of Interest
show_in_getting_started:
anyOf:
- type: boolean
- type: 'null'
title: Show In Getting Started
position:
anyOf:
- type: integer
- type: 'null'
title: Position
parameters:
anyOf:
- items:
additionalProperties: true
type: object
type: array
- type: 'null'
title: Parameters
tags:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Tags
auto_apply_filters:
anyOf:
- type: boolean
- type: 'null'
title: Auto Apply Filters
cache_field_values_schedule:
anyOf:
- type: string
- type: 'null'
title: Cache Field Values Schedule
cache_duration:
anyOf:
- type: integer
- type: 'null'
title: Cache Duration
type: object
required:
- id
- name
title: MetabaseDashboardSync
MetabaseJWTResponse:
properties:
jwt:
type: string
title: Jwt
type: object
required:
- jwt
title: MetabaseJWTResponse
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
MetabaseJWTRequest:
properties:
groups:
anyOf:
- items: {}
type: array
- type: 'null'
title: Groups
default: []
exp:
anyOf:
- type: integer
- type: 'null'
title: Exp
type: object
title: MetabaseJWTRequest
CollectionOption:
properties:
id:
type: integer
title: Id
name:
type: string
title: Name
count:
type: integer
title: Count
type: object
required:
- id
- name
- count
title: CollectionOption
MetabaseDashboardDetail:
properties:
id:
type: integer
title: Id
name:
type: string
title: Name
description:
anyOf:
- type: string
- type: 'null'
title: Description
created_at:
type: string
title: Created At
updated_at:
type: string
title: Updated At
tenant_id:
anyOf:
- type: string
- type: 'null'
title: Tenant Id
type: object
required:
- id
- name
- created_at
- updated_at
title: MetabaseDashboardDetail
MetabaseDashboard:
properties:
id:
type: integer
title: Id
name:
type: string
title: Name
description:
anyOf:
- type: string
- type: 'null'
title: Description
created_at:
anyOf:
- type: string
- type: 'null'
title: Created At
updated_at:
anyOf:
- type: string
- type: 'null'
title: Updated At
tags:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Tags
attributes:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Attributes
dashboard_id:
anyOf:
- type: integer
- type: 'null'
title: Dashboard Id
collection_id:
anyOf:
- type: integer
- type: 'null'
title: Collection Id
collection_name:
anyOf:
- type: string
- type: 'null'
title: Collection Name
dashboard_metadata:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Dashboard Metadata
collection_metadata:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Collection Metadata
creator:
anyOf:
- $ref: '#/components/schemas/Creator'
- type: 'null'
view_count:
anyOf:
- type: integer
- type: 'null'
title: View Count
last_viewed_at:
anyOf:
- type: string
- type: 'null'
title: Last Viewed At
tenant_name:
anyOf:
- type: string
- type: 'null'
title: Tenant Name
type: object
required:
- id
- name
title: MetabaseDashboard
SyncDashboardMetadataResponse:
properties:
success:
type: boolean
title: Success
message:
type: string
title: Message
dashboards_synced:
type: integer
title: Dashboards Synced
dashboards_updated:
type: integer
title: Dashboards Updated
dashboards_deleted:
type: integer
title: Dashboards Deleted
total_dashboards:
type: integer
title: Total Dashboards
tenant:
type: string
title: Tenant
processing_time_seconds:
type: number
title: Processing Time Seconds
type: object
required:
- success
- message
- dashboards_synced
- dashboards_updated
- dashboards_deleted
- total_dashboards
- tenant
- processing_time_seconds
title: SyncDashboardMetadataResponse
SyncDashboardMetadataErrorResponse:
properties:
success:
type: boolean
title: Success
error:
type: string
title: Error
tenant:
type: string
title: Tenant
type: object
required:
- success
- error
- tenant
title: SyncDashboardMetadataErrorResponse
Creator:
properties:
id:
anyOf:
- type: integer
- type: 'null'
title: Id
email:
anyOf:
- type: string
- type: 'null'
title: Email
first_name:
anyOf:
- type: string
- type: 'null'
title: First Name
last_name:
anyOf:
- type: string
- type: 'null'
title: Last Name
common_name:
anyOf:
- type: string
- type: 'null'
title: Common Name
type: object
title: Creator
DashboardsResponse:
properties:
dashboards:
items:
$ref: '#/components/schemas/MetabaseDashboard'
type: array
title: Dashboards
count:
type: integer
title: Count
total:
type: integer
title: Total
page:
type: integer
title: Page
page_size:
type: integer
title: Page Size
total_pages:
type: integer
title: Total Pages
has_next:
type: boolean
title: Has Next
has_previous:
type: boolean
title: Has Previous
available_tags:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Available Tags
available_collections:
anyOf:
- items:
$ref: '#/components/schemas/CollectionOption'
type: array
- type: 'null'
title: Available Collections
type: object
required:
- dashboards
- count
- total
- page
- page_size
- total_pages
- has_next
- has_previous
title: DashboardsResponse
securitySchemes:
HTTPBearer:
type: http
scheme: bearer