Looker Studio · Schema

Looker Studio Community Visualization

Represents a Looker Studio community visualization manifest that defines the visualization's metadata, resource locations, data requirements, and style configuration. The manifest is a JSON file hosted on Google Cloud Storage.

AnalyticsBusiness IntelligenceDashboardsData VisualizationGoogleReports

Properties

Name Type Description
name string The display name of the visualization.
organization string The organization or developer that created the visualization.
description string A text description of what the visualization does.
logoUrl string URL to the visualization's logo image.
devMode boolean Whether the visualization is in development mode. Development mode disables caching for faster iteration.
components array The visualization components defined in this manifest.
View JSON Schema on GitHub

JSON Schema

looker-studio-visualization-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/api-evangelist/looker-studio/json-schema/looker-studio-visualization-schema.json",
  "title": "Looker Studio Community Visualization",
  "description": "Represents a Looker Studio community visualization manifest that defines the visualization's metadata, resource locations, data requirements, and style configuration. The manifest is a JSON file hosted on Google Cloud Storage.",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "The display name of the visualization."
    },
    "organization": {
      "type": "string",
      "description": "The organization or developer that created the visualization."
    },
    "description": {
      "type": "string",
      "description": "A text description of what the visualization does."
    },
    "logoUrl": {
      "type": "string",
      "format": "uri",
      "description": "URL to the visualization's logo image."
    },
    "devMode": {
      "type": "boolean",
      "description": "Whether the visualization is in development mode. Development mode disables caching for faster iteration."
    },
    "components": {
      "type": "array",
      "description": "The visualization components defined in this manifest.",
      "items": {
        "$ref": "#/$defs/Component"
      },
      "minItems": 1
    }
  },
  "required": [
    "name",
    "components"
  ],
  "$defs": {
    "Component": {
      "type": "object",
      "description": "A single visualization component within the manifest.",
      "properties": {
        "id": {
          "type": "string",
          "description": "The unique identifier for this component."
        },
        "name": {
          "type": "string",
          "description": "The display name of the component."
        },
        "description": {
          "type": "string",
          "description": "A text description of the component."
        },
        "iconUrl": {
          "type": "string",
          "format": "uri",
          "description": "URL to the component's icon image."
        },
        "resource": {
          "$ref": "#/$defs/Resource"
        },
        "config": {
          "$ref": "#/$defs/Config"
        }
      },
      "required": [
        "id",
        "name",
        "resource"
      ]
    },
    "Resource": {
      "type": "object",
      "description": "The JavaScript and CSS resources required to render the visualization.",
      "properties": {
        "js": {
          "type": "string",
          "format": "uri",
          "description": "URL to the visualization's JavaScript bundle."
        },
        "css": {
          "type": "string",
          "format": "uri",
          "description": "URL to the visualization's CSS stylesheet."
        }
      },
      "required": [
        "js"
      ]
    },
    "Config": {
      "type": "object",
      "description": "Configuration defining data requirements, style options, and interactions.",
      "properties": {
        "data": {
          "type": "array",
          "description": "Data configuration specifying required dimensions and metrics.",
          "items": {
            "$ref": "#/$defs/DataConfig"
          }
        },
        "style": {
          "type": "array",
          "description": "Style configuration specifying user-configurable style elements.",
          "items": {
            "$ref": "#/$defs/StyleConfig"
          }
        },
        "interactions": {
          "type": "array",
          "description": "Interaction configurations defining supported user interactions.",
          "items": {
            "$ref": "#/$defs/InteractionConfig"
          }
        }
      }
    },
    "DataConfig": {
      "type": "object",
      "description": "Defines a data source slot with its dimension and metric requirements.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier for this data configuration."
        },
        "label": {
          "type": "string",
          "description": "Display label for this data source slot."
        },
        "elements": {
          "type": "array",
          "description": "The dimension and metric elements for this data source.",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Unique identifier for this element."
              },
              "label": {
                "type": "string",
                "description": "Display label for this element."
              },
              "type": {
                "type": "string",
                "description": "Whether this element accepts dimensions or metrics.",
                "enum": [
                  "DIMENSION",
                  "METRIC"
                ]
              },
              "options": {
                "type": "object",
                "properties": {
                  "min": {
                    "type": "integer",
                    "description": "Minimum number of fields required."
                  },
                  "max": {
                    "type": "integer",
                    "description": "Maximum number of fields allowed."
                  }
                }
              }
            },
            "required": [
              "id",
              "type"
            ]
          }
        }
      },
      "required": [
        "id"
      ]
    },
    "StyleConfig": {
      "type": "object",
      "description": "Defines a group of style elements in the property panel.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier for this style group."
        },
        "label": {
          "type": "string",
          "description": "Display label for this style group."
        },
        "elements": {
          "type": "array",
          "description": "The individual style elements in this group.",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Unique identifier for this style element."
              },
              "label": {
                "type": "string",
                "description": "Display label for this element."
              },
              "type": {
                "type": "string",
                "description": "The type of style input to render.",
                "enum": [
                  "FONT_COLOR",
                  "FONT_SIZE",
                  "FONT_FAMILY",
                  "FILL_COLOR",
                  "BORDER_COLOR",
                  "BORDER_WEIGHT",
                  "OPACITY",
                  "LINE_WEIGHT",
                  "LINE_STYLE",
                  "CHECKBOX",
                  "TEXTINPUT",
                  "SELECT_SINGLE",
                  "SELECT_RADIO"
                ]
              },
              "defaultValue": {
                "type": "string",
                "description": "The default value for this style element."
              }
            },
            "required": [
              "id",
              "type"
            ]
          }
        }
      },
      "required": [
        "id"
      ]
    },
    "InteractionConfig": {
      "type": "object",
      "description": "Defines a supported interaction type.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Unique identifier for this interaction."
        },
        "supportedActions": {
          "type": "array",
          "description": "The types of actions this interaction supports.",
          "items": {
            "type": "string",
            "enum": [
              "FILTER"
            ]
          }
        }
      },
      "required": [
        "id"
      ]
    }
  }
}