diff --git a/docs/gen-event-reference/.gitignore b/docs/gen-event-reference/.gitignore new file mode 100644 index 0000000000000..a261f29175540 --- /dev/null +++ b/docs/gen-event-reference/.gitignore @@ -0,0 +1 @@ +dist/* diff --git a/docs/gen-event-reference/README.md b/docs/gen-event-reference/README.md new file mode 100644 index 0000000000000..15f992fba1a1d --- /dev/null +++ b/docs/gen-event-reference/README.md @@ -0,0 +1,13 @@ +# Audit event reference generator + +Build the event fixtures: + +```bash +$ pnpm build +``` + +Generate the reference docs: + +```bash +$ pnpm gen-docs +``` diff --git a/docs/gen-event-reference/events.vite.config.mts b/docs/gen-event-reference/events.vite.config.mts new file mode 100644 index 0000000000000..1f32a135eb32a --- /dev/null +++ b/docs/gen-event-reference/events.vite.config.mts @@ -0,0 +1,32 @@ +import path from 'node:path'; + +import { defineConfig } from 'vite'; +import tsconfigPaths from 'vite-tsconfig-paths'; + +const outputDirectory = path.resolve(__dirname, 'build'); + +function tsconfigPathsPlugin() { + return tsconfigPaths({ + root: path.resolve(import.meta.dirname, '../..'), + }); +} + +export default defineConfig(() => ({ + plugins: [tsconfigPathsPlugin()], + build: { + lib: { + name: 'event-fixtures', + entry: { + fixtures: path.resolve( + __dirname, + '../../web/packages/teleport/src/Audit/fixtures/index.ts' + ), + formatters: path.resolve( + __dirname, + '../../web/packages/teleport/src/services/audit/makeEvent.ts' + ), + }, + formats: ['es'], + }, + }, +})); diff --git a/docs/gen-event-reference/gen-event-reference.js b/docs/gen-event-reference/gen-event-reference.js new file mode 100644 index 0000000000000..7abe6c513e646 --- /dev/null +++ b/docs/gen-event-reference/gen-event-reference.js @@ -0,0 +1,162 @@ +// The functions in this package rely on the following packages in the Teleport +// Web UI source: +// +// - The events array in web/packages/teleport/src/Audit/fixtures/index.ts +// - The formatters array in web/packages/teleport/src/services/audit/makeEvent.ts + +// eventsWithoutExamples returns an array of event objects based on the +// elements in formatters that do not have corresponding examples in fixtures. +export function eventsWithoutExamples(fixtures, formatters) { + const fixtureMap = new Map(); + let result = []; + fixtures.forEach(f => { + fixtureMap.set(f.code, true); + }); + Object.keys(formatters).forEach(k => { + if (fixtureMap.has(k)) { + return; + } + result.push({ + codeDesc: formatters[k].desc, + code: k, + raw: { + event: formatters[k].type, + }, + }); + }); + return result; +} + +// codeDesc returns the description of the given event, depending on whether the +// description is a function or a string. +function codeDesc(event) { + if (typeof event.codeDesc == 'function') { + return event.codeDesc({ code: event.code, event: event.raw.event }); + } + return event.codeDesc; +} + +// removeUnknowns removes any event fixtures in the fixtures array that do not +// have a formatter. +export function removeUnknowns(fixtures, formatters) { + let result = []; + fixtures.forEach(r => { + const formatter = formatters[r.code]; + if (!formatter) { + return; + } + result.push(r); + }); + return result; +} + +// exampleOrAttributes returns a string to include in a reference entry for an +// audit event that describes the event's attributes. +// +// The generator expects all event objects to include a raw.event attribute, and +// events with full examples include additional fields in the raw object. If +// there is an example available for the event, we include the example, +// formatted as JSON. Otherwise, we print only the event code and type. +export function exampleOrAttributes(event) { + if (Object.keys(event.raw).length > 1) { + return `Example: + +\`\`\`json +${JSON.stringify(event.raw, null, 2)} +\`\`\``; + } + return `Code: \`${event.code}\` + +Event: \`${event.raw.event}\``; +} + +// createEventSection takes a JSON document that defines an audit event test +// fixture and returns a string that contains an H2-level section to describe +// the event. +export function createEventSection(event) { + return `## ${event.raw.event} + +${codeDesc(event) + '\n'} +${exampleOrAttributes(event)} +`; +} + +// createMultipleEventsSection takes an array of JSON documents that define an +// audit event test fixture and returns a string that contains an H2-level +// section to describe the event. It includes a separate H3 section for each +// event code. +// +// See web/packages/teleport/src/Audit/fixtures/index.ts for the structure of an +// audit event test fixture. +export function createMultipleEventsSection(events) { + return events.reduce( + (accum, event) => { + return ( + accum + + '\n' + + `### ${event.code} + +${codeDesc(event) + '\n'} +${exampleOrAttributes(event)} +` + ); + }, + `## ${events[0].raw.event} + +There are multiple events with the \`${events[0].raw.event}\` type. +` + ); +} + +// createReferencePage takes an array of JSON documents that define an audit +// event test fixture and returns a string that contains the text of an audit +// event reference guide. +// +// introParagraph contains the text of the introductory paragraph to include in +// the guide. +// +// See web/packages/teleport/src/Audit/fixtures/index.ts for the structure of an +// audit event test fixture. +export function createReferencePage(jsonEvents, introParagraph) { + const codeSet = new Set(); + let result = jsonEvents; + result.sort((a, b) => { + if (a.raw.event < b.raw.event) { + return -1; + } else { + return 1; + } + }); + const events = new Map(); + result.forEach(e => { + if (codeSet.has(e.code)) { + return; + } + const codeData = events.get(e.raw.event); + codeSet.add(e.code); + if (!codeData) { + events.set(e.raw.event, [e]); + return; + } + codeData.push(e); + }); + + return events.keys().reduce( + (accum, current) => { + const codes = events.get(current); + if (codes.length == 1) { + return accum + '\n' + createEventSection(codes[0]); + } + return accum + '\n' + createMultipleEventsSection(codes); + }, + `--- +title: "Audit Event Reference" +description: "Provides a comprehensive list of Teleport audit events and their fields." +--- +{/* Generated file. Do not edit. */} +{/* To regenerate, navigate to docs/gen-event-reference and run pnpm gen-docs */} + +${introParagraph} +` + ); +} diff --git a/docs/gen-event-reference/gen-event-reference.test.js b/docs/gen-event-reference/gen-event-reference.test.js new file mode 100644 index 0000000000000..f380e5e46b64d --- /dev/null +++ b/docs/gen-event-reference/gen-event-reference.test.js @@ -0,0 +1,587 @@ +import { + createEventSection, + createReferencePage, + eventsWithoutExamples, + removeUnknowns, +} from './gen-event-reference.js'; + +describe('eventsWithoutExamples', () => { + const testCases = [ + { + description: 'formatters with no fixture', + events: [ + { + codeDesc: 'App created', + code: 'ABC123', + raw: { + event: 'app.create', + }, + }, + ], + formatters: { + ABC456: { + type: 'billing.create_card', + desc: 'Card created', + }, + }, + expected: [ + { + codeDesc: 'Card created', + code: 'ABC456', + raw: { + event: 'billing.create_card', + }, + }, + ], + }, + ]; + + test.each(testCases)('$description', testCase => { + expect(eventsWithoutExamples(testCase.events, testCase.formatters)).toEqual( + testCase.expected + ); + }); +}); + +describe('removeUnknowns', () => { + const testCases = [ + { + description: 'event code not present in the formatters array', + events: [ + { + codeDesc: 'Unknown', + code: 'ABC123', + raw: { + event: 'billing.delete_card', + }, + }, + ], + formatters: { + ABC456: { + type: 'billing.create_card', + desc: 'Card created', + }, + }, + expected: [], + }, + ]; + + test.each(testCases)('$description', testCase => { + expect(removeUnknowns(testCase.events, testCase.formatters)).toEqual( + testCase.expected + ); + }); +}); + +describe('createEventSection', () => { + const testCases = [ + { + description: 'Example event with full information', + event: { + codeDesc: 'Credit Card Deleted', + message: 'User [root] has deleted a credit card', + id: '056517e0-f7e1-4286-b437-c75f3a865af4', + code: 'TBL01I', + user: 'root', + time: new Date('2021-03-18T16:28:51.219Z'), + raw: { + cluster_name: 'some-name', + code: 'TBL01I', + ei: 0, + event: 'billing.delete_card', + time: '2021-03-18T16:28:51.219Z', + uid: '056517e0-f7e1-4286-b437-c75f3a865af4', + user: 'root', + }, + }, + expected: `## billing.delete_card + +Credit Card Deleted + +Example: + +\`\`\`json +{ + "cluster_name": "some-name", + "code": "TBL01I", + "ei": 0, + "event": "billing.delete_card", + "time": "2021-03-18T16:28:51.219Z", + "uid": "056517e0-f7e1-4286-b437-c75f3a865af4", + "user": "root" +} +\`\`\` +`, + }, + { + description: 'Event with only the raw.event field', + event: { + codeDesc: 'Credit Card Deleted', + code: 'TBL01I', + raw: { + event: 'billing.delete_card', + }, + }, + expected: `## billing.delete_card + +Credit Card Deleted + +Code: \`TBL01I\` + +Event: \`billing.delete_card\` +`, + }, + { + description: 'description is a function', + event: { + codeDesc: ({ code, event }) => { + const eventName = 'Port forwarding'; + + switch (code) { + case 'ABC123': + return `${eventName} Start`; + case 'DEF123': + return `${eventName} Stop`; + case 'GHI123': + return `${eventName} Failure`; + } + }, + code: 'ABC123', + raw: { + event: 'port', + user: 'myuser', + }, + }, + expected: `## port + +Port forwarding Start + +Example: + +\`\`\`json +{ + "event": "port", + "user": "myuser" +} +\`\`\` +`, + }, + ]; + + test.each(testCases)('$description', testCase => { + expect(createEventSection(testCase.event)).toEqual(testCase.expected); + }); +}); + +describe('createReferencePage', () => { + const introParagraph = 'This is an intro paragraph.'; + + test('formats a list of events as expected', () => { + const events = [ + { + codeDesc: 'Kubernetes Created', + message: + 'User [05ff66c9-a948-42f4-af0e-a1b6ba62561e.root] created Kubernetes cluster [kube-local]', + id: '9d37514f-aef5-426f-9fda-31fd35d070f5', + code: 'T3010I', + user: '05ff66c9-a948-42f4-af0e-a1b6ba62561e.root', + time: new Date('2022-09-08T15:42:36.005Z'), + raw: { + cluster_name: 'root', + code: 'T3010I', + kube_labels: [Object], + ei: 0, + event: 'kube.create', + expires: '0001-01-01T00:00:00Z', + name: 'kube-local', + time: '2022-09-08T15:42:36.005Z', + uid: '9d37514f-aef5-426f-9fda-31fd35d070f5', + user: '05ff66c9-a948-42f4-af0e-a1b6ba62561e.root', + }, + }, + { + codeDesc: 'Kubernetes Updated', + message: + 'User [05ff66c9-a948-42f4-af0e-a1b6ba62561e.root] updated Kubernetes cluster [kube-local]', + id: 'fe631a5a-6418-49d6-99e7-5280654663ec', + code: 'T3011I', + user: '05ff66c9-a948-42f4-af0e-a1b6ba62561e.root', + time: new Date('2022-09-08T15:42:36.005Z'), + raw: { + cluster_name: 'root', + code: 'T3011I', + kube_labels: [Object], + ei: 0, + event: 'kube.update', + expires: '0001-01-01T00:00:00Z', + name: 'kube-local', + time: '2022-09-08T15:42:36.005Z', + uid: 'fe631a5a-6418-49d6-99e7-5280654663ec', + user: '05ff66c9-a948-42f4-af0e-a1b6ba62561e.root', + }, + }, + ]; + + const expected = `--- +title: "Audit Event Reference" +description: "Provides a comprehensive list of Teleport audit events and their fields." +--- +{/* Generated file. Do not edit. */} +{/* To regenerate, navigate to docs/gen-event-reference and run pnpm gen-docs */} + +This is an intro paragraph. + +## kube.create + +Kubernetes Created + +Example: + +\`\`\`json +{ + "cluster_name": "root", + "code": "T3010I", + "kube_labels": [ + null + ], + "ei": 0, + "event": "kube.create", + "expires": "0001-01-01T00:00:00Z", + "name": "kube-local", + "time": "2022-09-08T15:42:36.005Z", + "uid": "9d37514f-aef5-426f-9fda-31fd35d070f5", + "user": "05ff66c9-a948-42f4-af0e-a1b6ba62561e.root" +} +\`\`\` + +## kube.update + +Kubernetes Updated + +Example: + +\`\`\`json +{ + "cluster_name": "root", + "code": "T3011I", + "kube_labels": [ + null + ], + "ei": 0, + "event": "kube.update", + "expires": "0001-01-01T00:00:00Z", + "name": "kube-local", + "time": "2022-09-08T15:42:36.005Z", + "uid": "fe631a5a-6418-49d6-99e7-5280654663ec", + "user": "05ff66c9-a948-42f4-af0e-a1b6ba62561e.root" +} +\`\`\` +`; + const actual = createReferencePage(events, introParagraph); + expect(actual).toEqual(expected); + }); + + test('orders event sections by H2', () => { + const events = [ + { + codeDesc: 'Event C', + code: 'GHI123', + raw: { + event: 'event.c', + code: 'GHI123', + }, + }, + { + codeDesc: 'Event A', + code: 'ABC123', + raw: { + event: 'event.a', + code: 'ABC123', + }, + }, + { + codeDesc: 'Event B', + code: 'DEF123', + raw: { + event: 'event.b', + code: 'DEF123', + }, + }, + ]; + + const expected = `--- +title: "Audit Event Reference" +description: "Provides a comprehensive list of Teleport audit events and their fields." +--- +{/* Generated file. Do not edit. */} +{/* To regenerate, navigate to docs/gen-event-reference and run pnpm gen-docs */} + +This is an intro paragraph. + +## event.a + +Event A + +Example: + +\`\`\`json +{ + "event": "event.a", + "code": "ABC123" +} +\`\`\` + +## event.b + +Event B + +Example: + +\`\`\`json +{ + "event": "event.b", + "code": "DEF123" +} +\`\`\` + +## event.c + +Event C + +Example: + +\`\`\`json +{ + "event": "event.c", + "code": "GHI123" +} +\`\`\` +`; + const actual = createReferencePage(events, introParagraph); + expect(actual).toEqual(expected); + }); + + test('includes H3 sections for event codes if there are duplicate types', () => { + const events = [ + { + codeDesc: 'Event A', + code: 'ABC123', + raw: { + event: 'event.a', + code: 'ABC123', + }, + }, + { + codeDesc: 'Event A failed', + code: 'ABC456', + raw: { + event: 'event.a', + code: 'ABC456', + }, + }, + ]; + + const expected = `--- +title: "Audit Event Reference" +description: "Provides a comprehensive list of Teleport audit events and their fields." +--- +{/* Generated file. Do not edit. */} +{/* To regenerate, navigate to docs/gen-event-reference and run pnpm gen-docs */} + +This is an intro paragraph. + +## event.a + +There are multiple events with the \`event.a\` type. + +### ABC123 + +Event A + +Example: + +\`\`\`json +{ + "event": "event.a", + "code": "ABC123" +} +\`\`\` + +### ABC456 + +Event A failed + +Example: + +\`\`\`json +{ + "event": "event.a", + "code": "ABC456" +} +\`\`\` +`; + const actual = createReferencePage(events, introParagraph); + expect(actual).toEqual(expected); + }); + + test('deduplicates event codes', () => { + const events = [ + { + codeDesc: 'Event A', + raw: { + event: 'event.a', + code: 'ABC123', + }, + }, + { + codeDesc: 'Event A', + raw: { + event: 'event.a', + code: 'ABC123', + }, + }, + ]; + + const expected = `--- +title: "Audit Event Reference" +description: "Provides a comprehensive list of Teleport audit events and their fields." +--- +{/* Generated file. Do not edit. */} +{/* To regenerate, navigate to docs/gen-event-reference and run pnpm gen-docs */} + +This is an intro paragraph. + +## event.a + +Event A + +Example: + +\`\`\`json +{ + "event": "event.a", + "code": "ABC123" +} +\`\`\` +`; + const actual = createReferencePage(events, introParagraph); + expect(actual).toEqual(expected); + }); + + test('displays multiple events with only one raw field', () => { + const events = [ + { + codeDesc: 'Access Request Reviewed', + code: 'T5002I', + raw: { event: 'access_request.review' }, + }, + { + codeDesc: 'Stable UNIX user created', + code: 'TSUU001I', + raw: { event: 'stable_unix_user.create' }, + }, + ]; + + const expected = `--- +title: "Audit Event Reference" +description: "Provides a comprehensive list of Teleport audit events and their fields." +--- +{/* Generated file. Do not edit. */} +{/* To regenerate, navigate to docs/gen-event-reference and run pnpm gen-docs */} + +This is an intro paragraph. + +## access_request.review + +Access Request Reviewed + +Code: \`T5002I\` + +Event: \`access_request.review\` + +## stable_unix_user.create + +Stable UNIX user created + +Code: \`TSUU001I\` + +Event: \`stable_unix_user.create\` +`; + const actual = createReferencePage(events, introParagraph); + expect(actual).toEqual(expected); + }); + + test('includes H3 sections for event codes with duplicate types and partial fields', () => { + const events = [ + { + codeDesc: 'Event A', + code: 'ABC123', + raw: { + event: 'event.a', + }, + }, + { + codeDesc: 'Event A failed', + code: 'ABC456', + raw: { + event: 'event.a', + code: 'ABC456', + user: 'myuser', + }, + }, + { + codeDesc: 'Event A starting', + code: 'ABC789', + raw: { + event: 'event.a', + }, + }, + ]; + + const expected = `--- +title: "Audit Event Reference" +description: "Provides a comprehensive list of Teleport audit events and their fields." +--- +{/* Generated file. Do not edit. */} +{/* To regenerate, navigate to docs/gen-event-reference and run pnpm gen-docs */} + +This is an intro paragraph. + +## event.a + +There are multiple events with the \`event.a\` type. + +### ABC123 + +Event A + +Code: \`ABC123\` + +Event: \`event.a\` + +### ABC456 + +Event A failed + +Example: + +\`\`\`json +{ + "event": "event.a", + "code": "ABC456", + "user": "myuser" +} +\`\`\` + +### ABC789 + +Event A starting + +Code: \`ABC789\` + +Event: \`event.a\` +`; + const actual = createReferencePage(events, introParagraph); + expect(actual).toEqual(expected); + }); +}); diff --git a/docs/gen-event-reference/index.js b/docs/gen-event-reference/index.js new file mode 100644 index 0000000000000..e81afa3f75b2c --- /dev/null +++ b/docs/gen-event-reference/index.js @@ -0,0 +1,57 @@ +import { default as fs } from 'node:fs'; + +import { events } from './dist/fixtures.js'; +import { formatters } from './dist/formatters.js'; +import { + createReferencePage, + eventsWithoutExamples, + removeUnknowns, +} from './gen-event-reference.js'; + +const introParagraph = `{/*cSpell:disable*/} + +Teleport components emit audit events to record activity within the cluster. + +Audit event payloads have an \`event\` field that describes the event, which is +often an operation performed against a dynamic resource (e.g., +\`access_list.create\` for the creation of an Access List) or some other user +behavior, such as a local user login (\`user.login\`). The \`code\` field +includes a string with pattern \`[A-Z0-9]{6}\` that is unique to an audit event, +such as \`TAP03I\` for the creation of an application resource. + +In some cases, an audit event describes both a success state and a failure +state, while the \`event\` field is the same for both states. In this case, the +\`code\` field differs between states. For example, \`access_list.create\` +describes both successful and failed Access List creations, while the success +event has code \`TAL001I\` and the failure has code \`TAL001E\`. For other +events, like \`db.session.query.failed\` and \`db.session.query\`, the event +type describes only the success or failure state. + +You can set up Teleport to export audit events to third-party services for +storage, visualization, and analysis. For more information, read [Exporting +Teleport Audit Events]( +../admin-guides/management/export-audit-events/export-audit-events.mdx).`; + +if (process.argv.length !== 3) { + console.error( + 'The argument of the script must be the path of the audit event reference page.' + ); + process.exit(1); +} + +console.log('Writing an audit event reference page to ', process.argv[2]); + +const noExampleEvents = eventsWithoutExamples(events, formatters); +noExampleEvents.forEach(e => { + console.error( + `Warning: adding an entry for ${e.code} (${e.raw.event}) with no example. Add a test fixture to web/packages/teleport/src/Audit/fixtures/index.ts` + ); +}); + +fs.writeFileSync( + process.argv[2], + createReferencePage( + removeUnknowns(events, formatters).concat(noExampleEvents), + introParagraph + ) +); diff --git a/docs/gen-event-reference/package.json b/docs/gen-event-reference/package.json new file mode 100644 index 0000000000000..4414a9cf33d3a --- /dev/null +++ b/docs/gen-event-reference/package.json @@ -0,0 +1,19 @@ +{ + "name": "gen-audit-event-reference", + "version": "1.0.0", + "type": "module", + "scripts": { + "build": "vite --config events.vite.config.mts build", + "gen-docs": "node index.js ../pages/reference/audit-events.mdx", + "test": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest" + }, + "devDependencies": { + "vite-tsconfig-paths": "^5.1.4" + }, + "packageManager": "pnpm@9.8.0", + "dependencies": { + "@babel/parser": "^7.27.0", + "@babel/plugin-syntax-typescript": "^7.25.9", + "jest": "^29.7.0" + } +} diff --git a/docs/gen-event-reference/pnpm-lock.yaml b/docs/gen-event-reference/pnpm-lock.yaml new file mode 100644 index 0000000000000..71d53227a7ffa --- /dev/null +++ b/docs/gen-event-reference/pnpm-lock.yaml @@ -0,0 +1,2491 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@babel/parser': + specifier: ^7.27.0 + version: 7.27.0 + '@babel/plugin-syntax-typescript': + specifier: ^7.25.9 + version: 7.25.9(@babel/core@7.26.10) + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.14.0) + devDependencies: + vite-tsconfig-paths: + specifier: ^5.1.4 + version: 5.1.4 + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.8': + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.10': + resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.0': + resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.0': + resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.0': + resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.27.0': + resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.0': + resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/node@22.14.0': + resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001712: + resolution: {integrity: sha512-MBqPpGYYdQ7/hfKiet9SCI+nmN5/hp4ZzveOJubl5DTAMa5oggjAuoi0Z4onBpKPFI2ePGnQuQIzF3VxDjDJig==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + electron-to-chromium@1.5.132: + resolution: {integrity: sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tsconfck@3.1.5: + resolution: {integrity: sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + vite-tsconfig-paths@5.1.4: + resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.8': {} + + '@babel/core@7.26.10': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.27.0 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helpers': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.27.0': + dependencies: + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.0': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.26.5': {} + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helpers@7.27.0': + dependencies: + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 + + '@babel/parser@7.27.0': + dependencies: + '@babel/types': 7.27.0 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/template@7.27.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + + '@babel/traverse@7.27.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.27.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@bcoe/v8-coverage@0.2.3': {} + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.14.0 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@29.7.0': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.14.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@22.14.0) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.14.0 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 22.14.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.0': + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/reporters@29.7.0': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 22.14.0 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@29.7.0': + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@29.7.0': + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.26.10 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.14.0 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@sinclair/typebox@0.27.8': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.7 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.27.0 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + + '@types/babel__traverse@7.20.7': + dependencies: + '@babel/types': 7.27.0 + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 22.14.0 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/node@22.14.0': + dependencies: + undici-types: 6.21.0 + + '@types/stack-utils@2.0.3': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + babel-jest@29.7.0(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.26.10) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.26.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.7 + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.10) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.10) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.10) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.10) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.10) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.10) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.10) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.10) + + babel-preset-jest@29.6.3(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) + + balanced-match@1.0.2: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001712 + electron-to-chromium: 1.5.132 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.4) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-from@1.1.2: {} + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001712: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + char-regex@1.0.2: {} + + ci-info@3.9.0: {} + + cjs-module-lexer@1.4.3: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + create-jest@29.7.0(@types/node@22.14.0): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@22.14.0) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + dedent@1.5.3: {} + + deepmerge@4.3.1: {} + + detect-newline@3.1.0: {} + + diff-sequences@29.6.3: {} + + electron-to-chromium@1.5.132: {} + + emittery@0.13.1: {} + + emoji-regex@8.0.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + escalade@3.2.0: {} + + escape-string-regexp@2.0.0: {} + + esprima@4.0.1: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exit@0.1.2: {} + + expect@29.7.0: + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + + fast-json-stable-stringify@2.1.0: {} + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-package-type@0.1.0: {} + + get-stream@6.0.1: {} + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@11.12.0: {} + + globrex@0.1.2: {} + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + html-escaper@2.0.2: {} + + human-signals@2.1.0: {} + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + is-arrayish@0.2.1: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-fullwidth-code-point@3.0.0: {} + + is-generator-fn@2.1.0: {} + + is-number@7.0.0: {} + + is-stream@2.0.1: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.26.10 + '@babel/parser': 7.27.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.26.10 + '@babel/parser': 7.27.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + + jest-circus@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.14.0 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.3 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@29.7.0(@types/node@22.14.0): + dependencies: + '@jest/core': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@22.14.0) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@22.14.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-config@29.7.0(@types/node@22.14.0): + dependencies: + '@babel/core': 7.26.10 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.10) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.14.0 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-docblock@29.7.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@29.7.0: + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.14.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 22.14.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-leak-detector@29.7.0: + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.26.2 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.14.0 + jest-util: 29.7.0 + + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@29.7.0: + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + jest-resolve@29.7.0: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.10 + resolve.exports: 2.0.3 + slash: 3.0.0 + + jest-runner@29.7.0: + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.14.0 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + + jest-runtime@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.14.0 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.26.10 + '@babel/generator': 7.27.0 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) + '@babel/types': 7.27.0 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.10) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.14.0 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-watcher@29.7.0: + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.14.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + + jest-worker@29.7.0: + dependencies: + '@types/node': 22.14.0 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@29.7.0(@types/node@22.14.0): + dependencies: + '@jest/core': 29.7.0 + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@22.14.0) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + jsesc@3.1.0: {} + + json-parse-even-better-errors@2.3.1: {} + + json5@2.2.3: {} + + kleur@3.0.3: {} + + leven@3.1.0: {} + + lines-and-columns@1.2.4: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + make-dir@4.0.0: + dependencies: + semver: 7.7.1 + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + merge-stream@2.0.0: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mimic-fn@2.1.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + ms@2.1.3: {} + + natural-compare@1.4.0: {} + + node-int64@0.4.0: {} + + node-releases@2.0.19: {} + + normalize-path@3.0.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-try@2.2.0: {} + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pirates@4.0.7: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + pure-rand@6.1.0: {} + + react-is@18.3.1: {} + + require-directory@2.1.1: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@5.0.0: {} + + resolve.exports@2.0.3: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + semver@6.3.1: {} + + semver@7.7.1: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@3.0.7: {} + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + sprintf-js@1.0.3: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + tmpl@1.0.5: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tsconfck@3.1.5: {} + + type-detect@4.0.8: {} + + type-fest@0.21.3: {} + + undici-types@6.21.0: {} + + update-browserslist-db@1.1.3(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + vite-tsconfig-paths@5.1.4: + dependencies: + debug: 4.4.0 + globrex: 0.1.2 + tsconfck: 3.1.5 + transitivePeerDependencies: + - supports-color + - typescript + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} diff --git a/docs/gen-event-reference/pnpm-workspace.yaml b/docs/gen-event-reference/pnpm-workspace.yaml new file mode 100644 index 0000000000000..412d6b16afffa --- /dev/null +++ b/docs/gen-event-reference/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +# This file only exists to declare a separate pnpm workspace so installations +# don't affect the main Teleport pnpm-lock.yaml. diff --git a/docs/pages/reference/audit-events.mdx b/docs/pages/reference/audit-events.mdx new file mode 100644 index 0000000000000..0a48b5d4f0eeb --- /dev/null +++ b/docs/pages/reference/audit-events.mdx @@ -0,0 +1,5619 @@ +--- +title: "Audit Event Reference" +description: "Provides a comprehensive list of Teleport audit events and their fields." +--- +{/* Generated file. Do not edit. */} +{/* To regenerate, navigate to docs/gen-event-reference and run pnpm gen-docs */} + +{/*cSpell:disable*/} + +Teleport components emit audit events to record activity within the cluster. + +Audit event payloads have an `event` field that describes the event, which is +often an operation performed against a dynamic resource (e.g., +`access_list.create` for the creation of an Access List) or some other user +behavior, such as a local user login (`user.login`). The `code` field +includes a string with pattern `[A-Z0-9]{6}` that is unique to an audit event, +such as `TAP03I` for the creation of an application resource. + +In some cases, an audit event describes both a success state and a failure +state, while the `event` field is the same for both states. In this case, the +`code` field differs between states. For example, `access_list.create` +describes both successful and failed Access List creations, while the success +event has code `TAL001I` and the failure has code `TAL001E`. For other +events, like `db.session.query.failed` and `db.session.query`, the event +type describes only the success or failure state. + +You can set up Teleport to export audit events to third-party services for +storage, visualization, and analysis. For more information, read [Exporting +Teleport Audit Events]( +../admin-guides/management/export-audit-events/export-audit-events.mdx). + +## access_graph.crown_jewel.create + +Crown Jewel Created + +Code: `CJ001I` + +Event: `access_graph.crown_jewel.create` + +## access_graph.crown_jewel.delete + +Crown Jewel Deleted + +Code: `CJ003I` + +Event: `access_graph.crown_jewel.delete` + +## access_graph.crown_jewel.update + +Crown Jewel Updated + +Code: `CJ002I` + +Event: `access_graph.crown_jewel.update` + +## access_graph.path.changed + +Access Path Changed + +Code: `TAG001I` + +Event: `access_graph.path.changed` + +## access_list.create + +There are multiple events with the `access_list.create` type. + +### TAL001I + +Access list created + +Example: + +```json +{ + "code": "TAL001I", + "event": "access_list.create", + "time": "2023-05-08T19:21:36.144Z", + "name": "access-list", + "updated_by": "mike" +} +``` + +### TAL001E + +Access list create failed + +Example: + +```json +{ + "code": "TAL001E", + "event": "access_list.create", + "time": "2023-05-08T19:21:36.144Z", + "name": "access-list", + "updated_by": "mike" +} +``` + +## access_list.delete + +There are multiple events with the `access_list.delete` type. + +### TAL003I + +Access list deleted + +Example: + +```json +{ + "code": "TAL003I", + "event": "access_list.delete", + "time": "2023-05-08T19:21:36.144Z", + "name": "access-list", + "updated_by": "mike" +} +``` + +### TAL003E + +Access list delete failed + +Example: + +```json +{ + "code": "TAL003E", + "event": "access_list.delete", + "time": "2023-05-08T19:21:36.144Z", + "name": "access-list", + "updated_by": "mike" +} +``` + +## access_list.member.add + +There are multiple events with the `access_list.member.add` type. + +### TAL005I + +Access list member added + +Example: + +```json +{ + "code": "TAL005I", + "event": "access_list.member.add", + "time": "2023-05-08T19:21:36.144Z", + "access_list_name": "access-list", + "members": [ + { + "member_name": "user" + } + ], + "updated_by": "mike" +} +``` + +### TAL005E + +Access list member addition failure + +Example: + +```json +{ + "code": "TAL005E", + "event": "access_list.member.add", + "time": "2023-05-08T19:21:36.144Z", + "access_list_name": "access-list", + "members": [ + { + "member_name": "user" + } + ], + "updated_by": "mike" +} +``` + +## access_list.member.delete + +There are multiple events with the `access_list.member.delete` type. + +### TAL007I + +Access list member removed + +Example: + +```json +{ + "code": "TAL007I", + "event": "access_list.member.delete", + "time": "2023-05-08T19:21:36.144Z", + "access_list_name": "access-list", + "members": [ + { + "member_name": "user" + } + ], + "updated_by": "mike" +} +``` + +### TAL007E + +Access list member removal failure + +Example: + +```json +{ + "code": "TAL007E", + "event": "access_list.member.delete", + "time": "2023-05-08T19:21:36.144Z", + "access_list_name": "access-list", + "members": [ + { + "member_name": "carrot" + }, + { + "member_name": "apple" + }, + { + "member_name": "banana" + } + ], + "updated_by": "mike" +} +``` + +## access_list.member.delete_all_members + +There are multiple events with the `access_list.member.delete_all_members` type. + +### TAL008I + +All members removed from access list + +Example: + +```json +{ + "code": "TAL008I", + "event": "access_list.member.delete_all_members", + "time": "2023-05-08T19:21:36.144Z", + "access_list_name": "access-list", + "updated_by": "mike" +} +``` + +### TAL008E + +Access list member delete all members failure + +Example: + +```json +{ + "code": "TAL008E", + "event": "access_list.member.delete_all_members", + "time": "2023-05-08T19:21:36.144Z", + "access_list_name": "access-list", + "updated_by": "mike" +} +``` + +## access_list.member.update + +There are multiple events with the `access_list.member.update` type. + +### TAL006I + +Access list member updated + +Example: + +```json +{ + "code": "TAL006I", + "event": "access_list.member.update", + "time": "2023-05-08T19:21:36.144Z", + "access_list_name": "access-list", + "members": [ + { + "member_name": "user" + } + ], + "updated_by": "mike" +} +``` + +### TAL006E + +Access list member update failure + +Example: + +```json +{ + "code": "TAL006E", + "event": "access_list.member.update", + "time": "2023-05-08T19:21:36.144Z", + "access_list_name": "access-list", + "members": [ + { + "member_name": "user" + } + ], + "updated_by": "mike" +} +``` + +## access_list.review + +There are multiple events with the `access_list.review` type. + +### TAL004I + +Access list reviewed + +Example: + +```json +{ + "code": "TAL004I", + "event": "access_list.review", + "time": "2023-05-08T19:21:36.144Z", + "name": "access-list", + "updated_by": "mike" +} +``` + +### TAL004E + +Access list review failed + +Example: + +```json +{ + "code": "TAL004E", + "event": "access_list.review", + "time": "2023-05-08T19:21:36.144Z", + "name": "access-list", + "updated_by": "mike" +} +``` + +## access_list.update + +There are multiple events with the `access_list.update` type. + +### TAL002I + +Access list updated + +Example: + +```json +{ + "code": "TAL002I", + "event": "access_list.update", + "time": "2023-05-08T19:21:36.144Z", + "name": "access-list", + "updated_by": "mike" +} +``` + +### TAL002E + +Access list update failed + +Example: + +```json +{ + "code": "TAL002E", + "event": "access_list.update", + "time": "2023-05-08T19:21:36.144Z", + "name": "access-list", + "updated_by": "mike" +} +``` + +## access_request.create + +Access Request Created + +Example: + +```json +{ + "id": "66b827b2-1b0b-512b-965d-6c789388d3c9", + "code": "T5000I", + "event": "access_request.create", + "time": "2020-06-05T19:26:53Z", + "uid": "68a83a99-73ce-4bd7-bbf7-99103c2ba6a0", + "user": "Carrie_Sandoval", + "state": "PENDING", + "roles": [ + "admin" + ] +} +``` + +## access_request.delete + +Access Request Deleted + +Example: + +```json +{ + "id": "66b827b2-1b0b-512b-965d-6c789388d3c9", + "code": "T5003I", + "event": "access_request.delete", + "time": "2020-06-05T19:26:53Z", + "uid": "68a83a99-73ce-4bd7-bbf7-99103c2ba6a0" +} +``` + +## access_request.review + +Access Request Reviewed + +Code: `T5002I` + +Event: `access_request.review` + +## access_request.search + +Resource Access Search + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "T5004I", + "ei": 0, + "event": "access_request.search", + "namespace": "default", + "resource_type": "db_server", + "search_as_roles": [ + "admin", + "really-long-role-name-1", + "really-long-role-name-2", + "really-long-role-name-3", + "really-long-role-name-4", + "really-long-role-name-5", + "really-long-role-name-6", + "really-long-role-name-7", + "really-long-role-name-8", + "really-long-role-name-9" + ], + "time": "2022-06-08T15:10:35.368Z", + "uid": "b13d61-b97-475f-86ef-1fedf", + "user": "foo" +} +``` + +## access_request.update + +Access Request Updated + +Example: + +```json +{ + "id": "66b827b2-1b0b-512b-965d-6c789388d3c9", + "code": "T5001I", + "event": "access_request.update", + "time": "2020-06-05T19:26:53Z", + "uid": "68a83a99-73ce-4bd7-bbf7-99103c2ba6a0", + "state": "APPROVED", + "updated_by": "Sam_Waters" +} +``` + +## app.create + +Application Created + +Example: + +```json +{ + "code": "TAP03I", + "ei": 0, + "event": "app.create", + "time": "2022-09-27T19:07:35.00Z", + "uid": "45cabf1e-3f19-4f83-a360-01ac0a176b67", + "aws_role_arn": "arn:aws:iam::1234567890:role/steve", + "name": "dynamic-app", + "user": "mike" +} +``` + +## app.delete + +Application Deleted + +Example: + +```json +{ + "code": "TAP05I", + "ei": 0, + "event": "app.delete", + "time": "2022-09-27T19:11:35.00Z", + "uid": "d2342a20-9697-4a5d-9658-5d473e04624a", + "aws_role_arn": "arn:aws:iam::1234567890:role/steve", + "name": "dynamic-app", + "user": "mike" +} +``` + +## app.session.chunk + +App Session Data + +Example: + +```json +{ + "code": "T2008I", + "ei": 0, + "event": "app.session.chunk", + "namespace": "default", + "server_id": "a0518380-0d53-4188-ac8b-8ddd8103e45b", + "session_chunk_id": "3a54f32d-210f-4338-abf5-133bfe19ccc0", + "sid": "6593cf87-9839-4f18-abf8-c54873aaeb4e", + "time": "2020-10-30T17:28:14.705Z", + "uid": "8ea5be3d-07b1-4308-8e0d-2d2ec57cbb20", + "user": "alice", + "app_name": "test" +} +``` + +## app.session.dynamodb.request + +App Session DynamoDB Request + +Example: + +```json +{ + "code": "T2013I", + "ei": 1, + "event": "app.session.dynamodb.request", + "app_name": "dyno1", + "app_public_addr": "dynamodb.root.com", + "app_uri": "https://console.aws.amazon.com/dynamodbv2/home", + "aws_host": "dynamodb.us-west-2.amazonaws.com", + "aws_region": "us-west-2", + "aws_role_arn": "arn:aws:iam::123456789012:role/GavinDynamoDBRole", + "aws_service": "dynamodb", + "body": { + "TableName": "test-table" + }, + "cluster_name": "root.com", + "method": "POST", + "path": "/", + "raw_query": "", + "session_chunk_id": "3a54f32d-210f-4338-abf5-133bfe19ccc0", + "status_code": 200, + "target": "DynamoDB_20120810.Scan", + "time": "2022-10-19T19:04:07.763Z", + "uid": "f6f38f69-46e9-4110-a773-2c88278d08ca", + "user": "alice" +} +``` + +## app.session.end + +App Session Ended + +Example: + +```json +{ + "app_name": "ponger", + "app_public_addr": "ponger.root.gravitational.io", + "app_uri": "tcp://localhost:9876", + "cluster_name": "root", + "code": "T2011I", + "ei": 0, + "event": "app.session.end", + "namespace": "default", + "server_id": "8e70002c-7a07-4513-a3fa-ac556a1d7534", + "sid": "11c328b4-5a1e-4adc-b7cb-206389e5f130", + "time": "2022-08-10T19:54:40.444Z", + "uid": "ac8c9b6b-46a0-4b0e-8d85-2204101d5615", + "user": "alice" +} +``` + +## app.session.start + +App Session Started + +Example: + +```json +{ + "addr.remote": "50.34.48.113:56902", + "code": "T2007I", + "ei": 0, + "event": "app.session.start", + "namespace": "default", + "public_addr": "dumper.test.domain.com", + "server_id": "a0518380-0d53-4188-ac8b-8ddd8103e45b", + "sid": "6593cf87-9839-4f18-abf8-c54873aaeb4e", + "time": "2020-10-30T17:28:14.381Z", + "uid": "80400ed9-644e-4a6e-ab99-b264b34d0f55", + "user": "kimlisa", + "app_name": "test" +} +``` + +## app.update + +Application Updated + +Example: + +```json +{ + "code": "TAP04I", + "ei": 0, + "event": "app.update", + "time": "2022-09-27T19:09:35.00Z", + "uid": "9909a8d6-b45f-455c-953d-ba1a62340810", + "aws_role_arn": "arn:aws:iam::1234567890:role/steve", + "name": "dynamic-app", + "user": "mike" +} +``` + +## auth + +Auth Attempt Failed + +Example: + +```json +{ + "code": "T3007W", + "error": "ssh: principal \"fsdfdsf\" not in the set of valid principals for given certificate: [\"root\"]", + "event": "auth", + "success": false, + "time": "2019-04-22T02:09:06Z", + "uid": "036659d6-fdf7-40a4-aa80-74d6ac73b9c0", + "user": "admin@example.com" +} +``` + +## auth_preference.update + +Cluster Authentication Preferences Updated + +Code: `TCAUTH001I` + +Event: `auth_preference.update` + +## billing.create_card + +Credit Card Added + +Example: + +```json +{ + "cluster_name": "some-name", + "code": "TBL00I", + "ei": 0, + "event": "billing.create_card", + "time": "2021-03-18T16:29:05.044Z", + "uid": "5c40b62a-4ddd-466c-87a0-fa2922f743d0", + "user": "root" +} +``` + +## billing.delete_card + +Credit Card Deleted + +Example: + +```json +{ + "cluster_name": "some-name", + "code": "TBL01I", + "ei": 0, + "event": "billing.delete_card", + "time": "2021-03-18T16:28:51.219Z", + "uid": "056517e0-f7e1-4286-b437-c75f3a865af4", + "user": "root" +} +``` + +## billing.update_card + +Credit Card Updated + +Example: + +```json +{ + "cluster_name": "some-name", + "code": "TBL02I", + "ei": 0, + "event": "billing.update_card", + "time": "2021-03-18T16:28:49.067Z", + "uid": "0a06aba1-b87c-4d58-8922-e173f6b9729f", + "user": "root" +} +``` + +## billing.update_info + +Billing Information Updated + +Example: + +```json +{ + "cluster_name": "some-name", + "code": "TBL03I", + "ei": 0, + "event": "billing.update_info", + "time": "2021-03-18T16:29:15.719Z", + "uid": "95344b33-d25c-4875-896e-f21abc911547", + "user": "root" +} +``` + +## bot.create + +Bot Created + +Example: + +```json +{ + "cluster_name": "leaf.tele.ottr.sh:443", + "code": "TB001I", + "ei": 0, + "event": "bot.create", + "expires": "0001-01-01T00:00:00Z", + "name": "made-by-noah", + "time": "2023-12-08T10:53:39.798Z", + "uid": "0efbb33d-fa50-44e0-8dec-4ac89c0dd4ab", + "user": "noah" +} +``` + +## bot.delete + +Bot Deleted + +Example: + +```json +{ + "cluster_name": "leaf.tele.ottr.sh:443", + "code": "TB003I", + "ei": 0, + "event": "bot.delete", + "expires": "0001-01-01T00:00:00Z", + "name": "review2", + "time": "2023-12-08T09:52:30.579Z", + "uid": "0efbb33d-fa50-44e0-8dec-4ac89c0dd4ab", + "user": "noah" +} +``` + +## bot.join + +There are multiple events with the `bot.join` type. + +### TJ001I + +Bot Joined + +Example: + +```json +{ + "attributes": { + "actor": "strideynet", + "actor_id": "16336790", + "base_ref": "", + "environment": "", + "event_name": "push", + "head_ref": "", + "job_workflow_ref": "strideynet/sandbox/.github/workflows/build.yaml@refs/heads/main", + "ref": "refs/heads/main", + "ref_type": "branch", + "repository": "strideynet/sandbox", + "repository_id": "539963344", + "repository_owner": "strideynet", + "repository_owner_id": "16336790", + "repository_visibility": "private", + "run_attempt": "6", + "run_id": "3547291254", + "run_number": "73", + "sha": "758c69462083ad67f0714112aab31fdeb1ba3a59", + "sub": "repo:strideynet/sandbox:ref:refs/heads/main", + "workflow": "Demo" + }, + "bot_name": "github-demo", + "cluster_name": "root.tele.ottr.sh", + "code": "TJ001I", + "ei": 0, + "event": "bot.join", + "method": "github", + "success": true, + "time": "2022-12-05T17:11:03.268Z", + "token_name": "github-bot", + "uid": "15a82555-b5aa-4eb8-820e-551f991bf902" +} +``` + +### TJ001E + +Bot Join Failed + +Example: + +```json +{ + "attributes": { + "actor": "strideynet", + "actor_id": "16336790", + "base_ref": "", + "environment": "", + "event_name": "push", + "head_ref": "", + "job_workflow_ref": "strideynet/sandbox/.github/workflows/build.yaml@refs/heads/main", + "ref": "refs/heads/main", + "ref_type": "branch", + "repository": "strideynet/sandbox", + "repository_id": "539963344", + "repository_owner": "strideynet", + "repository_owner_id": "16336790", + "repository_visibility": "private", + "run_attempt": "3", + "run_id": "8604159359", + "run_number": "100", + "sha": "0c9c5361d15154caf1c151dc1f430ea3552c9b93", + "sub": "repo:strideynet/sandbox:ref:refs/heads/main", + "workflow": "Demo" + }, + "bot_name": "unknown", + "cluster_name": "leaf.tele.ottr.sh", + "code": "TJ001E", + "ei": 0, + "error": "id token claims did not match any allow rules", + "event": "bot.join", + "method": "unknown", + "success": false, + "time": "2024-04-08T17:33:48.877Z", + "uid": "2bc5e2cb-5ba1-47d7-a7ae-381cf323ae7f" +} +``` + +## bot.update + +Bot Updated + +Code: `TB002I` + +Event: `bot.update` + +## cert.create + +Certificate Issued + +Example: + +```json +{ + "cert_type": "user", + "code": "TC000I", + "event": "cert.create", + "identity": { + "user": "alice" + }, + "time": "2022-02-04T19:43:23.529Z" +} +``` + +## client.disconnect + +Client Disconnected + +Code: `T3006I` + +Event: `client.disconnect` + +## cluster_networking_config.update + +Cluster Networking Configuration Updated + +Code: `TCNET002I` + +Event: `cluster_networking_config.update` + +## contact.create + +Contact Created + +Code: `TCTC001I` + +Event: `contact.create` + +## contact.delete + +Contact Deleted + +Code: `TCTC002I` + +Event: `contact.delete` + +## db.create + +Database Created + +Example: + +```json +{ + "cluster_name": "root", + "code": "TDB03I", + "db_labels": { + "env": "local", + "teleport.dev/origin": "dynamic" + }, + "db_protocol": "postgres", + "db_uri": "localhost:5432", + "ei": 0, + "event": "db.create", + "expires": "0001-01-01T00:00:00Z", + "name": "postgres-local", + "time": "2021-10-08T15:42:15.39Z", + "uid": "9d37514f-aef5-426f-9fda-31fd35d070f5", + "user": "05ff66c9-a948-42f4-af0e-a1b6ba62561e.root" +} +``` + +## db.delete + +Database Deleted + +Example: + +```json +{ + "cluster_name": "root", + "code": "TDB05I", + "ei": 0, + "event": "db.delete", + "expires": "0001-01-01T00:00:00Z", + "name": "postgres-local", + "time": "2021-10-08T15:42:36.005Z", + "uid": "74f5e6b9-50c4-4195-bb26-d615641255bc", + "user": "05ff66c9-a948-42f4-af0e-a1b6ba62561e.root" +} +``` + +## db.session.cassandra.batch + +Cassandra Batch + +Example: + +```json +{ + "ei": 0, + "event": "db.session.cassandra.batch", + "code": "TCA01I", + "time": "2022-06-02T08:46:33.825Z", + "cluster_name": "im-a-cluster-name", + "user": "alice", + "sid": "a724c7e8-8e00-45a6-afac-82023d0f86b6", + "db_service": "cassandra", + "db_protocol": "cassandra", + "db_uri": "localhost:65054", + "db_user": "cassandra", + "consistency": "ConsistencyLevel QUORUM [0x0004]", + "batch_type": "BatchType LOGGED [0x00]", + "children": [ + { + "query": "INSERT INTO batch_table (id) VALUES 1" + }, + { + "query": "INSERT INTO batch_table (id) VALUES 2" + } + ] +} +``` + +## db.session.cassandra.execute + +Cassandra Execute + +Example: + +```json +{ + "ei": 0, + "event": "db.session.cassandra.execute", + "code": "TCA03I", + "time": "2022-06-02T08:46:33.825Z", + "cluster_name": "im-a-cluster-name", + "user": "alice", + "sid": "2126ee07-cfe1-4213-8032-70b3e6e1ac79", + "db_service": "cassandra", + "db_protocol": "cassandra", + "db_uri": "localhost:65054", + "db_user": "cassandra", + "query_id": "d34e638934721c3bcd69933f992a00cb" +} +``` + +## db.session.cassandra.prepare + +Cassandra Prepare Event + +Example: + +```json +{ + "ei": 0, + "event": "db.session.cassandra.prepare", + "code": "TCA02I", + "time": "2022-06-02T08:46:33.825Z", + "cluster_name": "im-a-cluster-name", + "user": "alice", + "sid": "2126ee07-cfe1-4213-8032-70b3e6e1ac79", + "db_service": "cassandra", + "db_protocol": "cassandra", + "db_uri": "localhost:65054", + "db_user": "cassandra", + "query": "SELECT * FROM system_schema.keyspaces" +} +``` + +## db.session.cassandra.register + +Cassandra Register + +Example: + +```json +{ + "ei": 0, + "event": "db.session.cassandra.register", + "code": "TCA04I", + "time": "2022-06-02T08:46:33.825Z", + "cluster_name": "im-a-cluster-name", + "user": "alice", + "sid": "2126ee07-cfe1-4213-8032-70b3e6e1ac79", + "db_service": "cassandra", + "db_protocol": "cassandra", + "db_uri": "localhost:65054", + "db_user": "cassandra", + "event_types": [ + "TOPOLOGY_CHANGE", + "STATUS_CHANGE", + "SCHEMA_CHANGE" + ] +} +``` + +## db.session.dynamodb.request + +There are multiple events with the `db.session.dynamodb.request` type. + +### TDY01I + +DynamoDB Request + +Example: + +```json +{ + "cluster_name": "root.com", + "code": "TDY01I", + "event": "db.session.dynamodb.request", + "db_name": "", + "db_protocol": "dynamodb", + "db_service": "ddb1", + "db_user": "DynamoDBRole", + "ei": 1, + "uri": "dynamodb.us-west-2.amazonaws.com", + "body": { + "TableName": "test-table" + }, + "method": "POST", + "path": "", + "raw_query": "", + "status_code": 200, + "target": "DynamoDB_20120810.Scan", + "time": "2022-12-23T19:14:07.763Z", + "uid": "12345678-46e9-4110-a773-2c88278d08ca", + "user": "alice@example.com" +} +``` + +### TDY01E + +DynamoDB Request Failed + +Example: + +```json +{ + "cluster_name": "root.com", + "code": "TDY01E", + "event": "db.session.dynamodb.request", + "db_name": "", + "db_protocol": "dynamodb", + "db_service": "ddb1", + "db_user": "DynamoDBRole", + "ei": 1, + "uri": "dynamodb.us-west-2.amazonaws.com", + "body": { + "TableName": "test-table" + }, + "method": "POST", + "path": "", + "raw_query": "", + "status_code": 0, + "target": "DynamoDB_20120810.Scan", + "time": "2022-12-23T19:04:07.763Z", + "uid": "12345678-46e9-4110-a773-2c88278d08ca", + "user": "alice@example.com" +} +``` + +## db.session.elasticsearch.request + +There are multiple events with the `db.session.elasticsearch.request` type. + +### TES00I + +Elasticsearch Request + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TES00I", + "body": null, + "category": 0, + "db_protocol": "elasticsearch", + "db_service": "myelastic", + "db_uri": "localhost:9201", + "db_user": "elasticuser", + "ei": 101, + "event": "db.session.elasticsearch.request", + "headers": { + "Accept": [ + "*/*" + ], + "User-Agent": [ + "curl/7.79.1" + ] + }, + "method": "GET", + "path": "/", + "query": "", + "raw_query": "", + "sid": "b739c817-bc11-4eaa-b256-c6646d7fcc21", + "target": "", + "time": "2022-09-27T11:43:58.433Z", + "uid": "730a8de0-79a9-486f-b9c6-3820c3a6977c", + "user": "alice" +} +``` + +### TES00E + +Elasticsearch Request Failed + +Code: `TES00E` + +Event: `db.session.elasticsearch.request` + +## db.session.end + +Database Session Ended + +Example: + +```json +{ + "cluster_name": "root", + "code": "TDB01I", + "db_name": "", + "db_protocol": "mongodb", + "db_service": "mongo-primary", + "db_uri": "mongodb://mongo-1:27017,mongo-2:27018/?replicaSet=rs0", + "db_user": "alice", + "ei": 16, + "event": "db.session.end", + "sid": "13c04d4b-2e94-4106-a3a1-5ab8aae10465", + "time": "2021-07-14T07:06:25.608Z", + "uid": "0a2387cd-3fa2-4424-9c14-e33af17e4ab1", + "user": "alice@example.com" +} +``` + +## db.session.malformed_packet + +Database Malformed Packet + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TDB06I", + "db_name": "master", + "db_protocol": "sqlserver", + "db_service": "sqlserver02", + "db_uri": "localhost:1433", + "db_user": "sqlserver", + "ei": 50, + "event": "db.session.malformed_packet", + "payload": "AwEAkAAAAgByAGEAbQBfADEAIABuAHYAYQByAGMAaABhAHIAKAA0ADAAMAAwACkAC0AAXwBtAHMAcABhAHIAYQBtAF8AMAAA50AfCQTQADQWAHMAcAB0AF8AbQBvAG4AaQB0AG8AcgALQABfAG0AcwBwAGEAcgBhAG0AXwAxAADnQB8JBNAANAYAZABiAG8A", + "sid": "3ed38c42-eef0-419b-b893-f2f10990f117", + "time": "2022-06-02T08:46:33.825Z", + "uid": "503e310d-8d88-4bea-bbbb-a1b35456a03a", + "user": "alice" +} +``` + +## db.session.mysql.create_db + +MySQL Create Database + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMY08I", + "db_name": "test", + "db_protocol": "mysql", + "db_service": "self-hosted-mysql", + "db_uri": "localhost:3306", + "db_user": "alice", + "event": "db.session.mysql.create_db", + "schema_name": "another_database", + "time": "2022-04-13T20:00:09.000Z", + "user": "alice@example.com" +} +``` + +## db.session.mysql.debug + +MySQL Debug + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMY12I", + "db_name": "test", + "db_protocol": "mysql", + "db_service": "self-hosted-mysql", + "db_uri": "localhost:3306", + "db_user": "alice", + "event": "db.session.mysql.debug", + "time": "2022-04-13T20:00:05.000Z", + "user": "alice@example.com" +} +``` + +## db.session.mysql.drop_db + +MySQL Drop Database + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMY09I", + "db_name": "test", + "db_protocol": "mysql", + "db_service": "self-hosted-mysql", + "db_uri": "localhost:3306", + "db_user": "alice", + "event": "db.session.mysql.drop_db", + "schema_name": "another_database", + "time": "2022-04-13T20:00:08.000Z", + "user": "alice@example.com" +} +``` + +## db.session.mysql.init_db + +MySQL Change Database + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMY07I", + "db_name": "test", + "db_protocol": "mysql", + "db_service": "self-hosted-mysql", + "db_uri": "localhost:3306", + "db_user": "alice", + "event": "db.session.mysql.init_db", + "schema_name": "another_database", + "time": "2022-04-13T20:00:10.000Z", + "user": "alice@example.com" +} +``` + +## db.session.mysql.process_kill + +MySQL Kill Process + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMY11I", + "db_name": "test", + "db_protocol": "mysql", + "db_service": "self-hosted-mysql", + "db_uri": "localhost:3306", + "db_user": "alice", + "event": "db.session.mysql.process_kill", + "process_id": 60, + "time": "2022-04-13T20:00:06.000Z", + "user": "alice@example.com" +} +``` + +## db.session.mysql.refresh + +MySQL Refresh + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMY13I", + "db_name": "test", + "db_protocol": "mysql", + "db_service": "self-hosted-mysql", + "db_uri": "localhost:3306", + "db_user": "alice", + "event": "db.session.mysql.refresh", + "subcommand": "REFRESH_THREADS", + "time": "2022-04-13T20:00:04.000Z", + "user": "alice@example.com" +} +``` + +## db.session.mysql.shut_down + +MySQL Shut Down + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMY10I", + "db_name": "test", + "db_protocol": "mysql", + "db_service": "self-hosted-mysql", + "db_uri": "localhost:3306", + "db_user": "alice", + "event": "db.session.mysql.shut_down", + "time": "2022-04-13T20:00:07.000Z", + "user": "alice@example.com" +} +``` + +## db.session.mysql.statements.bulk_execute + +MySQL Statement Bulk Execute + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMY06I", + "db_name": "test", + "db_protocol": "mysql", + "db_service": "self-hosted-mysql", + "db_uri": "localhost:3306", + "db_user": "alice", + "ei": 0, + "event": "db.session.mysql.statements.bulk_execute", + "parameters": null, + "statement_id": 1, + "time": "2022-02-10T20:57:53.000Z", + "user": "alice@example.com" +} +``` + +## db.session.mysql.statements.close + +MySQL Statement Close + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMY03I", + "db_name": "test", + "db_protocol": "mysql", + "db_service": "self-hosted-mysql", + "db_uri": "localhost:3306", + "db_user": "alice", + "ei": 0, + "event": "db.session.mysql.statements.close", + "statement_id": 1, + "time": "2022-02-10T20:57:56.000Z", + "user": "alice@example.com" +} +``` + +## db.session.mysql.statements.execute + +MySQL Statement Execute + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMY01I", + "db_name": "test", + "db_protocol": "mysql", + "db_service": "self-hosted-mysql", + "db_uri": "localhost:3306", + "db_user": "alice", + "ei": 0, + "event": "db.session.mysql.statements.execute", + "parameters": null, + "statement_id": 1, + "time": "2022-02-10T20:57:54.000Z", + "user": "alice@example.com" +} +``` + +## db.session.mysql.statements.fetch + +MySQL Statement Fetch + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMY05I", + "db_name": "test", + "db_protocol": "mysql", + "db_service": "self-hosted-mysql", + "db_uri": "localhost:3306", + "db_user": "alice", + "ei": 0, + "event": "db.session.mysql.statements.fetch", + "rows_count": 5, + "statement_id": 1, + "time": "2022-02-10T20:57:55.000Z", + "uid": "0a2bd129-7c2f-4e68-9c84-a17dc4415444", + "user": "alice@example.com" +} +``` + +## db.session.mysql.statements.prepare + +MySQL Statement Prepare + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMY00I", + "db_name": "test", + "db_protocol": "mysql", + "db_service": "self-hosted-mysql", + "db_uri": "localhost:3306", + "db_user": "alice", + "ei": 0, + "event": "db.session.mysql.statements.prepare", + "query": "UPDATE `test`.`user` SET `age` = '7' WHERE (`name` = 'alice')", + "time": "2022-02-10T20:57:50.000Z", + "user": "alice@example.com" +} +``` + +## db.session.mysql.statements.reset + +MySQL Statement Reset + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMY04I", + "db_name": "test", + "db_protocol": "mysql", + "db_service": "self-hosted-mysql", + "db_uri": "localhost:3306", + "db_user": "alice", + "ei": 0, + "event": "db.session.mysql.statements.reset", + "statement_id": 1, + "time": "2022-02-10T20:57:52.000Z", + "uid": "0a2bd129-7c2f-4e68-9c84-a17dc4415444", + "user": "alice@example.com" +} +``` + +## db.session.mysql.statements.send_long_data + +MySQL Statement Send Long Data + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMY02I", + "db_name": "test", + "db_protocol": "mysql", + "db_service": "self-hosted-mysql", + "db_uri": "localhost:3306", + "db_user": "alice", + "ei": 0, + "event": "db.session.mysql.statements.send_long_data", + "statement_id": 1, + "parameter_id": 2, + "data_size": 32, + "time": "2022-02-10T20:57:51.000Z", + "user": "alice@example.com" +} +``` + +## db.session.opensearch.request + +There are multiple events with the `db.session.opensearch.request` type. + +### TOS00I + +OpenSearch Request + +Example: + +```json +{ + "category": 2, + "cluster_name": "im-a-cluster-name", + "code": "TOS00I", + "db_protocol": "opensearch", + "db_service": "opensearch-aws", + "db_uri": "opensearch-aws-aaa111.eu-central-1.es.amazonaws.com:443", + "db_user": "arn:aws:iam::1234567890:role/teleport-db-role", + "ei": 1, + "event": "db.session.opensearch.request", + "headers": { + "Accept-Encoding": [ + "gzip" + ], + "Content-Type": [ + "application/json" + ], + "User-Agent": [ + "Go-http-client/1.1" + ] + }, + "method": "GET", + "path": "/_count", + "query": "", + "raw_query": "", + "sid": "370e5d86-84a6-4995-8476-dbea80f9eacf", + "status_code": 200, + "target": "", + "time": "2023-03-11T11:08:29.954Z", + "uid": "d15f795c-1f63-4076-bdd4-ffe88cde716e", + "user": "alice@example.com" +} +``` + +### TOS00E + +OpenSearch Request Failed + +Example: + +```json +{ + "category": 2, + "cluster_name": "im-a-cluster-name", + "code": "TOS00E", + "db_protocol": "opensearch", + "db_service": "opensearch-aws", + "db_uri": "opensearch-aws-aaa111.eu-central-1.es.amazonaws.com:443", + "db_user": "arn:aws:iam::1234567890:role/does-not-exist", + "ei": 1, + "event": "db.session.opensearch.request", + "headers": { + "Accept-Encoding": [ + "gzip" + ], + "Content-Type": [ + "application/json" + ], + "User-Agent": [ + "Go-http-client/1.1" + ] + }, + "method": "GET", + "path": "/_count", + "query": "", + "raw_query": "", + "sid": "2d9a43c1-14ab-40fa-88db-195312f3401c", + "status_code": 0, + "target": "", + "time": "2023-03-11T11:08:29.954Z", + "uid": "01ad9a74-c8d6-497f-83db-e1c0be83d8da", + "user": "alice@example.com" +} +``` + +## db.session.permissions.update + +Database User Permissions Updated + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TDB07I", + "db_name": "master", + "db_protocol": "postgres", + "db_service": "postgres-local", + "db_uri": "localhost:1433", + "db_user": "alice", + "ei": 50, + "event": "db.session.permissions.update", + "sid": "3ed38c42-eef0-419b-b893-f2f10990f117", + "time": "2022-06-02T08:46:33.825Z", + "uid": "503e310d-8d88-4bea-bbbb-a1b35456a03a", + "user": "alice", + "permission_summary": [ + { + "counts": { + "table": 1, + "view": 2 + }, + "permission": "INSERT" + }, + { + "counts": { + "table": 2, + "view": 4 + }, + "permission": "SELECT" + }, + { + "counts": { + "table": 3 + }, + "permission": "UPDATE" + } + ] +} +``` + +## db.session.postgres.function + +PostgreSQL Function Call + +Example: + +```json +{ + "cluster_name": "root", + "code": "TPG04I", + "db_name": "test", + "db_protocol": "postgres", + "db_service": "local", + "db_uri": "localhost:5432", + "db_user": "postgres", + "ei": 23, + "event": "db.session.postgres.function", + "sid": "5e0c50cc-4ee7-4110-8d6e-735bf1f06f1f", + "function_oid": "123", + "function_args": [ + "qweqweqwe" + ], + "time": "2021-12-16T00:40:37.073Z", + "uid": "295c88fc-4725-4de0-9049-64040fc69ec7", + "user": "alice" +} +``` + +## db.session.postgres.statements.bind + +PostgreSQL Statement Bind + +Example: + +```json +{ + "cluster_name": "root", + "code": "TPG01I", + "db_name": "test", + "db_protocol": "postgres", + "db_service": "local", + "db_uri": "localhost:5432", + "db_user": "postgres", + "ei": 20, + "event": "db.session.postgres.statements.bind", + "parameters": [ + "qweqweqwe" + ], + "portal_name": "", + "sid": "5e0c50cc-4ee7-4110-8d6e-735bf1f06f1f", + "statement_name": "test-ps", + "time": "2021-12-16T00:40:37.071Z", + "uid": "d5bed7e5-6a15-441b-b8ee-a2abd73f3136", + "user": "alice" +} +``` + +## db.session.postgres.statements.close + +PostgreSQL Statement Close + +Example: + +```json +{ + "cluster_name": "root", + "code": "TPG03I", + "db_name": "test", + "db_protocol": "postgres", + "db_service": "local", + "db_uri": "localhost:5432", + "db_user": "postgres", + "ei": 22, + "event": "db.session.postgres.statements.close", + "portal_name": "", + "sid": "5e0c50cc-4ee7-4110-8d6e-735bf1f06f1f", + "statement_name": "test-ps", + "time": "2021-12-16T00:40:37.073Z", + "uid": "295c88fc-4725-4de0-9049-64040fc69ec7", + "user": "alice" +} +``` + +## db.session.postgres.statements.execute + +PostgreSQL Statement Execute + +Example: + +```json +{ + "cluster_name": "root", + "code": "TPG02I", + "db_name": "test", + "db_protocol": "postgres", + "db_service": "local", + "db_uri": "localhost:5432", + "db_user": "postgres", + "ei": 21, + "event": "db.session.postgres.statements.execute", + "portal_name": "", + "sid": "5e0c50cc-4ee7-4110-8d6e-735bf1f06f1f", + "time": "2021-12-16T00:40:37.071Z", + "uid": "a0f045a2-45a4-4a4d-b14a-5f986c1818ff", + "user": "alice" +} +``` + +## db.session.postgres.statements.parse + +PostgreSQL Statement Parse + +Example: + +```json +{ + "cluster_name": "root", + "code": "TPG00I", + "db_name": "test", + "db_protocol": "postgres", + "db_service": "local", + "db_uri": "localhost:5432", + "db_user": "postgres", + "ei": 19, + "event": "db.session.postgres.statements.parse", + "query": "select id from test where id = $1::varchar", + "sid": "5e0c50cc-4ee7-4110-8d6e-735bf1f06f1f", + "statement_name": "test-ps", + "time": "2021-12-16T00:40:37.069Z", + "uid": "06781ebf-6c5b-463b-ad32-e7395afd4a59", + "user": "alice" +} +``` + +## db.session.query + +Database Query + +Example: + +```json +{ + "cluster_name": "root", + "code": "TDB02I", + "db_name": "test", + "db_protocol": "mongodb", + "db_query": "{\"find\": \"test\",\"filter\": {},\"lsid\": {\"id\": {\"$binary\":{\"base64\":\"2KMk23/TTCKUtiAVU0fbgg==\",\"subType\":\"04\"}}},\"$clusterTime\": {\"clusterTime\": {\"$timestamp\":{\"t\":\"1626246087\",\"i\":\"1\"}},\"signature\": {\"hash\": {\"$binary\":{\"base64\":\"8X7BlnDAUxKgUo5lpI3XoKoNF54=\",\"subType\":\"00\"}},\"keyId\": {\"$numberLong\":\"6969719000615878659\"}}},\"$db\": \"test\"}", + "db_service": "mongo-primary", + "db_uri": "mongodb://mongo-1:27017,mongo-2:27018/?replicaSet=rs0", + "db_user": "alice", + "ei": 11, + "event": "db.session.query", + "sid": "13c04d4b-2e94-4106-a3a1-5ab8aae10465", + "success": true, + "time": "2021-07-14T07:03:49.783Z", + "uid": "c4550623-0538-452d-912b-1242715666c4", + "user": "alice@example.com" +} +``` + +## db.session.query.failed + +Database Query Failed + +Example: + +```json +{ + "cluster_name": "root", + "code": "TDB02W", + "db_name": "houston", + "db_protocol": "mongodb", + "db_query": "{\"find\": \"test\",\"filter\": {},\"lsid\": {\"id\": {\"$binary\":{\"base64\":\"2KMk23/TTCKUtiAVU0fbgg==\",\"subType\":\"04\"}}},\"$clusterTime\": {\"clusterTime\": {\"$timestamp\":{\"t\":\"1626246227\",\"i\":\"1\"}},\"signature\": {\"hash\": {\"$binary\":{\"base64\":\"zBJKAl6VcjwQrr05N0O4qrQ92PY=\",\"subType\":\"00\"}},\"keyId\": {\"$numberLong\":\"6969719000615878659\"}}},\"$db\": \"houston\"}", + "db_service": "mongo-primary", + "db_uri": "mongodb://mongo-1:27017,mongo-2:27018/?replicaSet=rs0", + "db_user": "alice", + "ei": 13, + "error": "access to database denied", + "event": "db.session.query.failed", + "message": "access to database denied", + "sid": "13c04d4b-2e94-4106-a3a1-5ab8aae10465", + "success": false, + "time": "2021-07-14T07:05:22.32Z", + "uid": "21796ef9-a5dc-4595-a833-b893ac620488", + "user": "alice@example.com" +} +``` + +## db.session.spanner.rpc + +There are multiple events with the `db.session.spanner.rpc` type. + +### TSPN001W + +Spanner RPC Denied + +Example: + +```json +{ + "args": { + "database": "projects/project-id/instances/instance-id/databases/prod-db", + "session_count": 100, + "session_template": {} + }, + "cluster_name": "root", + "code": "TSPN001W", + "db_name": "prod-db", + "db_origin": "dynamic", + "db_protocol": "spanner", + "db_service": "teleport-spanner", + "db_type": "spanner", + "db_uri": "spanner.googleapis.com:443", + "db_user": "some-user", + "error": "access to db denied. User does not have permissions. Confirm database user and name.", + "event": "db.session.spanner.rpc", + "message": "access to db denied. User does not have permissions. Confirm database user and name.", + "procedure": "BatchCreateSessions", + "sid": "04364984-a6d0-4e2c-93c7-5c44e2359502", + "success": false, + "time": "2024-03-13T01:25:48.568Z", + "uid": "1de57538-2eea-438b-a52d-3098f8093b28", + "user": "alice@example.com" +} +``` + +### TSPN001I + +Spanner RPC + +Example: + +```json +{ + "args": { + "query_options": {}, + "request_options": {}, + "seqno": 1, + "session": "projects/project-id/instances/instance-id/databases/dev-db/sessions/ABCDEF1234567890Aye8_QwuELYD9rxa74YTWc-lu9LNuDDADbi4EOGm2C2j0ixe", + "sql": "select * from TestTable", + "transaction": { + "Selector": { + "SingleUse": { + "Mode": { + "ReadOnly": { + "TimestampBound": { + "Strong": true + }, + "return_read_timestamp": true + } + } + } + } + } + }, + "cluster_name": "root", + "code": "TSPN001I", + "db_name": "dev-db", + "db_origin": "dynamic", + "db_protocol": "spanner", + "db_service": "teleport-spanner", + "db_type": "spanner", + "db_uri": "spanner.googleapis.com:443", + "db_user": "some-user", + "event": "db.session.spanner.rpc", + "procedure": "ExecuteStreamingSql", + "sid": "406b9883-0e16-42f2-9d0b-b3bd956f9cd4", + "success": true, + "time": "2024-03-13T00:02:44.739Z", + "uid": "e0625e79-9399-4ea3-aa8b-dba1eb98658d", + "user": "alice@example.com" +} +``` + +## db.session.sqlserver.rpc_request + +SQLServer RPC Request + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TMS00I", + "db_name": "master", + "db_protocol": "sqlserver", + "db_service": "sqlserver02", + "db_uri": "localhost:1433", + "db_user": "sqlserver", + "ei": 7, + "event": "db.session.sqlserver.rpc_request", + "parameters": [ + "SELECT\ndtb.collation_name AS [Collation],\ndtb.name AS [DatabaseName2]\nFROM\nmaster.sys.databases AS dtb\nWHERE\n(dtb.name=@_msparam_0)" + ], + "proc_name": "Sp_ExecuteSql", + "sid": "6b37d89b-0d9c-4681-976b-ba12588a1bcd", + "time": "2022-06-02T08:29:17.693Z", + "uid": "a29dfad1-5a71-4c48-b4e0-10d1d857a23c", + "user": "alice" +} +``` + +## db.session.start + +There are multiple events with the `db.session.start` type. + +### TDB00I + +Database Session Started + +Example: + +```json +{ + "cluster_name": "root", + "code": "TDB00I", + "db_name": "", + "db_protocol": "mongodb", + "db_service": "mongo-primary", + "db_uri": "mongodb://mongo-1:27017,mongo-2:27018/?replicaSet=rs0", + "db_user": "alice", + "ei": 0, + "event": "db.session.start", + "namespace": "default", + "server_id": "05ff66c9-a948-42f4-af0e-a1b6ba62561e", + "sid": "13c04d4b-2e94-4106-a3a1-5ab8aae10465", + "success": true, + "time": "2021-07-14T07:01:31.958Z", + "uid": "4a613b84-7315-41f4-9219-1afd6b08d4da", + "user": "alice@example.com" +} +``` + +### TDB00W + +Database Session Denied + +Code: `TDB00W` + +Event: `db.session.start` + +## db.session.user.create + +There are multiple events with the `db.session.user.create` type. + +### TDB08I + +Database User Created + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TDB08I", + "db_name": "master", + "db_protocol": "postgres", + "db_service": "postgres-local", + "db_uri": "localhost:1433", + "db_user": "alice", + "ei": 0, + "event": "db.session.user.create", + "private_key_policy": "none", + "roles": null, + "sid": "47f20b91-f5c3-4eef-85e1-9509252238e7", + "success": true, + "time": "2022-06-02T08:46:33.825Z", + "uid": "95e74359-e5a1-4c76-970e-c522b550dbb9", + "user": "alice", + "user_kind": 1, + "username": "alice" +} +``` + +### TDB08W + +Database User Creation Failed + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TDB08W", + "db_name": "master", + "db_protocol": "postgres", + "db_service": "postgres-local", + "db_uri": "localhost:1433", + "db_user": "alice", + "ei": 0, + "error": "dummy error", + "event": "db.session.user.create", + "message": "dummy error", + "private_key_policy": "none", + "roles": null, + "sid": "3fd14bfe-be21-40a4-b1da-744fa14f5108", + "success": false, + "time": "2022-06-02T08:46:33.825Z", + "uid": "4a4a6a70-c81d-4326-8565-3f7bd23b874f", + "user": "ben", + "user_kind": 1, + "username": "ben" +} +``` + +## db.session.user.deactivate + +There are multiple events with the `db.session.user.deactivate` type. + +### TDB09I + +Database User Deactivated + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TDB09I", + "db_name": "master", + "db_protocol": "postgres", + "db_service": "postgres-local", + "db_uri": "localhost:1433", + "db_user": "alice", + "delete": false, + "ei": 5, + "event": "db.session.user.deactivate", + "private_key_policy": "none", + "sid": "c362e10b-dbc4-44e5-b90f-0bee5dd0c623", + "success": true, + "time": "2022-06-02T08:46:33.825Z", + "uid": "0ab70491-4d33-4bc5-be58-27922a647f50", + "user": "ben", + "user_kind": 1, + "username": "ben" +} +``` + +### TDB09W + +Database User Deactivate Failure + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TDB09W", + "db_name": "master", + "db_protocol": "postgres", + "db_service": "postgres-local", + "db_uri": "localhost:1433", + "db_user": "alice", + "delete": false, + "ei": 4, + "error": "dummy error", + "event": "db.session.user.deactivate", + "message": "dummy error", + "private_key_policy": "none", + "sid": "3bb429a1-be03-4c03-827c-98ff846dacf7", + "success": false, + "time": "2022-06-02T08:46:33.825Z", + "uid": "c6569248-ac06-417d-b5b6-e0bf94eccb1a", + "user": "ben", + "user_kind": 1, + "username": "ben" +} +``` + +## db.update + +Database Updated + +Example: + +```json +{ + "cluster_name": "root", + "code": "TDB04I", + "db_labels": { + "env": "local", + "teleport.dev/origin": "dynamic" + }, + "db_protocol": "postgres", + "db_uri": "localhost:5432", + "ei": 0, + "event": "db.update", + "expires": "0001-01-01T00:00:00Z", + "name": "postgres-local", + "time": "2021-10-08T15:42:24.581Z", + "uid": "fe631a5a-6418-49d6-99e7-5280654663ec", + "user": "05ff66c9-a948-42f4-af0e-a1b6ba62561e.root" +} +``` + +## desktop.clipboard.receive + +Clipboard Data Received + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TDP03I", + "desktop_addr": "100.104.52.89:3389", + "ei": 0, + "event": "desktop.clipboard.receive", + "sid": "b7f734d8-bdc2-4996-8959-0b42a11708e7", + "time": "2021-10-18T23:39:13.105Z", + "uid": "84d408d1-3314-4a30-b7b7-35970633c9de", + "user": "joe", + "length": 512 +} +``` + +## desktop.clipboard.send + +Clipboard Data Sent + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TDP02I", + "desktop_addr": "100.104.52.89:3389", + "ei": 0, + "event": "desktop.clipboard.send", + "sid": "b7f734d8-bdc2-4996-8959-0b42a11708e7", + "time": "2021-10-18T23:39:13.105Z", + "uid": "84d408d1-3314-4a30-b7b7-35970633c9de", + "user": "joe", + "length": 512 +} +``` + +## desktop.directory.read + +There are multiple events with the `desktop.directory.read` type. + +### TDP05I + +Directory Sharing Read + +Example: + +```json +{ + "addr.remote": "ec2-54-162-177-255.compute-1.amazonaws.com:3389", + "cluster_name": "im-a-cluster-name", + "code": "TDP05I", + "desktop_addr": "ec2-54-162-177-255.compute-1.amazonaws.com:3389", + "directory_id": 2, + "directory_name": "windows-server-2012-shared", + "ei": 9766, + "event": "desktop.directory.read", + "file_path": "powershell-scripts/domain-controller.ps1", + "length": 734, + "offset": 0, + "proto": "tdp", + "sid": "b9329a34-ab0c-4aa0-9fc8-1054d491e818", + "success": true, + "time": "2022-10-21T23:07:36.496189Z", + "uid": "a6ea5e5b-daac-47c2-9ce5-3f868e51a146", + "user": "joe" +} +``` + +### TDP05W + +Directory Sharing Read Failed + +Example: + +```json +{ + "addr.remote": "ec2-54-162-177-255.compute-1.amazonaws.com:3389", + "cluster_name": "im-a-cluster-name", + "code": "TDP05W", + "desktop_addr": "ec2-54-162-177-255.compute-1.amazonaws.com:3389", + "directory_id": 2, + "directory_name": "windows-server-2012-shared", + "ei": 9766, + "event": "desktop.directory.read", + "file_path": "powershell-scripts/domain-controller.ps1", + "length": 734, + "offset": 0, + "proto": "tdp", + "sid": "b9329a34-ab0c-4aa0-9fc8-1054d491e818", + "success": false, + "time": "2022-10-21T23:07:36.496189Z", + "uid": "a6ea5e5b-daac-47c2-9ce5-3f868e51a146", + "user": "joe" +} +``` + +## desktop.directory.share + +There are multiple events with the `desktop.directory.share` type. + +### TDP04I + +Directory Sharing Started + +Example: + +```json +{ + "addr.remote": "ec2-54-162-177-255.compute-1.amazonaws.com:3389", + "cluster_name": "im-a-cluster-name", + "code": "TDP04I", + "desktop_addr": "ec2-54-162-177-255.compute-1.amazonaws.com:3389", + "directory_id": 2, + "directory_name": "windows-server-2012-shared", + "ei": 3317, + "event": "desktop.directory.share", + "proto": "tdp", + "sid": "6ecf916d-dedf-4769-afc0-d08e55fbebf7", + "success": true, + "time": "2022-10-21T22:36:27.314409Z", + "uid": "f38b07d4-2f3e-400b-a91a-bad7283db775", + "user": "joe" +} +``` + +### TDP04W + +Directory Sharing Start Failed + +Example: + +```json +{ + "addr.remote": "ec2-54-162-177-255.compute-1.amazonaws.com:3389", + "cluster_name": "im-a-cluster-name", + "code": "TDP04W", + "desktop_addr": "ec2-54-162-177-255.compute-1.amazonaws.com:3389", + "directory_id": 2, + "directory_name": "windows-server-2012-shared", + "ei": 3317, + "event": "desktop.directory.share", + "proto": "tdp", + "sid": "6ecf916d-dedf-4769-afc0-d08e55fbebf7", + "success": false, + "time": "2022-10-21T22:36:27.314409Z", + "uid": "f38b07d4-2f3e-400b-a91a-bad7283db775", + "user": "joe" +} +``` + +## desktop.directory.write + +There are multiple events with the `desktop.directory.write` type. + +### TDP06I + +Directory Sharing Write + +Example: + +```json +{ + "addr.remote": "ec2-54-162-177-255.compute-1.amazonaws.com:3389", + "cluster_name": "im-a-cluster-name", + "code": "TDP06I", + "desktop_addr": "ec2-54-162-177-255.compute-1.amazonaws.com:3389", + "directory_id": 2, + "directory_name": "windows-server-2012-shared", + "ei": 7428, + "event": "desktop.directory.write", + "file_path": "powershell-scripts/domain-controller.ps1", + "length": 734, + "offset": 0, + "proto": "tdp", + "sid": "ea959406-27e4-4b11-85c4-1a485ff48417", + "success": true, + "time": "2022-10-21T23:19:34.519058Z", + "uid": "6bb2ebdf-d7e2-4a03-80ae-514ff9a5c71f", + "user": "joe" +} +``` + +### TDP06W + +Directory Sharing Write Failed + +Example: + +```json +{ + "addr.remote": "ec2-54-162-177-255.compute-1.amazonaws.com:3389", + "cluster_name": "im-a-cluster-name", + "code": "TDP06W", + "desktop_addr": "ec2-54-162-177-255.compute-1.amazonaws.com:3389", + "directory_id": 2, + "directory_name": "windows-server-2012-shared", + "ei": 7428, + "event": "desktop.directory.write", + "file_path": "powershell-scripts/domain-controller.ps1", + "length": 734, + "offset": 0, + "proto": "tdp", + "sid": "ea959406-27e4-4b11-85c4-1a485ff48417", + "success": false, + "time": "2022-10-21T23:19:34.519058Z", + "uid": "6bb2ebdf-d7e2-4a03-80ae-514ff9a5c71f", + "user": "joe" +} +``` + +## device + +Device Enrolled + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TV005I", + "device": { + "asset_tag": "M2CQVQV64R", + "device_id": "99d39707-efdd-436c-94f3-6a1aeef1fbf2", + "os_type": 2 + }, + "ei": 0, + "event": "device", + "status": { + "success": true + }, + "time": "2023-01-12T19:28:36.842Z", + "uid": "94d33b77-82cd-4558-8893-0320699bf755", + "user": { + "user": "this user wont render properly" + } +} +``` + +## device.authenticate + +Device Authenticated + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TV006I", + "ei": 0, + "event": "device.authenticate", + "success": true, + "time": "2023-01-12T19:34:48.1Z", + "uid": "fa279611-91d8-47b5-9fad-b8ea3e5286e0", + "user": "lisa" +} +``` + +## device.authenticate.confirm + +Device Web Authentication Confirmed + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TV009I", + "device": { + "device_id": "f84f6b35-6226-4e73-8205-3bcbd7d12970", + "web_authentication": true, + "web_session_id": "my-session-id-12345" + }, + "ei": 0, + "event": "device.authenticate.confirm", + "success": false, + "time": "2024-04-08T19:35:48.1Z", + "uid": "b1361d51-70fa-4f1b-803c-a252c2877707", + "user": "llama", + "user_kind": 1 +} +``` + +## device.create + +Device Registered + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TV001I", + "device": { + "asset_tag": "M2CQVQV64R", + "device_id": "99d39707-efdd-436c-94f3-6a1aeef1fbf2", + "os_type": 2 + }, + "ei": 0, + "event": "device.create", + "success": true, + "time": "2023-01-12T19:28:36.842Z", + "uid": "94d33b77-82cd-4558-8893-0320699bf755", + "user": "3827e8ad-7cbe-4423-a80f-dfc89e83eb86.im-a-cluster-name" +} +``` + +## device.delete + +Device Deleted + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TV002I", + "device": { + "device_id": "99d39707-efdd-436c-94f3-6a1aeef1fbf2" + }, + "ei": 0, + "event": "device.delete", + "success": true, + "time": "2023-01-12T20:33:20.527Z", + "uid": "a12e693e-1c45-43e4-a9d1-5fd8399e303c", + "user": "3827e8ad-7cbe-4423-a80f-dfc89e83eb86.im-a-cluster-name" +} +``` + +## device.token.create + +Device Enroll Token Created + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TV003I", + "device": { + "device_id": "99d39707-efdd-436c-94f3-6a1aeef1fbf2" + }, + "ei": 0, + "event": "device.token.create", + "success": true, + "time": "2023-01-12T19:51:54.168Z", + "uid": "24cce2a0-57b7-494e-a196-c7fd2482b10c", + "user": "3827e8ad-7cbe-4423-a80f-dfc89e83eb86.im-a-cluster-name" +} +``` + +## device.token.spent + +Device Enroll Token Spent + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TV004I", + "device": { + "asset_tag": "M2CQVQV64R", + "device_id": "0e288b23-f99f-4635-b182-06e9308095a8", + "os_type": 2 + }, + "ei": 0, + "event": "device.token.spent", + "success": true, + "time": "2023-01-12T21:31:29.191Z", + "uid": "bbbc496f-820b-4f49-ae0d-1c1b29faee85", + "user": "lisa" +} +``` + +## device.update + +Device Updated + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TV007I", + "device": { + "asset_tag": "M2CQVQV64R", + "device_id": "0e288b23-f99f-4635-b182-06e9308095a8", + "os_type": 2 + }, + "ei": 0, + "event": "device.update", + "success": true, + "time": "2023-01-12T21:31:29.191Z", + "uid": "bbbc496f-820b-4f49-ae0d-1c1b29faee85", + "user": "lisa" +} +``` + +## device.webtoken.create + +Device Web Token Created + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TV008I", + "device": { + "asset_tag": "M2CQVQV64R", + "credential_id": "c7572891-8426-4e62-874f-c793029d53a6", + "device_id": "f84f6b35-6226-4e73-8205-3bcbd7d12970", + "os_type": 2 + }, + "ei": 0, + "event": "device.webtoken.create", + "success": true, + "time": "2024-03-05T17:18:43.296Z", + "uid": "b1361d51-70fa-4f1b-803c-a252c2877707", + "user": "llama", + "user_kind": 1 +} +``` + +## discovery_config.create + +Discovery Config Created + +Example: + +```json +{ + "code": "DC001I", + "event": "discovery_config.create", + "time": "2023-05-08T19:21:36.144Z", + "name": "discovery-config", + "updated_by": "joe" +} +``` + +## discovery_config.delete + +Discovery Config Deleted + +Example: + +```json +{ + "code": "DC003I", + "event": "discovery_config.delete", + "time": "2023-05-08T19:21:38.144Z", + "name": "discovery-config", + "updated_by": "joe" +} +``` + +## discovery_config.delete_all + +All Discovery Configs Deleted + +Example: + +```json +{ + "code": "DC004I", + "event": "discovery_config.delete_all", + "time": "2023-05-08T19:21:39.144Z", + "name": "discovery-config", + "updated_by": "joe" +} +``` + +## discovery_config.update + +Discovery Config Updated + +Example: + +```json +{ + "code": "DC002I", + "event": "discovery_config.update", + "time": "2023-05-08T19:21:37.144Z", + "name": "discovery-config", + "updated_by": "joe" +} +``` + +## exec + +There are multiple events with the `exec` type. + +### T3002I + +Command Execution + +Example: + +```json +{ + "code": "T3002I", + "proto": "kube", + "kubernetes_cluster": "clusterOne", + "ei": 0, + "addr.local": "172.31.28.130:3022", + "addr.remote": "151.181.228.114:51752", + "event": "exec", + "namespace": "default", + "sid": "8d57a9d5-3848-5ce2-a326-85eb4a6d2eed", + "time": "2020-10-30T17:28:14.705Z", + "uid": "8ea5be3d-07b1-4308-8e0d-2d2ec57cbb20", + "user": "alex" +} +``` + +### T3002E + +Command Execution Failed + +Code: `T3002E` + +Event: `exec` + +## external_audit_storage.disable + +External Audit Storage Disabled + +Code: `TEA002I` + +Event: `external_audit_storage.disable` + +## external_audit_storage.enable + +External Audit Storage Enabled + +Code: `TEA001I` + +Event: `external_audit_storage.enable` + +## git.command + +There are multiple events with the `git.command` type. + +### TGIT001E + +Git Command Failed + +Example: + +```json +{ + "code": "TGIT001E", + "event": "git.command", + "time": "2024-12-07T11:11:11.111Z", + "uid": "7699b806-e717-4821-85a5-d2f41acbe373", + "user": "Linus.Torvalds", + "service": "git-upload-pack", + "exitError": "some-error", + "path": "my-org/my-repo" +} +``` + +### TGIT001I + +Git Command + +Example: + +```json +{ + "code": "TGIT001I", + "event": "git.command", + "time": "2024-12-07T11:11:11.112Z", + "uid": "7699b806-e717-4821-85a5-d2f41acbe373", + "user": "Linus.Torvalds", + "service": "git-upload-pack", + "path": "my-org/my-repo" +} +``` + +## github.created + +GitHub Auth Connector Created + +Example: + +```json +{ + "code": "T8000I", + "event": "github.created", + "name": "new_github_connector", + "time": "2020-06-05T19:28:00Z", + "uid": "2b7bb323-35d1-4b9c-9a6d-00ab34c95fb8", + "user": "unimplemented" +} +``` + +## github.deleted + +GitHub Auth Connector Deleted + +Example: + +```json +{ + "code": "T8001I", + "event": "github.deleted", + "name": "new_github_connector", + "time": "2020-06-05T19:28:28Z", + "uid": "26f12a67-d593-40df-b3d3-965faee60143", + "user": "unimplemented" +} +``` + +## github.updated + +GitHub Auth Connector Updated + +Example: + +```json +{ + "code": "T80002I", + "event": "github.updated", + "name": "new_github_connector", + "time": "2020-06-05T19:28:28Z", + "uid": "26f12a67-d593-40df-b3d3-965faee60143", + "user": "unimplemented" +} +``` + +## instance.join + +There are multiple events with the `instance.join` type. + +### TJ002I + +Instance Joined + +Example: + +```json +{ + "cluster_name": "root.tele.ottr.sh", + "code": "TJ002I", + "ei": 0, + "event": "instance.join", + "method": "token", + "node_name": "noah-laptop-follower", + "role": "Instance", + "success": true, + "time": "2022-12-06T09:17:06.392Z", + "token_name": "************************a2418147", + "uid": "c1ea0e6c-ee3a-4f7e-9a98-9df283b01a98" +} +``` + +### TJ002E + +Instance Join Failed + +Code: `TJ002E` + +Event: `instance.join` + +## integration.create + +Integration Created + +Example: + +```json +{ + "code": "IG001I", + "event": "integration.create", + "time": "2023-05-09T19:21:36.144Z", + "name": "integration", + "updated_by": "joe" +} +``` + +## integration.delete + +Integration Deleted + +Example: + +```json +{ + "code": "IG003I", + "event": "integration.delete", + "time": "2023-05-09T19:21:38.144Z", + "name": "integration", + "updated_by": "joe" +} +``` + +## integration.update + +Integration Updated + +Example: + +```json +{ + "code": "IG002I", + "event": "integration.update", + "time": "2023-05-09T19:21:37.144Z", + "name": "integration", + "updated_by": "joe" +} +``` + +## join_token.create + +Join Token Created + +Code: `TJT00I` + +Event: `join_token.create` + +## kube.create + +Kubernetes Created + +Example: + +```json +{ + "cluster_name": "root", + "code": "T3010I", + "kube_labels": { + "env": "local", + "teleport.dev/origin": "dynamic" + }, + "ei": 0, + "event": "kube.create", + "expires": "0001-01-01T00:00:00Z", + "name": "kube-local", + "time": "2022-09-08T15:42:36.005Z", + "uid": "9d37514f-aef5-426f-9fda-31fd35d070f5", + "user": "05ff66c9-a948-42f4-af0e-a1b6ba62561e.root" +} +``` + +## kube.delete + +Kubernetes Deleted + +Example: + +```json +{ + "cluster_name": "root", + "code": "T3012I", + "ei": 0, + "event": "kube.delete", + "expires": "0001-01-01T00:00:00Z", + "name": "kube-local", + "time": "2022-09-08T15:42:36.005Z", + "uid": "74f5e6b9-50c4-4195-bb26-d615641255bc", + "user": "05ff66c9-a948-42f4-af0e-a1b6ba62561e.root" +} +``` + +## kube.request + +Kubernetes Request + +Example: + +```json +{ + "addr.local": "127.0.0.1:3027", + "addr.remote": "[::1]:43026", + "code": "T3009I", + "ei": 0, + "event": "kube.request", + "kubernetes_cluster": "gke_teleport-a", + "login": "awly", + "namespace": "default", + "proto": "kube", + "request_path": "/api/v1/namespaces/teletest/pods/test-pod", + "resource_api_group": "core/v1", + "resource_kind": "pods", + "resource_name": "test-pod", + "resource_namespace": "teletest", + "response_code": 200, + "server_id": "9b67377e-d61e-4865-96d6-fa71989fd9e9", + "time": "2020-11-12T20:35:44.978Z", + "uid": "8c1459a8-9199-4d25-bc5d-38e000ddd9ab", + "user": "alex", + "verb": "GET" +} +``` + +## kube.update + +Kubernetes Updated + +Example: + +```json +{ + "cluster_name": "root", + "code": "T3011I", + "kube_labels": { + "env": "local", + "teleport.dev/origin": "dynamic" + }, + "ei": 0, + "event": "kube.update", + "expires": "0001-01-01T00:00:00Z", + "name": "kube-local", + "time": "2022-09-08T15:42:36.005Z", + "uid": "fe631a5a-6418-49d6-99e7-5280654663ec", + "user": "05ff66c9-a948-42f4-af0e-a1b6ba62561e.root" +} +``` + +## lock.created + +Lock Created + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TLK00I", + "ei": 0, + "event": "lock.created", + "expires": "0001-01-01T00:00:00Z", + "name": "lock-name", + "time": "2021-08-06T18:47:19.75Z", + "uid": "070fcb2a-e1cf-5b84-8190-14448cc63c76", + "user": "df83fda8-1111-5567-8bcc-c282dec3290e.im-a-cluster-name" +} +``` + +## lock.deleted + +Lock Deleted + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TLK01I", + "ei": 0, + "event": "lock.deleted", + "expires": "0001-01-01T00:00:00Z", + "name": "lock-name", + "time": "2021-08-06T18:49:51.626Z", + "uid": "e4630384-ac85-5a43-9ba9-3355b8d5cae4", + "user": "df83fda8-1111-5567-8bcc-c282dec3290e.im-a-cluster-name" +} +``` + +## login_rule.create + +Login Rule Created + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TLR00I", + "ei": 0, + "event": "login_rule.create", + "expires": "0001-01-01T00:00:00Z", + "name": "test_rule", + "time": "2023-01-25T19:21:36.144Z", + "uid": "266e8563-729e-412f-ba26-1050fbec0cd6", + "user": "nic" +} +``` + +## login_rule.delete + +Login Rule Deleted + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TLR01I", + "ei": 0, + "event": "login_rule.delete", + "expires": "0001-01-01T00:00:00Z", + "name": "test_rule", + "time": "2023-01-25T19:21:36.144Z", + "uid": "266e8563-729e-412f-ba26-1050fbec0cd6", + "user": "nic" +} +``` + +## mfa.delete + +There are multiple events with the `mfa.delete` type. + +### T1006I + +MFA Device Added + +Example: + +```json +{ + "cluster_name": "localhost", + "code": "T1006I", + "mfa_device_name": "usb-c", + "mfa_device_type": "U2F", + "mfa_device_uuid": "7a6fbf23-d75c-4c62-8215-e962d0f2a1f3", + "ei": 0, + "event": "mfa.delete", + "time": "2021-03-03T22:58:34.737Z", + "uid": "9be91d9e-79ec-422b-b6ae-ccf7235476d4", + "user": "awly" +} +``` + +### T1007I + +MFA Device Deleted + +Example: + +```json +{ + "cluster_name": "localhost", + "code": "T1007I", + "mfa_device_name": "usb-c", + "mfa_device_type": "U2F", + "mfa_device_uuid": "7a6fbf23-d75c-4c62-8215-e962d0f2a1f3", + "ei": 0, + "event": "mfa.delete", + "time": "2021-03-03T22:58:44.737Z", + "uid": "c6afe861-d53c-42ce-837c-7920d2398b44", + "user": "awly" +} +``` + +## mfa_auth_challenge.create + +MFA Authentication Attempt + +Example: + +```json +{ + "challenge_allow_reuse": false, + "challenge_scope": "CHALLENGE_SCOPE_LOGIN", + "cluster_name": "zarq", + "code": "T1015I", + "ei": 0, + "event": "mfa_auth_challenge.create", + "time": "2024-04-16T21:46:59.317Z", + "uid": "815bbcf4-fb05-4e08-917c-7259e9332d69", + "user": "llama", + "user_kind": 1 +} +``` + +## mfa_auth_challenge.validate + +There are multiple events with the `mfa_auth_challenge.validate` type. + +### T1016I + +MFA Authentication Success + +Code: `T1016I` + +Event: `mfa_auth_challenge.validate` + +### T1016W + +MFA Authentication Failure + +Code: `T1016W` + +Event: `mfa_auth_challenge.validate` + +## oidc.created + +OIDC Auth Connector Created + +Example: + +```json +{ + "code": "T8100I", + "event": "oidc.created", + "name": "new_oidc_connector", + "time": "2020-06-05T19:29:14Z", + "uid": "6208b4b9-0077-41aa-967a-f173b6bcc0d3", + "user": "unimplemented" +} +``` + +## oidc.deleted + +OIDC Auth Connector Deleted + +Example: + +```json +{ + "code": "T8101I", + "event": "oidc.deleted", + "name": "new_oidc_connector", + "time": "2020-06-05T19:29:14Z", + "uid": "6208b4b9-0077-41aa-967a-f173b6bcc0d3", + "user": "unimplemented" +} +``` + +## oidc.updated + +OIDC Auth Connector Updated + +Example: + +```json +{ + "code": "T8102I", + "event": "oidc.updated", + "name": "new_oidc_connector", + "time": "2020-06-05T19:29:14Z", + "uid": "6208b4b9-0077-41aa-967a-f173b6bcc0d3", + "user": "unimplemented" +} +``` + +## okta.access_list.sync + +There are multiple events with the `okta.access_list.sync` type. + +### TOK006I + +Okta access list synchronization completed + +Example: + +```json +{ + "code": "TOK006I", + "event": "okta.access_list.sync", + "time": "2023-05-08T19:21:36.144Z" +} +``` + +### TOK006E + +Okta access list synchronization failed + +Example: + +```json +{ + "code": "TOK006E", + "event": "okta.access_list.sync", + "time": "2023-05-08T19:21:36.144Z" +} +``` + +## okta.applications.update + +Okta applications have been updated + +Example: + +```json +{ + "code": "TOK002I", + "event": "okta.applications.update", + "time": "2023-05-08T19:21:36.144Z", + "added": 5, + "updated": 1, + "deleted": 7 +} +``` + +## okta.assignment.cleanup + +There are multiple events with the `okta.assignment.cleanup` type. + +### TOK005I + +Okta assignment has been cleaned up + +Example: + +```json +{ + "code": "TOK005I", + "event": "okta.assignment.cleanup", + "time": "2023-05-08T19:21:36.144Z", + "name": "assignment-id", + "source": "source", + "user": "mike" +} +``` + +### TOK005E + +Okta assignment failed to clean up + +Example: + +```json +{ + "code": "TOK005E", + "event": "okta.assignment.cleanup", + "time": "2023-05-08T19:21:36.144Z", + "name": "assignment-id", + "source": "source", + "user": "mike" +} +``` + +## okta.assignment.process + +There are multiple events with the `okta.assignment.process` type. + +### TOK004I + +Okta assignment has been processed + +Example: + +```json +{ + "code": "TOK004I", + "event": "okta.assignment.process", + "time": "2023-05-08T19:21:36.144Z", + "name": "assignment-id", + "source": "source", + "user": "mike" +} +``` + +### TOK004E + +Okta assignment failed to process + +Example: + +```json +{ + "code": "TOK004E", + "event": "okta.assignment.process", + "time": "2023-05-08T19:21:36.144Z", + "name": "assignment-id", + "source": "source", + "user": "mike" +} +``` + +## okta.groups.update + +Okta groups have been updated + +Example: + +```json +{ + "code": "TOK001I", + "event": "okta.groups.update", + "time": "2023-05-08T19:21:36.144Z", + "added": 5, + "updated": 1, + "deleted": 7 +} +``` + +## okta.sync.failure + +Okta synchronization failed + +Example: + +```json +{ + "code": "TOK003E", + "event": "okta.sync.failure", + "time": "2023-05-08T19:21:36.144Z" +} +``` + +## okta.user.sync + +There are multiple events with the `okta.user.sync` type. + +### TOK007I + +Okta user synchronization completed + +Example: + +```json +{ + "code": "TOK007I", + "event": "okta.user.sync", + "time": "2023-05-08T19:21:36.144Z", + "num_users_created": 5, + "num_users_deleted": 1, + "num_users_modified": 7 +} +``` + +### TOK007E + +Okta user synchronization failed + +Example: + +```json +{ + "code": "TOK007E", + "event": "okta.user.sync", + "time": "2023-05-08T19:21:36.144Z" +} +``` + +## plugin.create + +Plugin Created + +Code: `PG001I` + +Event: `plugin.create` + +## plugin.delete + +Plugin Deleted + +Code: `PG003I` + +Event: `plugin.delete` + +## plugin.update + +Plugin Updated + +Code: `PG002I` + +Event: `plugin.update` + +## port + +There are multiple events with the `port` type. + +### T3003I + +Port Forwarding Start + +Code: `T3003I` + +Event: `port` + +### T3003E + +Port Forwarding Failure + +Code: `T3003E` + +Event: `port` + +### T3003S + +Port Forwarding Stop + +Code: `T3003S` + +Event: `port` + +## privilege_token.create + +Privilege Token Created + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "T6002I", + "ei": 0, + "event": "privilege_token.create", + "expires": "2021-11-01T22:29:47.989984Z", + "name": "user@example.com", + "time": "2021-11-01T22:24:47.99Z", + "ttl": "5m0s", + "uid": "6a9d5ac1-08c5-5c1e-9ebd-086d34155b08", + "user": "user@example.com" +} +``` + +## recovery_code.generated + +Recovery Codes Generated + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "T1008I", + "ei": 0, + "event": "recovery_code.generated", + "time": "2021-08-05T21:16:17.13Z", + "uid": "ed0f6962-e34d-5fa4-bd41-7961cf2c51bb", + "user": "user@example.com" +} +``` + +## recovery_code.used + +There are multiple events with the `recovery_code.used` type. + +### T1009I + +Recovery Code Used + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "T1009I", + "ei": 0, + "event": "recovery_code.used", + "success": true, + "time": "2021-08-05T21:22:46.042Z", + "uid": "4bb44dfe-70dc-5820-8c65-0baf40f62d13", + "user": "user@example.com" +} +``` + +### T1009W + +Recovery Code Use Failed + +Example: + +```json +{ + "cluster_name": "localhost", + "code": "T1009W", + "ei": 0, + "error": "recovery code did not match", + "event": "recovery_code.used", + "message": "recovery code did not match", + "success": false, + "time": "2021-08-05T23:32:41.273Z", + "uid": "714625ab-48d5-51d0-ab1f-c4b267881594", + "user": "user@example.com" +} +``` + +## recovery_token.create + +Recovery Token Created + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "T6001I", + "ei": 0, + "event": "recovery_token.create", + "expires": "2021-08-05T21:56:14.935267Z", + "name": "user@example.com", + "time": "2021-08-05T21:41:14.935Z", + "ttl": "15m0s", + "uid": "29cd2ad5-f1cd-54d2-85fc-4910fbfc9bfa", + "user": "user@example.com" +} +``` + +## reset_password_token.create + +Reset Password Token Created + +Example: + +```json +{ + "code": "T6000I", + "name": "hello", + "event": "reset_password_token.create", + "time": "2020-06-05T16:24:22Z", + "ttl": "8h0m0s", + "uid": "85fef5df-6dca-475e-a049-393f4cf1d6a3", + "user": "b331fb6c-85f9-4cb0-b308-3452420bf81e.one" +} +``` + +## resize + +Terminal Resize + +Example: + +```json +{ + "code": "T2002I", + "ei": 3, + "event": "resize", + "login": "root", + "namespace": "default", + "sid": "56408539-6536-11e9-80a1-427cfde50f5a", + "size": "80:25", + "time": "2019-04-22T19:39:52.432Z", + "uid": "917d8108-3617-4273-ab37-7bbf8e7c1ab9", + "user": "admin@example.com" +} +``` + +## role.created + +User Role Created + +Code: `T9000I` + +Event: `role.created` + +## role.deleted + +User Role Deleted + +Code: `T9001I` + +Event: `role.deleted` + +## role.updated + +User Role Updated + +Code: `T9002I` + +Event: `role.updated` + +## saml.created + +SAML Connector Created + +Example: + +```json +{ + "code": "T8200I", + "event": "saml.created", + "name": "new_saml_connector", + "time": "2020-06-05T19:29:14Z", + "uid": "6208b4b9-0077-41aa-967a-f173b6bcc0d3", + "user": "unimplemented" +} +``` + +## saml.deleted + +SAML Connector Deleted + +Example: + +```json +{ + "code": "T8201I", + "event": "saml.deleted", + "name": "new_saml_connector", + "time": "2020-06-05T19:29:14Z", + "uid": "6208b4b9-0077-41aa-967a-f173b6bcc0d3", + "user": "unimplemented" +} +``` + +## saml.idp.auth + +SAML IdP authentication + +Example: + +```json +{ + "code": "TSI000I", + "event": "saml.idp.auth", + "time": "2023-01-25T19:21:36.144Z", + "user": "mike", + "session_id": "123456", + "success": true, + "service_provider_entity_id": "valid-entity-id" +} +``` + +## saml.idp.service.provider.create + +There are multiple events with the `saml.idp.service.provider.create` type. + +### TSI001I + +SAML IdP service provider created + +Example: + +```json +{ + "code": "TSI001I", + "event": "saml.idp.service.provider.create", + "time": "2023-01-25T19:21:36.144Z", + "name": "saml-idp", + "updated_by": "mike", + "service_provider_entity_id": "valid-entity-id" +} +``` + +### TSI001W + +SAML IdP service provider create failed + +Example: + +```json +{ + "code": "TSI001W", + "event": "saml.idp.service.provider.create", + "time": "2023-01-25T19:21:36.144Z", + "name": "saml-idp", + "updated_by": "mike", + "service_provider_entity_id": "valid-entity-id" +} +``` + +## saml.idp.service.provider.delete + +There are multiple events with the `saml.idp.service.provider.delete` type. + +### TSI003I + +SAML IdP service provider deleted + +Example: + +```json +{ + "code": "TSI003I", + "event": "saml.idp.service.provider.delete", + "time": "2023-01-25T19:21:36.144Z", + "name": "saml-idp", + "updated_by": "mike", + "service_provider_entity_id": "valid-entity-id" +} +``` + +### TSI003W + +SAML IdP service provider delete failed + +Example: + +```json +{ + "code": "TSI003W", + "event": "saml.idp.service.provider.delete", + "time": "2023-01-25T19:21:36.144Z", + "name": "saml-idp", + "updated_by": "mike", + "service_provider_entity_id": "valid-entity-id" +} +``` + +### TSI004I + +All SAML IdP service provider deleted + +Example: + +```json +{ + "code": "TSI004I", + "event": "saml.idp.service.provider.delete", + "time": "2023-01-25T19:21:36.144Z", + "name": "saml-idp", + "updated_by": "mike" +} +``` + +### TSI004W + +SAML IdP service provider delete failed + +Example: + +```json +{ + "code": "TSI004W", + "event": "saml.idp.service.provider.delete", + "time": "2023-01-25T19:21:36.144Z", + "name": "saml-idp", + "updated_by": "mike" +} +``` + +## saml.idp.service.provider.update + +There are multiple events with the `saml.idp.service.provider.update` type. + +### TSI002I + +SAML IdP service provider updated + +Example: + +```json +{ + "code": "TSI002I", + "event": "saml.idp.service.provider.update", + "time": "2023-01-25T19:21:36.144Z", + "name": "saml-idp", + "updated_by": "mike", + "service_provider_entity_id": "valid-entity-id" +} +``` + +### TSI002W + +SAML IdP service provider update failed + +Example: + +```json +{ + "code": "TSI002W", + "event": "saml.idp.service.provider.update", + "time": "2023-01-25T19:21:36.144Z", + "name": "saml-idp", + "updated_by": "mike", + "service_provider_entity_id": "valid-entity-id" +} +``` + +## saml.updated + +SAML Connector Updated + +Example: + +```json +{ + "code": "T8202I", + "event": "saml.updated", + "name": "new_saml_connector", + "time": "2020-06-05T19:29:14Z", + "uid": "6208b4b9-0077-41aa-967a-f173b6bcc0d3", + "user": "unimplemented" +} +``` + +## scp + +There are multiple events with the `scp` type. + +### T3004I + +SCP Download + +Example: + +```json +{ + "code": "T3004I", + "action": "download", + "addr.local": "172.31.28.130:3022", + "addr.remote": "127.0.0.1:55594", + "event": "scp", + "login": "root", + "namespace": "default", + "path": "~/fsdfsdfsdfsdfs", + "time": "2019-04-22T19:41:23Z", + "uid": "183ca6de-c24b-4f67-854f-163c01245fa1", + "user": "admin@example.com" +} +``` + +### T3004E + +SCP Download Failed + +Example: + +```json +{ + "action": "download", + "addr.local": "192.168.0.105:3022", + "addr.remote": "127.0.0.1:39932", + "cluster_name": "im-a-cluster-name", + "code": "T3004E", + "command": "/home/path scp --remote-addr=\"127.0.0.1:39932\" --local-addr=\"111.222.0.105:3022\" -f ~/sdfsdf", + "ei": 0, + "event": "scp", + "exitCode": "1", + "exitError": "exit status 1", + "login": "root", + "namespace": "default", + "path": "~/sdfsdf", + "server_id": "8045a8cc-49bb-4e02-bdc99313", + "sid": "8ff117ec-70a2-4481-8e359cf6", + "time": "2019-04-22T19:41:23Z", + "uid": "30e13b84-a51f-467676258b9bf", + "user": "root" +} +``` + +### T3005I + +SCP Upload + +Example: + +```json +{ + "action": "upload", + "addr.local": "192.168.0.105:3022", + "addr.remote": "127.0.0.1:57058", + "cluster_name": "im-a-cluster-name", + "code": "T3005I", + "command": "/home/path scp --remote-addr=\"127.0.0.1:57058\" --local-addr=\"111.222.0.105:3022\" -t ~/", + "ei": 0, + "event": "scp", + "exitCode": "0", + "login": "root", + "namespace": "default", + "path": "~/", + "server_id": "8045a8cc-49bb-4e02-bdc5-a782a313", + "sid": "b484b5cc-9065-40fa-9a0c-db3", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root" +} +``` + +### T3005E + +SCP Upload Failed + +Code: `T3005E` + +Event: `scp` + +### T3010E + +SCP Disallowed + +Code: `T3010E` + +Event: `scp` + +## secreports.audit.query.run + +Access Monitoring Query Executed + +Example: + +```json +{ + "cluster_name": "root.com", + "code": "SRE001I", + "data_scanned_in_bytes": 4045, + "days": 90, + "event": "secreports.audit.query.run", + "query": "select * FROM cert_create", + "success": true, + "time": "2023-10-09T10:09:10.473Z", + "total_execution_time_in_millis": 1440, + "uid": "dc29d36c-c5b6-4ffc-9aa7-2d9ba18a3953", + "user": "marek" +} +``` + +## secreports.report.run + +Access Monitoring Report Executed + +Example: + +```json +{ + "cluster_name": "root.com", + "code": "SRE002I", + "data_scanned_in_bytes": 13258, + "event": "secreports.report.run", + "name": "privilege_access_report_90_days", + "success": true, + "time": "2023-10-09T09:10:03.633Z", + "total_execution_time_in_millis": 14082, + "uid": "f44871b9-7247-467b-a760-8159d3f47bac", + "user": "system" +} +``` + +## session.command + +Session Command + +Example: + +```json +{ + "argv": [ + "google.com" + ], + "cgroup_id": 4294968064, + "code": "T4000I", + "ei": 5, + "event": "session.command", + "login": "root", + "namespace": "default", + "path": "/bin/ping", + "pid": 2653, + "ppid": 2660, + "program": "ping", + "return_code": 0, + "server_id": "96f2bed2-ebd1-494a-945c-2fd57de41644", + "sid": "44c6cea8-362f-11ea-83aa-125400432324", + "time": "2020-01-13T18:05:53.919Z", + "uid": "734930bb-00e6-4ee6-8798-37f1e9473fac", + "user": "benarent" +} +``` + +## session.connect + +Session Connected + +Example: + +```json +{ + "addr.local": "192.168.0.106:43858", + "addr.remote": "192.168.0.106:3022", + "cluster_name": "im-a-cluster-name", + "code": "T2010I", + "ei": 0, + "event": "session.connect", + "server_addr": "192.168.0.106:43858", + "server_id": "bd5eff-f59b-4fb3-b8ed-757c52ff", + "time": "2022-02-04T18:15:28.572Z", + "uid": "f2a0f9-d78c-4c38-b3fa-ca63453b" +} +``` + +## session.data + +Session Data + +Example: + +```json +{ + "addr.local": "172.10.1.1:3022", + "addr.remote": "172.10.1.254:46992", + "code": "T2006I", + "ei": 2147483646, + "event": "session.data", + "login": "root", + "rx": 3974, + "server_id": "b331fb6c-85f9-4cb0-b308-3452420bf81e", + "sid": "5fc8bf85-a73e-11ea-afd1-0242ac0a0101", + "time": "2020-06-05T15:14:51Z", + "tx": 4730, + "uid": "2f2f07d0-8a01-4abe-b1c0-5001fd86829b", + "user": "Stanley_Cooper" +} +``` + +## session.disk + +Session File Access + +Example: + +```json +{ + "code": "T4001I", + "event": "session.disk", + "namespace": "default", + "sid": "44c6cea8-362f-11ea-83aa-125400432324", + "server_id": "96f2bed2", + "login": "root", + "user": "benarent", + "pid": 2653, + "cgroup_id": 4294968064, + "program": "bash", + "path": "/etc/profile.d/", + "flags": 2100000, + "return_code": 0, + "time": "2019-04-22T19:39:26.676Z" +} +``` + +## session.end + +Session Ended + +Example: + +```json +{ + "cluster_name": "kimlisa.cloud.gravitational.io", + "code": "T2004I", + "ei": 1, + "enhanced_recording": false, + "event": "session.end", + "interactive": false, + "login": "root", + "namespace": "default", + "participants": [ + "foo" + ], + "server_addr": "172.31.30.254:32962", + "server_hostname": "ip-172-31-30-254", + "server_id": "d3ddd1f8-b602-488b-00c66e29879f", + "session_start": "2021-05-21T22:23:55.313562027Z", + "session_stop": "2021-05-21T22:54:27.122508023Z", + "sid": "9d92ad96-a45c-4add-463cc7bc48b1", + "time": "2021-05-21T22:54:27.123Z", + "uid": "984ac949-6605-4f0a-e450aa5665f4", + "user": "foo" +} +``` + +## session.join + +User Joined + +Example: + +```json +{ + "addr.local": "172.31.28.130:3022", + "addr.remote": "151.181.228.114:51752", + "code": "T2001I", + "ei": 4, + "event": "session.join", + "login": "root", + "namespace": "default", + "server_id": "de3800ea-69d9-4d72-a108-97e57f8eb393", + "sid": "56408539-6536-11e9-80a1-427cfde50f5a", + "time": "2019-04-22T19:39:52.434Z", + "uid": "13d26190-289b-41d4-af67-c8c8b0617ebe", + "user": "admin@example.com" +} +``` + +## session.leave + +User Disconnected + +Code: `T2003I` + +Event: `session.leave` + +## session.network + +Session Network Connection + +Example: + +```json +{ + "code": "T4002I", + "event": "session.network", + "namespace": "default", + "sid": "44c6cea8-362f-11ea-83aa-125400432324", + "server_id": "96f2bed2", + "login": "root", + "user": "benarent", + "pid": 2653, + "cgroup_id": 4294968064, + "program": "bash", + "src_addr": "10.217.136.161", + "dst_addr": "190.58.129.4", + "dst_port": "3000", + "version": 4, + "time": "2019-04-22T19:39:26.676Z", + "action": 1 +} +``` + +## session.process_exit + +Session Process Exit + +Code: `T4003I` + +Event: `session.process_exit` + +## session.recording.access + +Session Recording Accessed + +Example: + +```json +{ + "code": "T2012I", + "event": "session.recording.access", + "sid": "44c6cea8-362f-11ea-83aa-125400432324", + "success": true, + "time": "2022-07-14T18:04:37.067Z", + "uid": "7d440ee1-15f6-4b56-9391-344e8984fd97", + "user": "ops@gravitational.io" +} +``` + +## session.rejected + +Session Rejected + +Code: `T1006W` + +Event: `session.rejected` + +## session.start + +Session Started + +Example: + +```json +{ + "addr.local": "172.31.28.130:3022", + "addr.remote": "151.181.228.114:51454", + "code": "T2000I", + "ei": 0, + "event": "session.start", + "login": "root", + "namespace": "default", + "server_id": "de3800ea-69d9-4d72-a108-97e57f8eb393", + "sid": "56408539-6536-11e9-80a1-427cfde50f5a", + "size": "80:25", + "time": "2019-04-22T19:39:26.676Z", + "uid": "84c07a99-856c-419f-9de5-15560451a116", + "user": "admin@example.com" +} +``` + +## session.upload + +Session Uploaded + +Code: `T2005I` + +Event: `session.upload` + +## session_recording_config.update + +Session Recording Configuration Updated + +Code: `TCREC003I` + +Event: `session_recording_config.update` + +## sftp + +There are multiple events with the `sftp` type. + +### TS001I + +SFTP Open + +Example: + +```json +{ + "action": 1, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS001I", + "ei": 0, + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS001E + +SFTP Open Failed + +Example: + +```json +{ + "action": 1, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS001E", + "ei": 0, + "error": "EOF", + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS007I + +SFTP Setstat + +Example: + +```json +{ + "action": 7, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS007I", + "ei": 0, + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS007E + +SFTP Setstat Failed + +Example: + +```json +{ + "action": 7, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS007E", + "ei": 0, + "error": "EOF", + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS009I + +SFTP Opendir + +Example: + +```json +{ + "action": 9, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS009I", + "ei": 0, + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS009E + +SFTP Opendir Failed + +Example: + +```json +{ + "action": 9, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS009E", + "ei": 0, + "error": "EOF", + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS010I + +SFTP Readdir + +Example: + +```json +{ + "action": 10, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS010I", + "ei": 0, + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS010E + +SFTP Readdir Failed + +Example: + +```json +{ + "action": 10, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS010E", + "ei": 0, + "error": "EOF", + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS011I + +SFTP Remove + +Example: + +```json +{ + "action": 11, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS011I", + "ei": 0, + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS011E + +SFTP Remove Failed + +Example: + +```json +{ + "action": 11, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS011E", + "ei": 0, + "error": "EOF", + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS012I + +SFTP Mkdir + +Example: + +```json +{ + "action": 12, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS012I", + "ei": 0, + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS012E + +SFTP Mkdir Failed + +Example: + +```json +{ + "action": 12, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS012E", + "ei": 0, + "error": "EOF", + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS013I + +SFTP Rmdir + +Example: + +```json +{ + "action": 13, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS013I", + "ei": 0, + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS013E + +SFTP Rmdir Failed + +Example: + +```json +{ + "action": 13, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS013E", + "ei": 0, + "error": "EOF", + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS016I + +SFTP Rename + +Example: + +```json +{ + "action": 16, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS016I", + "ei": 0, + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS016E + +SFTP Rename Failed + +Example: + +```json +{ + "action": 16, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS016E", + "ei": 0, + "error": "EOF", + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS018I + +SFTP Symlink + +Example: + +```json +{ + "action": 18, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS018I", + "ei": 0, + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS018E + +SFTP Symlink Failed + +Example: + +```json +{ + "action": 18, + "addr.local": "[::1]:3022", + "addr.remote": "127.0.0.1:41106", + "cluster_name": "im-a-cluster-name", + "code": "TS018E", + "ei": 0, + "error": "EOF", + "event": "sftp", + "login": "root", + "namespace": "default", + "path": "/tmp/file", + "server_hostname": "im-a-server-hostname", + "server_id": "e106fdd0-51db-4efa-a9ab-c3afa7a1565a", + "sid": "", + "time": "2019-04-22T19:41:23Z", + "uid": "16bfdc34-2766-a5d3-dfd6f7ff7ad6", + "user": "root", + "working_directory": "/root" +} +``` + +### TS019I + +SFTP Link + +Code: `TS019I` + +Event: `sftp` + +### TS019E + +SFTP Link Failed + +Code: `TS019E` + +Event: `sftp` + +### TS020E + +SFTP Disallowed + +Code: `TS020E` + +Event: `sftp` + +## sftp_summary + +File Transfer Completed + +Code: `TS021I` + +Event: `sftp_summary` + +## spiffe.svid.issued + +There are multiple events with the `spiffe.svid.issued` type. + +### TSPIFFE000I + +SPIFFE SVID Issued + +Example: + +```json +{ + "addr.remote": "127.0.0.1:54378", + "cluster_name": "leaf.tele.ottr.sh", + "code": "TSPIFFE000I", + "dns_sans": null, + "ei": 0, + "event": "spiffe.svid.issued", + "hint": "", + "ip_sans": null, + "serial_number": "d1:e5:fc:bf:19:67:e7:8c:7a:21:37:b5:05:ea:77:41", + "spiffe_id": "spiffe://example.teleport.com/bar", + "svid_type": "x509", + "time": "2024-02-02T15:48:25.35Z", + "uid": "45e13afc-0890-4ffb-b125-99d93c26d7de", + "user": "bot-test12", + "user_kind": 2 +} +``` + +### TSPIFFE000E + +SPIFFE SVID Issued Failure + +Code: `TSPIFFE000E` + +Event: `spiffe.svid.issued` + +## ssm.run + +There are multiple events with the `ssm.run` type. + +### TDS00I + +SSM Command Executed + +Example: + +```json +{ + "account_id": "278576220453", + "cluster_name": "localhost", + "code": "TDS00I", + "command_id": "e8a5f3ba-e9e5-4cbd-979b-18fd1e7ad00f", + "ei": 0, + "event": "ssm.run", + "exit_code": 0, + "instance_id": "i-057d0ffe877128673", + "region": "eu-central-1", + "status": "Success", + "time": "2022-09-14T14:45:38.122Z", + "uid": "d053a9a4-6362-4d46-8868-55d83b7b338f" +} +``` + +### TDS00W + +SSM Command Execution Failed + +Example: + +```json +{ + "account_id": "278576220453", + "cluster_name": "localhost", + "code": "TDS00W", + "command_id": "c2936d68-fc0c-4c16-a860-916a97f57644", + "ei": 0, + "event": "ssm.run", + "exit_code": 1, + "instance_id": "i-057d0ffe877128673", + "region": "eu-central-1", + "status": "Failure", + "time": "2022-09-14T14:45:38.122Z", + "uid": "ad123558-1d20-42dd-bf82-a7c544d76550" +} +``` + +## stable_unix_user.create + +Stable UNIX user created + +Code: `TSUU001I` + +Event: `stable_unix_user.create` + +## static_host_user.create + +Static Host User Created + +Example: + +```json +{ + "code": "SHU001I", + "event": "static_host_user.create", + "time": "2023-05-09T19:21:36.144Z", + "name": "test-user", + "user": "bob" +} +``` + +## static_host_user.delete + +Static Host User Deleted + +Example: + +```json +{ + "code": "SHU003I", + "updated_by": "joe", + "event": "static_host_user.delete", + "time": "2023-05-09T19:21:38.144Z", + "name": "test-user", + "user": "bob" +} +``` + +## static_host_user.update + +Static Host User Updated + +Example: + +```json +{ + "code": "SHU002I", + "event": "static_host_user.update", + "time": "2023-05-09T19:21:37.144Z", + "name": "test-user", + "user": "bob" +} +``` + +## subsystem + +There are multiple events with the `subsystem` type. + +### T3001I + +Subsystem Requested + +Code: `T3001I` + +Event: `subsystem` + +### T3001E + +Subsystem Request Failed + +Code: `T3001E` + +Event: `subsystem` + +## trusted_cluster.create + +Trusted Cluster Created + +Code: `T7000I` + +Event: `trusted_cluster.create` + +## trusted_cluster.delete + +Trusted Cluster Deleted + +Code: `T7001I` + +Event: `trusted_cluster.delete` + +## trusted_cluster_token.create + +Trusted Cluster Token Created + +Code: `T7002I` + +Event: `trusted_cluster_token.create` + +## unknown + +Unknown Event + +Code: `TCC00E` + +Event: `unknown` + +## upgradewindowstart.update + +Upgrade Window Start Updated + +Example: + +```json +{ + "code": "TUW01I", + "time": "2022-04-13T20:00:04.000Z", + "user": "alice@example.com", + "event": "upgradewindowstart.update", + "upgrade_window_start": "23:00" +} +``` + +## user.create + +User Created + +Example: + +```json +{ + "code": "T1002I", + "connector": "local", + "name": "hello", + "event": "user.create", + "expires": "0001-01-01T00:00:00Z", + "roles": [ + "admin" + ], + "time": "2020-06-05T16:24:05Z", + "uid": "22a273678c-ee78-5ffc-a298-68a841555c98", + "user": "b331fb6c-85f9-4cb0-b308-3452420bf81e.one" +} +``` + +## user.delete + +User Deleted + +Example: + +```json +{ + "code": "T1004I", + "uid": "b121fc4c-e419-56a2-a760-19cd746c0650", + "time": "2020-06-05T16:24:05Z", + "event": "user.delete", + "name": "bob", + "user": "benarent" +} +``` + +## user.login + +There are multiple events with the `user.login` type. + +### T1000I + +Local Login + +Example: + +```json +{ + "code": "T1000I", + "event": "user.login", + "method": "local", + "success": true, + "time": "2019-04-22T00:49:03Z", + "uid": "173d6b6e-d613-44be-8ff6-f9f893791ef2", + "user": "admin@example.com" +} +``` + +### T1000W + +Local Login Failed + +Example: + +```json +{ + "code": "T1000W", + "error": "user(name=\"fsdfsdf\") not found", + "event": "user.login", + "method": "local", + "success": false, + "time": "2019-04-22T18:06:32Z", + "uid": "597bf08b-75b2-4dda-a578-e387c5ce9b76", + "user": "fsdfsdf" +} +``` + +### T1010I + +SSO Test Flow Login + +Example: + +```json +{ + "attributes": { + "amr": [ + "pwd" + ], + "at_hash": "7_foQ_0QRVU5dIq_B72_zw", + "aud": "0oa17kaknnntGFKiJ0h8", + "auth_time": 1653294514, + "email": "ops@gravitational.io", + "email_verified": true, + "exp": 1653298115, + "groups": [ + "Everyone", + "okta-admin", + "okta-dev" + ], + "iat": 1653294515, + "idp": "00oafg105f5D4gv5Y0h7", + "iss": "https://dev-813354.oktapreview.com", + "jti": "ID.e_EKsCvMELMLa-Gx0aciOazUvPEFdZSxhTj42zccz3g", + "sub": "00uafg106hK16pwqE0h7", + "ver": 1 + }, + "cluster_name": "boson.tener.io", + "code": "T1010I", + "ei": 0, + "event": "user.login", + "method": "oidc", + "success": true, + "time": "2022-05-23T08:28:37.067Z", + "uid": "7d440ee1-15f6-4b56-9391-344e8984fd97", + "user": "ops@gravitational.io" +} +``` + +### T1011W + +SSO Test Flow Login Failed + +Example: + +```json +{ + "attributes": { + "amr": [ + "pwd" + ], + "at_hash": "Xz4ibHjouHuIIBOSgWm07w", + "aud": "0oa17kaknnntGFKiJ0h8", + "auth_time": 1653294514, + "email": "ops@gravitational.io", + "email_verified": true, + "exp": 1653298153, + "groups": [ + "Everyone", + "okta-admin", + "okta-dev" + ], + "iat": 1653294553, + "idp": "00oafg105f5D4gv5Y0h7", + "iss": "https://dev-813354.oktapreview.com", + "jti": "ID.h0qtjVPXttmNEHb-yHOvziD20Mru4qiw8L3i74se8YA", + "sub": "00uafg106hK16pwqE0h7", + "ver": 1 + }, + "cluster_name": "boson.tener.io", + "code": "T1011W", + "ei": 0, + "error": "No roles mapped from claims. The mappings may contain typos.", + "event": "user.login", + "message": "Failed to calculate user attributes.\n\tNo roles mapped from claims. The mappings may contain typos.", + "method": "oidc", + "success": false, + "time": "2022-05-23T08:29:14.126Z", + "uid": "6fa08495-170a-4de9-884f-9931fbdb5982" +} +``` + +### T1012I + +Headless Login Requested + +Example: + +```json +{ + "addr.remote": "1.1.1.1:42", + "code": "T1012I", + "cluster_name": "root.cluster", + "event": "user.login", + "method": "headless", + "ei": 0, + "success": false, + "time": "2019-04-22T00:49:03Z", + "uid": "173d6b6e-d613-44be-8ff6-f9f893791ef4", + "user": "admin@example.com" +} +``` + +### T1013I + +Headless Login Approved + +Example: + +```json +{ + "addr.remote": "2.2.2.2:42", + "code": "T1013I", + "cluster_name": "root.cluster", + "event": "user.login", + "method": "headless", + "ei": 0, + "success": true, + "time": "2019-04-22T00:49:03Z", + "uid": "173d6b6e-d613-44be-8ff6-f9f893791ef5", + "user": "admin@example.com", + "message": "Headless login was requested from the address 1.1.1.1:42" +} +``` + +### T1013W + +Headless Login Failed + +Example: + +```json +{ + "addr.remote": "2.2.2.2:42", + "code": "T1013W", + "error": "user(name=\"fsdfsdf\") not found", + "cluster_name": "root.cluster", + "event": "user.login", + "method": "headless", + "ei": 0, + "success": true, + "time": "2019-04-22T00:49:03Z", + "uid": "173d6b6e-d613-44be-8ff6-f9f893791ef5", + "user": "admin@example.com", + "message": "Headless login was requested from the address 1.1.1.1:42" +} +``` + +### T1014W + +Headless Login Rejected + +Example: + +```json +{ + "addr.remote": "2.2.2.2:42", + "code": "T1014W", + "cluster_name": "root.cluster", + "event": "user.login", + "method": "headdless", + "ei": 0, + "success": false, + "time": "2019-04-22T00:49:03Z", + "uid": "173d6b6e-d613-44be-8ff6-f9f893791ef6", + "user": "admin@example.com", + "message": "Headless login was requested from the address 1.1.1.1:42" +} +``` + +### T1001I + +SSO Login + +Code: `T1001I` + +Event: `user.login` + +### T1001W + +SSO Login Failed + +Code: `T1001W` + +Event: `user.login` + +## user.password_change + +User Password Updated + +Example: + +```json +{ + "code": "T1005I", + "event": "user.password_change", + "time": "2020-06-05T19:26:53Z", + "uid": "68a83a99-73ce-4bd7-bbf7-99103c2ba6a0", + "user": "Ivan_Jordan" +} +``` + +## user.update + +User Updated + +Example: + +```json +{ + "code": "T1003I", + "event": "user.update", + "name": "bob", + "time": "2020-06-05T16:24:05Z", + "uid": "3a8cd55b5-bce9-5a4c-882d-8e0a5ae10008", + "expires": 111111, + "roles": [ + "root" + ] +} +``` + +## user_login.invalid_access_list + +Access list skipped. + +Code: `TAL009W` + +Event: `user_login.invalid_access_list` + +## user_task.create + +User Task Created + +Example: + +```json +{ + "addr.remote": "127.0.0.1:52763", + "cluster_name": "lenix", + "code": "UT001I", + "ei": 0, + "event": "user_task.create", + "expires": "0001-01-01T00:00:00Z", + "name": "d217950f-cb5f-5703-96ef-39ab8cd86601", + "success": true, + "time": "2024-10-17T14:00:34.186Z", + "uid": "709840ec-288e-4056-ba20-c8f4b12a478f", + "updated_by": "30a6b2e1-3b61-4965-92cf-b4f84e9dc683.lenix", + "user": "30a6b2e1-3b61-4965-92cf-b4f84e9dc683.lenix", + "user_kind": 1, + "user_task_integration": "teleportdev", + "user_task_issue_type": "ec2-ssm-invocation-failure", + "user_task_type": "discover-ec2" +} +``` + +## user_task.delete + +User Task Deleted + +Example: + +```json +{ + "addr.remote": "127.0.0.1:52915", + "cluster_name": "lenix", + "code": "UT003I", + "ei": 0, + "event": "user_task.delete", + "expires": "0001-01-01T00:00:00Z", + "name": "d217950f-cb5f-5703-96ef-39ab8cd86601", + "success": true, + "time": "2024-10-17T14:01:11.031Z", + "uid": "7699b806-e717-4821-85a5-d2f41acbe373", + "updated_by": "30a6b2e1-3b61-4965-92cf-b4f84e9dc683.lenix", + "user": "30a6b2e1-3b61-4965-92cf-b4f84e9dc683.lenix", + "user_kind": 1 +} +``` + +## user_task.update + +User Task Updated + +Example: + +```json +{ + "addr.remote": "127.0.0.1:52833", + "cluster_name": "lenix", + "code": "UT002I", + "current_user_task_state": "OPEN", + "ei": 0, + "event": "user_task.update", + "expires": "0001-01-01T00:00:00Z", + "name": "d217950f-cb5f-5703-96ef-39ab8cd86601", + "success": true, + "time": "2024-10-17T14:01:02.853Z", + "uid": "0ba36761-4a6a-429e-bce4-1825d80ce06a", + "updated_by": "30a6b2e1-3b61-4965-92cf-b4f84e9dc683.lenix", + "updated_user_task_state": "OPEN", + "user": "30a6b2e1-3b61-4965-92cf-b4f84e9dc683.lenix", + "user_kind": 1, + "user_task_integration": "teleportdev", + "user_task_issue_type": "ec2-ssm-invocation-failure", + "user_task_type": "discover-ec2" +} +``` + +## windows.desktop.session.end + +Windows Desktop Session Ended + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TDP01I", + "desktop_addr": "100.104.52.89:3389", + "desktop_name": "desktop-name", + "desktop_labels": { + "env": "prod", + "foo": "bar" + }, + "ei": 0, + "event": "windows.desktop.session.end", + "sid": "b7f734d8-bdc2-4996-8959-0b42a11708e7", + "time": "2021-10-18T23:19:13.105Z", + "uid": "84d408d1-3314-4a30-b7b7-35970633c9de", + "user": "joe", + "windows_desktop_service": "ba17ae92-5519-476a-954e-c225cf751de1", + "windows_domain": "desktopaccess.com", + "windows_user": "Administrator" +} +``` + +## windows.desktop.session.start + +There are multiple events with the `windows.desktop.session.start` type. + +### TDP00I + +Windows Desktop Session Started + +Example: + +```json +{ + "addr.remote": "100.104.52.89:3389", + "cluster_name": "im-a-cluster-name", + "code": "TDP00I", + "desktop_addr": "100.104.52.89:3389", + "desktop_name": "desktop-name", + "desktop_labels": { + "env": "prod", + "foo": "bar" + }, + "ei": 0, + "event": "windows.desktop.session.start", + "proto": "tdp", + "sid": "b7f734d8-bdc2-4996-8959-0b42a11708e7", + "success": true, + "time": "2021-10-18T23:18:29.144Z", + "uid": "cf15cc08-f818-4f09-91c5-238e1326b22b", + "user": "joe", + "windows_desktop_service": "ba17ae92-5519-476a-954e-c225cf751de1", + "windows_domain": "desktopaccess.com", + "windows_user": "Administrator" +} +``` + +### TDP00W + +Windows Desktop Session Denied + +Example: + +```json +{ + "cluster_name": "im-a-cluster-name", + "code": "TDP00W", + "desktop_addr": "100.104.52.89:3389", + "desktop_name": "desktop-name", + "desktop_labels": { + "env": "prod", + "foo": "bar" + }, + "ei": 0, + "event": "windows.desktop.session.start", + "sid": "b7f734d8-bdc2-4996-8959-0b42a11708e7", + "time": "2021-10-18T23:39:13.105Z", + "uid": "84d408d1-3314-4a30-b7b7-35970633c9de", + "user": "joe", + "windows_desktop_service": "ba17ae92-5519-476a-954e-c225cf751de1", + "windows_domain": "desktopaccess.com", + "windows_user": "Administrator" +} +``` + +## workload_identity.create + +Workload Identity Created + +Example: + +```json +{ + "cluster_name": "leaf.tele.ottr.sh:443", + "code": "WID001I", + "ei": 0, + "event": "workload_identity.create", + "expires": "0001-01-01T00:00:00Z", + "name": "made-by-noah", + "time": "2023-12-08T10:53:39.798Z", + "uid": "0efbb33d-fa50-44e0-8dec-4ac89c0dd4ab", + "user": "noah" +} +``` + +## workload_identity.delete + +Workload Identity Deleted + +Example: + +```json +{ + "cluster_name": "leaf.tele.ottr.sh:443", + "code": "WID003I", + "ei": 0, + "event": "workload_identity.delete", + "expires": "0001-01-01T00:00:00Z", + "name": "made-by-noah", + "time": "2023-12-08T10:53:39.798Z", + "uid": "0efbb33d-fa50-44e0-8dec-4ac89c0dd4ab", + "user": "noah" +} +``` + +## workload_identity.update + +Workload Identity Updated + +Example: + +```json +{ + "cluster_name": "leaf.tele.ottr.sh:443", + "code": "WID002I", + "ei": 0, + "event": "workload_identity.update", + "expires": "0001-01-01T00:00:00Z", + "name": "made-by-noah", + "time": "2023-12-08T10:53:39.798Z", + "uid": "0efbb33d-fa50-44e0-8dec-4ac89c0dd4ab", + "user": "noah" +} +``` + +## x11-forward + +There are multiple events with the `x11-forward` type. + +### T3008I + +X11 Forwarding Requested + +Example: + +```json +{ + "addr.local": "192.000.0.000:3022", + "addr.remote": "127.0.0.1:50000", + "cluster_name": "im-a-cluster-name", + "code": "T3008I", + "ei": 0, + "event": "x11-forward", + "login": "root", + "success": true, + "time": "2022-01-20T18:31:45.012Z", + "uid": "6333-37a7-4c3c-9180-f3abc8e2b", + "user": "lisa" +} +``` + +### T3008W + +X11 Forwarding Request Failed + +Example: + +```json +{ + "addr.local": "192.000.0.000:3022", + "addr.remote": "127.0.0.1:60000", + "cluster_name": "im-a-cluster-name", + "code": "T3008W", + "ei": 0, + "error": "lisa was here", + "event": "x11-forward", + "login": "root", + "success": false, + "time": "2022-01-20T19:49:02.307Z", + "uid": "0629c7-3d98-4451-ac90-dc5330", + "user": "lisa" +} +```