# Thing

URL: /business/nouns/thing · Id: `noun:thing`

> A Thing is an instance of one or more Nouns, with an identity, a current state, and the union of their properties.

A Thing is an instance of one or more [Nouns](/business/nouns/noun), with an identity, a current state, and the union of their properties.

## Properties
| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | Yes | The stable identifier, which never changes. |
| `type` | list of [Noun](/business/nouns/noun) | Yes | The Nouns this Thing is an instance of. |
| `state` | `string` | No | The current state in its lifecycle. |
| `outside` | `json` | No | The ids this Thing has in outside tools, one per Integration, so a re-run matches instead of duplicating. |

## Object
```json
{
  "$id": "https://api.sb/quietcopy.com/things/thing_1",
  "$type": "Thing",
  "id": "Example id",
  "type": [
    "noun_1"
  ],
  "state": "Example state",
  "outside": {}
}
```

## Relationships
- <a id="rel-acted-on-by"></a>A Thing **is acted on by** many [Actions](/business/nouns/action): the Thing an [Action](/business/nouns/action) changes; a Thing’s history is the Actions that acted on it. `actedOnBy`, inverse [`actsOn`](/business/nouns/action#rel-acts-on).
- <a id="rel-aims-for"></a>A Thing **aims for** many [Goals](/business/nouns/goal): every Thing pursues [Goals](/business/nouns/goal), such as a [Startup](/business/nouns/startup)’s quarterly objective or a [Team](/business/nouns/team)’s weekly target. `aimsFor`, inverse [`heldBy`](/business/nouns/goal#rel-held-by).
- <a id="rel-comments"></a>A Thing **has** many [Comments](/business/nouns/comment): a [Comment](/business/nouns/comment) is an internal note on one Thing, never sent to a [Contact](/business/nouns/contact). `comments`, inverse [`annotates`](/business/nouns/comment#rel-annotates).
- <a id="rel-configured-by"></a>A Thing **is configured by** many [Settings](/business/nouns/setting): the Thing whose choice a [Setting](/business/nouns/setting) holds; everything below it inherits the value unless it sets its own. `configuredBy`, inverse [`configures`](/business/nouns/setting#rel-configures).
- <a id="rel-dashboards"></a>A Thing **has** many [Dashboards](/business/nouns/dashboard): a [Dashboard](/business/nouns/dashboard) summarizes one scope, such as a [Studio](/business/nouns/studio), a [Startup](/business/nouns/startup), a [Team](/business/nouns/team), or a [Role](/business/nouns/role). `dashboards`, inverse [`views`](/business/nouns/dashboard#rel-views).
- <a id="rel-decided-by"></a>A Thing **is decided by** many [Decisions](/business/nouns/decision): a [Decision](/business/nouns/decision) records one choice about a Thing and stays on that Thing’s record forever. `decidedBy`, inverse [`decides`](/business/nouns/decision#rel-decides).
- <a id="rel-instance-of"></a>A Thing **is an instance of** many [Nouns](/business/nouns/noun): a Thing takes the properties, relationships and [Verbs](/business/nouns/verb) of every [Noun](/business/nouns/noun) it is an instance of. `instanceOf`, inverse [`instances`](/business/nouns/noun#rel-instances).
- <a id="rel-issues"></a>A Thing **has** many [Issues](/business/nouns/issue): an [Issue](/business/nouns/issue) is about one Thing, such as a [Product](/business/nouns/product), a [Page](/business/nouns/page), or an [Order](/business/nouns/order). `issues`, inverse [`reports`](/business/nouns/issue#rel-reports).
- <a id="rel-member-of"></a>A Thing **is a member of** many [Collections](/business/nouns/collection): Members are listed one by one or matched by the [Collection](/business/nouns/collection)’s saved query; a Thing can belong to many Collections. `memberOf`, inverse [`contains`](/business/nouns/collection#rel-contains).
- <a id="rel-versioned-as"></a>A Thing **is versioned as** many [Versions](/business/nouns/version): every published change to a Thing’s definition is an immutable [Version](/business/nouns/version), kept forever. `versionedAs`, inverse [`versionOf`](/business/nouns/version#rel-version-of).

## Verbs
| Verb | Description | Subject | Event | Class |
| --- | --- | --- | --- | --- |
| [Thing.relate](/business/nouns/thing/relate) | Relate links two Things by a Relationship their Nouns declare, readable from both ends at once. | [Data Engineer](/agents/engineering/data-engineer) | [`Thing.related`](/business/events/Thing.related) | Two-way: `try`, `send`, `do` |
| [Thing.resolve](/business/nouns/thing/resolve) | Resolve finds the one Thing of a Noun that matches given properties, or creates it, and says which it did. | [Data Engineer](/agents/engineering/data-engineer) | [`Thing.resolved`](/business/events/Thing.resolved) | Two-way: `try`, `send`, `do` |
| [Thing.share](/business/nouns/thing/share) | Share grants a person, a Role or a guest Verbs on one record and everything it contains. | [Security Engineer](/agents/engineering/security-engineer) | [`Thing.shared`](/business/events/Thing.shared) | Two-way: `try`, `send`, `do` |
| [Thing.unrelate](/business/nouns/thing/unrelate) | Unrelate ends a Relationship between two Things; the link stays in history and reads back at any earlier moment. | [Data Engineer](/agents/engineering/data-engineer) | [`Thing.unrelated`](/business/events/Thing.unrelated) | Two-way: `try`, `send`, `do` |
| <a id="create"></a>[Thing.create](/business/nouns/thing/create) | Creates a Thing. Inherited from [Noun](/business/nouns/noun). | None. | `Thing.created` | Two-way: `try`, `send`, `do` |
| <a id="get"></a>[Thing.get](/business/nouns/thing/get) | Returns one Thing by id. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="list"></a>[Thing.list](/business/nouns/thing/list) | Returns Things, newest first, one page at a time. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="update"></a>[Thing.update](/business/nouns/thing/update) | Changes the given properties of a Thing. Inherited from [Noun](/business/nouns/noun). | None. | `Thing.updated` | Two-way: `try`, `send`, `do` |
| <a id="delete"></a>[Thing.delete](/business/nouns/thing/delete) | Deletes a Thing; its history is kept. Inherited from [Noun](/business/nouns/noun). | None. | `Thing.deleted` | One-way: `send`, `do` |

## Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.

| Operation | `owner` | `admin` | `member` | `viewer` |
| --- | --- | --- | --- | --- |
| `Thing.create` | Yes | Yes | Yes | No |
| `Thing.get` | Yes | Yes | Yes | Yes |
| `Thing.list` | Yes | Yes | Yes | Yes |
| `Thing.update` | Yes | Yes | Yes | No |
| `Thing.delete` | Yes | Yes | Yes | No |
| `Thing.relate` | Yes | Yes | Yes | No |
| `Thing.resolve` | Yes | Yes | Yes | No |
| `Thing.share` | Yes | Yes | Yes | No |
| `Thing.unrelate` | Yes | Yes | Yes | No |

## Call it

**Ask**

```text
Share the latest thing with a party.
```

**API**

```bash
curl -X POST https://api.sb/ledgerlark.com/things/thing_1/share \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to":"party_1","verbs":["Example verbs"]}'
```

```json
{
  "api": "https://api.sb/ledgerlark.com",
  "permission": {
    "$id": "https://api.sb/ledgerlark.com/permissions/permission_1",
    "$type": "Permission",
    "scope": "Example scope"
  },
  "thing": {
    "$id": "https://api.sb/ledgerlark.com/things/thing_1",
    "$type": "Thing",
    "id": "Example id",
    "type": [
      "noun_1"
    ]
  },
  "action": {
    "$id": "https://api.sb/ledgerlark.com/actions/action_1",
    "operation": "Thing.share",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/ledgerlark.com/actions/action_1"
  }
}
```

**SDK**

```ts
import { $ } from 'startup-builder'

const { permission, thing } = await $.Thing.share({ thing: 'thing_1', to: 'party_1', verbs: ['Example verbs'] })
```

**CLI**

```bash
npx startup-builder do Thing.share --json '{"thing":"thing_1","to":"party_1","verbs":["Example verbs"]}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Thing.share({ thing: 'thing_1', to: 'party_1', verbs: ['Example verbs'] })"
  }
}
```

## Example
One recruiting agency is a single Thing that is both an [Organization](/business/nouns/organization) and a [Customer](/business/nouns/customer), with one `id` and the properties of both Nouns.