@wix/himalaya-cli 0.1533.0 → 0.1534.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/dist/cli.mjs +68 -12
- package/guides/index.json +1 -1
- package/guides/one-app-to-himi-app.md +17 -0
- package/guides/sdk-reference.json +610 -36
- package/package.json +2 -2
package/dist/cli.mjs
CHANGED
|
@@ -9726,6 +9726,7 @@ function resolveTranslation(value2, catalog4, sourceCatalog) {
|
|
|
9726
9726
|
var BINDING_SIGILS, COLON_SIGILS, BINDING_SIGIL_RE, APP_BINDING_PREFIX, APP_BINDING_RE, TRANSLATION_PREFIX, TRANSLATION_KEY_RE;
|
|
9727
9727
|
var init_bindings = __esm({
|
|
9728
9728
|
"../../core/ts/src/bindings.ts"() {
|
|
9729
|
+
"use strict";
|
|
9729
9730
|
BINDING_SIGILS = ["service", "flag", "item", "t"];
|
|
9730
9731
|
COLON_SIGILS = /* @__PURE__ */ new Set(["t"]);
|
|
9731
9732
|
BINDING_SIGIL_RE = new RegExp(
|
|
@@ -22600,6 +22601,7 @@ function resolveIdiom(tokens2, ctx = {}) {
|
|
|
22600
22601
|
var IDIOM_CONTEXTS, UNSAFE_KEYS;
|
|
22601
22602
|
var init_idiom = __esm({
|
|
22602
22603
|
"../../core/ts/src/idiom.ts"() {
|
|
22604
|
+
"use strict";
|
|
22603
22605
|
IDIOM_CONTEXTS = {
|
|
22604
22606
|
ios: { native: ["ios"] },
|
|
22605
22607
|
android: { native: ["material"] },
|
|
@@ -184675,12 +184677,19 @@ async function collectOneApp(input, deps = {}) {
|
|
|
184675
184677
|
const fetchImpl = deps.fetchImpl ?? fetch;
|
|
184676
184678
|
const maxBytes = boundedSetting(deps.maxResponseBytes, MAX_RESPONSE_BYTES);
|
|
184677
184679
|
const timeoutMs = boundedSetting(deps.timeoutMs, TIMEOUT_MS3);
|
|
184680
|
+
const credentials = /* @__PURE__ */ new Set([input.authorization]);
|
|
184681
|
+
let internalBusinessRead = false;
|
|
184678
184682
|
function redact(value2) {
|
|
184683
|
+
const secrets = [...credentials].sort((a2, b2) => b2.length - a2.length);
|
|
184684
|
+
const redactString = (value3) => {
|
|
184685
|
+
for (const credential of secrets) value3 = value3.split(credential).join("[REDACTED]");
|
|
184686
|
+
return value3;
|
|
184687
|
+
};
|
|
184679
184688
|
const visit = (item) => {
|
|
184680
|
-
if (typeof item === "string") return item
|
|
184689
|
+
if (typeof item === "string") return redactString(item);
|
|
184681
184690
|
if (Array.isArray(item)) return item.map(visit);
|
|
184682
184691
|
if (isObject2(item)) return Object.fromEntries(Object.entries(item).map(([key3, child]) => [
|
|
184683
|
-
key3
|
|
184692
|
+
redactString(key3),
|
|
184684
184693
|
visit(child)
|
|
184685
184694
|
]));
|
|
184686
184695
|
return item;
|
|
@@ -184695,19 +184704,23 @@ async function collectOneApp(input, deps = {}) {
|
|
|
184695
184704
|
throw new OneAppError("artifact_write_failed", "Could not save the collected source evidence.", { stage });
|
|
184696
184705
|
}
|
|
184697
184706
|
}
|
|
184698
|
-
async function request(url, stage, body,
|
|
184707
|
+
async function request(url, stage, body, context = {}) {
|
|
184708
|
+
const { platform, instance } = context;
|
|
184699
184709
|
const controller = new AbortController();
|
|
184700
184710
|
let timedOut = false;
|
|
184701
184711
|
let timer;
|
|
184702
184712
|
const headers2 = {
|
|
184703
|
-
Authorization: input.authorization,
|
|
184704
|
-
"wix-site-id": input.metaSiteId,
|
|
184713
|
+
Authorization: context.authorization ?? input.authorization,
|
|
184705
184714
|
Accept: "application/json"
|
|
184706
184715
|
};
|
|
184716
|
+
if (context.siteScoped !== false) headers2["wix-site-id"] = input.metaSiteId;
|
|
184707
184717
|
if (body !== void 0) headers2["Content-Type"] = "application/json";
|
|
184718
|
+
if (instance && !platform) {
|
|
184719
|
+
headers2["x-wix-mobile-app-version"] = `${sourceApp(instance)}/1.0.0`;
|
|
184720
|
+
}
|
|
184708
184721
|
if (platform) {
|
|
184709
184722
|
headers2.isAndroid = String(platform === "android");
|
|
184710
|
-
headers2.isVisitor =
|
|
184723
|
+
headers2.isVisitor = String(context.visitor ?? false);
|
|
184711
184724
|
headers2.os = platform;
|
|
184712
184725
|
headers2.mobile_app_type = instance === "branded" ? "branded" : "places";
|
|
184713
184726
|
}
|
|
@@ -184780,6 +184793,38 @@ async function collectOneApp(input, deps = {}) {
|
|
|
184780
184793
|
clearTimeout(timer);
|
|
184781
184794
|
}
|
|
184782
184795
|
}
|
|
184796
|
+
async function readBusiness(url, instance) {
|
|
184797
|
+
try {
|
|
184798
|
+
return await request(url.href, "business");
|
|
184799
|
+
} catch (error) {
|
|
184800
|
+
if (!input.allowInternalBusinessRead || !(error instanceof OneAppError) || error.code !== "source_forbidden") throw error;
|
|
184801
|
+
try {
|
|
184802
|
+
const info4 = await request(TOKEN_INFO, "business_authorization", { token: input.authorization });
|
|
184803
|
+
if (!isObject2(info4) || info4.active !== true || info4.subjectType !== "USER" || typeof info4.subjectId !== "string" || !info4.subjectId.trim() || typeof info4.siteId !== "string" || info4.siteId.toLowerCase() !== input.metaSiteId.toLowerCase()) throw error;
|
|
184804
|
+
const contexts = [
|
|
184805
|
+
{ organizationContext: {} },
|
|
184806
|
+
{ siteContext: { metasiteId: input.metaSiteId } }
|
|
184807
|
+
];
|
|
184808
|
+
for (const resourceContext of contexts) {
|
|
184809
|
+
const permission = await request(IS_PERMITTED, "business_authorization", { permission: INTERNAL_PERMISSION, resourceContext });
|
|
184810
|
+
if (!isObject2(permission) || permission.isPermitted !== true) throw error;
|
|
184811
|
+
}
|
|
184812
|
+
} catch {
|
|
184813
|
+
throw error;
|
|
184814
|
+
}
|
|
184815
|
+
const visitorUrl = new URL(url);
|
|
184816
|
+
visitorUrl.pathname = visitorUrl.pathname.replace("/user/businesses/", "/visitor/businesses/");
|
|
184817
|
+
internalBusinessRead = true;
|
|
184818
|
+
return request(visitorUrl.href, "business", void 0, { instance });
|
|
184819
|
+
}
|
|
184820
|
+
}
|
|
184821
|
+
async function enrichmentAuthorization() {
|
|
184822
|
+
if (!internalBusinessRead) return input.authorization;
|
|
184823
|
+
const session = await request(`${VISITOR_SESSION}${input.metaSiteId}/signed-instance?signed_instance_type=Visitor`, "enrichment_session", void 0, { siteScoped: false });
|
|
184824
|
+
if (!isObject2(session) || session.signedInstanceType !== "Visitor" || typeof session.signedInstance !== "string" || !session.signedInstance.trim() || /[\r\n]/.test(session.signedInstance) || typeof session.validUntil !== "string" || !Number.isFinite(Date.parse(session.validUntil)) || Date.parse(session.validUntil) <= (deps.now ?? (() => /* @__PURE__ */ new Date()))().getTime()) throw invalidResponse("enrichment_session");
|
|
184825
|
+
credentials.add(session.signedInstance);
|
|
184826
|
+
return session.signedInstance;
|
|
184827
|
+
}
|
|
184783
184828
|
const rawUrl = structureUrl("published-structure", input.metaSiteId, requested);
|
|
184784
184829
|
const originalRaw = validateStructure(await request(rawUrl, "published", {}), "published");
|
|
184785
184830
|
const baseline = semanticFingerprint(originalRaw);
|
|
@@ -184791,7 +184836,7 @@ async function collectOneApp(input, deps = {}) {
|
|
|
184791
184836
|
await progress("raw-structure", rawStructure);
|
|
184792
184837
|
const businessUrl = new URL(`${BUSINESS}${input.metaSiteId}`);
|
|
184793
184838
|
businessUrl.searchParams.set("forApp", sourceApp(resolved2));
|
|
184794
|
-
const projected = businessProjection(await
|
|
184839
|
+
const projected = businessProjection(await readBusiness(businessUrl, resolved2), input.metaSiteId);
|
|
184795
184840
|
const businessContext = redact(projected.context);
|
|
184796
184841
|
await progress("business-context", businessContext);
|
|
184797
184842
|
const enrichBody = {
|
|
@@ -184800,8 +184845,14 @@ async function collectOneApp(input, deps = {}) {
|
|
|
184800
184845
|
...projected.title ? { businessTitle: redact(projected.title) } : {}
|
|
184801
184846
|
};
|
|
184802
184847
|
const enrichUrl = structureUrl("v2/structure-enriched", input.metaSiteId, resolved2);
|
|
184848
|
+
const authorization = await enrichmentAuthorization();
|
|
184803
184849
|
const enrich = async (platform) => {
|
|
184804
|
-
const structure = validateStructure(await request(enrichUrl, `enriched_${platform}`, enrichBody,
|
|
184850
|
+
const structure = validateStructure(await request(enrichUrl, `enriched_${platform}`, enrichBody, {
|
|
184851
|
+
platform,
|
|
184852
|
+
instance: resolved2,
|
|
184853
|
+
authorization,
|
|
184854
|
+
visitor: internalBusinessRead
|
|
184855
|
+
}), `enriched_${platform}`, true);
|
|
184805
184856
|
if (structure.appInstance !== rawStructure.appInstance) {
|
|
184806
184857
|
throw new OneAppError("source_changed", "The source app changed during collection. Run the command again.", { stage: `enriched_${platform}` });
|
|
184807
184858
|
}
|
|
@@ -184845,24 +184896,28 @@ async function collectOneApp(input, deps = {}) {
|
|
|
184845
184896
|
sourceApp: sourceApp(resolved2),
|
|
184846
184897
|
fallback: requested !== resolved2,
|
|
184847
184898
|
fetchedAt: (deps.now ?? (() => /* @__PURE__ */ new Date()))().toISOString(),
|
|
184848
|
-
context: { locale: "en", shell: resolved2 === "branded" ? "branded" : "places", platforms: ["ios", "android"], identity: "user", productionRules: "not-collected" }
|
|
184899
|
+
context: { locale: "en", shell: resolved2 === "branded" ? "branded" : "places", platforms: ["ios", "android"], identity: internalBusinessRead ? "visitor" : "user", productionRules: "not-collected" }
|
|
184849
184900
|
},
|
|
184850
184901
|
rawStructure,
|
|
184851
184902
|
enriched,
|
|
184852
184903
|
businessContext,
|
|
184853
184904
|
warnings: [
|
|
184854
184905
|
{ code: "runtime_rules_unavailable", message: "Engine production rules were not collected. Empty rule input does not establish that the source has no restrictions." },
|
|
184855
|
-
{ code: "viewer_context", message: "Enrichment shows English iOS and Android views for a Wix user. Preserve authored raw access rules; this view does not establish visitor or member access." },
|
|
184906
|
+
{ code: "viewer_context", message: internalBusinessRead ? "Enrichment shows English iOS and Android visitor views. Preserve authored raw access rules; this view does not establish member or manager access." : "Enrichment shows English iOS and Android views for a Wix user. Preserve authored raw access rules; this view does not establish visitor or member access." },
|
|
184856
184907
|
...contextWarnings
|
|
184857
184908
|
]
|
|
184858
184909
|
};
|
|
184859
184910
|
}
|
|
184860
|
-
var MIDDLEWARE, BUSINESS, MAX_RESPONSE_BYTES, TIMEOUT_MS3, UUID, LIFECYCLE_FIELDS;
|
|
184911
|
+
var MIDDLEWARE, BUSINESS, TOKEN_INFO, IS_PERMITTED, INTERNAL_PERMISSION, VISITOR_SESSION, MAX_RESPONSE_BYTES, TIMEOUT_MS3, UUID, LIFECYCLE_FIELDS;
|
|
184861
184912
|
var init_collect = __esm({
|
|
184862
184913
|
"src/one-app/collect.ts"() {
|
|
184863
184914
|
init_errors2();
|
|
184864
184915
|
MIDDLEWARE = "https://manage.wix.com/_serverless/mobile-apps-editor-middleware";
|
|
184865
184916
|
BUSINESS = "https://apps.wix.com/_api/app-state/v1/user/businesses/";
|
|
184917
|
+
TOKEN_INFO = "https://www.wixapis.com/oauth2/token-info";
|
|
184918
|
+
IS_PERMITTED = "https://www.wixapis.com/authorization-server/v1/authorization/is_permitted";
|
|
184919
|
+
INTERNAL_PERMISSION = "BRANDED_APPS.MANAGE_INTERNAL";
|
|
184920
|
+
VISITOR_SESSION = "https://apps.wix.com/_api/one-app-session-web/v3/businesses/";
|
|
184866
184921
|
MAX_RESPONSE_BYTES = 8e6;
|
|
184867
184922
|
TIMEOUT_MS3 = 3e4;
|
|
184868
184923
|
UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
@@ -185222,7 +185277,8 @@ validate-topbar checks authored source top-bar controls against the migrated con
|
|
|
185222
185277
|
const collected = await (deps.collect ?? collectOneApp)({
|
|
185223
185278
|
metaSiteId: options.metaSiteId,
|
|
185224
185279
|
appInstance: options.appInstance,
|
|
185225
|
-
authorization: token
|
|
185280
|
+
authorization: token,
|
|
185281
|
+
allowInternalBusinessRead: true
|
|
185226
185282
|
}, {
|
|
185227
185283
|
fetchImpl: deps.fetchImpl,
|
|
185228
185284
|
onProgress: (completedStage, value2) => {
|
package/guides/index.json
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"Keep structure descriptor-authored: use FragmentSlot for enumerable variants and bound list/grid templates for repetition. Use WorkerSubtree only for runtime-unknowable structure, with an explicit screen allowlist, policy budgets, and shipped fallback.",
|
|
26
26
|
"Bindings ($service:<svc>.<path>, $item.<field>, $flag:<key>) are plain strings in ANY prop — INCLUDING Modifiers token refs (background, color, tint), so a worker can drive per-item theming, not just text. They CANNOT target strict-enum fields (style, size, alignment, severity, presentation, …) — those fail at render, not validation.",
|
|
27
27
|
"A screen that loads data asynchronously ships a designed LOADING state with it — a `Skeleton` shaped like the loaded layout when that layout is known (`StatefulSection` or `ActivityIndicator` when they fit the behavior better) — and a REDESIGN of a data screen reviews and updates that loading state in the same change, so it never shows the old layout. Loading is its own state, never the empty or the error state; a static screen gets no loading state (`himi docs designing-himi-screens` §5).",
|
|
28
|
-
"CLASSIFY every error before you show it: offline, server failure, sign-in, site membership and permission each
|
|
28
|
+
"CLASSIFY every error before you show it: offline, server failure, sign-in, site membership and permission each show an `ErrorState` (gated by `hiddenPath`): `variantPath` bound to the worker's error kind switches the copy and glyph, but `cta`, `title`, `body` and `ctaLabel` apply to every variant, so offline and server share one node with the retry `cta` while sign-in, permission and membership (`variant: \"permission\"` with its own `title`/`body`) keep a node each; user-facing copy — never `e.message`, a status code or an API error string — and a `cta` ONLY for a real recovery (Try again for offline, server and failed writes; the app's auth flow for sign-in; the site's join flow for `NotSiteMember` when available; none for permission, empty results or field errors). Empty results are the empty state, not an error. A refresh that fails KEEPS the rows and adds a `Banner` with retry; a load-more that fails keeps the rows and ends the list with a \"Couldn't load more\" row that retries the SAME cursor (`himi docs recipe-dynamic-list`), never the Banner, which reloads page 1. A sign-in, membership or permission failure CLEARS the rows instead — they are no longer the user's to see. Field errors stay in the field's slot; a failed action shows next to the action. (`himi docs designing-himi-screens` §5, `himi docs recipe-four-state`).",
|
|
29
29
|
"Workers are sandboxed: no DOM, no timers, no raw fetch. Produce state synchronously in actions; do not rely on an ambient refresh tick.",
|
|
30
30
|
"Declare every capability a worker uses in TWO places: the calling screen's logicBundle.declaredCapabilities (wix_platform, stream, camera, location, …) — undeclared calls are blocked — AND config.ts `capabilities`, the app-level list a binary is built with. The `capabilities` guide shows each id's import, what the binary needs and which shells serve it; validate flags an unknown id, an undeclared call, and (with `shell` in himalaya.content.json) an id that shell's binary does not serve. A capability with a native footprint (camera, location, push, …) only arrives with a new binary — an over-the-air push cannot add it. EXCEPTION: the Wix REST bridge (wix_api — the @himalaya/wix-* clients / wixApi.call) is ungated today (installed unconditionally), so it works WITHOUT a declaration; declaring wix_api is still recommended — it is where the platform is heading, and it documents what your worker touches.",
|
|
31
31
|
"`validate`/`render` prove a screen is WELL-FORMED and, by default, paint its INITIAL state — NOT that the app's LOGIC is correct. A wrong reducer (a game that never ends, a bad total) passes both with ok:true. Run `himi test`: it needs NO test files — it boots each screen's real worker and dispatches every action your descriptor already declares, then reports anything that threw, stayed stuck on `loading`, or leaked a NaN/undefined/`$service:` token into visible text. It crawls on HERMETIC DATA by default (zero network): your `dev/net-mocks.json` first, then your config's CMS `seed:` rows, then a canned fixture of frozen real vertical responses shipped with the CLI — so the fetch-SUCCESS mapping path runs too, where data-shape bugs actually live (canned data exercises code paths, not API-contract truth). Two boot-only HOSTILE passes (every list empty; every request 500) then check the empty/outage day — their findings are errors, not warnings. It also runs the worker in a DEVICE-PARITY sandbox (no setTimeout/setInterval, as on JSC/WebView), so a bundle that would only die on the device fails locally instead — e.g. `svc.actions.load(…)` (actions are DIRECT methods; `.actions` is undefined on device). (You are NOT limited to the crawled states either: rendering with `--live` runs the worker's REAL fetches against live Wix — a minted anonymous visitor token from the app's clientId — so a render CAN prove real-data binding locally with no VPN/push; and injecting `state` (`{\"<svc>\":{…}}`) renders a specific mid-flow state without the network.)",
|
|
@@ -35,6 +35,23 @@ himi one-app migrate --msid <one-app-meta-site-id> \
|
|
|
35
35
|
authentication are separate. Use the existing login mechanisms; never request
|
|
36
36
|
that the user paste a token into a prompt.
|
|
37
37
|
|
|
38
|
+
If the business read returns `403`, migration can use the internal source-read
|
|
39
|
+
path. Wix must confirm an active site USER token, the
|
|
40
|
+
`BRANDED_APPS.MANAGE_INTERNAL` organization permission, and that permission for the
|
|
41
|
+
exact requested site. Missing or unavailable authorization keeps
|
|
42
|
+
`source_forbidden`. The read preserves the selected app instance and saves only
|
|
43
|
+
`phoneNumber`, `website`, and `services`. Other commands keep their normal site
|
|
44
|
+
access rules. This path requires no new server endpoint.
|
|
45
|
+
|
|
46
|
+
Internal migration collects the iOS and Android runtime views with a fresh
|
|
47
|
+
site-scoped visitor session. An internal operator may have no site membership,
|
|
48
|
+
so a user view can fail while loading that user's groups. The evidence records
|
|
49
|
+
`source.context.identity: "visitor"`; these snapshots do not prove member or
|
|
50
|
+
manager access. Raw Structure remains authoritative for authored access rules.
|
|
51
|
+
Normal owner/collaborator reads keep their user runtime views. Credentials are
|
|
52
|
+
excluded from all saved evidence. If the visitor session cannot be created or
|
|
53
|
+
validated, collection stops at `enrichment_session`.
|
|
54
|
+
|
|
38
55
|
The command collects evidence into `<parent>/<name>/.himi/one-app/` and returns
|
|
39
56
|
`stage: "collected"`, `workflow: "one-app-to-himi-app"`, workspace and artifact
|
|
40
57
|
paths. It does not invoke a model or claim the app is generated. **When already
|
|
@@ -123,6 +123,12 @@
|
|
|
123
123
|
"kind": "reexport",
|
|
124
124
|
"jsdoc": "",
|
|
125
125
|
"decl": "export {\n validate,\n isValid as isValidValue,\n validators,\n validateAll,\n type ValidationFailure,\n type ValidationFailureRule,\n} from \"@himalaya/core/validation\";"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"name": "'./connectivity.js'",
|
|
129
|
+
"kind": "reexport",
|
|
130
|
+
"jsdoc": "",
|
|
131
|
+
"decl": "export { connectivity, requireConnectivity } from './connectivity.js';"
|
|
126
132
|
}
|
|
127
133
|
]
|
|
128
134
|
},
|
|
@@ -1131,7 +1137,7 @@
|
|
|
1131
1137
|
"name": "TopBarConfig",
|
|
1132
1138
|
"kind": "interface",
|
|
1133
1139
|
"jsdoc": "/** The shell-owned top bar. The shell paints\n * `ScreenDescriptor.title` and computes the leading slot (back XOR menu) from\n * nav depth; this adds the trailing action cluster + leading/style overrides.\n * Lives on `ScreenDescriptor.topBar` (authoritative) and\n * `NavigationConfig.topBarDefault` (app-level fallback, fully replaced). */",
|
|
1134
|
-
"decl": "export interface TopBarConfig {\n /** Trailing (right-edge) actions, authored order = leading→trailing. */\n actions?: TopBarAction[];\n /** Leading override: \"\" | \"auto\" (shell-computed) | \"back\" | \"menu\" | \"none\". */\n leading?: string;\n /** Content-under-bar: \"\" | \"opaque\" (default) | \"transparent\" | \"immersive\". */\n style?: string;\n /** Toolbar items (drawn after the legacy `actions`). */\n items?: ToolbarItem[];\n /** \"\" / \"automatic\" (default) | \"large\" | \"inline\". */\n titleDisplay?: string;\n /** The literal subtitle (the fallback for `subtitlePath`). */\n subtitle?: string;\n /** \"\" / \"visible\" (default) | \"hidden\". */\n visibility?: string;\n /** Bar fill token. iOS 26 keeps the system glass (amendment R12). */\n background?: TokenRef;\n /** \"Native top-bar search\" — the screen's search, drawn by whoever draws its bar natively (an embed's host\n * today: iOS `himalayaEmbedSearch`, Android `ProvideHimalayaEmbedSearch`). Read per screen only. */\n searchable?: SearchableConfig;\n /** amendment — the screen's logo; overrides `NavigationConfig.topBarLogo`. */\n logo?: TopBarLogo;\n /** amendment — the title as a menu. */\n titleMenu?: TopBarTitleMenu;\n /** amendment — live subtitle (`$service:`); `subtitle` is the fallback. */\n subtitlePath?: string;\n /** amendment — \"\" / \"pinned\" (default) | \"hide_on_scroll\". */\n scrollBehavior?: string;\n /** amendment — truthy ⇒ leaving the presentation asks to discard. Unset/unresolved ⇒ false. */\n dirtyPath?: string;\n}"
|
|
1140
|
+
"decl": "export interface TopBarConfig {\n /** Trailing (right-edge) actions, authored order = leading→trailing. */\n actions?: TopBarAction[];\n /** Leading override: \"\" | \"auto\" (shell-computed) | \"back\" | \"menu\" | \"none\". */\n leading?: string;\n /** Content-under-bar: \"\" | \"opaque\" (default) | \"transparent\" | \"immersive\". */\n style?: string;\n /** Toolbar items (drawn after the legacy `actions`). */\n items?: ToolbarItem[];\n /** \"\" / \"automatic\" (default) | \"large\" | \"inline\". */\n titleDisplay?: string;\n /** The literal subtitle (the fallback for `subtitlePath`). */\n subtitle?: string;\n /** \"\" / \"visible\" (default) | \"hidden\". */\n visibility?: string;\n /** Bar fill token. iOS 26 keeps the system glass (amendment R12). */\n background?: TokenRef;\n /** \"Native top-bar search\" — the screen's search, drawn by whoever draws its bar natively (an embed's host\n * today: iOS `himalayaEmbedSearch`, Android `ProvideHimalayaEmbedSearch`). Read per screen only. */\n searchable?: SearchableConfig;\n /** amendment — the screen's logo; overrides `NavigationConfig.topBarLogo`. */\n logo?: TopBarLogo;\n /** amendment — the title as a menu. */\n titleMenu?: TopBarTitleMenu;\n /** amendment — live subtitle (`$service:`); `subtitle` is the fallback. */\n subtitlePath?: string;\n /** amendment — \"\" / \"pinned\" (default) | \"hide_on_scroll\". */\n scrollBehavior?: string;\n /** amendment — truthy ⇒ leaving the presentation asks to discard. Unset/unresolved ⇒ false. */\n dirtyPath?: string;\n /** amendment — live `visibility` (`$service:`). Resolves to \"visible\" | \"hidden\";\n * anything else, or unresolved, falls back to `visibility`. Not a truthy boolean. */\n visibilityPath?: string;\n}"
|
|
1135
1141
|
},
|
|
1136
1142
|
{
|
|
1137
1143
|
"name": "SplashConfig",
|
|
@@ -1197,7 +1203,7 @@
|
|
|
1197
1203
|
"name": "ToolbarItem",
|
|
1198
1204
|
"kind": "interface",
|
|
1199
1205
|
"jsdoc": "/** One top-bar item. Test id `toolbar.<id>`\n * (`toolbar-<id>` on web and React Native). Every tap carries an existing `Action`\n *. Bindings are `$service:` sentinels resolved by the screen host. */",
|
|
1200
|
-
"decl": "export interface ToolbarItem {\n id: string;\n /** \"leading\" | \"trailing\" (default) | \"principal\" | \"bottom\" | \"keyboard\" | \"overflow\". */\n placement?: string;\n /** Text button when there is no icon; the accessible name always. */\n label?: string;\n icon?: IconRef;\n onTap?: Action;\n /** \"\" | \"cancel\" | \"confirm\" | \"destructive\". */\n role?: string;\n disabled?: boolean;\n /** OR'd with `disabled`. For Save, bind \"nothing to save\" (e.g. `cannotSave`), never the dirty flag. */\n disabledPath?: string;\n /** Non-empty ⇒ the item opens a menu. */\n menu?: MenuItem[];\n /** \"principal\" only: a custom title view. */\n content?: Component;\n /** Truthy ⇒ a progress indicator replaces the item. Unset/unresolved ⇒ false. */\n loadingPath?: string;\n /** Set ⇒ the item draws an avatar; `label` stays the accessible name (\"Profile\" by default). */\n avatar?: ToolbarAvatar;\n /** Live label; `label` is the fallback. */\n labelPath?: string;\n}"
|
|
1206
|
+
"decl": "export interface ToolbarItem {\n id: string;\n /** \"leading\" | \"trailing\" (default) | \"principal\" | \"bottom\" | \"keyboard\" | \"overflow\". */\n placement?: string;\n /** Text button when there is no icon; the accessible name always. */\n label?: string;\n icon?: IconRef;\n onTap?: Action;\n /** \"\" | \"cancel\" | \"confirm\" | \"destructive\". */\n role?: string;\n disabled?: boolean;\n /** OR'd with `disabled`. For Save, bind \"nothing to save\" (e.g. `cannotSave`), never the dirty flag. */\n disabledPath?: string;\n /** Non-empty ⇒ the item opens a menu. */\n menu?: MenuItem[];\n /** \"principal\" only: a custom title view. */\n content?: Component;\n /** Truthy ⇒ a progress indicator replaces the item. Unset/unresolved ⇒ false. */\n loadingPath?: string;\n /** Set ⇒ the item draws an avatar; `label` stays the accessible name (\"Profile\" by default). */\n avatar?: ToolbarAvatar;\n /** Live label; `label` is the fallback. */\n labelPath?: string;\n /** Long press (touch), secondary click (pointer) or the \"More options\" accessibility action.\n * Never also fires `onTap`; ignored while disabled or loading, in More Actions, and with a `menu`. */\n onLongPress?: Action;\n}"
|
|
1201
1207
|
},
|
|
1202
1208
|
{
|
|
1203
1209
|
"name": "ToolbarAvatar",
|
|
@@ -1987,7 +1993,7 @@
|
|
|
1987
1993
|
"name": "IAP_CATALOG_KINDS",
|
|
1988
1994
|
"kind": "const",
|
|
1989
1995
|
"jsdoc": "/** The Wix entity types `himi store iap` writes into its Wix→Apple mapping, so a mapping\n * backend can serve that export without translating kinds. */",
|
|
1990
|
-
"decl": "export const IAP_CATALOG_KINDS = [\"onlineProgram\", \"storesProduct\", \"pricingPlan\"] as const;"
|
|
1996
|
+
"decl": "export const IAP_CATALOG_KINDS = [\"onlineProgram\", \"storesProduct\", \"pricingPlan\", \"bookingsService\", \"eventsTicket\"] as const;"
|
|
1991
1997
|
},
|
|
1992
1998
|
{
|
|
1993
1999
|
"name": "IapCatalogKind",
|
|
@@ -2119,7 +2125,19 @@
|
|
|
2119
2125
|
"name": "AppleSaleRule",
|
|
2120
2126
|
"kind": "interface",
|
|
2121
2127
|
"jsdoc": "/** How the App Store sells one vertical's Wix item: the purchases catalog's `appProductId` for it, and\n * the only product type the purchase flow sells it as. */",
|
|
2122
|
-
"decl": "export interface AppleSaleRule {\n appProductId(entityId: string): string;\n productType: \"NON_CONSUMABLE\";\n}"
|
|
2128
|
+
"decl": "export interface AppleSaleRule {\n appProductId(entityId: string): string;\n productType: \"NON_CONSUMABLE\" | \"CONSUMABLE\";\n}"
|
|
2129
|
+
},
|
|
2130
|
+
{
|
|
2131
|
+
"name": "BOOKINGS_APPLE_SALES_ENABLED",
|
|
2132
|
+
"kind": "const",
|
|
2133
|
+
"jsdoc": "",
|
|
2134
|
+
"decl": "export const BOOKINGS_APPLE_SALES_ENABLED = false;"
|
|
2135
|
+
},
|
|
2136
|
+
{
|
|
2137
|
+
"name": "EVENTS_APPLE_SALES_ENABLED",
|
|
2138
|
+
"kind": "const",
|
|
2139
|
+
"jsdoc": "",
|
|
2140
|
+
"decl": "export const EVENTS_APPLE_SALES_ENABLED = false;"
|
|
2123
2141
|
},
|
|
2124
2142
|
{
|
|
2125
2143
|
"name": "STORES_ITEM_PAYMENT_ENABLED",
|
|
@@ -2145,11 +2163,17 @@
|
|
|
2145
2163
|
"jsdoc": "/** One-time unlimited plans sell through the App Store. Proven live in Sandbox on 2026-10-19: a member's\n * online plan order is charged with one cashier item whose id is the plan id, so StartPayment maps it to the\n * plan's Apple product, and the order reads ACTIVE and PAID. Recurring and time-limited plans stay outside\n * this rule; their Billing lifecycle is unfinished. */",
|
|
2146
2164
|
"decl": "export const PRICING_PLAN_APPLE_SALES_ENABLED = true;"
|
|
2147
2165
|
},
|
|
2166
|
+
{
|
|
2167
|
+
"name": "AppleSaleOptions",
|
|
2168
|
+
"kind": "interface",
|
|
2169
|
+
"jsdoc": "/**\n * The one definition `himi store iap connect` writes mappings by and the mapping source reads them by,\n * keyed by catalog kind. wix-iap StartPayment maps the cashier order's single item id, and Online\n * Programs builds that order with the program id as the item id; programs are one-time unlocks.\n * Wix Stores and one-time unlimited Pricing Plans join only with their independent switches.\n */",
|
|
2170
|
+
"decl": "export interface AppleSaleOptions {\n storesAppleSalesEnabled?: boolean;\n storesItemPaymentEnabled?: boolean;\n pricingPlanAppleSalesEnabled?: boolean;\n bookingsAppleSalesEnabled?: boolean;\n eventsAppleSalesEnabled?: boolean;\n}"
|
|
2171
|
+
},
|
|
2148
2172
|
{
|
|
2149
2173
|
"name": "appleSaleRules",
|
|
2150
2174
|
"kind": "function",
|
|
2151
|
-
"jsdoc": "
|
|
2152
|
-
"decl": "export function appleSaleRules(options:
|
|
2175
|
+
"jsdoc": "/** Resolves runtime sale eligibility independently from the catalog's provisioning support. */",
|
|
2176
|
+
"decl": "export function appleSaleRules(options: AppleSaleOptions = {}): Readonly<Record<string, AppleSaleRule>>;"
|
|
2153
2177
|
},
|
|
2154
2178
|
{
|
|
2155
2179
|
"name": "APPLE_SALE_RULES",
|
|
@@ -2157,6 +2181,12 @@
|
|
|
2157
2181
|
"jsdoc": "",
|
|
2158
2182
|
"decl": "export const APPLE_SALE_RULES = appleSaleRules();"
|
|
2159
2183
|
},
|
|
2184
|
+
{
|
|
2185
|
+
"name": "APPLE_PROVISIONING_RULES",
|
|
2186
|
+
"kind": "const",
|
|
2187
|
+
"jsdoc": "/** Catalog setup may precede activation; purchases still require the independent sales switches. */",
|
|
2188
|
+
"decl": "export const APPLE_PROVISIONING_RULES: Readonly<Record<string, AppleSaleRule>> = {\n ...APPLE_SALE_RULES, bookingsService: ATTENDANCE_SALE_RULE, eventsTicket: ATTENDANCE_SALE_RULE,\n};"
|
|
2189
|
+
},
|
|
2160
2190
|
{
|
|
2161
2191
|
"name": "HostCallExpectation",
|
|
2162
2192
|
"kind": "interface",
|
|
@@ -2197,7 +2227,7 @@
|
|
|
2197
2227
|
"name": "StartPaymentErrorCode",
|
|
2198
2228
|
"kind": "type",
|
|
2199
2229
|
"jsdoc": "",
|
|
2200
|
-
"decl": "export type StartPaymentErrorCode = \"NOT_PENDING\" | \"WRONG_PAYMENT_METHOD\" | \"NOT_ORDER_BUYER\" | \"UNSUPPORTED_ORDER\"\n | \"PRODUCT_NOT_AVAILABLE\" | \"ALREADY_OWNED\";"
|
|
2230
|
+
"decl": "export type StartPaymentErrorCode = \"NOT_PENDING\" | \"WRONG_PAYMENT_METHOD\" | \"NOT_ORDER_BUYER\" | \"UNSUPPORTED_ORDER\"\n | \"PRODUCT_NOT_AVAILABLE\" | \"ALREADY_OWNED\" | \"APP_NOT_CONFIGURED\" | \"SUBSCRIPTION_NOT_IN_APP\" | \"ALREADY_SUBSCRIBED\";"
|
|
2201
2231
|
},
|
|
2202
2232
|
{
|
|
2203
2233
|
"name": "StartItemPaymentErrorCode",
|
|
@@ -2328,6 +2358,54 @@
|
|
|
2328
2358
|
"jsdoc": "/** Whether the host fences protected calls to the captured member (`identityBound`). Web does not. */",
|
|
2329
2359
|
"decl": "export function readIdentityBound(): boolean;"
|
|
2330
2360
|
},
|
|
2361
|
+
{
|
|
2362
|
+
"name": "AppleAttendanceRoute",
|
|
2363
|
+
"kind": "type",
|
|
2364
|
+
"jsdoc": "",
|
|
2365
|
+
"decl": "export type AppleAttendanceRoute = \"appleIap\" | \"wixPayments\" | \"decide\";"
|
|
2366
|
+
},
|
|
2367
|
+
{
|
|
2368
|
+
"name": "BookingAttendance",
|
|
2369
|
+
"kind": "interface",
|
|
2370
|
+
"jsdoc": "",
|
|
2371
|
+
"decl": "export interface BookingAttendance extends AttendancePrice {\n kind: \"bookingsService\";\n type?: string;\n capacity?: number;\n maxParticipantsPerBooking?: number;\n conferencing?: boolean;\n locations?: readonly string[];\n onlineBooking?: boolean;\n onlinePayment?: boolean;\n deposit?: boolean;\n}"
|
|
2372
|
+
},
|
|
2373
|
+
{
|
|
2374
|
+
"name": "TicketAttendance",
|
|
2375
|
+
"kind": "interface",
|
|
2376
|
+
"jsdoc": "",
|
|
2377
|
+
"decl": "export interface TicketAttendance extends AttendancePrice {\n kind: \"eventsTicket\";\n location?: string;\n registration?: string;\n eventStatus?: string;\n saleStatus?: string;\n}"
|
|
2378
|
+
},
|
|
2379
|
+
{
|
|
2380
|
+
"name": "classifyForApple",
|
|
2381
|
+
"kind": "function",
|
|
2382
|
+
"jsdoc": "/** Delivery metadata decides the route; online booking and online payment alone never do. */",
|
|
2383
|
+
"decl": "export function classifyForApple(item: BookingAttendance | TicketAttendance, currency: string): AppleAttendanceRoute;"
|
|
2384
|
+
},
|
|
2385
|
+
{
|
|
2386
|
+
"name": "attendanceCheckoutRoute",
|
|
2387
|
+
"kind": "function",
|
|
2388
|
+
"jsdoc": "/** Applies platform support and activation switches without sending uncertain iOS offers to web checkout. */",
|
|
2389
|
+
"decl": "export function attendanceCheckoutRoute(item: BookingAttendance | TicketAttendance, currency: string, platform: string): \"regular\" | \"appleIap\" | \"blocked\";"
|
|
2390
|
+
},
|
|
2391
|
+
{
|
|
2392
|
+
"name": "bookingAttendanceOf",
|
|
2393
|
+
"kind": "function",
|
|
2394
|
+
"jsdoc": "/** Preserves missing Wix service fields as unknown so absent metadata cannot authorize a payment route. */",
|
|
2395
|
+
"decl": "export function bookingAttendanceOf(raw: unknown): BookingAttendance;"
|
|
2396
|
+
},
|
|
2397
|
+
{
|
|
2398
|
+
"name": "ticketAttendanceOf",
|
|
2399
|
+
"kind": "function",
|
|
2400
|
+
"jsdoc": "/** Combines event delivery and ticket-definition pricing metadata for conservative route classification. */",
|
|
2401
|
+
"decl": "export function ticketAttendanceOf(event: unknown, definition: unknown): TicketAttendance;"
|
|
2402
|
+
},
|
|
2403
|
+
{
|
|
2404
|
+
"name": "availableTicketAttendanceOf",
|
|
2405
|
+
"kind": "function",
|
|
2406
|
+
"jsdoc": "/** Reads the buyer-visible checkout projection; hidden/off-sale inclusions and unknown pricing stay unresolved. */",
|
|
2407
|
+
"decl": "export function availableTicketAttendanceOf(event: unknown, ticket: unknown): TicketAttendance;"
|
|
2408
|
+
},
|
|
2331
2409
|
{
|
|
2332
2410
|
"name": "ProductType",
|
|
2333
2411
|
"kind": "type",
|
|
@@ -2445,7 +2523,7 @@
|
|
|
2445
2523
|
{
|
|
2446
2524
|
"name": "purchaseForVerification",
|
|
2447
2525
|
"kind": "function",
|
|
2448
|
-
"jsdoc": "/** Apple non-consumables
|
|
2526
|
+
"jsdoc": "/** Apple consumables and non-consumables. The token comes from authenticated backend context.\n * Leaves the transaction unfinished. Never falls back to legacy purchase on old binaries. */",
|
|
2449
2527
|
"decl": "export async function purchaseForVerification(input: { productId: string; appAccountToken: string }): Promise<VerificationPurchaseResult>;"
|
|
2450
2528
|
},
|
|
2451
2529
|
{
|
|
@@ -2507,7 +2585,7 @@
|
|
|
2507
2585
|
"name": "\"./iap-verticals/index.js\"",
|
|
2508
2586
|
"kind": "reexport",
|
|
2509
2587
|
"jsdoc": "",
|
|
2510
|
-
"decl": "export { onlineProgramOrders, pricingPlanOrders, storesProductOrders, classifyCart } from \"./iap-verticals/index.js\";"
|
|
2588
|
+
"decl": "export { onlineProgramOrders, pricingPlanOrders, storesProductOrders, bookingOrders, eventTicketOrders, classifyCart } from \"./iap-verticals/index.js\";"
|
|
2511
2589
|
},
|
|
2512
2590
|
{
|
|
2513
2591
|
"name": "\"./order-refs.js\"",
|
|
@@ -2603,7 +2681,7 @@
|
|
|
2603
2681
|
"name": "IapOrderItem",
|
|
2604
2682
|
"kind": "interface",
|
|
2605
2683
|
"jsdoc": "/** One item a screen sells. `reference` is the same catalog reference its price came from. */",
|
|
2606
|
-
"decl": "export interface IapOrderItem {\n reference: CatalogReference;\n /** eCom catalog reference, required for a Wix Stores item. */\n catalogReference?: { appId: string; catalogItemId: string; options?: Record<string, unknown> };\n /** Only 1 is supported. */\n quantity?: number;\n}"
|
|
2684
|
+
"decl": "export interface IapOrderItem {\n reference: CatalogReference;\n /** One intentional purchase; reuse on retries, replace only for an explicit new purchase. */\n attemptId?: string;\n /** Ephemeral selection and form answers; never written to order references or screen state. */\n attendance?: {\n amount: string;\n currency: string;\n booking?: { slot: Record<string, unknown>; contactDetails: Record<string, unknown>; formInfo?: Record<string, unknown> };\n ticket?: { eventId: string; buyer: Record<string, unknown>; guests?: Record<string, unknown>[]; buyerSubmission?: Record<string, unknown>; guestSubmissions?: Record<string, unknown>[] };\n };\n /** eCom catalog reference, required for a Wix Stores item. */\n catalogReference?: { appId: string; catalogItemId: string; options?: Record<string, unknown> };\n /** Only 1 is supported. */\n quantity?: number;\n}"
|
|
2607
2685
|
},
|
|
2608
2686
|
{
|
|
2609
2687
|
"name": "VerticalRef",
|
|
@@ -2621,7 +2699,7 @@
|
|
|
2621
2699
|
"name": "OrderAttempt",
|
|
2622
2700
|
"kind": "type",
|
|
2623
2701
|
"jsdoc": "/** `open`: a pending order the cashier can charge. `granted`: the vertical already gives the\n * member access, so nothing is sold. */",
|
|
2624
|
-
"decl": "export type OrderAttempt
|
|
2702
|
+
"decl": "export type OrderAttempt = (\n /** `placed`: the order was created by this call, so it cannot have a charge yet. Only an adapter\n * that never returns an existing order may say so; an order it reuses must be listed first. */\n | { status: \"open\"; cashierOrderId: string; verticalRef: VerticalRef; placed?: boolean }\n | { status: \"granted\" }\n | { status: \"refused\"; reason: OrderFailureCode }\n | { status: \"unavailable\" }\n | { status: \"sessionChanged\" }) & { noOrderCreated?: true };"
|
|
2625
2703
|
},
|
|
2626
2704
|
{
|
|
2627
2705
|
"name": "AccessRead",
|
|
@@ -2633,7 +2711,7 @@
|
|
|
2633
2711
|
"name": "IapOrderAdapter",
|
|
2634
2712
|
"kind": "interface",
|
|
2635
2713
|
"jsdoc": "/** The only per-vertical code. Every call goes through the session-bound bridge it is given. */",
|
|
2636
|
-
"decl": "export interface IapOrderAdapter {\n /** The catalog kind it sells (`onlineProgram`, `pricingPlan`, `storesProduct`, or a custom one). */\n readonly kind: string;\n /** Structural check before any call: one item, quantity 1, a supported shape. */\n eligibility(item: IapOrderItem): IapEligibility;\n /** Opens, or reuses the vertical's own open, order for the signed-in member. */\n openOrder(item: IapOrderItem, bridge: SessionBoundBridge): Promise<OrderAttempt>;\n /** Re-reads an order opened earlier; `open` only while it can still be paid. */\n reopenOrder(order: { cashierOrderId: string; verticalRef: VerticalRef }, bridge: SessionBoundBridge): Promise<OrderAttempt>;\n /** The vertical's authoritative answer for the order's item and the signed-in member. */\n readAccess(verticalRef: VerticalRef, bridge: SessionBoundBridge): Promise<AccessRead>;\n /** The member's access to an item before any order exists (bought through Wix, say). Read-only:\n * never opens or prepares an order. An adapter without it shows Get access until a sale says otherwise. */\n currentAccess?(item: IapOrderItem, bridge: SessionBoundBridge): Promise<AccessRead>;\n /** When the platform enables StartItemPayment, an eligible item whose order wix-iap places itself\n * instead of `openOrder`. Null for an item outside that shape, which keeps `openOrder`. */\n itemPayment?(
|
|
2714
|
+
"decl": "export interface IapOrderAdapter {\n /** The catalog kind it sells (`onlineProgram`, `pricingPlan`, `storesProduct`, or a custom one). */\n readonly kind: string;\n readonly repeatable?: boolean;\n /** Structural check before any call: one item, quantity 1, a supported shape. */\n eligibility(item: IapOrderItem): IapEligibility;\n /** Opens, or reuses the vertical's own open, order for the signed-in member. */\n /** Repeatable adapters call beforeCreate immediately before their first inventory write,\n * after read-only checks, and abort without writing if it returns false. */\n openOrder(item: IapOrderItem, bridge: SessionBoundBridge, beforeCreate?: () => boolean): Promise<OrderAttempt>;\n /** Re-reads an order opened earlier; `open` only while it can still be paid. */\n reopenOrder(order: { cashierOrderId: string; verticalRef: VerticalRef }, bridge: SessionBoundBridge): Promise<OrderAttempt>;\n /** The vertical's authoritative answer for the order's item and the signed-in member. */\n readAccess(verticalRef: VerticalRef, bridge: SessionBoundBridge): Promise<AccessRead>;\n /** The member's access to an item before any order exists (bought through Wix, say). Read-only:\n * never opens or prepares an order. An adapter without it shows Get access until a sale says otherwise. */\n currentAccess?(item: IapOrderItem, bridge: SessionBoundBridge): Promise<AccessRead>;\n /** When the platform enables StartItemPayment, an eligible item whose order wix-iap places itself\n * instead of `openOrder`. Null for an item outside that shape, which keeps `openOrder`. */\n itemPayment?(i\n/* … */"
|
|
2637
2715
|
},
|
|
2638
2716
|
{
|
|
2639
2717
|
"name": "OrderPartitionKey",
|
|
@@ -2645,7 +2723,7 @@
|
|
|
2645
2723
|
"name": "OrderRefStage",
|
|
2646
2724
|
"kind": "type",
|
|
2647
2725
|
"jsdoc": "/** `startingItem`: a StartItemPayment was or is about to be sent and its answer is not stored, so\n * the service may have placed an order this device knows nothing of; nothing else is sold for the\n * item until it expires. `held`: Apple charged, and CompletePayment refused the proof without\n * recording it, so the transaction stays unfinished and is retried. `needsSupport`: recorded and\n * refused for good. */",
|
|
2648
|
-
"decl": "export type OrderRefStage = \"startingItem\" | \"ordered\" | \"charged\" | \"started\" | \"submitted\" | \"held\" | \"needsSupport\";"
|
|
2726
|
+
"decl": "export type OrderRefStage = \"startingItem\" | \"openingOrder\" | \"ordered\" | \"charged\" | \"started\" | \"submitted\" | \"fulfilled\" | \"held\" | \"needsSupport\";"
|
|
2649
2727
|
},
|
|
2650
2728
|
{
|
|
2651
2729
|
"name": "OrderRef",
|
|
@@ -2747,7 +2825,7 @@
|
|
|
2747
2825
|
"name": "IapPurchaseCopy",
|
|
2748
2826
|
"kind": "interface",
|
|
2749
2827
|
"jsdoc": "/** Labels from the screen's copy pack; the shared layer only chooses between them. */",
|
|
2750
|
-
"decl": "export interface IapPurchaseCopy {\n buy: string;\n processing: string;\n awaitingApproval: string;\n unavailable: string;\n signInRequired: string;\n retry: string;\n priceChanged: string;\n support: string;\n}"
|
|
2828
|
+
"decl": "export interface IapPurchaseCopy {\n buy: string;\n buyAnother?: string;\n processing: string;\n awaitingApproval: string;\n unavailable: string;\n signInRequired: string;\n retry: string;\n priceChanged: string;\n support: string;\n}"
|
|
2751
2829
|
},
|
|
2752
2830
|
{
|
|
2753
2831
|
"name": "IapPurchaseFields",
|
|
@@ -2834,7 +2912,7 @@
|
|
|
2834
2912
|
"name": "StartOptions",
|
|
2835
2913
|
"kind": "interface",
|
|
2836
2914
|
"jsdoc": "",
|
|
2837
|
-
"decl": "export interface StartOptions {\n /** Groups related activities (e.g. \"order\", \"timer\", \"ride\"). Maps to the iOS\n * ActivityKit attributes type / the Android notification channel + tag. */\n activityType: string;\n /** The widget-safe SDUI tree rendered on the lock screen + Dynamic Island /\n * Live Update notification. */\n content: LiveActivityComponent;\n /** Optional one-line title (Android Live Update headline / accessibility). */\n title?: string;\n /** Mark the activity stale after this many ms (iOS staleDate). 0 ⇒ no hint. */\n staleAfterMs?: number;\n /** Optional per-Dynamic-Island-slot subtrees; omitted slots fall back to title/glyph. */\n regions?: LiveActivityRegions;\n /** Exact record route in the host app. Older binaries may open the app root. */\n deepLink?: string;\n /** Request an ActivityKit push token; the host must register it with its authenticated runtime. */\n pushUpdates?: boolean;\n /**\n * #2050 — the record this activity tracks. Present ⇒ the runtime records a scoped\n * mapping and the host registers an authenticated subscription, so the serve plane\n * can push ordered background frames. Absent ⇒ foreground-only, unchanged.\n *\n * On iOS pair it with `pushUpdates: true`: without the ActivityKit push token there\n * is nothing for the host to register, so the mapping would be recorded and never\n * addressed.\n */\n session?: LiveSessionRef;\n /** Android promotion is opt-in for a user-followed, bounded, time-sensitive\n * activity. The system may still keep it as an ordinary notification. */\n promoted?: boolean;\n
|
|
2915
|
+
"decl": "export interface StartOptions {\n /** Groups related activities (e.g. \"order\", \"timer\", \"ride\"). Maps to the iOS\n * ActivityKit attributes type / the Android notification channel + tag. */\n activityType: string;\n /** The widget-safe SDUI tree rendered on the lock screen + Dynamic Island /\n * Live Update notification. */\n content: LiveActivityComponent;\n /** Optional one-line title (Android Live Update headline / accessibility). */\n title?: string;\n /** Mark the activity stale after this many ms (iOS staleDate). 0 ⇒ no hint. */\n staleAfterMs?: number;\n /** Optional per-Dynamic-Island-slot subtrees; omitted slots fall back to title/glyph. */\n regions?: LiveActivityRegions;\n /** Exact record route in the host app. Older binaries may open the app root. */\n deepLink?: string;\n /** Request an ActivityKit push token; the host must register it with its authenticated runtime. */\n pushUpdates?: boolean;\n /**\n * #2050 — the record this activity tracks. Present ⇒ the runtime records a scoped\n * mapping and the host registers an authenticated subscription, so the serve plane\n * can push ordered background frames. Absent ⇒ foreground-only, unchanged.\n *\n * On iOS pair it with `pushUpdates: true`: without the ActivityKit push token there\n * is nothing for the host to register, so the mapping would be recorded and never\n * addressed.\n */\n session?: LiveSessionRef;\n /** Android promotion is opt-in for a user-followed, bounded, time-sensitive\n * activity. The system may still keep it as an ordinary notification. */\n promoted?: boolean;\n /** In an app\n/* … */"
|
|
2838
2916
|
},
|
|
2839
2917
|
{
|
|
2840
2918
|
"name": "UpdateOptions",
|
|
@@ -8911,17 +8989,35 @@
|
|
|
8911
8989
|
"jsdoc": "",
|
|
8912
8990
|
"decl": "export interface WixBookingsQuery {\n paging?: WixBookingsPaging;\n filter?: Record<string, unknown>;\n sort?: WixBookingsSort[];\n}"
|
|
8913
8991
|
},
|
|
8992
|
+
{
|
|
8993
|
+
"name": "WixBookedSlotResource",
|
|
8994
|
+
"kind": "interface",
|
|
8995
|
+
"jsdoc": "",
|
|
8996
|
+
"decl": "export interface WixBookedSlotResource {\n id?: string;\n name?: string;\n}"
|
|
8997
|
+
},
|
|
8998
|
+
{
|
|
8999
|
+
"name": "WixBookedLocation",
|
|
9000
|
+
"kind": "interface",
|
|
9001
|
+
"jsdoc": "",
|
|
9002
|
+
"decl": "export interface WixBookedLocation {\n id?: string;\n name?: string;\n formattedAddress?: string;\n locationType?: string;\n}"
|
|
9003
|
+
},
|
|
8914
9004
|
{
|
|
8915
9005
|
"name": "WixBookingSlot",
|
|
8916
9006
|
"kind": "interface",
|
|
8917
9007
|
"jsdoc": "",
|
|
8918
|
-
"decl": "export interface WixBookingSlot {\n serviceId?: string;\n startDate?: string;\n endDate?: string;\n timezone?: string;\n}"
|
|
9008
|
+
"decl": "export interface WixBookingSlot {\n serviceId?: string;\n startDate?: string;\n endDate?: string;\n timezone?: string;\n sessionId?: string;\n scheduleId?: string;\n resource?: WixBookedSlotResource;\n location?: WixBookedLocation;\n}"
|
|
9009
|
+
},
|
|
9010
|
+
{
|
|
9011
|
+
"name": "WixBookedSchedule",
|
|
9012
|
+
"kind": "interface",
|
|
9013
|
+
"jsdoc": "",
|
|
9014
|
+
"decl": "export interface WixBookedSchedule {\n scheduleId?: string;\n serviceId?: string;\n location?: WixBookedLocation;\n timezone?: string;\n firstSessionStart?: string;\n lastSessionEnd?: string;\n}"
|
|
8919
9015
|
},
|
|
8920
9016
|
{
|
|
8921
9017
|
"name": "WixBookedEntity",
|
|
8922
9018
|
"kind": "interface",
|
|
8923
9019
|
"jsdoc": "",
|
|
8924
|
-
"decl": "export interface WixBookedEntity {\n title?: string;\n slot?: WixBookingSlot;\n}"
|
|
9020
|
+
"decl": "export interface WixBookedEntity {\n title?: string;\n slot?: WixBookingSlot;\n schedule?: WixBookedSchedule;\n}"
|
|
8925
9021
|
},
|
|
8926
9022
|
{
|
|
8927
9023
|
"name": "WixBookingContactDetails",
|
|
@@ -8933,7 +9029,7 @@
|
|
|
8933
9029
|
"name": "WixBooking",
|
|
8934
9030
|
"kind": "interface",
|
|
8935
9031
|
"jsdoc": "",
|
|
8936
|
-
"decl": "export interface WixBooking {\n id: string;\n bookedEntity?: WixBookedEntity;\n contactDetails?: WixBookingContactDetails;\n status?: string;\n paymentStatus?: string;\n startDate?: string;\n endDate?: string;\n totalParticipants?: number;\n createdDate?: string;\n}"
|
|
9032
|
+
"decl": "export interface WixBooking {\n id: string;\n bookedEntity?: WixBookedEntity;\n contactDetails?: WixBookingContactDetails;\n status?: string;\n paymentStatus?: string;\n startDate?: string;\n endDate?: string;\n totalParticipants?: number;\n createdDate?: string;\n revision?: string;\n}"
|
|
8937
9033
|
},
|
|
8938
9034
|
{
|
|
8939
9035
|
"name": "WixBookingsPagingMetadata",
|
|
@@ -8963,7 +9059,25 @@
|
|
|
8963
9059
|
"name": "WixServiceFixedPayment",
|
|
8964
9060
|
"kind": "interface",
|
|
8965
9061
|
"jsdoc": "",
|
|
8966
|
-
"decl": "export interface WixServiceFixedPayment {\n price?: WixServiceMoney;\n}"
|
|
9062
|
+
"decl": "export interface WixServiceFixedPayment {\n price?: WixServiceMoney;\n deposit?: WixServiceMoney;\n fullUpfrontPaymentAllowed?: boolean;\n}"
|
|
9063
|
+
},
|
|
9064
|
+
{
|
|
9065
|
+
"name": "WixServiceVariedPayment",
|
|
9066
|
+
"kind": "interface",
|
|
9067
|
+
"jsdoc": "",
|
|
9068
|
+
"decl": "export interface WixServiceVariedPayment {\n defaultPrice?: WixServiceMoney;\n deposit?: WixServiceMoney;\n minPrice?: WixServiceMoney;\n maxPrice?: WixServiceMoney;\n}"
|
|
9069
|
+
},
|
|
9070
|
+
{
|
|
9071
|
+
"name": "WixServiceCustomPayment",
|
|
9072
|
+
"kind": "interface",
|
|
9073
|
+
"jsdoc": "",
|
|
9074
|
+
"decl": "export interface WixServiceCustomPayment {\n description?: string;\n}"
|
|
9075
|
+
},
|
|
9076
|
+
{
|
|
9077
|
+
"name": "WixServicePaymentOptions",
|
|
9078
|
+
"kind": "interface",
|
|
9079
|
+
"jsdoc": "",
|
|
9080
|
+
"decl": "export interface WixServicePaymentOptions {\n online?: boolean;\n inPerson?: boolean;\n deposit?: boolean;\n pricingPlan?: boolean;\n}"
|
|
8967
9081
|
},
|
|
8968
9082
|
{
|
|
8969
9083
|
"name": "WixServiceRateLabel",
|
|
@@ -8975,25 +9089,199 @@
|
|
|
8975
9089
|
"name": "WixServicePayment",
|
|
8976
9090
|
"kind": "interface",
|
|
8977
9091
|
"jsdoc": "",
|
|
8978
|
-
"decl": "export interface WixServicePayment {\n fixed?: WixServiceFixedPayment;\n rateLabel?: WixServiceRateLabel;\n price?: number;\n currency?: string;\n}"
|
|
9092
|
+
"decl": "export interface WixServicePayment {\n rateType?: string;\n fixed?: WixServiceFixedPayment;\n varied?: WixServiceVariedPayment;\n custom?: WixServiceCustomPayment;\n options?: WixServicePaymentOptions;\n rateLabel?: WixServiceRateLabel;\n price?: number;\n currency?: string;\n}"
|
|
9093
|
+
},
|
|
9094
|
+
{
|
|
9095
|
+
"name": "WixServiceDuration",
|
|
9096
|
+
"kind": "interface",
|
|
9097
|
+
"jsdoc": "",
|
|
9098
|
+
"decl": "export interface WixServiceDuration {\n minutes?: number;\n}"
|
|
9099
|
+
},
|
|
9100
|
+
{
|
|
9101
|
+
"name": "WixServiceHourlyConfig",
|
|
9102
|
+
"kind": "interface",
|
|
9103
|
+
"jsdoc": "",
|
|
9104
|
+
"decl": "export interface WixServiceHourlyConfig {\n minDurationInMinutes?: number;\n maxDurationInMinutes?: number;\n}"
|
|
9105
|
+
},
|
|
9106
|
+
{
|
|
9107
|
+
"name": "WixServiceDailyConfig",
|
|
9108
|
+
"kind": "interface",
|
|
9109
|
+
"jsdoc": "",
|
|
9110
|
+
"decl": "export interface WixServiceDailyConfig {\n minDurationInDays?: number;\n maxDurationInDays?: number;\n}"
|
|
9111
|
+
},
|
|
9112
|
+
{
|
|
9113
|
+
"name": "WixServiceDurationRange",
|
|
9114
|
+
"kind": "interface",
|
|
9115
|
+
"jsdoc": "",
|
|
9116
|
+
"decl": "export interface WixServiceDurationRange {\n hourOptions?: WixServiceHourlyConfig;\n dayOptions?: WixServiceDailyConfig;\n unitType?: string;\n}"
|
|
8979
9117
|
},
|
|
8980
9118
|
{
|
|
8981
9119
|
"name": "WixServiceAvailabilityConstraints",
|
|
8982
9120
|
"kind": "interface",
|
|
8983
9121
|
"jsdoc": "",
|
|
8984
|
-
"decl": "export interface WixServiceAvailabilityConstraints {\n sessionDurations?: number[];\n}"
|
|
9122
|
+
"decl": "export interface WixServiceAvailabilityConstraints {\n durations?: WixServiceDuration[];\n sessionDurations?: number[];\n durationRange?: WixServiceDurationRange;\n}"
|
|
8985
9123
|
},
|
|
8986
9124
|
{
|
|
8987
9125
|
"name": "WixServiceSchedule",
|
|
8988
9126
|
"kind": "interface",
|
|
8989
9127
|
"jsdoc": "",
|
|
8990
|
-
"decl": "export interface WixServiceSchedule {\n availabilityConstraints?: WixServiceAvailabilityConstraints;\n}"
|
|
9128
|
+
"decl": "export interface WixServiceSchedule {\n id?: string;\n firstSessionStart?: string;\n lastSessionEnd?: string;\n availabilityConstraints?: WixServiceAvailabilityConstraints;\n}"
|
|
9129
|
+
},
|
|
9130
|
+
{
|
|
9131
|
+
"name": "WixServiceImage",
|
|
9132
|
+
"kind": "interface",
|
|
9133
|
+
"jsdoc": "",
|
|
9134
|
+
"decl": "export interface WixServiceImage {\n id?: string;\n url?: string;\n height?: number;\n width?: number;\n altText?: string;\n}"
|
|
9135
|
+
},
|
|
9136
|
+
{
|
|
9137
|
+
"name": "WixServiceMediaItem",
|
|
9138
|
+
"kind": "interface",
|
|
9139
|
+
"jsdoc": "",
|
|
9140
|
+
"decl": "export interface WixServiceMediaItem {\n image?: WixServiceImage;\n}"
|
|
9141
|
+
},
|
|
9142
|
+
{
|
|
9143
|
+
"name": "WixServiceMedia",
|
|
9144
|
+
"kind": "interface",
|
|
9145
|
+
"jsdoc": "",
|
|
9146
|
+
"decl": "export interface WixServiceMedia {\n items?: WixServiceMediaItem[];\n mainMedia?: WixServiceMediaItem;\n coverMedia?: WixServiceMediaItem;\n}"
|
|
9147
|
+
},
|
|
9148
|
+
{
|
|
9149
|
+
"name": "WixServiceStreetAddress",
|
|
9150
|
+
"kind": "interface",
|
|
9151
|
+
"jsdoc": "",
|
|
9152
|
+
"decl": "export interface WixServiceStreetAddress {\n number?: string;\n name?: string;\n apt?: string;\n}"
|
|
9153
|
+
},
|
|
9154
|
+
{
|
|
9155
|
+
"name": "WixServiceAddress",
|
|
9156
|
+
"kind": "interface",
|
|
9157
|
+
"jsdoc": "",
|
|
9158
|
+
"decl": "export interface WixServiceAddress {\n streetAddress?: WixServiceStreetAddress;\n addressLine?: string;\n country?: string;\n subdivision?: string;\n city?: string;\n postalCode?: string;\n formattedAddress?: string;\n}"
|
|
9159
|
+
},
|
|
9160
|
+
{
|
|
9161
|
+
"name": "WixServiceBusinessLocation",
|
|
9162
|
+
"kind": "interface",
|
|
9163
|
+
"jsdoc": "",
|
|
9164
|
+
"decl": "export interface WixServiceBusinessLocation {\n id?: string;\n name?: string;\n default?: boolean;\n address?: WixServiceAddress;\n}"
|
|
9165
|
+
},
|
|
9166
|
+
{
|
|
9167
|
+
"name": "WixServiceCustomLocation",
|
|
9168
|
+
"kind": "interface",
|
|
9169
|
+
"jsdoc": "",
|
|
9170
|
+
"decl": "export interface WixServiceCustomLocation {\n id?: string;\n address?: WixServiceAddress;\n}"
|
|
9171
|
+
},
|
|
9172
|
+
{
|
|
9173
|
+
"name": "WixServiceLocation",
|
|
9174
|
+
"kind": "interface",
|
|
9175
|
+
"jsdoc": "",
|
|
9176
|
+
"decl": "export interface WixServiceLocation {\n id?: string;\n type?: string;\n business?: WixServiceBusinessLocation;\n custom?: WixServiceCustomLocation;\n calculatedAddress?: WixServiceAddress;\n}"
|
|
9177
|
+
},
|
|
9178
|
+
{
|
|
9179
|
+
"name": "WixServiceOnlineBooking",
|
|
9180
|
+
"kind": "interface",
|
|
9181
|
+
"jsdoc": "",
|
|
9182
|
+
"decl": "export interface WixServiceOnlineBooking {\n enabled?: boolean;\n requireManualApproval?: boolean;\n allowMultipleRequests?: boolean;\n}"
|
|
9183
|
+
},
|
|
9184
|
+
{
|
|
9185
|
+
"name": "WixServiceConferencing",
|
|
9186
|
+
"kind": "interface",
|
|
9187
|
+
"jsdoc": "",
|
|
9188
|
+
"decl": "export interface WixServiceConferencing {\n enabled?: boolean;\n}"
|
|
9189
|
+
},
|
|
9190
|
+
{
|
|
9191
|
+
"name": "WixServicePolicyDescription",
|
|
9192
|
+
"kind": "interface",
|
|
9193
|
+
"jsdoc": "",
|
|
9194
|
+
"decl": "export interface WixServicePolicyDescription {\n enabled?: boolean;\n description?: string;\n}"
|
|
9195
|
+
},
|
|
9196
|
+
{
|
|
9197
|
+
"name": "WixServiceLimitEarlyBookingPolicy",
|
|
9198
|
+
"kind": "interface",
|
|
9199
|
+
"jsdoc": "",
|
|
9200
|
+
"decl": "export interface WixServiceLimitEarlyBookingPolicy {\n enabled?: boolean;\n earliestBookingInMinutes?: number;\n}"
|
|
9201
|
+
},
|
|
9202
|
+
{
|
|
9203
|
+
"name": "WixServiceLimitLateBookingPolicy",
|
|
9204
|
+
"kind": "interface",
|
|
9205
|
+
"jsdoc": "",
|
|
9206
|
+
"decl": "export interface WixServiceLimitLateBookingPolicy {\n enabled?: boolean;\n latestBookingInMinutes?: number;\n}"
|
|
9207
|
+
},
|
|
9208
|
+
{
|
|
9209
|
+
"name": "WixServiceBookAfterStartPolicy",
|
|
9210
|
+
"kind": "interface",
|
|
9211
|
+
"jsdoc": "",
|
|
9212
|
+
"decl": "export interface WixServiceBookAfterStartPolicy {\n enabled?: boolean;\n}"
|
|
9213
|
+
},
|
|
9214
|
+
{
|
|
9215
|
+
"name": "WixServiceCancellationPolicy",
|
|
9216
|
+
"kind": "interface",
|
|
9217
|
+
"jsdoc": "",
|
|
9218
|
+
"decl": "export interface WixServiceCancellationPolicy {\n enabled?: boolean;\n limitLatestCancellation?: boolean;\n latestCancellationInMinutes?: number;\n}"
|
|
9219
|
+
},
|
|
9220
|
+
{
|
|
9221
|
+
"name": "WixServiceReschedulePolicy",
|
|
9222
|
+
"kind": "interface",
|
|
9223
|
+
"jsdoc": "",
|
|
9224
|
+
"decl": "export interface WixServiceReschedulePolicy {\n enabled?: boolean;\n limitLatestReschedule?: boolean;\n latestRescheduleInMinutes?: number;\n}"
|
|
9225
|
+
},
|
|
9226
|
+
{
|
|
9227
|
+
"name": "WixServiceWaitlistPolicy",
|
|
9228
|
+
"kind": "interface",
|
|
9229
|
+
"jsdoc": "",
|
|
9230
|
+
"decl": "export interface WixServiceWaitlistPolicy {\n enabled?: boolean;\n capacity?: number;\n reservationTimeInMinutes?: number;\n}"
|
|
9231
|
+
},
|
|
9232
|
+
{
|
|
9233
|
+
"name": "WixServiceParticipantsPolicy",
|
|
9234
|
+
"kind": "interface",
|
|
9235
|
+
"jsdoc": "",
|
|
9236
|
+
"decl": "export interface WixServiceParticipantsPolicy {\n maxParticipantsPerBooking?: number;\n}"
|
|
9237
|
+
},
|
|
9238
|
+
{
|
|
9239
|
+
"name": "WixServiceCancellationWindow",
|
|
9240
|
+
"kind": "interface",
|
|
9241
|
+
"jsdoc": "",
|
|
9242
|
+
"decl": "export interface WixServiceCancellationWindow {\n amount?: WixServiceMoney;\n percentage?: string;\n startInMinutes?: number;\n}"
|
|
9243
|
+
},
|
|
9244
|
+
{
|
|
9245
|
+
"name": "WixServiceCancellationFeePolicy",
|
|
9246
|
+
"kind": "interface",
|
|
9247
|
+
"jsdoc": "",
|
|
9248
|
+
"decl": "export interface WixServiceCancellationFeePolicy {\n enabled?: boolean;\n cancellationWindows?: WixServiceCancellationWindow[];\n}"
|
|
9249
|
+
},
|
|
9250
|
+
{
|
|
9251
|
+
"name": "WixServiceBookingPolicy",
|
|
9252
|
+
"kind": "interface",
|
|
9253
|
+
"jsdoc": "",
|
|
9254
|
+
"decl": "export interface WixServiceBookingPolicy {\n id?: string;\n name?: string;\n customPolicyDescription?: WixServicePolicyDescription;\n limitEarlyBookingPolicy?: WixServiceLimitEarlyBookingPolicy;\n limitLateBookingPolicy?: WixServiceLimitLateBookingPolicy;\n bookAfterStartPolicy?: WixServiceBookAfterStartPolicy;\n cancellationPolicy?: WixServiceCancellationPolicy;\n reschedulePolicy?: WixServiceReschedulePolicy;\n waitlistPolicy?: WixServiceWaitlistPolicy;\n participantsPolicy?: WixServiceParticipantsPolicy;\n cancellationFeePolicy?: WixServiceCancellationFeePolicy;\n}"
|
|
9255
|
+
},
|
|
9256
|
+
{
|
|
9257
|
+
"name": "WixServiceStaffMember",
|
|
9258
|
+
"kind": "interface",
|
|
9259
|
+
"jsdoc": "",
|
|
9260
|
+
"decl": "export interface WixServiceStaffMember {\n staffMemberId?: string;\n name?: string;\n mainMedia?: WixServiceMediaItem;\n}"
|
|
9261
|
+
},
|
|
9262
|
+
{
|
|
9263
|
+
"name": "WixServiceStaffMemberDetails",
|
|
9264
|
+
"kind": "interface",
|
|
9265
|
+
"jsdoc": "",
|
|
9266
|
+
"decl": "export interface WixServiceStaffMemberDetails {\n staffMembers?: WixServiceStaffMember[];\n}"
|
|
9267
|
+
},
|
|
9268
|
+
{
|
|
9269
|
+
"name": "WixServicePageUrl",
|
|
9270
|
+
"kind": "interface",
|
|
9271
|
+
"jsdoc": "",
|
|
9272
|
+
"decl": "export interface WixServicePageUrl {\n relativePath?: string;\n url?: string;\n}"
|
|
9273
|
+
},
|
|
9274
|
+
{
|
|
9275
|
+
"name": "WixServiceUrls",
|
|
9276
|
+
"kind": "interface",
|
|
9277
|
+
"jsdoc": "",
|
|
9278
|
+
"decl": "export interface WixServiceUrls {\n servicePage?: WixServicePageUrl;\n bookingPage?: WixServicePageUrl;\n}"
|
|
8991
9279
|
},
|
|
8992
9280
|
{
|
|
8993
9281
|
"name": "WixService",
|
|
8994
9282
|
"kind": "interface",
|
|
8995
9283
|
"jsdoc": "",
|
|
8996
|
-
"decl": "export interface WixService {\n id: string;\n name?: string;\n description?: string;\n duration?: number;\n payment?: WixServicePayment;\n schedule?: WixServiceSchedule;\n price?: number;\n category?: string;\n}"
|
|
9284
|
+
"decl": "export interface WixService {\n id: string;\n name?: string;\n description?: string;\n type?: string;\n tagLine?: string;\n defaultCapacity?: number;\n media?: WixServiceMedia;\n duration?: number;\n payment?: WixServicePayment;\n onlineBooking?: WixServiceOnlineBooking;\n conferencing?: WixServiceConferencing;\n locations?: WixServiceLocation[];\n bookingPolicy?: WixServiceBookingPolicy;\n schedule?: WixServiceSchedule;\n staffMemberDetails?: WixServiceStaffMemberDetails;\n urls?: WixServiceUrls;\n price?: number;\n category?: string;\n}"
|
|
8997
9285
|
},
|
|
8998
9286
|
{
|
|
8999
9287
|
"name": "WixServicesSearchPaging",
|
|
@@ -9025,6 +9313,12 @@
|
|
|
9025
9313
|
"jsdoc": "",
|
|
9026
9314
|
"decl": "export interface WixGetServiceResponse {\n service: WixService;\n}"
|
|
9027
9315
|
},
|
|
9316
|
+
{
|
|
9317
|
+
"name": "WixGetServiceOptions",
|
|
9318
|
+
"kind": "interface",
|
|
9319
|
+
"jsdoc": "",
|
|
9320
|
+
"decl": "export interface WixGetServiceOptions {\n conditionalFields?: string[];\n}"
|
|
9321
|
+
},
|
|
9028
9322
|
{
|
|
9029
9323
|
"name": "WixServiceWrite",
|
|
9030
9324
|
"kind": "interface",
|
|
@@ -9163,13 +9457,13 @@
|
|
|
9163
9457
|
"name": "WixServicePayment",
|
|
9164
9458
|
"kind": "interface",
|
|
9165
9459
|
"jsdoc": "",
|
|
9166
|
-
"decl": "export interface WixServicePayment {\n fixed?: { price?: WixServiceMoney };\n rateLabel?: { amount?: string; currency?: string };\n /** @deprecated Legacy flat payment shape. */\n price?: number;\n /** @deprecated Legacy flat payment shape. */\n currency?: string;\n}"
|
|
9460
|
+
"decl": "export interface WixServicePayment {\n /** \"FIXED\" | \"CUSTOM\" | \"VARIED\" | \"NO_FEE\". */\n rateType?: string;\n fixed?: { price?: WixServiceMoney; deposit?: WixServiceMoney; fullUpfrontPaymentAllowed?: boolean };\n varied?: { defaultPrice?: WixServiceMoney; deposit?: WixServiceMoney; minPrice?: WixServiceMoney; maxPrice?: WixServiceMoney };\n custom?: { description?: string };\n /** How the customer may pay. A service offers at least one of these. */\n options?: { online?: boolean; inPerson?: boolean; deposit?: boolean; pricingPlan?: boolean };\n rateLabel?: { amount?: string; currency?: string };\n /** @deprecated Legacy flat payment shape. */\n price?: number;\n /** @deprecated Legacy flat payment shape. */\n currency?: string;\n}"
|
|
9167
9461
|
},
|
|
9168
9462
|
{
|
|
9169
9463
|
"name": "WixService",
|
|
9170
9464
|
"kind": "interface",
|
|
9171
9465
|
"jsdoc": "",
|
|
9172
|
-
"decl": "export interface WixService {\n id: string;\n /** Optimistic-concurrency token — required by every v2 write (updateService reads it if omitted). */\n revision?: string;\n name?: string;\n description?: string;\n /** Session length in minutes. */\n duration?: number;\n /** Raw Bookings v2 response shape. */\n payment?: WixServicePayment;\n schedule?: { availabilityConstraints?: { sessionDurations?: number[]
|
|
9466
|
+
"decl": "export interface WixService {\n id: string;\n /** Optimistic-concurrency token — required by every v2 write (updateService reads it if omitted). */\n revision?: string;\n name?: string;\n description?: string;\n /** \"APPOINTMENT\" | \"CLASS\" | \"COURSE\". */\n type?: string;\n tagLine?: string;\n defaultCapacity?: number;\n media?: WixServiceMedia;\n /** Session length in minutes. */\n duration?: number;\n /** Raw Bookings v2 response shape. */\n payment?: WixServicePayment;\n onlineBooking?: { enabled?: boolean; requireManualApproval?: boolean; allowMultipleRequests?: boolean };\n conferencing?: { enabled?: boolean };\n locations?: WixServiceLocation[];\n bookingPolicy?: WixServiceBookingPolicy;\n schedule?: {\n id?: string;\n firstSessionStart?: string;\n lastSessionEnd?: string;\n availabilityConstraints?: { durations?: Array<{ minutes?: number }>; sessionDurations?: number[]; durationRange?: WixServiceDurationRange };\n };\n /** Returned only when the request asks for `STAFF_MEMBER_DETAILS` (see `getService`). */\n staffMemberDetails?: WixServiceStaffMemberDetails;\n urls?: WixServiceUrls;\n /** @deprecated Compatibility projection populated by `decodeService`. */\n price?: number;\n /** @deprecated Legacy v1 compatibility field. */\n category?: string;\n}"
|
|
9173
9467
|
},
|
|
9174
9468
|
{
|
|
9175
9469
|
"name": "decodeService",
|
|
@@ -9248,9 +9542,8 @@
|
|
|
9248
9542
|
{
|
|
9249
9543
|
"name": "getService",
|
|
9250
9544
|
"kind": "function",
|
|
9251
|
-
"jsdoc": "/** Fetch a single service by id — GET /bookings/v2/services/{id}. Visitor-readable\n * (public GA route, not the owner `_api/` gateway). The detail/edit-prefill source. */",
|
|
9252
|
-
"decl": "export async function getService(serviceId: string): Promise<WixGetServiceResponse>;"
|
|
9253
|
-
"http": "GET /bookings/v2/services/{…}"
|
|
9545
|
+
"jsdoc": "/** Fetch a single service by id — GET /bookings/v2/services/{id}. Visitor-readable\n * (public GA route, not the owner `_api/` gateway). The detail/edit-prefill source.\n * `options.conditionalFields` asks for fields Wix returns only on request\n * (\"STAFF_MEMBER_DETAILS\", \"DISCOUNT_INFO_DETAILS\"), each sent as a repeated\n * `conditionalFields` query parameter. Without `options` the request is the one this\n * function always sent. */",
|
|
9546
|
+
"decl": "export async function getService(serviceId: string, options?: WixGetServiceOptions): Promise<WixGetServiceResponse>;"
|
|
9254
9547
|
},
|
|
9255
9548
|
{
|
|
9256
9549
|
"name": "WixServiceWrite",
|
|
@@ -9366,6 +9659,54 @@
|
|
|
9366
9659
|
"decl": "export function cancelBookingAsMember(bookingId: string, revision: string, notify = true): Promise<WixUpdateBookingResponse>;",
|
|
9367
9660
|
"http": "POST /bookings/v2/bookings/{…}/cancel"
|
|
9368
9661
|
},
|
|
9662
|
+
{
|
|
9663
|
+
"name": "WixWaitlistContact",
|
|
9664
|
+
"kind": "interface",
|
|
9665
|
+
"jsdoc": "",
|
|
9666
|
+
"decl": "export interface WixWaitlistContact {\n email: string;\n firstName?: string;\n lastName?: string;\n}"
|
|
9667
|
+
},
|
|
9668
|
+
{
|
|
9669
|
+
"name": "WixWaitlistRegistration",
|
|
9670
|
+
"kind": "interface",
|
|
9671
|
+
"jsdoc": "",
|
|
9672
|
+
"decl": "export interface WixWaitlistRegistration {\n id?: string;\n bookingId?: string;\n waitingResource?: string;\n status?: string;\n availableActions?: { leave?: boolean; enroll?: boolean };\n}"
|
|
9673
|
+
},
|
|
9674
|
+
{
|
|
9675
|
+
"name": "WixWaitlistEntry",
|
|
9676
|
+
"kind": "interface",
|
|
9677
|
+
"jsdoc": "",
|
|
9678
|
+
"decl": "export interface WixWaitlistEntry {\n /** The waitlisted session id. */\n waitingResource?: string;\n registrations?: WixWaitlistRegistration[];\n}"
|
|
9679
|
+
},
|
|
9680
|
+
{
|
|
9681
|
+
"name": "WixRegisterToWaitlistResponse",
|
|
9682
|
+
"kind": "interface",
|
|
9683
|
+
"jsdoc": "",
|
|
9684
|
+
"decl": "export interface WixRegisterToWaitlistResponse {\n registrationId?: string;\n booking?: { id?: string; status?: string };\n}"
|
|
9685
|
+
},
|
|
9686
|
+
{
|
|
9687
|
+
"name": "registerToWaitlist",
|
|
9688
|
+
"kind": "function",
|
|
9689
|
+
"jsdoc": "/** Register the signed-in member to a full session's waitlist —\n * POST /bookings/v1/waitlist/register. `sessionId` is the availability slot's\n * `sessionId`. Wix answers with an error when the session has no waitlist or it is\n * full, so offer this only while the entry reports `waitingList.openSpots > 0`.\n * @scope member — requires a signed-in site member; `contact.email` is theirs. Only name and\n * email are sent, so a booking form with other required fields can refuse it. */",
|
|
9690
|
+
"decl": "export function registerToWaitlist(sessionId: string, contact: WixWaitlistContact): Promise<WixRegisterToWaitlistResponse>;",
|
|
9691
|
+
"http": "POST /bookings/v1/waitlist/register",
|
|
9692
|
+
"scope": "member"
|
|
9693
|
+
},
|
|
9694
|
+
{
|
|
9695
|
+
"name": "listWaitlists",
|
|
9696
|
+
"kind": "function",
|
|
9697
|
+
"jsdoc": "/** The waitlists of the given sessions — GET /bookings/v1/waitlist/list (public data).\n * Each registration carries its `bookingId`, which is how a member's own place is found.\n * @scope visitor — an anonymous visitor session is enough. */",
|
|
9698
|
+
"decl": "export function listWaitlists(sessionIds: string[]): Promise<{ list?: WixWaitlistEntry[] }>;",
|
|
9699
|
+
"http": "GET /bookings/v1/waitlist/list",
|
|
9700
|
+
"scope": "visitor"
|
|
9701
|
+
},
|
|
9702
|
+
{
|
|
9703
|
+
"name": "leaveWaitlist",
|
|
9704
|
+
"kind": "function",
|
|
9705
|
+
"jsdoc": "/** Leave a waitlist — POST /bookings/v1/waitlist/leave. Wix also cancels the pending\n * booking the registration created, and offers the place to the next registrant.\n * @scope member — requires the signed-in member who registered; `registrationId` comes from\n * `listWaitlists`. */",
|
|
9706
|
+
"decl": "export function leaveWaitlist(registrationId: string, sessionId: string): Promise<{ registrationId?: string; waitingResource?: string }>;",
|
|
9707
|
+
"http": "POST /bookings/v1/waitlist/leave",
|
|
9708
|
+
"scope": "member"
|
|
9709
|
+
},
|
|
9369
9710
|
{
|
|
9370
9711
|
"name": "isBookingPolicyViolation",
|
|
9371
9712
|
"kind": "function",
|
|
@@ -9394,8 +9735,8 @@
|
|
|
9394
9735
|
{
|
|
9395
9736
|
"name": "WixAvailabilityEntry",
|
|
9396
9737
|
"kind": "interface",
|
|
9397
|
-
"jsdoc": "",
|
|
9398
|
-
"decl": "export interface WixAvailabilityEntry {
|
|
9738
|
+
"jsdoc": "/** Raw v1 availability fields, including capacity for a class or course session. */",
|
|
9739
|
+
"decl": "export interface WixAvailabilityEntry {\n slot?: WixBookingSlotFull;\n bookable?: boolean;\n totalSpots?: number;\n openSpots?: number;\n waitingList?: { totalSpots?: number; openSpots?: number };\n}"
|
|
9399
9740
|
},
|
|
9400
9741
|
{
|
|
9401
9742
|
"name": "WixQueryAvailabilityResponse",
|
|
@@ -9460,6 +9801,14 @@
|
|
|
9460
9801
|
"decl": "export function bookSlot(\n slot: WixBookingSlotFull,\n firstName: string,\n lastName: string,\n email: string,\n options?: WixBookSlotOptions,\n): Promise<WixCreateBookingResponse>;",
|
|
9461
9802
|
"http": "POST /bookings/v2/bookings"
|
|
9462
9803
|
},
|
|
9804
|
+
{
|
|
9805
|
+
"name": "bookSchedule",
|
|
9806
|
+
"kind": "function",
|
|
9807
|
+
"jsdoc": "/** Book a course as a whole — POST /bookings/v2/bookings with `bookedEntity.schedule.scheduleId`.\n * A course is a schedule, not one of its dated slots, so the customer joins every session.\n * `scheduleId` is the course service's `schedule.id`; `email` is required (the call throws\n * before any request without it). The booking comes back CREATED, which is NOT proof of a\n * reserved place: on a live free test course every session's open count was unchanged after\n * it. Pay for it through a Wix eCommerce checkout exactly as `bookSlot`'s paid chain does, and\n * reuse that same booking if the checkout fails rather than booking again. Check capacity\n * across every upcoming session first; a refusal comes back as an HTTP error.\n * @scope visitor — a Wix Headless anonymous visitor session returned CREATED (verified live\n * 2026-10-29); the Branded Lite time screen calls it for a signed-in member. */",
|
|
9808
|
+
"decl": "export function bookSchedule(\n scheduleId: string,\n firstName: string,\n lastName: string,\n email: string,\n options?: WixBookSlotOptions,\n): Promise<WixCreateBookingResponse>;",
|
|
9809
|
+
"http": "POST /bookings/v2/bookings",
|
|
9810
|
+
"scope": "visitor"
|
|
9811
|
+
},
|
|
9463
9812
|
{
|
|
9464
9813
|
"name": "WixBookingAdditionalField",
|
|
9465
9814
|
"kind": "interface",
|
|
@@ -15841,6 +16190,30 @@
|
|
|
15841
16190
|
"decl": "export async function getCurrentCart(): Promise<WixCartDetail>;",
|
|
15842
16191
|
"http": "GET /ecom/v1/carts/current"
|
|
15843
16192
|
},
|
|
16193
|
+
{
|
|
16194
|
+
"name": "addCouponToCurrentCart",
|
|
16195
|
+
"kind": "function",
|
|
16196
|
+
"jsdoc": "/** Add a coupon to the visitor/member's current cart — POST\n * /ecom/v2/carts/current/add-coupon. Wix validates it against the current cart.\n * @scope visitor — uses the active shopper's cart; Wix rejects an invalid coupon. */",
|
|
16197
|
+
"decl": "export function addCouponToCurrentCart(code: string): Promise<{ cart?: WixCartDetail }>;",
|
|
16198
|
+
"http": "POST /ecom/v2/carts/current/add-coupon",
|
|
16199
|
+
"scope": "visitor"
|
|
16200
|
+
},
|
|
16201
|
+
{
|
|
16202
|
+
"name": "removeCouponFromCurrentCart",
|
|
16203
|
+
"kind": "function",
|
|
16204
|
+
"jsdoc": "/** Remove a coupon from the current cart — POST /ecom/v2/carts/current/remove-coupon.\n * @scope visitor — uses the active shopper's cart; a missing coupon ID is rejected. */",
|
|
16205
|
+
"decl": "export function removeCouponFromCurrentCart(couponId: string): Promise<{ cart?: WixCartDetail }>;",
|
|
16206
|
+
"http": "POST /ecom/v2/carts/current/remove-coupon",
|
|
16207
|
+
"scope": "visitor"
|
|
16208
|
+
},
|
|
16209
|
+
{
|
|
16210
|
+
"name": "calculateCurrentCart",
|
|
16211
|
+
"kind": "function",
|
|
16212
|
+
"jsdoc": "/** Recalculate the current cart after a coupon change.\n * @scope visitor — uses the active shopper's cart and returns its updated totals. */",
|
|
16213
|
+
"decl": "export function calculateCurrentCart(): Promise<{ cart?: WixCartDetail }>;",
|
|
16214
|
+
"http": "POST /ecom/v2/carts/current/calculate",
|
|
16215
|
+
"scope": "visitor"
|
|
16216
|
+
},
|
|
15844
16217
|
{
|
|
15845
16218
|
"name": "WixRemoveLineItemsResponse",
|
|
15846
16219
|
"kind": "interface",
|
|
@@ -16141,6 +16514,127 @@
|
|
|
16141
16514
|
"kind": "function",
|
|
16142
16515
|
"jsdoc": "/** Make a saved payment method the member's primary one. The service declares this\n * as a GET (`@wix/auto_sdk_payments_saved-payment-methods` `markSavedPaymentMethodPrimary`). */",
|
|
16143
16516
|
"decl": "export function markSavedPaymentMethodPrimary(savedPaymentMethodId: string): Promise<Record<string, never>>;"
|
|
16517
|
+
},
|
|
16518
|
+
{
|
|
16519
|
+
"name": "WixCartV2Money",
|
|
16520
|
+
"kind": "interface",
|
|
16521
|
+
"jsdoc": "/** A Cart V2 money value — a decimal string, never a formatted one. */",
|
|
16522
|
+
"decl": "export interface WixCartV2Money {\n amount?: string;\n convertedAmount?: string;\n}"
|
|
16523
|
+
},
|
|
16524
|
+
{
|
|
16525
|
+
"name": "WixCartV2Address",
|
|
16526
|
+
"kind": "interface",
|
|
16527
|
+
"jsdoc": "/** The address shape Cart V2 takes and returns. `subdivision` is ISO 3166-2 (`US-CA`). */",
|
|
16528
|
+
"decl": "export interface WixCartV2Address {\n country?: string;\n subdivision?: string;\n city?: string;\n postalCode?: string;\n addressLine?: string;\n addressLine2?: string;\n formattedAddress?: string;\n}"
|
|
16529
|
+
},
|
|
16530
|
+
{
|
|
16531
|
+
"name": "WixCartV2LineItem",
|
|
16532
|
+
"kind": "interface",
|
|
16533
|
+
"jsdoc": "/** One Cart V2 line. The catalog reference is under `source` (not top-level, as in V1),\n * the image under `attributes`, and the name under `name` (not `productName`). */",
|
|
16534
|
+
"decl": "export interface WixCartV2LineItem {\n id?: string;\n name?: { original?: string; translated?: string };\n quantityInfo?: { requestedQuantity?: number; confirmedQuantity?: number; availableQuantity?: number };\n pricing?: { unitPrice?: WixCartV2Money; totalPrice?: WixCartV2Money };\n source?: { catalogReference?: WixCatalogReference; rootCatalogItemId?: string };\n attributes?: { image?: { url?: string } };\n /** `IN_STOCK` | `PARTIALLY_IN_STOCK` | `OUT_OF_STOCK` | `REMOVED_FROM_CATALOG`. */\n status?: string;\n}"
|
|
16535
|
+
},
|
|
16536
|
+
{
|
|
16537
|
+
"name": "WixCartV2DeliveryMethod",
|
|
16538
|
+
"kind": "interface",
|
|
16539
|
+
"jsdoc": "",
|
|
16540
|
+
"decl": "export interface WixCartV2DeliveryMethod {\n /** `PICKUP|ASAP`, `DELIVERY|ASAP`, or `<TYPE>|<startEpochMs>|<endEpochMs>` for Restaurants. */\n code?: string;\n appId?: string;\n title?: { original?: string; translated?: string };\n pickup?: boolean;\n}"
|
|
16541
|
+
},
|
|
16542
|
+
{
|
|
16543
|
+
"name": "WixCartV2",
|
|
16544
|
+
"kind": "interface",
|
|
16545
|
+
"jsdoc": "",
|
|
16546
|
+
"decl": "export interface WixCartV2 {\n id?: string;\n revision?: string;\n lineItems?: WixCartV2LineItem[];\n subtotal?: WixCartV2Money;\n deliveryInfo?: { address?: WixCartV2Address; method?: WixCartV2DeliveryMethod };\n businessInfo?: { currencyCode?: string; languageCode?: string };\n customerInfo?: { currencyCode?: string };\n orderPlaced?: boolean;\n}"
|
|
16547
|
+
},
|
|
16548
|
+
{
|
|
16549
|
+
"name": "WixCartV2Violation",
|
|
16550
|
+
"kind": "interface",
|
|
16551
|
+
"jsdoc": "",
|
|
16552
|
+
"decl": "export interface WixCartV2Violation {\n /** `ERROR` | `WARNING`. */\n severity?: string;\n scope?: string;\n code?: string;\n description?: string;\n}"
|
|
16553
|
+
},
|
|
16554
|
+
{
|
|
16555
|
+
"name": "WixCartV2Summary",
|
|
16556
|
+
"kind": "interface",
|
|
16557
|
+
"jsdoc": "",
|
|
16558
|
+
"decl": "export interface WixCartV2Summary {\n priceSummary?: {\n subtotal?: WixCartV2Money;\n discount?: WixCartV2Money;\n delivery?: WixCartV2Money;\n additionalFees?: WixCartV2Money;\n tax?: WixCartV2Money;\n total?: WixCartV2Money;\n };\n violations?: WixCartV2Violation[];\n}"
|
|
16559
|
+
},
|
|
16560
|
+
{
|
|
16561
|
+
"name": "WixCartV2Response",
|
|
16562
|
+
"kind": "interface",
|
|
16563
|
+
"jsdoc": "",
|
|
16564
|
+
"decl": "export interface WixCartV2Response { cart?: WixCartV2 }"
|
|
16565
|
+
},
|
|
16566
|
+
{
|
|
16567
|
+
"name": "WixEstimateCartV2Response",
|
|
16568
|
+
"kind": "interface",
|
|
16569
|
+
"jsdoc": "",
|
|
16570
|
+
"decl": "export interface WixEstimateCartV2Response { cart?: WixCartV2; summary?: WixCartV2Summary }"
|
|
16571
|
+
},
|
|
16572
|
+
{
|
|
16573
|
+
"name": "WixCatalogItemInput",
|
|
16574
|
+
"kind": "interface",
|
|
16575
|
+
"jsdoc": "/** One catalog item to add: what it is (`catalogReference`) and how many. */",
|
|
16576
|
+
"decl": "export interface WixCatalogItemInput {\n catalogReference: WixCatalogReference;\n quantity: number;\n}"
|
|
16577
|
+
},
|
|
16578
|
+
{
|
|
16579
|
+
"name": "WixCartV2QuantityUpdate",
|
|
16580
|
+
"kind": "interface",
|
|
16581
|
+
"jsdoc": "/** A quantity change for one existing line. */",
|
|
16582
|
+
"decl": "export interface WixCartV2QuantityUpdate {\n lineItemId: string;\n quantity: number;\n}"
|
|
16583
|
+
},
|
|
16584
|
+
{
|
|
16585
|
+
"name": "ecomApplicationErrorCode",
|
|
16586
|
+
"kind": "function",
|
|
16587
|
+
"jsdoc": "/** The Wix application error code a rejection carries (`DELIVERY_METHOD_NOT_FOUND`, …), or \"\".\n * Read the same way as the empty-cart check: structurally, from the native `[CODE]` prefix,\n * or from a cut web-bridge body in its canonical shape — never from prose. */",
|
|
16588
|
+
"decl": "export function ecomApplicationErrorCode(error: unknown): string;"
|
|
16589
|
+
},
|
|
16590
|
+
{
|
|
16591
|
+
"name": "getCurrentCartV2",
|
|
16592
|
+
"kind": "function",
|
|
16593
|
+
"jsdoc": "/** Read the current cart — GET /ecom/v2/carts/current. No cart yet is a successful read of an\n * empty one: Wix answers 200 `{}` (or 404 `CURRENT_CART_NOT_FOUND`), resolved as `{ lineItems: [] }`.\n * @scope visitor — the cart belongs to the session (visitor or member) that calls it. */",
|
|
16594
|
+
"decl": "export async function getCurrentCartV2(): Promise<WixCartV2>;",
|
|
16595
|
+
"scope": "visitor"
|
|
16596
|
+
},
|
|
16597
|
+
{
|
|
16598
|
+
"name": "addLineItemsToCurrentCartV2",
|
|
16599
|
+
"kind": "function",
|
|
16600
|
+
"jsdoc": "/** Add catalog items to the current cart, creating it when there is none — POST\n * /ecom/v2/carts/current/add-line-items `{ catalogItems }`. Adding an item already in the cart\n * raises that line's quantity. Wix can drop an item it refuses and still answer 200, so read\n * the returned cart for the line (and its `status`) rather than trusting the status code.\n * @scope visitor — the cart belongs to the session (visitor or member) that calls it. */",
|
|
16601
|
+
"decl": "export function addLineItemsToCurrentCartV2(catalogItems: WixCatalogItemInput[]): Promise<WixCartV2Response>;",
|
|
16602
|
+
"scope": "visitor"
|
|
16603
|
+
},
|
|
16604
|
+
{
|
|
16605
|
+
"name": "updateLineItemsInCurrentCartV2",
|
|
16606
|
+
"kind": "function",
|
|
16607
|
+
"jsdoc": "/** Set line quantities — POST /ecom/v2/carts/current/update-line-items\n * `{ lineItems: [{ lineItemId, quantity: { newQuantity } }] }`.\n * @scope visitor — the cart belongs to the session (visitor or member) that calls it. */",
|
|
16608
|
+
"decl": "export function updateLineItemsInCurrentCartV2(updates: WixCartV2QuantityUpdate[]): Promise<WixCartV2Response>;",
|
|
16609
|
+
"scope": "visitor"
|
|
16610
|
+
},
|
|
16611
|
+
{
|
|
16612
|
+
"name": "removeLineItemsFromCurrentCartV2",
|
|
16613
|
+
"kind": "function",
|
|
16614
|
+
"jsdoc": "/** Remove lines — POST /ecom/v2/carts/current/remove-line-items `{ lineItemIds }`.\n * @scope visitor — the cart belongs to the session (visitor or member) that calls it. */",
|
|
16615
|
+
"decl": "export function removeLineItemsFromCurrentCartV2(lineItemIds: string[]): Promise<WixCartV2Response>;",
|
|
16616
|
+
"scope": "visitor"
|
|
16617
|
+
},
|
|
16618
|
+
{
|
|
16619
|
+
"name": "updateCurrentCartV2DeliveryAddress",
|
|
16620
|
+
"kind": "function",
|
|
16621
|
+
"jsdoc": "/** Set the cart's delivery address — PATCH /ecom/v2/carts/current\n * `{ cart: { deliveryInfo: { address } } }`. Restaurants needs one even for pickup (the\n * restaurant's country is enough there); without it setting a method answers 428\n * `DELIVERY_METHOD_MISSING_ADDRESS`.\n * @scope visitor — the cart belongs to the session (visitor or member) that calls it. */",
|
|
16622
|
+
"decl": "export function updateCurrentCartV2DeliveryAddress(address: WixCartV2Address): Promise<WixCartV2Response>;",
|
|
16623
|
+
"scope": "visitor"
|
|
16624
|
+
},
|
|
16625
|
+
{
|
|
16626
|
+
"name": "setDeliveryMethodForCurrentCartV2",
|
|
16627
|
+
"kind": "function",
|
|
16628
|
+
"jsdoc": "/** Choose how the cart is fulfilled — POST /ecom/v2/carts/current/set-delivery-method\n * `{ deliveryMethod: { code } }`. 400 `DELIVERY_METHOD_NOT_FOUND` means no method of that code\n * serves the cart's address (for Restaurants delivery: the address is outside every area).\n * @scope visitor — the cart belongs to the session (visitor or member) that calls it. */",
|
|
16629
|
+
"decl": "export function setDeliveryMethodForCurrentCartV2(code: string, appId?: string): Promise<WixCartV2Response>;",
|
|
16630
|
+
"scope": "visitor"
|
|
16631
|
+
},
|
|
16632
|
+
{
|
|
16633
|
+
"name": "estimateCurrentCartV2",
|
|
16634
|
+
"kind": "function",
|
|
16635
|
+
"jsdoc": "/** Totals and blocking violations for the current cart — POST /ecom/v2/carts/current/estimate,\n * always with `calculateDelivery` and `calculateTax` (a plain estimate reports a valid method as\n * no longer available). No cart yet → `{ cart: { lineItems: [] } }`, not a throw.\n * @scope visitor — the cart belongs to the session (visitor or member) that calls it. */",
|
|
16636
|
+
"decl": "export async function estimateCurrentCartV2(): Promise<WixEstimateCartV2Response>;",
|
|
16637
|
+
"scope": "visitor"
|
|
16144
16638
|
}
|
|
16145
16639
|
]
|
|
16146
16640
|
},
|
|
@@ -17545,8 +18039,8 @@
|
|
|
17545
18039
|
{
|
|
17546
18040
|
"name": "WixEventFieldset",
|
|
17547
18041
|
"kind": "type",
|
|
17548
|
-
"jsdoc": "/** Events v3 response fieldsets (`RequestedFields`). A bare read returns the base fieldset;\n * each value adds fields: `DETAILS` → `shortDescription`, `mainImage`, `calendarUrls`;\n * `TEXTS` → the Ricos `description`; `REGISTRATION` → `registration`; `URLS` → `eventPageUrl
|
|
17549
|
-
"decl": "export type WixEventFieldset = \"DETAILS\" | \"TEXTS\" | \"REGISTRATION\" | \"URLS\";"
|
|
18042
|
+
"jsdoc": "/** Events v3 response fieldsets (`RequestedFields`). A bare read returns the base fieldset;\n * each value adds fields: `DETAILS` → `shortDescription`, `mainImage`, `calendarUrls`;\n * `TEXTS` → the Ricos `description`; `REGISTRATION` → `registration`; `URLS` → `eventPageUrl`;\n * `FORM` → `form`, the published registration controls and inputs. */",
|
|
18043
|
+
"decl": "export type WixEventFieldset = \"DETAILS\" | \"TEXTS\" | \"REGISTRATION\" | \"URLS\" | \"FORM\";"
|
|
17550
18044
|
},
|
|
17551
18045
|
{
|
|
17552
18046
|
"name": "WixEventRichContent",
|
|
@@ -17653,7 +18147,7 @@
|
|
|
17653
18147
|
"name": "WixAvailableTicket",
|
|
17654
18148
|
"kind": "interface",
|
|
17655
18149
|
"jsdoc": "",
|
|
17656
|
-
"decl": "export interface WixAvailableTicket {\n id?: string;\n name?: string;\n description?: string;\n price?: WixTicketPrice;\n free?: boolean;\n limitPerCheckout?: number;\n orderIndex?: number;\n saleStatus?: string;\n}"
|
|
18150
|
+
"decl": "export interface WixAvailableTicket {\n id?: string;\n eventId?: string;\n name?: string;\n description?: string;\n price?: WixTicketPrice;\n free?: boolean;\n limitPerCheckout?: number;\n orderIndex?: number;\n saleStatus?: string;\n state?: string[];\n pricing?: { pricingType?: string; fixedPrice?: WixTicketPrice };\n dashboard?: { hidden?: boolean };\n}"
|
|
17657
18151
|
},
|
|
17658
18152
|
{
|
|
17659
18153
|
"name": "WixQueryAvailableTicketsResponse",
|
|
@@ -17661,6 +18155,14 @@
|
|
|
17661
18155
|
"jsdoc": "",
|
|
17662
18156
|
"decl": "export interface WixQueryAvailableTicketsResponse {\n definitions?: WixAvailableTicket[];\n}"
|
|
17663
18157
|
},
|
|
18158
|
+
{
|
|
18159
|
+
"name": "getTicketDefinition",
|
|
18160
|
+
"kind": "function",
|
|
18161
|
+
"jsdoc": "/** Read management pricing/visibility for a required ticket-definition ID; absence is not a free offer.\n * Authorization errors propagate and must block checkout.\n * @scope owner — Wix documents app/user identity with Manage Ticket Definitions permission.\n * Member checkout uses queryAvailableTickets; LiftGear member reads returned 403 here.\n * @see https://dev.wix.com/docs/api-reference/business-solutions/events/event-management/ticket-definitions-v3/get-ticket-definition\n */",
|
|
18162
|
+
"decl": "export function getTicketDefinition(id: string): Promise<{ ticketDefinition?: { id?: string; eventId?: string; hidden?: boolean; saleStatus?: string; pricingMethod?: { pricingType?: string; fixedPrice?: { value?: string; currency?: string } } } }>;",
|
|
18163
|
+
"http": "GET /events/v3/ticket-definitions/{…}",
|
|
18164
|
+
"scope": "owner"
|
|
18165
|
+
},
|
|
17664
18166
|
{
|
|
17665
18167
|
"name": "WixTicketQuantity",
|
|
17666
18168
|
"kind": "interface",
|
|
@@ -23842,6 +24344,72 @@
|
|
|
23842
24344
|
"jsdoc": "/** POST /restaurants/menus/v1/sections/query — menu sections (perm\n * RESTAURANTS.SECTION_READ; visitor-readable on sites with the Menus app). */",
|
|
23843
24345
|
"decl": "export function querySections(\n req: WixSectionQueryRequest = {} as WixSectionQueryRequest,\n): Promise<WixQuerySectionsResponse>;",
|
|
23844
24346
|
"http": "POST /restaurants/menus/v1/sections/query"
|
|
24347
|
+
},
|
|
24348
|
+
{
|
|
24349
|
+
"name": "WixRestaurantsAddress",
|
|
24350
|
+
"kind": "interface",
|
|
24351
|
+
"jsdoc": "/** An address as the Restaurants services return it. `subdivision` is ISO 3166-2 (`US-CA`). */",
|
|
24352
|
+
"decl": "export interface WixRestaurantsAddress {\n country?: string;\n subdivision?: string;\n city?: string;\n postalCode?: string;\n addressLine?: string;\n formattedAddress?: string;\n}"
|
|
24353
|
+
},
|
|
24354
|
+
{
|
|
24355
|
+
"name": "WixOperation",
|
|
24356
|
+
"kind": "interface",
|
|
24357
|
+
"jsdoc": "/** A Restaurants ordering operation (a \"ordering page\": hours, fulfillment methods, status). */",
|
|
24358
|
+
"decl": "export interface WixOperation {\n id: string;\n name?: string;\n /** The site's default operation. */\n default?: boolean;\n /** `ENABLED` takes orders; `DISABLED` and `PAUSED_UNTIL` (see `pausedUntilOptions.time`) do not. */\n onlineOrderingStatus?: string;\n pausedUntilOptions?: { time?: string };\n /** `PICKUP` | `DELIVERY`. */\n defaultFulfillmentType?: string;\n /** The fulfillment methods this operation offers — filter `listFulfillmentMethods` by these. */\n fulfillmentIds?: string[];\n businessLocationId?: string;\n}"
|
|
24359
|
+
},
|
|
24360
|
+
{
|
|
24361
|
+
"name": "WixListOperationsResponse",
|
|
24362
|
+
"kind": "interface",
|
|
24363
|
+
"jsdoc": "",
|
|
24364
|
+
"decl": "export interface WixListOperationsResponse {\n operations: WixOperation[];\n}"
|
|
24365
|
+
},
|
|
24366
|
+
{
|
|
24367
|
+
"name": "listOperations",
|
|
24368
|
+
"kind": "function",
|
|
24369
|
+
"jsdoc": "/** GET /restaurants-operations/v1/operations — every ordering operation on the site.\n * @scope visitor — an anonymous visitor session is enough. */",
|
|
24370
|
+
"decl": "export function listOperations(): Promise<WixListOperationsResponse>;",
|
|
24371
|
+
"http": "GET /restaurants-operations/v1/operations",
|
|
24372
|
+
"scope": "visitor"
|
|
24373
|
+
},
|
|
24374
|
+
{
|
|
24375
|
+
"name": "WixFulfillmentMethod",
|
|
24376
|
+
"kind": "interface",
|
|
24377
|
+
"jsdoc": "/** A pickup or delivery method. `fee` and `minOrderPrice` are decimal strings; a missing\n * `fee` is 0. Only `enabled` methods may be offered. */",
|
|
24378
|
+
"decl": "export interface WixFulfillmentMethod {\n id: string;\n name?: string;\n /** `PICKUP` | `DELIVERY`. */\n type?: string;\n enabled?: boolean;\n fee?: string;\n minOrderPrice?: string;\n pickupOptions?: { address?: WixRestaurantsAddress; instructions?: string };\n deliveryOptions?: { deliveryTimeInMinutes?: number; freeDeliveryThreshold?: string };\n businessLocationId?: string;\n}"
|
|
24379
|
+
},
|
|
24380
|
+
{
|
|
24381
|
+
"name": "WixListFulfillmentMethodsResponse",
|
|
24382
|
+
"kind": "interface",
|
|
24383
|
+
"jsdoc": "",
|
|
24384
|
+
"decl": "export interface WixListFulfillmentMethodsResponse {\n fulfillmentMethods: WixFulfillmentMethod[];\n pagingMetadata?: { count?: number; hasNext?: boolean; cursors?: { next?: string } };\n}"
|
|
24385
|
+
},
|
|
24386
|
+
{
|
|
24387
|
+
"name": "listFulfillmentMethods",
|
|
24388
|
+
"kind": "function",
|
|
24389
|
+
"jsdoc": "/** GET /fulfillment-methods/v1/fulfillment-methods — every pickup/delivery method on the site.\n * There is no operation filter: keep the ids in the operation's `fulfillmentIds`.\n * @scope visitor — an anonymous visitor session is enough. */",
|
|
24390
|
+
"decl": "export function listFulfillmentMethods(\n opts: { limit?: number; cursor?: string } = {},\n): Promise<WixListFulfillmentMethodsResponse>;",
|
|
24391
|
+
"http": "GET /fulfillment-methods/v1/fulfillment-methods${query.length ?",
|
|
24392
|
+
"scope": "visitor"
|
|
24393
|
+
},
|
|
24394
|
+
{
|
|
24395
|
+
"name": "WixFulfillmentTimeSlot",
|
|
24396
|
+
"kind": "interface",
|
|
24397
|
+
"jsdoc": "/** The earliest orderable slot for one fulfillment type. An `ASAP` slot is ordered with the\n * code `<TYPE>|ASAP`; a `PREORDER` slot with `<TYPE>|<startEpochMs>|<endEpochMs>`. */",
|
|
24398
|
+
"decl": "export interface WixFulfillmentTimeSlot {\n /** Wix spells this field with one \"l\": `PICKUP` | `DELIVERY`. */\n fulfilmentType?: string;\n timeSlot?: { startTime?: string; endTime?: string; orderSchedulingType?: string };\n fulfillmentInfo?: Array<{ fee?: string; minOrderPrice?: string; maxTime?: number }>;\n}"
|
|
24399
|
+
},
|
|
24400
|
+
{
|
|
24401
|
+
"name": "WixFirstAvailableTimeSlotsResponse",
|
|
24402
|
+
"kind": "interface",
|
|
24403
|
+
"jsdoc": "",
|
|
24404
|
+
"decl": "export interface WixFirstAvailableTimeSlotsResponse {\n timeslotsPerFulfillmentType: WixFulfillmentTimeSlot[];\n}"
|
|
24405
|
+
},
|
|
24406
|
+
{
|
|
24407
|
+
"name": "getFirstAvailableTimeSlotPerFulfillmentType",
|
|
24408
|
+
"kind": "function",
|
|
24409
|
+
"jsdoc": "/** GET /restaurants-operations/v1/operations/{operationId}/first-available-time-slot-per-fulfillment-type\n * — the earliest orderable slot per type. Only orderable slots come back, so a type that is\n * missing cannot be ordered now. Delivery is judged against `deliveryAddress` when given.\n * @scope visitor — an anonymous visitor session is enough. */",
|
|
24410
|
+
"decl": "export function getFirstAvailableTimeSlotPerFulfillmentType(\n operationId: string,\n deliveryAddress?: WixRestaurantsAddress,\n): Promise<WixFirstAvailableTimeSlotsResponse>;",
|
|
24411
|
+
"http": "GET /restaurants-operations/v1/operations/{…}/first-available-time-slot-per-fulfillment-type${query.length ?",
|
|
24412
|
+
"scope": "visitor"
|
|
23845
24413
|
}
|
|
23846
24414
|
]
|
|
23847
24415
|
},
|
|
@@ -24700,7 +25268,7 @@
|
|
|
24700
25268
|
"name": "StoreProduct",
|
|
24701
25269
|
"kind": "interface",
|
|
24702
25270
|
"jsdoc": "",
|
|
24703
|
-
"decl": "export interface StoreProduct {\n id?: string;\n productType?: string;\n name?: string;\n slug?: string;\n description?: string;\n plainDescription?: string;\n /** Both gallery layouts: V1 `mainMedia`/`items`, V3 `main`/`itemsInfo.items`. */\n media?: {\n mainMedia?: WixMediaSlot;\n main?: WixMediaSlot;\n items?: WixMediaSlot[];\n itemsInfo?: { items?: WixMediaSlot[] };\n };\n price?: { formatted?: { price?: string }; price?: number; currency?: string };\n priceData?: { formatted?: { price?: string }; price?: number; currency?: string };\n currency?: string;\n actualPriceRange?: {\n minValue?: { amount?: string; formattedAmount?: string; currency?: string };\n maxValue?: { amount?: string; formattedAmount?: string; currency?: string };\n };\n /** Option groups, both spellings: V1 `productOptions`, V3 `options`. Declared\n * because the wire carries them on BOTH catalogs and this type denying them is\n * what let every template product screen drop the colour/size picker. Shapes\n * differ per catalog, so read them with `productOptions()` from ./options. */\n productOptions?: unknown[];\n options?: unknown[];\n /** V3 purchasable variants. The cart addresses a V3 option choice by `variantId`,\n * which `cartOptionsPayload()` resolves out of this. */\n variantsInfo?: { variants?: unknown[] };\n
|
|
25271
|
+
"decl": "export interface StoreProduct {\n id?: string;\n productType?: string;\n name?: string;\n slug?: string;\n description?: string;\n plainDescription?: string;\n /** Both gallery layouts: V1 `mainMedia`/`items`, V3 `main`/`itemsInfo.items`. */\n media?: {\n mainMedia?: WixMediaSlot;\n main?: WixMediaSlot;\n items?: WixMediaSlot[];\n itemsInfo?: { items?: WixMediaSlot[] };\n };\n price?: { formatted?: { price?: string }; price?: number; currency?: string };\n priceData?: { formatted?: { price?: string }; price?: number; currency?: string };\n currency?: string;\n actualPriceRange?: {\n minValue?: { amount?: string; formattedAmount?: string; currency?: string };\n maxValue?: { amount?: string; formattedAmount?: string; currency?: string };\n };\n /** Catalog V3 original price, when the actual price is discounted. */\n compareAtPriceRange?: {\n minValue?: { amount?: string; formattedAmount?: string; currency?: string };\n maxValue?: { amount?: string; formattedAmount?: string; currency?: string };\n };\n /** Option groups, both spellings: V1 `productOptions`, V3 `options`. Declared\n * because the wire carries them on BOTH catalogs and this type denying them is\n * what let every template product screen drop the colour/size picker. Shapes\n * differ per catalog, so read them with `productOptions()` from ./options. */\n productOptions?: unknown[];\n options?: unknown[];\n /** V3 purchasable variants. The cart addresses a V3 option choice by `variantId`,\n * which `cartOptionsPayload()` resolves out of this. */\n variantsInfo?: { variants?: unknown[] };\n /\n/* … */"
|
|
24704
25272
|
},
|
|
24705
25273
|
{
|
|
24706
25274
|
"name": "StoreProductsResponse",
|
|
@@ -24739,6 +25307,12 @@
|
|
|
24739
25307
|
"jsdoc": "/**\n * EVERY image on the product, sized, in wire order — the gallery a detail screen\n * pages through, not just the one tile `productImage` returns.\n *\n * It reads both catalog layouts (V1 `media.items`, V3 `media.itemsInfo.items`) and\n * falls back to the primary image when the product carries no gallery, so a caller\n * always gets a non-empty list for a product that has any image at all. Empty slots\n * and duplicates are dropped.\n *\n * Exported because the gallery union was being re-derived by hand in ~10 template\n * workers, each free to miss a layout — which is exactly how a V3 store silently\n * lost its thumbnails. Defaults to the LIST budget like `productImage`; pass\n * `WIX_DETAIL_IMAGE` for a full-bleed pager, or `null` for the stored originals.\n */",
|
|
24740
25308
|
"decl": "export function productGallery(p: StoreProduct, size: WixImageSize | null = WIX_LIST_IMAGE): string[];"
|
|
24741
25309
|
},
|
|
25310
|
+
{
|
|
25311
|
+
"name": "normalizeFormattedPrice",
|
|
25312
|
+
"kind": "function",
|
|
25313
|
+
"jsdoc": "/** Formats Wix-provided price text consistently for display. A recognized symbol after an\n * English-style number moves before the amount; locale-specific decimal and grouping formats\n * remain unchanged. */",
|
|
25314
|
+
"decl": "export function normalizeFormattedPrice(formatted: string): string;"
|
|
25315
|
+
},
|
|
24742
25316
|
{
|
|
24743
25317
|
"name": "plainText",
|
|
24744
25318
|
"kind": "function",
|
|
@@ -24864,7 +25438,7 @@
|
|
|
24864
25438
|
"name": "WixCollectionsMetadata",
|
|
24865
25439
|
"kind": "interface",
|
|
24866
25440
|
"jsdoc": "",
|
|
24867
|
-
"decl": "export interface WixCollectionsMetadata {\n items?: number;\n offset?: number;\n}"
|
|
25441
|
+
"decl": "export interface WixCollectionsMetadata {\n items?: number;\n count?: number;\n offset?: number;\n total?: number;\n}"
|
|
24868
25442
|
},
|
|
24869
25443
|
{
|
|
24870
25444
|
"name": "WixQueryCollectionsRequest",
|
|
@@ -24983,7 +25557,7 @@
|
|
|
24983
25557
|
"name": "queryStoreCategories",
|
|
24984
25558
|
"kind": "function",
|
|
24985
25559
|
"jsdoc": "/** V3 visitor read: list store categories (the V3 replacement for `queryCollections`).\n * POST /categories/v1/categories/query — `treeReference.appNamespace` is REQUIRED. */",
|
|
24986
|
-
"decl": "export function queryStoreCategories(limit = 50): Promise<StoreCategoriesResponse>;",
|
|
25560
|
+
"decl": "export function queryStoreCategories(limit = 50, cursor?: string): Promise<StoreCategoriesResponse>;",
|
|
24987
25561
|
"http": "POST /categories/v1/categories/query"
|
|
24988
25562
|
},
|
|
24989
25563
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/himalaya-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1534.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "himi — the Himalaya authoring CLI. Build a Tier-5 content package on your own machine, push it to the production serve as a draft, preview it on web + Himi Player, and read worker logs back — the remote dev loop. Wraps @himalaya/serve-cli for transport.",
|
|
6
6
|
"keywords": [
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"artifactId": "himalaya-cli"
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
|
-
"falconPackageHash": "
|
|
74
|
+
"falconPackageHash": "0e471b3c526362bd2c153795f7f76c01c66470a61b517bce8687d56f"
|
|
75
75
|
}
|