@proteos/sdk 0.53.0 → 0.54.1

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.
@@ -1613,6 +1613,7 @@ declare const LayoutElementType: {
1613
1613
  readonly RecordFilter: "record_filter";
1614
1614
  readonly List: "list";
1615
1615
  readonly WorkflowTrigger: "workflow_trigger";
1616
+ readonly SchedulingPicker: "scheduling_picker";
1616
1617
  };
1617
1618
  type LayoutElementType = (typeof LayoutElementType)[keyof typeof LayoutElementType];
1618
1619
  type RowElement = CommonProps & {
@@ -1832,13 +1833,30 @@ type WorkflowTriggerElement = CommonProps & {
1832
1833
  */
1833
1834
  execution_attribute?: string;
1834
1835
  };
1835
- type TextVariant = 'heading' | 'subheading' | 'body' | 'caption' | 'callout';
1836
+ /**
1837
+ * Embeds a scheduling link's booking flow (type → time → details →
1838
+ * confirmation) in the layout — the in-page counterpart of /s/:orgId/:key.
1839
+ * `type_key` pre-selects one of the link's types (the picker shows the choice
1840
+ * otherwise), `host_user_id` pins one host, `contact_id` is a Liquid template
1841
+ * over the page scope that binds the booking to a known contact (no name /
1842
+ * email asked). Allowed on every page type; public pages book through the
1843
+ * unauthenticated surface.
1844
+ */
1845
+ type SchedulingPickerElement = CommonProps & {
1846
+ type: 'scheduling_picker';
1847
+ link_key: string;
1848
+ type_key?: string;
1849
+ host_user_id?: string;
1850
+ contact_id?: string;
1851
+ is_header_hidden?: boolean;
1852
+ };
1853
+ type TextVariant = 'heading' | 'subheading' | 'body' | 'caption' | 'callout' | 'block-title';
1836
1854
  type TextElement = CommonProps & {
1837
1855
  type: 'text';
1838
1856
  variant: TextVariant;
1839
1857
  content: string;
1840
1858
  };
1841
- type LayoutElement = RowElement | ColumnElement | SectionElement | CardElement | TabsElement | FieldElement | RelatedListElement | RelatedRecordElement | ComponentElement | DividerElement | TextElement | RecordFilterElement | ListElement | WorkflowTriggerElement;
1859
+ type LayoutElement = RowElement | ColumnElement | SectionElement | CardElement | TabsElement | FieldElement | RelatedListElement | RelatedRecordElement | ComponentElement | DividerElement | TextElement | RecordFilterElement | ListElement | WorkflowTriggerElement | SchedulingPickerElement;
1842
1860
  declare const LayoutTabSchema: z.ZodType<LayoutTab>;
1843
1861
  declare const LayoutElementSchema: z.ZodType<LayoutElement>;
1844
1862
 
@@ -2593,6 +2611,16 @@ declare const EntityContactBindingSchema: z.ZodObject<{
2593
2611
  }, {
2594
2612
  duplicate_policy: "reject" | "flag";
2595
2613
  }>;
2614
+ /**
2615
+ * The write-side shape of the contact-binding setting. `duplicate_policy` is
2616
+ * optional here so an EMPTY object can be sent: that is how a writer says
2617
+ * "clear this entity's binding back to null", which is distinct from omitting
2618
+ * the field (which leaves whatever is stored alone). Reads never return the
2619
+ * empty shape — the server stores null instead.
2620
+ */
2621
+ interface EntityContactBindingInput {
2622
+ duplicate_policy?: ContactBindingDuplicatePolicy;
2623
+ }
2596
2624
  interface Entity extends AuditFields {
2597
2625
  slug: string;
2598
2626
  name: string;
@@ -2607,8 +2635,10 @@ interface Entity extends AuditFields {
2607
2635
  */
2608
2636
  public_record_access: PublicAccessOperation[];
2609
2637
  /**
2610
- * Contact-binding setting (see `EntityContactBinding`). Optional: a Go
2611
- * build that predates the setting omits it, which means `flag`.
2638
+ * Contact-binding setting (see `EntityContactBinding`). Absent on every
2639
+ * entity that never declared one — which is most of them, since the setting
2640
+ * is meaningful only alongside a `contact-address` attribute. Absent means
2641
+ * the effective default, `flag`.
2612
2642
  */
2613
2643
  contact_binding?: EntityContactBinding;
2614
2644
  module_slug: string;
@@ -3115,9 +3145,12 @@ interface CreateEntityRequest {
3115
3145
  */
3116
3146
  public_record_access?: PublicAccessOperation[];
3117
3147
  /**
3118
- * Contact-binding setting; full-replacement on upsert (omitted = `flag`).
3148
+ * Contact-binding setting. Full-replacement on upsert, and its reset target
3149
+ * is ABSENT rather than a materialized default: an upsert that omits the
3150
+ * field clears it back to null, so a manifest that never declares it stays
3151
+ * in sync. Absent behaves as `flag`.
3119
3152
  */
3120
- contact_binding?: EntityContactBinding;
3153
+ contact_binding?: EntityContactBindingInput;
3121
3154
  module_slug: string;
3122
3155
  description: string;
3123
3156
  title_template?: string;
@@ -3130,7 +3163,11 @@ interface UpdateEntityRequest {
3130
3163
  name?: string;
3131
3164
  is_remote?: boolean;
3132
3165
  public_record_access?: PublicAccessOperation[];
3133
- contact_binding?: EntityContactBinding;
3166
+ /**
3167
+ * Omitted leaves the stored binding alone; an EMPTY object clears it back
3168
+ * to null (see `EntityContactBindingInput`).
3169
+ */
3170
+ contact_binding?: EntityContactBindingInput;
3134
3171
  module_slug?: string;
3135
3172
  description?: string;
3136
3173
  title_template?: string;
@@ -5706,4 +5743,4 @@ declare function isCurrentUserDefault(value: unknown): value is CurrentUserDefau
5706
5743
  /** Only the identity-valued attribute types can carry the sentinel. */
5707
5744
  declare function acceptsCurrentUserDefault(type: AttributeType): boolean;
5708
5745
 
5709
- export { type CurrencySymbolSide as $, type AuditFields as A, type ComponentService as B, CURRENT_USER_DEFAULT as C, type ContactAddressAttributeKind as D, type ContactAddressAttributeMeta as E, type FileRef as F, ContactAddressAttributeMetaSchema as G, type ContactBindingDuplicatePolicy as H, type CreateAppConfigurationRequest as I, type CreateAppRequest as J, type CreateComponentRequest as K, type ListOptions as L, type CreateDesignReferenceRequest as M, type CreateEntityExtensionRequest as N, type CreateEntityRequest as O, PageIterator as P, type CreateListExtensionRequest as Q, type CreateListRequest as R, type CreateListViewRequest as S, type CreateMenuConfigurationExtensionRequest as T, type UserRef as U, type CreateMenuConfigurationRequest as V, type CreatePageExtensionRequest as W, type CreatePageRequest as X, type CreateVariableRequest as Y, type CurrencyAttributeMeta as Z, CurrencyAttributeMetaSchema as _, type Attribute as a, MenuConfigurationExtensionPlacementSchema as a$, type CurrencyValue as a0, type CurrentUserDefault as a1, DEFAULT_OPTIONS as a2, DEFAULT_PAGE_SIZE as a3, DONE as a4, type DeployModuleRequest as a5, type DesignReference as a6, type DesignReferenceContent as a7, DesignReferenceSchema as a8, type DesignReferenceService as a9, type ListEntitiesOptions as aA, type ListEntityExtensionsOptions as aB, type ListExtension as aC, type ListExtensionColumnPlacement as aD, ListExtensionColumnPlacementSchema as aE, ListExtensionSchema as aF, type ListExtensionService as aG, type ListFn as aH, type ListListExtensionsOptions as aI, type ListListViewsOptions as aJ, type ListListsOptions as aK, type ListMenuConfigurationExtensionsOptions as aL, type ListMenuConfigurationsOptions as aM, type ListModulesOptions as aN, type ListPageExtensionsOptions as aO, type ListPagesOptions as aP, ListSchema as aQ, type ListService as aR, type ListVariablesOptions as aS, type ListView as aT, ListViewSchema as aU, type ListViewService as aV, type LogicalOperator as aW, MENU_CONFIGURATION_EXTENSION_ANCHOR_ITEMS as aX, type MenuConfiguration as aY, type MenuConfigurationExtension as aZ, type MenuConfigurationExtensionPlacement as a_, type Done as aa, type Entity as ab, type EntityContactBinding as ac, EntityContactBindingSchema as ad, type EntityExtension as ae, EntityExtensionSchema as af, type EntityExtensionService as ag, EntitySchema as ah, type EntityService as ai, type EntityWithSchema as aj, EntityWithSchemaSchema as ak, type EnumAttributeMeta as al, type EnumValue as am, type ExtensionPosition as an, ExtensionPositionSchema as ao, type FileAttributeMeta as ap, FileRefSchema as aq, type FilterElement as ar, FilterElementSchema as as, type FilterGroup as at, FilterGroupSchema as au, type List as av, type ListAppConfigurationsOptions as aw, type ListAppsOptions as ax, type ListComponentsOptions as ay, type ListDesignReferencesOptions as az, type ListResult as b, type UserType as b$, type MenuConfigurationExtensionPosition as b0, MenuConfigurationExtensionPositionSchema as b1, MenuConfigurationExtensionSchema as b2, type MenuConfigurationExtensionService as b3, MenuConfigurationSchema as b4, type MenuConfigurationService as b5, type MenuItem as b6, MenuItemSchema as b7, MenuItemType as b8, MetaClient as b9, type PublicPageResponse as bA, type RelationAttributeMeta as bB, RelationAttributeMetaSchema as bC, type RequestOptions as bD, type ResolvedClientOptions as bE, type ResponseMeta as bF, ResponseMetaSchema as bG, type SortConfig as bH, SortConfigSchema as bI, type SortDirection as bJ, type Timestamps as bK, type TokenProvider as bL, type UpdateAppConfigurationRequest as bM, type UpdateAppRequest as bN, type UpdateComponentRequest as bO, type UpdateDesignReferenceRequest as bP, type UpdateEntityExtensionRequest as bQ, type UpdateEntityRequest as bR, type UpdateListExtensionRequest as bS, type UpdateListRequest as bT, type UpdateListViewRequest as bU, type UpdateMenuConfigurationExtensionRequest as bV, type UpdateMenuConfigurationRequest as bW, type UpdatePageExtensionRequest as bX, type UpdatePageRequest as bY, type UpdateVariableRequest as bZ, UserRefSchema as b_, type MetaListOptions as ba, type Module as bb, ModuleSchema as bc, type ModuleService as bd, type ModuleStatus as be, type OnDeleteAction as bf, OnDeleteActionSchema as bg, PAGE_EXTENSION_ANCHOR_MAIN as bh, PAGE_EXTENSION_ANCHOR_SIDE_PANEL as bi, PLATFORM_ATTRIBUTE_NAMES as bj, PLATFORM_USER_ID as bk, type Page as bl, type PageAction as bm, type PageActionKind as bn, PageActionSchema as bo, type PageExtension as bp, type PageExtensionPlacement as bq, PageExtensionPlacementSchema as br, PageExtensionSchema as bs, type PageExtensionService as bt, type PageLayout as bu, PageLayoutSchema as bv, PageSchema as bw, type PageService as bx, type PageType as by, type PublicPageComponent as bz, ProteosClient as c, type SizingProps as c$, type Variable as c0, VariableSchema as c1, type VariableService as c2, acceptsCurrentUserDefault as c3, allCurrencyCodes as c4, createIterator as c5, createListResultSchema as c6, currencyLabel as c7, currencySymbol as c8, currencySymbolSide as c9, type LayoutAlign as cA, type LayoutElement as cB, LayoutElementSchema as cC, LayoutElementType as cD, type LayoutGap as cE, type LayoutJustify as cF, type LayoutTab as cG, LayoutTabSchema as cH, type ListElement as cI, type NumberAttributeMeta as cJ, type ObjectAttributeMeta as cK, PAGE_BACKGROUND_TOKENS as cL, type PageBackgroundToken as cM, type PageLayoutSidePanel as cN, PageLayoutSidePanelSchema as cO, type PageStyle as cP, PageStyleSchema as cQ, type PrincipalAttributeMeta as cR, type PrincipalType as cS, type RecordFilterElement as cT, type RelatedListElement as cU, type RelatedRecordElement as cV, type ResponsiveSizing as cW, type RowElement as cX, type SectionElement as cY, type SizeValue as cZ, SizeValueSchema as c_, formatAmount as ca, formatMoney as cb, isCurrentUserDefault as cc, isPlatformAttributeName as cd, localeNumberSeparators as ce, parseAmount as cf, parseContactAddressMeta as cg, parseCurrencyMeta as ch, parseFileMeta as ci, parseRelationMeta as cj, platformAttributes as ck, resolveOptions as cl, type AttributeForLookup as cm, type AttributeMeta as cn, BUILT_IN_CONTROLS as co, type BuiltInControlSlug as cp, type CardElement as cq, type ColumnElement as cr, type CommonProps as cs, type ComponentElement as ct, type ControlBucket as cu, type DatetimeAttributeMeta as cv, type DatetimeFormat as cw, type DividerElement as cx, type FieldElement as cy, FileAttributeMetaSchema as cz, type PrincipalRef as d, type StringAttributeMeta as d0, type StringFormat as d1, type TabsElement as d2, type TextElement as d3, type TextVariant as d4, type UserAttributeMeta as d5, UserAttributeMetaSchema as d6, type WorkflowTriggerElement as d7, isBuiltInControl as d8, lookupCompatibleControls as d9, lookupControls as da, lookupPrimaryControl as db, parsePrincipalMeta as dc, parseUserMeta as dd, type PublicAccessOperation as e, type App as f, type AppConfiguration as g, AppConfigurationSchema as h, type AppConfigurationService as i, type AppHome as j, AppHomeSchema as k, type AppHomeType as l, AppSchema as m, type AppService as n, type ArrayAttributeMeta as o, type AttributeAccessRule as p, type AttributeRestrictions as q, AttributeSchema as r, type AttributeType as s, AuditFieldsSchema as t, type ClientOptions as u, type Column as v, ColumnSchema as w, type ComparisonOperator as x, type Component as y, ComponentSchema as z };
5746
+ export { CurrencyAttributeMetaSchema as $, type AuditFields as A, type ComponentService as B, CURRENT_USER_DEFAULT as C, type ContactAddressAttributeKind as D, type ContactAddressAttributeMeta as E, type FileRef as F, ContactAddressAttributeMetaSchema as G, type ContactBindingDuplicatePolicy as H, type CreateAppConfigurationRequest as I, type CreateAppRequest as J, type CreateComponentRequest as K, type ListOptions as L, type CreateDesignReferenceRequest as M, type CreateEntityExtensionRequest as N, type CreateEntityRequest as O, PageIterator as P, type CreateListExtensionRequest as Q, type ResponseMeta as R, type CreateListRequest as S, type CreateListViewRequest as T, type UserRef as U, type CreateMenuConfigurationExtensionRequest as V, type CreateMenuConfigurationRequest as W, type CreatePageExtensionRequest as X, type CreatePageRequest as Y, type CreateVariableRequest as Z, type CurrencyAttributeMeta as _, type Attribute as a, type MenuConfigurationExtensionPlacement as a$, type CurrencySymbolSide as a0, type CurrencyValue as a1, type CurrentUserDefault as a2, DEFAULT_OPTIONS as a3, DEFAULT_PAGE_SIZE as a4, DONE as a5, type DeployModuleRequest as a6, type DesignReference as a7, type DesignReferenceContent as a8, DesignReferenceSchema as a9, type ListDesignReferencesOptions as aA, type ListEntitiesOptions as aB, type ListEntityExtensionsOptions as aC, type ListExtension as aD, type ListExtensionColumnPlacement as aE, ListExtensionColumnPlacementSchema as aF, ListExtensionSchema as aG, type ListExtensionService as aH, type ListFn as aI, type ListListExtensionsOptions as aJ, type ListListViewsOptions as aK, type ListListsOptions as aL, type ListMenuConfigurationExtensionsOptions as aM, type ListMenuConfigurationsOptions as aN, type ListModulesOptions as aO, type ListPageExtensionsOptions as aP, type ListPagesOptions as aQ, ListSchema as aR, type ListService as aS, type ListVariablesOptions as aT, type ListView as aU, ListViewSchema as aV, type ListViewService as aW, type LogicalOperator as aX, MENU_CONFIGURATION_EXTENSION_ANCHOR_ITEMS as aY, type MenuConfiguration as aZ, type MenuConfigurationExtension as a_, type DesignReferenceService as aa, type Done as ab, type Entity as ac, type EntityContactBinding as ad, EntityContactBindingSchema as ae, type EntityExtension as af, EntityExtensionSchema as ag, type EntityExtensionService as ah, EntitySchema as ai, type EntityService as aj, type EntityWithSchema as ak, EntityWithSchemaSchema as al, type EnumAttributeMeta as am, type EnumValue as an, type ExtensionPosition as ao, ExtensionPositionSchema as ap, type FileAttributeMeta as aq, FileRefSchema as ar, type FilterElement as as, FilterElementSchema as at, type FilterGroup as au, FilterGroupSchema as av, type List as aw, type ListAppConfigurationsOptions as ax, type ListAppsOptions as ay, type ListComponentsOptions as az, type ListResult as b, type UserType as b$, MenuConfigurationExtensionPlacementSchema as b0, type MenuConfigurationExtensionPosition as b1, MenuConfigurationExtensionPositionSchema as b2, MenuConfigurationExtensionSchema as b3, type MenuConfigurationExtensionService as b4, MenuConfigurationSchema as b5, type MenuConfigurationService as b6, type MenuItem as b7, MenuItemSchema as b8, MenuItemType as b9, type PublicPageComponent as bA, type PublicPageResponse as bB, type RelationAttributeMeta as bC, RelationAttributeMetaSchema as bD, type RequestOptions as bE, type ResolvedClientOptions as bF, ResponseMetaSchema as bG, type SortConfig as bH, SortConfigSchema as bI, type SortDirection as bJ, type Timestamps as bK, type TokenProvider as bL, type UpdateAppConfigurationRequest as bM, type UpdateAppRequest as bN, type UpdateComponentRequest as bO, type UpdateDesignReferenceRequest as bP, type UpdateEntityExtensionRequest as bQ, type UpdateEntityRequest as bR, type UpdateListExtensionRequest as bS, type UpdateListRequest as bT, type UpdateListViewRequest as bU, type UpdateMenuConfigurationExtensionRequest as bV, type UpdateMenuConfigurationRequest as bW, type UpdatePageExtensionRequest as bX, type UpdatePageRequest as bY, type UpdateVariableRequest as bZ, UserRefSchema as b_, MetaClient as ba, type MetaListOptions as bb, type Module as bc, ModuleSchema as bd, type ModuleService as be, type ModuleStatus as bf, type OnDeleteAction as bg, OnDeleteActionSchema as bh, PAGE_EXTENSION_ANCHOR_MAIN as bi, PAGE_EXTENSION_ANCHOR_SIDE_PANEL as bj, PLATFORM_ATTRIBUTE_NAMES as bk, PLATFORM_USER_ID as bl, type Page as bm, type PageAction as bn, type PageActionKind as bo, PageActionSchema as bp, type PageExtension as bq, type PageExtensionPlacement as br, PageExtensionPlacementSchema as bs, PageExtensionSchema as bt, type PageExtensionService as bu, type PageLayout as bv, PageLayoutSchema as bw, PageSchema as bx, type PageService as by, type PageType as bz, ProteosClient as c, SizeValueSchema as c$, type Variable as c0, VariableSchema as c1, type VariableService as c2, acceptsCurrentUserDefault as c3, allCurrencyCodes as c4, createIterator as c5, createListResultSchema as c6, currencyLabel as c7, currencySymbol as c8, currencySymbolSide as c9, type LayoutAlign as cA, type LayoutElement as cB, LayoutElementSchema as cC, LayoutElementType as cD, type LayoutGap as cE, type LayoutJustify as cF, type LayoutTab as cG, LayoutTabSchema as cH, type ListElement as cI, type NumberAttributeMeta as cJ, type ObjectAttributeMeta as cK, PAGE_BACKGROUND_TOKENS as cL, type PageBackgroundToken as cM, type PageLayoutSidePanel as cN, PageLayoutSidePanelSchema as cO, type PageStyle as cP, PageStyleSchema as cQ, type PrincipalAttributeMeta as cR, type PrincipalType as cS, type RecordFilterElement as cT, type RelatedListElement as cU, type RelatedRecordElement as cV, type ResponsiveSizing as cW, type RowElement as cX, type SchedulingPickerElement as cY, type SectionElement as cZ, type SizeValue as c_, formatAmount as ca, formatMoney as cb, isCurrentUserDefault as cc, isPlatformAttributeName as cd, localeNumberSeparators as ce, parseAmount as cf, parseContactAddressMeta as cg, parseCurrencyMeta as ch, parseFileMeta as ci, parseRelationMeta as cj, platformAttributes as ck, resolveOptions as cl, type AttributeForLookup as cm, type AttributeMeta as cn, BUILT_IN_CONTROLS as co, type BuiltInControlSlug as cp, type CardElement as cq, type ColumnElement as cr, type CommonProps as cs, type ComponentElement as ct, type ControlBucket as cu, type DatetimeAttributeMeta as cv, type DatetimeFormat as cw, type DividerElement as cx, type FieldElement as cy, FileAttributeMetaSchema as cz, type PrincipalRef as d, type SizingProps as d0, type StringAttributeMeta as d1, type StringFormat as d2, type TabsElement as d3, type TextElement as d4, type TextVariant as d5, type UserAttributeMeta as d6, UserAttributeMetaSchema as d7, type WorkflowTriggerElement as d8, isBuiltInControl as d9, lookupCompatibleControls as da, lookupControls as db, lookupPrimaryControl as dc, parsePrincipalMeta as dd, parseUserMeta as de, type PublicAccessOperation as e, type App as f, type AppConfiguration as g, AppConfigurationSchema as h, type AppConfigurationService as i, type AppHome as j, AppHomeSchema as k, type AppHomeType as l, AppSchema as m, type AppService as n, type ArrayAttributeMeta as o, type AttributeAccessRule as p, type AttributeRestrictions as q, AttributeSchema as r, type AttributeType as s, AuditFieldsSchema as t, type ClientOptions as u, type Column as v, ColumnSchema as w, type ComparisonOperator as x, type Component as y, ComponentSchema as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proteos/sdk",
3
- "version": "0.53.0",
3
+ "version": "0.54.1",
4
4
  "license": "Apache-2.0",
5
5
  "description": "TypeScript SDK for the Proteos platform",
6
6
  "repository": {
@@ -66,8 +66,8 @@
66
66
  "tsup": "^8.3.0",
67
67
  "typescript": "^5.7.0",
68
68
  "vitest": "^3.0.0",
69
- "@proteos/tsconfig": "0.0.0",
70
- "@proteos/biome-config": "0.0.0"
69
+ "@proteos/biome-config": "0.0.0",
70
+ "@proteos/tsconfig": "0.0.0"
71
71
  },
72
72
  "scripts": {
73
73
  "build": "tsup",
@@ -108,6 +108,14 @@ export const PLATFORM_ENTITIES: readonly PlatformEntity[] = [
108
108
  // Connectors (connector-service). `connections` above is shared; this is the
109
109
  // manifest catalog.
110
110
  { slug: 'connectors', name: 'Connectors' },
111
+ // Scheduling (scheduling-service)
112
+ { slug: 'calendar-connections', name: 'Calendar Connections' },
113
+ { slug: 'calendars', name: 'Calendars' },
114
+ { slug: 'calendar-events', name: 'Calendar Events' },
115
+ { slug: 'calendar-event-types', name: 'Calendar Event Types' },
116
+ { slug: 'scheduling-links', name: 'Scheduling Links' },
117
+ { slug: 'scheduling-profiles', name: 'Scheduling Profiles' },
118
+ { slug: 'availability-constraints', name: 'Availability Constraints' },
111
119
  ] as const
112
120
 
113
121
  /** Just the platform entity slugs, in canonical order. */
@@ -81,6 +81,12 @@ export interface Connector {
81
81
  has_default_app_credentials?: boolean
82
82
  config_schema?: Attribute[]
83
83
  methods: ConnectorMethod[]
84
+ /**
85
+ * Coarse, provider-neutral tags a first-party service filters the catalog
86
+ * by (`calendar`: the grant can drive the platform calendar mirror).
87
+ * snake_case, declared by the manifest.
88
+ */
89
+ capabilities?: string[]
84
90
  origin: 'pre_built' | 'custom'
85
91
  module_slug?: string
86
92
  status: 'active' | 'inactive'
@@ -152,6 +158,8 @@ export interface ListConnectorsQuery {
152
158
  page?: number
153
159
  page_size?: number
154
160
  status?: string
161
+ /** Only connectors declaring this capability (e.g. `calendar`). */
162
+ capability?: string
155
163
  }
156
164
 
157
165
  export interface ListConnectorConnectionsQuery {
package/src/index.ts CHANGED
@@ -792,6 +792,93 @@ export {
792
792
  SortConfigSchema,
793
793
  VariableSchema,
794
794
  } from './meta/index.js'
795
+ // Scheduling types (scheduling-service: calendar connections, calendars,
796
+ // scheduling profiles, the calendar_event mirror)
797
+ export type {
798
+ Assignment,
799
+ AvailabilityConstraint,
800
+ AvailabilityConstraintService,
801
+ AvailabilityKind,
802
+ BookingContact,
803
+ BookSchedulingLinkRequest,
804
+ BookSchedulingLinkResponse,
805
+ Calendar,
806
+ CalendarAttendee,
807
+ CalendarAttendeeRequest,
808
+ CalendarConnection,
809
+ CalendarConnectionService,
810
+ CalendarConnectionStatus,
811
+ CalendarEvent,
812
+ CalendarEventService,
813
+ CalendarEventType,
814
+ CalendarEventTypeService,
815
+ CalendarEventsResponse,
816
+ CalendarProvider,
817
+ CalendarService,
818
+ CalendarSync,
819
+ CalendarSyncStatus,
820
+ CalendarVisibility,
821
+ CalendarWatch,
822
+ ConferencingProvider,
823
+ CreateAvailabilityConstraintRequest,
824
+ CreateCalendarConnectionRequest,
825
+ CancelPublicCalendarEventRequest,
826
+ CreateCalendarEventRequest,
827
+ CreateSchedulingLinkRequest,
828
+ EventLocation,
829
+ EventSource,
830
+ EventStatus,
831
+ EventTransparency,
832
+ EventVisibility,
833
+ EventWriteStatus,
834
+ GetPublicSlotsQuery,
835
+ GetSlotsRequest,
836
+ GetSlotsResponse,
837
+ HostsRequest,
838
+ ListAvailabilityConstraintsQuery,
839
+ ListCalendarConnectionsQuery,
840
+ ListCalendarEventTypesQuery,
841
+ ListCalendarEventsQuery,
842
+ ListCalendarsQuery,
843
+ ListSchedulingLinksQuery,
844
+ LocationKind,
845
+ // Aliased: the conversation module already exports its own ListResponse.
846
+ ListResponse as SchedulingListResponse,
847
+ NotifyMode,
848
+ ParticipationStatus,
849
+ PublicBookSchedulingLinkResponse,
850
+ PublicCalendarEvent,
851
+ PublicCalendarEventType,
852
+ PublicEventLocation,
853
+ PublicHost,
854
+ PublicSchedulingLink,
855
+ PublicSchedulingService,
856
+ PutCalendarEventTypeRequest,
857
+ PutSchedulingProfileRequest,
858
+ RecordRef,
859
+ RecurrenceScope,
860
+ ReschedulePublicCalendarEventRequest,
861
+ RescheduleHost,
862
+ RespondCalendarEventRequest,
863
+ SchedulingLink,
864
+ SchedulingLinkService,
865
+ SchedulingProfile,
866
+ SchedulingProfileService,
867
+ Slot,
868
+ SlotParameters,
869
+ SlotService,
870
+ SlotUnavailability,
871
+ SlotUnavailabilityReason,
872
+ UpdateCalendarSyncRequest,
873
+ UpdateAvailabilityConstraintRequest,
874
+ UpdateCalendarConnectionRequest,
875
+ UpdateCalendarEventRequest,
876
+ UpdateCalendarEventTypeRequest,
877
+ UpdateCalendarRequest,
878
+ UpdateSchedulingLinkRequest,
879
+ } from './scheduling/index.js'
880
+ // Scheduling client (scheduling-service)
881
+ export { SchedulingClient } from './scheduling/index.js'
795
882
  export type {
796
883
  CreateFileMetadata,
797
884
  FileService,
@@ -23,6 +23,7 @@ export const LayoutElementType = {
23
23
  RecordFilter: 'record_filter',
24
24
  List: 'list',
25
25
  WorkflowTrigger: 'workflow_trigger',
26
+ SchedulingPicker: 'scheduling_picker',
26
27
  } as const
27
28
  export type LayoutElementType = (typeof LayoutElementType)[keyof typeof LayoutElementType]
28
29
 
@@ -257,7 +258,25 @@ export type WorkflowTriggerElement = CommonProps & {
257
258
  execution_attribute?: string
258
259
  }
259
260
 
260
- export type TextVariant = 'heading' | 'subheading' | 'body' | 'caption' | 'callout'
261
+ /**
262
+ * Embeds a scheduling link's booking flow (type → time → details →
263
+ * confirmation) in the layout — the in-page counterpart of /s/:orgId/:key.
264
+ * `type_key` pre-selects one of the link's types (the picker shows the choice
265
+ * otherwise), `host_user_id` pins one host, `contact_id` is a Liquid template
266
+ * over the page scope that binds the booking to a known contact (no name /
267
+ * email asked). Allowed on every page type; public pages book through the
268
+ * unauthenticated surface.
269
+ */
270
+ export type SchedulingPickerElement = CommonProps & {
271
+ type: 'scheduling_picker'
272
+ link_key: string
273
+ type_key?: string
274
+ host_user_id?: string
275
+ contact_id?: string
276
+ is_header_hidden?: boolean
277
+ }
278
+
279
+ export type TextVariant = 'heading' | 'subheading' | 'body' | 'caption' | 'callout' | 'block-title'
261
280
 
262
281
  export type TextElement = CommonProps & {
263
282
  type: 'text'
@@ -280,6 +299,7 @@ export type LayoutElement =
280
299
  | RecordFilterElement
281
300
  | ListElement
282
301
  | WorkflowTriggerElement
302
+ | SchedulingPickerElement
283
303
 
284
304
  // ──────────────────────────────────────────────────────────── Schemas ──
285
305
 
@@ -407,8 +427,17 @@ export const LayoutElementSchema: z.ZodType<LayoutElement> = z.lazy(() =>
407
427
  z.object({
408
428
  type: z.literal('text'),
409
429
  ...commonPropsShape,
410
- variant: z.enum(['heading', 'subheading', 'body', 'caption', 'callout']),
430
+ variant: z.enum(['heading', 'subheading', 'body', 'caption', 'callout', 'block-title']),
411
431
  content: z.string().min(1),
412
432
  }),
433
+ z.object({
434
+ type: z.literal('scheduling_picker'),
435
+ ...commonPropsShape,
436
+ link_key: z.string().min(1),
437
+ type_key: z.string().min(1).optional(),
438
+ host_user_id: z.string().min(1).optional(),
439
+ contact_id: z.string().optional(),
440
+ is_header_hidden: z.boolean().optional(),
441
+ }),
413
442
  ]),
414
443
  ) as unknown as z.ZodType<LayoutElement>
@@ -29,6 +29,7 @@ export {
29
29
  LayoutTabSchema,
30
30
  type ListElement,
31
31
  type RecordFilterElement,
32
+ type SchedulingPickerElement,
32
33
  type WorkflowTriggerElement,
33
34
  type RelatedListElement,
34
35
  type RelatedRecordElement,
package/src/meta/types.ts CHANGED
@@ -646,6 +646,17 @@ export const EntityContactBindingSchema = z.object({
646
646
  duplicate_policy: z.enum(['reject', 'flag']),
647
647
  })
648
648
 
649
+ /**
650
+ * The write-side shape of the contact-binding setting. `duplicate_policy` is
651
+ * optional here so an EMPTY object can be sent: that is how a writer says
652
+ * "clear this entity's binding back to null", which is distinct from omitting
653
+ * the field (which leaves whatever is stored alone). Reads never return the
654
+ * empty shape — the server stores null instead.
655
+ */
656
+ export interface EntityContactBindingInput {
657
+ duplicate_policy?: ContactBindingDuplicatePolicy
658
+ }
659
+
649
660
  export interface Entity extends AuditFields {
650
661
  slug: string
651
662
  name: string
@@ -660,8 +671,10 @@ export interface Entity extends AuditFields {
660
671
  */
661
672
  public_record_access: PublicAccessOperation[]
662
673
  /**
663
- * Contact-binding setting (see `EntityContactBinding`). Optional: a Go
664
- * build that predates the setting omits it, which means `flag`.
674
+ * Contact-binding setting (see `EntityContactBinding`). Absent on every
675
+ * entity that never declared one — which is most of them, since the setting
676
+ * is meaningful only alongside a `contact-address` attribute. Absent means
677
+ * the effective default, `flag`.
665
678
  */
666
679
  contact_binding?: EntityContactBinding
667
680
  module_slug: string
@@ -730,9 +743,12 @@ export interface CreateEntityRequest {
730
743
  */
731
744
  public_record_access?: PublicAccessOperation[]
732
745
  /**
733
- * Contact-binding setting; full-replacement on upsert (omitted = `flag`).
746
+ * Contact-binding setting. Full-replacement on upsert, and its reset target
747
+ * is ABSENT rather than a materialized default: an upsert that omits the
748
+ * field clears it back to null, so a manifest that never declares it stays
749
+ * in sync. Absent behaves as `flag`.
734
750
  */
735
- contact_binding?: EntityContactBinding
751
+ contact_binding?: EntityContactBindingInput
736
752
  module_slug: string
737
753
  description: string
738
754
  title_template?: string
@@ -746,7 +762,11 @@ export interface UpdateEntityRequest {
746
762
  name?: string
747
763
  is_remote?: boolean
748
764
  public_record_access?: PublicAccessOperation[]
749
- contact_binding?: EntityContactBinding
765
+ /**
766
+ * Omitted leaves the stored binding alone; an EMPTY object clears it back
767
+ * to null (see `EntityContactBindingInput`).
768
+ */
769
+ contact_binding?: EntityContactBindingInput
750
770
  module_slug?: string
751
771
  description?: string
752
772
  title_template?: string