Entity Types
Core data types representing WalletHero resources.
PassTemplate
typescript
interface PassTemplate {
id: string;
uuid: string;
name: string;
description?: string;
apple_pass_type_identifier: string;
workspace_id: string;
project_id: string;
tier_id?: string;
tier_label?: string;
icon?: string;
logo?: string;
cover_image?: string;
background_color?: string;
label_color?: string;
value_color?: string;
logo_text?: string;
barcode_id?: string;
barcode_type?: BarcodeType;
barcode_label?: string;
top_field_label?: string;
top_field_value?: string;
front_fields?: PassField[];
secondary_fields?: PassField[];
back_fields?: PassField[];
locations?: Location[];
location_message?: string;
ios_deeplink_id?: number;
ios_deeplink_url?: string;
statistics?: PassTemplateStatistics;
date_created?: string;
date_updated?: string;
}Pass
typescript
interface Pass {
id: string;
pass_template_id: string;
project_id: string;
workspace_id: string;
full_name?: string;
email?: string;
notification?: string;
marketing_consent?: boolean;
custom_fields?: Record<string, any>;
computed_metrics?: Record<string, number>;
apple_pass_url?: string;
apple_qrcode_url?: string;
google_pass_url?: string;
google_qrcode_url?: string;
date_created?: string;
date_updated?: string;
}Project
typescript
interface Project {
id: string;
workspace_id: string;
name: string;
description?: string;
statistics?: ProjectStatistics;
date_created?: string;
date_updated?: string;
}
interface ProjectStatistics {
templates_count: number;
apple_registrations_count: number;
google_registrations_count: number;
total_registrations_count: number;
passes_count: number;
}Workspace
typescript
interface Workspace {
id: string;
name?: string;
slug: string;
date_created?: string;
date_updated?: string;
}Segment
typescript
interface Segment {
id: string;
workspace_id: string;
name: string;
description?: string;
filters: SegmentFilter[];
date_created?: string;
date_updated?: string;
}Campaign
typescript
interface Campaign {
id: string;
workspace_id: string;
name: string;
description?: string;
status: CampaignStatus;
scheduled_at?: string;
started_at?: string;
completed_at?: string;
segment_id?: string;
date_created?: string;
date_updated?: string;
}
interface CampaignAction {
id: string;
campaign_id: string;
action_type: CampaignActionType;
status: CampaignActionStatus;
executed_at?: string;
action_config: ActionConfig;
}Distribution
typescript
interface Distribution {
id: string;
status: DistributionStatus;
workspace_id: string;
project_id: string;
pass_template_id: string;
page_address?: string;
landing_html?: string;
landing_html_success?: string;
email_html?: string;
email_reply_to?: string;
email_topic?: string;
css?: string;
form_fields_config?: FormFieldsConfig;
}Supporting Types
typescript
interface PassField {
label: string;
value: string;
}
interface Location {
latitude: number;
longitude: number;
altitude?: number;
name?: string;
}
type BarcodeType = 'none' | 'qr' | 'aztec' | 'code128' | 'pdf417';
type CampaignStatus = 'draft' | 'scheduled' | 'active' | 'completed' | 'cancelled';
type CampaignActionType = 'push_notification' | 'template_switch' | 'custom_field_update';
type CampaignActionStatus = 'pending' | 'in_progress' | 'completed' | 'failed';
type DistributionStatus = 'published' | 'draft';
type DataModelFieldType = 'string' | 'number' | 'multiselect' | 'date';