Skip to content

#39016 API/YAML: Upload custom logo served from Fleet - #43808

Merged
rachaelshaw merged 6 commits into
docs-v4.86.0from
rachaelshaw-patch-12
May 13, 2026
Merged

#39016 API/YAML: Upload custom logo served from Fleet#43808
rachaelshaw merged 6 commits into
docs-v4.86.0from
rachaelshaw-patch-12

Conversation

@rachaelshaw

@rachaelshaw rachaelshaw commented Apr 20, 2026

Copy link
Copy Markdown
Member

Comment thread docs/Configuration/yaml-files.md Outdated
Comment thread docs/Configuration/yaml-files.md Outdated
Comment thread docs/Configuration/yaml-files.md Outdated
Comment thread docs/Configuration/yaml-files.md Outdated
Co-authored-by: Rachael Shaw <r@rachael.wtf>
Comment on lines +813 to +814
- `org_logo_url_dark_mode` is a public URL of the logo for your organization (default: Fleet logo). Only one of `org_logo_path_dark_mode` or `org_logo_url_dark_mode` may be specified.
- `org_logo_url_light_mode` is a public URL of the logo for your organization that can be used with light backgrounds (default: Fleet logo). Only one of `org_logo_path_light_mode` or `org_logo_url_light_mode` may be specified.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dev note

Update logo URL key names, and log a deprecation warning when org_logo_url_light_background and org_logo_url_dark_background are used.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dev note:

Error if trying to use duplicate ways of setting the logo:

org_logo_path_dark_mode cannot be specified at the same time as org_logo_url_dark_mode, and org_logo_path_light_mode cannot be specified at the same time as org_logo_url_light_mode.

@rachaelshaw rachaelshaw changed the title #39016 YAML #39016 API/YAML Apr 21, 2026
@rachaelshaw rachaelshaw changed the title #39016 API/YAML #39016 API/YAML: Upload custom logo served from Fleet Apr 22, 2026
Comment thread docs/REST API/rest-api.md
| org_logo_url_light_mode | string | The URL for the organization logo displayed in Fleet on top of light backgrounds. |
| contact_url | string | A URL or [file URI](https://en.wikipedia.org/wiki/File_URI_scheme) that can be used by end users to contact the organization. |

> `org_logo_url` and `org_logo_url_light_background` are deprecated. They are maintained for backwards compatibility. Please use `org_logo_url_dark_mode` and `org_logo_url_light_mode` instead.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dev note

Original logo URL keys are deprecated, but still included in API response for backwards compatibility.

If API request includes both org_logo_url and org_logo_url_dark_mode, and/or org_logo_url_light_background and org_logo_url_light_mode, throw an error:

Bad request: org_logo_url cannot be specified at the same time as org_logo_url_dark_mode, and org_logo_url_light_background cannot be specified at the same time as org_logo_url_light_mode.

Comment thread docs/REST API/rest-api.md
}
```

### Update organization logo

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I think we do need a GET endpoint for the org logo, so that the bytes are served from the BE to the FE, instead of the FE attempting to fetch it directly (which would fail to render if we have a strict Content Security Policy)

@rachaelshaw
rachaelshaw requested a review from lucasmrod April 22, 2026 15:45
nulmete added a commit that referenced this pull request May 5, 2026
<!-- Add the related story/sub-task/bug number, like Resolves #123, or
remove if NA -->
**Related issue:** Resolves #44333

# Checklist for submitter

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files)
for more information.

## Testing

- [x] Added/updated automated tests. Also added some integration tests
as a follow-up of the first PR
(#44390).

- [x] QA'd all new/changed functionality manually

#### generate-gitops

- Branched off to main, no URLs set, then ran generate-gitops on this
branch. Deprecated keys gone, new keys present.

<img width="447" height="170" alt="nourls_new"
src="https://github.com/user-attachments/assets/61931615-d61b-44d3-8095-f7a2b9bd8871"
/>

- Branched off to main, set external URLs for both light and dark modes,
then ran generate-gitops on this branch. Deprecated keys gone, new keys
set with the external URLs.

<img width="637" height="471" alt="externalurl_main"
src="https://github.com/user-attachments/assets/c3782756-acc2-4b99-812d-86e145f11ad5"
/>

<img width="459" height="168" alt="externalurl_new"
src="https://github.com/user-attachments/assets/aa2d8825-3c47-40ba-ab91-bb8202afe81a"
/>

- Within this branch, after uploading a custom logo for light mode, ran
generate-gitops. The logo was saved in lib/org_logo/light.webp

<img width="1510" height="639" alt="Screenshot 2026-05-04 at 4 06 59 PM"
src="https://github.com/user-attachments/assets/13318c24-8fa4-4e29-b629-ff723d4afe5a"
/>
<img width="786" height="172" alt="Screenshot 2026-05-04 at 4 07 30 PM"
src="https://github.com/user-attachments/assets/b46bd1df-7dcd-4489-b7da-4cbad77b25b8"
/>


#### gitops

- Applied gitops with two external URLs. Verified in the UI that those
are still present

<img width="944" height="189" alt="Screenshot 2026-05-04 at 7 54 53 AM"
src="https://github.com/user-attachments/assets/a34813ca-beb1-403e-9793-d42cc9c72f8b"
/>
<img width="637" height="259" alt="Screenshot 2026-05-04 at 8 01 04 AM"
src="https://github.com/user-attachments/assets/74c2cd56-ab1d-4ddd-9b8e-22c49e9ae9d5"
/>

- Applied gitops with "" as the URLs to clear them. Verified the default
fleet logo is shown.

<img width="460" height="201" alt="Screenshot 2026-05-04 at 8 15 11 AM"
src="https://github.com/user-attachments/assets/dcbafea3-b4ea-44aa-9045-08c4f5a64e98"
/>
<img width="648" height="269" alt="Screenshot 2026-05-04 at 8 15 50 AM"
src="https://github.com/user-attachments/assets/451a28f9-e929-4b84-93d3-a7dd9afd5eca"
/>

- Applied gitops with a custom logo for light theme, using
**org_logo_path_light_mode**:

<img width="948" height="207" alt="Screenshot 2026-05-04 at 4 10 05 PM"
src="https://github.com/user-attachments/assets/b1418cd4-31cc-4e53-b566-9af11ec21970"
/>
<img width="774" height="168" alt="Screenshot 2026-05-04 at 4 10 35 PM"
src="https://github.com/user-attachments/assets/63f596eb-308f-4122-ad86-e1d718e9b525"
/>



## New Fleet configuration settings

- [x] Verified that the setting is exported via `fleetctl
generate-gitops`
- [x] Verified the setting is documented in a separate PR to [the GitOps
documentation](https://github.com/fleetdm/fleet/blob/main/docs/Configuration/yaml-files.md#L485)
- See #43808.
- [x] Verified that the setting is cleared on the server if it is not
supplied in a YAML file (or that it is documented as being optional)
- [x] Verified that any relevant UI is disabled when GitOps mode is
enabled

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* GitOps support for uploading custom org logos (dark/light) via local
files.
* `fleetctl generate-gitops` exports Fleet-hosted logos as local files
and inserts path references.
  * New API endpoints to upload, delete, and fetch org logos.

* **Deprecated**
* Legacy logo keys consolidated into mode-specific URL keys
(`org_logo_url_dark_mode`, `org_logo_url_light_mode`).

* **Bug Fixes / Validation**
* Validation/error when both a path and URL are provided for the same
mode; file size and image-format checks enforced.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

@nulmete nulmete left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rachaelshaw I think L819-832 also need updating since they're still referencing the old keys:

Image

Also, as of now I set a limit of 100KB for the uploads. (I find that's a pretty reasonable limit for logos.)
Let me know if that's OK or I should change it, and maybe worth adding a line about the size limit here as well.

Lastly, these docs just mention PNGs but my changes support PNG, JPEG/JPG, WebP and SVGs.

@rachaelshaw
rachaelshaw marked this pull request as ready for review May 13, 2026 20:00

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.

Tip: disable this comment in your organization's Code Review settings.

@rachaelshaw
rachaelshaw merged commit 34234b4 into docs-v4.86.0 May 13, 2026
6 checks passed
@rachaelshaw
rachaelshaw deleted the rachaelshaw-patch-12 branch May 13, 2026 21:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants