# Platform (/entities/platform)



Automation, integrations, AI agents that run the business.

Workflow [#workflow]

Automation rules — event-triggered multi-step workflows with retry and error handling.

```typescript
import { Noun } from 'digital-objects'

export const Workflow = Noun('Workflow', {
  name: 'string!',
  description: 'string',
  organization: '-> Organization',
  trigger: 'string!',
  steps: 'string',
  retryPolicy: 'string',
  errorHandling: 'Stop | Continue | Fallback',
  timeout: 'number',
  status: 'Draft | Active | Paused | Archived',
  version: 'number',
  lastRunAt: 'datetime',
  runCount: 'number',
  successCount: 'number',
  failureCount: 'number',
  activate: 'Activated',
  pause: 'Paused',
  archive: 'Archived',
})
```

| Verb       | Event       | Description            |
| ---------- | ----------- | ---------------------- |
| `activate` | `Activated` | Set workflow to active |
| `pause`    | `Paused`    | Temporarily suspend    |
| `archive`  | `Archived`  | Archive for reference  |

Integration [#integration]

External connections — Stripe, GitHub, Slack, WorkOS.

```typescript
export const Integration = Noun('Integration', {
  name: 'string!',
  slug: 'string##',
  description: 'string',
  provider: 'string!',
  providerUrl: 'string',
  providerLogo: 'string',
  category: 'Payment | CRM | Marketing | Analytics | Communication | Storage | AI | Other',
  authType: 'OAuth2 | ApiKey | Basic | Custom',
  oauthScopes: 'string',
  configSchema: 'string',
  status: 'Available | ComingSoon | Deprecated',
  featured: 'string',
  apiBaseUrl: 'string',
  webhookSupport: 'string',
  connect: 'Connected',
  disconnect: 'Disconnected',
})
```

| Verb         | Event          | Description               |
| ------------ | -------------- | ------------------------- |
| `connect`    | `Connected`    | Establish the integration |
| `disconnect` | `Disconnected` | Remove the integration    |

Agent [#agent]

AI agents with model configuration, tool access, and usage tracking.

```typescript
export const Agent = Noun('Agent', {
  name: 'string!',
  slug: 'string##',
  description: 'string',
  avatar: 'string',
  organization: '-> Organization',
  owner: '-> Contact',
  model: 'string',
  systemPrompt: 'string',
  instructions: 'string',
  persona: 'string',
  type: 'Assistant | Autonomous | Workflow | Specialist | Router',
  status: 'Draft | Active | Paused | Archived',
  visibility: 'Private | Team | Organization | Public',
  temperature: 'number',
  maxTokens: 'number',
  tools: 'string',
  functions: 'string',
  knowledgeBases: 'string',
  memory: 'None | Session | Persistent',
  memoryWindow: 'number',
  totalTokens: 'number',
  totalCost: 'number',
  averageLatency: 'number',
  successRate: 'number',
  rating: 'number',
  ratingCount: 'number',
  version: 'number',
  publishedAt: 'datetime',
  tags: 'string',
  deploy: 'Deployed',
  pause: 'Paused',
  retire: 'Retired',
})
```

| Verb     | Event      | Description         |
| -------- | ---------- | ------------------- |
| `deploy` | `Deployed` | Activate the agent  |
| `pause`  | `Paused`   | Temporarily suspend |
| `retire` | `Retired`  | Retire the agent    |
