@wix/auto_sdk_seo_blog-post-candidates 1.0.0

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.
@@ -0,0 +1,731 @@
1
+ import { ListBlogPostCandidatesRequest as ListBlogPostCandidatesRequest$1, ListBlogPostCandidatesResponse as ListBlogPostCandidatesResponse$1, CreateContentPlanRequest as CreateContentPlanRequest$1, CreateContentPlanResponse as CreateContentPlanResponse$1 } from './index.typings.js';
2
+ import '@wix/sdk-types';
3
+
4
+ /**
5
+ * A blog post candidate is a single blog post brief in a site's content plan.
6
+ *
7
+ * Each candidate pairs a target keyword with a suggested title, the search
8
+ * data behind that keyword, and the site page the post should support. A site
9
+ * owner uses a candidate as the starting point for writing a post.
10
+ *
11
+ * Candidates are generated by the content plan pipeline and are read-only.
12
+ * Call Create Content Plan to generate them, and List Blog Post Candidates to
13
+ * read them.
14
+ */
15
+ interface BlogPostCandidate {
16
+ /**
17
+ * Blog post candidate ID.
18
+ *
19
+ * Treat this value as opaque. Don't parse it or build it yourself, and
20
+ * pass it back exactly as received. The individual IDs it's built from are
21
+ * available on `candidateData`.
22
+ * @maxLength 100
23
+ * @readonly
24
+ */
25
+ id?: string | null;
26
+ /** IDs that identify the candidate and the flow that generated it. */
27
+ candidateData?: CandidateData;
28
+ /**
29
+ * The blog post brief itself: the suggested title, the target keywords,
30
+ * and the search data behind them.
31
+ */
32
+ briefData?: BriefData;
33
+ /**
34
+ * SEO tags suggested for the blog post, such as its title tag and meta
35
+ * description.
36
+ */
37
+ seoData?: SeoSchema;
38
+ }
39
+ interface CandidateData {
40
+ /**
41
+ * ID of the blog post candidate within its content plan flow.
42
+ * @format GUID
43
+ * @readonly
44
+ */
45
+ blogPostCandidateId?: string | null;
46
+ /**
47
+ * ID of the content plan flow that generated this candidate.
48
+ * @format GUID
49
+ * @readonly
50
+ */
51
+ contentPlanFlowId?: string | null;
52
+ }
53
+ interface BriefData {
54
+ /**
55
+ * Suggested title for the blog post.
56
+ * @maxLength 1000
57
+ */
58
+ h1Title?: string | null;
59
+ /**
60
+ * Keyword the blog post targets.
61
+ * @maxLength 1000
62
+ */
63
+ keyword?: string | null;
64
+ /**
65
+ * Primary keyword for the page the blog post supports.
66
+ *
67
+ * A page has a single main keyword, and several blog posts can support the
68
+ * same one.
69
+ * @maxLength 1000
70
+ */
71
+ mainKeyword?: string | null;
72
+ /**
73
+ * Search engine results data for `mainKeyword`, such as its search volume
74
+ * and how hard it is to rank for.
75
+ *
76
+ * List Blog Post Candidates doesn't currently return this field.
77
+ */
78
+ serpData?: SerpData;
79
+ /**
80
+ * URL of the site page the blog post is meant to support.
81
+ * @maxLength 1000
82
+ */
83
+ pageUrl?: string | null;
84
+ }
85
+ interface SerpData {
86
+ /**
87
+ * SerpDataResult ID
88
+ * @format GUID
89
+ * @readonly
90
+ */
91
+ id?: string | null;
92
+ /**
93
+ * list of people also ask questions
94
+ * @maxSize 4
95
+ */
96
+ peopleAlsoAskSuggestions?: PeopleAlsoAskQuestion[];
97
+ /**
98
+ * list of related searches
99
+ * @maxSize 10
100
+ * @maxLength 10000
101
+ */
102
+ peopleAlsoSearchSuggestions?: string[] | null;
103
+ /**
104
+ * list of autocomplete suggestions
105
+ * @maxSize 15
106
+ * @maxLength 10000
107
+ */
108
+ autocompleteSuggestions?: string[] | null;
109
+ }
110
+ interface PeopleAlsoAskQuestion {
111
+ /**
112
+ * people also ask question title
113
+ * @maxLength 10000
114
+ */
115
+ question?: string | null;
116
+ /**
117
+ * answers to the question
118
+ * @maxSize 2
119
+ */
120
+ answers?: PeopleAlsoAskAnswer[];
121
+ }
122
+ interface PeopleAlsoAskAnswer {
123
+ /**
124
+ * people also ask answer title
125
+ * @maxLength 10000
126
+ */
127
+ title?: string | null;
128
+ /**
129
+ * description of the answer
130
+ * @maxLength 10000
131
+ */
132
+ description?: string | null;
133
+ }
134
+ /**
135
+ * The SEO schema object contains data about different types of meta tags. It makes sure that the information about your page is presented properly to search engines.
136
+ * The search engines use this information for ranking purposes, or to display snippets in the search results.
137
+ * This data will override other sources of tags (for example patterns) and will be included in the <head> section of the HTML document, while not being displayed on the page itself.
138
+ */
139
+ interface SeoSchema {
140
+ /** SEO tag information. */
141
+ tags?: Tag[];
142
+ /** SEO general settings. */
143
+ settings?: Settings;
144
+ }
145
+ interface Keyword {
146
+ /** Keyword value. */
147
+ term?: string;
148
+ /** Whether the keyword is the main focus keyword. */
149
+ isMain?: boolean;
150
+ /**
151
+ * The source that added the keyword terms to the SEO settings.
152
+ * @maxLength 1000
153
+ */
154
+ origin?: string | null;
155
+ }
156
+ interface Tag {
157
+ /**
158
+ * SEO tag type.
159
+ *
160
+ *
161
+ * Supported values: `title`, `meta`, `script`, `link`.
162
+ *
163
+ * Which of these an API actually accepts depends on where the tag is being set: this
164
+ * list is not a blanket guarantee across every API that reuses this message. Site SEO
165
+ * Tags in particular accepts only `meta` (see `SiteSeoTags.tags`) and rejects
166
+ * `title`/`script`/`link` with a validation error even though they appear here —
167
+ * check the field description of the specific `tags`-typed field you're writing to
168
+ * for the types it actually supports and the error it returns.
169
+ *
170
+ * Limitation: `title` and `script` (e.g. a `script` tag with `props.type`
171
+ * `"application/ld+json"` carrying structured data) are supported only when
172
+ * `custom` is unset or `false`. Setting `custom: true` on a `title` or `script`
173
+ * tag is rejected with `TAG_TYPE_NOT_ALLOWED`, because `custom: true` routes the
174
+ * write through the site's Advanced/Custom Tags list. To write structured data,
175
+ * omit `custom` (or set it to `false`).
176
+ */
177
+ type?: string;
178
+ /**
179
+ * A `{"key": "value"}` pair object where each SEO tag property (`"name"`, `"content"`, `"rel"`, `"href"`) contains a value.
180
+ * For example: `{"name": "description", "content": "the description itself"}`.
181
+ */
182
+ props?: Record<string, any> | null;
183
+ /** SEO tag metadata. For example, `{"height": 300, "width": 240}`. */
184
+ meta?: Record<string, any> | null;
185
+ /** SEO tag inner content. For example, `<title> inner content </title>`. */
186
+ children?: string;
187
+ /**
188
+ * Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages) —
189
+ * i.e. an entry from the site's Advanced/Custom Tags list.
190
+ *
191
+ * Setting this to `true` on a write restricts which `type` values are accepted
192
+ * — the same restriction the Advanced/Custom Tags UI enforces. `title` and
193
+ * `script` tags (including JSON-LD structured data) must be sent with `custom`
194
+ * omitted or `false`; sending them with `custom: true` is rejected with
195
+ * `TAG_TYPE_NOT_ALLOWED`.
196
+ *
197
+ * Note this is a separate restriction from Site SEO Tags' own type restriction on
198
+ * `SiteSeoTags.tags`: even with `custom` unset, Site SEO Tags rejects `script` (e.g.
199
+ * for site-wide structured data) unconditionally. There is currently no way to set
200
+ * site-wide, every-page structured data through any of these APIs — write a per-page
201
+ * `script` tag through the Item SEO Tags API instead.
202
+ *
203
+ * This flag is scoped to that feature only. It is NOT an indicator of whether a standard tag
204
+ * (`title`, `description`, Open Graph, etc.) reflects a manually configured value versus a computed
205
+ * default/pattern — standard tags always resolve with `custom: false`, even when their content comes
206
+ * from a page's manually saved SEO title/description override. Don't use this field to verify whether
207
+ * a live page reflects a manual per-page SEO edit.
208
+ *
209
+ * Limitation: when `ResolveStaticPageSeoTags` is called without `seoData`, the per-page SEO data is read
210
+ * only from the Vibe/Wix-managed-headless override store. That store holds nothing for classic Wix Editor
211
+ * or Wix Studio pages, so even genuine Advanced/Custom Tags saved on those pages are missing from the
212
+ * response entirely — there, `false` means this API could not tell, not that no custom tag exists.
213
+ * Pass `seoData` explicitly to resolve against a known set of tags.
214
+ */
215
+ custom?: boolean;
216
+ /** Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines. */
217
+ disabled?: boolean;
218
+ }
219
+ interface Settings {
220
+ /**
221
+ * Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.
222
+ *
223
+ *
224
+ * Default: `false` (automatical redirect is enabled).
225
+ */
226
+ preventAutoRedirect?: boolean;
227
+ /**
228
+ * User-selected keyword terms for a specific page.
229
+ * @maxSize 5
230
+ */
231
+ keywords?: Keyword[];
232
+ }
233
+ interface GetBlogPostCandidateRequest {
234
+ /**
235
+ * id of the content plan flow this blog post candidate belongs to
236
+ * @format GUID
237
+ */
238
+ contentPlanFlowId?: string | null;
239
+ }
240
+ interface GetBlogPostCandidateResponse {
241
+ /** blog post candidate */
242
+ blogPostCandidate?: BlogPostCandidate;
243
+ }
244
+ interface GetBlogPostCandidateByIdRequest {
245
+ /**
246
+ * id of the blog post candidate
247
+ * @minLength 1
248
+ * @maxLength 100
249
+ */
250
+ blogPostCandidateId?: string | null;
251
+ }
252
+ interface GetBlogPostCandidateByIdResponse {
253
+ /** blog post candidate */
254
+ blogPostCandidate?: BlogPostCandidate;
255
+ }
256
+ interface MarkBlogPostCandidateRequest {
257
+ /** ids of the blog post candidate */
258
+ candidateData?: CandidateData;
259
+ /**
260
+ * ID of the blog post that was created from this candidate.
261
+ * @format GUID
262
+ */
263
+ blogPostId?: string | null;
264
+ }
265
+ interface MarkBlogPostCandidateResponse {
266
+ }
267
+ interface BulkMarkBlogPostCandidatesRequest {
268
+ /**
269
+ * id of the content plan flow these blog post candidates belong to
270
+ * @format GUID
271
+ */
272
+ contentPlanFlowId?: string | null;
273
+ /**
274
+ * List of blog post candidates to mark
275
+ * @maxSize 1000
276
+ */
277
+ items?: BulkMarkBlogPostCandidateItem[];
278
+ }
279
+ interface BulkMarkBlogPostCandidateItem {
280
+ /**
281
+ * id of the blog post candidate
282
+ * @format GUID
283
+ */
284
+ blogPostCandidateId?: string | null;
285
+ /**
286
+ * generated blog post id
287
+ * @format GUID
288
+ */
289
+ blogPostId?: string | null;
290
+ }
291
+ interface BulkMarkBlogPostCandidatesResponse {
292
+ /**
293
+ * Per-entry results, correlated by `itemMetadata.originalIndex`.
294
+ * @maxSize 1000
295
+ */
296
+ results?: BulkMarkBlogPostCandidateResult[];
297
+ /** How many entries succeeded and how many failed. */
298
+ bulkActionMetadata?: BulkActionMetadata;
299
+ }
300
+ interface ItemMetadata {
301
+ /**
302
+ * Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).
303
+ * @maxLength 100
304
+ */
305
+ id?: string | null;
306
+ /** Index of the item within the request array. Allows for correlation between request and response items. */
307
+ originalIndex?: number;
308
+ /** Whether the requested action was successful for this item. When `false`, the `error` field is populated. */
309
+ success?: boolean;
310
+ /** Details about the error in case of failure. */
311
+ error?: ApplicationError;
312
+ }
313
+ interface ApplicationError {
314
+ /** Error code. */
315
+ code?: string;
316
+ /** Description of the error. */
317
+ description?: string;
318
+ /** Data related to the error. */
319
+ data?: Record<string, any> | null;
320
+ }
321
+ /** Result of marking one blog post candidate in a bulk request. */
322
+ interface BulkMarkBlogPostCandidateResult {
323
+ /** Success/failure and error detail for this entry. */
324
+ itemMetadata?: ItemMetadata;
325
+ }
326
+ interface BulkActionMetadata {
327
+ /** Number of items that were successfully processed. */
328
+ totalSuccesses?: number;
329
+ /** Number of items that couldn't be processed. */
330
+ totalFailures?: number;
331
+ /** Number of failures without details because detailed failure threshold was exceeded. */
332
+ undetailedFailures?: number;
333
+ }
334
+ interface ListBlogPostCandidatesRequest {
335
+ /**
336
+ * ID of the content plan flow to retrieve candidates for.
337
+ *
338
+ * Omit to read the site's most recent successful flow.
339
+ * @format GUID
340
+ */
341
+ contentPlanFlowId: string | null;
342
+ /**
343
+ * Whether to return only candidates that haven't been used for a blog post
344
+ * yet.
345
+ *
346
+ * A candidate is marked as used when a blog post is created from it in the
347
+ * Wix Blog product. An app can read this flag but can't set it, so track
348
+ * the posts you've written on your own side as well.
349
+ *
350
+ * Default: `false`, which returns every candidate.
351
+ */
352
+ includeOnlyUnmarked?: boolean | null;
353
+ /**
354
+ * Cursor paging. Omit for the first page.
355
+ *
356
+ * Omit this object entirely to return every candidate in a single response.
357
+ */
358
+ paging?: CursorPaging;
359
+ }
360
+ interface CursorPaging {
361
+ /**
362
+ * Max items per page. Default 50, max 100.
363
+ * @max 100
364
+ */
365
+ limit?: number | null;
366
+ /**
367
+ * Cursor from a previous response. Omit for the first page.
368
+ * @maxLength 16000
369
+ */
370
+ cursor?: string | null;
371
+ }
372
+ interface ListBlogPostCandidatesResponse {
373
+ /**
374
+ * Retrieved blog post candidates.
375
+ * @maxSize 1000
376
+ */
377
+ blogPostCandidates?: BlogPostCandidate[];
378
+ /** Paging metadata. */
379
+ pagingMetadata?: CursorPagingMetadata;
380
+ }
381
+ interface CursorPagingMetadata {
382
+ /** Items returned in this page. */
383
+ count?: number | null;
384
+ /** Cursors for next/previous page. */
385
+ cursors?: Cursors;
386
+ /** Whether there are more pages. */
387
+ hasNext?: boolean | null;
388
+ }
389
+ interface Cursors {
390
+ /**
391
+ * Cursor for the next page.
392
+ * @maxLength 16000
393
+ */
394
+ next?: string | null;
395
+ /**
396
+ * Cursor for the previous page.
397
+ * @maxLength 16000
398
+ */
399
+ prev?: string | null;
400
+ }
401
+ /** Deprecated alias request. Same fields as ListBlogPostCandidatesRequest. */
402
+ interface QueryBlogPostCandidatesRequest {
403
+ /**
404
+ * Content plan flow ID.
405
+ * @format GUID
406
+ */
407
+ contentPlanFlowId?: string | null;
408
+ /** Whether to return only unmarked candidates. */
409
+ includeOnlyUnmarked?: boolean | null;
410
+ /** Cursor paging. */
411
+ paging?: CursorPaging;
412
+ }
413
+ /** Deprecated alias response. Same fields as ListBlogPostCandidatesResponse. */
414
+ interface QueryBlogPostCandidatesResponse {
415
+ /**
416
+ * Blog post candidates.
417
+ * @maxSize 1000
418
+ */
419
+ blogPostCandidates?: BlogPostCandidate[];
420
+ /** Paging metadata. */
421
+ pagingMetadata?: CursorPagingMetadata;
422
+ }
423
+ interface GetContentPlanRequest {
424
+ /** requested start date */
425
+ startDate?: Date | null;
426
+ /** requested end date */
427
+ endDate?: Date | null;
428
+ }
429
+ interface GetContentPlanResponse {
430
+ /** content plan */
431
+ contentPlan?: ContentPlan;
432
+ }
433
+ interface ContentPlan {
434
+ /**
435
+ * content plan columns
436
+ * @maxSize 10
437
+ */
438
+ columns?: Column[];
439
+ /**
440
+ * content plan rows
441
+ * @maxSize 1000
442
+ */
443
+ rows?: Row[];
444
+ /**
445
+ * description to show the user
446
+ * @maxLength 1000
447
+ */
448
+ description?: string | null;
449
+ }
450
+ interface Column {
451
+ /**
452
+ * key is the column identifier (e.g. "date", "post-h1", "tags")
453
+ * @maxLength 100
454
+ */
455
+ key?: string | null;
456
+ /** type of the column */
457
+ type?: ColumnTypeWithLiterals;
458
+ /** editable flag */
459
+ editable?: boolean;
460
+ /** limit of characters for the column */
461
+ limit?: number | null;
462
+ /**
463
+ * width of the column
464
+ * @maxLength 100
465
+ */
466
+ width?: string | null;
467
+ }
468
+ declare enum ColumnType {
469
+ TEXT = "TEXT",
470
+ DATE = "DATE",
471
+ TEXT_LONG = "TEXT_LONG"
472
+ }
473
+ /** @enumType */
474
+ type ColumnTypeWithLiterals = ColumnType | 'TEXT' | 'DATE' | 'TEXT_LONG';
475
+ interface Row {
476
+ /**
477
+ * id of the row
478
+ * @readonly
479
+ * @format GUID
480
+ */
481
+ id?: string | null;
482
+ /** order of the row */
483
+ order?: number | null;
484
+ /** data of the row (key = column key, value = cell value) */
485
+ data?: Record<string, any> | null;
486
+ /** status */
487
+ status?: RowStatusWithLiterals;
488
+ }
489
+ declare enum RowStatus {
490
+ DRAFT = "DRAFT",
491
+ PUBLISHED = "PUBLISHED"
492
+ }
493
+ /** @enumType */
494
+ type RowStatusWithLiterals = RowStatus | 'DRAFT' | 'PUBLISHED';
495
+ interface UpdateContentPlanRequest {
496
+ /**
497
+ * updated content plan rows
498
+ * @maxSize 100
499
+ */
500
+ updatedRows?: Row[];
501
+ /**
502
+ * deleted content plan rows
503
+ * @maxSize 1000
504
+ * @maxLength 1000
505
+ */
506
+ deletedRows?: string[] | null;
507
+ }
508
+ interface UpdateContentPlanResponse {
509
+ /** updated content plan */
510
+ contentPlan?: ContentPlan;
511
+ }
512
+ interface CreateContentPlanRequest {
513
+ /**
514
+ * ID of the content plan flow to generate the blog post briefs for.
515
+ *
516
+ * Omit to use the site's most recent eligible flow.
517
+ * Do not remove the fallback — existing callers depend on it.
518
+ * @format GUID
519
+ */
520
+ contentPlanFlowId?: string | null;
521
+ }
522
+ interface CreateContentPlanResponse {
523
+ /**
524
+ * Whether the blog post briefs were generated.
525
+ *
526
+ * Check this field as well as the HTTP status. Some failures return `false`
527
+ * here rather than an error.
528
+ */
529
+ success?: boolean | null;
530
+ /**
531
+ * Reason the generation failed.
532
+ *
533
+ * Returned only when `success` is `false`.
534
+ * @maxLength 1000
535
+ */
536
+ message?: string | null;
537
+ /**
538
+ * ID of the content plan flow the briefs were generated under.
539
+ *
540
+ * When this method regenerates a plan for a flow that already succeeded,
541
+ * this is a new ID. Poll this ID rather than the one you sent.
542
+ * @format GUID
543
+ */
544
+ contentPlanFlowId?: string | null;
545
+ }
546
+ interface DomainEvent extends DomainEventBodyOneOf {
547
+ createdEvent?: EntityCreatedEvent;
548
+ updatedEvent?: EntityUpdatedEvent;
549
+ deletedEvent?: EntityDeletedEvent;
550
+ actionEvent?: ActionEvent;
551
+ /** Event ID. With this ID you can easily spot duplicated events and ignore them. */
552
+ id?: string;
553
+ /**
554
+ * Fully Qualified Domain Name of an entity. This is a unique identifier assigned to the API main business entities.
555
+ * For example, `wix.stores.catalog.product`, `wix.bookings.session`, `wix.payments.transaction`.
556
+ */
557
+ entityFqdn?: string;
558
+ /**
559
+ * Event action name, placed at the top level to make it easier for users to dispatch messages.
560
+ * For example: `created`/`updated`/`deleted`/`started`/`completed`/`email_opened`.
561
+ */
562
+ slug?: string;
563
+ /** ID of the entity associated with the event. */
564
+ entityId?: string;
565
+ /** Event timestamp in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format and UTC time. For example, `2020-04-26T13:57:50.699Z`. */
566
+ eventTime?: Date | null;
567
+ /**
568
+ * Whether the event was triggered as a result of a privacy regulation application
569
+ * (for example, GDPR).
570
+ */
571
+ triggeredByAnonymizeRequest?: boolean | null;
572
+ /** If present, indicates the action that triggered the event. */
573
+ originatedFrom?: string | null;
574
+ /**
575
+ * A sequence number that indicates the order of updates to an entity. For example, if an entity was updated at `16:00` and then again at `16:01`, the second update will always have a higher sequence number.
576
+ * You can use this number to make sure you're handling updates in the right order. Just save the latest sequence number on your end and compare it to the one in each new message. If the new message has an older (lower) number, you can safely ignore it.
577
+ */
578
+ entityEventSequence?: string | null;
579
+ }
580
+ /** @oneof */
581
+ interface DomainEventBodyOneOf {
582
+ createdEvent?: EntityCreatedEvent;
583
+ updatedEvent?: EntityUpdatedEvent;
584
+ deletedEvent?: EntityDeletedEvent;
585
+ actionEvent?: ActionEvent;
586
+ }
587
+ interface EntityCreatedEvent {
588
+ entityAsJson?: string;
589
+ /** Indicates the event was triggered by a restore-from-trashbin operation for a previously deleted entity */
590
+ restoreInfo?: RestoreInfo;
591
+ }
592
+ interface RestoreInfo {
593
+ deletedDate?: Date | null;
594
+ }
595
+ interface EntityUpdatedEvent {
596
+ /**
597
+ * Since platformized APIs only expose PATCH and not PUT we can't assume that the fields sent from the client are the actual diff.
598
+ * This means that to generate a list of changed fields (as opposed to sent fields) one needs to traverse both objects.
599
+ * We don't want to impose this on all developers and so we leave this traversal to the notification recipients which need it.
600
+ */
601
+ currentEntityAsJson?: string;
602
+ }
603
+ interface EntityDeletedEvent {
604
+ /** Entity that was deleted. */
605
+ deletedEntityAsJson?: string | null;
606
+ }
607
+ interface ActionEvent {
608
+ bodyAsJson?: string;
609
+ }
610
+ interface MessageEnvelope {
611
+ /**
612
+ * App instance ID.
613
+ * @format GUID
614
+ */
615
+ instanceId?: string | null;
616
+ /**
617
+ * Event type.
618
+ * @maxLength 150
619
+ */
620
+ eventType?: string;
621
+ /** The identification type and identity data. */
622
+ identity?: IdentificationData;
623
+ /** Stringify payload. */
624
+ data?: string;
625
+ /** Details related to the account */
626
+ accountInfo?: AccountInfo;
627
+ }
628
+ interface IdentificationData extends IdentificationDataIdOneOf {
629
+ /**
630
+ * ID of a site visitor that has not logged in to the site.
631
+ * @format GUID
632
+ */
633
+ anonymousVisitorId?: string;
634
+ /**
635
+ * ID of a site visitor that has logged in to the site.
636
+ * @format GUID
637
+ */
638
+ memberId?: string;
639
+ /**
640
+ * ID of a Wix user (site owner, contributor, etc.).
641
+ * @format GUID
642
+ */
643
+ wixUserId?: string;
644
+ /**
645
+ * ID of an app.
646
+ * @format GUID
647
+ */
648
+ appId?: string;
649
+ /** @readonly */
650
+ identityType?: WebhookIdentityTypeWithLiterals;
651
+ }
652
+ /** @oneof */
653
+ interface IdentificationDataIdOneOf {
654
+ /**
655
+ * ID of a site visitor that has not logged in to the site.
656
+ * @format GUID
657
+ */
658
+ anonymousVisitorId?: string;
659
+ /**
660
+ * ID of a site visitor that has logged in to the site.
661
+ * @format GUID
662
+ */
663
+ memberId?: string;
664
+ /**
665
+ * ID of a Wix user (site owner, contributor, etc.).
666
+ * @format GUID
667
+ */
668
+ wixUserId?: string;
669
+ /**
670
+ * ID of an app.
671
+ * @format GUID
672
+ */
673
+ appId?: string;
674
+ }
675
+ declare enum WebhookIdentityType {
676
+ UNKNOWN = "UNKNOWN",
677
+ ANONYMOUS_VISITOR = "ANONYMOUS_VISITOR",
678
+ MEMBER = "MEMBER",
679
+ WIX_USER = "WIX_USER",
680
+ APP = "APP"
681
+ }
682
+ /** @enumType */
683
+ type WebhookIdentityTypeWithLiterals = WebhookIdentityType | 'UNKNOWN' | 'ANONYMOUS_VISITOR' | 'MEMBER' | 'WIX_USER' | 'APP';
684
+ interface AccountInfo {
685
+ /**
686
+ * ID of the Wix account associated with the event.
687
+ * @format GUID
688
+ */
689
+ accountId?: string | null;
690
+ /**
691
+ * ID of the parent Wix account. Only included when accountId belongs to a child account.
692
+ * @format GUID
693
+ */
694
+ parentAccountId?: string | null;
695
+ /**
696
+ * ID of the Wix site associated with the event. Only included when the event is tied to a specific site.
697
+ * @format GUID
698
+ */
699
+ siteId?: string | null;
700
+ }
701
+ /** @docsIgnore */
702
+ type CreateContentPlanApplicationErrors = {
703
+ code?: 'FLOW_NOT_READY_FOR_CONTENT_PLAN';
704
+ description?: string;
705
+ data?: Record<string, any>;
706
+ } | {
707
+ code?: 'CONTENT_PLAN_FLOW_NOT_FOUND';
708
+ description?: string;
709
+ data?: Record<string, any>;
710
+ } | {
711
+ code?: 'CONTENT_PLAN_FLOW_CANCELED';
712
+ description?: string;
713
+ data?: Record<string, any>;
714
+ };
715
+
716
+ type __PublicMethodMetaInfo<K = string, M = unknown, T = unknown, S = unknown, Q = unknown, R = unknown> = {
717
+ getUrl: (context: any) => string;
718
+ httpMethod: K;
719
+ path: string;
720
+ pathParams: M;
721
+ __requestType: T;
722
+ __originalRequestType: S;
723
+ __responseType: Q;
724
+ __originalResponseType: R;
725
+ };
726
+ declare function listBlogPostCandidates(): __PublicMethodMetaInfo<'GET', {
727
+ contentPlanFlowId: string;
728
+ }, ListBlogPostCandidatesRequest$1, ListBlogPostCandidatesRequest, ListBlogPostCandidatesResponse$1, ListBlogPostCandidatesResponse>;
729
+ declare function createContentPlan(): __PublicMethodMetaInfo<'POST', {}, CreateContentPlanRequest$1, CreateContentPlanRequest, CreateContentPlanResponse$1, CreateContentPlanResponse>;
730
+
731
+ export { type AccountInfo as AccountInfoOriginal, type ActionEvent as ActionEventOriginal, type ApplicationError as ApplicationErrorOriginal, type BlogPostCandidate as BlogPostCandidateOriginal, type BriefData as BriefDataOriginal, type BulkActionMetadata as BulkActionMetadataOriginal, type BulkMarkBlogPostCandidateItem as BulkMarkBlogPostCandidateItemOriginal, type BulkMarkBlogPostCandidateResult as BulkMarkBlogPostCandidateResultOriginal, type BulkMarkBlogPostCandidatesRequest as BulkMarkBlogPostCandidatesRequestOriginal, type BulkMarkBlogPostCandidatesResponse as BulkMarkBlogPostCandidatesResponseOriginal, type CandidateData as CandidateDataOriginal, type Column as ColumnOriginal, ColumnType as ColumnTypeOriginal, type ColumnTypeWithLiterals as ColumnTypeWithLiteralsOriginal, type ContentPlan as ContentPlanOriginal, type CreateContentPlanApplicationErrors as CreateContentPlanApplicationErrorsOriginal, type CreateContentPlanRequest as CreateContentPlanRequestOriginal, type CreateContentPlanResponse as CreateContentPlanResponseOriginal, type CursorPagingMetadata as CursorPagingMetadataOriginal, type CursorPaging as CursorPagingOriginal, type Cursors as CursorsOriginal, type DomainEventBodyOneOf as DomainEventBodyOneOfOriginal, type DomainEvent as DomainEventOriginal, type EntityCreatedEvent as EntityCreatedEventOriginal, type EntityDeletedEvent as EntityDeletedEventOriginal, type EntityUpdatedEvent as EntityUpdatedEventOriginal, type GetBlogPostCandidateByIdRequest as GetBlogPostCandidateByIdRequestOriginal, type GetBlogPostCandidateByIdResponse as GetBlogPostCandidateByIdResponseOriginal, type GetBlogPostCandidateRequest as GetBlogPostCandidateRequestOriginal, type GetBlogPostCandidateResponse as GetBlogPostCandidateResponseOriginal, type GetContentPlanRequest as GetContentPlanRequestOriginal, type GetContentPlanResponse as GetContentPlanResponseOriginal, type IdentificationDataIdOneOf as IdentificationDataIdOneOfOriginal, type IdentificationData as IdentificationDataOriginal, type ItemMetadata as ItemMetadataOriginal, type Keyword as KeywordOriginal, type ListBlogPostCandidatesRequest as ListBlogPostCandidatesRequestOriginal, type ListBlogPostCandidatesResponse as ListBlogPostCandidatesResponseOriginal, type MarkBlogPostCandidateRequest as MarkBlogPostCandidateRequestOriginal, type MarkBlogPostCandidateResponse as MarkBlogPostCandidateResponseOriginal, type MessageEnvelope as MessageEnvelopeOriginal, type PeopleAlsoAskAnswer as PeopleAlsoAskAnswerOriginal, type PeopleAlsoAskQuestion as PeopleAlsoAskQuestionOriginal, type QueryBlogPostCandidatesRequest as QueryBlogPostCandidatesRequestOriginal, type QueryBlogPostCandidatesResponse as QueryBlogPostCandidatesResponseOriginal, type RestoreInfo as RestoreInfoOriginal, type Row as RowOriginal, RowStatus as RowStatusOriginal, type RowStatusWithLiterals as RowStatusWithLiteralsOriginal, type SeoSchema as SeoSchemaOriginal, type SerpData as SerpDataOriginal, type Settings as SettingsOriginal, type Tag as TagOriginal, type UpdateContentPlanRequest as UpdateContentPlanRequestOriginal, type UpdateContentPlanResponse as UpdateContentPlanResponseOriginal, WebhookIdentityType as WebhookIdentityTypeOriginal, type WebhookIdentityTypeWithLiterals as WebhookIdentityTypeWithLiteralsOriginal, type __PublicMethodMetaInfo, createContentPlan, listBlogPostCandidates };