import {z} from 'zod' export type GetApiV1OrganizationsSettingsSectionArgs = {'expand=work_task'?: string | undefined, section: string}; export type GetApiV1OrganizationsSettingsSectionOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; export const getApiV1OrganizationsSettingsSectionResponse = z.union([z.object({bookingwizard: z.unknown(), general: z.object({lock_date: z.unknown(), lock_days: z.unknown(), account_name: z.unknown(), enforce_inactvity_login: z.boolean().optional(), creditcard_entry_for_appointment: z.number().int().optional(), enable_connect: z.boolean().optional(), include_tip_and_ssg_in_actual_amt: z.boolean().optional(), enable_prepaid_card: z.boolean().optional(), enable_cross_center_redemptions_for_prepaid_card: z.boolean().optional(), enable_gift_card: z.boolean().optional(), Enable_TaxInclusive_Pricing: z.boolean().optional(), GiftCardSale_TaxInclusive: z.boolean().optional(), Enable_Mobile_Pos_In_Android: z.boolean().optional(), enable_memberships: z.boolean().optional(), enable_packages: z.boolean().optional(), Enable_Self_Checkin: z.boolean().optional(), Guest_Kiosk_Enabled: z.boolean().optional(), Support_For_Saved_Cards_During_Migration: z.boolean().optional(), enable_self_pay: z.boolean().optional(), enable_auto_pay: z.boolean().optional(), restrict_zenotiGo_for_members: z.boolean().optional(), auto_pay_terms_and_conditions: z.string().optional(), self_checkin_descriptions: z.string().optional(), self_pay_descriptions: z.string().optional(), enable_tcpa_for_promotional_messages: z.boolean().optional(), grid_records: z.number().int().optional(), enable_classes: z.boolean().optional(), sms_appointment_remainder_template: z.boolean().optional(), email_appointment_remainder_template: z.boolean().optional(), referral_marketing_referral_id: z.unknown(), disable_pre_authorization: z.boolean().optional(), allow_sale_of_onetimeuse_giftcards: z.boolean().optional(), make_old_guest_form_version_read_only: z.boolean().optional(), max_file_upload_size: z.number().int().optional(), org_name: z.string().optional()}).optional(), employee: z.object({dashboard: z.boolean().optional(), multiple_check_ins: z.boolean().optional(), multiple_deputations: z.boolean().optional(), biometric: z.boolean().optional(), enforce_passcode: z.boolean().optional(), mobile_checkin: z.boolean().optional(), special_leave_allowed_on: z.number().int().optional(), weekend_days: z.number().int().optional(), weekly_offs_allowed_per_week: z.number().int().optional(), weekly_offs_allowed_on: z.number().int().optional(), Enable_emp_sales_drill_down: z.boolean().optional(), bypass_authentication_for_employee_checkin: z.boolean().optional(), allow_invoice_item_commission_adjustment: z.boolean().optional(), enable_employee_tip_declaration: z.boolean().optional(), restrict_time_entry_to_logedin_user: z.boolean().optional(), declared_tips_label: z.string().optional()}).optional(), memberships: z.object({enable_redemptions_for_open_memberships: z.boolean().optional(), allow_membership_redemption_while_booking: z.boolean().optional(), redeem_membership_service_credits_post_expiry: z.number().int().optional(), allow_redemption_for_suspended_memberships: z.object({credit: z.boolean().optional(), discount: z.boolean().optional()}).optional(), default_freeze_type: z.number().int().optional(), support_redemption_with_partial_credits: z.boolean().optional(), enable_credit_redemption_for_products: z.boolean().optional(), enable_hybrid_model_for_membership_credits: z.boolean().optional()}).optional(), feedback_settings: z.object({FeedbackVersion: z.number().int().optional()}).optional(), payment: z.object({default_payment_option: z.string().optional(), offline_check_mandatory_fields: z.number().int().optional(), org_payment_options: z.array(z.object({PaymentOptionId: z.string().optional(), PaymentOptionType: z.string().optional(), PaymentType: z.string().optional(), PaymentOptionAssigned: z.number().int().optional(), TypeOfPayment: z.number().int().optional(), OrgPaymentOptionId: z.string().optional(), PaymentOptionType2: z.string().optional(), CustomPaymentName: z.string().optional()})).optional()}).optional(), appSettings: z.object({signalr_url: z.string().optional(), log_signalr: z.boolean().optional(), api_base_address: z.string().optional(), signalr_enabled: z.boolean().optional(), mms_signalr_enabled: z.unknown(), mms_signalr_enabled_for_all_orgs: z.unknown(), skip_db_call_in_signalr: z.boolean().optional(), fdo_v2_appt_book_base_url: z.string().optional()}).optional(), guest: z.object({is_room_mandatory_for_appointment: z.boolean().optional(), is_mobile_number_mandatory: z.boolean().optional(), phone_number_range: z.string().optional(), guest_manadatory_fields: z.unknown(), search_guest_across_centers: z.boolean().optional(), Send_Marketing_Email_To_NewGuest: z.boolean().optional(), Send_Marketing_SMS_To_NewGuest: z.boolean().optional(), Send_Transactional_SMS_To_NewGuest: z.boolean().optional(), Minor_Age: z.number().int().optional(), Check_Minor_Age: z.boolean().optional(), Send_Marketing_Notifiactions_To_Minors: z.boolean().optional(), guest_form_type: z.number().int().optional(), Allow_Guest_With_Same_Email_Address: z.boolean().optional(), Allow_Guest_With_Same_Mobile: z.boolean().optional(), Enable_Other_Gender: z.boolean().optional(), auto_generate_code: z.boolean().optional(), enforce_guest_fields: z.boolean().optional(), enforce_guest_field_check: z.boolean().optional(), transactional_optin: z.number().int().optional(), whatsapp_optin: z.number().int().optional(), marketing_optin: z.number().int().optional(), private_notes_custom_labels: z.object({private_label: z.string().optional(), private_label_2: z.string().optional(), private_label_3: z.string().optional()}).optional()}).optional(), invoice: z.object({enable_price_increase: z.boolean().optional(), enable_price_adjustment: z.boolean().optional(), enforce_sale_by_product_sale: z.boolean().optional(), auto_generate_prepaid_number: z.boolean().optional(), prepaid_number_seed_value: z.number().int().optional(), enforce_sale_by_for_prepaid_card: z.boolean().optional(), enforce_sale_by_for_gift_card: z.boolean().optional(), allow_prepaid_cards_with_different_price_and_value: z.boolean().optional(), enforce_manage_authorization: z.boolean().optional(), allow_gift_cards_with_different_price_and_value: z.boolean().optional(), enforce_manager_authorization_for_giftcard: z.boolean().optional(), allow_changes_to_other_center_invoices: z.boolean().optional(), auto_generate_giftcard_number: z.boolean().optional(), mask_gift_card_numbers: z.boolean().optional(), restrict_txns_if_register_not_closed: z.boolean().optional(), enable_multiple_cash_registers: z.boolean().optional(), maintain_separate_product_sales: z.boolean().optional(), Allow_product_refund_by_cash: z.boolean().optional(), Allow_giftcard_amount_to_be_refunded_to_same_card: z.boolean().optional(), Enable_CashBack: z.boolean().optional(), CashBack_Label: z.string().optional(), Tips_Label: z.string().optional(), SSG_Label: z.string().optional(), invoice_no_label: z.string().optional(), Restrict_Voiding_Bill_After_Day_Closure: z.boolean().optional(), print_item_quantities_on_receipt: z.boolean().optional(), enable_discount_on_invoice: z.boolean().optional(), enable_service_sale_during_billing: z.number().int().optional(), auto_select_cash_register: z.boolean().optional(), enable_sms_otp: z.boolean().optional(), enable_email_otp: z.boolean().optional(), default_otp_mode: z.number().int().optional(), discount_on_base_price: z.number().int().optional(), enable_group_booking: z.boolean().optional(), enable_environment_fee: z.boolean().optional(), enable_rounding: z.boolean().optional(), membership_sale_to_existing_members: z.number().int().optional(), remove_invoice_from_group_on_reopening: z.boolean().optional(), enable_environmental_fee: z.boolean().optional(), auto_close_invoice: z.boolean().optional(), default_action_on_invoice_Close: z.number().int().optional(), card_types: z.array(z.object({PaymentOptionId: z.string().optional(), PaymentOptionType: z.string().optional(), PaymentOptionId1: z.string().optional(), PaymentType: z.string().optional()})).optional(), default_card_type: z.unknown(), change_saleby_from_pos: z.boolean().optional(), enable_offline_payment_refunds: z.boolean().optional(), multiple_emp_commission_mask: z.number().int().optional(), default_item_type_in_invoice: z.number().int().optional(), allow_adjustments_to_discounts: z.boolean().optional(), is_authentication_needed_for_discount: z.boolean().optional(), enforce_employee_passcode_in_pos: z.boolean().optional(), show_split_commission_prompt_for: z.number().int().optional(), allow_services_to_swap_in_pos: z.boolean().optional(), allow_bill_comments: z.boolean().optional(), block_cross_center_refund_for_packages: z.boolean().optional(), block_multiple_invoices: z.boolean().optional(), enable_gc_refunds: z.boolean().optional(), block_cross_center_refunds_for_gc: z.boolean().optional(), enable_gst: z.boolean().optional(), enable_gst_sequences: z.boolean().optional(), enable_guest_profile_picture: z.boolean().optional(), do_not_display_cc_receipt_after_payment: z.boolean().optional(), allow_lp_redemption_with_post_accrual: z.boolean().optional()}).optional(), appointment_book: z.object({collect_feedback: z.boolean().optional(), alow_booking_voiding_appointments_in_past: z.boolean().optional(), appointment_booking_during_therapist_non_schedule_hours: z.number().int().optional(), Allow_refunds_on_services: z.boolean().optional(), Search_Guests_across_centers: z.number().int().optional(), appointments_time_slots: z.number().int().optional(), show_zero_duration_segments: z.boolean().optional(), allow_resizing_of_appt_blocks: z.number().int().optional(), allow_appointment_overlap: z.number().int().optional(), app_creation_in_non_scheduled_hours: z.number().int().optional(), enable_no_show_fee: z.boolean().optional(), enable_cancellation_fee: z.boolean().optional(), allow_surprise_appointment: z.boolean().optional(), service_duration_in_minutes: z.boolean().optional(), enable_virtual_appointment: z.boolean().optional(), show_all_therapist: z.boolean().optional(), consider_base_service_price_for_booking: z.boolean().optional(), enable_parallel_services: z.boolean().optional(), dont_send_reminder_if_confirmed: z.boolean().optional(), display_utilization_in_appointment_book: z.boolean().optional()}).optional(), packages: z.object({enable_redemptions_for_open_packages: z.boolean().optional(), enable_package_redemptions_without_payment: z.boolean().optional(), enable_cross_center_redemption_for_packages: z.boolean().optional(), package_enable_schedule_payment: z.boolean().optional(), scheduling_payments: z.number().int().optional(), edit_package_payment_schedule: z.number().int().optional(), allow_multiple_package_refunds: z.boolean().optional()}).optional(), inventory: z.object({Allow_to_restock_returned_products: z.boolean().optional()}).optional(), Mobile: z.object({BlockAccessOutsideGeofence: z.object({BlockAccessToEntireApplication: z.boolean().optional(), BlockAccessToGuestData: z.boolean().optional()}).optional(), PayPeriodBasedReporting: z.boolean().optional(), AllowTrackingConsumables: z.boolean().optional(), disable_employee_checkin_outside_geofence: z.boolean().optional(), allow_capturing_employee_signature_in_mobile: z.boolean().optional()}).optional(), CustomData: z.object({Service_CustomData_label: z.string().optional(), Guest_CustomData_label: z.string().optional(), UnifiedView_label: z.string().optional(), CustomFields_label: z.string().optional(), restrict_form: z.number().int().optional()}).optional(), loyalty_points: z.object({support_enrollment_for_loyaltypoints: z.boolean().optional(), min_points_for_redemption: z.number().int().optional(), max_points_for_redemption: z.number().int().optional(), max_redemption_type_in_invoice: z.boolean().optional(), enforce_redemption_of_points_in_increments_of: z.unknown(), redeem_services: z.boolean().optional(), redeem_packages: z.boolean().optional(), redeem_products: z.boolean().optional(), redeem_classes: z.boolean().optional(), redeem_day_packages: z.boolean().optional(), redeem_gift_cards: z.boolean().optional(), enable_direct_enrollment_for_tiers: z.boolean().optional(), restrict_loyaltypoints_for_members_only: z.boolean().optional(), loyalty_points_accrual_based_on: z.number().int().optional(), consider_only_closed_invoices_for_tiers: z.boolean().optional(), enable_lp_redemption_tnc: z.boolean().optional()}).optional(), training: z.object({fitness_kiosk_enabled: z.boolean().optional()}).optional()}), z.object({dashboard: z.boolean().optional(), multiple_check_ins: z.boolean().optional(), multiple_deputations: z.boolean().optional(), biometric: z.boolean().optional(), enforce_passcode: z.boolean().optional(), mobile_checkin: z.boolean().optional(), special_leave_allowed_on: z.number().int().optional(), weekend_days: z.number().int().optional(), weekly_offs_allowed_per_week: z.number().int().optional(), weekly_offs_allowed_on: z.number().int().optional(), Enable_emp_sales_drill_down: z.boolean().optional(), bypass_authentication_for_employee_checkin: z.boolean().optional(), allow_invoice_item_commission_adjustment: z.boolean().optional(), enable_employee_tip_declaration: z.boolean().optional(), restrict_time_entry_to_logedin_user: z.boolean().optional(), declared_tips_label: z.string().optional()}), z.object({dashboard: z.boolean().optional(), multiple_check_ins: z.boolean().optional(), multiple_deputations: z.boolean().optional(), biometric: z.boolean().optional(), enforce_passcode: z.boolean().optional(), mobile_checkin: z.boolean().optional(), special_leave_allowed_on: z.number().int().optional(), weekend_days: z.number().int().optional(), weekly_offs_allowed_per_week: z.number().int().optional(), weekly_offs_allowed_on: z.number().int().optional(), Enable_emp_sales_drill_down: z.boolean().optional(), bypass_authentication_for_employee_checkin: z.boolean().optional(), allow_invoice_item_commission_adjustment: z.boolean().optional(), enable_employee_tip_declaration: z.boolean().optional(), restrict_time_entry_to_logedin_user: z.boolean().optional(), declared_tips_label: z.string().optional(), primary_work_task: z.object({is_primary_work_task_enabled: z.boolean().optional(), id: z.string().optional()}).optional()})]); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Retrieve the organization settings * * GET /v1/organizations/settings/{section} */ export const getApiV1OrganizationsSettingsSection = async (args: GetApiV1OrganizationsSettingsSectionArgs, options?: GetApiV1OrganizationsSettingsSectionOptions) => { const {baseUrl = "https://api.zenoti.com", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args['expand=work_task'] != null) query.append("expand=work_task", String(args['expand=work_task'])) const url = `${baseUrl.replace(/\/+$/, '')}/v1/organizations/settings/${encodeURIComponent(String(args.section))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(getApiV1OrganizationsSettingsSectionResponse, await res.json()) };