# Supplier

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

> A Supplier is a Person or Company that delivers work through a Startup’s human supply: recruited, credentialed, and paid out.

A Supplier is a [Person](/business/nouns/person) or [Company](/business/nouns/company) that delivers work through a [Startup](/business/nouns/startup)’s human supply: recruited, credentialed, and paid out.

## Properties
| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `status` | `string` | Yes | One of `recruited`, `onboarded`, `active`, or `suspended`. |
| `payoutAccount` | `string` | No | Where payouts land, held through Stripe. |

<details>
<summary>Inherited from [Party](/business/nouns/party): 1 property</summary>

| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | `string` | Yes | The legal or personal name. |

</details>

## Object
```json
{
  "$id": "https://api.sb/kilnbakery.com/suppliers/supplier_1",
  "$type": "Supplier",
  "name": "Kiln Bakery",
  "status": "recruited",
  "payoutAccount": "Example payout account"
}
```

## Relationships
- <a id="rel-delivers"></a>A Supplier **delivers** many [Services](/business/nouns/service): Suppliers staff [Services](/business/nouns/service) through the [Startup](/business/nouns/startup)’s human supply. `delivers`, inverse [`suppliedBy`](/business/nouns/service#rel-supplied-by).
- <a id="rel-holds"></a>A Supplier **holds** many [Credentials](/business/nouns/credential): the [Credentials](/business/nouns/credential) a Supplier holds decide which [Reserved Acts](/business/nouns/reserved-act) it may perform; standing is read fresh on every use. `holds`, inverse [`heldBySupplier`](/business/nouns/credential#rel-held-by-supplier).

## Verbs
| Verb | Description | Subject | Event | Class |
| --- | --- | --- | --- | --- |
| <a id="create"></a>[Supplier.create](/business/nouns/supplier/create) | Creates a Supplier. Inherited from [Noun](/business/nouns/noun). | None. | `Supplier.created` | Two-way: `try`, `send`, `do` |
| <a id="get"></a>[Supplier.get](/business/nouns/supplier/get) | Returns one Supplier by id. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="list"></a>[Supplier.list](/business/nouns/supplier/list) | Returns Suppliers, newest first, one page at a time. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="update"></a>[Supplier.update](/business/nouns/supplier/update) | Changes the given properties of a Supplier. Inherited from [Noun](/business/nouns/noun). | None. | `Supplier.updated` | Two-way: `try`, `send`, `do` |
| <a id="delete"></a>[Supplier.delete](/business/nouns/supplier/delete) | Deletes a Supplier; its history is kept. Inherited from [Noun](/business/nouns/noun). | None. | `Supplier.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` |
| --- | --- | --- | --- | --- |
| `Supplier.create` | Yes | Yes | Yes | No |
| `Supplier.get` | Yes | Yes | Yes | Yes |
| `Supplier.list` | Yes | Yes | Yes | Yes |
| `Supplier.update` | Yes | Yes | Yes | No |
| `Supplier.delete` | Yes | Yes | Yes | No |

## Call it

**Ask**

```text
Add a supplier to PetPantry.
```

**API**

```bash
curl -X POST https://api.sb/petpantry.shop/suppliers \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"PetPantry"}'
```

```json
{
  "api": "https://api.sb/petpantry.shop",
  "supplier": {
    "$id": "https://api.sb/petpantry.shop/suppliers/supplier_1",
    "$type": "Supplier",
    "name": "PetPantry",
    "status": "recruited"
  },
  "action": {
    "$id": "https://api.sb/petpantry.shop/actions/action_1",
    "operation": "Supplier.create",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/petpantry.shop/actions/action_1"
  }
}
```

**SDK**

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

const supplier = await $.Supplier.create({ name: 'PetPantry' })
```

**CLI**

```bash
npx startup-builder do Supplier.create --json '{"name":"PetPantry"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Supplier.create({ name: 'PetPantry' })"
  }
}
```

## Example
A licensed home inspector recruited by an inspection-booking network is a Supplier. She holds her state [Credential](/business/nouns/credential), takes assigned bookings, and is paid out to her `payoutAccount` after each accepted report.