---
title: "Update plugin, acknowledging a changed privacy disclosure"
method: POST
path: "/api/plugin/{RepoName}/upgrade"
tags: ["plugin"]
---

# Update plugin, acknowledging a changed privacy disclosure

`POST /api/plugin/{RepoName}/upgrade`

Same as GET, with a body. When the block the upgrade would land differs materially from the accepted one (see GET /api/plugin/{RepoName}/privacy) the upgrade is refused unless `privacyAccepted` matches that pending block. The pull fast-forwards to the ref the check just fetched (no second fetch), and the block is recorded as accepted afterwards, from the installed copy, only once the code has landed; if what landed is not what was accepted (a push in between) the record is dropped and the next check asks again.

## Request body

- object
  - `privacyAccepted` object, nullable — The pending privacy block as shown to the operator, or null to acknowledge that the disclosure was removed.

## Response `200`

Plugin upgraded, or refused. Refused on privacy grounds: `{"Status": "Error", "Code": "PrivacyMismatch", "Message": "...", "privacyChanged": true, "plugin": "fpp-x", "pending": {...}}`, the same shape as `POST /api/plugin`'s refusal; `pending` is the block to review (null = no disclosure). Streaming (`?stream=true`) prints the readable `ERROR:` line only -- no `@@PRIVACY-PENDING@@` marker, unlike an install.

- object
  - `Status` 'OK' | 'Error'
  - `Message` string
  - `Code` 'PrivacyMismatch' — Present only on a privacy refusal, so a script can tell it from any other error without parsing `Message`. The same field on `POST /api/plugin` and `POST /api/plugin/{RepoName}/upgrade`.
  - `privacyChanged` boolean — true on a privacy refusal.
  - `plugin` string — On a privacy refusal: the plugin (for an install, possibly a dependency plugin) whose block must be reviewed.
  - `pending` object, nullable — On a privacy refusal: the block to review (null = no disclosure); post it back as `privacyAccepted` to proceed.

## Changes

- **2026-09-14** `b6816e82545e` — 6 info
  - added the optional property `Code` to the response with the `200` status
  - added the optional property `Message` to the response with the `200` status
  - added the optional property `Status` to the response with the `200` status
  - added the optional property `pending` to the response with the `200` status
  - …2 more
- **2026-09-13** `cce5c6b943c8` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/falconchristmas/apis/fpp-api/changes/api/plugin/:RepoName/upgrade/post.md)

---

[API](https://skmtc.dev/falconchristmas/apis/fpp-api.md) · [All operations](https://skmtc.dev/falconchristmas/apis/fpp-api/llms.txt) · [OpenAPI document](https://skmtc.dev/falconchristmas/apis/fpp-api/revisions/b6816e82545e?raw)
