@riverbankcms/sdk 0.144.0 → 0.146.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/CHANGELOG.md +17 -0
- package/dist/{PreviewEditorSidebar-CQZNnFiM.mjs → PreviewEditorSidebar-kg2r2Fyi.mjs} +4 -4
- package/dist/{PreviewEditorUI-DCNxnmI0.mjs → PreviewEditorUI-sWMLp5dT.mjs} +3 -3
- package/dist/{PreviewQueryProvider-BCYICImX.mjs → PreviewQueryProvider-Cg51xq1w.mjs} +1 -1
- package/dist/{SdkPreviewModeRuntime-BJolUbr1.mjs → SdkPreviewModeRuntime-h2ti3Hch.mjs} +688 -519
- package/dist/{SiteChromeCustomizeContext-CKgEpoxi.mjs → SiteChromeCustomizeContext-DEACFH9m.mjs} +3381 -2017
- package/dist/_dts/ai/src/contracts/proposals.d.ts +5643 -66
- package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +513 -6
- package/dist/_dts/api/src/appointmentEndpointDefinitions.d.ts +49 -0
- package/dist/_dts/api/src/appointmentServiceCategoryEndpoints.d.ts +75 -0
- package/dist/_dts/api/src/appointmentServiceContracts.d.ts +80 -0
- package/dist/_dts/api/src/appointmentSetup.d.ts +8 -1
- package/dist/_dts/api/src/bookingConfig.d.ts +8 -1
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +10 -26
- package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
- package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
- package/dist/_dts/api/src/communications.d.ts +32 -24
- package/dist/_dts/api/src/contentRuntime.d.ts +3 -5
- package/dist/_dts/api/src/endpoints.d.ts +316 -134
- package/dist/_dts/api/src/event-visibility.d.ts +20 -0
- package/dist/_dts/api/src/eventManagementContracts.d.ts +56 -3
- package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +24 -0
- package/dist/_dts/api/src/eventPageWords.d.ts +19 -0
- package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +14 -0
- package/dist/_dts/api/src/index.d.ts +7 -1
- package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
- package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
- package/dist/_dts/api/src/launchReadiness.d.ts +22 -2
- package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
- package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
- package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +30 -11
- package/dist/_dts/api/src/occurrenceScheduling.d.ts +10 -0
- package/dist/_dts/api/src/onboarding/confirmationResend.d.ts +3 -0
- package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +44 -0
- package/dist/_dts/api/src/participantMessaging.d.ts +11 -1
- package/dist/_dts/api/src/publicBookingService.d.ts +35 -1
- package/dist/_dts/api/src/publicExperience/newsletterEndpoints.d.ts +13 -0
- package/dist/_dts/api/src/publicNewsletterEndpointDefinitions.d.ts +58 -0
- package/dist/_dts/api/src/schemas/admin-observability-logs.d.ts +3 -3
- package/dist/_dts/api/src/sdk-event-upsert.d.ts +40 -1
- package/dist/_dts/api/src/sdkContracts.d.ts +3 -42
- package/dist/_dts/api/src/sdkCourseBooking.d.ts +30 -0
- package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +76 -0
- package/dist/_dts/api/src/sdkEventLifecycle.d.ts +37 -0
- package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +18 -0
- package/dist/_dts/api/src/sdkPageDesign.d.ts +388 -0
- package/dist/_dts/api/src/sdkPageDesignEndpointDefinitions.d.ts +22 -0
- package/dist/_dts/api/src/sdkPullEventContracts.d.ts +46 -0
- package/dist/_dts/api/src/siteAddressEndpoints.d.ts +29 -0
- package/dist/_dts/api/src/siteManagementEndpointDefinitions.d.ts +49 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +4 -38
- package/dist/_dts/api/src/siteOnboarding.d.ts +75 -9
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
- package/dist/_dts/api/src/types.d.ts +8 -1
- package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
- package/dist/_dts/blocks/src/PageRenderer.d.ts +4 -4
- package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
- package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +24 -0
- package/dist/_dts/blocks/src/index.d.ts +3 -1
- package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +10 -0
- package/dist/_dts/blocks/src/pageRenderJoins.d.ts +68 -0
- package/dist/_dts/blocks/src/pageRenderPlan.d.ts +8 -27
- package/dist/_dts/blocks/src/pageRenderPreparation.d.ts +7 -4
- package/dist/_dts/blocks/src/pageRendererBoundaries.d.ts +40 -23
- package/dist/_dts/blocks/src/pageRendererContracts.d.ts +3 -1
- package/dist/_dts/blocks/src/server.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/appointment-services.d.ts +2 -0
- package/dist/_dts/blocks/src/system/blocks/events/eventSelectionFields.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/events/shared/calendarWindow.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +27 -5
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +14 -1
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +47 -47
- package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +29 -3
- package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessBookingFlow.d.ts +8 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/appointment-services.d.ts +22 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.headless.state.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.interactive.d.ts +57 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-categories.d.ts +29 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.service-choices.d.ts +13 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.state.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/nodes/booking-runtime-sources.d.ts +13 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +23 -7
- package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +36 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +46 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.submission.d.ts +20 -1
- package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/shared/components/CheckboxChoice.d.ts +18 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
- package/dist/_dts/content-editor/src/index.d.ts +1 -0
- package/dist/_dts/content-editor/src/primitives/previewEditableOutline.d.ts +2 -0
- package/dist/_dts/content-editor/src/ui/editorBlockEquality.d.ts +3 -0
- package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -3
- package/dist/_dts/content-model/src/content-types/schema.d.ts +1 -1
- package/dist/_dts/core/src/appointment-service-categories.d.ts +108 -0
- package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
- package/dist/_dts/core/src/editor-state.d.ts +2 -1
- package/dist/_dts/core/src/index.d.ts +2 -0
- package/dist/_dts/core/src/mailing-list-submission.d.ts +3 -1
- package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
- package/dist/_dts/core/src/public-profile.d.ts +12 -1
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +711 -242
- package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
- package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +13 -1
- package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +2 -2
- package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/loaders.d.ts +16 -1
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/types.d.ts +13 -0
- package/dist/_dts/editor-blocks/src/widgets/site-option-picker/utils.d.ts +29 -0
- package/dist/_dts/preview-next/src/client/blocks/BoundaryControl.d.ts +7 -2
- package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +1 -1
- package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +3 -3
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +1 -3
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +2 -2
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +2 -2
- package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -1
- package/dist/_dts/sdk/src/client/runtimeCacheKeys.d.ts +8 -0
- package/dist/_dts/sdk/src/client/types.d.ts +1 -1
- package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
- package/dist/_dts/sdk/src/contracts/page.d.ts +7 -2
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +5 -0
- package/dist/_dts/sdk/src/manifest/passes/pass1-fields.d.ts +2 -2
- package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +6 -8
- package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +4 -4
- package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -4
- package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +7 -2
- package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +5 -2
- package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +6 -1
- package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +2 -0
- package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +6 -2
- package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +5 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/surfaces/src/index.d.ts +10 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/inputs/checkable.d.ts +42 -0
- package/dist/_dts/theme-core/src/inputs/inputGroup.d.ts +19 -0
- package/dist/_dts/theme-core/src/layout/boundaryCss.d.ts +3 -0
- package/dist/_dts/theme-core/src/site-styles/compositionBudget.d.ts +8 -0
- package/dist/_dts/theme-core/src/site-styles/contentTemplateRuntimeCompiler.d.ts +3 -2
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +1 -3
- package/dist/_dts/theme-core/src/site-styles/generatedDesignPipeline.d.ts +3 -0
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +3 -0
- package/dist/_dts/theme-core/src/site-styles/joinTreatment.d.ts +132 -0
- package/dist/_dts/theme-core/src/site-styles/pageDesignEditorBoundaries.d.ts +31 -0
- package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +33 -29
- package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +4 -4
- package/dist/_dts/theme-core/src/site-styles/pageFlowPresets.d.ts +36 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +4 -10
- package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +17 -4
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +20 -74
- package/dist/_dts/theme-core/src/site-styles/sectionBoundaryComposition.d.ts +95 -0
- package/dist/_dts/theme-core/src/site-styles/sectionTransitions.d.ts +80 -518
- package/dist/_dts/theme-core/src/site-styles/siteStyleBlockPolicies.d.ts +9 -4
- package/dist/_dts/theme-core/src/site-styles/transitionCatalogue.d.ts +320 -0
- package/dist/_dts/theme-core/src/site-styles/types.d.ts +3 -18
- package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
- package/dist/client/{BookingConsentAgreement-DoAILrkN.mjs → BookingConsentAgreement-BQKL045f.mjs} +2 -2
- package/dist/client/CheckboxChoice--W2n6yKs.mjs +24 -0
- package/dist/client/{DiscountCodeDisclosure-X528hUTf.mjs → DiscountCodeDisclosure-CsOtjFY7.mjs} +1 -1
- package/dist/client/{EventCombined.client-DSBVwq5m.mjs → EventCombined.client-BdRjVbhH.mjs} +6 -6
- package/dist/client/{EventListing.client-DmFAX7Vb.mjs → EventListing.client-DBxC6xOU.mjs} +2 -2
- package/dist/client/{LeafletStaticMap-BAqXdfhq.mjs → LeafletStaticMap-mHEJKrTs.mjs} +1 -1
- package/dist/client/{ThemedButton-BwNFVwi4.mjs → ThemedButton-CE5KYT6z.mjs} +1 -1
- package/dist/client/{accordion-DRhMdkbd.mjs → accordion-BEQNSptH.mjs} +1 -1
- package/dist/client/{bookingForm-iJ_nCsNF.mjs → bookingForm-AMr-s5vw.mjs} +168 -95
- package/dist/client/bookings.mjs +239 -110
- package/dist/client/{carousel-D8zuffZr.mjs → carousel-Bbt_QgJy.mjs} +1 -1
- package/dist/client/{cart-DeMGJViN.mjs → cart-CnWi30zJ.mjs} +3 -3
- package/dist/client/{checkout-DXc06Km2.mjs → checkout-f3nkWgd4.mjs} +3 -3
- package/dist/client/client.mjs +3222 -1612
- package/dist/client/{context-CDLCfDep.mjs → context-Bc8T6pCe.mjs} +1 -1
- package/dist/client/{dates-ClFx7Epy.mjs → dates-DUsCEzLb.mjs} +2 -3
- package/dist/client/{eventCalendar-BaGpnOGN.mjs → eventCalendar-CKwgXui5.mjs} +9 -9
- package/dist/client/{eventCombined-ywONOx2m.mjs → eventCombined-CBAOSTGR.mjs} +4 -4
- package/dist/client/{eventDetails-B2LlOTYY.mjs → eventDetails-Dh-_WiBD.mjs} +4 -4
- package/dist/client/{eventListing-CMgxWpqP.mjs → eventListing-CA3frIH5.mjs} +4 -4
- package/dist/client/{eventRegistration-BarLDNHR.mjs → eventRegistration-BHtsgdcg.mjs} +21 -22
- package/dist/client/{form-BjqKaBJ7.mjs → form-C2h3YAcg.mjs} +135 -104
- package/dist/client/{headerSection-CP4XDwz1.mjs → headerSection-lwMuMTH9.mjs} +3 -3
- package/dist/client/hooks.mjs +1023 -148
- package/dist/client/{locationMap-C5gW-d-w.mjs → locationMap-DJ2bLODV.mjs} +3 -3
- package/dist/client/{newsletterForm-afXlVSA0.mjs → newsletterForm-8Pu5K32g.mjs} +225 -102
- package/dist/client/{pricing-Bl1CAl28.mjs → pricing-HHx3IgBz.mjs} +1 -1
- package/dist/client/{productDetail-CvQ3jWQe.mjs → productDetail-C_1odnAf.mjs} +3 -3
- package/dist/client/{productList-U874PGO7.mjs → productList-CtCv-Nmx.mjs} +3 -3
- package/dist/client/{propsDecoder-DPXtCZWP.mjs → propsDecoder-Dcgsncxb.mjs} +111 -55
- package/dist/client/rendering/client.mjs +1389 -722
- package/dist/client/rendering/islands.mjs +17 -17
- package/dist/client/rendering.mjs +3136 -1400
- package/dist/client/{routeIslandApiConfig-NGYiUWXu.mjs → routeIslandApiConfig-CWLP7wu3.mjs} +1 -1
- package/dist/client/{scrollToBlock-0-C3DVhK.mjs → scrollToBlock-BNgaEUpo.mjs} +1 -1
- package/dist/client/{shop-BXjXhM9P.mjs → shop-DQXrQ8kJ.mjs} +7 -7
- package/dist/client/{shop-commerce-BZ6UlWJ7.mjs → shop-commerce-B88zmWWo.mjs} +6 -6
- package/dist/client/{shop-commerce-store-DlSBXb3D.mjs → shop-commerce-store-DtSfkKuX.mjs} +1 -1
- package/dist/client/{shopShared-kkEOiLPA.mjs → shopShared-cuaONpkJ.mjs} +4 -4
- package/dist/client/{useEventFilters-zvnnE1ro.mjs → useEventFilters-Bukew6Gb.mjs} +6 -6
- package/dist/preview-next/before-render.mjs +500 -165
- package/dist/preview-next/client/runtime.mjs +4 -4
- package/dist/preview-next/editor-base.css +11 -0
- package/dist/preview-next/keepAlive.mjs +460 -165
- package/dist/preview-next/middleware.mjs +461 -165
- package/dist/{previewAuthStore-JA6-I_sL.mjs → previewAuthStore-h5IgbSp4.mjs} +485 -165
- package/dist/{sdk-runtime-DFJlQt3q.mjs → sdk-runtime-DTc1uIXn.mjs} +2 -2
- package/dist/{separator-o8GHb1xh.mjs → separator-BpHS1KZK.mjs} +1 -1
- package/dist/server/components.mjs +3088 -1307
- package/dist/server/config-validation.mjs +927 -109
- package/dist/server/config.mjs +927 -109
- package/dist/server/data.mjs +939 -110
- package/dist/server/index.mjs +513 -169
- package/dist/server/next.mjs +2874 -1195
- package/dist/server/page-converter.mjs +420 -79
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +3071 -1289
- package/dist/server/rendering.mjs +3169 -1350
- package/dist/server/routing.mjs +1085 -159
- package/dist/server/server.mjs +1042 -291
- package/dist/server/theme-bridge.mjs +1658 -137
- package/dist/server/theme.mjs +6 -4
- package/dist/styles/index.css +186 -65
- package/package.json +2 -1
|
@@ -432,4 +432,53 @@ export declare const APPOINTMENT_ENDPOINT_DEFINITIONS: {
|
|
|
432
432
|
responseKind: "json";
|
|
433
433
|
errors: ("auth:forbidden" | "validation:invalid_input" | "resource:not_found" | "resource:conflict" | "server:internal_error")[];
|
|
434
434
|
};
|
|
435
|
+
listGroupedAppointmentServices: {
|
|
436
|
+
path: "/sites/{siteId}/bookings/services/grouped";
|
|
437
|
+
method: "GET";
|
|
438
|
+
auth: "user";
|
|
439
|
+
responseKind: "json";
|
|
440
|
+
errors: "server:internal_error"[];
|
|
441
|
+
};
|
|
442
|
+
reorderAppointmentServices: {
|
|
443
|
+
path: "/sites/{siteId}/bookings/services/order";
|
|
444
|
+
method: "PUT";
|
|
445
|
+
auth: "user";
|
|
446
|
+
responseKind: "json";
|
|
447
|
+
errors: ("auth:forbidden" | "validation:invalid_input" | "resource:not_found" | "resource:conflict" | "server:internal_error")[];
|
|
448
|
+
};
|
|
449
|
+
listAppointmentServiceCategories: {
|
|
450
|
+
path: "/sites/{siteId}/bookings/service-categories";
|
|
451
|
+
method: "GET";
|
|
452
|
+
auth: "user";
|
|
453
|
+
responseKind: "json";
|
|
454
|
+
errors: "server:internal_error"[];
|
|
455
|
+
};
|
|
456
|
+
createAppointmentServiceCategory: {
|
|
457
|
+
path: "/sites/{siteId}/bookings/service-categories";
|
|
458
|
+
method: "POST";
|
|
459
|
+
auth: "user";
|
|
460
|
+
responseKind: "json";
|
|
461
|
+
errors: ("auth:forbidden" | "validation:invalid_input" | "resource:conflict" | "server:internal_error")[];
|
|
462
|
+
};
|
|
463
|
+
updateAppointmentServiceCategory: {
|
|
464
|
+
path: "/sites/{siteId}/bookings/service-categories/{categoryId}";
|
|
465
|
+
method: "PUT";
|
|
466
|
+
auth: "user";
|
|
467
|
+
responseKind: "json";
|
|
468
|
+
errors: ("auth:forbidden" | "validation:invalid_input" | "resource:not_found" | "resource:conflict" | "server:internal_error")[];
|
|
469
|
+
};
|
|
470
|
+
deleteAppointmentServiceCategory: {
|
|
471
|
+
path: "/sites/{siteId}/bookings/service-categories/{categoryId}";
|
|
472
|
+
method: "DELETE";
|
|
473
|
+
auth: "user";
|
|
474
|
+
responseKind: "json";
|
|
475
|
+
errors: ("auth:forbidden" | "resource:not_found" | "server:internal_error")[];
|
|
476
|
+
};
|
|
477
|
+
reorderAppointmentServiceCategories: {
|
|
478
|
+
path: "/sites/{siteId}/bookings/service-categories/order";
|
|
479
|
+
method: "PUT";
|
|
480
|
+
auth: "user";
|
|
481
|
+
responseKind: "json";
|
|
482
|
+
errors: ("auth:forbidden" | "validation:invalid_input" | "resource:conflict" | "server:internal_error")[];
|
|
483
|
+
};
|
|
435
484
|
};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Appointment-service categories and the manual order of categories and of
|
|
3
|
+
* services within a group (issue 1403): the endpoint contracts and their
|
|
4
|
+
* descriptors, composed into `APIEndpoints` and `API_ENDPOINTS`.
|
|
5
|
+
*/
|
|
6
|
+
import type { APIEndpoint } from './apiEndpointTypes';
|
|
7
|
+
import type { AppointmentServiceCategoryResponse, AppointmentServiceOrderResponse, CreateAppointmentServiceCategoryRequest, DeleteAppointmentServiceCategoryResponse, ListAppointmentServiceCategoriesResponse, ListGroupedAppointmentServicesResponse, ReorderAppointmentServiceCategoriesRequest, ReorderAppointmentServicesRequest, UpdateAppointmentServiceCategoryRequest } from './appointmentServiceContracts';
|
|
8
|
+
type SiteParams = {
|
|
9
|
+
siteId: string;
|
|
10
|
+
};
|
|
11
|
+
type CategoryParams = {
|
|
12
|
+
siteId: string;
|
|
13
|
+
categoryId: string;
|
|
14
|
+
};
|
|
15
|
+
export type AppointmentServiceCategoryAPIEndpoints = {
|
|
16
|
+
listGroupedAppointmentServices: APIEndpoint<never, SiteParams, ListGroupedAppointmentServicesResponse>;
|
|
17
|
+
reorderAppointmentServices: APIEndpoint<ReorderAppointmentServicesRequest, SiteParams, AppointmentServiceOrderResponse>;
|
|
18
|
+
listAppointmentServiceCategories: APIEndpoint<never, SiteParams, ListAppointmentServiceCategoriesResponse>;
|
|
19
|
+
createAppointmentServiceCategory: APIEndpoint<CreateAppointmentServiceCategoryRequest, SiteParams, AppointmentServiceCategoryResponse>;
|
|
20
|
+
updateAppointmentServiceCategory: APIEndpoint<UpdateAppointmentServiceCategoryRequest, CategoryParams, AppointmentServiceCategoryResponse>;
|
|
21
|
+
deleteAppointmentServiceCategory: APIEndpoint<never, CategoryParams, DeleteAppointmentServiceCategoryResponse>;
|
|
22
|
+
reorderAppointmentServiceCategories: APIEndpoint<ReorderAppointmentServiceCategoriesRequest, SiteParams, AppointmentServiceOrderResponse>;
|
|
23
|
+
};
|
|
24
|
+
export declare const APPOINTMENT_SERVICE_CATEGORY_ENDPOINT_DEFINITIONS: {
|
|
25
|
+
listGroupedAppointmentServices: {
|
|
26
|
+
path: "/sites/{siteId}/bookings/services/grouped";
|
|
27
|
+
method: "GET";
|
|
28
|
+
auth: "user";
|
|
29
|
+
responseKind: "json";
|
|
30
|
+
errors: "server:internal_error"[];
|
|
31
|
+
};
|
|
32
|
+
reorderAppointmentServices: {
|
|
33
|
+
path: "/sites/{siteId}/bookings/services/order";
|
|
34
|
+
method: "PUT";
|
|
35
|
+
auth: "user";
|
|
36
|
+
responseKind: "json";
|
|
37
|
+
errors: ("auth:forbidden" | "validation:invalid_input" | "resource:not_found" | "resource:conflict" | "server:internal_error")[];
|
|
38
|
+
};
|
|
39
|
+
listAppointmentServiceCategories: {
|
|
40
|
+
path: "/sites/{siteId}/bookings/service-categories";
|
|
41
|
+
method: "GET";
|
|
42
|
+
auth: "user";
|
|
43
|
+
responseKind: "json";
|
|
44
|
+
errors: "server:internal_error"[];
|
|
45
|
+
};
|
|
46
|
+
createAppointmentServiceCategory: {
|
|
47
|
+
path: "/sites/{siteId}/bookings/service-categories";
|
|
48
|
+
method: "POST";
|
|
49
|
+
auth: "user";
|
|
50
|
+
responseKind: "json";
|
|
51
|
+
errors: ("auth:forbidden" | "validation:invalid_input" | "resource:conflict" | "server:internal_error")[];
|
|
52
|
+
};
|
|
53
|
+
updateAppointmentServiceCategory: {
|
|
54
|
+
path: "/sites/{siteId}/bookings/service-categories/{categoryId}";
|
|
55
|
+
method: "PUT";
|
|
56
|
+
auth: "user";
|
|
57
|
+
responseKind: "json";
|
|
58
|
+
errors: ("auth:forbidden" | "validation:invalid_input" | "resource:not_found" | "resource:conflict" | "server:internal_error")[];
|
|
59
|
+
};
|
|
60
|
+
deleteAppointmentServiceCategory: {
|
|
61
|
+
path: "/sites/{siteId}/bookings/service-categories/{categoryId}";
|
|
62
|
+
method: "DELETE";
|
|
63
|
+
auth: "user";
|
|
64
|
+
responseKind: "json";
|
|
65
|
+
errors: ("auth:forbidden" | "resource:not_found" | "server:internal_error")[];
|
|
66
|
+
};
|
|
67
|
+
reorderAppointmentServiceCategories: {
|
|
68
|
+
path: "/sites/{siteId}/bookings/service-categories/order";
|
|
69
|
+
method: "PUT";
|
|
70
|
+
auth: "user";
|
|
71
|
+
responseKind: "json";
|
|
72
|
+
errors: ("auth:forbidden" | "validation:invalid_input" | "resource:conflict" | "server:internal_error")[];
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
export {};
|
|
@@ -40,6 +40,8 @@ export type AppointmentService = {
|
|
|
40
40
|
cutoffHours?: number;
|
|
41
41
|
};
|
|
42
42
|
};
|
|
43
|
+
/** The service's category, or null for the trailing "Other" group (issue 1403). */
|
|
44
|
+
categoryId: string | null;
|
|
43
45
|
createdAt: string;
|
|
44
46
|
updatedAt: string;
|
|
45
47
|
};
|
|
@@ -73,6 +75,14 @@ export type CreateAppointmentServiceRequest = {
|
|
|
73
75
|
onlineDetails?: AppointmentServiceOnlineDetailsInput | null;
|
|
74
76
|
formId?: string | null;
|
|
75
77
|
cancellationPolicy?: AppointmentService['cancellationPolicy'];
|
|
78
|
+
/**
|
|
79
|
+
* The category to put the service in, or null for "Other". On create the
|
|
80
|
+
* service goes to the end of that group. On update, omitting it leaves the
|
|
81
|
+
* category alone, and changing it moves the service to the end of its new
|
|
82
|
+
* group. A category that is not the site's is rejected with
|
|
83
|
+
* `CATEGORY_NOT_FOUND`.
|
|
84
|
+
*/
|
|
85
|
+
categoryId?: string | null;
|
|
76
86
|
};
|
|
77
87
|
export type UpdateAppointmentServiceRequest = Partial<CreateAppointmentServiceRequest>;
|
|
78
88
|
export type AppointmentServiceResponse = {
|
|
@@ -81,3 +91,73 @@ export type AppointmentServiceResponse = {
|
|
|
81
91
|
export type ListAppointmentServicesResponse = {
|
|
82
92
|
services: AppointmentService[];
|
|
83
93
|
};
|
|
94
|
+
/**
|
|
95
|
+
* A category as the dashboard manages it. Order is carried by position in
|
|
96
|
+
* the list responses, never by a stored number. `identifier` is the internal,
|
|
97
|
+
* rename-safe key site commands use. It is generated from the name on create
|
|
98
|
+
* and never shown to a site admin.
|
|
99
|
+
*/
|
|
100
|
+
export type AppointmentServiceCategory = {
|
|
101
|
+
id: string;
|
|
102
|
+
siteId: string;
|
|
103
|
+
name: string;
|
|
104
|
+
identifier: string;
|
|
105
|
+
description: string | null;
|
|
106
|
+
createdAt: string;
|
|
107
|
+
updatedAt: string;
|
|
108
|
+
};
|
|
109
|
+
/** Every category the site has, in its manual order. */
|
|
110
|
+
export type ListAppointmentServiceCategoriesResponse = {
|
|
111
|
+
categories: AppointmentServiceCategory[];
|
|
112
|
+
};
|
|
113
|
+
/** Names are trimmed. The name must be unique on the site, ignoring case. */
|
|
114
|
+
export type CreateAppointmentServiceCategoryRequest = {
|
|
115
|
+
name: string;
|
|
116
|
+
description?: string | null;
|
|
117
|
+
};
|
|
118
|
+
export type UpdateAppointmentServiceCategoryRequest = {
|
|
119
|
+
name?: string;
|
|
120
|
+
description?: string | null;
|
|
121
|
+
};
|
|
122
|
+
export type AppointmentServiceCategoryResponse = {
|
|
123
|
+
category: AppointmentServiceCategory;
|
|
124
|
+
};
|
|
125
|
+
/** Deleting a category moves its services to the end of "Other". */
|
|
126
|
+
export type DeleteAppointmentServiceCategoryResponse = {
|
|
127
|
+
success: true;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* A compare-and-swap reorder. `expectedOrder` is the order the client last
|
|
131
|
+
* read and `nextOrder` the order it wants. The server answers
|
|
132
|
+
* `ORDER_CHANGED` when `expectedOrder` is no longer current (the client
|
|
133
|
+
* should refetch), and `ORDER_INVALID` when `nextOrder` is not an exact
|
|
134
|
+
* permutation of the current members.
|
|
135
|
+
*/
|
|
136
|
+
export type ReorderAppointmentServiceCategoriesRequest = {
|
|
137
|
+
expectedOrder: string[];
|
|
138
|
+
nextOrder: string[];
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Reorders the services within one group: a category, or "Other" when
|
|
142
|
+
* `categoryId` is null. Moving a service between groups is not a reorder.
|
|
143
|
+
* It goes through the service's `categoryId`.
|
|
144
|
+
*/
|
|
145
|
+
export type ReorderAppointmentServicesRequest = {
|
|
146
|
+
categoryId: string | null;
|
|
147
|
+
expectedOrder: string[];
|
|
148
|
+
nextOrder: string[];
|
|
149
|
+
};
|
|
150
|
+
export type AppointmentServiceOrderResponse = {
|
|
151
|
+
success: true;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* The Services page read: every category in order and every service (paused
|
|
155
|
+
* and unlisted included) in display order, so
|
|
156
|
+
* `layoutServicesByCategory(categories, services, { keepEmptyGroups: true })`
|
|
157
|
+
* gives the page's groups, and a group's service ids are the `expectedOrder`
|
|
158
|
+
* for a reorder. `listAppointmentServices` stays alphabetical for pickers.
|
|
159
|
+
*/
|
|
160
|
+
export type ListGroupedAppointmentServicesResponse = {
|
|
161
|
+
categories: AppointmentServiceCategory[];
|
|
162
|
+
services: AppointmentService[];
|
|
163
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AvailabilityScheduleSettings } from "./availability";
|
|
2
2
|
import type { VenueRecord } from "./bookingRecords";
|
|
3
|
-
import type { DashboardAppointmentResource, AppointmentService } from "./bookingOperations";
|
|
3
|
+
import type { DashboardAppointmentResource, AppointmentService, AppointmentServiceCategory } from "./bookingOperations";
|
|
4
4
|
import type { ApiClient } from "./request";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
export type AppointmentSetupTargetStep = "services" | "people" | "assignments" | "availability" | "review";
|
|
@@ -73,6 +73,11 @@ export type AppointmentSetupResponse = Readonly<{
|
|
|
73
73
|
seedSelection: AppointmentSetupSeedSelection;
|
|
74
74
|
readiness: AppointmentSetupReadiness;
|
|
75
75
|
services: readonly AppointmentService[];
|
|
76
|
+
/**
|
|
77
|
+
* The site's appointment-service categories in order, for the new-service
|
|
78
|
+
* wizard's Category field (issue 1403).
|
|
79
|
+
*/
|
|
80
|
+
serviceCategories: readonly AppointmentServiceCategory[];
|
|
76
81
|
resources: readonly DashboardAppointmentResource[];
|
|
77
82
|
venues: readonly VenueRecord[];
|
|
78
83
|
serviceResourceLinks: readonly AppointmentSetupServiceResourceLink[];
|
|
@@ -183,6 +188,7 @@ export declare const appointmentSetupServiceDraftSchema: z.ZodObject<{
|
|
|
183
188
|
draftId: z.ZodString;
|
|
184
189
|
}, z.core.$strip>], "kind">>;
|
|
185
190
|
}, z.core.$strip>], "kind">;
|
|
191
|
+
categoryId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
186
192
|
}, z.core.$strip>;
|
|
187
193
|
export type AppointmentSetupServiceDraft = z.infer<typeof appointmentSetupServiceDraftSchema>;
|
|
188
194
|
export declare const appointmentSetupPractitionerDraftSchema: z.ZodObject<{
|
|
@@ -318,6 +324,7 @@ export declare const applyAppointmentSetupRequestSchema: z.ZodObject<{
|
|
|
318
324
|
draftId: z.ZodString;
|
|
319
325
|
}, z.core.$strip>], "kind">>;
|
|
320
326
|
}, z.core.$strip>], "kind">;
|
|
327
|
+
categoryId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
321
328
|
}, z.core.$strip>>;
|
|
322
329
|
practitioners: z.ZodArray<z.ZodObject<{
|
|
323
330
|
ref: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { EventOnlineDetails } from './bookingRecords';
|
|
2
|
+
import type { AttendeeNotificationIntent } from './occurrenceScheduling';
|
|
3
|
+
import type { EventVisibility } from './event-visibility';
|
|
2
4
|
import type { CreateEventRequest } from './eventManagementContracts';
|
|
3
5
|
import { BOOKING_SETTINGS_SECTION_KEYS } from './bookingSettingsSections';
|
|
4
6
|
import { type ResolvedEventCatalogue, type EventPreset } from '../../core/src/index';
|
|
@@ -153,7 +155,7 @@ export type EventSeriesRecord = {
|
|
|
153
155
|
capacity: number | null;
|
|
154
156
|
deliveryMode: EventDeliveryMode;
|
|
155
157
|
capacityByAttendanceMode: EventCapacityByAttendanceMode;
|
|
156
|
-
visibility:
|
|
158
|
+
visibility: EventVisibility;
|
|
157
159
|
status: 'active' | 'draft' | 'archived' | 'cancelled' | 'completed';
|
|
158
160
|
recurrenceRule: string | null;
|
|
159
161
|
exceptionsJson: string[];
|
|
@@ -190,6 +192,11 @@ export type UpdateEventSeriesRequest = Partial<Omit<CreateEventRequest, 'creatio
|
|
|
190
192
|
migrationPricingOptionIndex?: number | null;
|
|
191
193
|
/** If true, regenerate future occurrences based on updated schedule */
|
|
192
194
|
regenerateSchedule?: boolean;
|
|
195
|
+
/**
|
|
196
|
+
* The "let everyone booked know" tick. Only a change of the event's usual
|
|
197
|
+
* venue can notify; the server decides whether there is anything to send.
|
|
198
|
+
*/
|
|
199
|
+
attendeeNotification?: AttendeeNotificationIntent;
|
|
193
200
|
};
|
|
194
201
|
export type BookingModuleToggles = {
|
|
195
202
|
appointments: boolean;
|
|
@@ -6,14 +6,15 @@ import type { BookingClosureConflictResponse, CreateBookingClosureRequest, Creat
|
|
|
6
6
|
import type { BookingSettingsResponse, UpdateBookingSettingsRequest } from './bookingConfig';
|
|
7
7
|
import type * as Events from './eventManagementContracts';
|
|
8
8
|
import type * as EventEndpoints from './bookingManagementEventEndpointTypes';
|
|
9
|
+
import type { WholeSeriesEndpoints } from './bookingManagementEventEndpointTypes';
|
|
9
10
|
import type { AdjustCustomerPassDetailsRequest, AdjustCustomerPassDetailsResponse, AssignCustomerMembershipRequest, AssignCustomerMembershipResponse, AssignCustomerPassRequest, AssignCustomerPassResponse, CancelCustomerMembershipAtPeriodEndRequest, CancelCustomerMembershipAtPeriodEndResponse, ConvertCreditRefundToCashRequest, ConvertCreditRefundToCashResponse, ListCustomerMembershipPaymentRefundsResponse, ListCustomerMembershipPaymentsResponse, ListCustomerPassRefundsResponse, RefundCustomerMembershipPaymentRequest, RefundCustomerMembershipPaymentResponse, RefundCustomerPassRequest, RefundCustomerPassResponse } from './bookingAdjustments';
|
|
10
11
|
import type { AppointmentResourceResponse, AppointmentReservationLifecycleRequest, AppointmentReservationResponse, AppointmentServiceResponse, BookingAppointmentWithDetails, CreateAppointmentResourceRequest, CreateAppointmentResourceWithAccountAccessRequest, CreateAppointmentResourceWithAccountAccessResponse, CreateAppointmentReservationRequest, CreateAppointmentReservationRunRequest, CreateAppointmentReservationRunResponse, CreateAppointmentServiceRequest, CreateTeamMemberProfileResponse, DiscardTeamMemberProfileDraftResponse, DeleteServiceResponse, EndAppointmentReservationRequest, ListAppointmentResourcesResponse, ListAppointmentReservationsRequest, ListAppointmentReservationsResponse, ListAppointmentServicesResponse, ListEventSeriesRegistrationRefundsResponse, ListEventAttendeeRefundsResponse, ListEventAttendeeTransfersResponse, OpsCancelEventAttendeeRequest, OpsCancelEventAttendeeResponse, OpsEventAttendeeDetailsResponse, OpsListUpcomingEventOccurrencesResponse, OpsOccurrenceAttendeesResponse, OpsRefundEventAttendeeResponse, OpsUpdateEventAttendeeCheckinRequest, OpsUpdateEventAttendeeCheckinResponse, OpsValidateEventTicketRequest, OpsValidateEventTicketResponse, PreviewAppointmentReservationRunRequest, PreviewAppointmentReservationRunResponse, ReferenceOptionsResponse, RemoveAppointmentResourceResponse, RefundEventSeriesRegistrationRequest, RefundEventSeriesRegistrationResponse, RefundEventAttendeeRequest, RefundEventAttendeeResponse, TransferEventAttendeeRequest, TransferEventAttendeeResponse, UpdateAppointmentResourceRequest, UpdateAppointmentReservationRequest, UpdateAppointmentServiceRequest, PublishTeamMemberProfileRequest, PublishTeamMemberProfileResponse, CancelScheduledTeamMemberProfileResponse, ScheduleTeamMemberProfileRequest, ScheduleTeamMemberProfileResponse, TeamMemberProfileContentResponse, UnpublishTeamMemberProfileResponse, UpdateTeamMemberProfileContentRequest, UpdateTeamMemberProfilePolicyRequest, UpdateTeamMemberProfilePolicyResponse, UpdateTeamMemberProfileRouteMetadataRequest, UpdateTeamMemberProfileRouteMetadataResponse } from './bookingOperations';
|
|
11
12
|
import type { AddEventOccurrenceAttendeeRequest, AddEventOccurrenceAttendeeResponse, AdjustCustomerCreditRequest, AdjustCustomerCreditResponse, BookingEventSeriesAttendee, BookingMembershipResponse, BookingPassResponse, CheckEventAdminEligibilityRequest, CheckEventAdminEligibilityResponse, CreateBookingCustomerRequest, CreateBookingCustomerResponse, RectifyBookingCustomerProfileRequest, RectifyBookingCustomerProfileResponse, RectifyBookingParticipantIdentityRequest, RectifyBookingParticipantIdentityResponse, CreateBookingMembershipRequest, CreateBookingPassRequest, CreateDiscountCodeRequest, CreateEventCategoryRequest, CreateOccurrenceRequest, CreateVenueRequest, DeleteDiscountCodeResponse, DeleteVenueResponse, DiscountCodeResponse, EventCategoryResponse, EventOccurrenceRecord, GeocodeVenueRequest, GeocodeVenueResponse, GetCustomerCreditResponse, GetMoneyReportRequest, GetMoneyReportResponse, ExportBookingQuestionAnswersCsvRequest, ExportBookingLedgerCsvRequest, ListBookingActivityRequest, ListBookingActivityResponse, ListBookingCustomersRequest, ListBookingCustomersResponse, ListBookingMembershipsRequest, ListBookingMembershipsResponse, ListBookingPassesRequest, ListBookingPassesResponse, ListCustomerAttendancesRequest, ListCustomerAttendancesResponse, ListCustomerMembershipsResponse, ListCustomerPassesResponse, CreatePersonRecordEntryRequest, CreatePersonRecordEntryResponse, ListDiscountCodesResponse, ListDiscountRedemptionsRequest, ListDiscountRedemptionsResponse, ListEventCategoriesResponse, ListMoneyPaymentsRequest, ListMoneyPaymentsResponse, ListSiteCustomerMembershipsRequest, ListSiteCustomerMembershipsResponse, ListSiteCustomerPassesRequest, ListSiteCustomerPassesResponse, UpdateBookingMembershipRequest, UpdateBookingPassRequest, UpdateDiscountCodeRequest, UpdateEventCategoryRequest, UpdateVenueRequest, VenueRecord } from './bookingRecords';
|
|
12
13
|
import type * as OccurrenceScheduling from './occurrenceScheduling';
|
|
13
14
|
import type { ApplyAppointmentSetupRequest, ApplyAppointmentSetupResponse, AppointmentSetupResponse } from './appointmentSetup';
|
|
14
|
-
import type { AddEventSeriesRegistrationRequest, AddEventSeriesRegistrationResponse, EventSeriesContentOwnershipRequest, EventSeriesContentOwnershipResponse, DashboardWaitlistListResponse, DeleteEventOfferingResponse, ListEventSeriesRegistrationsResponse,
|
|
15
|
+
import type { AddEventSeriesRegistrationRequest, AddEventSeriesRegistrationResponse, EventSeriesContentOwnershipRequest, EventSeriesContentOwnershipResponse, DashboardWaitlistListResponse, DeleteEventOfferingResponse, ListEventSeriesRegistrationsResponse, WaitlistDashboardActionResponse } from './wholeSeriesRuns';
|
|
15
16
|
import type { GetParticipantMessageRecipientsRequest, ListParticipantMessageHistoryRequest, ParticipantMessageHistoryResponse, ParticipantMessageRecipientsResponse, ParticipantMessageSendResponse, SendParticipantMessageRequest, TestParticipantMessageRequest, TestParticipantMessageResponse } from './participantMessaging';
|
|
16
|
-
import type { GetEmailSettingsResponse, GetEventSeriesEmailTemplatesResponse, GetNewsletterCampaignRecipientsSummaryResponse, GetNewsletterCampaignResponse, GetNewsletterCampaignStatsResponse, GetNewsletterSettingsResponse, GetNewsletterSubscriberResponse, GetNewsletterTemplateResponse, ListNewsletterCampaignsResponse, ListNewsletterListMembersQuery, ListNewsletterListMembersResponse, ListNewsletterListsResponse,
|
|
17
|
+
import type { GetEmailSettingsResponse, GetEventSeriesEmailTemplatesResponse, GetNewsletterCampaignRecipientsSummaryResponse, GetNewsletterCampaignResponse, GetNewsletterCampaignStatsResponse, GetNewsletterSettingsResponse, GetNewsletterSubscriberResponse, GetNewsletterTemplateResponse, ListNewsletterCampaignsResponse, ListNewsletterListMembersQuery, ListNewsletterListMembersResponse, ListNewsletterListsResponse, ListNewsletterSubscribersQuery, ListNewsletterSubscribersResponse, ListNewsletterTagsResponse, ListNewsletterTemplatesResponse, PreviewEmailTemplateRequest, PreviewEmailTemplateResponse, PreviewNewsletterTemplateRequest, PreviewNewsletterTemplateResponse, RectifyNewsletterSubscriberRequest, RectifyNewsletterSubscriberResponse, SendTestEmailRequest, SendTestEmailResponse, UpdateEmailSettingsRequest, UpdateEmailSettingsResponse, UpdateEventSeriesEmailTemplatesRequest, UpdateEventSeriesEmailTemplatesResponse, UpdateNewsletterCampaignRequest, UpdateNewsletterCampaignResponse, UpdateNewsletterListMembershipsRequest, UpdateNewsletterListMembershipsResponse, UpdateNewsletterListRequest, UpdateNewsletterListResponse, UpdateNewsletterSettingsRequest, UpdateNewsletterSettingsResponse, UpdateNewsletterSubscriberRequest, UpdateNewsletterSubscriberResponse, UpdateNewsletterTemplateRequest, UpdateNewsletterTemplateResponse, UpsertNewsletterSubscriberRequest, UpsertNewsletterSubscriberResponse, ImportNewsletterSubscribersCsvResponse, ExportNewsletterSubscribersCsvResponse, DeleteNewsletterSubscriberResponse, AnonymizeNewsletterSubscriberResponse, ExportNewsletterSubscriberDataResponse, CreateNewsletterListRequest, CreateNewsletterListResponse, DeleteNewsletterListResponse, CreateNewsletterTemplateRequest, CreateNewsletterTemplateResponse, DeleteNewsletterTemplateResponse, CreateNewsletterCampaignRequest, CreateNewsletterCampaignResponse, DeleteNewsletterCampaignResponse, SendNewsletterCampaignNowRequest, SendNewsletterCampaignNowResponse, TestSendNewsletterCampaignRequest, TestSendNewsletterCampaignResponse } from './communications';
|
|
17
18
|
import type { CreateNewsletterSubscribersImportUploadUrlRequest, CreateNewsletterSubscribersImportUploadUrlResponse, ImportNewsletterSubscribersCsvRequest } from './siteInfrastructure';
|
|
18
19
|
import type { ListSiteActivityLogsResponse, ListSiteEmailEventLogsResponse, ListSiteEmailLogsResponse, ListSitePublicErrorLogsResponse } from './siteOperations';
|
|
19
20
|
import type { SchedulePreviewRequest, SchedulePreviewResponse } from './aiPlayground';
|
|
@@ -21,7 +22,7 @@ import type { SchedulePreviewRequest, SchedulePreviewResponse } from './aiPlaygr
|
|
|
21
22
|
* Booking-management endpoints group scheduler, operational bookings admin, course,
|
|
22
23
|
* newsletter, and customer-ledger APIs that are tightly coupled in dashboard flows.
|
|
23
24
|
*/
|
|
24
|
-
export type BookingManagementAPIEndpoints = {
|
|
25
|
+
export type BookingManagementAPIEndpoints = WholeSeriesEndpoints & {
|
|
25
26
|
getBookingSettings: APIEndpoint<never, {
|
|
26
27
|
siteId: string;
|
|
27
28
|
}, BookingSettingsResponse>;
|
|
@@ -209,17 +210,6 @@ export type BookingManagementAPIEndpoints = {
|
|
|
209
210
|
siteId: string;
|
|
210
211
|
campaignId: string;
|
|
211
212
|
}, TestSendNewsletterCampaignResponse>;
|
|
212
|
-
listNewsletterSendJobs: APIEndpoint<never, {
|
|
213
|
-
siteId: string;
|
|
214
|
-
} & ListNewsletterSendJobsQuery, ListNewsletterSendJobsResponse>;
|
|
215
|
-
retryNewsletterSendJob: APIEndpoint<never, {
|
|
216
|
-
siteId: string;
|
|
217
|
-
jobId: string;
|
|
218
|
-
}, RetryNewsletterSendJobResponse>;
|
|
219
|
-
cancelNewsletterSendJob: APIEndpoint<never, {
|
|
220
|
-
siteId: string;
|
|
221
|
-
jobId: string;
|
|
222
|
-
}, CancelNewsletterSendJobResponse>;
|
|
223
213
|
listAppointmentResources: APIEndpoint<never, {
|
|
224
214
|
siteId: string;
|
|
225
215
|
}, ListAppointmentResourcesResponse>;
|
|
@@ -530,30 +520,24 @@ export type BookingManagementAPIEndpoints = {
|
|
|
530
520
|
status?: string;
|
|
531
521
|
excludeCancelled?: string;
|
|
532
522
|
}, Blob>;
|
|
533
|
-
updateEventSeriesRegistration:
|
|
534
|
-
|
|
535
|
-
seriesId: string;
|
|
536
|
-
registrationId: string;
|
|
537
|
-
}, UpdateEventSeriesRegistrationResponse>;
|
|
523
|
+
updateEventSeriesRegistration: EventEndpoints.UpdateRegistration;
|
|
524
|
+
saveEventSeriesRegistrationAnswers: EventEndpoints.SaveRegistrationAnswers;
|
|
538
525
|
listEvents: APIEndpoint<never, {
|
|
539
526
|
siteId: string;
|
|
540
527
|
status?: 'draft' | 'active' | 'archived' | 'cancelled' | 'completed';
|
|
541
|
-
visibility?: 'public' | '
|
|
528
|
+
visibility?: 'public' | 'unlisted';
|
|
542
529
|
}, Events.EventRecord[]>;
|
|
543
|
-
createEvent:
|
|
544
|
-
siteId: string;
|
|
545
|
-
}, Events.CreateEventRecord>;
|
|
530
|
+
createEvent: EventEndpoints.Create;
|
|
546
531
|
transitionEventLifecycle: EventEndpoints.Lifecycle;
|
|
547
532
|
updateEventIdentity: EventEndpoints.UpdateIdentity;
|
|
548
|
-
|
|
549
|
-
updateWholeSeriesRun: EventEndpoints.UpdateWholeSeriesRun;
|
|
550
|
-
cancelWholeSeriesRun: EventEndpoints.CancelWholeSeriesRun;
|
|
533
|
+
updateEventAddress: EventEndpoints.UpdateAddress;
|
|
551
534
|
getEventSeries: EventEndpoints.GetSeries;
|
|
552
535
|
updateEventSeries: EventEndpoints.UpdateSeries;
|
|
553
536
|
deleteEventSeries: EventEndpoints.DeleteSeries;
|
|
554
537
|
listEventSeriesAttendees: APIEndpoint<never, {
|
|
555
538
|
siteId: string;
|
|
556
539
|
seriesId: string;
|
|
540
|
+
occurrenceId?: string;
|
|
557
541
|
}, BookingEventSeriesAttendee[]>;
|
|
558
542
|
exportEventSeriesAttendeesCsv: APIEndpoint<never, {
|
|
559
543
|
siteId: string;
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import type { EventOfferingId, EventSeriesId } from '../../core/src/index';
|
|
2
2
|
import type { APIEndpoint } from './apiEndpointTypes';
|
|
3
|
+
import type * as Events from './eventManagementContracts';
|
|
3
4
|
import type { EventSeriesRecord, UpdateEventSeriesRequest } from './bookingConfig';
|
|
4
5
|
import type { EventOccurrenceListRecord } from './bookingRecords';
|
|
5
|
-
import type {
|
|
6
|
+
import type { SaveEventSeriesRegistrationAnswersRequest, SaveEventSeriesRegistrationAnswersResponse, UpdateEventSeriesRegistrationRequest, UpdateEventSeriesRegistrationResponse } from './wholeSeriesRuns';
|
|
7
|
+
import type { CancelWholeSeriesRunRequest, CancelWholeSeriesRunResponse, CourseBookingSettingsRequest, CourseBookingSettingsResponse, CreateWholeSeriesRunRequest, EventLifecycleTransitionRequest, EventLifecycleTransitionResponse, UpdateEventAddressRequest, UpdateEventAddressResponse, UpdateEventIdentityRequest, UpdateEventIdentityResponse, UpdateWholeSeriesRunRequest, WholeSeriesRunMutationResponse } from './eventManagementContracts';
|
|
8
|
+
export type Create = APIEndpoint<Events.CreateEventRequest, {
|
|
9
|
+
siteId: string;
|
|
10
|
+
}, Events.CreateEventRecord>;
|
|
6
11
|
export type Lifecycle = APIEndpoint<EventLifecycleTransitionRequest, {
|
|
7
12
|
siteId: string;
|
|
8
13
|
eventId: EventOfferingId;
|
|
@@ -11,6 +16,10 @@ export type UpdateIdentity = APIEndpoint<UpdateEventIdentityRequest, {
|
|
|
11
16
|
siteId: string;
|
|
12
17
|
eventId: EventOfferingId;
|
|
13
18
|
}, UpdateEventIdentityResponse>;
|
|
19
|
+
export type UpdateAddress = APIEndpoint<UpdateEventAddressRequest, {
|
|
20
|
+
siteId: string;
|
|
21
|
+
eventId: EventOfferingId;
|
|
22
|
+
}, UpdateEventAddressResponse>;
|
|
14
23
|
export type CancelWholeSeriesRun = APIEndpoint<CancelWholeSeriesRunRequest, {
|
|
15
24
|
siteId: string;
|
|
16
25
|
eventId: EventOfferingId;
|
|
@@ -26,6 +35,21 @@ export type CreateWholeSeriesRun = APIEndpoint<CreateWholeSeriesRunRequest, {
|
|
|
26
35
|
eventId: EventOfferingId;
|
|
27
36
|
}, WholeSeriesRunMutationResponse>;
|
|
28
37
|
export type UpdateWholeSeriesRun = APIEndpoint<UpdateWholeSeriesRunRequest, RunParams, WholeSeriesRunMutationResponse>;
|
|
38
|
+
/** The course-wide booking settings, written onto every run in one go. */
|
|
39
|
+
export type UpdateCourseBookingSettings = APIEndpoint<CourseBookingSettingsRequest, {
|
|
40
|
+
siteId: string;
|
|
41
|
+
eventId: EventOfferingId;
|
|
42
|
+
}, CourseBookingSettingsResponse>;
|
|
43
|
+
/**
|
|
44
|
+
* Every booking on every run of one course, as one CSV, narrowed to the run
|
|
45
|
+
* and status the Attendees tab is filtered by.
|
|
46
|
+
*/
|
|
47
|
+
export type ExportEventOfferingRegistrationsCsv = APIEndpoint<never, {
|
|
48
|
+
siteId: string;
|
|
49
|
+
eventOfferingId: string;
|
|
50
|
+
runId?: string;
|
|
51
|
+
status?: string;
|
|
52
|
+
}, Blob>;
|
|
29
53
|
type SeriesParams = Omit<RunParams, 'runId'> & {
|
|
30
54
|
seriesId: EventSeriesId;
|
|
31
55
|
};
|
|
@@ -41,4 +65,24 @@ export type OccurrenceList = APIEndpoint<never, {
|
|
|
41
65
|
limit?: number;
|
|
42
66
|
offset?: number;
|
|
43
67
|
}, EventOccurrenceListRecord[]>;
|
|
68
|
+
/**
|
|
69
|
+
* The whole-series run and course commands, grouped so the booking endpoint map
|
|
70
|
+
* can spread them in one line. Adding the course Booking tab's writer pushed
|
|
71
|
+
* that map past its `max-lines` baseline, the same reason the public checkout
|
|
72
|
+
* block was extracted from `endpoints.ts`.
|
|
73
|
+
*/
|
|
74
|
+
export type WholeSeriesEndpoints = {
|
|
75
|
+
createWholeSeriesRun: CreateWholeSeriesRun;
|
|
76
|
+
updateWholeSeriesRun: UpdateWholeSeriesRun;
|
|
77
|
+
cancelWholeSeriesRun: CancelWholeSeriesRun;
|
|
78
|
+
updateCourseBookingSettings: UpdateCourseBookingSettings;
|
|
79
|
+
exportEventOfferingRegistrationsCsv: ExportEventOfferingRegistrationsCsv;
|
|
80
|
+
};
|
|
81
|
+
type ScopedRegistrationParams = Readonly<{
|
|
82
|
+
siteId: string;
|
|
83
|
+
seriesId: string;
|
|
84
|
+
registrationId: string;
|
|
85
|
+
}>;
|
|
86
|
+
export type UpdateRegistration = APIEndpoint<UpdateEventSeriesRegistrationRequest, ScopedRegistrationParams, UpdateEventSeriesRegistrationResponse>;
|
|
87
|
+
export type SaveRegistrationAnswers = APIEndpoint<SaveEventSeriesRegistrationAnswersRequest, ScopedRegistrationParams, SaveEventSeriesRegistrationAnswersResponse>;
|
|
44
88
|
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { APIEndpoint } from './apiEndpointTypes';
|
|
3
|
+
export declare const CLIENT_ERROR_REPORT_ENDPOINT_DEFINITIONS: {
|
|
4
|
+
reportClientError: {
|
|
5
|
+
path: "/client/error-report";
|
|
6
|
+
method: "POST";
|
|
7
|
+
auth: "user";
|
|
8
|
+
errors: never[];
|
|
9
|
+
responseKind: "json";
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export declare const CLIENT_ERROR_REPORT_LIMITS: {
|
|
13
|
+
readonly pathname: 1024;
|
|
14
|
+
readonly name: 120;
|
|
15
|
+
readonly message: 2000;
|
|
16
|
+
readonly stack: 8000;
|
|
17
|
+
readonly digest: 128;
|
|
18
|
+
readonly componentStack: 8000;
|
|
19
|
+
readonly sourceLocation: 1024;
|
|
20
|
+
};
|
|
21
|
+
export declare const clientErrorEventSchema: z.ZodEnum<{
|
|
22
|
+
"dashboard:route-error": "dashboard:route-error";
|
|
23
|
+
"dashboard:app-error": "dashboard:app-error";
|
|
24
|
+
"client:error-boundary": "client:error-boundary";
|
|
25
|
+
"client:window-error": "client:window-error";
|
|
26
|
+
"client:unhandled-rejection": "client:unhandled-rejection";
|
|
27
|
+
}>;
|
|
28
|
+
export declare const clientErrorReportSchema: z.ZodObject<{
|
|
29
|
+
event: z.ZodEnum<{
|
|
30
|
+
"dashboard:route-error": "dashboard:route-error";
|
|
31
|
+
"dashboard:app-error": "dashboard:app-error";
|
|
32
|
+
"client:error-boundary": "client:error-boundary";
|
|
33
|
+
"client:window-error": "client:window-error";
|
|
34
|
+
"client:unhandled-rejection": "client:unhandled-rejection";
|
|
35
|
+
}>;
|
|
36
|
+
pathname: z.ZodString;
|
|
37
|
+
name: z.ZodString;
|
|
38
|
+
message: z.ZodString;
|
|
39
|
+
stack: z.ZodNullable<z.ZodString>;
|
|
40
|
+
digest: z.ZodNullable<z.ZodString>;
|
|
41
|
+
componentStack: z.ZodNullable<z.ZodString>;
|
|
42
|
+
sourceLocation: z.ZodNullable<z.ZodString>;
|
|
43
|
+
}, z.core.$strict>;
|
|
44
|
+
export type ClientErrorEvent = z.infer<typeof clientErrorEventSchema>;
|
|
45
|
+
export type ClientErrorReportRequest = z.infer<typeof clientErrorReportSchema>;
|
|
46
|
+
export type ClientErrorReportingAPIEndpoints = {
|
|
47
|
+
reportClientError: APIEndpoint<ClientErrorReportRequest, never, {
|
|
48
|
+
ok: true;
|
|
49
|
+
}>;
|
|
50
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CamelizeKeys, DbRow } from "../../db/src/index";
|
|
1
|
+
import type { CamelizeKeys, DbDatabase, DbRow } from "../../db/src/index";
|
|
2
2
|
import type { ListNewsletterListMembersQueryInput, UpdateNewsletterListMembershipsBodyInput } from "./schemas/newsletter-memberships";
|
|
3
3
|
/**
|
|
4
4
|
* Communications Contracts
|
|
@@ -78,7 +78,7 @@ export type SendTestEmailRequest = {
|
|
|
78
78
|
};
|
|
79
79
|
};
|
|
80
80
|
export type SendTestEmailResponse = {
|
|
81
|
-
delivery:
|
|
81
|
+
delivery: "sent" | "queued";
|
|
82
82
|
email: string;
|
|
83
83
|
};
|
|
84
84
|
export type PreviewEmailTemplateRequest = {
|
|
@@ -99,9 +99,10 @@ export type NewsletterSettingsRecord = CamelizeKeys<DbRow<"newsletter_settings">
|
|
|
99
99
|
export type NewsletterSubscriberRecord = CamelizeKeys<DbRow<"newsletter_subscribers">>;
|
|
100
100
|
export type NewsletterListRecord = CamelizeKeys<DbRow<"newsletter_lists">>;
|
|
101
101
|
export type NewsletterTemplateRecord = CamelizeKeys<DbRow<"newsletter_templates">>;
|
|
102
|
-
export type NewsletterCampaignRecord = CamelizeKeys<DbRow<"newsletter_campaigns"
|
|
103
|
-
|
|
104
|
-
|
|
102
|
+
export type NewsletterCampaignRecord = Omit<CamelizeKeys<DbRow<"newsletter_campaigns">>, "status" | "finishReason" | "lastClaimedAt"> & {
|
|
103
|
+
status: "draft" | "scheduled" | "sending" | "finished";
|
|
104
|
+
finishReason: "completed" | "stopped_by_owner" | "deadline_reached" | "campaign_blocked" | null;
|
|
105
|
+
};
|
|
105
106
|
export type GetNewsletterSettingsResponse = {
|
|
106
107
|
settings: NewsletterSettingsRecord | null;
|
|
107
108
|
};
|
|
@@ -199,6 +200,7 @@ export type ExportNewsletterSubscriberDataResponse = {
|
|
|
199
200
|
id: string;
|
|
200
201
|
name: string;
|
|
201
202
|
}>;
|
|
203
|
+
deliveries: Array<Pick<DbRow<'newsletter_campaign_deliveries'>, 'id' | 'campaign_id' | 'captured_email' | 'state' | 'reason' | 'accepted_at' | 'delivered_at' | 'bounced_at' | 'complained_at' | 'unsubscribed_at' | 'opened_at' | 'clicked_at' | 'created_at'>>;
|
|
202
204
|
};
|
|
203
205
|
};
|
|
204
206
|
export type ListNewsletterListsResponse = {
|
|
@@ -310,7 +312,6 @@ export type PreviewNewsletterTemplateResponse = {
|
|
|
310
312
|
issues: NewsletterTemplatePreviewIssue[];
|
|
311
313
|
};
|
|
312
314
|
};
|
|
313
|
-
export type NewsletterCampaignAudienceMode = "and" | "or";
|
|
314
315
|
export type ListNewsletterCampaignsResponse = {
|
|
315
316
|
campaigns: NewsletterCampaignRecord[];
|
|
316
317
|
};
|
|
@@ -324,29 +325,43 @@ export type CreateNewsletterCampaignResponse = {
|
|
|
324
325
|
export type GetNewsletterCampaignResponse = {
|
|
325
326
|
campaign: NewsletterCampaignRecord;
|
|
326
327
|
};
|
|
328
|
+
/** Draft edits only. Scheduling, unscheduling and stopping are their own commands below. */
|
|
327
329
|
export type UpdateNewsletterCampaignRequest = Partial<{
|
|
328
330
|
name: string;
|
|
329
331
|
templateId: string | null;
|
|
330
332
|
subject: string | null;
|
|
331
333
|
preheader: string | null;
|
|
332
|
-
audienceMode: NewsletterCampaignAudienceMode;
|
|
333
334
|
audienceListIds: string[];
|
|
334
335
|
audienceTags: string[];
|
|
335
336
|
scheduledAt: string | null;
|
|
336
337
|
timezone: string | null;
|
|
337
|
-
status: "draft" | "scheduled" | "sending" | "sent" | "cancelled" | "failed";
|
|
338
|
-
confirmLargeAudience: boolean;
|
|
339
338
|
}>;
|
|
340
339
|
export type UpdateNewsletterCampaignResponse = {
|
|
341
340
|
campaign: NewsletterCampaignRecord;
|
|
342
341
|
};
|
|
342
|
+
/** Freeze a draft's content and targeting and book its sending window. */
|
|
343
|
+
export type ScheduleNewsletterCampaignRequest = {
|
|
344
|
+
scheduledAt: string;
|
|
345
|
+
timezone: string;
|
|
346
|
+
confirmLargeAudience?: boolean;
|
|
347
|
+
};
|
|
348
|
+
export type ScheduleNewsletterCampaignResponse = {
|
|
349
|
+
campaign: NewsletterCampaignRecord;
|
|
350
|
+
};
|
|
351
|
+
/** Return a scheduled campaign to draft; fails once sending has started. */
|
|
352
|
+
export type UnscheduleNewsletterCampaignResponse = {
|
|
353
|
+
campaign: NewsletterCampaignRecord;
|
|
354
|
+
};
|
|
355
|
+
/** Stop the remaining sends of a scheduled or sending campaign. Final. */
|
|
356
|
+
export type StopNewsletterCampaignResponse = {
|
|
357
|
+
campaign: NewsletterCampaignRecord;
|
|
358
|
+
};
|
|
343
359
|
export type DeleteNewsletterCampaignResponse = {
|
|
344
360
|
deleted: boolean;
|
|
345
361
|
};
|
|
346
362
|
export type NewsletterCampaignRecipientsSummary = {
|
|
347
363
|
count: number;
|
|
348
364
|
filters: {
|
|
349
|
-
audienceMode: NewsletterCampaignAudienceMode;
|
|
350
365
|
audienceListIds: string[];
|
|
351
366
|
audienceTags: string[];
|
|
352
367
|
};
|
|
@@ -354,7 +369,13 @@ export type NewsletterCampaignRecipientsSummary = {
|
|
|
354
369
|
export type GetNewsletterCampaignRecipientsSummaryResponse = {
|
|
355
370
|
summary: NewsletterCampaignRecipientsSummary;
|
|
356
371
|
};
|
|
372
|
+
export type NewsletterNotSentReason = DbDatabase["public"]["Enums"]["newsletter_delivery_reason"];
|
|
357
373
|
export type NewsletterCampaignStats = {
|
|
374
|
+
selectedCount: number;
|
|
375
|
+
notSentCount: number;
|
|
376
|
+
unknownCount: number;
|
|
377
|
+
remainingCount: number;
|
|
378
|
+
notSentReasons: Partial<Record<NewsletterNotSentReason, number>>;
|
|
358
379
|
sentCount: number;
|
|
359
380
|
deliveredCount: number;
|
|
360
381
|
openedCount: number;
|
|
@@ -372,7 +393,7 @@ export type SendNewsletterCampaignNowRequest = {
|
|
|
372
393
|
};
|
|
373
394
|
export type SendNewsletterCampaignNowResponse = {
|
|
374
395
|
campaign: NewsletterCampaignRecord;
|
|
375
|
-
|
|
396
|
+
recipientsCaptured: number;
|
|
376
397
|
recipients: NewsletterCampaignRecipientsSummary;
|
|
377
398
|
};
|
|
378
399
|
export type TestSendNewsletterCampaignRequest = {
|
|
@@ -383,16 +404,3 @@ export type TestSendNewsletterCampaignResponse = {
|
|
|
383
404
|
queued: number;
|
|
384
405
|
failed: number;
|
|
385
406
|
};
|
|
386
|
-
export type ListNewsletterSendJobsQuery = Partial<{
|
|
387
|
-
campaignId: string;
|
|
388
|
-
status: NewsletterSendJobStatus;
|
|
389
|
-
}>;
|
|
390
|
-
export type ListNewsletterSendJobsResponse = {
|
|
391
|
-
jobs: NewsletterSendJobRecord[];
|
|
392
|
-
};
|
|
393
|
-
export type RetryNewsletterSendJobResponse = {
|
|
394
|
-
job: NewsletterSendJobRecord;
|
|
395
|
-
};
|
|
396
|
-
export type CancelNewsletterSendJobResponse = {
|
|
397
|
-
job: NewsletterSendJobRecord;
|
|
398
|
-
};
|