Extending Organizations

There are many ways you can extend the organization's data model in your applications: you will use this entity for the objects that are shared among the group's users.

For example, here is a popular scenario: we assume users can install integrations for their organizations. Integrations can have the following interface:

integration.ts
enum IntegrationType {
Zapier,
Notion,
// etc
}
interface Integration<IntegrationData = unknown> {
type: IntegrationType;
data: IntegrationData;
}

Then, you can extend the organization's interface and add an integrations property to Organization, and initialize it as an empty array [] when you create a new integration:

organization.ts
interface Organization {
// ...
integrations: Integration[];
}