import type { AuthEnvId } from '@knapsack/core'; import type { RendererIdsForNativeMobile } from '@knapsack/types'; export type KsLogMeta = { siteId?: string; orgId?: string; /** * Consider using `instanceType` instead. */ instanceId?: string; instanceType?: 'branch' | 'latest' | 'dev' | 'preview'; appClientUrl?: string; /** * Version of `@knapsack/app` that is running (even if this log happens in UI or other) */ appClientVersion?: string; }; /** * @link https://docs.datadoghq.com/logs/processing/attributes_naming_convention/ */ export type LogMetadata = { message?: string; service?: string; env?: string; version?: string; logger?: { name: string; }; error?: Error; http?: { url?: string; status_code?: string; method?: string; referer?: string; requestBody?: Record; responseBody?: Record; query?: Record; headers?: Record; requestId?: string; }; /** GraphQL info - same shape as Hasura sends in */ query?: { operationName: string; /** actual GraphQL query/mutation/subscription */ query: string; variables: Record; }; /** * User */ usr?: { /** KS User ID, not Auth0 ID - that's in `auth0Id` */ id: string; isSuperAdmin?: boolean; siteRole?: string; name?: string; email?: string; auth0Id?: string; }; syslog?: { env?: string; hostname?: string; }; /** * Events */ evt?: { name: 'api.createHasuraClient'; outcome: 'success' | 'failure'; } | { name: 'api.sendUserAccountEmail'; action: 'sendUserAccountCreatedEmail' | 'sendSiteInviteEmail' | 'sendPasswordResetEmail'; outcome: 'success' | 'failure'; } | { name: 'api.native.getNativeComponentUploadUrl'; outcome: 'success' | 'failure'; } | { name: 'api.figmaApi.request'; endpoint: 'me' | 'files' | 'images'; method: 'GET' | 'POST'; outcome: 'unknown' | 'success' | 'failure'; tier: '1' | '2' | '3'; figmaFileId?: string; } | { name: 'lambda.figmaApi.request'; endpoint: 'files' | 'images' | 'cdn'; method: 'GET' | 'POST'; outcome: 'unknown' | 'success' | 'failure'; tier: '1' | '2' | '3'; figmaFileId?: string; figmaFileVersion?: string; } | { name: 'lambda.api.request'; endpoint: string; method: 'GET' | 'POST'; outcome: 'unknown'; } | { name: 'lambda.s3.getObject'; outcome: 'unknown'; } | { name: 'api.deleteKsSite'; outcome: 'success' | 'failure'; } | { /** * A provider git webhook arrived for a site whose content lives in * the database (`isKsContentStoredInDb`) and was swallowed on * purpose. Provider-neutral: fired from `deleteBranchInDb`, which * serves every provider's merge/close handler. One facet answers * "show me webhook replays against this site since the flip." */ name: 'api.gitWebhook.dbModeNoop'; eventName: string; outcome: 'success'; } | { name: `api.githubWebhook.${string}`; outcome: 'success' | 'failure'; } | { name: `api.azureWebhook.${string}`; outcome: 'success' | 'failure'; } | { name: `api.bitbucketCloudWebhook.${string}`; outcome: 'success' | 'failure'; } | { name: `api.bitbucketDatacenterWebhook.${string}`; outcome: 'success' | 'failure'; } | { name: `api.gitlabWebhook.${string}`; outcome: 'success' | 'failure'; } | { name: `api.gql.${string}`; outcome: 'success' | 'failure'; } | { name: `api.gql.error.${string}`; outcome: 'failure'; } | { name: 'api.search.request'; outcome: 'success' | 'failure'; resultsCount: number; } | { name: 'api.search.index.update'; outcome: 'success' | 'failure'; resultsCount: number; } | { name: 'api.search.sourceData'; outcome: 'success' | 'failure'; } | { name: 'api.deleteInstance'; outcome: 'success' | 'failure'; } | { name: 'api.updateSiteSetup'; outcome: 'success' | 'failure'; } | { name: 'api.gitCommit'; outcome: 'success' | 'failure'; } | { name: 'api.site.contentFreeze'; action: 'set' | 'cleared'; cause: string; outcome: 'success' | 'failure'; operator: string; } | { name: 'api.site.migrated'; outcome: 'success' | 'failure'; operator: string; } | { name: 'api.site.rolledBack'; outcome: 'success' | 'failure'; operator: string; } | { name: `api.zendesk${'UserFetch' | 'UserUpdate' | 'TicketCreated'}`; outcome: 'success' | 'failure'; } | { name: `api.tokensConverted`; outcome: 'success' | 'failure'; fromCache: boolean; time: number; } | { name: 'ui.auth.login'; redirectUrl: string; queryParams: Record; outcome: 'success' | 'failure'; } | { name: 'ui.auth.callback'; outcome: 'success' | 'failure'; } | { name: 'ui.auth.startlogin'; redirectUrl: string; queryParams: Record; outcome: 'unknown'; } | { name: 'ui.auth.error'; outcome: 'failure'; } | { /** Emitted when a video block's `