import {z} from 'zod' export type ActivityType = 'login' | 'invitation-cancelled' | 'failed-login' | 'user-permissions-update' | 'bank-account-update' | 'bank-account-deactivate' | 'new-bank-account' | 'new-crypto-address' | 'crypto-address-deletion' | 'clearloop-delegation-undelegation' | 'exchange-account-update' | 'invoice-payment' | 'invoice-update' | 'organisation-archiving' | 'organisation-blocking' | 'secondary-approval-settings' | 'new-organisation' | 'otc-settings' | 'last-to-sign-settings' | 'member-activation' | 'new-member' | 'member-deactivation' | 'member-permissions-update' | 'member-update' | 'organisation-unarchiving' | 'withdrawal-password-update' | 'whitelist-lock' | 'timelock-delay' | 'account-activation' | 'new-account' | 'account-archiving' | 'add-crypto-address-settings-update' | 'account-settings-update' | 'account-update' | 'stake-agreement-review' | 'walled-garden-manager-change' | 'new-wallet' | 'wallet-deposit-address-changes' | 'order-cancellation' | 'order-execution' | 'order-termination' | 'sso-configuration-creation' | 'sso-configuration-update' | 'sso-configuration-deactivation' | 'wg-portfolio-secondary-approval-settings' | 'approval-workflow-update' | 'passkey-creation' | 'new-api-key' | 'api-key-revocation' | 'api-key-transfer' | 'credentials-reset' | 'passkey-deletion' | 'password-change' | '2fa-change' | 'manual-deposit-compliance-approval' | 'manual-deposit-compliance-rejection' | 'new-loan' | 'loan-approved' | 'loan-rejected' | 'loan-accepted' | 'loan-cancelled' | 'loan-top-up-request' | 'loan-top-up-accepted' | 'loan-top-up-cancelled' | 'loan-repayment' | 'loan-repayment-accepted' | 'loan-repayment-cancelled' | 'loan-default' | 'loan-partial-default' | 'add-collateral-to-loan' | 'loan-rebalance-request' | 'loan-rebalance-accepted' | 'loan-rebalance-cancelled' | 'external-loan-disbursal-confirmed' | 'external-loan-top-up-confirmed' | 'external-loan-repayment-confirmed' | 'loan-rerate-request' | 'loan-rerate-accepted' | 'loan-rerate-cancelled' | 'loan-extension-request' | 'loan-extension-accepted' | 'loan-extension-cancelled' | 'client-authentication-policy-management-update'; export type GetApiOrganizationsOrganizationIdActivitiesArgs = {offset?: string | undefined, limit?: string | undefined, createdFrom?: string | undefined, createdTo?: string | undefined, search?: string | undefined, activityTypes?: Array | undefined, excludedActivityTypes?: Array | undefined, userIds?: Array | undefined, Accept?: string | undefined, organizationId: string}; export type GetApiOrganizationsOrganizationIdActivitiesOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; export const activityType = z.enum(["login", "invitation-cancelled", "failed-login", "user-permissions-update", "bank-account-update", "bank-account-deactivate", "new-bank-account", "new-crypto-address", "crypto-address-deletion", "clearloop-delegation-undelegation", "exchange-account-update", "invoice-payment", "invoice-update", "organisation-archiving", "organisation-blocking", "secondary-approval-settings", "new-organisation", "otc-settings", "last-to-sign-settings", "member-activation", "new-member", "member-deactivation", "member-permissions-update", "member-update", "organisation-unarchiving", "withdrawal-password-update", "whitelist-lock", "timelock-delay", "account-activation", "new-account", "account-archiving", "add-crypto-address-settings-update", "account-settings-update", "account-update", "stake-agreement-review", "walled-garden-manager-change", "new-wallet", "wallet-deposit-address-changes", "order-cancellation", "order-execution", "order-termination", "sso-configuration-creation", "sso-configuration-update", "sso-configuration-deactivation", "wg-portfolio-secondary-approval-settings", "approval-workflow-update", "passkey-creation", "new-api-key", "api-key-revocation", "api-key-transfer", "credentials-reset", "passkey-deletion", "password-change", "2fa-change", "manual-deposit-compliance-approval", "manual-deposit-compliance-rejection", "new-loan", "loan-approved", "loan-rejected", "loan-accepted", "loan-cancelled", "loan-top-up-request", "loan-top-up-accepted", "loan-top-up-cancelled", "loan-repayment", "loan-repayment-accepted", "loan-repayment-cancelled", "loan-default", "loan-partial-default", "add-collateral-to-loan", "loan-rebalance-request", "loan-rebalance-accepted", "loan-rebalance-cancelled", "external-loan-disbursal-confirmed", "external-loan-top-up-confirmed", "external-loan-repayment-confirmed", "loan-rerate-request", "loan-rerate-accepted", "loan-rerate-cancelled", "loan-extension-request", "loan-extension-accepted", "loan-extension-cancelled", "client-authentication-policy-management-update"]); export const activity = z.object({activityId: z.string(), activityType: activityType, createdAt: z.string(), description: z.string(), name: z.string(), organizationId: z.string().optional(), portfolioId: z.string().optional(), userId: z.string().optional()}); export const activities = z.object({activities: z.array(activity).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 }; /** * Get Activities * * GET /organizations/{organizationId}/activities */ export const getApiOrganizationsOrganizationIdActivities = async (args: GetApiOrganizationsOrganizationIdActivitiesArgs, options?: GetApiOrganizationsOrganizationIdActivitiesOptions) => { const {baseUrl = "https://api.copper.co/platform", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.offset != null) query.append("offset", String(args.offset)) if (args.limit != null) query.append("limit", String(args.limit)) if (args.createdFrom != null) query.append("createdFrom", String(args.createdFrom)) if (args.createdTo != null) query.append("createdTo", String(args.createdTo)) if (args.search != null) query.append("search", String(args.search)) for (const item of args.activityTypes ?? []) query.append("activityTypes", String(item)) for (const item of args.excludedActivityTypes ?? []) query.append("excludedActivityTypes", String(item)) for (const item of args.userIds ?? []) query.append("userIds", String(item)) if (args.Accept != null) headers.set("Accept", String(args.Accept)) const url = `${baseUrl.replace(/\/+$/, '')}/organizations/${encodeURIComponent(String(args.organizationId))}/activities${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(activities, await res.json()) };