Skip to content

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';

WalletHero Documentation