import {z} from 'zod' export type AgentKey = string; export type CreateApiAgentsAgentKeyActivateArgs = {agentKey: AgentKey}; export type CreateApiAgentsAgentKeyActivateOptions = {baseUrl?: string | undefined, BearerToken?: string | undefined, fetch?: typeof fetch | undefined}; export const apiKeyKey = z.string().min(5).max(120); export const apiKeyStatus = z.enum(["disabled", "active", "archived"]); export const agentKey = z.string(); export const freeTextField = z.string().min(1).max(160); export const permission = z.enum(["acceptors:Activate", "acceptors:All", "acceptors:Archive", "acceptors:Get", "acceptors:GetActive", "acceptors:GetDraft", "acceptors:List", "acceptors:Update", "agents:Activate", "agents:All", "agents:CreateBearerToken", "agents:Get", "agents:GetBin", "agents:ListBins", "agents:Update", "all:All", "apiKeys:All", "apiKeys:Archive", "apiKeys:Create", "apiKeys:Disable", "apiKeys:Enable", "apiKeys:Get", "apiKeys:List", "apiKeys:Update", "bep:All", "bep:Create", "bep:Get", "bep:Update", "cardInfo:GetInfo", "cardManagement:All", "cardManagement:Create", "cardManagement:Get", "charges:All", "charges:Cancel", "charges:CancelOrRefund", "charges:Clear", "charges:Create", "charges:CreateAtm", "charges:CreateMitFunding", "charges:CreatePayout", "charges:CreatePos", "charges:Get", "charges:GetRecords", "charges:GetResponses", "charges:Increment", "charges:List", "charges:OfflineRefund", "charges:Refund", "charges:Reverse", "currencyRate:All", "currencyRate:GetInfo", "disputes:Accept", "disputes:AddDocument", "disputes:All", "disputes:ArchiveDocument", "disputes:Defend", "disputes:DownloadFile", "disputes:Get", "disputes:GetDocument", "disputes:GetHistory", "disputes:List", "disputes:ListDocuments", "disputes:ListHistory", "disputes:RejectEvidence", "disputes:SubmitEvidence", "disputes:UploadFile", "distributions:All", "distributions:Archive", "distributions:Create", "distributions:Distribute", "distributions:Get", "distributions:List", "distributions:Update", "documents:All", "documents:Archive", "documents:Download", "documents:Get", "documents:Upload", "enrollments:All", "enrollments:Archive", "enrollments:Create", "enrollments:Get", "enrollments:List", "eventSubscriptions:All", "eventSubscriptions:Archive", "eventSubscriptions:Create", "eventSubscriptions:Get", "eventSubscriptions:List", "eventSubscriptions:Update", "fees:Interchange", "fees:Scheme", "fileSubscription:All", "fileSubscription:Create", "fileSubscription:Delete", "fileSubscription:List", "fileSubscription:Update", "fraudNotifications:Get", "fraudNotifications:List", "merchants:All", "merchants:Archive", "merchants:Create", "merchants:CreateAcceptor", "merchants:Get", "merchants:List", "merchants:ListAcceptors", "merchants:Update", "networkTokens:All", "networkTokens:Archive", "networkTokens:Create", "networkTokens:CreateNetworkTokenCryptogram", "networkTokens:Get", "networkTokens:GetCardArt", "networkTokens:GetNetworkTokenData", "networkTokens:List", "processorTokens:All", "processorTokens:Archive", "processorTokens:Create", "processorTokens:Get", "processorTokens:GetCardData", "processorTokens:List", "reports:All", "reports:Create", "reports:CreateCharges", "reports:CreateDisputeHistoryEvents", "reports:CreateFraudNotifications", "reports:CreateNetworkFundsTransfers", "reports:CreateReconciliationDetails", "reports:CreateSchemeFeeDetails", "reports:CreateSchemeFeeDetailsSchedule", "reports:DailySettlementTotals", "reports:DisputeMonitoring", "reports:Download", "reports:DownloadAmmfReport", "reports:DownloadCharges", "reports:DownloadDisputeHistoryEvents", "reports:DownloadFraudNotifications", "reports:DownloadNetworkFundsTransfers", "reports:DownloadQuarterlySchemeReport", "reports:DownloadReconciliationDetails", "reports:DownloadSchemeFeeDetails", "reports:DownloadSettlementDetails", "reports:Get", "reports:GetCharges", "reports:GetDisputeHistoryEvents", "reports:GetFraudNotifications", "reports:GetNetworkFundsTransfers", "reports:GetReconciliationDetails", "reports:GetSchemeFeeDetails", "reports:GetSchemeFeeDetailsData", "reports:List", "reports:NetworkFundsTransfers", "reports:QuarterlyNetwork", "reports:SettlementDetails", "reportSchedules:All", "reportSchedules:Archive", "reportSchedules:Create", "reportSchedules:Get", "reportSchedules:List", "reportSchedules:Update", "riskAssessments:Create", "screenings:All", "screenings:Archive", "screenings:Create", "screenings:Get", "screenings:List", "threeDs:Create", "threeDs:Get", "threeDs:List", "trustAnchors:All", "trustAnchors:Archive", "trustAnchors:Create", "trustAnchors:Get", "trustAnchors:List"]); export const permissions = z.array(permission); export const ipRange = z.string(); export const ipRanges = z.array(ipRange); export const certificateKey = z.string().min(5).max(120); export const certificateFingerprint = z.string(); export const created = z.string(); export const apiKeyCertificate = z.object({certificateKey: certificateKey, fingerprint: certificateFingerprint, notBefore: z.string(), notAfter: z.string(), description: freeTextField.optional(), created: created, trustAnchorFingerprint: certificateFingerprint, status: z.enum(["active", "archived"])}); export const lastModified = z.string(); export const version = z.number().int(); export const apiKey = z.object({key: apiKeyKey, status: apiKeyStatus, agentKey: agentKey, description: freeTextField.optional(), permissions: permissions, ipRanges: ipRanges.optional(), mtlsEnabled: z.boolean().optional(), certificates: z.array(apiKeyCertificate).optional(), secret: z.string().min(32).max(150).optional(), created: created, lastModified: lastModified.optional(), version: version}); 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 }; /** * Activate Agent * * POST /agents/{agentKey}/activate */ export const createApiAgentsAgentKeyActivate = async (args: CreateApiAgentsAgentKeyActivateArgs, options?: CreateApiAgentsAgentKeyActivateOptions) => { const {baseUrl = "https://eu-west-1.api.silverflow.com/v1", fetch: fetchFn = fetch, BearerToken} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (BearerToken !== undefined) headers.set('authorization', `Bearer ${BearerToken}`) const url = `${baseUrl.replace(/\/+$/, '')}/agents/${encodeURIComponent(String(args.agentKey))}/activate${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(apiKey, await res.json()) };