@k-msg/channel
Version:
AlimTalk channel and sender number management
102 lines (101 loc) • 3.38 kB
TypeScript
import type { KakaoChannel, KakaoChannelCategories, KMsgError, ProviderOnboardingSpec, Result } from "@k-msg/core";
export type KakaoChannelCapabilityMode = "api" | "manual" | "none";
export type KakaoChannelBindingSource = "explicit" | "alias" | "defaults" | "provider_config" | "routing" | "single_provider" | "unknown";
export type KakaoChannelApiOperation = "list" | "categories" | "auth" | "add";
export interface KakaoChannelBinding {
alias?: string;
providerId?: string;
senderKey?: string;
plusId?: string;
name?: string;
}
export interface ResolvedKakaoChannelBinding extends KakaoChannelBinding {
providerType?: string;
providerIdSource: KakaoChannelBindingSource;
senderKeySource?: KakaoChannelBindingSource;
plusIdSource?: KakaoChannelBindingSource;
}
export interface KakaoChannelListItem extends KakaoChannelBinding {
source: "api" | "config";
status?: string;
}
export interface KakaoChannelListParams {
plusId?: string;
senderKey?: string;
}
export interface KakaoChannelAuthParams {
plusId: string;
phoneNumber: string;
}
export interface KakaoChannelAddParams {
plusId: string;
authNum: string;
phoneNumber: string;
categoryCode: string;
}
export interface KakaoChannelRuntimeProvider {
id: string;
getOnboardingSpec?: () => ProviderOnboardingSpec;
listKakaoChannels?: (params?: KakaoChannelListParams) => Promise<Result<KakaoChannel[], KMsgError>>;
listKakaoChannelCategories?: () => Promise<Result<KakaoChannelCategories, KMsgError>>;
requestKakaoChannelAuth?: (params: KakaoChannelAuthParams) => Promise<Result<void, KMsgError>>;
addKakaoChannel?: (params: KakaoChannelAddParams) => Promise<Result<KakaoChannel, KMsgError>>;
}
export interface KakaoChannelApiAdapter {
list(params?: KakaoChannelListParams): Promise<Result<KakaoChannel[], KMsgError>>;
categories(): Promise<Result<KakaoChannelCategories, KMsgError>>;
auth(params: KakaoChannelAuthParams): Promise<Result<void, KMsgError>>;
add(params: KakaoChannelAddParams): Promise<Result<KakaoChannel, KMsgError>>;
}
export interface KakaoChannelCapability {
providerId: string;
providerType?: string;
mode: KakaoChannelCapabilityMode;
supports: {
list: boolean;
categories: boolean;
auth: boolean;
add: boolean;
};
}
export interface KakaoChannelAliasEntry {
providerId: string;
senderKey?: string;
plusId?: string;
name?: string;
[key: string]: unknown;
}
export interface KakaoProviderConfigEntry {
id: string;
type?: string;
config?: Record<string, unknown>;
[key: string]: unknown;
}
export interface KakaoChannelResolverConfig {
routing?: {
defaultProviderId?: string;
[key: string]: unknown;
};
defaults?: {
kakao?: {
channel?: string;
senderKey?: string;
plusId?: string;
[key: string]: unknown;
};
[key: string]: unknown;
};
aliases?: {
kakaoChannels?: Record<string, KakaoChannelAliasEntry>;
[key: string]: unknown;
};
providers?: KakaoProviderConfigEntry[];
[key: string]: unknown;
}
export interface KakaoChannelResolveInput {
providerId?: string;
channelAlias?: string;
senderKey?: string;
plusId?: string;
strictAlias?: boolean;
}