@pushwoosh/rpc-gateway-ai-assistant 0.1.534 → 0.1.536

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.
package/data.js CHANGED
@@ -769,6 +769,27 @@ export const data = {
769
769
  }
770
770
  }
771
771
  },
772
+ "pushwoosh.aibuilder.v1.SubscriptionAction": {
773
+ "type": "E",
774
+ "values": [
775
+ "SUBSCRIPTION_ACTION_UNSPECIFIED",
776
+ "SUBSCRIPTION_ACTION_CONFIRM_UNSUBSCRIBE",
777
+ "SUBSCRIPTION_ACTION_UNSUBSCRIBE_ALL",
778
+ "SUBSCRIPTION_ACTION_SAVE_PREFERENCES",
779
+ "SUBSCRIPTION_ACTION_RESUBSCRIBE",
780
+ "SUBSCRIPTION_ACTION_MANAGE_PREFERENCES",
781
+ "SUBSCRIPTION_ACTION_SURVEY_SEND",
782
+ "SUBSCRIPTION_ACTION_SURVEY_SKIP"
783
+ ]
784
+ },
785
+ "pushwoosh.aibuilder.v1.ButtonActionSubscription": {
786
+ "type": "I",
787
+ "fields": {
788
+ "action": {
789
+ "type": "pushwoosh.aibuilder.v1.SubscriptionAction"
790
+ }
791
+ }
792
+ },
772
793
  "pushwoosh.aibuilder.v1.ButtonAction": {
773
794
  "type": "I",
774
795
  "fields": {
@@ -777,13 +798,17 @@ export const data = {
777
798
  },
778
799
  "js": {
779
800
  "type": "pushwoosh.aibuilder.v1.ButtonActionJs"
801
+ },
802
+ "subscription": {
803
+ "type": "pushwoosh.aibuilder.v1.ButtonActionSubscription"
780
804
  }
781
805
  },
782
806
  "oneofs": {
783
807
  "action": {
784
808
  "oneof": [
785
809
  "href",
786
- "js"
810
+ "js",
811
+ "subscription"
787
812
  ]
788
813
  }
789
814
  }
@@ -992,6 +1017,84 @@ export const data = {
992
1017
  }
993
1018
  }
994
1019
  },
1020
+ "pushwoosh.aibuilder.v1.EmailCategories": {
1021
+ "type": "I",
1022
+ "fields": {
1023
+ "updatedText": {
1024
+ "type": "string"
1025
+ },
1026
+ "updatedTextTranslations": {
1027
+ "type": "string",
1028
+ "mapKeyType": "string"
1029
+ },
1030
+ "errorText": {
1031
+ "type": "string"
1032
+ },
1033
+ "errorTextTranslations": {
1034
+ "type": "string",
1035
+ "mapKeyType": "string"
1036
+ },
1037
+ "accentColor": {
1038
+ "type": "string"
1039
+ },
1040
+ "rowGap": {
1041
+ "type": "number"
1042
+ },
1043
+ "fontSize": {
1044
+ "type": "number"
1045
+ }
1046
+ }
1047
+ },
1048
+ "pushwoosh.aibuilder.v1.SurveyOption": {
1049
+ "type": "I",
1050
+ "fields": {
1051
+ "text": {
1052
+ "type": "string"
1053
+ },
1054
+ "translations": {
1055
+ "type": "string",
1056
+ "mapKeyType": "string"
1057
+ },
1058
+ "value": {
1059
+ "type": "string"
1060
+ }
1061
+ }
1062
+ },
1063
+ "pushwoosh.aibuilder.v1.UnsubscribeSurvey": {
1064
+ "type": "I",
1065
+ "fields": {
1066
+ "options": {
1067
+ "type": "pushwoosh.aibuilder.v1.SurveyOption",
1068
+ "array": true
1069
+ },
1070
+ "otherEnabled": {
1071
+ "type": "boolean"
1072
+ },
1073
+ "otherLabel": {
1074
+ "type": "string"
1075
+ },
1076
+ "otherLabelTranslations": {
1077
+ "type": "string",
1078
+ "mapKeyType": "string"
1079
+ },
1080
+ "otherPlaceholder": {
1081
+ "type": "string"
1082
+ },
1083
+ "otherPlaceholderTranslations": {
1084
+ "type": "string",
1085
+ "mapKeyType": "string"
1086
+ },
1087
+ "accentColor": {
1088
+ "type": "string"
1089
+ },
1090
+ "rowGap": {
1091
+ "type": "number"
1092
+ },
1093
+ "fontSize": {
1094
+ "type": "number"
1095
+ }
1096
+ }
1097
+ },
995
1098
  "pushwoosh.aibuilder.v1.Timer": {
996
1099
  "type": "I",
997
1100
  "fields": {
@@ -1257,6 +1360,12 @@ export const data = {
1257
1360
  "barcode": {
1258
1361
  "type": "pushwoosh.aibuilder.v1.Barcode"
1259
1362
  },
1363
+ "emailCategories": {
1364
+ "type": "pushwoosh.aibuilder.v1.EmailCategories"
1365
+ },
1366
+ "survey": {
1367
+ "type": "pushwoosh.aibuilder.v1.UnsubscribeSurvey"
1368
+ },
1260
1369
  "padding": {
1261
1370
  "type": "pushwoosh.aibuilder.v1.EdgeInsets",
1262
1371
  "optional": true
@@ -1291,7 +1400,9 @@ export const data = {
1291
1400
  "menu",
1292
1401
  "social",
1293
1402
  "video",
1294
- "barcode"
1403
+ "barcode",
1404
+ "emailCategories",
1405
+ "survey"
1295
1406
  ]
1296
1407
  }
1297
1408
  }
@@ -2471,6 +2582,18 @@ export const data = {
2471
2582
  "method": "post",
2472
2583
  "path": "/api/v1/aigen/document-to-popup-html"
2473
2584
  },
2585
+ "DocumentToSubscriptionPageHtml": {
2586
+ "request": "pushwoosh.aigen.v1.AiGenDocumentToSubscriptionPageHtmlRequest",
2587
+ "response": "pushwoosh.aigen.v1.AiGenDocumentToSubscriptionPageHtmlResponse",
2588
+ "method": "post",
2589
+ "path": "/api/v1/aigen/document-to-subscription-page-html"
2590
+ },
2591
+ "DefaultSubscriptionPage": {
2592
+ "request": "pushwoosh.aigen.v1.AiGenDefaultSubscriptionPageRequest",
2593
+ "response": "pushwoosh.aigen.v1.AiGenDefaultSubscriptionPageResponse",
2594
+ "method": "get",
2595
+ "path": "/api/v1/aigen/default-subscription-page"
2596
+ },
2474
2597
  "GenerateMediaImage": {
2475
2598
  "request": "pushwoosh.aigen.v1.AiGenMediaImageRequest",
2476
2599
  "response": "pushwoosh.aigen.v1.AiGenMediaImageResponse",
@@ -2528,7 +2651,21 @@ export const data = {
2528
2651
  "AI_GEN_MODE_EMAIL",
2529
2652
  "AI_GEN_MODE_FULL",
2530
2653
  "AI_GEN_MODE_WEB_POPUP",
2531
- "AI_GEN_MODE_WEB_PAGE"
2654
+ "AI_GEN_MODE_WEB_PAGE",
2655
+ "AI_GEN_MODE_SUBSCRIPTION_PAGE"
2656
+ ]
2657
+ },
2658
+ "pushwoosh.aigen.v1.SubscriptionPageKind": {
2659
+ "type": "E",
2660
+ "values": [
2661
+ "SUBSCRIPTION_PAGE_KIND_UNSPECIFIED",
2662
+ "SUBSCRIPTION_PAGE_KIND_PREFERENCE_CENTER",
2663
+ "SUBSCRIPTION_PAGE_KIND_UNSUBSCRIBE_CONFIRM",
2664
+ "SUBSCRIPTION_PAGE_KIND_UNSUBSCRIBE_SURVEY",
2665
+ "SUBSCRIPTION_PAGE_KIND_UNSUBSCRIBED_CATEGORY",
2666
+ "SUBSCRIPTION_PAGE_KIND_UNSUBSCRIBED_ALL",
2667
+ "SUBSCRIPTION_PAGE_KIND_RESUBSCRIBED_CATEGORY",
2668
+ "SUBSCRIPTION_PAGE_KIND_RESUBSCRIBED_ALL"
2532
2669
  ]
2533
2670
  },
2534
2671
  "pushwoosh.aigen.v1.AiGenBlockPath": {
@@ -3381,6 +3518,64 @@ export const data = {
3381
3518
  }
3382
3519
  }
3383
3520
  },
3521
+ "pushwoosh.aigen.v1.AiGenDocumentToSubscriptionPageHtmlRequest": {
3522
+ "type": "I",
3523
+ "fields": {
3524
+ "document": {
3525
+ "type": "pushwoosh.aibuilder.v1.AiBuilderDocument"
3526
+ },
3527
+ "application": {
3528
+ "type": "string"
3529
+ },
3530
+ "kind": {
3531
+ "type": "pushwoosh.aigen.v1.SubscriptionPageKind"
3532
+ },
3533
+ "timerBaseUrl": {
3534
+ "type": "string"
3535
+ }
3536
+ }
3537
+ },
3538
+ "pushwoosh.aigen.v1.AiGenDocumentToSubscriptionPageHtmlResponse": {
3539
+ "type": "I",
3540
+ "fields": {
3541
+ "html": {
3542
+ "type": "string"
3543
+ },
3544
+ "localizationData": {
3545
+ "type": "pushwoosh.aigen.v1.LocalizationLanguage",
3546
+ "mapKeyType": "string"
3547
+ },
3548
+ "document": {
3549
+ "type": "pushwoosh.aibuilder.v1.AiBuilderDocument"
3550
+ }
3551
+ }
3552
+ },
3553
+ "pushwoosh.aigen.v1.AiGenDefaultSubscriptionPageRequest": {
3554
+ "type": "I",
3555
+ "fields": {
3556
+ "application": {
3557
+ "type": "string"
3558
+ },
3559
+ "kind": {
3560
+ "type": "pushwoosh.aigen.v1.SubscriptionPageKind"
3561
+ }
3562
+ }
3563
+ },
3564
+ "pushwoosh.aigen.v1.AiGenDefaultSubscriptionPageResponse": {
3565
+ "type": "I",
3566
+ "fields": {
3567
+ "document": {
3568
+ "type": "pushwoosh.aibuilder.v1.AiBuilderDocument"
3569
+ },
3570
+ "html": {
3571
+ "type": "string"
3572
+ },
3573
+ "localizationData": {
3574
+ "type": "pushwoosh.aigen.v1.LocalizationLanguage",
3575
+ "mapKeyType": "string"
3576
+ }
3577
+ }
3578
+ },
3384
3579
  "pushwoosh.aigen.v1.AiGenDocumentToHtmlResponse": {
3385
3580
  "type": "I",
3386
3581
  "fields": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pushwoosh/rpc-gateway-ai-assistant",
3
- "version": "0.1.534",
3
+ "version": "0.1.536",
4
4
  "description": "AI Assistant api gateway HTTP API Types and Data",
5
5
  "main": "index.js",
6
6
  "module": "index.js",
@@ -478,6 +478,21 @@ export type ButtonActionHref = {
478
478
  export type ButtonActionJs = {
479
479
  onClick: string;
480
480
  };
481
+ /**
482
+ * What a button does on an email subscription page. The emitter writes it as
483
+ * data-pw-action; channels/gateway's runtime script performs it.
484
+ */
485
+ export type SubscriptionAction = 'SUBSCRIPTION_ACTION_UNSPECIFIED'
486
+ /** Applies the unsubscribe the signed link carries (category or all). */
487
+ | 'SUBSCRIPTION_ACTION_CONFIRM_UNSUBSCRIBE' | 'SUBSCRIPTION_ACTION_UNSUBSCRIBE_ALL'
488
+ /** Saves the EmailCategories item's checkboxes. */
489
+ | 'SUBSCRIPTION_ACTION_SAVE_PREFERENCES' | 'SUBSCRIPTION_ACTION_RESUBSCRIBE' | 'SUBSCRIPTION_ACTION_MANAGE_PREFERENCES'
490
+ /** Posts the UnsubscribeSurvey item's answer; SKIP leaves without one. */
491
+ | 'SUBSCRIPTION_ACTION_SURVEY_SEND' | 'SUBSCRIPTION_ACTION_SURVEY_SKIP';
492
+ /** SUBSCRIPTION_PAGE only; the page kind decides which actions it may carry. */
493
+ export type ButtonActionSubscription = {
494
+ action: SubscriptionAction;
495
+ };
481
496
  export type ButtonAction_action_href = {
482
497
  type: 'href';
483
498
  data: ButtonActionHref;
@@ -486,7 +501,11 @@ export type ButtonAction_action_js = {
486
501
  type: 'js';
487
502
  data: ButtonActionJs;
488
503
  };
489
- export type ButtonAction_action = ButtonAction_action_href | ButtonAction_action_js;
504
+ export type ButtonAction_action_subscription = {
505
+ type: 'subscription';
506
+ data: ButtonActionSubscription;
507
+ };
508
+ export type ButtonAction_action = ButtonAction_action_href | ButtonAction_action_js | ButtonAction_action_subscription;
490
509
  export type ButtonAction = {
491
510
  action: ButtonAction_action;
492
511
  };
@@ -630,6 +649,50 @@ export type Form = {
630
649
  submitLabel: string;
631
650
  submitStyles?: ButtonStyles;
632
651
  };
652
+ /**
653
+ * Preference-center checkboxes (SUBSCRIPTION_PAGE only). The list is not stored:
654
+ * the emitter writes one row template, the gateway runtime fills it per subscriber.
655
+ */
656
+ export type EmailCategories = {
657
+ /** Banner shown after a successful save; per-language overrides as TextBlock.translations. */
658
+ updatedText: string;
659
+ updatedTextTranslations: Record<string, string>;
660
+ /** Banner shown when the save fails. */
661
+ errorText: string;
662
+ errorTextTranslations: Record<string, string>;
663
+ /** Checkbox colour (#RGB / #RRGGBB); empty = the scheme's accent. */
664
+ accentColor: string;
665
+ /** Vertical gap between rows in px; 0 = 16. */
666
+ rowGap: number;
667
+ /** Row label size in px; 0 = 14. */
668
+ fontSize: number;
669
+ };
670
+ export type SurveyOption = {
671
+ text: string;
672
+ translations: Record<string, string>;
673
+ /**
674
+ * What a pick submits; empty = `text` in the default language. Never
675
+ * translated, so a reason reads the same whatever language the visitor saw.
676
+ */
677
+ value: string;
678
+ };
679
+ /**
680
+ * Unsubscribe-reason radio list (SUBSCRIPTION_PAGE only). The question above it
681
+ * is ordinary text; Send / Skip are ordinary buttons with SURVEY_SEND / SURVEY_SKIP.
682
+ */
683
+ export type UnsubscribeSurvey = {
684
+ options: SurveyOption[];
685
+ /** Adds a free-text option below the fixed ones. */
686
+ otherEnabled: boolean;
687
+ otherLabel: string;
688
+ otherLabelTranslations: Record<string, string>;
689
+ otherPlaceholder: string;
690
+ otherPlaceholderTranslations: Record<string, string>;
691
+ /** Radio colour (#RGB / #RRGGBB); empty = the scheme's accent. */
692
+ accentColor: string;
693
+ rowGap: number;
694
+ fontSize: number;
695
+ };
633
696
  /**
634
697
  * Countdown timer. Renders in email HTML as an animated GIF served by this
635
698
  * service's public /timer/v1/countdown.gif endpoint (regenerated per open).
@@ -843,7 +906,15 @@ export type ContentItem_item_barcode = {
843
906
  type: 'barcode';
844
907
  data: Barcode;
845
908
  };
846
- export type ContentItem_item = ContentItem_item_text | ContentItem_item_buttonGroup | ContentItem_item_list | ContentItem_item_image | ContentItem_item_form | ContentItem_item_timer | ContentItem_item_rawHtml | ContentItem_item_menu | ContentItem_item_social | ContentItem_item_video | ContentItem_item_barcode;
909
+ export type ContentItem_item_emailCategories = {
910
+ type: 'emailCategories';
911
+ data: EmailCategories;
912
+ };
913
+ export type ContentItem_item_survey = {
914
+ type: 'survey';
915
+ data: UnsubscribeSurvey;
916
+ };
917
+ export type ContentItem_item = ContentItem_item_text | ContentItem_item_buttonGroup | ContentItem_item_list | ContentItem_item_image | ContentItem_item_form | ContentItem_item_timer | ContentItem_item_rawHtml | ContentItem_item_menu | ContentItem_item_social | ContentItem_item_video | ContentItem_item_barcode | ContentItem_item_emailCategories | ContentItem_item_survey;
847
918
  export type ContentItem = {
848
919
  /**
849
920
  * Container padding of the item. Unset = client's default inter-item gap;
@@ -14,6 +14,8 @@ export type AiGenService_DocumentsToHtml = RpcMethod<AiGenDocumentsToHtmlRequest
14
14
  export type AiGenService_DocumentToPageHtml = RpcMethod<AiGenDocumentToPageHtmlRequest, AiGenDocumentToPageHtmlResponse>;
15
15
  export type AiGenService_DocumentToFragmentHtml = RpcMethod<AiGenDocumentToFragmentHtmlRequest, AiGenDocumentToFragmentHtmlResponse>;
16
16
  export type AiGenService_DocumentToPopupHtml = RpcMethod<AiGenDocumentToPopupHtmlRequest, AiGenDocumentToPopupHtmlResponse>;
17
+ export type AiGenService_DocumentToSubscriptionPageHtml = RpcMethod<AiGenDocumentToSubscriptionPageHtmlRequest, AiGenDocumentToSubscriptionPageHtmlResponse>;
18
+ export type AiGenService_DefaultSubscriptionPage = RpcMethod<AiGenDefaultSubscriptionPageRequest, AiGenDefaultSubscriptionPageResponse>;
17
19
  export type AiGenService_GenerateMediaImage = RpcMethod<AiGenMediaImageRequest, AiGenMediaImageResponse>;
18
20
  export type AiGenService_SearchStockPhotos = RpcMethod<AiGenStockSearchRequest, AiGenStockSearchResponse>;
19
21
  export type AiGenService_ImportStockPhoto = RpcMethod<AiGenStockImportRequest, AiGenStockImportResponse>;
@@ -152,6 +154,16 @@ export interface AiGenService {
152
154
  * display SDK rather than the email payload-builder, and it has no html type.
153
155
  */
154
156
  DocumentToPopupHtml: AiGenService_DocumentToPopupHtml;
157
+ /**
158
+ * Renders an email subscription page: page chrome as DocumentToPageHtml, tokens as
159
+ * DocumentToHtml, validated for `kind` first — see documents/subscription-pages.md.
160
+ */
161
+ DocumentToSubscriptionPageHtml: AiGenService_DocumentToSubscriptionPageHtml;
162
+ /**
163
+ * The page an application gets before it designs its own: the editor's starting
164
+ * point and what the gateway serves, from one source so they never drift.
165
+ */
166
+ DefaultSubscriptionPage: AiGenService_DefaultSubscriptionPage;
155
167
  /**
156
168
  * GenerateMediaImage generates ONE image from a prompt and stores it in
157
169
  * the application's media library — the media-gallery "Generate" tab.
@@ -241,7 +253,17 @@ export type AiGenMode = 'AI_GEN_MODE_UNSPECIFIED' | 'AI_GEN_MODE_EMAIL'
241
253
  * conversion + manual editing only — the generation pipeline is not
242
254
  * tuned for pages yet.
243
255
  */
244
- | 'AI_GEN_MODE_WEB_PAGE';
256
+ | 'AI_GEN_MODE_WEB_PAGE'
257
+ /**
258
+ * Email subscription pages (preference center, unsubscribe flow). Manual editing
259
+ * only; the items and actions a page may carry depend on its SubscriptionPageKind.
260
+ */
261
+ | 'AI_GEN_MODE_SUBSCRIPTION_PAGE';
262
+ /**
263
+ * The page's place in the email subscription flow. Mirrors
264
+ * uds/objects email_subscription_pages.kind.
265
+ */
266
+ export type SubscriptionPageKind = 'SUBSCRIPTION_PAGE_KIND_UNSPECIFIED' | 'SUBSCRIPTION_PAGE_KIND_PREFERENCE_CENTER' | 'SUBSCRIPTION_PAGE_KIND_UNSUBSCRIBE_CONFIRM' | 'SUBSCRIPTION_PAGE_KIND_UNSUBSCRIBE_SURVEY' | 'SUBSCRIPTION_PAGE_KIND_UNSUBSCRIBED_CATEGORY' | 'SUBSCRIPTION_PAGE_KIND_UNSUBSCRIBED_ALL' | 'SUBSCRIPTION_PAGE_KIND_RESUBSCRIBED_CATEGORY' | 'SUBSCRIPTION_PAGE_KIND_RESUBSCRIBED_ALL';
245
267
  /**
246
268
  * AiGenBlockPath wraps a block-addressing path so it can appear inside
247
269
  * repeated fields — proto3 disallows `repeated repeated`. Path is
@@ -1002,6 +1024,34 @@ export type AiGenDocumentToPopupHtmlResponse = {
1002
1024
  localizationData: Record<string, LocalizationLanguage>;
1003
1025
  document: pushwoosh_aibuilder_v1_AiBuilderDocument;
1004
1026
  };
1027
+ export type AiGenDocumentToSubscriptionPageHtmlRequest = {
1028
+ /** The document to render. Required; must carry at least one page. */
1029
+ document: pushwoosh_aibuilder_v1_AiBuilderDocument;
1030
+ /** Application id. Required: it scopes the request to the caller's account. */
1031
+ application: string;
1032
+ /** Which page of the flow this is; decides the validation rules. Required. */
1033
+ kind: SubscriptionPageKind;
1034
+ timerBaseUrl: string;
1035
+ };
1036
+ export type AiGenDocumentToSubscriptionPageHtmlResponse = {
1037
+ /**
1038
+ * The complete page with {{key|html|}} / {{key|text|}} tokens, ready to store
1039
+ * as email_subscription_pages.content.
1040
+ */
1041
+ html: string;
1042
+ /** Every token's value for every language; stored as email_subscription_pages.localization. */
1043
+ localizationData: Record<string, LocalizationLanguage>;
1044
+ document: pushwoosh_aibuilder_v1_AiBuilderDocument;
1045
+ };
1046
+ export type AiGenDefaultSubscriptionPageRequest = {
1047
+ application: string;
1048
+ kind: SubscriptionPageKind;
1049
+ };
1050
+ export type AiGenDefaultSubscriptionPageResponse = {
1051
+ document: pushwoosh_aibuilder_v1_AiBuilderDocument;
1052
+ html: string;
1053
+ localizationData: Record<string, LocalizationLanguage>;
1054
+ };
1005
1055
  export type AiGenDocumentToHtmlResponse = {
1006
1056
  /** The complete email document, ready to store as EmailContent.Smartcards.html. */
1007
1057
  html: string;