> ## Documentation Index
> Fetch the complete documentation index at: https://docs.upsolve.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Import Dashboards (.ucf)

> Decrypts a .ucf file produced by the export endpoint and upserts its chart and dashboard definitions (and their filters and themes) into the current environment, preserving ids and versions. Re-importing the same file is idempotent. Requires an Upsolve admin API key.



## OpenAPI

````yaml post /v1/api/ucf/dashboards/import
openapi: 3.1.0
info:
  title: Upsolve API
  version: 1.4.2
servers:
  - url: https://api.upsolve.ai
security: []
tags: []
paths:
  /v1/api/ucf/dashboards/import:
    post:
      summary: Import a dashboard .ucf file as an upsert
      description: >-
        Decrypts a .ucf file produced by the export endpoint and upserts its
        chart and dashboard definitions (and their filters and themes) into the
        current environment, preserving ids and versions. Re-importing the same
        file is idempotent. Requires an Upsolve admin API key.
      operationId: PostV1ApiUcfDashboardsImport
      requestBody:
        description: POST /v1/api/ucf/dashboards/import Request body
        content:
          application/json:
            schema:
              type: object
              properties:
                apiKey:
                  type: string
                  minLength: 1
                  description: >-
                    Upsolve API key, generated under Account → Developer
                    settings in the Upsolve Hub. Keys are user-scoped: pass
                    organizationId alongside the key to select which org to act
                    on.
                  examples:
                    - up_embed_************
                organizationId:
                  type: string
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
                data:
                  type: string
                  minLength: 1
                  description: >-
                    The encrypted .ucf payload produced by the export endpoint
                    (hex IV:hex ciphertext)
              required:
                - data
            examples:
              example1:
                value:
                  apiKey: up_embed_************
        required: true
      responses:
        '200':
          description: POST /v1/api/ucf/dashboards/import Positive response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    const: success
                  data:
                    type: object
                    properties:
                      organizationId:
                        type: string
                        pattern: >-
                          ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
                      generatedAt:
                        type: string
                      tables:
                        type: object
                        properties:
                          charts:
                            type: object
                            properties:
                              received:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                                description: >-
                                  Number of rows for this table in the imported
                                  payload
                              processed:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                                description: >-
                                  Number of rows submitted to the upsert (not
                                  necessarily changed; equals received on an
                                  idempotent re-import)
                            required:
                              - received
                              - processed
                            additionalProperties: false
                          charts_versioning:
                            type: object
                            properties:
                              received:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                                description: >-
                                  Number of rows for this table in the imported
                                  payload
                              processed:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                                description: >-
                                  Number of rows submitted to the upsert (not
                                  necessarily changed; equals received on an
                                  idempotent re-import)
                            required:
                              - received
                              - processed
                            additionalProperties: false
                          dashboards:
                            type: object
                            properties:
                              received:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                                description: >-
                                  Number of rows for this table in the imported
                                  payload
                              processed:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                                description: >-
                                  Number of rows submitted to the upsert (not
                                  necessarily changed; equals received on an
                                  idempotent re-import)
                            required:
                              - received
                              - processed
                            additionalProperties: false
                          dashboards_versioning:
                            type: object
                            properties:
                              received:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                                description: >-
                                  Number of rows for this table in the imported
                                  payload
                              processed:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                                description: >-
                                  Number of rows submitted to the upsert (not
                                  necessarily changed; equals received on an
                                  idempotent re-import)
                            required:
                              - received
                              - processed
                            additionalProperties: false
                          chart_filters:
                            type: object
                            properties:
                              received:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                                description: >-
                                  Number of rows for this table in the imported
                                  payload
                              processed:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                                description: >-
                                  Number of rows submitted to the upsert (not
                                  necessarily changed; equals received on an
                                  idempotent re-import)
                            required:
                              - received
                              - processed
                            additionalProperties: false
                          dashboard_filters:
                            type: object
                            properties:
                              received:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                                description: >-
                                  Number of rows for this table in the imported
                                  payload
                              processed:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                                description: >-
                                  Number of rows submitted to the upsert (not
                                  necessarily changed; equals received on an
                                  idempotent re-import)
                            required:
                              - received
                              - processed
                            additionalProperties: false
                          dashboard_themes:
                            type: object
                            properties:
                              received:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                                description: >-
                                  Number of rows for this table in the imported
                                  payload
                              processed:
                                type: integer
                                minimum: 0
                                maximum: 9007199254740991
                                description: >-
                                  Number of rows submitted to the upsert (not
                                  necessarily changed; equals received on an
                                  idempotent re-import)
                            required:
                              - received
                              - processed
                            additionalProperties: false
                        required:
                          - charts
                          - charts_versioning
                          - dashboards
                          - dashboards_versioning
                          - chart_filters
                          - dashboard_filters
                          - dashboard_themes
                        additionalProperties: false
                    required:
                      - organizationId
                      - generatedAt
                      - tables
                    additionalProperties: false
                required:
                  - status
                  - data
                additionalProperties: false
        '400':
          description: POST /v1/api/ucf/dashboards/import Negative response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    const: error
                  error:
                    type: object
                    properties:
                      message:
                        type: string
                      code:
                        type: string
                      details:
                        type: object
                        propertyNames:
                          type: string
                        additionalProperties: {}
                    required:
                      - message
                    additionalProperties: false
                required:
                  - status
                  - error
                additionalProperties: false
      security:
        - APIKEY_1: []
components:
  securitySchemes:
    APIKEY_1:
      type: apiKey
      in: query
      name: apiKey
      x-in-actual: body
      description: apiKey MUST be supplied within the request body instead of query

````