---
title: "Save a webOLC editable file"
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-editable-file/
---

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

# Save a webOLC editable file

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/files/{root}/content

FetchcURL

```
const url = 'https://example.com/admin/files/lua/content?path=example';const options = {  method: 'PUT',  headers: {'Content-Type': 'application/json'},  body: '{"content":"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/files/lua/content?path=example' \  --header 'Content-Type: application/json' \  --data '{ "content": "example" }'
```

Replace with If-Match (the ETag you read) or create with If-None-Match: \*. A stale If-Match is 412; the write never falls back to last-writer-wins.

## Parameters

### Path Parameters

**root**

required

string

Allowed values: lua tedit

### Query Parameters

**path**

required

string

### Header Parameters

**If-Match**

ETag of the content being replaced

string

ETag of the content being replaced

**If-None-Match**

“\*” to create a file that must not exist yet

string

“\*” to create a file that must not exist yet

## Request Bodyrequired

application/json

object

**content**

required

string

### Example generated

```
{  "content": "example"}
```

## Responses

### 200

OK

application/json

object

**content**

required

string

**etag**

required

string

**path**

required

string

#### Example generated

```
{  "content": "example",  "etag": "example",  "path": "example"}
```

#### Headers

**ETag**

string

### 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"}
```
