Skip to content

feat: add report metrics endpoint#163

Open
chougron wants to merge 1 commit into
customerio:mainfrom
chougron:report-metrics
Open

feat: add report metrics endpoint#163
chougron wants to merge 1 commit into
customerio:mainfrom
chougron:report-metrics

Conversation

@chougron
Copy link
Copy Markdown

Adds a function for reporting metrics
https://docs.customer.io/api/track/#operation/metrics

Comment thread lib/request.ts
Comment on lines +28 to +76
export interface ReportEmailMetricsRequestData {
delivery_id: string;
metric: 'bounced' | 'clicked' | 'converted' | 'deferred' | 'delivered' | 'dropped' | 'opened' | 'spammed';
timestamp?: number;
recipient?: string;
reason?: string;
href?: string;
}
export interface ReportInappMetricsRequestData {
delivery_id: string;
metric: 'clicked' | 'converted' | 'opened';
timestamp?: number;
recipient?: string;
href?: string;
}
export interface ReportPushMetricsRequestData {
delivery_id: string;
metric: 'converted' | 'delivered' | 'opened';
timestamp?: number;
recipient?: string;
}
export interface ReportSlackMetricsRequestData {
delivery_id: string;
metric: 'clicked' | 'converted' | 'delivered' | 'opened';
timestamp?: number;
href?: string;
}
export interface ReportSMSMetricsRequestData {
delivery_id: string;
metric: 'bounced' | 'clicked' | 'delivered' | 'opened';
timestamp?: number;
recipient?: string;
reason?: string;
href?: string;
}
export interface ReportWebhookMetricsRequestData {
delivery_id: string;
metric: 'bounced' | 'clicked' | 'converted' | 'deferred' | 'delivered' | 'dropped' | 'opened' | 'spammed';
timestamp?: number;
reason?: string;
href?: string;
}
export type ReportMetricsRequestData =
| ReportEmailMetricsRequestData
| ReportInappMetricsRequestData
| ReportPushMetricsRequestData
| ReportSlackMetricsRequestData
| ReportSMSMetricsRequestData
| ReportWebhookMetricsRequestData;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since there's no way to narrow the type here to choose a variant (i.e. there's no way for TS to know if it should be choosing an SMS metrics object over email) I think it would be better to match the docs and have a single request type for now.

This will also prevent issues such as the Push and Slack metrics objects not having reason, etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants