> ## 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 (per-widget patches)

> Apply a different patch to each of N widgets in one request.



## OpenAPI

````yaml https://api.oviond.com/openapi.json patch /v1/widgets/bulk-each
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-each:
    patch:
      tags:
        - Widgets
      summary: Bulk Update Widgets (per-widget patches)
      description: Apply a different patch to each of N widgets in one request.
      operationId: bulk_update_widgets_per_widget_patches
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkEachWidgetsRequest'
      responses:
        '200':
          description: Widgets updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkEachWidgetsResponse'
components:
  schemas:
    BulkEachWidgetsRequest:
      type: object
      properties:
        updates:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              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:
              - id
              - patch
          minItems: 1
      required:
        - updates
    BulkEachWidgetsResponse:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - true
        data:
          type: object
          properties:
            updated_count:
              type: number
          required:
            - updated_count
      required:
        - success
        - data
    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.

````