Skip to content

Commit 623be09

Browse files
authored
feat: add MCP auditability (#2193)
1 parent a21c612 commit 623be09

33 files changed

Lines changed: 4058 additions & 967 deletions

api/v1/api.gen.go

Lines changed: 1025 additions & 750 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1/api.yaml

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5500,6 +5500,78 @@ paths:
55005500
required: false
55015501
schema:
55025502
type: string
5503+
- name: action
5504+
in: query
5505+
description: "Filter by audit action"
5506+
required: false
5507+
schema:
5508+
type: string
5509+
- name: source
5510+
in: query
5511+
description: "Filter by audit source (e.g., mcp, ui, rest, cli)"
5512+
required: false
5513+
schema:
5514+
type: string
5515+
- name: surface
5516+
in: query
5517+
description: "Filter by accepted credential surface (e.g., mcp, rest_api)"
5518+
required: false
5519+
schema:
5520+
type: string
5521+
- name: result
5522+
in: query
5523+
description: "Filter by result (succeeded, failed, denied)"
5524+
required: false
5525+
schema:
5526+
type: string
5527+
- name: correlationId
5528+
in: query
5529+
description: "Filter by correlation ID"
5530+
required: false
5531+
schema:
5532+
type: string
5533+
- name: resourceType
5534+
in: query
5535+
description: "Filter by resource type"
5536+
required: false
5537+
schema:
5538+
type: string
5539+
- name: resourceId
5540+
in: query
5541+
description: "Filter by resource ID"
5542+
required: false
5543+
schema:
5544+
type: string
5545+
- name: workspace
5546+
in: query
5547+
description: "Filter by canonical workspace"
5548+
required: false
5549+
schema:
5550+
type: string
5551+
- name: credentialId
5552+
in: query
5553+
description: "Filter by credential ID"
5554+
required: false
5555+
schema:
5556+
type: string
5557+
- name: credentialType
5558+
in: query
5559+
description: "Filter by credential type"
5560+
required: false
5561+
schema:
5562+
type: string
5563+
- name: mcpTool
5564+
in: query
5565+
description: "Filter by MCP tool name"
5566+
required: false
5567+
schema:
5568+
type: string
5569+
- name: ipAddress
5570+
in: query
5571+
description: "Filter by client IP address"
5572+
required: false
5573+
schema:
5574+
type: string
55035575
- name: userId
55045576
in: query
55055577
description: "Filter by user ID"
@@ -9291,6 +9363,36 @@ components:
92919363
action:
92929364
type: string
92939365
description: "The action that was performed (e.g., session_start, command, login)"
9366+
source:
9367+
type: string
9368+
description: "Source surface that produced the event"
9369+
surface:
9370+
type: string
9371+
description: "Externally accepted credential surface"
9372+
result:
9373+
type: string
9374+
description: "Event result such as succeeded, failed, or denied"
9375+
correlationId:
9376+
type: string
9377+
description: "Correlation ID linking related audit events"
9378+
resourceType:
9379+
type: string
9380+
description: "Affected resource type"
9381+
resourceId:
9382+
type: string
9383+
description: "Affected resource ID"
9384+
workspace:
9385+
type: string
9386+
description: "Canonical workspace for filtering"
9387+
credentialId:
9388+
type: string
9389+
description: "Credential ID used for the request"
9390+
credentialType:
9391+
type: string
9392+
description: "Credential type used for the request"
9393+
mcpTool:
9394+
type: string
9395+
description: "MCP tool name when source is MCP"
92949396
userId:
92959397
type: string
92969398
description: "ID of the user who performed the action"
@@ -12886,6 +12988,33 @@ components:
1288612988
$ref: "#/components/schemas/UserRole"
1288712989
workspaceAccess:
1288812990
$ref: "#/components/schemas/WorkspaceAccess"
12991+
allowedSurfaces:
12992+
type: array
12993+
minItems: 1
12994+
uniqueItems: true
12995+
description: "Interfaces where this API key may be accepted"
12996+
items:
12997+
type: string
12998+
enum: [rest_api, mcp]
12999+
attributionClass:
13000+
type: string
13001+
enum: [user_owned, service_account]
13002+
description: "Whether this key is owned by a user or represents a service account"
13003+
ownerUserId:
13004+
type: string
13005+
description: "Owner user ID when attributionClass is user_owned"
13006+
ownerUsername:
13007+
type: string
13008+
description: "Owner username when attributionClass is user_owned"
13009+
serviceAccountId:
13010+
type: string
13011+
description: "Service-account identifier when attributionClass is service_account"
13012+
serviceAccountName:
13013+
type: string
13014+
description: "Service-account display name when attributionClass is service_account"
13015+
migratedAsServiceAccount:
13016+
type: boolean
13017+
description: "True when a legacy key missing attributionClass was defaulted to service_account"
1288913018
keyPrefix:
1289013019
type: string
1289113020
description: "First 8 characters for identification"
@@ -12910,6 +13039,8 @@ components:
1291013039
- name
1291113040
- role
1291213041
- workspaceAccess
13042+
- allowedSurfaces
13043+
- attributionClass
1291313044
- keyPrefix
1291413045
- createdAt
1291513046
- updatedAt
@@ -12952,9 +13083,29 @@ components:
1295213083
$ref: "#/components/schemas/UserRole"
1295313084
workspaceAccess:
1295413085
$ref: "#/components/schemas/WorkspaceAccess"
13086+
allowedSurfaces:
13087+
type: array
13088+
minItems: 1
13089+
uniqueItems: true
13090+
description: "Interfaces where this API key may be accepted"
13091+
items:
13092+
type: string
13093+
enum: [rest_api, mcp]
13094+
attributionClass:
13095+
type: string
13096+
enum: [user_owned, service_account]
13097+
description: "Whether this key is owned by a user or represents a service account"
13098+
ownerUserId:
13099+
type: string
13100+
description: "Owner user ID when attributionClass is user_owned"
13101+
serviceAccountName:
13102+
type: string
13103+
description: "Service-account display name when attributionClass is service_account"
1295513104
required:
1295613105
- name
1295713106
- role
13107+
- allowedSurfaces
13108+
- attributionClass
1295813109

1295913110
CreateAPIKeyResponse:
1296013111
type: object
@@ -12986,6 +13137,24 @@ components:
1298613137
$ref: "#/components/schemas/UserRole"
1298713138
workspaceAccess:
1298813139
$ref: "#/components/schemas/WorkspaceAccess"
13140+
allowedSurfaces:
13141+
type: array
13142+
minItems: 1
13143+
uniqueItems: true
13144+
description: "Interfaces where this API key may be accepted"
13145+
items:
13146+
type: string
13147+
enum: [rest_api, mcp]
13148+
attributionClass:
13149+
type: string
13150+
enum: [user_owned, service_account]
13151+
description: "Whether this key is owned by a user or represents a service account"
13152+
ownerUserId:
13153+
type: string
13154+
description: "Owner user ID when attributionClass is user_owned"
13155+
serviceAccountName:
13156+
type: string
13157+
description: "Service-account display name when attributionClass is service_account"
1298913158

1299013159
SuccessResponse:
1299113160
type: object

0 commit comments

Comments
 (0)