@flowselections/admin-installatietechniek 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5045,6 +5045,42 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
5045
5045
  };
5046
5046
  Relationships: [];
5047
5047
  };
5048
+ facturen: {
5049
+ Row: {
5050
+ bedrag_incl_btw: number;
5051
+ created_at: string;
5052
+ datum: string;
5053
+ factuurnummer: string;
5054
+ id: string;
5055
+ klantnaam: string;
5056
+ status: string;
5057
+ updated_at: string;
5058
+ user_id: string;
5059
+ };
5060
+ Insert: {
5061
+ bedrag_incl_btw: number;
5062
+ created_at?: string;
5063
+ datum?: string;
5064
+ factuurnummer: string;
5065
+ id?: string;
5066
+ klantnaam: string;
5067
+ status?: string;
5068
+ updated_at?: string;
5069
+ user_id?: string;
5070
+ };
5071
+ Update: {
5072
+ bedrag_incl_btw?: number;
5073
+ created_at?: string;
5074
+ datum?: string;
5075
+ factuurnummer?: string;
5076
+ id?: string;
5077
+ klantnaam?: string;
5078
+ status?: string;
5079
+ updated_at?: string;
5080
+ user_id?: string;
5081
+ };
5082
+ Relationships: [];
5083
+ };
5048
5084
  floricode_connection_settings: {
5049
5085
  Row: {
5050
5086
  catalog_key: string | null;
@@ -7769,6 +7805,258 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
7769
7805
  };
7770
7806
  Relationships: [];
7771
7807
  };
7808
+ itk_offerte_events: {
7809
+ Row: {
7810
+ created_at: string;
7811
+ event_type: string;
7812
+ id: string;
7813
+ metadata: import("./types").Json;
7814
+ offerte_id: string;
7815
+ omschrijving: string | null;
7816
+ user_id: string | null;
7817
+ };
7818
+ Insert: {
7819
+ created_at?: string;
7820
+ event_type: string;
7821
+ id?: string;
7822
+ metadata?: import("./types").Json;
7823
+ offerte_id: string;
7824
+ omschrijving?: string | null;
7825
+ user_id?: string | null;
7826
+ };
7827
+ Update: {
7828
+ created_at?: string;
7829
+ event_type?: string;
7830
+ id?: string;
7831
+ metadata?: import("./types").Json;
7832
+ offerte_id?: string;
7833
+ omschrijving?: string | null;
7834
+ user_id?: string | null;
7835
+ };
7836
+ Relationships: [{
7837
+ foreignKeyName: "itk_offerte_events_offerte_id_fkey";
7838
+ columns: ["offerte_id"];
7839
+ isOneToOne: false;
7840
+ referencedRelation: "itk_offertes";
7841
+ referencedColumns: ["id"];
7842
+ }];
7843
+ };
7844
+ itk_offerte_regels: {
7845
+ Row: {
7846
+ created_at: string;
7847
+ id: string;
7848
+ line_total_cents: number;
7849
+ offerte_id: string;
7850
+ omschrijving: string;
7851
+ package_id: string | null;
7852
+ quantity: number;
7853
+ sort_order: number;
7854
+ source: string;
7855
+ unit_price_cents: number;
7856
+ updated_at: string;
7857
+ };
7858
+ Insert: {
7859
+ created_at?: string;
7860
+ id?: string;
7861
+ line_total_cents?: number;
7862
+ offerte_id: string;
7863
+ omschrijving?: string;
7864
+ package_id?: string | null;
7865
+ quantity?: number;
7866
+ sort_order?: number;
7867
+ source?: string;
7868
+ unit_price_cents?: number;
7869
+ updated_at?: string;
7870
+ };
7871
+ Update: {
7872
+ created_at?: string;
7873
+ id?: string;
7874
+ line_total_cents?: number;
7875
+ offerte_id?: string;
7876
+ omschrijving?: string;
7877
+ package_id?: string | null;
7878
+ quantity?: number;
7879
+ sort_order?: number;
7880
+ source?: string;
7881
+ unit_price_cents?: number;
7882
+ updated_at?: string;
7883
+ };
7884
+ Relationships: [{
7885
+ foreignKeyName: "itk_offerte_regels_offerte_id_fkey";
7886
+ columns: ["offerte_id"];
7887
+ isOneToOne: false;
7888
+ referencedRelation: "itk_offertes";
7889
+ referencedColumns: ["id"];
7890
+ }, {
7891
+ foreignKeyName: "itk_offerte_regels_package_id_fkey";
7892
+ columns: ["package_id"];
7893
+ isOneToOne: false;
7894
+ referencedRelation: "werkbon_packages";
7895
+ referencedColumns: ["id"];
7896
+ }];
7897
+ };
7898
+ itk_offerte_settings: {
7899
+ Row: {
7900
+ auto_convert_binnen_mandaat: boolean;
7901
+ created_at: string;
7902
+ default_geldigheid_dagen: number;
7903
+ default_vat_rate: number;
7904
+ id: string;
7905
+ singleton: boolean;
7906
+ updated_at: string;
7907
+ };
7908
+ Insert: {
7909
+ auto_convert_binnen_mandaat?: boolean;
7910
+ created_at?: string;
7911
+ default_geldigheid_dagen?: number;
7912
+ default_vat_rate?: number;
7913
+ id?: string;
7914
+ singleton?: boolean;
7915
+ updated_at?: string;
7916
+ };
7917
+ Update: {
7918
+ auto_convert_binnen_mandaat?: boolean;
7919
+ created_at?: string;
7920
+ default_geldigheid_dagen?: number;
7921
+ default_vat_rate?: number;
7922
+ id?: string;
7923
+ singleton?: boolean;
7924
+ updated_at?: string;
7925
+ };
7926
+ Relationships: [];
7927
+ };
7928
+ itk_offertes: {
7929
+ Row: {
7930
+ ai_generated: boolean;
7931
+ approved_at: string | null;
7932
+ binnen_mandaat: boolean;
7933
+ contact_id: string | null;
7934
+ converted_at: string | null;
7935
+ created_at: string;
7936
+ created_by: string | null;
7937
+ customer_id: string | null;
7938
+ follow_up_werkbon_id: string | null;
7939
+ id: string;
7940
+ jaar: number;
7941
+ mandaat_restant_cents: number;
7942
+ notities: string | null;
7943
+ offerte_number: string | null;
7944
+ omschrijving: string;
7945
+ rejected_at: string | null;
7946
+ sent_at: string | null;
7947
+ source_number: string | null;
7948
+ source_ref: string | null;
7949
+ source_type: string;
7950
+ status: string;
7951
+ subtotal_cents: number;
7952
+ total_cents: number;
7953
+ updated_at: string;
7954
+ valid_until: string | null;
7955
+ vat_cents: number;
7956
+ vat_rate: number;
7957
+ viewed_at: string | null;
7958
+ volgnummer: number | null;
7959
+ werkbon_id: string | null;
7960
+ work_location_id: string | null;
7961
+ };
7962
+ Insert: {
7963
+ ai_generated?: boolean;
7964
+ approved_at?: string | null;
7965
+ binnen_mandaat?: boolean;
7966
+ contact_id?: string | null;
7967
+ converted_at?: string | null;
7968
+ created_at?: string;
7969
+ created_by?: string | null;
7970
+ customer_id?: string | null;
7971
+ follow_up_werkbon_id?: string | null;
7972
+ id?: string;
7973
+ jaar?: number;
7974
+ mandaat_restant_cents?: number;
7975
+ notities?: string | null;
7976
+ offerte_number?: string | null;
7977
+ omschrijving?: string;
7978
+ rejected_at?: string | null;
7979
+ sent_at?: string | null;
7980
+ source_number?: string | null;
7981
+ source_ref?: string | null;
7982
+ source_type?: string;
7983
+ status?: string;
7984
+ subtotal_cents?: number;
7985
+ total_cents?: number;
7986
+ updated_at?: string;
7987
+ valid_until?: string | null;
7988
+ vat_cents?: number;
7989
+ vat_rate?: number;
7990
+ viewed_at?: string | null;
7991
+ volgnummer?: number | null;
7992
+ werkbon_id?: string | null;
7993
+ work_location_id?: string | null;
7994
+ };
7995
+ Update: {
7996
+ ai_generated?: boolean;
7997
+ approved_at?: string | null;
7998
+ binnen_mandaat?: boolean;
7999
+ contact_id?: string | null;
8000
+ converted_at?: string | null;
8001
+ created_at?: string;
8002
+ created_by?: string | null;
8003
+ customer_id?: string | null;
8004
+ follow_up_werkbon_id?: string | null;
8005
+ id?: string;
8006
+ jaar?: number;
8007
+ mandaat_restant_cents?: number;
8008
+ notities?: string | null;
8009
+ offerte_number?: string | null;
8010
+ omschrijving?: string;
8011
+ rejected_at?: string | null;
8012
+ sent_at?: string | null;
8013
+ source_number?: string | null;
8014
+ source_ref?: string | null;
8015
+ source_type?: string;
8016
+ status?: string;
8017
+ subtotal_cents?: number;
8018
+ total_cents?: number;
8019
+ updated_at?: string;
8020
+ valid_until?: string | null;
8021
+ vat_cents?: number;
8022
+ vat_rate?: number;
8023
+ viewed_at?: string | null;
8024
+ volgnummer?: number | null;
8025
+ werkbon_id?: string | null;
8026
+ work_location_id?: string | null;
8027
+ };
8028
+ Relationships: [{
8029
+ foreignKeyName: "itk_offertes_contact_id_fkey";
8030
+ columns: ["contact_id"];
8031
+ isOneToOne: false;
8032
+ referencedRelation: "itk_contact_persons";
8033
+ referencedColumns: ["id"];
8034
+ }, {
8035
+ foreignKeyName: "itk_offertes_customer_id_fkey";
8036
+ columns: ["customer_id"];
8037
+ isOneToOne: false;
8038
+ referencedRelation: "itk_customers";
8039
+ referencedColumns: ["id"];
8040
+ }, {
8041
+ foreignKeyName: "itk_offertes_follow_up_werkbon_id_fkey";
8042
+ columns: ["follow_up_werkbon_id"];
8043
+ isOneToOne: false;
8044
+ referencedRelation: "werkbonnen";
8045
+ referencedColumns: ["id"];
8046
+ }, {
8047
+ foreignKeyName: "itk_offertes_werkbon_id_fkey";
8048
+ columns: ["werkbon_id"];
8049
+ isOneToOne: false;
8050
+ referencedRelation: "werkbonnen";
8051
+ referencedColumns: ["id"];
8052
+ }, {
8053
+ foreignKeyName: "itk_offertes_work_location_id_fkey";
8054
+ columns: ["work_location_id"];
8055
+ isOneToOne: false;
8056
+ referencedRelation: "itk_work_locations";
8057
+ referencedColumns: ["id"];
8058
+ }];
8059
+ };
7772
8060
  itk_work_locations: {
7773
8061
  Row: {
7774
8062
  city: string | null;
@@ -10142,6 +10430,63 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
10142
10430
  referencedColumns: ["id"];
10143
10431
  }];
10144
10432
  };
10433
+ medewerker_details: {
10434
+ Row: {
10435
+ color: string | null;
10436
+ created_at: string;
10437
+ hours_fri: number | null;
10438
+ hours_mon: number | null;
10439
+ hours_thu: number | null;
10440
+ hours_tue: number | null;
10441
+ hours_wed: number | null;
10442
+ id: string;
10443
+ is_active: boolean;
10444
+ leave_balance_hours: number;
10445
+ persnr: string | null;
10446
+ phone: string | null;
10447
+ profile_id: string;
10448
+ updated_at: string;
10449
+ };
10450
+ Insert: {
10451
+ color?: string | null;
10452
+ created_at?: string;
10453
+ hours_fri?: number | null;
10454
+ hours_mon?: number | null;
10455
+ hours_thu?: number | null;
10456
+ hours_tue?: number | null;
10457
+ hours_wed?: number | null;
10458
+ id?: string;
10459
+ is_active?: boolean;
10460
+ leave_balance_hours?: number;
10461
+ persnr?: string | null;
10462
+ phone?: string | null;
10463
+ profile_id: string;
10464
+ updated_at?: string;
10465
+ };
10466
+ Update: {
10467
+ color?: string | null;
10468
+ created_at?: string;
10469
+ hours_fri?: number | null;
10470
+ hours_mon?: number | null;
10471
+ hours_thu?: number | null;
10472
+ hours_tue?: number | null;
10473
+ hours_wed?: number | null;
10474
+ id?: string;
10475
+ is_active?: boolean;
10476
+ leave_balance_hours?: number;
10477
+ persnr?: string | null;
10478
+ phone?: string | null;
10479
+ profile_id?: string;
10480
+ updated_at?: string;
10481
+ };
10482
+ Relationships: [{
10483
+ foreignKeyName: "medewerker_details_profile_id_fkey";
10484
+ columns: ["profile_id"];
10485
+ isOneToOne: true;
10486
+ referencedRelation: "profiles";
10487
+ referencedColumns: ["id"];
10488
+ }];
10489
+ };
10145
10490
  module_features: {
10146
10491
  Row: {
10147
10492
  created_at: string;
@@ -13541,6 +13886,66 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
13541
13886
  };
13542
13887
  Relationships: [];
13543
13888
  };
13889
+ profile_modules: {
13890
+ Row: {
13891
+ created_at: string;
13892
+ id: string;
13893
+ module_id: string;
13894
+ profile_id: string;
13895
+ };
13896
+ Insert: {
13897
+ created_at?: string;
13898
+ id?: string;
13899
+ module_id: string;
13900
+ profile_id: string;
13901
+ };
13902
+ Update: {
13903
+ created_at?: string;
13904
+ id?: string;
13905
+ module_id?: string;
13906
+ profile_id?: string;
13907
+ };
13908
+ Relationships: [{
13909
+ foreignKeyName: "profile_modules_profile_id_fkey";
13910
+ columns: ["profile_id"];
13911
+ isOneToOne: false;
13912
+ referencedRelation: "profiles_org";
13913
+ referencedColumns: ["id"];
13914
+ }];
13915
+ };
13916
+ profile_roles: {
13917
+ Row: {
13918
+ created_at: string;
13919
+ id: string;
13920
+ profile_id: string;
13921
+ role_id: string;
13922
+ };
13923
+ Insert: {
13924
+ created_at?: string;
13925
+ id?: string;
13926
+ profile_id: string;
13927
+ role_id: string;
13928
+ };
13929
+ Update: {
13930
+ created_at?: string;
13931
+ id?: string;
13932
+ profile_id?: string;
13933
+ role_id?: string;
13934
+ };
13935
+ Relationships: [{
13936
+ foreignKeyName: "profile_roles_profile_id_fkey";
13937
+ columns: ["profile_id"];
13938
+ isOneToOne: false;
13939
+ referencedRelation: "profiles_org";
13940
+ referencedColumns: ["id"];
13941
+ }, {
13942
+ foreignKeyName: "profile_roles_role_id_fkey";
13943
+ columns: ["role_id"];
13944
+ isOneToOne: false;
13945
+ referencedRelation: "roles";
13946
+ referencedColumns: ["id"];
13947
+ }];
13948
+ };
13544
13949
  profiles: {
13545
13950
  Row: {
13546
13951
  address: string | null;
@@ -13586,6 +13991,39 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
13586
13991
  referencedColumns: ["id"];
13587
13992
  }];
13588
13993
  };
13994
+ profiles_org: {
13995
+ Row: {
13996
+ created_at: string;
13997
+ id: string;
13998
+ is_default: boolean;
13999
+ name: string;
14000
+ tenant_id: string | null;
14001
+ updated_at: string;
14002
+ };
14003
+ Insert: {
14004
+ created_at?: string;
14005
+ id?: string;
14006
+ is_default?: boolean;
14007
+ name: string;
14008
+ tenant_id?: string | null;
14009
+ updated_at?: string;
14010
+ };
14011
+ Update: {
14012
+ created_at?: string;
14013
+ id?: string;
14014
+ is_default?: boolean;
14015
+ name?: string;
14016
+ tenant_id?: string | null;
14017
+ updated_at?: string;
14018
+ };
14019
+ Relationships: [{
14020
+ foreignKeyName: "profiles_org_tenant_id_fkey";
14021
+ columns: ["tenant_id"];
14022
+ isOneToOne: false;
14023
+ referencedRelation: "tenants";
14024
+ referencedColumns: ["id"];
14025
+ }];
14026
+ };
13589
14027
  projects: {
13590
14028
  Row: {
13591
14029
  contact_name: string | null;
@@ -14760,6 +15198,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
14760
15198
  type: string;
14761
15199
  updated_at: string;
14762
15200
  vereist_medewerker: boolean;
15201
+ werkplek: string | null;
14763
15202
  };
14764
15203
  Insert: {
14765
15204
  actief?: boolean;
@@ -14773,6 +15212,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
14773
15212
  type?: string;
14774
15213
  updated_at?: string;
14775
15214
  vereist_medewerker?: boolean;
15215
+ werkplek?: string | null;
14776
15216
  };
14777
15217
  Update: {
14778
15218
  actief?: boolean;
@@ -14786,9 +15226,46 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
14786
15226
  type?: string;
14787
15227
  updated_at?: string;
14788
15228
  vereist_medewerker?: boolean;
15229
+ werkplek?: string | null;
14789
15230
  };
14790
15231
  Relationships: [];
14791
15232
  };
15233
+ sick_periods: {
15234
+ Row: {
15235
+ created_at: string;
15236
+ employee_id: string;
15237
+ end_date: string | null;
15238
+ id: string;
15239
+ notes: string | null;
15240
+ start_date: string;
15241
+ updated_at: string;
15242
+ };
15243
+ Insert: {
15244
+ created_at?: string;
15245
+ employee_id: string;
15246
+ end_date?: string | null;
15247
+ id?: string;
15248
+ notes?: string | null;
15249
+ start_date: string;
15250
+ updated_at?: string;
15251
+ };
15252
+ Update: {
15253
+ created_at?: string;
15254
+ employee_id?: string;
15255
+ end_date?: string | null;
15256
+ id?: string;
15257
+ notes?: string | null;
15258
+ start_date?: string;
15259
+ updated_at?: string;
15260
+ };
15261
+ Relationships: [{
15262
+ foreignKeyName: "sick_periods_employee_id_fkey";
15263
+ columns: ["employee_id"];
15264
+ isOneToOne: false;
15265
+ referencedRelation: "profiles";
15266
+ referencedColumns: ["id"];
15267
+ }];
15268
+ };
14792
15269
  sidebar_config: {
14793
15270
  Row: {
14794
15271
  id: string;
@@ -19473,6 +19950,13 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
19473
19950
  };
19474
19951
  Returns: string;
19475
19952
  };
19953
+ employee_day_hours: {
19954
+ Args: {
19955
+ _day: string;
19956
+ _employee_id: string;
19957
+ };
19958
+ Returns: number;
19959
+ };
19476
19960
  enqueue_cart_replan_if_unlocked: {
19477
19961
  Args: {
19478
19962
  p_order_id: string;
@@ -19826,6 +20310,19 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
19826
20310
  Args: never;
19827
20311
  Returns: boolean;
19828
20312
  };
20313
+ itk_offerte_naar_werkbon: {
20314
+ Args: {
20315
+ _offerte_id: string;
20316
+ };
20317
+ Returns: string;
20318
+ };
20319
+ itk_offerte_restant_mandaat: {
20320
+ Args: {
20321
+ _exclude_offerte_id?: string;
20322
+ _werkbon_id: string;
20323
+ };
20324
+ Returns: number;
20325
+ };
19829
20326
  jwt_has_role: {
19830
20327
  Args: {
19831
20328
  _role: Database["public"]["Enums"]["app_role"];
@@ -19836,9 +20333,19 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
19836
20333
  Args: never;
19837
20334
  Returns: {
19838
20335
  avatar_url: string;
20336
+ color: string;
19839
20337
  display_name: string;
19840
20338
  email: string;
20339
+ hours_fri: number;
20340
+ hours_mon: number;
20341
+ hours_thu: number;
20342
+ hours_tue: number;
20343
+ hours_wed: number;
19841
20344
  id: string;
20345
+ is_active: boolean;
20346
+ leave_balance_hours: number;
20347
+ persnr: string;
20348
+ phone: string;
19842
20349
  roles: string[];
19843
20350
  }[];
19844
20351
  };
@@ -20165,17 +20672,6 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
20165
20672
  Returns: string;
20166
20673
  };
20167
20674
  logistics_emit_event: {
20168
- Args: {
20169
- p_event_type: string;
20170
- p_idempotency_key?: string;
20171
- p_order_ref: string;
20172
- p_payload?: import("./types").Json;
20173
- p_shadow?: boolean;
20174
- p_source_module: string;
20175
- p_strategy_id?: string;
20176
- };
20177
- Returns: import("./types").Json;
20178
- } | {
20179
20675
  Args: {
20180
20676
  p_event_type: string;
20181
20677
  p_idempotency_key?: string;
@@ -21020,6 +21516,37 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
21020
21516
  };
21021
21517
  Returns: undefined;
21022
21518
  };
21519
+ quote_create_from_source: {
21520
+ Args: {
21521
+ _payload?: import("./types").Json;
21522
+ _source_id: string;
21523
+ _source_type: string;
21524
+ };
21525
+ Returns: string;
21526
+ };
21527
+ quote_get_billable_lines: {
21528
+ Args: {
21529
+ _quotation_id: string;
21530
+ };
21531
+ Returns: import("./types").Json;
21532
+ };
21533
+ quote_get_summary: {
21534
+ Args: {
21535
+ _quotation_id: string;
21536
+ };
21537
+ Returns: import("./types").Json;
21538
+ };
21539
+ quote_list_packages: {
21540
+ Args: never;
21541
+ Returns: import("./types").Json;
21542
+ };
21543
+ quote_list_sources: {
21544
+ Args: {
21545
+ _limit?: number;
21546
+ _source_type?: string;
21547
+ };
21548
+ Returns: import("./types").Json;
21549
+ };
21023
21550
  recompute_all_reserved_stock: {
21024
21551
  Args: never;
21025
21552
  Returns: undefined;
@@ -21555,6 +22082,12 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
21555
22082
  };
21556
22083
  Returns: undefined;
21557
22084
  };
22085
+ sync_sick_time_off: {
22086
+ Args: {
22087
+ _period_id: string;
22088
+ };
22089
+ Returns: number;
22090
+ };
21558
22091
  trade_item_stock_duplicates: {
21559
22092
  Args: never;
21560
22093
  Returns: {
@@ -21632,7 +22165,7 @@ export declare const requireSupabaseAuth: import("@tanstack/start-client-core").
21632
22165
  Enums: {
21633
22166
  ai_import_status: "nieuw" | "verwerken" | "bevestigen" | "klaar" | "mislukt";
21634
22167
  app_role: "admin" | "planner" | "monteur" | "administratie" | "ai_admin" | "manager" | "warehouse" | "sales" | "developer" | "receptie";
21635
- doc_layout_type: "pakbon" | "factuur" | "offerte" | "orderbevestiging" | "etiket" | "verzendlabel" | "productlabel" | "barcode_label" | "magazijnlijst" | "controlelijst" | "transportdocument" | "vrij" | "sticker" | "productiebon";
22168
+ doc_layout_type: "pakbon" | "factuur" | "offerte" | "orderbevestiging" | "etiket" | "verzendlabel" | "productlabel" | "barcode_label" | "magazijnlijst" | "controlelijst" | "transportdocument" | "vrij" | "sticker" | "productiebon" | "veilingbon" | "afleverbrief" | "veilingbrief";
21636
22169
  doc_orientation: "portrait" | "landscape";
21637
22170
  exact_env: "staging" | "live";
21638
22171
  exact_push_status: "pending" | "sent" | "error";