Skip to content
File

Blob: src/shared/contracts/admin.ts

typescript64 lines
1import { eg, type TypeFromCodec } from "@cloudflare/util-en-garde";
2import { NullableString } from "./common";
3import { TempMailboxTtlHours } from "./inboxes";
4 
5export const ADMIN_TEMP_INBOX_PAGE_SIZE = 10;
6 
7const NullableTempMailboxTtlHours = eg.union([TempMailboxTtlHours, eg.null]);
8 
9export const AdminDomainRequest = eg.object({
10 domain: eg.string,
11 isActive: eg.boolean.optional,
12});
13export type AdminDomainRequest = TypeFromCodec<typeof AdminDomainRequest>;
14 
15export const AdminDomainStatusRequest = eg.object({
16 isActive: eg.boolean,
17});
18export type AdminDomainStatusRequest = TypeFromCodec<typeof AdminDomainStatusRequest>;
19 
20export const AdminDomain = eg.object({
21 domain: eg.string,
22 isActive: eg.boolean,
23 createdAt: eg.string,
24 inboxCount: eg.number,
25 canDelete: eg.boolean,
26});
27export type AdminDomain = TypeFromCodec<typeof AdminDomain>;
28 
29export const AdminDomainsResponse = eg.object({
30 domains: eg.array(AdminDomain),
31});
32export type AdminDomainsResponse = TypeFromCodec<typeof AdminDomainsResponse>;
33 
34export const AdminInbox = eg.object({
35 address: eg.string,
36 domain: eg.string,
37 localPart: eg.string,
38 emailCount: eg.number,
39});
40export type AdminInbox = TypeFromCodec<typeof AdminInbox>;
41 
42export const AdminInboxesResponse = eg.object({
43 inboxes: eg.array(AdminInbox),
44});
45export type AdminInboxesResponse = TypeFromCodec<typeof AdminInboxesResponse>;
46 
47export const AdminTempInbox = eg.object({
48 address: eg.string,
49 domain: eg.string,
50 createdAt: eg.string,
51 expiresAt: NullableString,
52 ttlHours: NullableTempMailboxTtlHours,
53 emailCount: eg.number,
54});
55export type AdminTempInbox = TypeFromCodec<typeof AdminTempInbox>;
56 
57export const AdminTempInboxPage = eg.object({
58 inboxes: eg.array(AdminTempInbox),
59 page: eg.number,
60 pageSize: eg.number,
61 total: eg.number,
62});
63export type AdminTempInboxPage = TypeFromCodec<typeof AdminTempInboxPage>;