whatsapp-mcp / db/schema/phone-numbers / phoneNumbers
Variable: phoneNumbers
const phoneNumbers: PgTableWithColumns<{
columns: {
accessTokenSecretRef: PgColumn<{
baseColumn: never;
columnType: "PgText";
data: string;
dataType: "string";
driverParam: string;
enumValues: [string, ...string[]];
generated: undefined;
hasDefault: false;
hasRuntimeDefault: false;
identity: undefined;
isAutoincrement: false;
isPrimaryKey: false;
name: "access_token_secret_ref";
notNull: true;
tableName: "phone_numbers";
}, {
}, {
}>;
createdAt: PgColumn<{
baseColumn: never;
columnType: "PgTimestamp";
data: Date;
dataType: "date";
driverParam: string;
enumValues: undefined;
generated: undefined;
hasDefault: true;
hasRuntimeDefault: false;
identity: undefined;
isAutoincrement: false;
isPrimaryKey: false;
name: "created_at";
notNull: true;
tableName: "phone_numbers";
}, {
}, {
}>;
disabledAt: PgColumn<{
baseColumn: never;
columnType: "PgTimestamp";
data: Date;
dataType: "date";
driverParam: string;
enumValues: undefined;
generated: undefined;
hasDefault: false;
hasRuntimeDefault: false;
identity: undefined;
isAutoincrement: false;
isPrimaryKey: false;
name: "disabled_at";
notNull: false;
tableName: "phone_numbers";
}, {
}, {
}>;
displayNumber: PgColumn<{
baseColumn: never;
columnType: "PgText";
data: string;
dataType: "string";
driverParam: string;
enumValues: [string, ...string[]];
generated: undefined;
hasDefault: false;
hasRuntimeDefault: false;
identity: undefined;
isAutoincrement: false;
isPrimaryKey: false;
name: "display_number";
notNull: false;
tableName: "phone_numbers";
}, {
}, {
}>;
id: PgColumn<{
baseColumn: never;
columnType: "PgUUID";
data: string;
dataType: "string";
driverParam: string;
enumValues: undefined;
generated: undefined;
hasDefault: true;
hasRuntimeDefault: false;
identity: undefined;
isAutoincrement: false;
isPrimaryKey: true;
name: "id";
notNull: true;
tableName: "phone_numbers";
}, {
}, {
}>;
label: PgColumn<{
baseColumn: never;
columnType: "PgText";
data: string;
dataType: "string";
driverParam: string;
enumValues: [string, ...string[]];
generated: undefined;
hasDefault: false;
hasRuntimeDefault: false;
identity: undefined;
isAutoincrement: false;
isPrimaryKey: false;
name: "label";
notNull: false;
tableName: "phone_numbers";
}, {
}, {
}>;
waBusinessAccountId: PgColumn<{
baseColumn: never;
columnType: "PgText";
data: string;
dataType: "string";
driverParam: string;
enumValues: [string, ...string[]];
generated: undefined;
hasDefault: false;
hasRuntimeDefault: false;
identity: undefined;
isAutoincrement: false;
isPrimaryKey: false;
name: "wa_business_account_id";
notNull: true;
tableName: "phone_numbers";
}, {
}, {
}>;
waPhoneNumberId: PgColumn<{
baseColumn: never;
columnType: "PgText";
data: string;
dataType: "string";
driverParam: string;
enumValues: [string, ...string[]];
generated: undefined;
hasDefault: false;
hasRuntimeDefault: false;
identity: undefined;
isAutoincrement: false;
isPrimaryKey: false;
name: "wa_phone_number_id";
notNull: true;
tableName: "phone_numbers";
}, {
}, {
}>;
webhookVerifyTokenRef: PgColumn<{
baseColumn: never;
columnType: "PgText";
data: string;
dataType: "string";
driverParam: string;
enumValues: [string, ...string[]];
generated: undefined;
hasDefault: false;
hasRuntimeDefault: false;
identity: undefined;
isAutoincrement: false;
isPrimaryKey: false;
name: "webhook_verify_token_ref";
notNull: true;
tableName: "phone_numbers";
}, {
}, {
}>;
};
dialect: "pg";
name: "phone_numbers";
schema: undefined;
}>;Defined in: src/db/schema/phone-numbers.ts:23
phone_numbers — one row per Meta WABA phone number.
Remarks
access_token_secret_refis a string likesecrets://wa_access_token_<id>that the secrets resolver maps to a file path / Vault address. The actual token never touches this table — that way a DB dump leak cannot exfiltrate Meta tokens.- No
app_secretcolumn: the App Secret is per Meta App, not per number, and every number in this WABA shares the single secret read from envWA_APP_SECRET. Add a nullableapp_secret_refonly when (if) we split into multiple Meta Apps. disabled_at IS NOT NULLremoves the number from the auth/grant pipeline without touching any client rows.