import {z} from 'zod' export type RoleModuleAccessLevel = 'full' | 'some' | 'none'; export type PatchApiRolesIdArgs = {id: string, body: {name?: string | undefined, default?: boolean | undefined, description?: (string | null) | undefined, contact_renewal_reminders_access?: RoleModuleAccessLevel | undefined, contacts_access?: RoleModuleAccessLevel | undefined, dashboards_access?: RoleModuleAccessLevel | undefined, documents_access?: RoleModuleAccessLevel | undefined, equipments_access?: RoleModuleAccessLevel | undefined, expense_entries_access?: RoleModuleAccessLevel | undefined, faults_access?: RoleModuleAccessLevel | undefined, fuel_entries_access?: RoleModuleAccessLevel | undefined, inspections_access?: RoleModuleAccessLevel | undefined, integrations_access?: RoleModuleAccessLevel | undefined, issues_access?: RoleModuleAccessLevel | undefined, location_entries_access?: RoleModuleAccessLevel | undefined, meter_entries_access?: RoleModuleAccessLevel | undefined, msi_access?: RoleModuleAccessLevel | undefined, parts_inventory_access?: RoleModuleAccessLevel | undefined, places_access?: RoleModuleAccessLevel | undefined, purchase_orders_access?: RoleModuleAccessLevel | undefined, recalls_access?: RoleModuleAccessLevel | undefined, reports_access?: RoleModuleAccessLevel | undefined, service_entries_access?: RoleModuleAccessLevel | undefined, service_programs_access?: RoleModuleAccessLevel | undefined, service_reminders_access?: RoleModuleAccessLevel | undefined, service_task_management_access?: RoleModuleAccessLevel | undefined, vehicle_renewal_reminders_access?: RoleModuleAccessLevel | undefined, vehicles_access?: RoleModuleAccessLevel | undefined, vendors_access?: RoleModuleAccessLevel | undefined, work_orders_access?: RoleModuleAccessLevel | undefined, vehicles_create?: boolean | undefined, vehicles_edit?: boolean | undefined, vehicles_archive_delete?: boolean | undefined, vehicles_update_status?: boolean | undefined, vehicles_manage_vehicle_assignment?: boolean | undefined, vehicles_view_details?: boolean | undefined, vehicles_view_financial_info?: boolean | undefined, vehicles_view_custom_fields?: boolean | undefined, vehicles_view_documents?: boolean | undefined, vehicles_manage_documents?: boolean | undefined, vehicles_manage_photos?: boolean | undefined, vehicles_export_data?: boolean | undefined, equipments_create?: boolean | undefined, equipments_view_details?: boolean | undefined, equipments_view_financial_info?: boolean | undefined, equipments_view_custom_fields?: boolean | undefined, equipments_export_data?: boolean | undefined, equipments_view_documents?: boolean | undefined, equipments_manage_documents?: boolean | undefined, equipments_manage_photos?: boolean | undefined, equipments_archive_delete?: boolean | undefined, equipments_edit?: boolean | undefined, equipments_update_status?: boolean | undefined, equipments_manage_assignments?: boolean | undefined, meter_entries_create?: boolean | undefined, meter_entries_view?: boolean | undefined, meter_entries_export_data?: boolean | undefined, meter_entries_edit?: boolean | undefined, meter_entries_delete?: boolean | undefined, fuel_entries_create?: boolean | undefined, fuel_entries_view?: boolean | undefined, fuel_entries_export_data?: boolean | undefined, fuel_entries_edit?: boolean | undefined, fuel_entries_delete?: boolean | undefined, issues_create?: boolean | undefined, issues_view_open?: boolean | undefined, issues_view_resolved_or_closed?: boolean | undefined, issues_export_data?: boolean | undefined, issues_edit?: boolean | undefined, issues_delete?: boolean | undefined, issues_view_documents?: boolean | undefined, issues_manage_documents?: boolean | undefined, faults_view?: boolean | undefined, faults_export_data?: boolean | undefined, faults_ignore_codes?: boolean | undefined, recalls_view?: boolean | undefined, recalls_export_data?: boolean | undefined, recalls_ignore?: boolean | undefined, service_tasks_create?: boolean | undefined, service_tasks_edit?: boolean | undefined, service_tasks_archive_delete?: boolean | undefined, service_entries_create?: boolean | undefined, service_entries_view?: boolean | undefined, service_entries_view_update_cost_information?: boolean | undefined, service_entries_export_data?: boolean | undefined, service_entries_edit?: boolean | undefined, service_entries_delete?: boolean | undefined, service_entries_view_documents?: boolean | undefined, service_entries_manage_documents?: boolean | undefined, work_orders_create?: boolean | undefined, work_orders_view_incomplete?: boolean | undefined, work_orders_view_completed?: boolean | undefined, work_orders_view_update_cost_information?: boolean | undefined, work_orders_export_data?: boolean | undefined, work_orders_edit?: boolean | undefined, work_orders_edit_number?: boolean | undefined, work_orders_manage_labor_time_entries?: boolean | undefined, work_orders_delete?: boolean | undefined, work_orders_view_documents?: boolean | undefined, work_orders_manage_documents?: boolean | undefined, inspections_manage_inspection_forms?: boolean | undefined, inspections_manage_schedules?: boolean | undefined, inspections_submit_inspections?: boolean | undefined, inspections_view_submissions?: boolean | undefined, inspections_export_data?: boolean | undefined, inspections_edit_submissions?: boolean | undefined, inspections_delete_submissions?: boolean | undefined, msi_manage_payment_profile?: boolean | undefined, msi_manage_ro_notifications?: boolean | undefined, msi_view_account_details?: boolean | undefined, msi_view_account_summary?: boolean | undefined, msi_view_repair_order_notifications?: boolean | undefined, msi_view_statements?: boolean | undefined, msi_view_transactions?: boolean | undefined, service_reminders_create?: boolean | undefined, service_reminders_view?: boolean | undefined, service_reminders_export_data?: boolean | undefined, service_reminders_edit?: boolean | undefined, service_reminders_delete?: boolean | undefined, service_programs_create_update?: boolean | undefined, service_programs_view?: boolean | undefined, vehicle_renewal_reminders_create?: boolean | undefined, vehicle_renewal_reminders_view?: boolean | undefined, vehicle_renewal_reminders_export_data?: boolean | undefined, vehicle_renewal_reminders_edit?: boolean | undefined, vehicle_renewal_reminders_delete?: boolean | undefined, contacts_create?: boolean | undefined, contacts_edit?: boolean | undefined, contacts_view_basic_info?: boolean | undefined, contacts_view_contact_and_personal_info?: boolean | undefined, contacts_view_custom_fields?: boolean | undefined, contacts_export_data?: boolean | undefined, contacts_archive_delete?: boolean | undefined, contacts_view_documents?: boolean | undefined, contacts_manage_documents?: boolean | undefined, contacts_manage_photos?: boolean | undefined, contact_renewal_reminders_create?: boolean | undefined, contact_renewal_reminders_view?: boolean | undefined, contact_renewal_reminders_export_data?: boolean | undefined, contact_renewal_reminders_edit?: boolean | undefined, contact_renewal_reminders_delete?: boolean | undefined, vendors_create?: boolean | undefined, vendors_view?: boolean | undefined, vendors_export_data?: boolean | undefined, vendors_edit?: boolean | undefined, vendors_delete?: boolean | undefined, vendors_view_documents?: boolean | undefined, vendors_manage_documents?: boolean | undefined, vendors_manage_photos?: boolean | undefined, parts_inventory_create_parts?: boolean | undefined, parts_inventory_edit_parts?: boolean | undefined, parts_inventory_update_inventory_quantities?: boolean | undefined, parts_inventory_view_part_details?: boolean | undefined, parts_inventory_view_part_activity?: boolean | undefined, parts_inventory_export_data?: boolean | undefined, parts_inventory_archive_delete_parts?: boolean | undefined, parts_inventory_view_documents?: boolean | undefined, parts_inventory_manage_documents?: boolean | undefined, purchase_orders_create_update?: boolean | undefined, purchase_orders_delete?: boolean | undefined, purchase_orders_view?: boolean | undefined, purchase_orders_export_data?: boolean | undefined, purchase_orders_receive?: boolean | undefined, purchase_orders_approve?: boolean | undefined, reports_vehicles?: boolean | undefined, reports_contacts?: boolean | undefined, reports_parts?: boolean | undefined, reports_view_external_reports?: boolean | undefined, reports_shared?: boolean | undefined, places_create?: boolean | undefined, places_view?: boolean | undefined, places_export_data?: boolean | undefined, places_edit?: boolean | undefined, places_delete?: boolean | undefined, location_entries_create?: boolean | undefined, location_entries_view?: boolean | undefined, location_entries_edit?: boolean | undefined, location_entries_delete?: boolean | undefined, expense_entries_create?: boolean | undefined, expense_entries_view?: boolean | undefined, expense_entries_export_data?: boolean | undefined, expense_entries_edit?: boolean | undefined, expense_entries_delete?: boolean | undefined, dashboards_manage?: boolean | undefined, dashboards_share?: boolean | undefined, documents_view_global_documents?: boolean | undefined, documents_manage_global_documents?: boolean | undefined, gps_manage_devices?: boolean | undefined}}; export type PatchApiRolesIdOptions = {baseUrl?: string | undefined, apiKey?: string | undefined, accountToken?: string | undefined, fetch?: typeof fetch | undefined}; export const roleModuleAccessLevel = z.enum(["full", "some", "none"]); export const roleModuleAccess = z.object({contact_renewal_reminders_access: roleModuleAccessLevel.optional(), contacts_access: roleModuleAccessLevel.optional(), dashboards_access: roleModuleAccessLevel.optional(), documents_access: roleModuleAccessLevel.optional(), equipments_access: roleModuleAccessLevel.optional(), expense_entries_access: roleModuleAccessLevel.optional(), faults_access: roleModuleAccessLevel.optional(), fuel_entries_access: roleModuleAccessLevel.optional(), inspections_access: roleModuleAccessLevel.optional(), integrations_access: roleModuleAccessLevel.optional(), issues_access: roleModuleAccessLevel.optional(), location_entries_access: roleModuleAccessLevel.optional(), meter_entries_access: roleModuleAccessLevel.optional(), msi_access: roleModuleAccessLevel.optional(), parts_inventory_access: roleModuleAccessLevel.optional(), places_access: roleModuleAccessLevel.optional(), purchase_orders_access: roleModuleAccessLevel.optional(), recalls_access: roleModuleAccessLevel.optional(), reports_access: roleModuleAccessLevel.optional(), service_entries_access: roleModuleAccessLevel.optional(), service_programs_access: roleModuleAccessLevel.optional(), service_reminders_access: roleModuleAccessLevel.optional(), service_task_management_access: roleModuleAccessLevel.optional(), vehicle_renewal_reminders_access: roleModuleAccessLevel.optional(), vehicles_access: roleModuleAccessLevel.optional(), vendors_access: roleModuleAccessLevel.optional(), work_orders_access: roleModuleAccessLevel.optional()}); export const roleModulePermissions = z.object({vehicles_create: z.boolean().optional(), vehicles_edit: z.boolean().optional(), vehicles_archive_delete: z.boolean().optional(), vehicles_update_status: z.boolean().optional(), vehicles_manage_vehicle_assignment: z.boolean().optional(), vehicles_view_details: z.boolean().optional(), vehicles_view_financial_info: z.boolean().optional(), vehicles_view_custom_fields: z.boolean().optional(), vehicles_view_documents: z.boolean().optional(), vehicles_manage_documents: z.boolean().optional(), vehicles_manage_photos: z.boolean().optional(), vehicles_export_data: z.boolean().optional(), equipments_create: z.boolean().optional(), equipments_view_details: z.boolean().optional(), equipments_view_financial_info: z.boolean().optional(), equipments_view_custom_fields: z.boolean().optional(), equipments_export_data: z.boolean().optional(), equipments_view_documents: z.boolean().optional(), equipments_manage_documents: z.boolean().optional(), equipments_manage_photos: z.boolean().optional(), equipments_archive_delete: z.boolean().optional(), equipments_edit: z.boolean().optional(), equipments_update_status: z.boolean().optional(), equipments_manage_assignments: z.boolean().optional(), meter_entries_create: z.boolean().optional(), meter_entries_view: z.boolean().optional(), meter_entries_export_data: z.boolean().optional(), meter_entries_edit: z.boolean().optional(), meter_entries_delete: z.boolean().optional(), fuel_entries_create: z.boolean().optional(), fuel_entries_view: z.boolean().optional(), fuel_entries_export_data: z.boolean().optional(), fuel_entries_edit: z.boolean().optional(), fuel_entries_delete: z.boolean().optional(), issues_create: z.boolean().optional(), issues_view_open: z.boolean().optional(), issues_view_resolved_or_closed: z.boolean().optional(), issues_export_data: z.boolean().optional(), issues_edit: z.boolean().optional(), issues_delete: z.boolean().optional(), issues_view_documents: z.boolean().optional(), issues_manage_documents: z.boolean().optional(), faults_view: z.boolean().optional(), faults_export_data: z.boolean().optional(), faults_ignore_codes: z.boolean().optional(), recalls_view: z.boolean().optional(), recalls_export_data: z.boolean().optional(), recalls_ignore: z.boolean().optional(), service_tasks_create: z.boolean().optional(), service_tasks_edit: z.boolean().optional(), service_tasks_archive_delete: z.boolean().optional(), service_entries_create: z.boolean().optional(), service_entries_view: z.boolean().optional(), service_entries_view_update_cost_information: z.boolean().optional(), service_entries_export_data: z.boolean().optional(), service_entries_edit: z.boolean().optional(), service_entries_delete: z.boolean().optional(), service_entries_view_documents: z.boolean().optional(), service_entries_manage_documents: z.boolean().optional(), work_orders_create: z.boolean().optional(), work_orders_view_incomplete: z.boolean().optional(), work_orders_view_completed: z.boolean().optional(), work_orders_view_update_cost_information: z.boolean().optional(), work_orders_export_data: z.boolean().optional(), work_orders_edit: z.boolean().optional(), work_orders_edit_number: z.boolean().optional(), work_orders_manage_labor_time_entries: z.boolean().optional(), work_orders_delete: z.boolean().optional(), work_orders_view_documents: z.boolean().optional(), work_orders_manage_documents: z.boolean().optional(), inspections_manage_inspection_forms: z.boolean().optional(), inspections_manage_schedules: z.boolean().optional(), inspections_submit_inspections: z.boolean().optional(), inspections_view_submissions: z.boolean().optional(), inspections_export_data: z.boolean().optional(), inspections_edit_submissions: z.boolean().optional(), inspections_delete_submissions: z.boolean().optional(), msi_manage_payment_profile: z.boolean().optional(), msi_manage_ro_notifications: z.boolean().optional(), msi_view_account_details: z.boolean().optional(), msi_view_account_summary: z.boolean().optional(), msi_view_repair_order_notifications: z.boolean().optional(), msi_view_statements: z.boolean().optional(), msi_view_transactions: z.boolean().optional(), service_reminders_create: z.boolean().optional(), service_reminders_view: z.boolean().optional(), service_reminders_export_data: z.boolean().optional(), service_reminders_edit: z.boolean().optional(), service_reminders_delete: z.boolean().optional(), service_programs_create_update: z.boolean().optional(), service_programs_view: z.boolean().optional(), vehicle_renewal_reminders_create: z.boolean().optional(), vehicle_renewal_reminders_view: z.boolean().optional(), vehicle_renewal_reminders_export_data: z.boolean().optional(), vehicle_renewal_reminders_edit: z.boolean().optional(), vehicle_renewal_reminders_delete: z.boolean().optional(), contacts_create: z.boolean().optional(), contacts_edit: z.boolean().optional(), contacts_view_basic_info: z.boolean().optional(), contacts_view_contact_and_personal_info: z.boolean().optional(), contacts_view_custom_fields: z.boolean().optional(), contacts_export_data: z.boolean().optional(), contacts_archive_delete: z.boolean().optional(), contacts_view_documents: z.boolean().optional(), contacts_manage_documents: z.boolean().optional(), contacts_manage_photos: z.boolean().optional(), contact_renewal_reminders_create: z.boolean().optional(), contact_renewal_reminders_view: z.boolean().optional(), contact_renewal_reminders_export_data: z.boolean().optional(), contact_renewal_reminders_edit: z.boolean().optional(), contact_renewal_reminders_delete: z.boolean().optional(), vendors_create: z.boolean().optional(), vendors_view: z.boolean().optional(), vendors_export_data: z.boolean().optional(), vendors_edit: z.boolean().optional(), vendors_delete: z.boolean().optional(), vendors_view_documents: z.boolean().optional(), vendors_manage_documents: z.boolean().optional(), vendors_manage_photos: z.boolean().optional(), parts_inventory_create_parts: z.boolean().optional(), parts_inventory_edit_parts: z.boolean().optional(), parts_inventory_update_inventory_quantities: z.boolean().optional(), parts_inventory_view_part_details: z.boolean().optional(), parts_inventory_view_part_activity: z.boolean().optional(), parts_inventory_export_data: z.boolean().optional(), parts_inventory_archive_delete_parts: z.boolean().optional(), parts_inventory_view_documents: z.boolean().optional(), parts_inventory_manage_documents: z.boolean().optional(), purchase_orders_create_update: z.boolean().optional(), purchase_orders_delete: z.boolean().optional(), purchase_orders_view: z.boolean().optional(), purchase_orders_export_data: z.boolean().optional(), purchase_orders_receive: z.boolean().optional(), purchase_orders_approve: z.boolean().optional(), reports_vehicles: z.boolean().optional(), reports_contacts: z.boolean().optional(), reports_parts: z.boolean().optional(), reports_view_external_reports: z.boolean().optional(), reports_shared: z.boolean().optional(), places_create: z.boolean().optional(), places_view: z.boolean().optional(), places_export_data: z.boolean().optional(), places_edit: z.boolean().optional(), places_delete: z.boolean().optional(), location_entries_create: z.boolean().optional(), location_entries_view: z.boolean().optional(), location_entries_edit: z.boolean().optional(), location_entries_delete: z.boolean().optional(), expense_entries_create: z.boolean().optional(), expense_entries_view: z.boolean().optional(), expense_entries_export_data: z.boolean().optional(), expense_entries_edit: z.boolean().optional(), expense_entries_delete: z.boolean().optional(), dashboards_manage: z.boolean().optional(), dashboards_share: z.boolean().optional(), documents_view_global_documents: z.boolean().optional(), documents_manage_global_documents: z.boolean().optional(), gps_manage_devices: z.boolean().optional()}); export const role = z.object({id: z.number().int().gte(1).optional(), created_at: z.string(), updated_at: z.string(), name: z.string(), description: z.string().nullable(), default: z.boolean(), type: z.enum(["StandardRole", "CustomRole"]), module_access: roleModuleAccess, module_permissions: roleModulePermissions}); 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 }; /** * Update Role * * PATCH /roles/{id} */ export const patchApiRolesId = async (args: PatchApiRolesIdArgs, options?: PatchApiRolesIdOptions) => { const {baseUrl = "https://secure.fleetio.com/api", fetch: fetchFn = fetch, apiKey, accountToken} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (apiKey !== undefined) headers.set("Authorization", apiKey) if (accountToken !== undefined) headers.set("Account-Token", accountToken) const url = `${baseUrl.replace(/\/+$/, '')}/roles/${encodeURIComponent(String(args.id))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "PATCH", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(role, await res.json()) };