---
title: "Update the Grapevine intermud relay (implementor)"
description: "Look up the Dark Pawns admin API request and response contract. Sign in with a level 40 character and use the authenticated admin console session."
type: reference
audience: operators
verified: v0.1.8
canonical: https://darkpawns.org/docs/reference/api/admin/operations/put-settings-grapevine/
---

[Documentation](/docs/) / [Reference](/docs/reference/)

# Update the Grapevine intermud relay (implementor)

Look up the Dark Pawns admin API request and response contract. Sign in with a level 40 character and use the authenticated admin console session.

PUT

/admin/settings/grapevine

FetchcURL

```
const url = 'https://example.com/admin/settings/grapevine';const options = {  method: 'PUT',  headers: {'Content-Type': 'application/json'},  body: '{"client_id":"example","client_secret":"example","mode":"off","revision":1,"url":"example"}'};
try {  const response = await fetch(url, options);  const data = await response.json();  console.log(data);} catch (error) {  console.error(error);}
```

```
curl --request PUT \  --url https://example.com/admin/settings/grapevine \  --header 'Content-Type: application/json' \  --data '{ "client_id": "example", "client_secret": "example", "mode": "off", "revision": 1, "url": "example" }'
```

Every field needs a restart; the relay connects at boot. The client secret is write-only.

## Request Bodyrequired

application/json

object

**client\_id**

required

Relay client id (restart required)

string

**client\_secret**

string

**mode**

required

Grapevine intermud mode (restart required)

string

Allowed values: off presence full

**revision**

required

integer format: int64

**url**

required

Relay endpoint (restart required)

string

## Responses

### 200

OK

application/json

object

**result**

required

object

**env\_overridden**

Array<string> | null

**restart\_required**

Array<string> | null

**revision**

required

integer format: int64

**warning**

string

**view**

required

object

**access**

required

object

**admin\_cors\_origin**

required

Origin allowed to call the admin API; empty means the built-in default

string

**cors\_allowed\_origins**

required

Browser origins allowed across the game API; empty means the built-in defaults

Array<string> | null

**trusted\_proxies**

required

CIDRs whose X-Forwarded-For names the client; empty means the loopback default (restart required)

Array<string> | null

**contact**

required

object

**effective**

required

boolean

**smtp\_host**

required

SMTP host (restart required)

string

**smtp\_password\_set**

required

boolean

**smtp\_port**

required

SMTP port (restart required)

integer format: int64

**smtp\_user**

required

SMTP user (restart required)

string

**to**

required

Recipient address (restart required)

string

**turnstile\_hostnames**

required

Hostnames the Turnstile widget may serve (restart required)

Array<string> | null

**turnstile\_secret\_set**

required

boolean

**format**

required

integer format: int64

**grapevine**

required

object

**client\_id**

required

Relay client id (restart required)

string

**client\_secret\_set**

required

boolean

**mode**

required

Grapevine intermud mode (restart required)

string

Allowed values: off presence full

**url**

required

Relay endpoint (restart required)

string

**meta**

required

object

**_key_**

additional properties

object

**env\_overridden**

Array<string> | null

**restart\_fields**

required

Array<string> | null

**revision**

required

integer format: int64

**sessions**

required

object

**account\_failure\_budget**

required

Wrong-password attempts per account across IPs before refusal; 0 disables

integer format: int64

**account\_failure\_window\_minutes**

required

Window for the account failure budget

integer format: int64

**login\_idle\_timeout\_seconds**

required

Pre-auth idle drop for telnet and WebSocket (DP-912)

integer format: int64

**telnet\_max\_conns**

required

Total simultaneous telnet connections

integer format: int64

**telnet\_max\_conns\_per\_ip**

required

Simultaneous telnet connections from one address

integer format: int64

**websocket\_max\_conns\_per\_ip**

required

Simultaneous WebSocket sessions from one address

integer format: int64

**websocket\_max\_total\_conns**

required

Process-wide WebSocket session cap

integer format: int64

**staff\_push**

required

object

**min\_level**

required

Minimum immortal level pushed (restart required)

integer format: int64

**min\_type**

required

Minimum syslog type pushed (restart required)

integer format: int64

**rate\_per\_minute**

required

Push rate cap (restart required)

integer format: int64

**token\_set**

required

boolean

**url**

required

Ntfy topic URL; empty disables staff-log push (restart required)

string

#### Example

```
{  "view": {    "grapevine": {      "mode": "off"    }  }}
```

### default

Error

application/problem+json

object

**detail**

A human-readable explanation specific to this occurrence of the problem.

string

**errors**

Optional list of individual error details

Array<object> | null

object

**location**

Where the error occurred, e.g. ‘body.items\[3\].tags’ or ‘path.thing-id’

string

**message**

Error message text

string

**value**

The value at the given location

**instance**

A URI reference that identifies the specific occurrence of the problem.

string format: uri

**status**

HTTP status code

integer format: int64

**title**

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string

**type**

A URI reference to human-readable documentation for the error.

string format: uri

default: about:blank

#### Example

```
{  "detail": "Property foo is required but is missing.",  "instance": "https://example.com/error-log/abc123",  "status": 400,  "title": "Bad Request",  "type": "about:blank"}
```
