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

# Edit the site's navbar and footer

> Partial with replace-by-list semantics: a list present REPLACES the stored one, `[]` clears it, an absent key touches nothing. Texts are per language (D-44). Every href is an absolute http(s) URL or a same-site path.



## OpenAPI

````yaml /openapi.json patch /v1/projects/{projectId}/brand/chrome
openapi: 3.0.0
info:
  title: wondeya Developer API
  description: >-
    The public REST API for building on wondeya: agents, projects, pages,
    knowledge, assets, brand, theme, usage, retrieval and chat, authenticated by
    a workspace API key (`Authorization: Bearer wdy_live_…`).
  version: 0.1.0
  contact:
    name: wondeya
    url: https://wondeya.com
    email: team@wondeya.com
  license:
    name: Proprietary
    url: https://wondeya.com/terms
servers:
  - url: https://api.wondeya.com
    description: Production
  - url: http://localhost:8080
    description: Development
security: []
tags:
  - name: Identity
  - name: Agents
  - name: Projects
  - name: Pages
  - name: Knowledge
  - name: Assets
  - name: Brand
  - name: Usage
  - name: Chat
paths:
  /v1/projects/{projectId}/brand/chrome:
    patch:
      tags:
        - Brand
      summary: Edit the site's navbar and footer
      description: >-
        Partial with replace-by-list semantics: a list present REPLACES the
        stored one, `[]` clears it, an absent key touches nothing. Texts are per
        language (D-44). Every href is an absolute http(s) URL or a same-site
        path.
      operationId: PublicBrandController_setChrome_v1
      parameters:
        - name: projectId
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrandChromeDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicBrandChromeDto'
        '404':
          description: No such site in this workspace
      security:
        - api-key: []
components:
  schemas:
    BrandChromeDto:
      type: object
      properties:
        navLinks:
          maxItems: 6
          type: array
          items:
            $ref: '#/components/schemas/ChromeLinkDto'
        footerGroups:
          maxItems: 4
          type: array
          items:
            $ref: '#/components/schemas/ChromeLinkGroupDto'
        socials:
          maxItems: 8
          type: array
          items:
            $ref: '#/components/schemas/ChromeSocialDto'
        legalName:
          description: >-
            The name in the copyright line, per language (at most 120 characters
            each). Empty falls back to the business name, and if that is empty
            too the line is omitted. An absent language is auto-translated after
            the save; "" takes that language's text off.
          allOf:
            - $ref: '#/components/schemas/ChromeTextDto'
        contact:
          description: >-
            The support email and optional postal address (D-67). A PRESENT
            object replaces the whole thing; an absent key leaves it alone.
          allOf:
            - $ref: '#/components/schemas/ChromeContactDto'
    PublicBrandChromeDto:
      type: object
      properties:
        navLinks:
          type: array
          items:
            $ref: '#/components/schemas/PublicChromeLinkDto'
        footerGroups:
          type: array
          items:
            $ref: '#/components/schemas/PublicChromeLinkGroupDto'
        socials:
          type: array
          items:
            $ref: '#/components/schemas/PublicChromeSocialDto'
        legalName:
          $ref: '#/components/schemas/PublicLocalizedTextDto'
        contact:
          description: >-
            The support email and optional postal address (D-67). Empty means no
            contact block.
          allOf:
            - $ref: '#/components/schemas/PublicChromeContactDto'
      required:
        - navLinks
        - footerGroups
        - socials
        - legalName
        - contact
    ChromeLinkDto:
      type: object
      properties:
        label:
          description: >-
            What the visitor reads, per language (at most 40 characters each).
            An absent language is auto-translated after the save; "" takes that
            language's text off. At least one language must remain.
          allOf:
            - $ref: '#/components/schemas/ChromeTextDto'
        href:
          type: string
          maxLength: 400
          description: >-
            An absolute http(s) URL, or a path on this site ("/pricing"). ONE
            destination for all languages: hrefs are not localized.
        variant:
          type: string
          enum:
            - link
            - primary
            - secondary
          default: link
      required:
        - label
        - href
    ChromeLinkGroupDto:
      type: object
      properties:
        title:
          description: >-
            The column heading, per language (at most 40 characters each). An
            absent language is auto-translated after the save; "" takes that
            language's text off.
          allOf:
            - $ref: '#/components/schemas/ChromeTextDto'
        links:
          maxItems: 8
          type: array
          items:
            $ref: '#/components/schemas/ChromeLinkDto'
      required:
        - title
        - links
    ChromeSocialDto:
      type: object
      properties:
        network:
          type: string
          enum:
            - x
            - linkedin
            - instagram
            - facebook
            - youtube
            - tiktok
            - github
            - whatsapp
        href:
          type: string
          maxLength: 400
      required:
        - network
        - href
    ChromeTextDto:
      type: object
      properties:
        es:
          type: string
          description: Spanish.
        en:
          type: string
          description: English.
    ChromeContactDto:
      type: object
      properties:
        email:
          type: string
          maxLength: 160
          description: >-
            A bare support address ("soporte@empresa.com"), never a "mailto:"
            URL or one with a query string. "" (or omitting it in a full
            replacement) clears it.
        addressLines:
          maxItems: 4
          description: >-
            Free-text lines of a postal address, printed as given, in order — at
            most 4, 120 characters each. A PRESENT array replaces the stored
            lines wholesale; "[]" clears them.
          type: array
          items:
            type: string
    PublicChromeLinkDto:
      type: object
      properties:
        label:
          type: string
          description: Resolved to the response’s `locale`.
        href:
          type: string
          description: An absolute http(s) URL, or a path on this site.
        variant:
          type: string
          enum:
            - link
            - primary
            - secondary
      required:
        - label
        - href
        - variant
    PublicChromeLinkGroupDto:
      type: object
      properties:
        title:
          type: string
          description: Resolved to the response’s `locale`.
        links:
          type: array
          items:
            $ref: '#/components/schemas/PublicChromeLinkDto'
      required:
        - title
        - links
    PublicChromeSocialDto:
      type: object
      properties:
        network:
          type: string
          enum:
            - x
            - linkedin
            - instagram
            - facebook
            - youtube
            - tiktok
            - github
            - whatsapp
        href:
          type: string
      required:
        - network
        - href
    PublicLocalizedTextDto:
      type: object
      properties:
        es:
          type: string
        en:
          type: string
    PublicChromeContactDto:
      type: object
      properties:
        email:
          type: string
          description: Absent when no support email is set.
        addressLines:
          type: array
          items:
            type: string
      required:
        - addressLines
  securitySchemes:
    api-key:
      scheme: bearer
      bearerFormat: opaque
      type: http
      description: >-
        A workspace API key: wdy_live_… / wdy_test_…. Created at POST
        /workspaces/{tenantId}/keys and shown exactly once.

````