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

# Bulk Update Widgets

> Apply per-widget partial updates in a single call.



## OpenAPI

````yaml https://api.oviond.com/openapi.json patch /v1/widgets/bulk
openapi: 3.1.0
info:
  title: Oviond Backend API
  version: 1.0.0
  description: Authentication, account management, billing, and media services for Oviond.
  x-logo:
    url: https://app.oviond.com/img/oviond-full-logo.svg
    altText: Oviond
servers:
  - url: https://api.oviond.com
    description: Production
security:
  - ApiKeyAuth: []
  - BearerAuth: []
paths:
  /v1/widgets/bulk:
    patch:
      tags:
        - Widgets
      summary: Bulk Update Widgets
      description: Apply per-widget partial updates in a single call.
      operationId: bulk_update_widgets
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkUpdateWidgetsRequest'
      responses:
        '200':
          description: Widgets updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
components:
  schemas:
    BulkUpdateWidgetsRequest:
      type: object
      properties:
        ids:
          type: array
          items:
            type: string
          minItems: 1
        patch:
          type: object
          properties:
            source_type:
              type:
                - string
                - 'null'
              enum:
                - project
                - template
            source_id:
              type:
                - string
                - 'null'
            page_id:
              type:
                - string
                - 'null'
            client_id:
              type:
                - string
                - 'null'
            type:
              type:
                - string
                - 'null'
              enum:
                - DATA
                - TEXT
                - IMAGE
                - HTML
                - VIDEO
                - EMBED
                - TITLE
                - BUTTON
                - GOAL
            chart:
              type:
                - string
                - 'null'
              enum:
                - table
                - score
                - area
                - line
                - bar
                - column
                - pie
                - donut
                - funnel
                - map
                - areaspline
                - spline
                - stacked_area
                - percentage_area
                - stacked_column
                - stacked_bar
                - 100_stacked_column
                - 3d_bar
                - 3d_column
                - 3d_pie
                - 3d_donut
                - funnel3d
                - custom
            chart_type:
              type:
                - string
                - 'null'
              enum:
                - table
                - score
                - area
                - line
                - bar
                - column
                - pie
                - donut
                - funnel
                - map
                - areaspline
                - spline
                - stacked_area
                - percentage_area
                - stacked_column
                - stacked_bar
                - 100_stacked_column
                - 3d_bar
                - 3d_column
                - 3d_pie
                - 3d_donut
                - funnel3d
                - custom
            chart_group:
              type:
                - string
                - 'null'
              enum:
                - line
                - area
                - bar
                - pie
                - funnel
                - table
                - score
                - map
                - column
                - donut
                - column_bar_charts
                - line_area_charts
                - pie_donut_charts
                - scorecard
            state:
              type:
                - string
                - 'null'
              enum:
                - loading
                - LOADING
                - active
                - ACTIVE
                - error
                - ERROR
                - NO_DATA
                - demo
                - DEMO
            title:
              type:
                - string
                - 'null'
            text:
              type:
                - string
                - 'null'
            name:
              type:
                - string
                - 'null'
            auto_generated_name:
              type:
                - string
                - 'null'
            heading:
              type:
                - string
                - 'null'
              enum:
                - h1
                - h2
                - h3
                - h4
                - h5
            align:
              type:
                - string
                - 'null'
              enum:
                - left
                - center
                - right
                - justify
            link:
              type:
                - string
                - 'null'
            link_url:
              type:
                - string
                - 'null'
            image_fit:
              type:
                - string
                - 'null'
              enum:
                - object-contain
                - object-cover
                - object-fill
                - object-none
            embed_type:
              type:
                - string
                - 'null'
              enum:
                - URL
                - IFRAME
                - HTML
            embed_url:
              type:
                - string
                - 'null'
            embed_iframe:
              type:
                - string
                - 'null'
            embed_html:
              type:
                - string
                - 'null'
            size:
              type:
                - string
                - 'null'
            description:
              type:
                - string
                - 'null'
            content:
              type:
                - string
                - 'null'
            src:
              type:
                - string
                - 'null'
            url:
              type:
                - string
                - 'null'
            icon:
              type:
                - string
                - 'null'
            target:
              type:
                - string
                - 'null'
            image_link_url:
              type:
                - string
                - 'null'
            x:
              type:
                - number
                - 'null'
            'y':
              type:
                - number
                - 'null'
            width:
              type:
                - number
                - 'null'
            height:
              type:
                - number
                - 'null'
            is_secondary:
              type:
                - boolean
                - 'null'
            icon_position:
              type:
                - string
                - 'null'
              enum:
                - top
                - right
                - bottom
                - left
                - none
            options_3d:
              type:
                - boolean
                - 'null'
            kpi:
              type:
                - boolean
                - 'null'
            blended:
              type:
                - boolean
                - 'null'
            row_limit:
              type:
                - string
                - 'null'
              enum:
                - '5'
                - '10'
                - '25'
                - '50'
                - '100'
                - '500'
                - all
            comparison_display:
              type:
                - string
                - 'null'
              enum:
                - previous
                - change
                - both
            sort_order:
              type:
                - string
                - 'null'
            sort_by:
              type:
                - string
                - 'null'
            column_widths:
              type:
                - object
                - 'null'
              additionalProperties:
                type: number
            b_height:
              type:
                - string
                - 'null'
            legend_position:
              type:
                - string
                - 'null'
              enum:
                - top
                - right
                - bottom
                - left
                - none
            invert_y_axis:
              type:
                - boolean
                - 'null'
            show_header:
              type:
                - boolean
                - 'null'
            show_name:
              type:
                - boolean
                - 'null'
            show_icon:
              type:
                - boolean
                - 'null'
            show_date:
              type:
                - boolean
                - 'null'
            show_grid_lines:
              type:
                - boolean
                - 'null'
            show_legends:
              type:
                - boolean
                - 'null'
            show_x_axis:
              type:
                - boolean
                - 'null'
            show_y_axis:
              type:
                - boolean
                - 'null'
            show_trendline:
              type:
                - boolean
                - 'null'
            show_totals:
              type:
                - boolean
                - 'null'
            show_search:
              type:
                - boolean
                - 'null'
            show_table_filters:
              type:
                - boolean
                - 'null'
            show_logarithmic:
              type:
                - boolean
                - 'null'
            show_multiple_axes:
              type:
                - boolean
                - 'null'
            show_custom_date_range:
              type:
                - boolean
                - 'null'
            show_description:
              type:
                - boolean
                - 'null'
            show_container:
              type:
                - boolean
                - 'null'
            show_label_list:
              type:
                - boolean
                - 'null'
            show_chart:
              type:
                - boolean
                - 'null'
            expand_rows:
              type:
                - boolean
                - 'null'
            datasource_id:
              type:
                - string
                - 'null'
              enum:
                - advanced-web-ranking
                - ac
                - adroll
                - ahrefs
                - basecamp
                - brightlocal
                - call-rail
                - drip
                - keywords
                - sendin-blue
                - sendgrid
                - moosend
                - mailer-lite
                - pingdom
                - uptime-robot
                - piwik-pro
                - wordpress
                - pabbly-connect
                - ment
                - twilio
                - switchy
                - vimeo
                - pinterest
                - pinterest-ads
                - gtres
                - paypal
                - gps
                - gs
                - CUSTOM_IMPORT
                - CUSTOM_DATA
                - CALCULATION
                - GOALS
                - str
                - wistia
                - ca-mon
                - convertkit
                - woocommerce
                - xero
                - matomo
                - go-high-level
                - wcs
                - bing-webmaster-tools
                - pipedrive
                - salesforce
                - tiktok
                - tiktok-ads
                - twr
                - twr-ads
                - spf
                - ytbe
                - google-local-services-ads
                - klaviyo
                - gsh
                - ga4
                - lkdin-ads
                - lkdin-pg
                - mlchmp
                - inst-ads
                - inst
                - fb-ads
                - fb-pg
                - gmb
                - serpstat
                - hubspot
                - gadw
                - sem-rush
                - se-ranking
                - microsoft-ads
                - plausible
                - snapchat-ads
                - amazon-advertising
                - microsoft-clarity
                - serp-watch
                - vbout
                - moz
                - chatgpt-ads
                - demo
            datasource_type:
              type:
                - string
                - 'null'
              enum:
                - DATASOURCE
                - CALCULATION
                - CUSTOM_DATA
                - CUSTOM_IMPORT
                - GOALS
            data_view:
              type:
                - string
                - 'null'
            metrics:
              type:
                - array
                - 'null'
              items:
                $ref: '#/components/schemas/MetricSelection'
            dimensions:
              type:
                - array
                - 'null'
              items:
                $ref: '#/components/schemas/DimensionSelection'
            filters:
              type:
                - array
                - 'null'
              items:
                $ref: '#/components/schemas/WidgetFilter'
            advanced:
              type:
                - object
                - 'null'
              additionalProperties: {}
            currency:
              $ref: '#/components/schemas/CurrencyInput'
            date_range:
              allOf:
                - $ref: '#/components/schemas/DateRange'
                - type:
                    - object
                    - 'null'
            current_data:
              type:
                - array
                - 'null'
              items:
                type: object
                additionalProperties: {}
            current_summary:
              type:
                - object
                - 'null'
              additionalProperties: {}
            previous_data:
              type:
                - array
                - 'null'
              items:
                type: object
                additionalProperties: {}
            previous_summary:
              type:
                - object
                - 'null'
              additionalProperties: {}
            series_fetched_at:
              type:
                - string
                - 'null'
            created_at: {}
          additionalProperties: false
      required:
        - ids
        - patch
    SuccessResponse:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - true
      required:
        - success
    MetricSelection:
      type: object
      properties:
        value:
          type: string
        label:
          type: string
        data_view:
          type: string
      required:
        - value
    DimensionSelection:
      type: object
      properties:
        value:
          type: string
        label:
          type: string
        data_view:
          type: string
      required:
        - value
    WidgetFilter:
      type: object
      properties:
        id:
          anyOf:
            - type: number
            - type: string
        field:
          type: string
          example: sessionMedium
        operator:
          type: string
          description: >-
            Canonical: equals, not_equals, contains, not_contains, starts_with,
            ends_with, greater_than, less_than, greater_than_or_equal,
            less_than_or_equal (vendor tokens also accepted).
          example: contains
        value:
          anyOf:
            - type: string
            - type: number
            - type: boolean
            - type: array
              items: {}
          example: cpc
        logicalOperator:
          type: string
          enum:
            - and
            - or
    CurrencyInput:
      anyOf:
        - type: object
          properties:
            code:
              type: string
              pattern: ^[A-Z]{3}$
              example: USD
            symbol:
              type: string
              example: $
            iso:
              type:
                - string
                - 'null'
              pattern: ^[A-Z]{2}$
              example: US
          required:
            - code
            - symbol
        - type: string
        - type: 'null'
      description: >-
        ISO 4217 currency code (e.g. "USD") or a full { code, symbol, iso }
        object.
    DateRange:
      type: object
      properties:
        text:
          type: string
          enum:
            - Today
            - Yesterday
            - Last 7 Days
            - Last 30 Days
            - Last 60 Days
            - Custom Days
            - This Month
            - Last Month
            - Custom Months
            - Last 2 Months
            - Last 3 Months
            - Last 12 Months
            - This Year
            - Last Year
            - Custom
          example: Last 30 Days
        compare:
          type: string
          enum:
            - None
            - Period
            - Month
            - Year
            - Custom
          example: None
        include_today:
          type: boolean
          example: false
        current_start:
          type: string
          example: '2026-03-01'
        current_end:
          type: string
          example: '2026-03-31'
        previous_start:
          type: string
          example: '2026-02-01'
        previous_end:
          type: string
          example: '2026-02-28'
        custom_days:
          type: number
          example: 60
        custom_months:
          type: number
          example: 3
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      description: >-
        Oviond API key (prefix `oviond_`) sent as a Bearer token — the
        credential for REST/programmatic and headless integrations. Manage keys
        in Settings → API Keys. API keys do NOT authenticate the MCP endpoint
        (/mcp), which uses OAuth 2.1 + PKCE.
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Supabase-issued JWT used by the Oviond web app session. External API
        consumers should authenticate with an Oviond API key (ApiKeyAuth)
        instead.

````