// This file is auto-generated by @hey-api/openapi-ts import type { Client,Options as ClientOptions, TDataShape } from '@hey-api/client-fetch'; import { client as _heyApiClient } from './client.gen'; import type { ArchiveApiKeyApiV1UserApiKeysApiKeyIdDeleteData, ArchiveApiKeyApiV1UserApiKeysApiKeyIdDeleteError, ArchiveApiKeyApiV1UserApiKeysApiKeyIdDeleteResponse, ArchiveServiceKeyApiV1UserServiceKeysServiceKeyIdDeleteData, ArchiveServiceKeyApiV1UserServiceKeysServiceKeyIdDeleteError, CreateApiKeyApiV1UserApiKeysPostData, CreateApiKeyApiV1UserApiKeysPostError, CreateApiKeyApiV1UserApiKeysPostResponse, CreateCampaignApiV1CampaignCreatePostData, CreateCampaignApiV1CampaignCreatePostError, CreateCampaignApiV1CampaignCreatePostResponse, CreateCredentialApiV1CredentialsPostData, CreateCredentialApiV1CredentialsPostError, CreateCredentialApiV1CredentialsPostResponse, CreateLoadTestApiV1LooptalkLoadTestsPostData, CreateLoadTestApiV1LooptalkLoadTestsPostError, CreateLoadTestApiV1LooptalkLoadTestsPostResponse, CreateOrUpdateEmbedTokenApiV1WorkflowWorkflowIdEmbedTokenPostData, CreateOrUpdateEmbedTokenApiV1WorkflowWorkflowIdEmbedTokenPostError, CreateOrUpdateEmbedTokenApiV1WorkflowWorkflowIdEmbedTokenPostResponse, CreateServiceKeyApiV1UserServiceKeysPostData, CreateServiceKeyApiV1UserServiceKeysPostError, CreateServiceKeyApiV1UserServiceKeysPostResponse, CreateSessionApiV1IntegrationSessionPostData, CreateSessionApiV1IntegrationSessionPostError, CreateSessionApiV1IntegrationSessionPostResponse, CreateTestSessionApiV1LooptalkTestSessionsPostData, CreateTestSessionApiV1LooptalkTestSessionsPostError, CreateTestSessionApiV1LooptalkTestSessionsPostResponse, CreateToolApiV1ToolsPostData, CreateToolApiV1ToolsPostError, CreateToolApiV1ToolsPostResponse, CreateWorkflowApiV1WorkflowCreateDefinitionPostData, CreateWorkflowApiV1WorkflowCreateDefinitionPostError, CreateWorkflowApiV1WorkflowCreateDefinitionPostResponse, CreateWorkflowFromTemplateApiV1WorkflowCreateTemplatePostData, CreateWorkflowFromTemplateApiV1WorkflowCreateTemplatePostError, CreateWorkflowFromTemplateApiV1WorkflowCreateTemplatePostResponse, CreateWorkflowRunApiV1WorkflowWorkflowIdRunsPostData, CreateWorkflowRunApiV1WorkflowWorkflowIdRunsPostError, CreateWorkflowRunApiV1WorkflowWorkflowIdRunsPostResponse, DeactivateEmbedTokenApiV1WorkflowWorkflowIdEmbedTokenDeleteData, DeactivateEmbedTokenApiV1WorkflowWorkflowIdEmbedTokenDeleteError, DeactivateEmbedTokenApiV1WorkflowWorkflowIdEmbedTokenDeleteResponse, DeleteCredentialApiV1CredentialsCredentialUuidDeleteData, DeleteCredentialApiV1CredentialsCredentialUuidDeleteError, DeleteCredentialApiV1CredentialsCredentialUuidDeleteResponse, DeleteToolApiV1ToolsToolUuidDeleteData, DeleteToolApiV1ToolsToolUuidDeleteError, DeleteToolApiV1ToolsToolUuidDeleteResponse, DuplicateWorkflowTemplateApiV1WorkflowTemplatesDuplicatePostData, DuplicateWorkflowTemplateApiV1WorkflowTemplatesDuplicatePostError, DuplicateWorkflowTemplateApiV1WorkflowTemplatesDuplicatePostResponse, GetActiveTestsApiV1LooptalkActiveTestsGetData, GetActiveTestsApiV1LooptalkActiveTestsGetError, GetApiKeysApiV1UserApiKeysGetData, GetApiKeysApiV1UserApiKeysGetError, GetApiKeysApiV1UserApiKeysGetResponse, GetAuthUserApiV1UserAuthUserGetData, GetAuthUserApiV1UserAuthUserGetError, GetAuthUserApiV1UserAuthUserGetResponse, GetCampaignApiV1CampaignCampaignIdGetData, GetCampaignApiV1CampaignCampaignIdGetError, GetCampaignApiV1CampaignCampaignIdGetResponse, GetCampaignProgressApiV1CampaignCampaignIdProgressGetData, GetCampaignProgressApiV1CampaignCampaignIdProgressGetError, GetCampaignProgressApiV1CampaignCampaignIdProgressGetResponse, GetCampaignRunsApiV1CampaignCampaignIdRunsGetData, GetCampaignRunsApiV1CampaignCampaignIdRunsGetError, GetCampaignRunsApiV1CampaignCampaignIdRunsGetResponse, GetCampaignsApiV1CampaignGetData, GetCampaignsApiV1CampaignGetError, GetCampaignsApiV1CampaignGetResponse, GetCampaignSourceDownloadUrlApiV1CampaignCampaignIdSourceDownloadUrlGetData, GetCampaignSourceDownloadUrlApiV1CampaignCampaignIdSourceDownloadUrlGetError, GetCampaignSourceDownloadUrlApiV1CampaignCampaignIdSourceDownloadUrlGetResponse, GetCredentialApiV1CredentialsCredentialUuidGetData, GetCredentialApiV1CredentialsCredentialUuidGetError, GetCredentialApiV1CredentialsCredentialUuidGetResponse, GetCurrentPeriodUsageApiV1OrganizationsUsageCurrentPeriodGetData, GetCurrentPeriodUsageApiV1OrganizationsUsageCurrentPeriodGetError, GetCurrentPeriodUsageApiV1OrganizationsUsageCurrentPeriodGetResponse, GetDailyReportApiV1OrganizationsReportsDailyGetData, GetDailyReportApiV1OrganizationsReportsDailyGetError, GetDailyReportApiV1OrganizationsReportsDailyGetResponse, GetDailyRunsDetailApiV1OrganizationsReportsDailyRunsGetData, GetDailyRunsDetailApiV1OrganizationsReportsDailyRunsGetError, GetDailyRunsDetailApiV1OrganizationsReportsDailyRunsGetResponse, GetDailyUsageBreakdownApiV1OrganizationsUsageDailyBreakdownGetData, GetDailyUsageBreakdownApiV1OrganizationsUsageDailyBreakdownGetError, GetDailyUsageBreakdownApiV1OrganizationsUsageDailyBreakdownGetResponse, GetDefaultConfigurationsApiV1UserConfigurationsDefaultsGetData, GetDefaultConfigurationsApiV1UserConfigurationsDefaultsGetResponse, GetEmbedConfigApiV1PublicEmbedConfigTokenGetData, GetEmbedConfigApiV1PublicEmbedConfigTokenGetError, GetEmbedConfigApiV1PublicEmbedConfigTokenGetResponse, GetEmbedTokenApiV1WorkflowWorkflowIdEmbedTokenGetData, GetEmbedTokenApiV1WorkflowWorkflowIdEmbedTokenGetError, GetEmbedTokenApiV1WorkflowWorkflowIdEmbedTokenGetResponse, GetFileMetadataApiV1S3FileMetadataGetData, GetFileMetadataApiV1S3FileMetadataGetError, GetFileMetadataApiV1S3FileMetadataGetResponse, GetIntegrationAccessTokenApiV1IntegrationIntegrationIdAccessTokenGetData, GetIntegrationAccessTokenApiV1IntegrationIntegrationIdAccessTokenGetError, GetIntegrationAccessTokenApiV1IntegrationIntegrationIdAccessTokenGetResponse, GetIntegrationsApiV1IntegrationGetData, GetIntegrationsApiV1IntegrationGetError, GetIntegrationsApiV1IntegrationGetResponse, GetLoadTestStatsApiV1LooptalkLoadTestsLoadTestGroupIdStatsGetData, GetLoadTestStatsApiV1LooptalkLoadTestsLoadTestGroupIdStatsGetError, GetLoadTestStatsApiV1LooptalkLoadTestsLoadTestGroupIdStatsGetResponse, GetPresignedUploadUrlApiV1S3PresignedUploadUrlPostData, GetPresignedUploadUrlApiV1S3PresignedUploadUrlPostError, GetPresignedUploadUrlApiV1S3PresignedUploadUrlPostResponse, GetServiceKeysApiV1UserServiceKeysGetData, GetServiceKeysApiV1UserServiceKeysGetError, GetServiceKeysApiV1UserServiceKeysGetResponse, GetSignedUrlApiV1S3SignedUrlGetData, GetSignedUrlApiV1S3SignedUrlGetError, GetSignedUrlApiV1S3SignedUrlGetResponse, GetTelephonyConfigurationApiV1OrganizationsTelephonyConfigGetData, GetTelephonyConfigurationApiV1OrganizationsTelephonyConfigGetError, GetTelephonyConfigurationApiV1OrganizationsTelephonyConfigGetResponse, GetTestSessionApiV1LooptalkTestSessionsTestSessionIdGetData, GetTestSessionApiV1LooptalkTestSessionsTestSessionIdGetError, GetTestSessionApiV1LooptalkTestSessionsTestSessionIdGetResponse, GetTestSessionConversationApiV1LooptalkTestSessionsTestSessionIdConversationGetData, GetTestSessionConversationApiV1LooptalkTestSessionsTestSessionIdConversationGetError, GetToolApiV1ToolsToolUuidGetData, GetToolApiV1ToolsToolUuidGetError, GetToolApiV1ToolsToolUuidGetResponse, GetUsageHistoryApiV1OrganizationsUsageRunsGetData, GetUsageHistoryApiV1OrganizationsUsageRunsGetError, GetUsageHistoryApiV1OrganizationsUsageRunsGetResponse, GetUserConfigurationsApiV1UserConfigurationsUserGetData, GetUserConfigurationsApiV1UserConfigurationsUserGetError, GetUserConfigurationsApiV1UserConfigurationsUserGetResponse, GetVoicesApiV1UserConfigurationsVoicesProviderGetData, GetVoicesApiV1UserConfigurationsVoicesProviderGetError, GetVoicesApiV1UserConfigurationsVoicesProviderGetResponse, GetWorkflowApiV1WorkflowFetchWorkflowIdGetData, GetWorkflowApiV1WorkflowFetchWorkflowIdGetError, GetWorkflowApiV1WorkflowFetchWorkflowIdGetResponse, GetWorkflowOptionsApiV1OrganizationsReportsWorkflowsGetData, GetWorkflowOptionsApiV1OrganizationsReportsWorkflowsGetError, GetWorkflowOptionsApiV1OrganizationsReportsWorkflowsGetResponse, GetWorkflowRunApiV1WorkflowWorkflowIdRunsRunIdGetData, GetWorkflowRunApiV1WorkflowWorkflowIdRunsRunIdGetError, GetWorkflowRunApiV1WorkflowWorkflowIdRunsRunIdGetResponse, GetWorkflowRunsApiV1SuperuserWorkflowRunsGetData, GetWorkflowRunsApiV1SuperuserWorkflowRunsGetError, GetWorkflowRunsApiV1SuperuserWorkflowRunsGetResponse, GetWorkflowRunsApiV1WorkflowWorkflowIdRunsGetData, GetWorkflowRunsApiV1WorkflowWorkflowIdRunsGetError, GetWorkflowRunsApiV1WorkflowWorkflowIdRunsGetResponse, GetWorkflowsApiV1WorkflowFetchGetData, GetWorkflowsApiV1WorkflowFetchGetError, GetWorkflowsApiV1WorkflowFetchGetResponse, GetWorkflowsSummaryApiV1WorkflowSummaryGetData, GetWorkflowsSummaryApiV1WorkflowSummaryGetError, GetWorkflowsSummaryApiV1WorkflowSummaryGetResponse, GetWorkflowTemplatesApiV1WorkflowTemplatesGetData, GetWorkflowTemplatesApiV1WorkflowTemplatesGetResponse, HandleCloudonixStatusCallbackApiV1TelephonyCloudonixStatusCallbackWorkflowRunIdPostData, HandleCloudonixStatusCallbackApiV1TelephonyCloudonixStatusCallbackWorkflowRunIdPostError, HandleTwilioStatusCallbackApiV1TelephonyTwilioStatusCallbackWorkflowRunIdPostData, HandleTwilioStatusCallbackApiV1TelephonyTwilioStatusCallbackWorkflowRunIdPostError, HandleVobizHangupCallbackApiV1TelephonyVobizHangupCallbackWorkflowRunIdPostData, HandleVobizHangupCallbackApiV1TelephonyVobizHangupCallbackWorkflowRunIdPostError, HandleVobizRingCallbackApiV1TelephonyVobizRingCallbackWorkflowRunIdPostData, HandleVobizRingCallbackApiV1TelephonyVobizRingCallbackWorkflowRunIdPostError, HandleVonageEventsApiV1TelephonyVonageEventsWorkflowRunIdPostData, HandleVonageEventsApiV1TelephonyVonageEventsWorkflowRunIdPostError, HealthApiV1HealthGetData,ImpersonateApiV1SuperuserImpersonatePostData, ImpersonateApiV1SuperuserImpersonatePostError, ImpersonateApiV1SuperuserImpersonatePostResponse, InitializeEmbedSessionApiV1PublicEmbedInitPostData, InitializeEmbedSessionApiV1PublicEmbedInitPostError, InitializeEmbedSessionApiV1PublicEmbedInitPostResponse, InitiateCallApiV1PublicAgentUuidPostData, InitiateCallApiV1PublicAgentUuidPostError, InitiateCallApiV1PublicAgentUuidPostResponse, InitiateCallApiV1TelephonyInitiateCallPostData, InitiateCallApiV1TelephonyInitiateCallPostError, ListCredentialsApiV1CredentialsGetData, ListCredentialsApiV1CredentialsGetError, ListCredentialsApiV1CredentialsGetResponse, ListTestSessionsApiV1LooptalkTestSessionsGetData, ListTestSessionsApiV1LooptalkTestSessionsGetError, ListTestSessionsApiV1LooptalkTestSessionsGetResponse, ListToolsApiV1ToolsGetData, ListToolsApiV1ToolsGetError, ListToolsApiV1ToolsGetResponse, OfferApiV1PipecatRtcOfferPostData, OfferApiV1PipecatRtcOfferPostError, OptionsConfigApiV1PublicEmbedConfigTokenOptionsData, OptionsConfigApiV1PublicEmbedConfigTokenOptionsError, OptionsInitApiV1PublicEmbedInitOptionsData, PauseCampaignApiV1CampaignCampaignIdPausePostData, PauseCampaignApiV1CampaignCampaignIdPausePostError, PauseCampaignApiV1CampaignCampaignIdPausePostResponse, ReactivateApiKeyApiV1UserApiKeysApiKeyIdReactivatePutData, ReactivateApiKeyApiV1UserApiKeysApiKeyIdReactivatePutError, ReactivateApiKeyApiV1UserApiKeysApiKeyIdReactivatePutResponse, ReactivateServiceKeyApiV1UserServiceKeysServiceKeyIdReactivatePutData, ReactivateServiceKeyApiV1UserServiceKeysServiceKeyIdReactivatePutError, ResumeCampaignApiV1CampaignCampaignIdResumePostData, ResumeCampaignApiV1CampaignCampaignIdResumePostError, ResumeCampaignApiV1CampaignCampaignIdResumePostResponse, SaveTelephonyConfigurationApiV1OrganizationsTelephonyConfigPostData, SaveTelephonyConfigurationApiV1OrganizationsTelephonyConfigPostError, SetAdminCommentApiV1SuperuserWorkflowRunsRunIdCommentPostData, SetAdminCommentApiV1SuperuserWorkflowRunsRunIdCommentPostError, SetAdminCommentApiV1SuperuserWorkflowRunsRunIdCommentPostResponse, StartCampaignApiV1CampaignCampaignIdStartPostData, StartCampaignApiV1CampaignCampaignIdStartPostError, StartCampaignApiV1CampaignCampaignIdStartPostResponse, StartTestSessionApiV1LooptalkTestSessionsTestSessionIdStartPostData, StartTestSessionApiV1LooptalkTestSessionsTestSessionIdStartPostError, StopTestSessionApiV1LooptalkTestSessionsTestSessionIdStopPostData, StopTestSessionApiV1LooptalkTestSessionsTestSessionIdStopPostError, UpdateCredentialApiV1CredentialsCredentialUuidPutData, UpdateCredentialApiV1CredentialsCredentialUuidPutError, UpdateCredentialApiV1CredentialsCredentialUuidPutResponse, UpdateIntegrationApiV1IntegrationIntegrationIdPutData, UpdateIntegrationApiV1IntegrationIntegrationIdPutError, UpdateIntegrationApiV1IntegrationIntegrationIdPutResponse, UpdateToolApiV1ToolsToolUuidPutData, UpdateToolApiV1ToolsToolUuidPutError, UpdateToolApiV1ToolsToolUuidPutResponse, UpdateUserConfigurationsApiV1UserConfigurationsUserPutData, UpdateUserConfigurationsApiV1UserConfigurationsUserPutError, UpdateUserConfigurationsApiV1UserConfigurationsUserPutResponse, UpdateWorkflowApiV1WorkflowWorkflowIdPutData, UpdateWorkflowApiV1WorkflowWorkflowIdPutError, UpdateWorkflowApiV1WorkflowWorkflowIdPutResponse, UpdateWorkflowStatusApiV1WorkflowWorkflowIdStatusPutData, UpdateWorkflowStatusApiV1WorkflowWorkflowIdStatusPutError, UpdateWorkflowStatusApiV1WorkflowWorkflowIdStatusPutResponse, ValidateUserConfigurationsApiV1UserConfigurationsUserValidateGetData, ValidateUserConfigurationsApiV1UserConfigurationsUserValidateGetError, ValidateUserConfigurationsApiV1UserConfigurationsUserValidateGetResponse, ValidateWorkflowApiV1WorkflowWorkflowIdValidatePostData, ValidateWorkflowApiV1WorkflowWorkflowIdValidatePostError, ValidateWorkflowApiV1WorkflowWorkflowIdValidatePostResponse } from './types.gen'; export type Options = ClientOptions & { /** * You can provide a client instance returned by `createClient()` instead of * individual options. This might be also useful if you want to implement a * custom client. */ client?: Client; /** * You can pass arbitrary values through the `meta` object. This can be * used to access values that aren't defined as part of the SDK function. */ meta?: Record; }; /** * Initiate Call * Initiate a call using the configured telephony provider. */ export const initiateCallApiV1TelephonyInitiateCallPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/telephony/initiate-call', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Handle Twilio Status Callback * Handle Twilio-specific status callbacks. */ export const handleTwilioStatusCallbackApiV1TelephonyTwilioStatusCallbackWorkflowRunIdPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/telephony/twilio/status-callback/{workflow_run_id}', ...options }); }; /** * Handle Vonage Events * Handle Vonage-specific event webhooks. * * Vonage sends all call events to a single endpoint. * Events include: started, ringing, answered, complete, failed, etc. */ export const handleVonageEventsApiV1TelephonyVonageEventsWorkflowRunIdPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/telephony/vonage/events/{workflow_run_id}', ...options }); }; /** * Handle Vobiz Hangup Callback * Handle Vobiz hangup callback (sent when call ends). * * Vobiz sends callbacks to hangup_url when the call terminates. * This includes call duration, status, and billing information. */ export const handleVobizHangupCallbackApiV1TelephonyVobizHangupCallbackWorkflowRunIdPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/telephony/vobiz/hangup-callback/{workflow_run_id}', ...options }); }; /** * Handle Vobiz Ring Callback * Handle Vobiz ring callback (sent when call starts ringing). * * Vobiz can send callbacks to ring_url when the call starts ringing. * This is optional and used for tracking ringing status. */ export const handleVobizRingCallbackApiV1TelephonyVobizRingCallbackWorkflowRunIdPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/telephony/vobiz/ring-callback/{workflow_run_id}', ...options }); }; /** * Handle Cloudonix Status Callback * Handle Cloudonix-specific status callbacks. * * Cloudonix sends call status updates to the callback URL specified during call initiation. */ export const handleCloudonixStatusCallbackApiV1TelephonyCloudonixStatusCallbackWorkflowRunIdPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/telephony/cloudonix/status-callback/{workflow_run_id}', ...options }); }; /** * Offer */ export const offerApiV1PipecatRtcOfferPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/pipecat/rtc-offer', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Impersonate * Impersonate a user as a super-admin. * Internally, Stack Auth requires the **provider user ID** (a UUID-ish string) * to create an impersonation session. */ export const impersonateApiV1SuperuserImpersonatePost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/superuser/impersonate', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Get Workflow Runs * Get paginated list of all workflow runs with organization information. * Requires superuser privileges. * * Filters should be provided as a JSON-encoded array of filter criteria. * Example: [{"field": "id", "type": "number", "value": {"value": 680}}] */ export const getWorkflowRunsApiV1SuperuserWorkflowRunsGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/superuser/workflow-runs', ...options }); }; /** * Set Admin Comment * Add or update an *admin-only* comment for a workflow run. * * The comment is stored inside the ``annotations`` JSON column under the * ``admin_comment`` key so that it does not interfere with any other * annotations recorded by the system. */ export const setAdminCommentApiV1SuperuserWorkflowRunsRunIdCommentPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/superuser/workflow-runs/{run_id}/comment', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Validate Workflow * Validate all nodes in a workflow to ensure they have required fields. * * Args: * workflow_id: The ID of the workflow to validate * user: The authenticated user * * Returns: * Object indicating if workflow is valid and any invalid nodes/edges */ export const validateWorkflowApiV1WorkflowWorkflowIdValidatePost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/workflow/{workflow_id}/validate', ...options }); }; /** * Create Workflow * Create a new workflow from the client * * Args: * request: The create workflow request * user: The user to create the workflow for */ export const createWorkflowApiV1WorkflowCreateDefinitionPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/workflow/create/definition', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Create Workflow From Template * Create a new workflow from a natural language template request. * * This endpoint: * 1. Uses mps_service_key_client to call MPS workflow API * 2. Passes organization ID (authenticated mode) or created_by (OSS mode) * 3. Creates the workflow in the database * * Args: * request: The template creation request with call_type, use_case, and activity_description * user: The authenticated user * * Returns: * The created workflow * * Raises: * HTTPException: If MPS API call fails */ export const createWorkflowFromTemplateApiV1WorkflowCreateTemplatePost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/workflow/create/template', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Get Workflows * Get all workflows for the authenticated user's organization */ export const getWorkflowsApiV1WorkflowFetchGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/workflow/fetch', ...options }); }; /** * Get Workflow * Get a single workflow by ID */ export const getWorkflowApiV1WorkflowFetchWorkflowIdGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/workflow/fetch/{workflow_id}', ...options }); }; /** * Get Workflows Summary * Get minimal workflow information (id and name only) for all workflows */ export const getWorkflowsSummaryApiV1WorkflowSummaryGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/workflow/summary', ...options }); }; /** * Update Workflow Status * Update the status of a workflow (e.g., archive/unarchive). * * Args: * workflow_id: The ID of the workflow to update * request: The status update request * * Returns: * The updated workflow */ export const updateWorkflowStatusApiV1WorkflowWorkflowIdStatusPut = (options: Options) => { return (options.client ?? _heyApiClient).put({ url: '/api/v1/workflow/{workflow_id}/status', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Update Workflow * Update an existing workflow. * * Args: * workflow_id: The ID of the workflow to update * request: The update request containing the new name and workflow definition * * Returns: * The updated workflow * * Raises: * HTTPException: If the workflow is not found or if there's a database error */ export const updateWorkflowApiV1WorkflowWorkflowIdPut = (options: Options) => { return (options.client ?? _heyApiClient).put({ url: '/api/v1/workflow/{workflow_id}', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Get Workflow Runs * Get workflow runs with optional filtering. * * Filters should be provided as a JSON-encoded array of filter criteria. * Example: [{"attribute": "dateRange", "value": {"from": "2024-01-01", "to": "2024-01-31"}}] */ export const getWorkflowRunsApiV1WorkflowWorkflowIdRunsGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/workflow/{workflow_id}/runs', ...options }); }; /** * Create Workflow Run * Create a new workflow run when the user decides to execute the workflow via chat or voice * * Args: * workflow_id: The ID of the workflow to run * request: The create workflow run request * user: The user to create the workflow run for */ export const createWorkflowRunApiV1WorkflowWorkflowIdRunsPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/workflow/{workflow_id}/runs', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Get Workflow Run */ export const getWorkflowRunApiV1WorkflowWorkflowIdRunsRunIdGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/workflow/{workflow_id}/runs/{run_id}', ...options }); }; /** * Get Workflow Templates * Get all available workflow templates. * * Returns: * List of workflow templates */ export const getWorkflowTemplatesApiV1WorkflowTemplatesGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/workflow/templates', ...options }); }; /** * Duplicate Workflow Template * Duplicate a workflow template to create a new workflow for the user. * * Args: * request: The duplicate template request * user: The authenticated user * * Returns: * The newly created workflow */ export const duplicateWorkflowTemplateApiV1WorkflowTemplatesDuplicatePost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/workflow/templates/duplicate', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Get Default Configurations */ export const getDefaultConfigurationsApiV1UserConfigurationsDefaultsGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/user/configurations/defaults', ...options }); }; /** * Get Auth User */ export const getAuthUserApiV1UserAuthUserGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/user/auth/user', ...options }); }; /** * Get User Configurations */ export const getUserConfigurationsApiV1UserConfigurationsUserGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/user/configurations/user', ...options }); }; /** * Update User Configurations */ export const updateUserConfigurationsApiV1UserConfigurationsUserPut = (options: Options) => { return (options.client ?? _heyApiClient).put({ url: '/api/v1/user/configurations/user', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Validate User Configurations */ export const validateUserConfigurationsApiV1UserConfigurationsUserValidateGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/user/configurations/user/validate', ...options }); }; /** * Get Api Keys * Get all API keys for the user's selected organization. */ export const getApiKeysApiV1UserApiKeysGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/user/api-keys', ...options }); }; /** * Create Api Key * Create a new API key for the user's selected organization. */ export const createApiKeyApiV1UserApiKeysPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/user/api-keys', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Archive Api Key * Archive an API key (soft delete). */ export const archiveApiKeyApiV1UserApiKeysApiKeyIdDelete = (options: Options) => { return (options.client ?? _heyApiClient).delete({ url: '/api/v1/user/api-keys/{api_key_id}', ...options }); }; /** * Reactivate Api Key * Reactivate an archived API key. */ export const reactivateApiKeyApiV1UserApiKeysApiKeyIdReactivatePut = (options: Options) => { return (options.client ?? _heyApiClient).put({ url: '/api/v1/user/api-keys/{api_key_id}/reactivate', ...options }); }; /** * Get Voices * Get available voices for a TTS provider. */ export const getVoicesApiV1UserConfigurationsVoicesProviderGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/user/configurations/voices/{provider}', ...options }); }; /** * Create Campaign * Create a new campaign */ export const createCampaignApiV1CampaignCreatePost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/campaign/create', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Get Campaigns * Get campaigns for user's organization */ export const getCampaignsApiV1CampaignGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/campaign/', ...options }); }; /** * Get Campaign * Get campaign details */ export const getCampaignApiV1CampaignCampaignIdGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/campaign/{campaign_id}', ...options }); }; /** * Start Campaign * Start campaign execution */ export const startCampaignApiV1CampaignCampaignIdStartPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/campaign/{campaign_id}/start', ...options }); }; /** * Pause Campaign * Pause campaign execution */ export const pauseCampaignApiV1CampaignCampaignIdPausePost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/campaign/{campaign_id}/pause', ...options }); }; /** * Get Campaign Runs * Get campaign workflow runs */ export const getCampaignRunsApiV1CampaignCampaignIdRunsGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/campaign/{campaign_id}/runs', ...options }); }; /** * Resume Campaign * Resume a paused campaign */ export const resumeCampaignApiV1CampaignCampaignIdResumePost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/campaign/{campaign_id}/resume', ...options }); }; /** * Get Campaign Progress * Get current campaign progress and statistics */ export const getCampaignProgressApiV1CampaignCampaignIdProgressGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/campaign/{campaign_id}/progress', ...options }); }; /** * Get Campaign Source Download Url * Get presigned download URL for campaign CSV source file * * Only works for CSV source type. For Google Sheets, use the source_id directly. * Validates that the campaign belongs to the user's organization for security. */ export const getCampaignSourceDownloadUrlApiV1CampaignCampaignIdSourceDownloadUrlGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/campaign/{campaign_id}/source-download-url', ...options }); }; /** * List Credentials * List all webhook credentials for the user's organization. * * Returns: * List of credentials (without sensitive data) */ export const listCredentialsApiV1CredentialsGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/credentials/', ...options }); }; /** * Create Credential * Create a new webhook credential. * * Args: * request: The credential creation request * * Returns: * The created credential (without sensitive data) */ export const createCredentialApiV1CredentialsPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/credentials/', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Delete Credential * Delete (soft delete) a webhook credential. * * Args: * credential_uuid: The UUID of the credential to delete * * Returns: * Success message */ export const deleteCredentialApiV1CredentialsCredentialUuidDelete = (options: Options) => { return (options.client ?? _heyApiClient).delete({ url: '/api/v1/credentials/{credential_uuid}', ...options }); }; /** * Get Credential * Get a specific webhook credential by UUID. * * Args: * credential_uuid: The UUID of the credential * * Returns: * The credential (without sensitive data) */ export const getCredentialApiV1CredentialsCredentialUuidGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/credentials/{credential_uuid}', ...options }); }; /** * Update Credential * Update a webhook credential. * * Args: * credential_uuid: The UUID of the credential to update * request: The update request * * Returns: * The updated credential (without sensitive data) */ export const updateCredentialApiV1CredentialsCredentialUuidPut = (options: Options) => { return (options.client ?? _heyApiClient).put({ url: '/api/v1/credentials/{credential_uuid}', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * List Tools * List all tools for the user's organization. * * Args: * status: Optional filter by status (active, archived, draft) * category: Optional filter by category (http_api, native, integration) * * Returns: * List of tools */ export const listToolsApiV1ToolsGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/tools/', ...options }); }; /** * Create Tool * Create a new tool. * * Args: * request: The tool creation request * * Returns: * The created tool */ export const createToolApiV1ToolsPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/tools/', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Delete Tool * Archive (soft delete) a tool. * * Args: * tool_uuid: The UUID of the tool to delete * * Returns: * Success message */ export const deleteToolApiV1ToolsToolUuidDelete = (options: Options) => { return (options.client ?? _heyApiClient).delete({ url: '/api/v1/tools/{tool_uuid}', ...options }); }; /** * Get Tool * Get a specific tool by UUID. * * Args: * tool_uuid: The UUID of the tool * * Returns: * The tool */ export const getToolApiV1ToolsToolUuidGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/tools/{tool_uuid}', ...options }); }; /** * Update Tool * Update a tool. * * Args: * tool_uuid: The UUID of the tool to update * request: The update request * * Returns: * The updated tool */ export const updateToolApiV1ToolsToolUuidPut = (options: Options) => { return (options.client ?? _heyApiClient).put({ url: '/api/v1/tools/{tool_uuid}', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Get Integrations * Get all integrations for the user's selected organization. * * Returns: * List of integrations associated with the user's selected organization */ export const getIntegrationsApiV1IntegrationGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/integration/', ...options }); }; /** * Create Session * Create a Nango session for the user's selected organization. * * Returns: * Session token and ID for the created session */ export const createSessionApiV1IntegrationSessionPost = (options?: Options) => { return (options?.client ?? _heyApiClient).post({ url: '/api/v1/integration/session', ...options }); }; /** * Update Integration * Update an integration's selected files (for Google Sheets). * * Args: * integration_id: The ID of the integration to update * request: The update request containing selected files * user: The authenticated user * * Returns: * Updated integration details */ export const updateIntegrationApiV1IntegrationIntegrationIdPut = (options: Options) => { return (options.client ?? _heyApiClient).put({ url: '/api/v1/integration/{integration_id}', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Get Integration Access Token * Get the latest access token for an integration from Nango. * * Args: * integration_id: The ID of the integration * user: The authenticated user * * Returns: * Dict containing access token and expiration info */ export const getIntegrationAccessTokenApiV1IntegrationIntegrationIdAccessTokenGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/integration/{integration_id}/access-token', ...options }); }; /** * Get Telephony Configuration * Get telephony configuration for the user's organization with masked sensitive fields. */ export const getTelephonyConfigurationApiV1OrganizationsTelephonyConfigGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/organizations/telephony-config', ...options }); }; /** * Save Telephony Configuration * Save telephony configuration for the user's organization. */ export const saveTelephonyConfigurationApiV1OrganizationsTelephonyConfigPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/organizations/telephony-config', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Generate a signed S3 URL * Return a short-lived signed URL for a transcript or recording file stored on S3. * * Access Control: * * Superusers can request any key. * * Regular users can only request resources belonging to **their** workflow runs. */ export const getSignedUrlApiV1S3SignedUrlGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/s3/signed-url', ...options }); }; /** * Get file metadata for debugging * Get file metadata including creation timestamp for debugging. * * Access Control: * * Superusers can request any key. * * Regular users can only request resources belonging to **their** workflow runs. */ export const getFileMetadataApiV1S3FileMetadataGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/s3/file-metadata', ...options }); }; /** * Generate a presigned URL for direct CSV upload * Generate a presigned PUT URL for direct CSV file upload to S3/MinIO. * * This endpoint enables browser-to-storage uploads without passing through the backend * * Access Control: * * All authenticated users can upload CSV files scoped to their organization. * * Files are stored with organization-scoped keys for multi-tenancy. * * Returns: * * upload_url: Presigned URL (valid for 15 minutes) for PUT request * * file_key: Unique storage key to use as source_id in campaign creation * * expires_in: URL expiration time in seconds */ export const getPresignedUploadUrlApiV1S3PresignedUploadUrlPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/s3/presigned-upload-url', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Get Service Keys * Get all service keys for the user's organization. */ export const getServiceKeysApiV1UserServiceKeysGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/user/service-keys', ...options }); }; /** * Create Service Key * Create a new service key for the user's organization. */ export const createServiceKeyApiV1UserServiceKeysPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/user/service-keys', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Archive Service Key * Archive a service key. */ export const archiveServiceKeyApiV1UserServiceKeysServiceKeyIdDelete = (options: Options) => { return (options.client ?? _heyApiClient).delete({ url: '/api/v1/user/service-keys/{service_key_id}', ...options }); }; /** * Reactivate Service Key * Reactivate an archived service key. * * Note: This endpoint is provided for API compatibility but service key * reactivation is not supported by MPS. Once archived, a service key * cannot be reactivated and a new key must be created instead. */ export const reactivateServiceKeyApiV1UserServiceKeysServiceKeyIdReactivatePut = (options: Options) => { return (options.client ?? _heyApiClient).put({ url: '/api/v1/user/service-keys/{service_key_id}/reactivate', ...options }); }; /** * List Test Sessions * List LoopTalk test sessions. */ export const listTestSessionsApiV1LooptalkTestSessionsGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/looptalk/test-sessions', ...options }); }; /** * Create Test Session * Create a new LoopTalk test session. */ export const createTestSessionApiV1LooptalkTestSessionsPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/looptalk/test-sessions', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Get Test Session * Get a specific test session. */ export const getTestSessionApiV1LooptalkTestSessionsTestSessionIdGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/looptalk/test-sessions/{test_session_id}', ...options }); }; /** * Start Test Session * Start a LoopTalk test session. */ export const startTestSessionApiV1LooptalkTestSessionsTestSessionIdStartPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/looptalk/test-sessions/{test_session_id}/start', ...options }); }; /** * Stop Test Session * Stop a running test session. */ export const stopTestSessionApiV1LooptalkTestSessionsTestSessionIdStopPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/looptalk/test-sessions/{test_session_id}/stop', ...options }); }; /** * Get Test Session Conversation * Get conversation details for a test session. */ export const getTestSessionConversationApiV1LooptalkTestSessionsTestSessionIdConversationGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/looptalk/test-sessions/{test_session_id}/conversation', ...options }); }; /** * Create Load Test * Create and start a load test. */ export const createLoadTestApiV1LooptalkLoadTestsPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/looptalk/load-tests', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Get Load Test Stats * Get statistics for a load test group. */ export const getLoadTestStatsApiV1LooptalkLoadTestsLoadTestGroupIdStatsGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/looptalk/load-tests/{load_test_group_id}/stats', ...options }); }; /** * Get Active Tests * Get information about currently active test sessions. */ export const getActiveTestsApiV1LooptalkActiveTestsGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/looptalk/active-tests', ...options }); }; /** * Get Current Period Usage * Get current billing period usage for the user's organization. */ export const getCurrentPeriodUsageApiV1OrganizationsUsageCurrentPeriodGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/organizations/usage/current-period', ...options }); }; /** * Get Usage History * Get paginated workflow runs with usage for the organization. */ export const getUsageHistoryApiV1OrganizationsUsageRunsGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/organizations/usage/runs', ...options }); }; /** * Get Daily Usage Breakdown * Get daily usage breakdown for the last N days. Only available for organizations with pricing. */ export const getDailyUsageBreakdownApiV1OrganizationsUsageDailyBreakdownGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/organizations/usage/daily-breakdown', ...options }); }; /** * Get Daily Report * Get daily report for the specified date and timezone. * If workflow_id is provided, filters results to that specific workflow. * If workflow_id is None, includes all workflows for the organization. */ export const getDailyReportApiV1OrganizationsReportsDailyGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/organizations/reports/daily', ...options }); }; /** * Get Workflow Options * Get all workflows for the user's organization. * Used to populate the workflow selector dropdown in the reports page. */ export const getWorkflowOptionsApiV1OrganizationsReportsWorkflowsGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/organizations/reports/workflows', ...options }); }; /** * Get Daily Runs Detail * Get detailed workflow runs for the specified date. * Used for CSV export functionality. */ export const getDailyRunsDetailApiV1OrganizationsReportsDailyRunsGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/organizations/reports/daily/runs', ...options }); }; /** * Options Init * Handle CORS preflight for init endpoint */ export const optionsInitApiV1PublicEmbedInitOptions = (options?: Options) => { return (options?.client ?? _heyApiClient).options({ url: '/api/v1/public/embed/init', ...options }); }; /** * Initialize Embed Session * Initialize an embed session with token validation and domain checking. * * This endpoint: * 1. Validates the embed token * 2. Checks domain whitelist * 3. Creates a workflow run * 4. Generates a temporary session token * 5. Returns configuration for the widget */ export const initializeEmbedSessionApiV1PublicEmbedInitPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/public/embed/init', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Get Embed Config * Get embed configuration without creating a session. * * This endpoint is used to fetch widget configuration for display purposes * without actually starting a call session. */ export const getEmbedConfigApiV1PublicEmbedConfigTokenGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/public/embed/config/{token}', ...options }); }; /** * Options Config * Handle CORS preflight for config endpoint */ export const optionsConfigApiV1PublicEmbedConfigTokenOptions = (options: Options) => { return (options.client ?? _heyApiClient).options({ url: '/api/v1/public/embed/config/{token}', ...options }); }; /** * Initiate Call * Initiate a phone call via API trigger. * * This endpoint allows external systems (CRMs, automation tools, etc.) to * programmatically trigger outbound phone calls with custom context variables. * * Args: * uuid: The unique trigger UUID * request: The call request with phone number and optional context * x_api_key: API key for authentication (passed in X-API-Key header) * * Returns: * TriggerCallResponse with workflow run details * * Raises: * HTTPException: Various error conditions (401, 403, 404, 400) */ export const initiateCallApiV1PublicAgentUuidPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/public/agent/{uuid}', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Deactivate Embed Token * Deactivate the embed token for a workflow. */ export const deactivateEmbedTokenApiV1WorkflowWorkflowIdEmbedTokenDelete = (options: Options) => { return (options.client ?? _heyApiClient).delete({ url: '/api/v1/workflow/{workflow_id}/embed-token', ...options }); }; /** * Get Embed Token * Get the embed token for a workflow if it exists. */ export const getEmbedTokenApiV1WorkflowWorkflowIdEmbedTokenGet = (options: Options) => { return (options.client ?? _heyApiClient).get({ url: '/api/v1/workflow/{workflow_id}/embed-token', ...options }); }; /** * Create Or Update Embed Token * Create or update an embed token for a workflow. * Each workflow can have only one active embed token. */ export const createOrUpdateEmbedTokenApiV1WorkflowWorkflowIdEmbedTokenPost = (options: Options) => { return (options.client ?? _heyApiClient).post({ url: '/api/v1/workflow/{workflow_id}/embed-token', ...options, headers: { 'Content-Type': 'application/json', ...options?.headers } }); }; /** * Health */ export const healthApiV1HealthGet = (options?: Options) => { return (options?.client ?? _heyApiClient).get({ url: '/api/v1/health', ...options }); };