import {z} from 'zod' export type UpdateWebhookEventInput = {event?: ('*' | 'Account.*' | 'Account.Create' | 'Account.Delete' | 'Account.DocumentLinked' | 'Account.OwnerChanged' | 'Account.Update' | 'ActivityRelation.*' | 'ActivityRelation.Create' | 'ActivityRelation.Delete' | 'ActivityRelation.Update' | 'Appointment.*' | 'Appointment.Comment' | 'Appointment.Create' | 'Appointment.Delete' | 'Appointment.DocumentLinked' | 'Appointment.OwnerChanged' | 'Appointment.Update' | 'Contact.*' | 'Contact.Create' | 'Contact.Delete' | 'Contact.DocumentLinked' | 'Contact.OwnerChanged' | 'Contact.Update' | 'ContactAccountRelation.*' | 'ContactAccountRelation.Create' | 'ContactAccountRelation.Delete' | 'ContactAccountRelation.Update' | 'Currency.*' | 'Currency.Create' | 'Currency.Delete' | 'Currency.Update' | 'CurrencyExchangeRate.*' | 'CurrencyExchangeRate.Create' | 'CurrencyExchangeRate.Delete' | 'CurrencyExchangeRate.Update' | 'CurrencyExchangeRatesList.*' | 'CurrencyExchangeRatesList.Create' | 'CurrencyExchangeRatesList.Delete' | 'CurrencyExchangeRatesList.Update' | 'CustomEntity.*' | 'CustomEntity.Create' | 'CustomEntity.Delete' | 'CustomEntity.DocumentLinked' | 'CustomEntity.OwnerChanged' | 'CustomEntity.Update' | 'Email.*' | 'Email.Create' | 'Email.Delete' | 'Email.DocumentLinked' | 'Email.Update' | 'Lead.*' | 'Lead.BackToLead' | 'Lead.Create' | 'Lead.Delete' | 'Lead.DocumentLinked' | 'Lead.Lost' | 'Lead.OwnerChanged' | 'Lead.Update' | 'LeadOpptyAccountRelation.*' | 'LeadOpptyAccountRelation.Create' | 'LeadOpptyAccountRelation.Delete' | 'LeadOpptyAccountRelation.Update' | 'LeadOpptyContactRelation.*' | 'LeadOpptyContactRelation.Create' | 'LeadOpptyContactRelation.Delete' | 'LeadOpptyContactRelation.Update' | 'Memo.*' | 'Memo.Comment' | 'Memo.Create' | 'Memo.Delete' | 'Memo.DocumentLinked' | 'Memo.Update' | 'Message.*' | 'Message.Create' | 'Message.Delete' | 'Message.DocumentLinked' | 'Message.Update' | 'Note.*' | 'Note.Create' | 'Note.Delete' | 'Note.Update' | 'Opportunity.*' | 'Opportunity.Create' | 'Opportunity.Delete' | 'Opportunity.DocumentLinked' | 'Opportunity.Lost' | 'Opportunity.Move' | 'Opportunity.OwnerChanged' | 'Opportunity.Qualify' | 'Opportunity.Update' | 'Opportunity.Won' | 'OpptyProductRelation.*' | 'OpptyProductRelation.Create' | 'OpptyProductRelation.Delete' | 'OpptyProductRelation.Update' | 'Product.*' | 'Product.Create' | 'Product.Delete' | 'Product.Update' | 'ProductPriceList.*' | 'ProductPriceList.Create' | 'ProductPriceList.Delete' | 'ProductPriceList.Update' | 'ProductPriceListPrice.*' | 'ProductPriceListPrice.Create' | 'ProductPriceListPrice.Delete' | 'ProductPriceListPrice.Update' | 'Project.*' | 'Project.Create' | 'Project.Delete' | 'Project.DocumentLinked' | 'Project.OwnerChanged' | 'Project.Update' | 'Quote.*' | 'Quote.Create' | 'Quote.Delete' | 'Quote.DocumentLinked' | 'Quote.Lost' | 'Quote.Move' | 'Quote.OwnerChanged' | 'Quote.Update' | 'Quote.Won' | 'QuoteAccountRelation.*' | 'QuoteAccountRelation.Create' | 'QuoteAccountRelation.Delete' | 'QuoteAccountRelation.Update' | 'QuoteContactRelation.*' | 'QuoteContactRelation.Create' | 'QuoteContactRelation.Delete' | 'QuoteContactRelation.Update' | 'Task.*' | 'Task.Comment' | 'Task.Create' | 'Task.Delete' | 'Task.DocumentLinked' | 'Task.OwnerChanged' | 'Task.Update') | undefined, webhook_id?: string | undefined}; export type PatchApiEntitiesWebhookEventsIdArgs = {id: string, 'validation-level'?: number | undefined, body: UpdateWebhookEventInput}; export type PatchApiEntitiesWebhookEventsIdOptions = {baseUrl?: string | undefined, basicAuth?: {username: string, password: string} | undefined, fetch?: typeof fetch | undefined}; export const webhookEvent = z.object({is_delete_protected: z.boolean(), id: z.string(), is_deleted: z.boolean().optional(), modified: z.string().optional(), created: z.string().optional(), webhook: z.string(), event: z.enum(["*", "Account.*", "Account.Create", "Account.Delete", "Account.DocumentLinked", "Account.OwnerChanged", "Account.Update", "ActivityRelation.*", "ActivityRelation.Create", "ActivityRelation.Delete", "ActivityRelation.Update", "Appointment.*", "Appointment.Comment", "Appointment.Create", "Appointment.Delete", "Appointment.DocumentLinked", "Appointment.OwnerChanged", "Appointment.Update", "Contact.*", "Contact.Create", "Contact.Delete", "Contact.DocumentLinked", "Contact.OwnerChanged", "Contact.Update", "ContactAccountRelation.*", "ContactAccountRelation.Create", "ContactAccountRelation.Delete", "ContactAccountRelation.Update", "Currency.*", "Currency.Create", "Currency.Delete", "Currency.Update", "CurrencyExchangeRate.*", "CurrencyExchangeRate.Create", "CurrencyExchangeRate.Delete", "CurrencyExchangeRate.Update", "CurrencyExchangeRatesList.*", "CurrencyExchangeRatesList.Create", "CurrencyExchangeRatesList.Delete", "CurrencyExchangeRatesList.Update", "CustomEntity.*", "CustomEntity.Create", "CustomEntity.Delete", "CustomEntity.DocumentLinked", "CustomEntity.OwnerChanged", "CustomEntity.Update", "Email.*", "Email.Create", "Email.Delete", "Email.DocumentLinked", "Email.Update", "Lead.*", "Lead.BackToLead", "Lead.Create", "Lead.Delete", "Lead.DocumentLinked", "Lead.Lost", "Lead.OwnerChanged", "Lead.Update", "LeadOpptyAccountRelation.*", "LeadOpptyAccountRelation.Create", "LeadOpptyAccountRelation.Delete", "LeadOpptyAccountRelation.Update", "LeadOpptyContactRelation.*", "LeadOpptyContactRelation.Create", "LeadOpptyContactRelation.Delete", "LeadOpptyContactRelation.Update", "Memo.*", "Memo.Comment", "Memo.Create", "Memo.Delete", "Memo.DocumentLinked", "Memo.Update", "Message.*", "Message.Create", "Message.Delete", "Message.DocumentLinked", "Message.Update", "Note.*", "Note.Create", "Note.Delete", "Note.Update", "Opportunity.*", "Opportunity.Create", "Opportunity.Delete", "Opportunity.DocumentLinked", "Opportunity.Lost", "Opportunity.Move", "Opportunity.OwnerChanged", "Opportunity.Qualify", "Opportunity.Update", "Opportunity.Won", "OpptyProductRelation.*", "OpptyProductRelation.Create", "OpptyProductRelation.Delete", "OpptyProductRelation.Update", "Product.*", "Product.Create", "Product.Delete", "Product.Update", "ProductPriceList.*", "ProductPriceList.Create", "ProductPriceList.Delete", "ProductPriceList.Update", "ProductPriceListPrice.*", "ProductPriceListPrice.Create", "ProductPriceListPrice.Delete", "ProductPriceListPrice.Update", "Project.*", "Project.Create", "Project.Delete", "Project.DocumentLinked", "Project.OwnerChanged", "Project.Update", "Quote.*", "Quote.Create", "Quote.Delete", "Quote.DocumentLinked", "Quote.Lost", "Quote.Move", "Quote.OwnerChanged", "Quote.Update", "Quote.Won", "QuoteAccountRelation.*", "QuoteAccountRelation.Create", "QuoteAccountRelation.Delete", "QuoteAccountRelation.Update", "QuoteContactRelation.*", "QuoteContactRelation.Create", "QuoteContactRelation.Delete", "QuoteContactRelation.Update", "Task.*", "Task.Comment", "Task.Create", "Task.Delete", "Task.DocumentLinked", "Task.OwnerChanged", "Task.Update"]), webhook_id: z.string()}); export const patchApiEntitiesWebhookEventsIdResponse = z.object({success: z.boolean().optional(), data: webhookEvent.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 }; /** * WebhookEvents.update * * PATCH /entities/WebhookEvents/{id} */ export const patchApiEntitiesWebhookEventsId = async (args: PatchApiEntitiesWebhookEventsIdArgs, options?: PatchApiEntitiesWebhookEventsIdOptions) => { const {baseUrl = "https://us-east.api.coevera.com/api/v100/rest/spaces/your_space_id", fetch: fetchFn = fetch, basicAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (args['validation-level'] != null) query.append("validation-level", String(args['validation-level'])) if (basicAuth !== undefined) headers.set('authorization', `Basic ${btoa(`${basicAuth.username}:${basicAuth.password}`)}`) const url = `${baseUrl.replace(/\/+$/, '')}/entities/WebhookEvents/${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(patchApiEntitiesWebhookEventsIdResponse, await res.json()) };