# revoke_share

Stop a share link to a theme or layout, by its id from list_shares (not a log share).

## What it is for

`revoke_share` stops one share link to a theme or layout, by its id. Anyone opening the address afterwards finds it no longer works. These are links made by [share_appearance](share_appearance.md) (an import link `#/import/<code>`), not log shares: no connector tool stops a share of a log or profile, and what others shared with the shooter is read with [list_shared_with_me](list_shared_with_me.md). It changes no theme or layout and takes back no copy.

## What to know first

**It takes the link's id from [list_shares](list_shares.md).** Not the name, not the address. Two links to one theme have one name and different ids.

**A stopped link stays stopped.** It never reopens. Revoking it again is refused the same way as an id that is no link.

**Copies already imported stay theirs.** Stopping a link ends new previews and imports, a shared picture included.

**A miss is refused, with the id said back as given:** `No active share link <id>`, for an unknown id, a stopped link, a name, an address. `.`, `..` or an id with a `/` gets `That id isn't valid.` Nothing is stopped either way.

**There is no undo.** For the same theme again the shooter needs a new link with a new address.

## Generated table

**Tool:** `revoke_share` · **Family:** Appearance · **Scope:** `appearance` · **Save scope:** none · **Changes:** share links (one made or stopped on the server; no theme, layout or other record is saved) · **Runs:** no solver work in the connector

**Description** (what the connector sends to an assistant, word for word):

```text
Stop a share link to a theme or layout, by its id from list_shares (not a log share). To make a new link use share_appearance. Saves the link as stopped, and it stays stopped; needs the appearance permission. Copies already imported stay theirs. Guide: revoke_share.
```

**Inputs** (1; read from the input schema the connector sends):

| Input | Type | Required | Bounds | Field |
|---|---|---|---|---|
| `id` | text | yes | at least 1 character | - (selects a record) |

**Sent with the inputs** (each input's own description, word for word; an input not listed is sent without one):

```text
id: The id of the link as list_shares gives it (not the name, not the address)
```

## When to use it, and when not

| The shooter wants | Use | Why |
|---|---|---|
| A link they made stopped | `revoke_share` | By id |
| To find the id, or see which links run | [list_shares](list_shares.md) | Lists with ids and import counts |
| A new link | [share_appearance](share_appearance.md) | Makes one |
| A theme or layout deleted | [the family page](appearance.md) | No tool deletes one; that is in the app |
| To see what others share with them | [list_shared_with_me](list_shared_with_me.md) | Those are log shares; no tool stops or hides one |

If the shooter names a link only by what it shares, call `list_shares` first; ask which if two match.

## The inputs

**`id`** is the share link id, one or more characters. The tool sends it to the server as typed and checks nothing about its shape. The server matches it in capitals or without its hyphens too.

## What it returns

Spoken: `Revoked the link to '<name>'. Copies people already imported stay theirs.` A name that is a short code stands in the tool's own apostrophes; any other is in quotation marks, cut to 40 characters ([the connector overview](connector.md), "How a reply is shaped"). The details are `share_id` and `revoked_at` (when it was stopped).

## Worked examples

In these examples the ids are the made-up account's; a real id is 36 characters.

Every example below was run by the documentation generator against a made-up account, never a real one. Numbers are rounded to three places; generated ids and times are shown as placeholders. Two things are printed more briefly than the tool sent them, and nothing else is changed. A list of plain values stands on one line, whole up to 12 entries (a longer one, and a list of objects past 3, ends with a count of the rest). A reply that puts stored text in quotation marks also carries a note saying so, which an example leaves out and marks instead; no reply below carried it.

## When it refuses

| Reply starts | Cause | Tell or ask |
|---|---|---|
| `No active share link` and the id, then `list_shares shows them.` | No running link of the account has that id | Offer `list_shares` |
| `That id isn't valid.` | The id was `.` or `..`, or held a `/`; nothing was sent to the server (since 2026-10-15) | Call `list_shares` and use an id from it |

Any other failure of the server is not worded by the tool: the reply is the server's own answer in quotation marks, braces included, with the note about stored text. Say that nothing was stopped. An empty `id` is turned away by the input check ([the connector overview](connector.md)). A name is not an id and is refused the same way.

## What it reads and changes

**Changes** one share link on the server: it is marked stopped, with the time. **Reads** nothing else. It touches no theme, layout, setting or device.

## Below this page

- [list_shares](list_shares.md): the ids.
- [share_appearance](share_appearance.md): a new link.
- [list_shared_with_me](list_shared_with_me.md): the other kind of sharing.
- [the connector overview](connector.md), [the family page](appearance.md)

## Worked examples

**1. A running link, then the same link again**

Starting point: a theme at version 2, a layout, one uploaded image of 48 kB, two share links (one for the theme, and a later one for the layout that was stopped) and one phone. Link scopes: `read`, `appearance`.

Call 1:
```json
{"id":"9b4e7a20c5d1f836"}
```

Spoken line:
```text
Revoked the link to 'Dusk'. Copies people already imported stay theirs.
```

Details:
```json
{
 "share_id": "9b4e7a20c5d1f836",
 "revoked_at": "(a time)"
}
```

Stopped a share link: a row on the server. No theme, layout or other record was saved.

Call 2:
```json
{"id":"9b4e7a20c5d1f836"}
```

The tool refuses:
```text
No active share link 9b4e7a20c5d1f836. list_shares shows them.
```

**2. A link that was already stopped**

Starting point: a theme at version 2, a layout, one uploaded image of 48 kB, two share links (one for the theme, and a later one for the layout that was stopped) and one phone. Link scopes: `read`, `appearance`.

Call:
```json
{"id":"3d8a1c6e92b7f054"}
```

The tool refuses:
```text
No active share link 3d8a1c6e92b7f054. list_shares shows them.
```

**3. An id that is no link**

Starting point: a theme at version 2, a layout, one uploaded image of 48 kB, two share links (one for the theme, and a later one for the layout that was stopped) and one phone. Link scopes: `read`, `appearance`.

Call:
```json
{"id":"fixture-none"}
```

The tool refuses:
```text
No active share link fixture-none. list_shares shows them.
```

**4. One of twenty-three links**

Starting point: one theme, one layout and twenty-three share links for the theme, made on twenty-three days running, the two oldest stopped. Link scopes: `read`, `appearance`.

Call:
```json
{"id":"9b4e7a20c5d1f823"}
```

Spoken line:
```text
Revoked the link to 'Dusk'. Copies people already imported stay theirs.
```

Details:
```json
{
 "share_id": "9b4e7a20c5d1f823",
 "revoked_at": "(a time)"
}
```

Stopped a share link: a row on the server. No theme, layout or other record was saved.

---

[All reference pages](index.md)
