@wix/auto_sdk_seo_keyword-research 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.
- package/build/cjs/index.d.ts +101 -0
- package/build/cjs/index.js +372 -0
- package/build/cjs/index.js.map +1 -0
- package/build/cjs/index.typings.d.ts +672 -0
- package/build/cjs/index.typings.js +340 -0
- package/build/cjs/index.typings.js.map +1 -0
- package/build/cjs/meta.d.ts +527 -0
- package/build/cjs/meta.js +301 -0
- package/build/cjs/meta.js.map +1 -0
- package/build/es/index.d.mts +101 -0
- package/build/es/index.mjs +346 -0
- package/build/es/index.mjs.map +1 -0
- package/build/es/index.typings.d.mts +672 -0
- package/build/es/index.typings.mjs +314 -0
- package/build/es/index.typings.mjs.map +1 -0
- package/build/es/meta.d.mts +527 -0
- package/build/es/meta.mjs +272 -0
- package/build/es/meta.mjs.map +1 -0
- package/build/es/package.json +3 -0
- package/build/internal/cjs/index.d.ts +101 -0
- package/build/internal/cjs/index.typings.d.ts +684 -0
- package/build/internal/cjs/meta.d.ts +539 -0
- package/build/internal/es/index.d.mts +101 -0
- package/build/internal/es/index.typings.d.mts +684 -0
- package/build/internal/es/meta.d.mts +539 -0
- package/meta/package.json +3 -0
- package/package.json +54 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { HttpClient, NonNullablePaths, MaybeContext, BuildRESTFunction } from '@wix/sdk-types';
|
|
2
|
+
import { ListKeywordResearchItemsOptions, ListKeywordResearchItemsResponse, UpdateKeywordResearchItemOptions, UpdateKeywordResearchItemResponse, BulkUpdateKeywordResearchItemsOptions, BulkUpdateKeywordResearchItemsResponse } from './index.typings.js';
|
|
3
|
+
export { AddedKeywordResearch, ApplicationError, BulkActionMetadata, BulkKeywordResearchItemResult, BulkUpdateKeywordResearchItemsRequest, CursorPaging, CursorPagingMetadata, Cursors, DeletedKeywordResearch, DistributeKeywordsToPagesRequest, DistributeKeywordsToPagesResponse, DistributedKeyword, GetDraftKeywordResearchItemsRequest, GetDraftKeywordResearchItemsResponse, GetKeywordResearchItemsByPageIdRequest, GetKeywordResearchItemsByPageIdResponse, GetKeywordResearchItemsRequest, GetKeywordResearchItemsResponse, ItemMetadata, KeywordResearch, ListKeywordResearchItemsRequest, PageEssenceInput, RevertKeywordResearchRequest, RevertKeywordResearchResponse, UpdateKeywordResearchItemRequest, UpdateKeywordResearchItemsRequest, UpdateKeywordResearchItemsResponse, UpdatedKeywordResearch } from './index.typings.js';
|
|
4
|
+
|
|
5
|
+
declare function listKeywordResearchItems$1(httpClient: HttpClient): ListKeywordResearchItemsSignature;
|
|
6
|
+
interface ListKeywordResearchItemsSignature {
|
|
7
|
+
/**
|
|
8
|
+
* Retrieves the keyword research behind the site's current content plan.
|
|
9
|
+
*
|
|
10
|
+
* Returns the research produced by the last completed generation. Research
|
|
11
|
+
* from a generation that's still running, or that failed, isn't readable.
|
|
12
|
+
* Poll Get Content Plan Flow until its status is `SUCCESS`, then call this
|
|
13
|
+
* method.
|
|
14
|
+
*
|
|
15
|
+
* The result is scoped to the site rather than to a flow. This method
|
|
16
|
+
* always returns the site's most recent research and can't target an
|
|
17
|
+
* earlier one. If another generation finishes between your trigger and this
|
|
18
|
+
* read, you receive the newer research instead. Compare `keywordResearchId`
|
|
19
|
+
* across reads to detect that the research was replaced.
|
|
20
|
+
*
|
|
21
|
+
* Omit `paging` to return every item in a single response. When `paging` is
|
|
22
|
+
* present, `limit` accepts 1 to 100 and defaults to 50.
|
|
23
|
+
*
|
|
24
|
+
* A site with no keyword research returns a not found error rather than an
|
|
25
|
+
* empty list.
|
|
26
|
+
*/
|
|
27
|
+
(options?: ListKeywordResearchItemsOptions): Promise<NonNullablePaths<ListKeywordResearchItemsResponse, `keywordResearchItems`, 2>>;
|
|
28
|
+
}
|
|
29
|
+
declare function updateKeywordResearchItem$1(httpClient: HttpClient): UpdateKeywordResearchItemSignature;
|
|
30
|
+
interface UpdateKeywordResearchItemSignature {
|
|
31
|
+
/**
|
|
32
|
+
* Updates a keyword research item.
|
|
33
|
+
*
|
|
34
|
+
* `fieldMask` is required and must name at least one of `keyword` or
|
|
35
|
+
* `mainKeyword`. Those are the only writable fields, and an omitted or
|
|
36
|
+
* empty mask is rejected rather than treated as a request to write
|
|
37
|
+
* everything.
|
|
38
|
+
*
|
|
39
|
+
* `mainKeyword` only promotes. Set it to `true` to make the item its page's
|
|
40
|
+
* main keyword. Setting it to `false`, or leaving it out, changes nothing,
|
|
41
|
+
* so a main keyword can't be demoted with this method.
|
|
42
|
+
*
|
|
43
|
+
* This method updates an item that already exists. It can't add or delete a
|
|
44
|
+
* keyword.
|
|
45
|
+
*
|
|
46
|
+
* The first write to AI-generated research copies that research instead of
|
|
47
|
+
* changing it, so the response can carry a different `keywordResearchId`.
|
|
48
|
+
* Always send the ID from the most recent response on your next write.
|
|
49
|
+
* Sending the original ID again copies the research again.
|
|
50
|
+
*
|
|
51
|
+
* Changing `keyword` also refreshes that item's `searchVolume` and
|
|
52
|
+
* `competition`, even though the mask doesn't name them.
|
|
53
|
+
*
|
|
54
|
+
* Edits don't survive a later generation. A generation that completes after
|
|
55
|
+
* your edit produces fresh research that replaces the edited copy in every
|
|
56
|
+
* read.
|
|
57
|
+
*
|
|
58
|
+
* To update multiple keyword research items in a single API call, call
|
|
59
|
+
* [Bulk Update Keyword Research Items](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-keyword-research-v1/bulk-update-keyword-research-items).
|
|
60
|
+
* @param - ID of the keyword research item to update.
|
|
61
|
+
* @param - ID of the keyword research the item belongs to.
|
|
62
|
+
*
|
|
63
|
+
* Use the `keywordResearchId` from your most recent read or write.
|
|
64
|
+
*/
|
|
65
|
+
(_id: string, keywordResearchId: string, options: NonNullablePaths<UpdateKeywordResearchItemOptions, `fieldMask` | `item`, 2>): Promise<UpdateKeywordResearchItemResponse>;
|
|
66
|
+
}
|
|
67
|
+
declare function bulkUpdateKeywordResearchItems$1(httpClient: HttpClient): BulkUpdateKeywordResearchItemsSignature;
|
|
68
|
+
interface BulkUpdateKeywordResearchItemsSignature {
|
|
69
|
+
/**
|
|
70
|
+
* Updates multiple keyword research items.
|
|
71
|
+
*
|
|
72
|
+
* This method has no field mask and writes every field present on each
|
|
73
|
+
* entry. `keyword` and `mainKeyword` remain the only writable fields, and
|
|
74
|
+
* `mainKeyword` only promotes, as it does for a single item. Repeating an
|
|
75
|
+
* item ID within one call is rejected.
|
|
76
|
+
*
|
|
77
|
+
* Validation runs across the whole request before anything is written, so a
|
|
78
|
+
* problem rejects the entire call rather than failing one entry. Every
|
|
79
|
+
* returned entry therefore reports success.
|
|
80
|
+
*
|
|
81
|
+
* A keyword research holds at most 30 keywords, counted after the update.
|
|
82
|
+
* That limit is reached well before the request's own item limit.
|
|
83
|
+
*
|
|
84
|
+
* This method copies AI-generated research the same way a single-item
|
|
85
|
+
* update does, so send the `keywordResearchId` from the response on your
|
|
86
|
+
* next write. Edits don't survive a later generation.
|
|
87
|
+
*
|
|
88
|
+
* To update a single keyword research item, call
|
|
89
|
+
* [Update Keyword Research Item](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-keyword-research-v1/update-keyword-research-item).
|
|
90
|
+
* @param - ID of the keyword research the items belong to.
|
|
91
|
+
*
|
|
92
|
+
* Use the `keywordResearchId` from your most recent read or write.
|
|
93
|
+
*/
|
|
94
|
+
(keywordResearchId: string, options?: BulkUpdateKeywordResearchItemsOptions): Promise<NonNullablePaths<BulkUpdateKeywordResearchItemsResponse, `results` | `results.${number}.itemMetadata.originalIndex` | `results.${number}.itemMetadata.success` | `results.${number}.itemMetadata.error.code` | `results.${number}.itemMetadata.error.description` | `bulkActionMetadata.totalSuccesses` | `bulkActionMetadata.totalFailures` | `bulkActionMetadata.undetailedFailures` | `keywordResearchItems`, 6>>;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
declare const listKeywordResearchItems: MaybeContext<BuildRESTFunction<typeof listKeywordResearchItems$1> & typeof listKeywordResearchItems$1>;
|
|
98
|
+
declare const updateKeywordResearchItem: MaybeContext<BuildRESTFunction<typeof updateKeywordResearchItem$1> & typeof updateKeywordResearchItem$1>;
|
|
99
|
+
declare const bulkUpdateKeywordResearchItems: MaybeContext<BuildRESTFunction<typeof bulkUpdateKeywordResearchItems$1> & typeof bulkUpdateKeywordResearchItems$1>;
|
|
100
|
+
|
|
101
|
+
export { BulkUpdateKeywordResearchItemsOptions, BulkUpdateKeywordResearchItemsResponse, ListKeywordResearchItemsOptions, ListKeywordResearchItemsResponse, UpdateKeywordResearchItemOptions, UpdateKeywordResearchItemResponse, bulkUpdateKeywordResearchItems, listKeywordResearchItems, updateKeywordResearchItem };
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
bulkUpdateKeywordResearchItems: () => bulkUpdateKeywordResearchItems4,
|
|
24
|
+
listKeywordResearchItems: () => listKeywordResearchItems4,
|
|
25
|
+
updateKeywordResearchItem: () => updateKeywordResearchItem4
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(index_exports);
|
|
28
|
+
|
|
29
|
+
// src/promote-seo-v1-content-plan-keyword-research-keyword-research.universal.ts
|
|
30
|
+
var import_transform_error = require("@wix/sdk-runtime/transform-error");
|
|
31
|
+
var import_rename_all_nested_keys = require("@wix/sdk-runtime/rename-all-nested-keys");
|
|
32
|
+
|
|
33
|
+
// src/promote-seo-v1-content-plan-keyword-research-keyword-research.http.ts
|
|
34
|
+
var import_rest_modules = require("@wix/sdk-runtime/rest-modules");
|
|
35
|
+
var import_field_mask = require("@wix/sdk-runtime/transformations/field-mask");
|
|
36
|
+
var import_transform_paths = require("@wix/sdk-runtime/transformations/transform-paths");
|
|
37
|
+
var import_rest_modules2 = require("@wix/sdk-runtime/rest-modules");
|
|
38
|
+
function resolveWixPromoteSeoContentPlanV1KeywordResearchServiceV1Url(opts) {
|
|
39
|
+
const domainToMappings = {
|
|
40
|
+
"bo._base_domain_": [
|
|
41
|
+
{
|
|
42
|
+
srcPath: "/_serverless/seo-content-plan-service",
|
|
43
|
+
destPath: ""
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"wixbo.ai": [
|
|
47
|
+
{
|
|
48
|
+
srcPath: "/_serverless/seo-content-plan-service",
|
|
49
|
+
destPath: ""
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"wix-bo.com": [
|
|
53
|
+
{
|
|
54
|
+
srcPath: "/_serverless/seo-content-plan-service",
|
|
55
|
+
destPath: ""
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"api._api_base_domain_": [
|
|
59
|
+
{
|
|
60
|
+
srcPath: "/seo-content-plan-service",
|
|
61
|
+
destPath: ""
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"manage._base_domain_": [
|
|
65
|
+
{
|
|
66
|
+
srcPath: "/_api/seo-content-plan-service",
|
|
67
|
+
destPath: ""
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"editor._base_domain_": [
|
|
71
|
+
{
|
|
72
|
+
srcPath: "/_api/seo-content-plan-service",
|
|
73
|
+
destPath: ""
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"blocks._base_domain_": [
|
|
77
|
+
{
|
|
78
|
+
srcPath: "/_api/seo-content-plan-service",
|
|
79
|
+
destPath: ""
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"create.editorx": [
|
|
83
|
+
{
|
|
84
|
+
srcPath: "/_api/seo-content-plan-service",
|
|
85
|
+
destPath: ""
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"www.wixapis.com": [
|
|
89
|
+
{
|
|
90
|
+
srcPath: "/seo-content-plan-service",
|
|
91
|
+
destPath: ""
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
srcPath: "/promote/seo/v1/content-plan-flows",
|
|
95
|
+
destPath: "/v1/content-plan-flows"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
srcPath: "/promote/seo/v1/content-plan-flow",
|
|
99
|
+
destPath: "/v1/content-plan-flow"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
srcPath: "/promote/seo/v1/content-plan-keyword-research-items",
|
|
103
|
+
destPath: "/v1/content-plan-keyword-research-items"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
srcPath: "/promote/seo/v1/keyword-research-items",
|
|
107
|
+
destPath: "/v1/keyword-research-items"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
srcPath: "/promote/seo/v1/bulk/keyword-research-items",
|
|
111
|
+
destPath: "/v1/bulk/keyword-research-items"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
srcPath: "/promote/seo/v1/create-content-plan",
|
|
115
|
+
destPath: "/v1/create-content-plan"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
srcPath: "/promote/seo/v1/trigger-content-plan-generation-flow",
|
|
119
|
+
destPath: "/v1/trigger-content-plan-generation-flow"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
srcPath: "/promote/seo/v1/cancel-content-plan-flow",
|
|
123
|
+
destPath: "/v1/cancel-content-plan-flow"
|
|
124
|
+
}
|
|
125
|
+
],
|
|
126
|
+
_: [
|
|
127
|
+
{
|
|
128
|
+
srcPath: "/seo-content-plan-service",
|
|
129
|
+
destPath: ""
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
srcPath: "/promote/seo/v1/content-plan-flows",
|
|
133
|
+
destPath: "/v1/content-plan-flows"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
srcPath: "/promote/seo/v1/content-plan-flow",
|
|
137
|
+
destPath: "/v1/content-plan-flow"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
srcPath: "/promote/seo/v1/content-plan-keyword-research-items",
|
|
141
|
+
destPath: "/v1/content-plan-keyword-research-items"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
srcPath: "/promote/seo/v1/keyword-research-items",
|
|
145
|
+
destPath: "/v1/keyword-research-items"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
srcPath: "/promote/seo/v1/bulk/keyword-research-items",
|
|
149
|
+
destPath: "/v1/bulk/keyword-research-items"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
srcPath: "/promote/seo/v1/create-content-plan",
|
|
153
|
+
destPath: "/v1/create-content-plan"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
srcPath: "/promote/seo/v1/trigger-content-plan-generation-flow",
|
|
157
|
+
destPath: "/v1/trigger-content-plan-generation-flow"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
srcPath: "/promote/seo/v1/cancel-content-plan-flow",
|
|
161
|
+
destPath: "/v1/cancel-content-plan-flow"
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
};
|
|
165
|
+
return (0, import_rest_modules2.resolveUrl)(Object.assign(opts, { domainToMappings }));
|
|
166
|
+
}
|
|
167
|
+
var PACKAGE_NAME = "@wix/auto_sdk_seo_keyword-research";
|
|
168
|
+
function listKeywordResearchItems(payload) {
|
|
169
|
+
function __listKeywordResearchItems({ host }) {
|
|
170
|
+
const metadata = {
|
|
171
|
+
entityFqdn: "wix.promote.seo.v1.content_plan_keyword_research",
|
|
172
|
+
method: "GET",
|
|
173
|
+
methodFqn: "wix.promote.seo.content.plan.v1.KeywordResearchServiceV1.ListKeywordResearchItems",
|
|
174
|
+
packageName: PACKAGE_NAME,
|
|
175
|
+
migrationOptions: {
|
|
176
|
+
optInTransformResponse: true
|
|
177
|
+
},
|
|
178
|
+
url: resolveWixPromoteSeoContentPlanV1KeywordResearchServiceV1Url({
|
|
179
|
+
protoPath: "/v1/content-plan-keyword-research-items",
|
|
180
|
+
data: payload,
|
|
181
|
+
host
|
|
182
|
+
}),
|
|
183
|
+
params: (0, import_rest_modules.toURLSearchParams)(payload)
|
|
184
|
+
};
|
|
185
|
+
return metadata;
|
|
186
|
+
}
|
|
187
|
+
return __listKeywordResearchItems;
|
|
188
|
+
}
|
|
189
|
+
function updateKeywordResearchItem(payload) {
|
|
190
|
+
function __updateKeywordResearchItem({ host }) {
|
|
191
|
+
const serializedData = (0, import_transform_paths.transformPaths)(payload, [
|
|
192
|
+
{
|
|
193
|
+
transformFn: import_field_mask.transformSDKFieldMaskToRESTFieldMask,
|
|
194
|
+
paths: [{ path: "fieldMask" }]
|
|
195
|
+
}
|
|
196
|
+
]);
|
|
197
|
+
const metadata = {
|
|
198
|
+
entityFqdn: "wix.promote.seo.v1.content_plan_keyword_research",
|
|
199
|
+
method: "PATCH",
|
|
200
|
+
methodFqn: "wix.promote.seo.content.plan.v1.KeywordResearchServiceV1.UpdateKeywordResearchItem",
|
|
201
|
+
packageName: PACKAGE_NAME,
|
|
202
|
+
migrationOptions: {
|
|
203
|
+
optInTransformResponse: true
|
|
204
|
+
},
|
|
205
|
+
url: resolveWixPromoteSeoContentPlanV1KeywordResearchServiceV1Url({
|
|
206
|
+
protoPath: "/v1/keyword-research-items/{item.id}",
|
|
207
|
+
data: serializedData,
|
|
208
|
+
host
|
|
209
|
+
}),
|
|
210
|
+
data: serializedData
|
|
211
|
+
};
|
|
212
|
+
return metadata;
|
|
213
|
+
}
|
|
214
|
+
return __updateKeywordResearchItem;
|
|
215
|
+
}
|
|
216
|
+
function bulkUpdateKeywordResearchItems(payload) {
|
|
217
|
+
function __bulkUpdateKeywordResearchItems({ host }) {
|
|
218
|
+
const metadata = {
|
|
219
|
+
entityFqdn: "wix.promote.seo.v1.content_plan_keyword_research",
|
|
220
|
+
method: "POST",
|
|
221
|
+
methodFqn: "wix.promote.seo.content.plan.v1.KeywordResearchServiceV1.BulkUpdateKeywordResearchItems",
|
|
222
|
+
packageName: PACKAGE_NAME,
|
|
223
|
+
migrationOptions: {
|
|
224
|
+
optInTransformResponse: true
|
|
225
|
+
},
|
|
226
|
+
url: resolveWixPromoteSeoContentPlanV1KeywordResearchServiceV1Url({
|
|
227
|
+
protoPath: "/v1/bulk/keyword-research-items/update",
|
|
228
|
+
data: payload,
|
|
229
|
+
host
|
|
230
|
+
}),
|
|
231
|
+
data: payload
|
|
232
|
+
};
|
|
233
|
+
return metadata;
|
|
234
|
+
}
|
|
235
|
+
return __bulkUpdateKeywordResearchItems;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// src/promote-seo-v1-content-plan-keyword-research-keyword-research.universal.ts
|
|
239
|
+
async function listKeywordResearchItems2(options) {
|
|
240
|
+
const { httpClient, sideEffects } = arguments[1];
|
|
241
|
+
const payload = (0, import_rename_all_nested_keys.renameKeysFromSDKRequestToRESTRequest)({
|
|
242
|
+
contentPlanFlowId: options?.contentPlanFlowId,
|
|
243
|
+
paging: options?.paging
|
|
244
|
+
});
|
|
245
|
+
const reqOpts = listKeywordResearchItems(
|
|
246
|
+
payload
|
|
247
|
+
);
|
|
248
|
+
sideEffects?.onSiteCall?.();
|
|
249
|
+
try {
|
|
250
|
+
const result = await httpClient.request(reqOpts);
|
|
251
|
+
sideEffects?.onSuccess?.(result);
|
|
252
|
+
return (0, import_rename_all_nested_keys.renameKeysFromRESTResponseToSDKResponse)(result.data);
|
|
253
|
+
} catch (err) {
|
|
254
|
+
const transformedError = (0, import_transform_error.transformError)(
|
|
255
|
+
err,
|
|
256
|
+
{
|
|
257
|
+
spreadPathsToArguments: {},
|
|
258
|
+
explicitPathsToArguments: {
|
|
259
|
+
contentPlanFlowId: "$[0].contentPlanFlowId",
|
|
260
|
+
paging: "$[0].paging"
|
|
261
|
+
},
|
|
262
|
+
singleArgumentUnchanged: false
|
|
263
|
+
},
|
|
264
|
+
["options"]
|
|
265
|
+
);
|
|
266
|
+
sideEffects?.onError?.(err);
|
|
267
|
+
throw transformedError;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
async function updateKeywordResearchItem2(_id, keywordResearchId, options) {
|
|
271
|
+
const { httpClient, sideEffects } = arguments[3];
|
|
272
|
+
const payload = (0, import_rename_all_nested_keys.renameKeysFromSDKRequestToRESTRequest)({
|
|
273
|
+
item: { ...options?.item, id: _id },
|
|
274
|
+
keywordResearchId,
|
|
275
|
+
fieldMask: options?.fieldMask
|
|
276
|
+
});
|
|
277
|
+
const reqOpts = updateKeywordResearchItem(
|
|
278
|
+
payload
|
|
279
|
+
);
|
|
280
|
+
sideEffects?.onSiteCall?.();
|
|
281
|
+
try {
|
|
282
|
+
const result = await httpClient.request(reqOpts);
|
|
283
|
+
sideEffects?.onSuccess?.(result);
|
|
284
|
+
return (0, import_rename_all_nested_keys.renameKeysFromRESTResponseToSDKResponse)(result.data);
|
|
285
|
+
} catch (err) {
|
|
286
|
+
const transformedError = (0, import_transform_error.transformError)(
|
|
287
|
+
err,
|
|
288
|
+
{
|
|
289
|
+
spreadPathsToArguments: { item: "$[2].item" },
|
|
290
|
+
explicitPathsToArguments: {
|
|
291
|
+
"item.id": "$[0]",
|
|
292
|
+
keywordResearchId: "$[1]",
|
|
293
|
+
fieldMask: "$[2].fieldMask"
|
|
294
|
+
},
|
|
295
|
+
singleArgumentUnchanged: false
|
|
296
|
+
},
|
|
297
|
+
["_id", "keywordResearchId", "options"]
|
|
298
|
+
);
|
|
299
|
+
sideEffects?.onError?.(err);
|
|
300
|
+
throw transformedError;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
async function bulkUpdateKeywordResearchItems2(keywordResearchId, options) {
|
|
304
|
+
const { httpClient, sideEffects } = arguments[2];
|
|
305
|
+
const payload = (0, import_rename_all_nested_keys.renameKeysFromSDKRequestToRESTRequest)({
|
|
306
|
+
keywordResearchId,
|
|
307
|
+
items: options?.items
|
|
308
|
+
});
|
|
309
|
+
const reqOpts = bulkUpdateKeywordResearchItems(
|
|
310
|
+
payload
|
|
311
|
+
);
|
|
312
|
+
sideEffects?.onSiteCall?.();
|
|
313
|
+
try {
|
|
314
|
+
const result = await httpClient.request(reqOpts);
|
|
315
|
+
sideEffects?.onSuccess?.(result);
|
|
316
|
+
return (0, import_rename_all_nested_keys.renameKeysFromRESTResponseToSDKResponse)(result.data);
|
|
317
|
+
} catch (err) {
|
|
318
|
+
const transformedError = (0, import_transform_error.transformError)(
|
|
319
|
+
err,
|
|
320
|
+
{
|
|
321
|
+
spreadPathsToArguments: {},
|
|
322
|
+
explicitPathsToArguments: {
|
|
323
|
+
keywordResearchId: "$[0]",
|
|
324
|
+
items: "$[1].items"
|
|
325
|
+
},
|
|
326
|
+
singleArgumentUnchanged: false
|
|
327
|
+
},
|
|
328
|
+
["keywordResearchId", "options"]
|
|
329
|
+
);
|
|
330
|
+
sideEffects?.onError?.(err);
|
|
331
|
+
throw transformedError;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// src/promote-seo-v1-content-plan-keyword-research-keyword-research.public.ts
|
|
336
|
+
function listKeywordResearchItems3(httpClient) {
|
|
337
|
+
return (options) => listKeywordResearchItems2(
|
|
338
|
+
options,
|
|
339
|
+
// @ts-ignore
|
|
340
|
+
{ httpClient }
|
|
341
|
+
);
|
|
342
|
+
}
|
|
343
|
+
function updateKeywordResearchItem3(httpClient) {
|
|
344
|
+
return (_id, keywordResearchId, options) => updateKeywordResearchItem2(
|
|
345
|
+
_id,
|
|
346
|
+
keywordResearchId,
|
|
347
|
+
options,
|
|
348
|
+
// @ts-ignore
|
|
349
|
+
{ httpClient }
|
|
350
|
+
);
|
|
351
|
+
}
|
|
352
|
+
function bulkUpdateKeywordResearchItems3(httpClient) {
|
|
353
|
+
return (keywordResearchId, options) => bulkUpdateKeywordResearchItems2(
|
|
354
|
+
keywordResearchId,
|
|
355
|
+
options,
|
|
356
|
+
// @ts-ignore
|
|
357
|
+
{ httpClient }
|
|
358
|
+
);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
// src/promote-seo-v1-content-plan-keyword-research-keyword-research.context.ts
|
|
362
|
+
var import_rest_modules3 = require("@wix/sdk-runtime/rest-modules");
|
|
363
|
+
var listKeywordResearchItems4 = /* @__PURE__ */ (0, import_rest_modules3.createRESTModule)(listKeywordResearchItems3);
|
|
364
|
+
var updateKeywordResearchItem4 = /* @__PURE__ */ (0, import_rest_modules3.createRESTModule)(updateKeywordResearchItem3);
|
|
365
|
+
var bulkUpdateKeywordResearchItems4 = /* @__PURE__ */ (0, import_rest_modules3.createRESTModule)(bulkUpdateKeywordResearchItems3);
|
|
366
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
367
|
+
0 && (module.exports = {
|
|
368
|
+
bulkUpdateKeywordResearchItems,
|
|
369
|
+
listKeywordResearchItems,
|
|
370
|
+
updateKeywordResearchItem
|
|
371
|
+
});
|
|
372
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../index.ts","../../src/promote-seo-v1-content-plan-keyword-research-keyword-research.universal.ts","../../src/promote-seo-v1-content-plan-keyword-research-keyword-research.http.ts","../../src/promote-seo-v1-content-plan-keyword-research-keyword-research.public.ts","../../src/promote-seo-v1-content-plan-keyword-research-keyword-research.context.ts"],"sourcesContent":["export * from './src/promote-seo-v1-content-plan-keyword-research-keyword-research.context.js';\n","import { transformError as sdkTransformError } from '@wix/sdk-runtime/transform-error';\nimport {\n renameKeysFromSDKRequestToRESTRequest,\n renameKeysFromRESTResponseToSDKResponse,\n} from '@wix/sdk-runtime/rename-all-nested-keys';\nimport { HttpClient, NonNullablePaths } from '@wix/sdk-types';\nimport * as ambassadorWixPromoteSeoV1ContentPlanKeywordResearch from './promote-seo-v1-content-plan-keyword-research-keyword-research.http.js';\n\n/**\n * A keyword research item is one target keyword in a site's content plan,\n * together with the search data behind it and the page it belongs to.\n *\n * The content plan pipeline generates a set of these for a site. A site owner\n * can then refine them, and the blog post briefs are built from the result.\n *\n * Items are grouped into clusters. Each site page has one main keyword, marked\n * by `primary`, and the other keywords in that cluster support it.\n */\nexport interface KeywordResearch {\n /**\n * Keyword research item ID.\n * @format GUID\n * @readonly\n */\n _id?: string | null;\n /**\n * The keyword itself.\n *\n * An update is rejected if the new keyword is longer than 80 characters, or\n * if it duplicates another keyword in the same research.\n * @maxLength 1000\n */\n keyword?: string | null;\n /**\n * ID of the site page the keyword is assigned to.\n * @maxLength 1000\n */\n pageId?: string | null;\n /**\n * Type of the site page the keyword is assigned to, such as a static\n * page or a blog post.\n * @maxLength 1000\n */\n itemType?: string | null;\n /**\n * URL of the site page the keyword is assigned to.\n * @maxLength 1000\n */\n pageUrl?: string | null;\n /**\n * How hard it is to rank for the keyword, on a scale where a higher\n * number means more competition.\n *\n * Recalculated when `keyword` changes, even if you don't name this field\n * in the field mask.\n */\n competition?: number | null;\n /**\n * Estimated number of searches for the keyword per month.\n *\n * Recalculated when `keyword` changes, even if you don't name this field\n * in the field mask.\n */\n searchVolume?: number | null;\n /**\n * Whether the site page this keyword is assigned to has been deleted.\n *\n * A keyword assigned to a deleted page stays in the research.\n */\n pageDeleted?: boolean | null;\n /**\n * Name of the page the keyword relates to. No reader populates it today.\n * No removal owner is assigned yet. See\n * docs/api-exposure/content-plan-exposure-brief.md.\n * @internal\n * @maxLength 1000\n * @deprecated Name of the page the keyword relates to. No reader populates it today.\n * No removal owner is assigned yet. See\n * docs/api-exposure/content-plan-exposure-brief.md.\n * @targetRemovalDate 2026-01-31\n */\n pageName?: string | null;\n /**\n * Whether this keyword is the main keyword for its page.\n *\n * A page has a single main keyword, and the other keywords in its cluster\n * support it.\n */\n primary?: boolean | null;\n /**\n * Name of the cluster that groups this keyword with the others covering\n * the same topic.\n * @maxLength 1000\n */\n clusterName?: string | null;\n}\n\nexport interface GetKeywordResearchItemsByPageIdRequest {\n /**\n * ID of the page to retrieve keywords for. Required.\n * @maxLength 1000\n */\n pageId?: string;\n /**\n * Type of the page. Required. Must match a stored item type.\n * Unmatched value returns NOT_FOUND unless a main keyword was already set.\n * @maxLength 1000\n */\n itemType?: string;\n /**\n * Optional. The handler currently resolves the site's latest keyword\n * research and does not read this field. Kept for future use: when the\n * handler is updated to support per-flow lookups, callers will be able to\n * target a specific flow's research instead of always getting the latest.\n * @format GUID\n */\n contentPlanFlowId?: string | null;\n}\n\nexport interface GetKeywordResearchItemsByPageIdResponse {\n /**\n * keywords related to the page\n * @maxSize 1000\n */\n keywordResearchItems?: KeywordResearch[];\n /**\n * id of the main keyword for this page\n * @format GUID\n */\n mainKeywordId?: string | null;\n}\n\nexport interface ListKeywordResearchItemsRequest {\n /**\n * Reserved for future use.\n *\n * This method currently resolves the site's most recent keyword research,\n * and this field is ignored.\n * @format GUID\n */\n contentPlanFlowId?: string | null;\n /**\n * Cursor paging. Omit for the first page.\n *\n * Omit this object entirely to return every item in a single response.\n */\n paging?: CursorPaging;\n}\n\nexport interface CursorPaging {\n /**\n * Max items per page. Default 50, max 100.\n * @max 100\n */\n limit?: number | null;\n /**\n * Cursor from a previous response. Omit for the first page.\n * @maxLength 16000\n */\n cursor?: string | null;\n}\n\nexport interface ListKeywordResearchItemsResponse {\n /**\n * Retrieved keyword research items.\n * @maxSize 1000\n */\n keywordResearchItems?: KeywordResearch[];\n /**\n * ID of the keyword research these items belong to.\n *\n * Send this ID when you update an item. Compare it across reads to detect\n * that a newer generation replaced the research.\n * @format GUID\n */\n keywordResearchId?: string | null;\n /**\n * Whether this research has been edited.\n *\n * `false` means the research is exactly as the content plan generated it,\n * so the next edit copies it onto a new `keywordResearchId`.\n */\n createdByUser?: boolean | null;\n /**\n * ID of the main keyword for each page, keyed by page ID.\n *\n * Built from the site's full item set, so on a paged response it can name\n * items that aren't in `keywordResearchItems`.\n */\n mainKeywordMap?: Record<string, string>;\n /** Paging metadata. */\n pagingMetadata?: CursorPagingMetadata;\n}\n\nexport interface CursorPagingMetadata {\n /** Items returned in this page. */\n count?: number | null;\n /** Cursors for next/previous page. */\n cursors?: Cursors;\n /** Whether there are more pages. */\n hasNext?: boolean | null;\n}\n\nexport interface Cursors {\n /**\n * Cursor for the next page.\n * @maxLength 16000\n */\n next?: string | null;\n /**\n * Cursor for the previous page.\n * @maxLength 16000\n */\n prev?: string | null;\n}\n\n/** Deprecated alias request. Same fields as ListKeywordResearchItemsRequest. */\nexport interface GetKeywordResearchItemsRequest {\n /**\n * Deprecated. Ignored by the handler.\n * @format GUID\n */\n contentPlanFlowId?: string | null;\n /** Cursor paging. */\n paging?: CursorPaging;\n}\n\n/** Deprecated alias response. Same fields as ListKeywordResearchItemsResponse. */\nexport interface GetKeywordResearchItemsResponse {\n /**\n * Keyword research items.\n * @maxSize 1000\n */\n keywordResearchItems?: KeywordResearch[];\n /**\n * ID of the keyword research.\n * @format GUID\n */\n keywordResearchId?: string | null;\n /** Whether the research was user-created. */\n createdByUser?: boolean | null;\n /** Main keyword IDs by page ID. */\n mainKeywordMap?: Record<string, string>;\n /** Paging metadata. */\n pagingMetadata?: CursorPagingMetadata;\n}\n\nexport interface GetDraftKeywordResearchItemsRequest {\n /**\n * id of the content plan flow this keyword research belongs to\n * @format GUID\n */\n contentPlanFlowId?: string | null;\n}\n\nexport interface GetDraftKeywordResearchItemsResponse {\n /**\n * keyword research items\n * @maxSize 1000\n */\n keywordResearchItems?: KeywordResearch[];\n /**\n * id of the keyword research that was returned\n * @format GUID\n */\n keywordResearchId?: string | null;\n /** whether the keyword research was created by the user */\n createdByUser?: boolean | null;\n /** map of ids of the main keywords by page id */\n mainKeywordMap?: Record<string, string>;\n}\n\nexport interface UpdateKeywordResearchItemsRequest {\n /**\n * updated keyword research items\n * @maxSize 1000\n */\n updatedItems?: UpdatedKeywordResearch[];\n /**\n * deleted keyword research items\n * @maxSize 1000\n */\n deletedItems?: DeletedKeywordResearch[];\n /**\n * added keyword research items\n * @maxSize 1000\n */\n addedItems?: AddedKeywordResearch[];\n /**\n * id of the keyword research to be updated\n * @format GUID\n */\n keywordResearchId?: string | null;\n}\n\nexport interface UpdatedKeywordResearch {\n /**\n * ID of the keyword research item to update.\n * @format GUID\n */\n _id?: string | null;\n /**\n * New keyword.\n *\n * Rejected if it's longer than 80 characters, or if it duplicates another\n * keyword in the same research. Changing it also refreshes the item's\n * `searchVolume` and `competition`.\n * @maxLength 1000\n */\n keyword?: string | null;\n /**\n * Whether to make this item its page's main keyword.\n *\n * Set to `true` to promote it. `false` and omitting the field both leave\n * the current main keyword unchanged, so this field can't demote one.\n */\n mainKeyword?: boolean | null;\n}\n\nexport interface DeletedKeywordResearch {\n /**\n * ID of the keyword research item to delete.\n * @format GUID\n */\n _id?: string | null;\n}\n\nexport interface AddedKeywordResearch {\n /**\n * keyword of the keyword research item\n * @maxLength 1000\n */\n keyword?: string | null;\n /**\n * page id the keyword relates to\n * @maxLength 1000\n */\n pageId?: string | null;\n /** is the keyword the main keyword for it's page */\n mainKeyword?: boolean | null;\n}\n\nexport interface UpdateKeywordResearchItemsResponse {\n /**\n * keyword research items\n * @maxSize 1000\n */\n keywordResearchItems?: KeywordResearch[];\n /**\n * id of the keyword research that was returned\n * @format GUID\n */\n keywordResearchId?: string | null;\n /** whether the keyword research was created by the user */\n createdByUser?: boolean | null;\n /** map of ids of the main keywords by page id */\n mainKeywordMap?: Record<string, string>;\n}\n\nexport interface UpdateKeywordResearchItemRequest {\n /**\n * ID of the keyword research the item belongs to.\n *\n * Use the `keywordResearchId` from your most recent read or write.\n * @format GUID\n */\n keywordResearchId: string | null;\n /** Keyword research item to update. */\n item: UpdatedKeywordResearch;\n /**\n * Fields to update.\n *\n * Must name at least one of `keyword` or `mainKeyword`, the only writable\n * fields. An omitted or empty mask is rejected.\n */\n fieldMask: string[];\n}\n\nexport interface UpdateKeywordResearchItemResponse {\n /** Updated keyword research item. */\n keywordResearchItem?: KeywordResearch;\n /**\n * ID of the keyword research holding the updated item.\n *\n * This can differ from the ID you sent, because the first edit to\n * generated research copies it. Use this value for your next write.\n * @format GUID\n */\n keywordResearchId?: string | null;\n}\n\nexport interface BulkUpdateKeywordResearchItemsRequest {\n /**\n * ID of the keyword research the items belong to.\n *\n * Use the `keywordResearchId` from your most recent read or write.\n * @format GUID\n */\n keywordResearchId: string | null;\n /**\n * Keyword research items to update.\n *\n * Each item ID must appear at most once. The research holds at most 30\n * keywords once the update is applied.\n * @minSize 1\n * @maxSize 1000\n */\n items?: UpdatedKeywordResearch[];\n}\n\nexport interface BulkUpdateKeywordResearchItemsResponse {\n /**\n * Result for each entry, correlated by `itemMetadata.originalIndex`.\n * @maxSize 1000\n */\n results?: BulkKeywordResearchItemResult[];\n /** How many entries succeeded and how many failed. */\n bulkActionMetadata?: BulkActionMetadata;\n /**\n * The full set of keyword research items after the update.\n * @maxSize 1000\n */\n keywordResearchItems?: KeywordResearch[];\n /**\n * ID of the keyword research holding the updated items.\n *\n * This can differ from the ID you sent, because the first edit to\n * generated research copies it. Use this value for your next write.\n * @format GUID\n */\n keywordResearchId?: string | null;\n /** ID of the main keyword for each page, keyed by page ID. */\n mainKeywordMap?: Record<string, string>;\n}\n\nexport interface ItemMetadata {\n /**\n * Item ID. Should always be available, unless it's impossible (for example, when failing to create an item).\n * @maxLength 100\n */\n _id?: string | null;\n /** Index of the item within the request array. Allows for correlation between request and response items. */\n originalIndex?: number;\n /** Whether the requested action was successful for this item. When `false`, the `error` field is populated. */\n success?: boolean;\n /** Details about the error in case of failure. */\n error?: ApplicationError;\n}\n\nexport interface ApplicationError {\n /** Error code. */\n code?: string;\n /** Description of the error. */\n description?: string;\n /** Data related to the error. */\n data?: Record<string, any> | null;\n}\n\nexport interface BulkKeywordResearchItemResult {\n /** Success/failure and error detail for this entry. */\n itemMetadata?: ItemMetadata;\n}\n\nexport interface BulkActionMetadata {\n /** Number of items that were successfully processed. */\n totalSuccesses?: number;\n /** Number of items that couldn't be processed. */\n totalFailures?: number;\n /** Number of failures without details because detailed failure threshold was exceeded. */\n undetailedFailures?: number;\n}\n\nexport interface RevertKeywordResearchRequest {\n /**\n * id of the keyword research to revert\n * @format GUID\n */\n keywordResearchId?: string | null;\n}\n\nexport interface RevertKeywordResearchResponse {\n /**\n * keyword research items\n * @maxSize 1000\n */\n keywordResearchItems?: KeywordResearch[];\n /**\n * id of the keyword research that was returned\n * @format GUID\n */\n keywordResearchId?: string | null;\n}\n\nexport interface DistributeKeywordsToPagesRequest {\n /**\n * Keywords to distribute\n * @maxSize 1000\n * @maxLength 1000\n */\n keywords?: string[];\n /**\n * Page essences to match keywords to\n * @maxSize 1000\n */\n pageEssences?: PageEssenceInput[];\n /**\n * Embedding dimensions (e.g., \"256\", \"512\", \"1024\", \"3072\")\n * @maxLength 4\n */\n dimensions?: string | null;\n /** Similarity threshold (default 0.5) */\n similarityThreshold?: number | null;\n}\n\nexport interface PageEssenceInput {\n /**\n * Page name\n * @maxLength 1000\n */\n pageName?: string;\n /**\n * Page ID\n * @maxLength 1000\n */\n pageId?: string;\n /**\n * Page essence (semantic summary)\n * @maxLength 1000\n */\n pageEssence?: string;\n /** Is homepage */\n homepage?: boolean;\n}\n\nexport interface DistributeKeywordsToPagesResponse {\n /**\n * Distributed keywords with their assigned pages\n * @maxSize 1000\n */\n distributedKeywords?: DistributedKeyword[];\n}\n\nexport interface DistributedKeyword {\n /**\n * The keyword\n * @maxLength 1000\n */\n keyword?: string;\n /**\n * The assigned page ID\n * @maxLength 1000\n */\n pageId?: string;\n /** The similarity score */\n score?: number;\n}\n\n/**\n * Retrieves the keyword research behind the site's current content plan.\n *\n * Returns the research produced by the last completed generation. Research\n * from a generation that's still running, or that failed, isn't readable.\n * Poll Get Content Plan Flow until its status is `SUCCESS`, then call this\n * method.\n *\n * The result is scoped to the site rather than to a flow. This method\n * always returns the site's most recent research and can't target an\n * earlier one. If another generation finishes between your trigger and this\n * read, you receive the newer research instead. Compare `keywordResearchId`\n * across reads to detect that the research was replaced.\n *\n * Omit `paging` to return every item in a single response. When `paging` is\n * present, `limit` accepts 1 to 100 and defaults to 50.\n *\n * A site with no keyword research returns a not found error rather than an\n * empty list.\n * @public\n * @documentationMaturity preview\n * @permissionId promote:seo:v1:content_plan_keyword_research:list_keyword_research_items\n * @applicableIdentity APP\n * @fqn wix.promote.seo.content.plan.v1.KeywordResearchServiceV1.ListKeywordResearchItems\n */\nexport async function listKeywordResearchItems(\n options?: ListKeywordResearchItemsOptions\n): Promise<\n NonNullablePaths<ListKeywordResearchItemsResponse, `keywordResearchItems`, 2>\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[1] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n contentPlanFlowId: options?.contentPlanFlowId,\n paging: options?.paging,\n });\n\n const reqOpts =\n ambassadorWixPromoteSeoV1ContentPlanKeywordResearch.listKeywordResearchItems(\n payload\n );\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n contentPlanFlowId: '$[0].contentPlanFlowId',\n paging: '$[0].paging',\n },\n singleArgumentUnchanged: false,\n },\n ['options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface ListKeywordResearchItemsOptions {\n /**\n * Reserved for future use.\n *\n * This method currently resolves the site's most recent keyword research,\n * and this field is ignored.\n * @format GUID\n */\n contentPlanFlowId?: string | null;\n /**\n * Cursor paging. Omit for the first page.\n *\n * Omit this object entirely to return every item in a single response.\n */\n paging?: CursorPaging;\n}\n\n/**\n * Updates a keyword research item.\n *\n * `fieldMask` is required and must name at least one of `keyword` or\n * `mainKeyword`. Those are the only writable fields, and an omitted or\n * empty mask is rejected rather than treated as a request to write\n * everything.\n *\n * `mainKeyword` only promotes. Set it to `true` to make the item its page's\n * main keyword. Setting it to `false`, or leaving it out, changes nothing,\n * so a main keyword can't be demoted with this method.\n *\n * This method updates an item that already exists. It can't add or delete a\n * keyword.\n *\n * The first write to AI-generated research copies that research instead of\n * changing it, so the response can carry a different `keywordResearchId`.\n * Always send the ID from the most recent response on your next write.\n * Sending the original ID again copies the research again.\n *\n * Changing `keyword` also refreshes that item's `searchVolume` and\n * `competition`, even though the mask doesn't name them.\n *\n * Edits don't survive a later generation. A generation that completes after\n * your edit produces fresh research that replaces the edited copy in every\n * read.\n *\n * To update multiple keyword research items in a single API call, call\n * [Bulk Update Keyword Research Items](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-keyword-research-v1/bulk-update-keyword-research-items).\n * @param _id - ID of the keyword research item to update.\n * @param keywordResearchId - ID of the keyword research the item belongs to.\n *\n * Use the `keywordResearchId` from your most recent read or write.\n * @public\n * @documentationMaturity preview\n * @requiredField _id\n * @requiredField keywordResearchId\n * @requiredField options\n * @requiredField options.fieldMask\n * @requiredField options.item\n * @permissionId promote:seo:v1:content_plan_keyword_research:update_keyword_research_item\n * @applicableIdentity APP\n * @fqn wix.promote.seo.content.plan.v1.KeywordResearchServiceV1.UpdateKeywordResearchItem\n */\nexport async function updateKeywordResearchItem(\n _id: string,\n keywordResearchId: string,\n options: NonNullablePaths<\n UpdateKeywordResearchItemOptions,\n `fieldMask` | `item`,\n 2\n >\n): Promise<UpdateKeywordResearchItemResponse> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[3] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n item: { ...options?.item, id: _id },\n keywordResearchId: keywordResearchId,\n fieldMask: options?.fieldMask,\n });\n\n const reqOpts =\n ambassadorWixPromoteSeoV1ContentPlanKeywordResearch.updateKeywordResearchItem(\n payload\n );\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: { item: '$[2].item' },\n explicitPathsToArguments: {\n 'item.id': '$[0]',\n keywordResearchId: '$[1]',\n fieldMask: '$[2].fieldMask',\n },\n singleArgumentUnchanged: false,\n },\n ['_id', 'keywordResearchId', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface UpdateKeywordResearchItemOptions {\n item: {\n /**\n * ID of the keyword research item to update.\n * @format GUID\n */\n _id?: string | null;\n /**\n * New keyword.\n *\n * Rejected if it's longer than 80 characters, or if it duplicates another\n * keyword in the same research. Changing it also refreshes the item's\n * `searchVolume` and `competition`.\n * @maxLength 1000\n */\n keyword?: string | null;\n /**\n * Whether to make this item its page's main keyword.\n *\n * Set to `true` to promote it. `false` and omitting the field both leave\n * the current main keyword unchanged, so this field can't demote one.\n */\n mainKeyword?: boolean | null;\n };\n /**\n * Fields to update.\n *\n * Must name at least one of `keyword` or `mainKeyword`, the only writable\n * fields. An omitted or empty mask is rejected.\n */\n fieldMask: string[];\n}\n\n/**\n * Updates multiple keyword research items.\n *\n * This method has no field mask and writes every field present on each\n * entry. `keyword` and `mainKeyword` remain the only writable fields, and\n * `mainKeyword` only promotes, as it does for a single item. Repeating an\n * item ID within one call is rejected.\n *\n * Validation runs across the whole request before anything is written, so a\n * problem rejects the entire call rather than failing one entry. Every\n * returned entry therefore reports success.\n *\n * A keyword research holds at most 30 keywords, counted after the update.\n * That limit is reached well before the request's own item limit.\n *\n * This method copies AI-generated research the same way a single-item\n * update does, so send the `keywordResearchId` from the response on your\n * next write. Edits don't survive a later generation.\n *\n * To update a single keyword research item, call\n * [Update Keyword Research Item](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-keyword-research-v1/update-keyword-research-item).\n * @param keywordResearchId - ID of the keyword research the items belong to.\n *\n * Use the `keywordResearchId` from your most recent read or write.\n * @public\n * @documentationMaturity preview\n * @requiredField keywordResearchId\n * @permissionId promote:seo:v1:content_plan_keyword_research:bulk_update_keyword_research_items\n * @applicableIdentity APP\n * @fqn wix.promote.seo.content.plan.v1.KeywordResearchServiceV1.BulkUpdateKeywordResearchItems\n */\nexport async function bulkUpdateKeywordResearchItems(\n keywordResearchId: string,\n options?: BulkUpdateKeywordResearchItemsOptions\n): Promise<\n NonNullablePaths<\n BulkUpdateKeywordResearchItemsResponse,\n | `results`\n | `results.${number}.itemMetadata.originalIndex`\n | `results.${number}.itemMetadata.success`\n | `results.${number}.itemMetadata.error.code`\n | `results.${number}.itemMetadata.error.description`\n | `bulkActionMetadata.totalSuccesses`\n | `bulkActionMetadata.totalFailures`\n | `bulkActionMetadata.undetailedFailures`\n | `keywordResearchItems`,\n 6\n >\n> {\n // @ts-ignore\n const { httpClient, sideEffects } = arguments[2] as {\n httpClient: HttpClient;\n sideEffects?: any;\n };\n\n const payload = renameKeysFromSDKRequestToRESTRequest({\n keywordResearchId: keywordResearchId,\n items: options?.items,\n });\n\n const reqOpts =\n ambassadorWixPromoteSeoV1ContentPlanKeywordResearch.bulkUpdateKeywordResearchItems(\n payload\n );\n\n sideEffects?.onSiteCall?.();\n try {\n const result = await httpClient.request(reqOpts);\n sideEffects?.onSuccess?.(result);\n\n return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n } catch (err: any) {\n const transformedError = sdkTransformError(\n err,\n {\n spreadPathsToArguments: {},\n explicitPathsToArguments: {\n keywordResearchId: '$[0]',\n items: '$[1].items',\n },\n singleArgumentUnchanged: false,\n },\n ['keywordResearchId', 'options']\n );\n sideEffects?.onError?.(err);\n\n throw transformedError;\n }\n}\n\nexport interface BulkUpdateKeywordResearchItemsOptions {\n /**\n * Keyword research items to update.\n *\n * Each item ID must appear at most once. The research holds at most 30\n * keywords once the update is applied.\n * @minSize 1\n * @maxSize 1000\n */\n items?: UpdatedKeywordResearch[];\n}\n","import { toURLSearchParams } from '@wix/sdk-runtime/rest-modules';\nimport { transformSDKFieldMaskToRESTFieldMask } from '@wix/sdk-runtime/transformations/field-mask';\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\nimport { resolveUrl } from '@wix/sdk-runtime/rest-modules';\nimport { ResolveUrlOpts } from '@wix/sdk-runtime/rest-modules';\nimport { RequestOptionsFactory } from '@wix/sdk-types';\n\nfunction resolveWixPromoteSeoContentPlanV1KeywordResearchServiceV1Url(\n opts: Omit<ResolveUrlOpts, 'domainToMappings'>\n) {\n const domainToMappings = {\n 'bo._base_domain_': [\n {\n srcPath: '/_serverless/seo-content-plan-service',\n destPath: '',\n },\n ],\n 'wixbo.ai': [\n {\n srcPath: '/_serverless/seo-content-plan-service',\n destPath: '',\n },\n ],\n 'wix-bo.com': [\n {\n srcPath: '/_serverless/seo-content-plan-service',\n destPath: '',\n },\n ],\n 'api._api_base_domain_': [\n {\n srcPath: '/seo-content-plan-service',\n destPath: '',\n },\n ],\n 'manage._base_domain_': [\n {\n srcPath: '/_api/seo-content-plan-service',\n destPath: '',\n },\n ],\n 'editor._base_domain_': [\n {\n srcPath: '/_api/seo-content-plan-service',\n destPath: '',\n },\n ],\n 'blocks._base_domain_': [\n {\n srcPath: '/_api/seo-content-plan-service',\n destPath: '',\n },\n ],\n 'create.editorx': [\n {\n srcPath: '/_api/seo-content-plan-service',\n destPath: '',\n },\n ],\n 'www.wixapis.com': [\n {\n srcPath: '/seo-content-plan-service',\n destPath: '',\n },\n {\n srcPath: '/promote/seo/v1/content-plan-flows',\n destPath: '/v1/content-plan-flows',\n },\n {\n srcPath: '/promote/seo/v1/content-plan-flow',\n destPath: '/v1/content-plan-flow',\n },\n {\n srcPath: '/promote/seo/v1/content-plan-keyword-research-items',\n destPath: '/v1/content-plan-keyword-research-items',\n },\n {\n srcPath: '/promote/seo/v1/keyword-research-items',\n destPath: '/v1/keyword-research-items',\n },\n {\n srcPath: '/promote/seo/v1/bulk/keyword-research-items',\n destPath: '/v1/bulk/keyword-research-items',\n },\n {\n srcPath: '/promote/seo/v1/create-content-plan',\n destPath: '/v1/create-content-plan',\n },\n {\n srcPath: '/promote/seo/v1/trigger-content-plan-generation-flow',\n destPath: '/v1/trigger-content-plan-generation-flow',\n },\n {\n srcPath: '/promote/seo/v1/cancel-content-plan-flow',\n destPath: '/v1/cancel-content-plan-flow',\n },\n ],\n _: [\n {\n srcPath: '/seo-content-plan-service',\n destPath: '',\n },\n {\n srcPath: '/promote/seo/v1/content-plan-flows',\n destPath: '/v1/content-plan-flows',\n },\n {\n srcPath: '/promote/seo/v1/content-plan-flow',\n destPath: '/v1/content-plan-flow',\n },\n {\n srcPath: '/promote/seo/v1/content-plan-keyword-research-items',\n destPath: '/v1/content-plan-keyword-research-items',\n },\n {\n srcPath: '/promote/seo/v1/keyword-research-items',\n destPath: '/v1/keyword-research-items',\n },\n {\n srcPath: '/promote/seo/v1/bulk/keyword-research-items',\n destPath: '/v1/bulk/keyword-research-items',\n },\n {\n srcPath: '/promote/seo/v1/create-content-plan',\n destPath: '/v1/create-content-plan',\n },\n {\n srcPath: '/promote/seo/v1/trigger-content-plan-generation-flow',\n destPath: '/v1/trigger-content-plan-generation-flow',\n },\n {\n srcPath: '/promote/seo/v1/cancel-content-plan-flow',\n destPath: '/v1/cancel-content-plan-flow',\n },\n ],\n };\n\n return resolveUrl(Object.assign(opts, { domainToMappings }));\n}\n\nconst PACKAGE_NAME = '@wix/auto_sdk_seo_keyword-research';\n\n/**\n * Retrieves the keyword research behind the site's current content plan.\n *\n * Returns the research produced by the last completed generation. Research\n * from a generation that's still running, or that failed, isn't readable.\n * Poll Get Content Plan Flow until its status is `SUCCESS`, then call this\n * method.\n *\n * The result is scoped to the site rather than to a flow. This method\n * always returns the site's most recent research and can't target an\n * earlier one. If another generation finishes between your trigger and this\n * read, you receive the newer research instead. Compare `keywordResearchId`\n * across reads to detect that the research was replaced.\n *\n * Omit `paging` to return every item in a single response. When `paging` is\n * present, `limit` accepts 1 to 100 and defaults to 50.\n *\n * A site with no keyword research returns a not found error rather than an\n * empty list.\n */\nexport function listKeywordResearchItems(\n payload: object\n): RequestOptionsFactory<any> {\n function __listKeywordResearchItems({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.promote.seo.v1.content_plan_keyword_research',\n method: 'GET' as any,\n methodFqn:\n 'wix.promote.seo.content.plan.v1.KeywordResearchServiceV1.ListKeywordResearchItems',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixPromoteSeoContentPlanV1KeywordResearchServiceV1Url({\n protoPath: '/v1/content-plan-keyword-research-items',\n data: payload,\n host,\n }),\n params: toURLSearchParams(payload),\n };\n\n return metadata;\n }\n\n return __listKeywordResearchItems;\n}\n\n/**\n * Updates a keyword research item.\n *\n * `fieldMask` is required and must name at least one of `keyword` or\n * `mainKeyword`. Those are the only writable fields, and an omitted or\n * empty mask is rejected rather than treated as a request to write\n * everything.\n *\n * `mainKeyword` only promotes. Set it to `true` to make the item its page's\n * main keyword. Setting it to `false`, or leaving it out, changes nothing,\n * so a main keyword can't be demoted with this method.\n *\n * This method updates an item that already exists. It can't add or delete a\n * keyword.\n *\n * The first write to AI-generated research copies that research instead of\n * changing it, so the response can carry a different `keywordResearchId`.\n * Always send the ID from the most recent response on your next write.\n * Sending the original ID again copies the research again.\n *\n * Changing `keyword` also refreshes that item's `searchVolume` and\n * `competition`, even though the mask doesn't name them.\n *\n * Edits don't survive a later generation. A generation that completes after\n * your edit produces fresh research that replaces the edited copy in every\n * read.\n *\n * To update multiple keyword research items in a single API call, call\n * [Bulk Update Keyword Research Items](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-keyword-research-v1/bulk-update-keyword-research-items).\n */\nexport function updateKeywordResearchItem(\n payload: object\n): RequestOptionsFactory<any> {\n function __updateKeywordResearchItem({ host }: any) {\n const serializedData = transformPaths(payload, [\n {\n transformFn: transformSDKFieldMaskToRESTFieldMask,\n paths: [{ path: 'fieldMask' }],\n },\n ]);\n const metadata = {\n entityFqdn: 'wix.promote.seo.v1.content_plan_keyword_research',\n method: 'PATCH' as any,\n methodFqn:\n 'wix.promote.seo.content.plan.v1.KeywordResearchServiceV1.UpdateKeywordResearchItem',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixPromoteSeoContentPlanV1KeywordResearchServiceV1Url({\n protoPath: '/v1/keyword-research-items/{item.id}',\n data: serializedData,\n host,\n }),\n data: serializedData,\n };\n\n return metadata;\n }\n\n return __updateKeywordResearchItem;\n}\n\n/**\n * Updates multiple keyword research items.\n *\n * This method has no field mask and writes every field present on each\n * entry. `keyword` and `mainKeyword` remain the only writable fields, and\n * `mainKeyword` only promotes, as it does for a single item. Repeating an\n * item ID within one call is rejected.\n *\n * Validation runs across the whole request before anything is written, so a\n * problem rejects the entire call rather than failing one entry. Every\n * returned entry therefore reports success.\n *\n * A keyword research holds at most 30 keywords, counted after the update.\n * That limit is reached well before the request's own item limit.\n *\n * This method copies AI-generated research the same way a single-item\n * update does, so send the `keywordResearchId` from the response on your\n * next write. Edits don't survive a later generation.\n *\n * To update a single keyword research item, call\n * [Update Keyword Research Item](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-keyword-research-v1/update-keyword-research-item).\n */\nexport function bulkUpdateKeywordResearchItems(\n payload: object\n): RequestOptionsFactory<any> {\n function __bulkUpdateKeywordResearchItems({ host }: any) {\n const metadata = {\n entityFqdn: 'wix.promote.seo.v1.content_plan_keyword_research',\n method: 'POST' as any,\n methodFqn:\n 'wix.promote.seo.content.plan.v1.KeywordResearchServiceV1.BulkUpdateKeywordResearchItems',\n packageName: PACKAGE_NAME,\n migrationOptions: {\n optInTransformResponse: true,\n },\n url: resolveWixPromoteSeoContentPlanV1KeywordResearchServiceV1Url({\n protoPath: '/v1/bulk/keyword-research-items/update',\n data: payload,\n host,\n }),\n data: payload,\n };\n\n return metadata;\n }\n\n return __bulkUpdateKeywordResearchItems;\n}\n","import { HttpClient, NonNullablePaths } from '@wix/sdk-types';\nimport {\n BulkUpdateKeywordResearchItemsOptions,\n BulkUpdateKeywordResearchItemsResponse,\n ListKeywordResearchItemsOptions,\n ListKeywordResearchItemsResponse,\n UpdateKeywordResearchItemOptions,\n UpdateKeywordResearchItemResponse,\n bulkUpdateKeywordResearchItems as universalBulkUpdateKeywordResearchItems,\n listKeywordResearchItems as universalListKeywordResearchItems,\n updateKeywordResearchItem as universalUpdateKeywordResearchItem,\n} from './promote-seo-v1-content-plan-keyword-research-keyword-research.universal.js';\n\nexport const __metadata = { PACKAGE_NAME: '@wix/seo' };\n\nexport function listKeywordResearchItems(\n httpClient: HttpClient\n): ListKeywordResearchItemsSignature {\n return (options?: ListKeywordResearchItemsOptions) =>\n universalListKeywordResearchItems(\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface ListKeywordResearchItemsSignature {\n /**\n * Retrieves the keyword research behind the site's current content plan.\n *\n * Returns the research produced by the last completed generation. Research\n * from a generation that's still running, or that failed, isn't readable.\n * Poll Get Content Plan Flow until its status is `SUCCESS`, then call this\n * method.\n *\n * The result is scoped to the site rather than to a flow. This method\n * always returns the site's most recent research and can't target an\n * earlier one. If another generation finishes between your trigger and this\n * read, you receive the newer research instead. Compare `keywordResearchId`\n * across reads to detect that the research was replaced.\n *\n * Omit `paging` to return every item in a single response. When `paging` is\n * present, `limit` accepts 1 to 100 and defaults to 50.\n *\n * A site with no keyword research returns a not found error rather than an\n * empty list.\n */\n (options?: ListKeywordResearchItemsOptions): Promise<\n NonNullablePaths<\n ListKeywordResearchItemsResponse,\n `keywordResearchItems`,\n 2\n >\n >;\n}\n\nexport function updateKeywordResearchItem(\n httpClient: HttpClient\n): UpdateKeywordResearchItemSignature {\n return (\n _id: string,\n keywordResearchId: string,\n options: NonNullablePaths<\n UpdateKeywordResearchItemOptions,\n `fieldMask` | `item`,\n 2\n >\n ) =>\n universalUpdateKeywordResearchItem(\n _id,\n keywordResearchId,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface UpdateKeywordResearchItemSignature {\n /**\n * Updates a keyword research item.\n *\n * `fieldMask` is required and must name at least one of `keyword` or\n * `mainKeyword`. Those are the only writable fields, and an omitted or\n * empty mask is rejected rather than treated as a request to write\n * everything.\n *\n * `mainKeyword` only promotes. Set it to `true` to make the item its page's\n * main keyword. Setting it to `false`, or leaving it out, changes nothing,\n * so a main keyword can't be demoted with this method.\n *\n * This method updates an item that already exists. It can't add or delete a\n * keyword.\n *\n * The first write to AI-generated research copies that research instead of\n * changing it, so the response can carry a different `keywordResearchId`.\n * Always send the ID from the most recent response on your next write.\n * Sending the original ID again copies the research again.\n *\n * Changing `keyword` also refreshes that item's `searchVolume` and\n * `competition`, even though the mask doesn't name them.\n *\n * Edits don't survive a later generation. A generation that completes after\n * your edit produces fresh research that replaces the edited copy in every\n * read.\n *\n * To update multiple keyword research items in a single API call, call\n * [Bulk Update Keyword Research Items](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-keyword-research-v1/bulk-update-keyword-research-items).\n * @param - ID of the keyword research item to update.\n * @param - ID of the keyword research the item belongs to.\n *\n * Use the `keywordResearchId` from your most recent read or write.\n */\n (\n _id: string,\n keywordResearchId: string,\n options: NonNullablePaths<\n UpdateKeywordResearchItemOptions,\n `fieldMask` | `item`,\n 2\n >\n ): Promise<UpdateKeywordResearchItemResponse>;\n}\n\nexport function bulkUpdateKeywordResearchItems(\n httpClient: HttpClient\n): BulkUpdateKeywordResearchItemsSignature {\n return (\n keywordResearchId: string,\n options?: BulkUpdateKeywordResearchItemsOptions\n ) =>\n universalBulkUpdateKeywordResearchItems(\n keywordResearchId,\n options,\n // @ts-ignore\n { httpClient }\n );\n}\n\ninterface BulkUpdateKeywordResearchItemsSignature {\n /**\n * Updates multiple keyword research items.\n *\n * This method has no field mask and writes every field present on each\n * entry. `keyword` and `mainKeyword` remain the only writable fields, and\n * `mainKeyword` only promotes, as it does for a single item. Repeating an\n * item ID within one call is rejected.\n *\n * Validation runs across the whole request before anything is written, so a\n * problem rejects the entire call rather than failing one entry. Every\n * returned entry therefore reports success.\n *\n * A keyword research holds at most 30 keywords, counted after the update.\n * That limit is reached well before the request's own item limit.\n *\n * This method copies AI-generated research the same way a single-item\n * update does, so send the `keywordResearchId` from the response on your\n * next write. Edits don't survive a later generation.\n *\n * To update a single keyword research item, call\n * [Update Keyword Research Item](https://dev.wix.com/docs/api-reference/business-management/seo/content-plan-keyword-research-v1/update-keyword-research-item).\n * @param - ID of the keyword research the items belong to.\n *\n * Use the `keywordResearchId` from your most recent read or write.\n */\n (\n keywordResearchId: string,\n options?: BulkUpdateKeywordResearchItemsOptions\n ): Promise<\n NonNullablePaths<\n BulkUpdateKeywordResearchItemsResponse,\n | `results`\n | `results.${number}.itemMetadata.originalIndex`\n | `results.${number}.itemMetadata.success`\n | `results.${number}.itemMetadata.error.code`\n | `results.${number}.itemMetadata.error.description`\n | `bulkActionMetadata.totalSuccesses`\n | `bulkActionMetadata.totalFailures`\n | `bulkActionMetadata.undetailedFailures`\n | `keywordResearchItems`,\n 6\n >\n >;\n}\n\nexport {\n AddedKeywordResearch,\n ApplicationError,\n BulkActionMetadata,\n BulkKeywordResearchItemResult,\n BulkUpdateKeywordResearchItemsOptions,\n BulkUpdateKeywordResearchItemsRequest,\n BulkUpdateKeywordResearchItemsResponse,\n CursorPaging,\n CursorPagingMetadata,\n Cursors,\n DeletedKeywordResearch,\n DistributeKeywordsToPagesRequest,\n DistributeKeywordsToPagesResponse,\n DistributedKeyword,\n GetDraftKeywordResearchItemsRequest,\n GetDraftKeywordResearchItemsResponse,\n GetKeywordResearchItemsByPageIdRequest,\n GetKeywordResearchItemsByPageIdResponse,\n GetKeywordResearchItemsRequest,\n GetKeywordResearchItemsResponse,\n ItemMetadata,\n KeywordResearch,\n ListKeywordResearchItemsOptions,\n ListKeywordResearchItemsRequest,\n ListKeywordResearchItemsResponse,\n PageEssenceInput,\n RevertKeywordResearchRequest,\n RevertKeywordResearchResponse,\n UpdateKeywordResearchItemOptions,\n UpdateKeywordResearchItemRequest,\n UpdateKeywordResearchItemResponse,\n UpdateKeywordResearchItemsRequest,\n UpdateKeywordResearchItemsResponse,\n UpdatedKeywordResearch,\n} from './promote-seo-v1-content-plan-keyword-research-keyword-research.universal.js';\n","import {\n listKeywordResearchItems as publicListKeywordResearchItems,\n updateKeywordResearchItem as publicUpdateKeywordResearchItem,\n bulkUpdateKeywordResearchItems as publicBulkUpdateKeywordResearchItems,\n} from './promote-seo-v1-content-plan-keyword-research-keyword-research.public.js';\nimport { createRESTModule } from '@wix/sdk-runtime/rest-modules';\nimport { BuildRESTFunction, MaybeContext } from '@wix/sdk-types';\n\nexport const listKeywordResearchItems: MaybeContext<\n BuildRESTFunction<typeof publicListKeywordResearchItems> &\n typeof publicListKeywordResearchItems\n> = /*#__PURE__*/ createRESTModule(publicListKeywordResearchItems);\nexport const updateKeywordResearchItem: MaybeContext<\n BuildRESTFunction<typeof publicUpdateKeywordResearchItem> &\n typeof publicUpdateKeywordResearchItem\n> = /*#__PURE__*/ createRESTModule(publicUpdateKeywordResearchItem);\nexport const bulkUpdateKeywordResearchItems: MaybeContext<\n BuildRESTFunction<typeof publicBulkUpdateKeywordResearchItems> &\n typeof publicBulkUpdateKeywordResearchItems\n> = /*#__PURE__*/ createRESTModule(publicBulkUpdateKeywordResearchItems);\n\nexport {\n KeywordResearch,\n GetKeywordResearchItemsByPageIdRequest,\n GetKeywordResearchItemsByPageIdResponse,\n ListKeywordResearchItemsRequest,\n CursorPaging,\n ListKeywordResearchItemsResponse,\n CursorPagingMetadata,\n Cursors,\n GetKeywordResearchItemsRequest,\n GetKeywordResearchItemsResponse,\n GetDraftKeywordResearchItemsRequest,\n GetDraftKeywordResearchItemsResponse,\n UpdateKeywordResearchItemsRequest,\n UpdatedKeywordResearch,\n DeletedKeywordResearch,\n AddedKeywordResearch,\n UpdateKeywordResearchItemsResponse,\n UpdateKeywordResearchItemRequest,\n UpdateKeywordResearchItemResponse,\n BulkUpdateKeywordResearchItemsRequest,\n BulkUpdateKeywordResearchItemsResponse,\n ItemMetadata,\n ApplicationError,\n BulkKeywordResearchItemResult,\n BulkActionMetadata,\n RevertKeywordResearchRequest,\n RevertKeywordResearchResponse,\n DistributeKeywordsToPagesRequest,\n PageEssenceInput,\n DistributeKeywordsToPagesResponse,\n DistributedKeyword,\n ListKeywordResearchItemsOptions,\n UpdateKeywordResearchItemOptions,\n BulkUpdateKeywordResearchItemsOptions,\n} from './promote-seo-v1-content-plan-keyword-research-keyword-research.universal.js';\n"],"mappings":"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","names":["bulkUpdateKeywordResearchItems","listKeywordResearchItems","updateKeywordResearchItem","import_rest_modules","listKeywordResearchItems","sdkTransformError","updateKeywordResearchItem","bulkUpdateKeywordResearchItems","listKeywordResearchItems","updateKeywordResearchItem","bulkUpdateKeywordResearchItems","import_rest_modules","listKeywordResearchItems","updateKeywordResearchItem","bulkUpdateKeywordResearchItems"]}
|