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

# Update an app install's notification settings

> Applies partial changes to the notification settings of the install's backing app.
Entries in `notifications` are per-setting deltas: an entry without an `id` adds a new
setting (label and surfaces required; the id is generated), an entry with only an `id`
deletes that setting, and an entry with an `id` plus fields updates the provided fields
of that setting. Settings not referenced are left unchanged; an id that matches no
setting fails with 400. `actionLabel`, when present, replaces the app's action label —
send an empty object to clear it. Fails with 404 until the app's settings are created
via POST or the App Setup page. Requests authenticated with an app API key may only
manage the calling app's own installs — for a published marketplace app this changes the
app's settings in every workspace it is installed in. Requests authenticated with a
regular API key require workspace admin privileges.



## OpenAPI

````yaml /api-reference/openapi.json patch /v1/installs/{installId}/notification-settings
openapi: 3.0.0
info:
  contact: {}
  title: Assembly API
  version: 0.0.1
servers:
  - url: https://api.assembly.com
security: []
paths:
  /v1/installs/{installId}/notification-settings:
    patch:
      tags:
        - Installs
      summary: Update an app install's notification settings
      description: >-
        Applies partial changes to the notification settings of the install's
        backing app.

        Entries in `notifications` are per-setting deltas: an entry without an
        `id` adds a new

        setting (label and surfaces required; the id is generated), an entry
        with only an `id`

        deletes that setting, and an entry with an `id` plus fields updates the
        provided fields

        of that setting. Settings not referenced are left unchanged; an id that
        matches no

        setting fails with 400. `actionLabel`, when present, replaces the app's
        action label —

        send an empty object to clear it. Fails with 404 until the app's
        settings are created

        via POST or the App Setup page. Requests authenticated with an app API
        key may only

        manage the calling app's own installs — for a published marketplace app
        this changes the

        app's settings in every workspace it is installed in. Requests
        authenticated with a

        regular API key require workspace admin privileges.
      operationId: update-install-notification-settings
      parameters:
        - description: Unique identifier of the app install
          in: path
          name: installId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/app_instance.InstallNotificationSettingsPatchInput
        description: Notification setting deltas to apply
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/app_instance.InstallNotificationSettings'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/dispatcher.Error'
          description: >-
            Invalid body, unknown or duplicate setting ids, or the install has
            no backing app
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/dispatcher.Error'
          description: >-
            Missing or invalid API key, app key targeting another app's install,
            or caller lacks admin privileges
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/dispatcher.Error'
          description: App install not found, or the app has no notification settings yet
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/dispatcher.Error'
          description: Unexpected server error
      security:
        - APIKeyHeader: []
components:
  schemas:
    app_instance.InstallNotificationSettingsPatchInput:
      properties:
        actionLabel:
          allOf:
            - $ref: '#/components/schemas/app_instance.InstallNotificationActionLabel'
          description: >-
            ActionLabel, when present, replaces the app's action label. Send an
            empty object to clear

            it; omit the field to leave it unchanged.
        notifications:
          description: >-
            Notifications is a list of per-setting deltas: an entry without an
            id adds a new setting, an

            entry with an id and no other fields deletes that setting, and an
            entry with an id plus

            fields updates the provided fields of that setting.
          items:
            $ref: >-
              #/components/schemas/app_instance.InstallNotificationSettingDeltaInput
          maxItems: 50
          type: array
      type: object
    app_instance.InstallNotificationSettings:
      properties:
        actionLabel:
          allOf:
            - $ref: '#/components/schemas/app_instance.InstallNotificationActionLabel'
          description: >-
            ActionLabel is the app's generic "[verb] [count] [noun]" label,
            present only when declared.
        notifications:
          description: >-
            Notifications is every notification setting the app exposes for this
            install. Empty when the

            install's backing app declares no settings. A setting's `id` is the
            value to pass as

            `notificationSettingId` when creating a notification via POST
            /v1/notifications. If the

            recipient's preferences disable every requested delivery target for
            a setting, that POST

            creates nothing and returns 202.
          items:
            $ref: '#/components/schemas/app_instance.InstallNotificationSetting'
          type: array
        object:
          example: notificationSettings
          type: string
      type: object
    dispatcher.Error:
      properties:
        code:
          type: string
        data: {}
        message:
          type: string
      type: object
    app_instance.InstallNotificationActionLabel:
      properties:
        pluralNoun:
          example: invoices
          type: string
        singularNoun:
          example: invoice
          type: string
        verb:
          example: review
          type: string
      type: object
    app_instance.InstallNotificationSettingDeltaInput:
      properties:
        default:
          allOf:
            - $ref: >-
                #/components/schemas/app_instance.InstallNotificationSurfaceDefaults
          description: >-
            Default, when present, replaces the setting's per-internal-user
            default delivery state.
        id:
          description: >-
            ID targets an existing setting to update or delete. Leave it empty
            to add a new setting —

            new settings are always assigned a generated id.
          example: invoice-paid
          type: string
        label:
          description: >-
            Label, when present, replaces the setting's label. Required when
            adding a setting.
          example: Invoice paid
          maxLength: 100
          type: string
        surfaces:
          description: >-
            Surfaces, when present, replaces the setting's delivery channels.
            Required when adding a

            setting.
          example:
            - product
            - email
          items:
            enum:
              - product
              - email
            type: string
          minItems: 1
          type: array
      type: object
    app_instance.InstallNotificationSetting:
      properties:
        default:
          allOf:
            - $ref: >-
                #/components/schemas/app_instance.InstallNotificationSurfaceDefaults
          description: >-
            Default is the per-internal-user default delivery state for each
            surface.
        id:
          description: >-
            ID is the stable identifier to pass as `notificationSettingId` when
            creating a notification.
          example: invoice-paid
          type: string
        label:
          description: Label is the human-readable name shown to internal users.
          example: Invoice paid
          type: string
        surfaces:
          description: Surfaces are the delivery channels this setting supports.
          example:
            - product
            - email
          items:
            enum:
              - product
              - email
            type: string
          type: array
      type: object
    app_instance.InstallNotificationSurfaceDefaults:
      properties:
        email:
          description: >-
            Email is true when the email channel starts enabled for internal
            users.
          example: false
          type: boolean
        product:
          description: >-
            Product is true when the in-product channel starts enabled for
            internal users.
          example: true
          type: boolean
      type: object
  securitySchemes:
    APIKeyHeader:
      in: header
      name: X-API-KEY
      type: apiKey

````