@praxium/sdk 0.3.66 → 0.3.70

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/README.md CHANGED
@@ -85,8 +85,8 @@ Your website needs two environment variables to connect to the Praxium platform,
85
85
 
86
86
  | Variable | Purpose | Example |
87
87
  |----------|---------|---------|
88
- | `PRAXIUM_API_URL` | Your tenant's admin portal URL. The SDK sends API requests to this host. | `https://ijfysio.admin.praxium.nl` |
89
- | `PRAXIUM_API_KEY` | HMAC API key for authentication. Generated in the admin portal under API Profiles. The tenant slug is embedded in the key — no need to configure it separately. | `hmac_v1_ijfysio_default_17..._abc...` |
88
+ | `PRAXIUM_API_URL` | Your tenant's admin portal URL. The SDK sends API requests to this host. | `https://mypractice.admin.praxium.nl` |
89
+ | `PRAXIUM_API_KEY` | HMAC API key for authentication. Generated in the admin portal under API Profiles. The tenant slug is embedded in the key — no need to configure it separately. | `hmac_v1_mypractice_default_17..._abc...` |
90
90
 
91
91
  **Optional (only if using ISR revalidation webhooks):**
92
92
 
package/dist/index.d.ts CHANGED
@@ -180,37 +180,7 @@ type SocialLinks = {
180
180
  */
181
181
  type TeamMembers = Array<PublicTeamMember>;
182
182
  /**
183
- * Custom field with server-resolved label (specific locale requested).
184
- * When locale is 'nl' or 'en', the server resolves labels and values
185
- * to that locale — label is a plain string, values are resolved strings.
186
- */
187
- type CustomField = {
188
- /** Field identifier (snake_case) */
189
- identifier: string;
190
- /** Custom field type (e.g., STRING, LONG_TEXT, SEARCHABLE_LIST) */
191
- type: string;
192
- /** Server-resolved field label for the requested locale */
193
- label: string;
194
- /** Resolved field value (type depends on field.type) */
195
- value: unknown;
196
- };
197
- /**
198
- * Custom field with multilingual label (locale='*' requested).
199
- * When locale is '*', the server returns all translations — label
200
- * is a MultilingualText object, values are multilingual objects.
201
- */
202
- type MultilingualCustomField = {
203
- /** Field identifier (snake_case) */
204
- identifier: string;
205
- /** Custom field type (e.g., STRING, LONG_TEXT, SEARCHABLE_LIST) */
206
- type: string;
207
- /** Multilingual field label (all available locales) */
208
- label: MultilingualText;
209
- /** Multilingual field value (type depends on field.type) */
210
- value: unknown;
211
- };
212
- /**
213
- * Public team member profile with server-resolved custom fields
183
+ * Public team member with custom fields
214
184
  */
215
185
  type PublicTeamMember = {
216
186
  /**
@@ -226,45 +196,30 @@ type PublicTeamMember = {
226
196
  */
227
197
  publicImage: string;
228
198
  /**
229
- * Custom fields with server-resolved labels and values
199
+ * Custom fields assigned to the public-team API access profile
230
200
  */
231
201
  customFields: Array<CustomField>;
232
202
  };
233
203
  /**
234
- * Public team member profile with multilingual custom fields (locale='*')
204
+ * Custom field exposed via API access profile. Multilingual text resolved based on Accept-Language header.
235
205
  */
236
- type MultilingualTeamMember = {
237
- /**
238
- * Staff member UUID
239
- */
240
- id: string;
241
- /**
242
- * Public display name
243
- */
244
- publicName: string;
206
+ type CustomField = {
245
207
  /**
246
- * Public profile image URL (Supabase CDN)
208
+ * Field identifier (snake_case)
247
209
  */
248
- publicImage: string;
210
+ identifier: string;
249
211
  /**
250
- * Custom fields with multilingual labels and values
212
+ * Custom field type (e.g., STRING, LONG_TEXT, SEARCHABLE_LIST)
251
213
  */
252
- customFields: Array<MultilingualCustomField>;
253
- };
254
- /** Text in multiple languages. Keys are locale codes (e.g., 'nl', 'en'). */
255
- type MultilingualText = Record<string, string>;
256
- /**
257
- * Bilingual text with Dutch (nl) and English (en) translations
258
- */
259
- type BilingualText = {
214
+ type: string;
260
215
  /**
261
- * Dutch text
216
+ * Field label resolved to the requested locale (from Accept-Language)
262
217
  */
263
- nl: string;
218
+ label: string;
264
219
  /**
265
- * English text
220
+ * Resolved field value (type depends on field type and locale mode)
266
221
  */
267
- en: string;
222
+ value: unknown;
268
223
  };
269
224
  /**
270
225
  * FAQs grouped by category, ordered by category.order then faq.order
@@ -621,7 +576,7 @@ type BookableVariantInfo = {
621
576
  */
622
577
  isDefault: boolean;
623
578
  /**
624
- * Cal.com event type slug for online booking
579
+ * Cal.eu event type slug for online booking
625
580
  */
626
581
  externalEventTypeSlug: string | null;
627
582
  /**
@@ -646,7 +601,62 @@ type SubmitContactFormData = {
646
601
  tenantSlug: TenantSlug;
647
602
  };
648
603
  query?: never;
649
- url: '/api/public/{tenantSlug}/contact';
604
+ url: '/api/{tenantSlug}/contact';
605
+ };
606
+
607
+ /**
608
+ * Multilingual type definitions for locale='*' mode.
609
+ *
610
+ * These types describe the response shape when Accept-Language: * is sent.
611
+ * The same API endpoints return different shapes based on the locale:
612
+ * - Specific locale ('nl', 'en') → labels are strings, values are resolved
613
+ * - Wildcard ('*') → labels are MultilingualText objects, values are multilingual
614
+ *
615
+ * These types are NOT in the OpenAPI spec (the spec describes the locale-specific
616
+ * shape only). They are maintained manually here — safe from regeneration.
617
+ *
618
+ * @see src/tenant-client.ts — createPraxiumClient() overloads
619
+ */
620
+ /** Text in multiple languages. Keys are locale codes (e.g., 'nl', 'en'). */
621
+ type MultilingualText = Record<string, string>;
622
+ /**
623
+ * Bilingual text with Dutch (nl) and English (en) translations.
624
+ * Stricter than MultilingualText — guarantees both locales are present.
625
+ */
626
+ type BilingualText = {
627
+ /** Dutch text */
628
+ nl: string;
629
+ /** English text */
630
+ en: string;
631
+ };
632
+ /**
633
+ * Custom field with multilingual label (locale='*' mode).
634
+ * When locale is '*', the server returns all translations — label
635
+ * is a MultilingualText object instead of a resolved string.
636
+ */
637
+ type MultilingualCustomField = {
638
+ /** Field identifier (snake_case) */
639
+ identifier: string;
640
+ /** Custom field type (e.g., STRING, LONG_TEXT, SEARCHABLE_LIST) */
641
+ type: string;
642
+ /** Multilingual field label (all available locales) */
643
+ label: MultilingualText;
644
+ /** Multilingual field value (type depends on field.type) */
645
+ value: unknown;
646
+ };
647
+ /**
648
+ * Public team member profile with multilingual custom fields (locale='*' mode).
649
+ * Same shape as PublicTeamMember but with MultilingualCustomField instead of CustomField.
650
+ */
651
+ type MultilingualTeamMember = {
652
+ /** Staff member UUID */
653
+ id: string;
654
+ /** Public display name */
655
+ publicName: string;
656
+ /** Public profile image URL (Supabase CDN) */
657
+ publicImage: string;
658
+ /** Custom fields with multilingual labels and values */
659
+ customFields: Array<MultilingualCustomField>;
650
660
  };
651
661
 
652
662
  /**
package/dist/index.js CHANGED
@@ -805,17 +805,17 @@ var client = createClient(createConfig({ baseUrl: "https://platform.praxium.nl"
805
805
  // src/generated/sdk.gen.ts
806
806
  var getOpeningHours = (options) => (options.client ?? client).get({
807
807
  security: [{ scheme: "bearer", type: "http" }],
808
- url: "/api/public/{tenantSlug}/opening-hours",
808
+ url: "/api/{tenantSlug}/opening-hours",
809
809
  ...options
810
810
  });
811
811
  var getContactDetails = (options) => (options.client ?? client).get({
812
812
  security: [{ scheme: "bearer", type: "http" }],
813
- url: "/api/public/{tenantSlug}/contact",
813
+ url: "/api/{tenantSlug}/contact",
814
814
  ...options
815
815
  });
816
816
  var submitContactForm = (options) => (options.client ?? client).post({
817
817
  security: [{ scheme: "bearer", type: "http" }],
818
- url: "/api/public/{tenantSlug}/contact",
818
+ url: "/api/{tenantSlug}/contact",
819
819
  ...options,
820
820
  headers: {
821
821
  "Content-Type": "application/json",
@@ -824,57 +824,57 @@ var submitContactForm = (options) => (options.client ?? client).post({
824
824
  });
825
825
  var getLocation = (options) => (options.client ?? client).get({
826
826
  security: [{ scheme: "bearer", type: "http" }],
827
- url: "/api/public/{tenantSlug}/location",
827
+ url: "/api/{tenantSlug}/location",
828
828
  ...options
829
829
  });
830
830
  var getBusinessName = (options) => (options.client ?? client).get({
831
831
  security: [{ scheme: "bearer", type: "http" }],
832
- url: "/api/public/{tenantSlug}/business",
832
+ url: "/api/{tenantSlug}/business",
833
833
  ...options
834
834
  });
835
835
  var getSocialLinks = (options) => (options.client ?? client).get({
836
836
  security: [{ scheme: "bearer", type: "http" }],
837
- url: "/api/public/{tenantSlug}/social-links",
837
+ url: "/api/{tenantSlug}/social-links",
838
838
  ...options
839
839
  });
840
840
  var getTeamMembers = (options) => (options.client ?? client).get({
841
841
  security: [{ scheme: "bearer", type: "http" }],
842
- url: "/api/public/{tenantSlug}/team",
842
+ url: "/api/{tenantSlug}/team",
843
843
  ...options
844
844
  });
845
845
  var getFaq = (options) => (options.client ?? client).get({
846
846
  security: [{ scheme: "bearer", type: "http" }],
847
- url: "/api/public/{tenantSlug}/faq",
847
+ url: "/api/{tenantSlug}/faq",
848
848
  ...options
849
849
  });
850
850
  var getServiceVariants = (options) => (options.client ?? client).get({
851
851
  security: [{ scheme: "bearer", type: "http" }],
852
- url: "/api/public/{tenantSlug}/service-variants",
852
+ url: "/api/{tenantSlug}/service-variants",
853
853
  ...options
854
854
  });
855
855
  var getInsuranceInfo = (options) => (options.client ?? client).get({
856
856
  security: [{ scheme: "bearer", type: "http" }],
857
- url: "/api/public/{tenantSlug}/insurance",
857
+ url: "/api/{tenantSlug}/insurance",
858
858
  ...options
859
859
  });
860
860
  var getFeatures = (options) => (options.client ?? client).get({
861
861
  security: [{ scheme: "bearer", type: "http" }],
862
- url: "/api/public/{tenantSlug}/features",
862
+ url: "/api/{tenantSlug}/features",
863
863
  ...options
864
864
  });
865
865
  var getPaymentMethods = (options) => (options.client ?? client).get({
866
866
  security: [{ scheme: "bearer", type: "http" }],
867
- url: "/api/public/{tenantSlug}/payments",
867
+ url: "/api/{tenantSlug}/payments",
868
868
  ...options
869
869
  });
870
870
  var getPolicyInfo = (options) => (options.client ?? client).get({
871
871
  security: [{ scheme: "bearer", type: "http" }],
872
- url: "/api/public/{tenantSlug}/policy",
872
+ url: "/api/{tenantSlug}/policy",
873
873
  ...options
874
874
  });
875
875
  var getBookableServices = (options) => (options.client ?? client).get({
876
876
  security: [{ scheme: "bearer", type: "http" }],
877
- url: "/api/public/{tenantSlug}/services",
877
+ url: "/api/{tenantSlug}/services",
878
878
  ...options
879
879
  });
880
880
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxium/sdk",
3
- "version": "0.3.66",
3
+ "version": "0.3.70",
4
4
  "description": "Official TypeScript SDK for the Praxium platform API",
5
5
  "type": "module",
6
6
  "exports": {