---
title: "Areas · intentic sandbox API"
description: "The named parts of the workspace a teammate's reach is granted in. Every route in the areas group of the intentic sandbox API."
url: "https://intentic.dev/api/areas/"
---

The workspace

# Areas

The named parts of the workspace a teammate's reach is granted in

**On this page (3 sections)**

- [The named parts of the workspace](#areas-list)
- [Create or edit an area](#areas-save)
- [Delete an area](#areas-remove)

An area is a name over a set of folders, and it is the unit access is handed out in: widening what a team sees is one edit here rather than one edit per person. Reading them is anybody's, since a fenced person is shown the name of the fence they are behind; writing one changes who sees what on their next request, so both writes are the sandbox owner's. An area people still hold cannot be deleted, because a grant pointing at nothing is a fence with no answer.

**GET`/areas` The named parts of the workspace**

Each area with the folders it admits. Access is granted in these rather than in folder lists per person, so widening what a team sees is one edit here instead of one edit per member.

### What you send

Nothing. Call it as it is.

### What comes back

| Field | Type |
| --- | --- |
| `areas` Every named part of the workspace… | object[] |
| `id` The area's id, the name a… | string |
| `label` What to call it on screen | string |
| `brief` What this part of the workspace… | string |
| `folders` The folders it admits, workspace-relative | string[] |

Try it answered in this tab

curl

```bash
curl "$SANDBOX/areas" \
 -H "x-intentic-control: $INTENTIC_TOKEN"
```

TypeScript

```typescript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.areas.list();
```

**POST`/areas` Create or edit an area**

Writes the whole area; sending an id that exists edits it. Editing the folders of an area people already hold changes what those people see on their next request, which is why this is the sandbox owner's to do and why the file it writes is tracked and reviewable.

### What you send

| Field | Type | Where |
| --- | --- | --- |
| `id` required The area's id, the name a… | string | body |
| `label` What to call it on screen | string | body |
| `brief` What this part of the workspace… | string | body |
| `folders` required The folders it admits, workspace-relative | string[] | body |

### What comes back

| Field | Type |
| --- | --- |
| `ok` Always true | true |

Try it answered in this tab

curl

```bash
curl -X POST "$SANDBOX/areas" \
 -H "x-intentic-control: $INTENTIC_TOKEN" \
 -H "content-type: application/json" \
 -d '{"id":"a1b2c3d4","label":"Nightly changelog","brief":"…","folders":["…","…"]}'
```

TypeScript

```typescript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.areas.save({
 "id": "a1b2c3d4",
 "label": "Nightly changelog",
 "brief": "…",
 "folders": [
 "…",
 "…"
 ]
});
```

**DELETE`/areas/{id}` Delete an area**

Removes the name and the folders behind it. Refused while a member still points at it, since nobody chose what such a row should then mean; move them onto another area first, or off areas entirely.

### What you send

| Field | Type | Where |
| --- | --- | --- |
| `id` required Which area | string | address |

### What comes back

| Field | Type |
| --- | --- |
| `ok` Always true | true |

Try it answered in this tab

curl

```bash
curl -X DELETE "$SANDBOX/areas/a1b2c3d4" \
 -H "x-intentic-control: $INTENTIC_TOKEN"
```

TypeScript

```typescript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.areas.remove({
 "id": "a1b2c3d4"
});
```

More in The workspace

[Previous ← Ports](https://intentic.dev/api/ports/)
