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

# Update a Provider's Visibility

> Turns a single provider on or off in your white-label Providers tab.

Turns a single provider on or off. Idempotent, and turning it off **keeps** its instruction override, so your wording survives the toggle.

The response is the provider's refreshed overlay, with `allowed` reflecting the `visible` you sent.

<Warning>
  Your allowlist is opt-in: a white-label organization with no allowlist entries offers no provider at all. Sending `visible: true` on such an organization **starts** the allowlist with that single provider — the rest stay unoffered until you add them one by one, or in bulk with [Update Visibility for Several Providers](/reference/organizations/whitelabel/update-providers-visibility) or [Replace the Provider Allowlist](/reference/organizations/whitelabel/replace-provider-allowlist).
</Warning>

### Path Parameters

<ParamField path="provider_id" type="string" required>
  Yuno catalogue provider id in UPPER\_SNAKE\_CASE. Case-insensitive — it is normalized to upper case, so `stripe` and `STRIPE` address the same provider.
</ParamField>

### Body

<ParamField body="visible" type="boolean" required>
  Whether your organization offers this provider. `true` adds it to the allowlist, `false` removes it.

  Required. A body that omits it, or sends an explicit `null`, is a `400` — it is never treated as `false`.
</ParamField>

### Response

The provider's refreshed overlay, in the same shape as [Retrieve a Provider Overlay](/reference/organizations/whitelabel/retrieve-provider).

<ResponseField name="provider_id" type="string">
  Yuno catalogue provider id, normalized to upper case.
</ResponseField>

<ResponseField name="allowed" type="boolean">
  Whether your organization offers this provider, after this change.
</ResponseField>

<ResponseField name="name" type="string">
  Display name replacing the catalogue's, when overridden.
</ResponseField>

<ResponseField name="instructions" type="object[]">
  Connection steps replacing the catalogue's, when overridden.
</ResponseField>

<ResponseField name="setup_instructions" type="object[]">
  Grouped setup steps replacing the catalogue's, when overridden.
</ResponseField>

<ResponseField name="more_info_url" type="string">
  Documentation link replacing the catalogue's, when overridden.
</ResponseField>

<ResponseField name="logo_url" type="string">
  Presigned on this read and short-lived.
</ResponseField>

<CodeGroup>
  ```bash cURL theme={"theme":{"light":"github-dark","dark":"github-dark-dimmed"}}
  curl -X PATCH 'https://api.y.uno/v1/whitelabel/providers/ADYEN' \
    -H 'public-api-key: <YOUR_PUBLIC_KEY>' \
    -H 'private-secret-key: <YOUR_SECRET_KEY>' \
    -H 'Content-Type: application/json' \
    -d '{ "visible": true }'
  ```

  ```json 200 OK theme={"theme":{"light":"github-dark","dark":"github-dark-dimmed"}}
  {
    "provider_id": "ADYEN",
    "allowed": true
  }
  ```

  ```json 400 Bad Request theme={"theme":{"light":"github-dark","dark":"github-dark-dimmed"}}
  {
    "code": "VALIDATION_ERROR",
    "messages": ["provider_id is invalid"]
  }
  ```
</CodeGroup>

### Errors

<div className="code-nowrap-table dense-table">
  | HTTP  | `code`              | When                                                               |
  | ----- | ------------------- | ------------------------------------------------------------------ |
  | `400` | `VALIDATION_ERROR`  | Invalid `provider_id`, or a body with a missing or null `visible`. |
  | `401` | `NOT_AUTHENTICATED` | Missing or invalid API keys.                                       |
  | `413` | —                   | Request body larger than 256 KB.                                   |
</div>


## OpenAPI

````yaml openapi/organizations/whitelabel/update-provider-visibility.json PATCH /whitelabel/providers/{provider_id}
openapi: 3.1.0
info:
  title: White-label Providers API - Update Visibility
  version: 1.0.0
servers:
  - url: https://api-sandbox.y.uno/v1
  - url: https://api.eu.y.uno/v1
security:
  - sec0: []
    sec1: []
paths:
  /whitelabel/providers/{provider_id}:
    patch:
      summary: Update a Provider's Visibility
      description: >-
        Turns a single provider on or off. Idempotent, and turning it off keeps
        its instruction override so your wording survives the toggle.


        The response is the provider's refreshed overlay, with `allowed`
        reflecting the `visible` you sent.
      operationId: update-whitelabel-provider-visibility
      parameters:
        - name: provider_id
          in: path
          required: true
          description: >-
            Yuno catalogue provider id in UPPER_SNAKE_CASE. Case-insensitive;
            normalized to upper case.
          schema:
            type: string
            example: STRIPE
      requestBody:
        required: true
        description: Whether the organization offers this provider.
        content:
          application/json:
            schema:
              type: object
              required:
                - visible
              properties:
                visible:
                  type: boolean
                  description: >-
                    Whether the organization offers this provider. `true` adds
                    it to the allowlist, `false` removes it. Removing keeps any
                    instruction override. Required — an omitted or null
                    `visible` is a `400`, never a defaulted `false`.
                  example: true
      responses:
        '200':
          description: The provider's refreshed overlay.
          content:
            application/json:
              schema:
                type: object
                properties:
                  provider_id:
                    type: string
                    description: Yuno catalogue provider id, UPPER_SNAKE_CASE.
                    example: STRIPE
                  allowed:
                    type: boolean
                    description: Whether the organization offers this provider.
                    example: true
                  name:
                    type: string
                    description: >-
                      Display name replacing the catalogue's, when overridden.
                      Only Yuno-owned providers can carry one.
                    example: Acme Risk
                  instructions:
                    type: array
                    description: >-
                      Connection steps replacing the catalogue's, when
                      overridden. Absent means keep the catalogue's.
                    items:
                      type: object
                      additionalProperties: true
                      description: >-
                        One instruction step. Accepts `step`, `text`,
                        `text_link`, `link`, `type`, `has_sub_instructions`,
                        `sub_instructions_type` and `sub_instructions` (nested
                        up to 3 levels). `text` and `text_link` are either a
                        plain string or a language map such as `{"EN": "...",
                        "ES": "..."}`. Every `link` must be https.
                  setup_instructions:
                    type: array
                    description: >-
                      Grouped setup steps replacing the catalogue's, when
                      overridden. Absent means keep the catalogue's.
                    items:
                      type: object
                      additionalProperties: true
                      description: >-
                        One setup group. Accepts `title`, `order`,
                        `instructions_type` and `instructions` (the same step
                        shape).
                  more_info_url:
                    type: string
                    format: uri
                    description: >-
                      Documentation link replacing the catalogue's, when
                      overridden. Always https.
                    example: https://docs.example.com/stripe
                  logo_url:
                    type: string
                    readOnly: true
                    description: >-
                      Read-only and ephemeral: a presigned URL minted on this
                      read and valid only for a short window. Never store it —
                      read the provider again for a fresh one.
                    example: >-
                      https://s3.amazonaws.com/whitelabel/logo.png?X-Amz-Signature=...
        '400':
          description: Invalid provider_id or body.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    example: VALIDATION_ERROR
                  messages:
                    type: array
                    items:
                      type: string
                    example:
                      - provider_id is invalid
        '401':
          description: Unauthorized — invalid or missing API keys.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    example: NOT_AUTHENTICATED
                  messages:
                    type: array
                    items:
                      type: string
                    example:
                      - Not authenticated
        '413':
          description: Request body larger than 256 KB.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    example: VALIDATION_ERROR
                  messages:
                    type: array
                    items:
                      type: string
                    example:
                      - Request body is too large
components:
  securitySchemes:
    sec0:
      type: apiKey
      in: header
      name: PUBLIC-API-KEY
      x-default: <Your PUBLIC-API-KEY>
    sec1:
      type: apiKey
      in: header
      name: PRIVATE-SECRET-KEY
      x-default: <Your PRIVATE-SECRET-KEY>

````