---
title: "Create or replace one app's content"
method: PUT
path: "/v1/admin/integration-content/{app_slug}"
tags: ["admin"]
---

# Create or replace one app's content

`PUT /v1/admin/integration-content/{app_slug}`

## Request

- Base URL: `https://api.patricia.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.patricia.app/v1/admin/integration-content/{app_slug}`
- Auth: HTTP bearer

Upsert the full Connect-sheet content for one app. Em dashes are rejected (422).

## Path parameters

- `app_slug` string, required: The catalog app slug.

## Request body

- IntegrationContentUpsertRequest: Full replace of one app's sheet content (staff editor PUT body).
  - `description` string
  - `tools` IntegrationToolBlurb[]
    - `name` string, required
    - `description` string
    - `mode` 'auto' | 'ask_first'
  - `data_access` string[]
  - `requirements` string[]

## Response `200`

Successful Response

- IntegrationContentResponse: Full authored row for the admin editor.
  - `id` string, uuid, required
  - `app_slug` string, required
  - `description` string, required
  - `tools` IntegrationToolBlurb[], required
    - `name` string, required
    - `description` string
    - `mode` 'auto' | 'ask_first'
  - `data_access` string[], required
  - `requirements` string[], required
  - `updated_by` string, uuid, nullable
  - `updated_at` string, date-time, required

## Other responses

- `401`: Unauthorized
- `403`: Permission denied (PERMISSION_DENIED) or email not verified (EMAIL_NOT_VERIFIED)
- `404`: Not found
- `409`: Conflict: admin write rejected on a state invariant. Inspect ``errors[0].type`` for the specific case (for example: ``self_action_forbidden``, ``already_disabled``, ``not_disabled``, ``last_internal_admin``, ``value_error``)
- `422`: Validation error

---

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