Kaizen
Browse modulesInsightsinsights/serverClasses

Class: ReportScheduleRepository

Defined in: server/insights/report-schedule-repository.ts:295

Base repository providing transaction routing, audit-field helpers, and opt-in activity logging. Extend one of the specialized classes instead of using this directly:

  • ReadRepository — read-only
  • WriteRepository — create + update (append-only)
  • CrudRepository — full CRUD (most common)
  • VersionRepository — parent-child versioning

TClient is the consumer's generated Prisma client (for model accessors on this.tx). TTx is the transaction handle type (the inner argument of prisma.$transaction(fn)); it defaults to TClient because modern Prisma transaction handles are structurally compatible with the top-level client apart from the $-prefixed control methods.

Extends

Constructors

Constructor

new ReportScheduleRepository(prismaClient: PrismaClientLike<Tx<PrismaClient<PrismaClientOptions, never, DefaultArgs>>> & PrismaClient<PrismaClientOptions, never, DefaultArgs>, options?: RepositoryOptions): ReportScheduleRepository;

Defined in: server/persistence/base-repository.ts:68

Parameters

ParameterType
prismaClientPrismaClientLike<Tx<PrismaClient<PrismaClientOptions, never, DefaultArgs>>> & PrismaClient<PrismaClientOptions, never, DefaultArgs>
optionsRepositoryOptions

Returns

ReportScheduleRepository

Inherited from

BaseRepository.constructor

Properties

ENTITY_TYPE?

protected readonly optional ENTITY_TYPE?: string;

Defined in: server/persistence/base-repository.ts:61

Set ENTITY_TYPE in child repositories to enable automatic activity logging. When set, create/update/delete operations auto-log unless silenced with .silent. Requires an activity model on the consumer's Prisma schema.

Inherited from

BaseRepository.ENTITY_TYPE


logger?

protected readonly optional logger?: Logger;

Defined in: server/persistence/base-repository.ts:64

Inherited from

BaseRepository.logger


prismaClient

protected prismaClient: PrismaClientLike<Tx<PrismaClient<PrismaClientOptions, never, DefaultArgs>>> & PrismaClient<PrismaClientOptions, never, DefaultArgs>;

Defined in: server/persistence/base-repository.ts:69

Inherited from

BaseRepository.prismaClient

Accessors

actorId

Get Signature

get protected actorId(): string | null | undefined;

Defined in: server/persistence/base-repository.ts:76

Returns

string | null | undefined

Inherited from

BaseRepository.actorId


auditCreate

Get Signature

get protected auditCreate(): {
  createdBy: string | null | undefined;
  updatedBy: string | null | undefined;
};

Defined in: server/persistence/base-repository.ts:90

Returns
{
  createdBy: string | null | undefined;
  updatedBy: string | null | undefined;
}
createdBy
createdBy: string | null | undefined = actorId;
updatedBy
updatedBy: string | null | undefined = actorId;

Inherited from

BaseRepository.auditCreate


auditDelete

Get Signature

get protected auditDelete(): {
  deletedAt: Date;
  deletedBy: string | null | undefined;
};

Defined in: server/persistence/base-repository.ts:99

Returns
{
  deletedAt: Date;
  deletedBy: string | null | undefined;
}
deletedAt
deletedAt: Date;
deletedBy
deletedBy: string | null | undefined;

Inherited from

BaseRepository.auditDelete


auditUpdate

Get Signature

get protected auditUpdate(): {
  updatedBy: string | null | undefined;
};

Defined in: server/persistence/base-repository.ts:95

Returns
{
  updatedBy: string | null | undefined;
}
updatedBy
updatedBy: string | null | undefined;

Inherited from

BaseRepository.auditUpdate


silent

Get Signature

get silent(): this;

Defined in: server/persistence/base-repository.ts:115

Suppress activity logging for the next mutation call. One-shot: the flag is consumed by the next create/update/delete.

Example
await repo.silent.update(id, data);   // no activity logged
await repo.update(id, data);          // activity logged normally
Returns

this

Inherited from

BaseRepository.silent


tx

Get Signature

get protected tx(): TTx;

Defined in: server/persistence/base-repository.ts:86

The current Prisma handle: the active transaction if one is running on this async context, otherwise the raw client.

Returns

TTx

Inherited from

BaseRepository.tx

Methods

assertSchemaGenerated()

assertSchemaGenerated(): void;

Defined in: server/insights/report-schedule-repository.ts:307

Fail fast if the consumer's Prisma client lacks either scheduling model. Probed via property access (not in) so proxied per-test transaction clients resolve — same rationale as assertInsightsSchemaGenerated. Called from the scheduling service's constructor so ONLY consumers who wire scheduling pay the requirement; the base insights server does not.

Returns

void


consumeSilent()

protected consumeSilent(): boolean;

Defined in: server/persistence/base-repository.ts:128

Consume and reset the silent flag. Called by template methods.

Returns

boolean

Inherited from

BaseRepository.consumeSilent


create()

create(input: {
  config:   | {
     cadence: "daily";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
   }
     | {
     cadence: "weekly";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
     weekdays: number[];
   }
     | {
     cadence: "monthly";
     dayOfMonth: number | "last";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
   }
     | {
     cadence: "custom";
     cron: string;
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timezone: string;
   };
  enabled?: boolean;
  id?: string;
  name?: string | null;
  organizationId: string;
  savedReportId: string;
  userId: string;
}): Promise<ReportSchedule>;

Defined in: server/insights/report-schedule-repository.ts:590

Parameters

ParameterType
input{ config: | { cadence: "daily"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "weekly"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; weekdays: number[]; } | { cadence: "monthly"; dayOfMonth: number | "last"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "custom"; cron: string; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timezone: string; }; enabled?: boolean; id?: string; name?: string | null; organizationId: string; savedReportId: string; userId: string; }
input.config| { cadence: "daily"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "weekly"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; weekdays: number[]; } | { cadence: "monthly"; dayOfMonth: number | "last"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "custom"; cron: string; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timezone: string; }
input.enabled?boolean
input.id?string
input.name?string | null
input.organizationIdstring
input.savedReportIdstring
input.userIdstring

Returns

Promise<ReportSchedule>


createDashboard()

createDashboard(input: {
  config:   | {
     cadence: "daily";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
   }
     | {
     cadence: "weekly";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
     weekdays: number[];
   }
     | {
     cadence: "monthly";
     dayOfMonth: number | "last";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
   }
     | {
     cadence: "custom";
     cron: string;
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timezone: string;
   };
  dashboardKey: string;
  enabled?: boolean;
  id?: string;
  name?: string | null;
  organizationId: string;
  userId: string;
  view: {
     bucket?: "year" | "month" | "day" | "week" | "quarter";
     filters: Record<string, 
        | {
        from: string;
        kind: "date-range";
        to: string | null;
      }
        | {
        kind: "select";
        values: string[];
      }
        | {
        kind: "measure";
        operator: "gt" | "lt" | "gte" | "lte" | "eq";
        value: number;
      }
        | {
        kind: "search";
        text: string;
      }
       | undefined>;
     range?: {
        from: string;
        to: string;
     };
  };
}): Promise<DashboardSchedule>;

Defined in: server/insights/report-schedule-repository.ts:606

Parameters

ParameterType
input{ config: | { cadence: "daily"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "weekly"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; weekdays: number[]; } | { cadence: "monthly"; dayOfMonth: number | "last"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "custom"; cron: string; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timezone: string; }; dashboardKey: string; enabled?: boolean; id?: string; name?: string | null; organizationId: string; userId: string; view: { bucket?: "year" | "month" | "day" | "week" | "quarter"; filters: Record<string, | { from: string; kind: "date-range"; to: string | null; } | { kind: "select"; values: string[]; } | { kind: "measure"; operator: "gt" | "lt" | "gte" | "lte" | "eq"; value: number; } | { kind: "search"; text: string; } | undefined>; range?: { from: string; to: string; }; }; }
input.config| { cadence: "daily"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "weekly"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; weekdays: number[]; } | { cadence: "monthly"; dayOfMonth: number | "last"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "custom"; cron: string; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timezone: string; }
input.dashboardKeystring
input.enabled?boolean
input.id?string
input.name?string | null
input.organizationIdstring
input.userIdstring
input.view{ bucket?: "year" | "month" | "day" | "week" | "quarter"; filters: Record<string, | { from: string; kind: "date-range"; to: string | null; } | { kind: "select"; values: string[]; } | { kind: "measure"; operator: "gt" | "lt" | "gte" | "lte" | "eq"; value: number; } | { kind: "search"; text: string; } | undefined>; range?: { from: string; to: string; }; }
input.view.bucket?"year" | "month" | "day" | "week" | "quarter"
input.view.filtersRecord<string, | { from: string; kind: "date-range"; to: string | null; } | { kind: "select"; values: string[]; } | { kind: "measure"; operator: "gt" | "lt" | "gte" | "lte" | "eq"; value: number; } | { kind: "search"; text: string; } | undefined>
input.view.range?{ from: string; to: string; }
input.view.range.fromstring
input.view.range.tostring

Returns

Promise<DashboardSchedule>


delete()

delete(input: {
  id: string;
  organizationId: string;
  userId: string;
}): Promise<number>;

Defined in: server/insights/report-schedule-repository.ts:736

Parameters

ParameterType
input{ id: string; organizationId: string; userId: string; }
input.idstring
input.organizationIdstring
input.userIdstring

Returns

Promise<number>


disableOrphaned()

disableOrphaned(input: {
  id: string;
  organizationId: string;
}): Promise<void>;

Defined in: server/insights/report-schedule-repository.ts:828

Disable a schedule as a SYSTEM write (no owner check), used by the worker when a fire discovers the underlying saved report is gone. Saved reports are SOFT-deleted, so the ON DELETE CASCADE FK never fires for them and the schedule would otherwise keep firing, failing, and retrying every cadence. updateMany so it is a silent no-op if the row is already gone.

Parameters

ParameterType
input{ id: string; organizationId: string; }
input.idstring
input.organizationIdstring

Returns

Promise<void>


get()

get(input: {
  id: string;
  organizationId: string;
}): Promise<ReportSchedule>;

Defined in: server/insights/report-schedule-repository.ts:433

Parameters

ParameterType
input{ id: string; organizationId: string; }
input.idstring
input.organizationIdstring

Returns

Promise<ReportSchedule>


getAuthorizationFields()

getAuthorizationFields(input: {
  id: string;
  organizationId: string;
}): Promise<{
  createdBy: string | null;
  savedReportId: string;
}>;

Defined in: server/insights/report-schedule-repository.ts:465

Parent-report id for write authorization, without parsing stored config.

Parameters

ParameterType
input{ id: string; organizationId: string; }
input.idstring
input.organizationIdstring

Returns

Promise<{ createdBy: string | null; savedReportId: string; }>


getSchedulerState()

getSchedulerState(input: {
  id: string;
  organizationId: string;
}): Promise<ReportScheduleSchedulerState>;

Defined in: server/insights/report-schedule-repository.ts:353

Config-safe projection used to fence Redis mutations and worker fires.

Parameters

ParameterType
input{ id: string; organizationId: string; }
input.idstring
input.organizationIdstring

Returns

Promise<ReportScheduleSchedulerState>


getTarget()

getTarget(input: {
  id: string;
  organizationId: string;
}): Promise<TargetedReportSchedule>;

Defined in: server/insights/report-schedule-repository.ts:449

Target-neutral projection used by the shared delivery worker.

Parameters

ParameterType
input{ id: string; organizationId: string; }
input.idstring
input.organizationIdstring

Returns

Promise<TargetedReportSchedule>


getTargetAuthorizationFields()

getTargetAuthorizationFields(input: {
  id: string;
  organizationId: string;
}): Promise<ReportScheduleTargetAuthorizationFields>;

Defined in: server/insights/report-schedule-repository.ts:482

Target identity for authorization, without parsing config or dashboard view.

Parameters

ParameterType
input{ id: string; organizationId: string; }
input.idstring
input.organizationIdstring

Returns

Promise<ReportScheduleTargetAuthorizationFields>


list()

list(input: {
  organizationId: string;
  savedReportId?: string;
}): Promise<ReportSchedule[]>;

Defined in: server/insights/report-schedule-repository.ts:395

Parameters

ParameterType
input{ organizationId: string; savedReportId?: string; }
input.organizationIdstring
input.savedReportId?string

Returns

Promise<ReportSchedule[]>


listDashboard()

listDashboard(input: {
  dashboardKey?: string;
  organizationId: string;
  userId: string;
}): Promise<DashboardSchedule[]>;

Defined in: server/insights/report-schedule-repository.ts:413

Parameters

ParameterType
input{ dashboardKey?: string; organizationId: string; userId: string; }
input.dashboardKey?string
input.organizationIdstring
input.userIdstring

Returns

Promise<DashboardSchedule[]>


listEnabledForReconcile()

listEnabledForReconcile(organizationId?: string): Promise<{
  config:   | {
     cadence: "daily";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
   }
     | {
     cadence: "weekly";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
     weekdays: number[];
   }
     | {
     cadence: "monthly";
     dayOfMonth: number | "last";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
   }
     | {
     cadence: "custom";
     cron: string;
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timezone: string;
   };
  id: string;
  organizationId: string;
}[]>;

Defined in: server/insights/report-schedule-repository.ts:851

Enabled, non-deleted schedules for one organization, or across every org when organizationId is omitted. RLS-backed reconciliation always passes an organization and pins that tenant's GUC; the global form is retained for RLS-exempt system clients and backwards compatibility.

Rows whose stored config no longer parses are SKIPPED (not thrown) — a corrupt row cannot yield a cron, and one bad row must not abort the whole reconcile. The return carries only what registration needs.

Parameters

ParameterType
organizationId?string

Returns

Promise<{ config: | { cadence: "daily"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "weekly"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; weekdays: number[]; } | { cadence: "monthly"; dayOfMonth: number | "last"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "custom"; cron: string; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timezone: string; }; id: string; organizationId: string; }[]>


listRuns()

listRuns(input: {
  id: string;
  organizationId: string;
}): Promise<InsightScheduleRunSummary[]>;

Defined in: server/insights/report-schedule-repository.ts:806

Parameters

ParameterType
input{ id: string; organizationId: string; }
input.idstring
input.organizationIdstring

Returns

Promise<InsightScheduleRunSummary[]>


logActivity()

protected logActivity(
   _entityId: string, 
   _action: string, 
   _metadata?: Record<string, unknown>
): Promise<void>;

Defined in: server/persistence/base-repository.ts:140

Log an activity entry.

NOTE: This is not implemented because there's no activity model implemented in taproot yet! https://linear.app/kaizenlabs/issue/ENG-7846/add-activity-log-tables

Parameters

ParameterType
_entityIdstring
_actionstring
_metadata?Record<string, unknown>

Returns

Promise<void>

Inherited from

BaseRepository.logActivity


recordRun()

recordRun(input: {
  attachmentFilename?: string | null;
  error?: string | null;
  id: string;
  mutationVersion?: number;
  organizationId: string;
  ranAt: Date;
  recipientEmails?: string[];
  status: "success" | "failed";
  trigger?: "manual" | "scheduled";
}): Promise<void>;

Defined in: server/insights/report-schedule-repository.ts:755

Record the outcome of a delivery attempt. The WORKER's system-actor write — no userId, no ownership check. Uses updateMany so a run that finishes after the schedule was deleted, or after a newer attempt recorded health, is a silent no-op rather than a throw.

Parameters

ParameterTypeDescription
input{ attachmentFilename?: string | null; error?: string | null; id: string; mutationVersion?: number; organizationId: string; ranAt: Date; recipientEmails?: string[]; status: "success" | "failed"; trigger?: "manual" | "scheduled"; }-
input.attachmentFilename?string | null-
input.error?string | null-
input.idstring-
input.mutationVersion?numberOnly record a job that still belongs to this schedule generation.
input.organizationIdstring-
input.ranAtDate-
input.recipientEmails?string[]-
input.status"success" | "failed"-
input.trigger?"manual" | "scheduled"-

Returns

Promise<void>


setEnabled()

setEnabled(input: {
  enabled: boolean;
  id: string;
  organizationId: string;
  userId: string;
}): Promise<number>;

Defined in: server/insights/report-schedule-repository.ts:720

Parameters

ParameterType
input{ enabled: boolean; id: string; organizationId: string; userId: string; }
input.enabledboolean
input.idstring
input.organizationIdstring
input.userIdstring

Returns

Promise<number>


update()

update(input: {
  config:   | {
     cadence: "daily";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
   }
     | {
     cadence: "weekly";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
     weekdays: number[];
   }
     | {
     cadence: "monthly";
     dayOfMonth: number | "last";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
   }
     | {
     cadence: "custom";
     cron: string;
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timezone: string;
   };
  id: string;
  name?: string | null;
  organizationId: string;
  userId: string;
}): Promise<ReportSchedule>;

Defined in: server/insights/report-schedule-repository.ts:670

Parameters

ParameterType
input{ config: | { cadence: "daily"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "weekly"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; weekdays: number[]; } | { cadence: "monthly"; dayOfMonth: number | "last"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "custom"; cron: string; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timezone: string; }; id: string; name?: string | null; organizationId: string; userId: string; }
input.config| { cadence: "daily"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "weekly"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; weekdays: number[]; } | { cadence: "monthly"; dayOfMonth: number | "last"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "custom"; cron: string; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timezone: string; }
input.idstring
input.name?string | null
input.organizationIdstring
input.userIdstring

Returns

Promise<ReportSchedule>


updateDashboard()

updateDashboard(input: {
  config:   | {
     cadence: "daily";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
   }
     | {
     cadence: "weekly";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
     weekdays: number[];
   }
     | {
     cadence: "monthly";
     dayOfMonth: number | "last";
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timeOfDay: string;
     timezone: string;
   }
     | {
     cadence: "custom";
     cron: string;
     format: "pdf" | "csv" | "xlsx";
     recipients: string[];
     timezone: string;
   };
  id: string;
  name?: string | null;
  organizationId: string;
  userId: string;
}): Promise<DashboardSchedule>;

Defined in: server/insights/report-schedule-repository.ts:691

Parameters

ParameterType
input{ config: | { cadence: "daily"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "weekly"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; weekdays: number[]; } | { cadence: "monthly"; dayOfMonth: number | "last"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "custom"; cron: string; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timezone: string; }; id: string; name?: string | null; organizationId: string; userId: string; }
input.config| { cadence: "daily"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "weekly"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; weekdays: number[]; } | { cadence: "monthly"; dayOfMonth: number | "last"; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timeOfDay: string; timezone: string; } | { cadence: "custom"; cron: string; format: "pdf" | "csv" | "xlsx"; recipients: string[]; timezone: string; }
input.idstring
input.name?string | null
input.organizationIdstring
input.userIdstring

Returns

Promise<DashboardSchedule>


withMutationLock()

withMutationLock<T>(input: {
  id: string;
  organizationId: string;
}, operation: () => Promise<T>): Promise<T>;

Defined in: server/insights/report-schedule-repository.ts:334

Serialize one schedule's DATABASE mutation phase.

A transaction-scoped Postgres advisory lock has no expiring lease: another process cannot enter while the callback is still running, and a crashed process releases both its connection and lock automatically. BullMQ must NEVER be called inside operation: the committed row (and its monotonic mutationVersion fence) is the source of truth, then Redis is reconciled after this transaction releases its shared-pool connection.

Type Parameters

Type Parameter
T

Parameters

ParameterType
input{ id: string; organizationId: string; }
input.idstring
input.organizationIdstring
operation() => Promise<T>

Returns

Promise<T>

On this page