---
title: "Save (upsert) the dotAuth configuration for a site"
method: PUT
path: "/api/v1/dotauth/sites/{hostId}"
tags: ["dotAuth"]
---

# Save (upsert) the dotAuth configuration for a site

`PUT /api/v1/dotauth/sites/{hostId}`

## Request

- Base URL: `https://docs.anzworldline-solutions.com.au`
- URL: `https://docs.anzworldline-solutions.com.au/api/v1/dotauth/sites/{hostId}`
- Auth: none declared
- TypeScript: <https://skmtc.dev/anzworldline-solutions/apis/dotcms-rest-api/docs/api/v1/dotauth/sites/:hostId/put.ts> (a function with typed inputs; its response is checked against the schema)

Writes the chosen protocol's secrets for the given hostId and deletes the other protocol's row for that host (mutual exclusion). Posting "****" on a hidden field preserves the stored value.

## Path parameters

- `hostId` string, required

## Request body

- DotAuthConfigForm
  - `protocol` 'OAUTH' | 'SAML'
  - `values` object, required

## Response `200`

Configuration saved successfully

- ResponseEntityStringView
  - `errors` ErrorEntity[]
    - `errorCode` string
    - `message` string
    - `fieldName` string
  - `entity` string
  - `messages` MessageEntity[]
    - `message` string
  - `i18nMessagesMap` object
  - `permissions` string[]
  - `pagination` Pagination
    - `currentPage` integer
    - `perPage` integer
    - `totalEntries` integer

## Other responses

- `400`: Invalid form payload
- `401`: Authentication required
- `403`: User does not have permission to edit this site
- `404`: Site not found
- `500`: Internal server error

## Changes

- **2026-10-30** `4fd8e917d458`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/anzworldline-solutions/apis/dotcms-rest-api/changes/api/v1/dotauth/sites/:hostId/put.md)

---

[API](https://skmtc.dev/anzworldline-solutions/apis/dotcms-rest-api.md) - [All operations](https://skmtc.dev/anzworldline-solutions/apis/dotcms-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/anzworldline-solutions/apis/dotcms-rest-api/revisions/4fd8e917d458?raw)
