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

# Save dashboard template

> Creates or replaces this organization's own template under `key`, whole: `title` and `spec` are required, the spec is checked structurally (the network's tools are checked when a dashboard is created from it). On the key of a shared template it becomes this organization's override (`DELETE` to go back to the shared one). To change a few fields, `PATCH`.



## OpenAPI

````yaml /api-reference/openapi.json put /v1/dashboard-templates/{key}
openapi: 3.1.0
info:
  title: Sidenet API
  version: 1.0.0
  description: >-
    Sidenet HTTP endpoints exposed by the Sidenet Studio. All routes require an
    api key that can be generated through the studio in studio.sidenet.ai.
servers:
  - url: https://api.sidenet.ai
security:
  - bearerAuth: []
paths:
  /v1/dashboard-templates/{key}:
    put:
      tags:
        - Dashboard templates
      summary: Save dashboard template
      description: >-
        Creates or replaces this organization's own template under `key`, whole:
        `title` and `spec` are required, the spec is checked structurally (the
        network's tools are checked when a dashboard is created from it). On the
        key of a shared template it becomes this organization's override
        (`DELETE` to go back to the shared one). To change a few fields,
        `PATCH`.
      parameters:
        - name: key
          in: path
          required: true
          schema:
            type: string
            example: performance
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - title
                - spec
              properties:
                title:
                  type: string
                  maxLength: 120
                  example: Hotel performance
                description:
                  type: string
                  maxLength: 500
                  nullable: true
                icon:
                  type: string
                  maxLength: 60
                  nullable: true
                  example: chart
                spec:
                  type: object
                  description: >-
                    The dashboard spec, as `POST /v1/dashboards` takes it
                    (transforms complete). Checked structurally on write.
                tags:
                  type: array
                  items:
                    type: string
                    example: general_manager
                  description: >-
                    Audience: offered on the networks whose `tags` share one of
                    these (`PATCH /v1/networks/{id}`). Empty = every network.
                when:
                  type: object
                  nullable: true
                  description: >-
                    Offered only when a read run **in the caller's session**
                    yields at least `min_options` distinct values: the spec's
                    own select filter `filter` (one with `options_from`: its
                    source and value path), or a source tool named outright
                    (`tool`, `args`, `value`: the field path of the value in a
                    row). E.g. `{ "tool": "pms_list_property_options", "value":
                    "id", "min_options": 2 }` offers a portfolio page to a
                    caller with several hotels only.
                  properties:
                    filter:
                      type: string
                      example: property
                    tool:
                      type: string
                      example: pms_list_property_options
                    args:
                      type: object
                    value:
                      type: string
                      example: id
                    min_options:
                      type: integer
                      minimum: 1
                      example: 2
                ord:
                  type: integer
                  nullable: true
                enabled:
                  type: boolean
                  default: true
      responses:
        '200':
          description: The template as this organization now gets it
          content:
            application/json:
              schema:
                type: object
                properties:
                  key:
                    type: string
                    example: performance
                  collection:
                    type: string
                    description: >-
                      The publisher's set (`default` for a template written with
                      PUT).
                    example: pms
                  ord:
                    type: integer
                    description: Position in the picker (ascending, then key).
                  title:
                    type: string
                    example: Hotel performance
                  description:
                    type: string
                    nullable: true
                  icon:
                    type: string
                    nullable: true
                    example: chart
                  tags:
                    type: array
                    items:
                      type: string
                      example: general_manager
                    description: >-
                      Audience: offered on the networks whose `tags` share one
                      of these (`PATCH /v1/networks/{id}`). Empty = every
                      network.
                  when:
                    type: object
                    nullable: true
                    description: >-
                      Offered only when a read run **in the caller's session**
                      yields at least `min_options` distinct values: the spec's
                      own select filter `filter` (one with `options_from`: its
                      source and value path), or a source tool named outright
                      (`tool`, `args`, `value`: the field path of the value in a
                      row). E.g. `{ "tool": "pms_list_property_options",
                      "value": "id", "min_options": 2 }` offers a portfolio page
                      to a caller with several hotels only.
                    properties:
                      filter:
                        type: string
                        example: property
                      tool:
                        type: string
                        example: pms_list_property_options
                      args:
                        type: object
                      value:
                        type: string
                        example: id
                      min_options:
                        type: integer
                        minimum: 1
                        example: 2
                  spec:
                    type: object
                    description: >-
                      What `POST /v1/dashboards` takes as `spec`. Listed only
                      with `include_spec=true`.
                  enabled:
                    type: boolean
                  hash:
                    type: string
                  source:
                    type: string
                    enum:
                      - repo
                      - api
                    description: '`repo`: published by CI; `api`: written with PUT / PATCH.'
                  source_ref:
                    type: string
                    nullable: true
                    description: >-
                      The commit a `repo` template was published from, or who
                      wrote an `api` one.
                  origin:
                    type: string
                    enum:
                      - org
                      - shared
                      - override
                    description: >-
                      `org`: this organization's own; `shared`: the platform's,
                      shared with every organization; `override`: this
                      organization's row over a shared one (shown merged).
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
              example:
                key: performance
                collection: pms
                ord: 1
                title: Hotel performance
                description: >-
                  Occupancy, ADR, RevPAR and revenue with their trend for the
                  period.
                icon: chart
                tags:
                  - finance
                  - general_manager
                  - owner
                  - revenue_manager
                when: null
                enabled: true
                hash: 9f2c…
                source: api
                source_ref: 1a2b3c4d5e6f
                origin: org
                created_at: '2026-11-08T12:00:00Z'
                updated_at: '2026-11-08T12:00:00Z'
        '400':
          description: Invalid body, or a spec that does not parse (`issues` lists why)
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Organization API key, generated in studio.sidenet.ai. Backend only —
        never in a browser.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.