@bluefly/openstandardagents 0.4.9 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.version.json +3 -3
- package/CHANGELOG.md +8 -8
- package/README.md +68 -58
- package/bin/postinstall +0 -0
- package/dist/.version.json +3 -3
- package/dist/adapters/claude-code/adapter.js +2 -2
- package/dist/adapters/docker/generators.js +19 -19
- package/dist/adapters/drupal/generator.js +76 -76
- package/dist/adapters/openai-agents/adapter.js +2 -2
- package/dist/cli/schema-driven/schema-loader.js +5 -5
- package/dist/mcp-server/__tests__/mcp-server.spec.js +20 -11
- package/dist/mcp-server/index.js +0 -0
- package/dist/package.json +24 -11
- package/dist/services/export/langchain/langchain-exporter.js +2 -2
- package/dist/services/export/langchain/memory-generator.js +2 -2
- package/dist/services/export/testing/test-generator.js +1 -1
- package/dist/services/taxonomy-service.d.ts +3 -3
- package/dist/skills/test-skill/package.json +1 -1
- package/dist/spec/extensions/role-manifest.md +188 -0
- package/dist/spec/v0.4/extensions/mcp/README.md +1 -1
- package/dist/spec/v0.5/agent.schema.json +2 -1
- package/dist/spec/v0.5/extensions/mcp/README.md +1 -1
- package/dist/spec/v0.5/role.schema.json +268 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +2 -0
- package/dist/types/role.d.ts +126 -0
- package/dist/types/role.js +38 -0
- package/dist/validation/validator.js +1 -1
- package/examples/agents/01-customer-support-bot/agent.ossa.yaml +24 -31
- package/examples/agents/05-sales-assistant/agent.ossa.yaml +35 -23
- package/examples/agents/07-research-assistant/agent.ossa.yaml +27 -21
- package/examples/agents/10-meeting-assistant/agent.ossa.yaml +27 -35
- package/examples/agents/security-audit-agent.ossa.yaml +234 -0
- package/examples/agentscope/react-assistant/agent.ossa.yaml +36 -32
- package/examples/drupal/content-moderator.ossa.yaml +2 -2
- package/examples/drupal/drupal-contributor.ossa.yaml +247 -0
- package/examples/export/langchain/production-agent-with-memory/README.md +1 -1
- package/examples/export/langchain/production-agent-with-memory/agent.ossa.yaml +13 -23
- package/examples/export/langchain/production-agent-with-streaming/agent.ossa.yaml +1 -15
- package/examples/export/langchain/production-agent-with-tools/agent.ossa.yaml +28 -29
- package/examples/getting-started/01-minimal-agent.ossa.yaml +1 -1
- package/examples/getting-started/02-agent-with-tools.ossa.yaml +1 -1
- package/examples/getting-started/03-agent-with-safety.ossa.yaml +1 -1
- package/examples/getting-started/04-agent-with-messaging.ossa.yaml +1 -1
- package/examples/getting-started/05-workflow-composition.ossa.yaml +1 -1
- package/examples/getting-started/README.md +3 -3
- package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
- package/examples/gitlab-agents/gitlab-ci-agent.ossa.yaml +221 -0
- package/examples/hierarchical-agent.ossa.yaml +10 -53
- package/examples/kagent/ossa-kagent-anthropic.ossa.yaml +2 -25
- package/examples/kagent/ossa-kagent-mcp-tools.ossa.yaml +2 -30
- package/examples/kagent/ossa-kagent-multi-tool.ossa.yaml +2 -18
- package/examples/kagent/ossa-kagent-poc.ossa.yaml +2 -16
- package/examples/pipeline-agent.ossa.yaml +3 -3
- package/examples/platform-specific/claude-code-subagent.yaml +1 -1
- package/examples/platform-specific/cursor-coding-agent.yaml +1 -1
- package/examples/platform-specific/warp-terminal-agent.yaml +1 -1
- package/examples/production-ready/01-customer-support-bot/agent.ossa.yaml +24 -31
- package/examples/production-ready/05-sales-assistant/agent.ossa.yaml +35 -23
- package/examples/production-ready/07-research-assistant/agent.ossa.yaml +27 -19
- package/examples/production-ready/10-meeting-assistant/agent.ossa.yaml +27 -35
- package/examples/reference-implementations/python-client/examples/basic_usage.py +0 -0
- package/examples/reference-implementations/python-client/examples/publish_agent.py +0 -0
- package/examples/roles/drupal-developer.role.yaml +37 -0
- package/examples/roles/platform-operator.role.yaml +28 -0
- package/examples/roles/security-auditor.role.yaml +27 -0
- package/examples/swarm-agent.ossa.yaml +13 -51
- package/examples/team-agent.ossa.yaml +12 -61
- package/examples/team-lead-teammate.ossa.yaml +12 -17
- package/openapi/agent-communication.yaml +260 -212
- package/openapi/agent-crud.yaml +217 -187
- package/openapi/agent-discovery.yaml +119 -81
- package/openapi/agent-identity.yaml +219 -187
- package/openapi/agent-taxonomy.yaml +95 -38
- package/openapi/agents-md-service.yaml +103 -30
- package/openapi/cli/openapi.yaml +147 -40
- package/openapi/core/ossa-core-api.openapi.yaml +327 -271
- package/openapi/core/ossa-registry-api.openapi.yaml +298 -235
- package/openapi/core/ossa-registry.openapi.yaml +299 -159
- package/openapi/core/unified-agent-gateway.openapi.yaml +234 -170
- package/openapi/daemon-api.openapi.yaml +323 -181
- package/openapi/dev-cli/openapi.yaml +137 -113
- package/openapi/github-sync.yaml +62 -19
- package/openapi/marketplace-plugin.openapi.yaml +539 -466
- package/openapi/ossa-api.openapi.yaml +354 -213
- package/openapi/ossa-cli-enhancements.openapi.yaml +108 -89
- package/openapi/ossa-cli.yaml +260 -184
- package/openapi/protocols/sse-streams.yaml +66 -74
- package/openapi/protocols/websocket-events.yaml +61 -54
- package/openapi/reference-implementations/aiflow-bridge-api.openapi.yaml +37 -20
- package/openapi/reference-implementations/compliance-agent-api.openapi.yaml +35 -23
- package/openapi/reference-implementations/crewai-agent-api.openapi.yaml +29 -18
- package/openapi/reference-implementations/critic-agent-api.openapi.yaml +45 -19
- package/openapi/reference-implementations/document-analyzer-api.openapi.yaml +30 -24
- package/openapi/reference-implementations/drupal-agent-api.openapi.yaml +101 -50
- package/openapi/reference-implementations/getting-started-hello-world-api.openapi.yaml +33 -22
- package/openapi/reference-implementations/gitlab-ml-recommender-api.openapi.yaml +20 -16
- package/openapi/reference-implementations/governor-agent-api.openapi.yaml +41 -23
- package/openapi/reference-implementations/helm-generator.openapi.yaml +88 -46
- package/openapi/reference-implementations/integrator-agent-api.openapi.yaml +30 -20
- package/openapi/reference-implementations/judge-agent-api.openapi.yaml +22 -16
- package/openapi/reference-implementations/k8s-troubleshooter-api.openapi.yaml +32 -18
- package/openapi/reference-implementations/langchain-agent-api.openapi.yaml +32 -21
- package/openapi/reference-implementations/monitor-agent-api.openapi.yaml +34 -21
- package/openapi/reference-implementations/orchestrator-agent-api.openapi.yaml +49 -27
- package/openapi/reference-implementations/quickstart-support-agent-api.openapi.yaml +27 -19
- package/openapi/reference-implementations/self-evolving-ecosystem.openapi.yaml +427 -293
- package/openapi/reference-implementations/worker-agent-api.openapi.yaml +34 -23
- package/openapi/reference-implementations/workflow-orchestrator-api.openapi.yaml +35 -21
- package/openapi/release-automation.openapi.yaml +47 -13
- package/openapi/schemas/common/agent.yaml +30 -29
- package/openapi/schemas/common/errors.yaml +13 -3
- package/openapi/schemas/common/metadata.yaml +22 -7
- package/openapi/schemas/common/pagination.yaml +18 -6
- package/openapi/schemas/common/security.yaml +13 -5
- package/openapi/schemas/index.yaml +49 -42
- package/openapi/uadp-asyncapi.yaml +4 -2
- package/openapi/uadp-openapi.yaml +243 -165
- package/openapi/version-management.openapi.yaml +142 -135
- package/package.json +114 -103
- package/spec/extensions/role-manifest.md +188 -0
- package/spec/v0.4/extensions/mcp/README.md +1 -1
- package/spec/v0.5/agent.schema.json +2 -1
- package/spec/v0.5/extensions/mcp/README.md +1 -1
- package/spec/v0.5/role.schema.json +268 -0
|
@@ -27,7 +27,6 @@ info:
|
|
|
27
27
|
### Specification Documents
|
|
28
28
|
- **OpenAPI (this file)**: REST endpoints for agent CRUD, discovery, and health
|
|
29
29
|
- **AsyncAPI** (`uadp-asyncapi.yaml`): Event-driven pubsub for registration, heartbeat, revocation
|
|
30
|
-
|
|
31
30
|
contact:
|
|
32
31
|
name: OSSA Maintainers
|
|
33
32
|
url: https://openstandardagents.org
|
|
@@ -38,7 +37,6 @@ info:
|
|
|
38
37
|
externalDocs:
|
|
39
38
|
description: OSSA specification and schema repository
|
|
40
39
|
url: https://openstandardagents.org/docs
|
|
41
|
-
|
|
42
40
|
servers:
|
|
43
41
|
- url: https://registry.openstandardagents.org/api/v1
|
|
44
42
|
description: Production UADP Registry
|
|
@@ -46,7 +44,6 @@ servers:
|
|
|
46
44
|
description: Staging Registry
|
|
47
45
|
- url: http://localhost:3100/api/v1
|
|
48
46
|
description: Local / DDEV Development
|
|
49
|
-
|
|
50
47
|
tags:
|
|
51
48
|
- name: registry
|
|
52
49
|
description: Agent registration and lifecycle management
|
|
@@ -60,11 +57,7 @@ tags:
|
|
|
60
57
|
description: Registry and agent health endpoints
|
|
61
58
|
- name: revocation
|
|
62
59
|
description: Agent status and revocation management
|
|
63
|
-
|
|
64
60
|
paths:
|
|
65
|
-
# ─────────────────────────────────────────────
|
|
66
|
-
# WEBFINGER (Decentralized Discovery)
|
|
67
|
-
# ─────────────────────────────────────────────
|
|
68
61
|
/.well-known/webfinger:
|
|
69
62
|
get:
|
|
70
63
|
summary: RFC 7033 WebFinger Discovery
|
|
@@ -74,34 +67,33 @@ paths:
|
|
|
74
67
|
the agent's OSSA manifest, UADP status, or PGP keys.
|
|
75
68
|
This prevents UADP from requiring a centralized registry.
|
|
76
69
|
operationId: uadp_webfinger
|
|
77
|
-
tags:
|
|
70
|
+
tags:
|
|
71
|
+
- discovery
|
|
78
72
|
parameters:
|
|
79
73
|
- name: resource
|
|
80
74
|
in: query
|
|
81
75
|
required: true
|
|
82
76
|
schema:
|
|
83
77
|
type: string
|
|
84
|
-
description:
|
|
85
|
-
example:
|
|
78
|
+
description: URI to look up (e.g., uadp://skills.sh/tools/linter)
|
|
79
|
+
example: uadp://skills.sh/tools/linter
|
|
86
80
|
- name: rel
|
|
87
81
|
in: query
|
|
88
82
|
schema:
|
|
89
83
|
type: string
|
|
90
|
-
description:
|
|
84
|
+
description: Optional link relation to filter by (e.g., https://openstandardagents.org/rel/manifest)
|
|
91
85
|
responses:
|
|
92
|
-
|
|
86
|
+
"200":
|
|
93
87
|
description: JRD Resource Descriptor
|
|
94
88
|
content:
|
|
95
89
|
application/jrd+json:
|
|
96
90
|
schema:
|
|
97
|
-
$ref:
|
|
98
|
-
|
|
99
|
-
$ref:
|
|
100
|
-
|
|
101
|
-
$ref:
|
|
102
|
-
|
|
103
|
-
# REGISTRY
|
|
104
|
-
# ─────────────────────────────────────────────
|
|
91
|
+
$ref: "#/components/schemas/WebFingerJRD"
|
|
92
|
+
"400":
|
|
93
|
+
$ref: "#/components/responses/BadRequest"
|
|
94
|
+
"404":
|
|
95
|
+
$ref: "#/components/responses/NotFound"
|
|
96
|
+
x-ossa-capability: uadp-webfinger
|
|
105
97
|
/registry/register:
|
|
106
98
|
post:
|
|
107
99
|
summary: Register an agent with the UADP registry
|
|
@@ -110,7 +102,8 @@ paths:
|
|
|
110
102
|
which is parsed to extract taxonomy, capabilities, and optionally `x-signature`
|
|
111
103
|
for cryptographic trust elevation.
|
|
112
104
|
operationId: uadp_registerAgent
|
|
113
|
-
tags:
|
|
105
|
+
tags:
|
|
106
|
+
- registry
|
|
114
107
|
security:
|
|
115
108
|
- bearerAuth: []
|
|
116
109
|
requestBody:
|
|
@@ -118,7 +111,7 @@ paths:
|
|
|
118
111
|
content:
|
|
119
112
|
application/json:
|
|
120
113
|
schema:
|
|
121
|
-
$ref:
|
|
114
|
+
$ref: "#/components/schemas/RegistrationRequest"
|
|
122
115
|
parameters:
|
|
123
116
|
- name: gossip
|
|
124
117
|
in: query
|
|
@@ -144,82 +137,98 @@ paths:
|
|
|
144
137
|
uuid: 5d3f9a2b-7e8c-4f1d-a0b3-123456789abc
|
|
145
138
|
x-signature:
|
|
146
139
|
type: Ed25519
|
|
147
|
-
value:
|
|
148
|
-
publicKey:
|
|
149
|
-
issuer:
|
|
150
|
-
timestamp:
|
|
140
|
+
value: base64encodedSignaturePayload==
|
|
141
|
+
publicKey: base64encodedPublicKey==
|
|
142
|
+
issuer: did:web:agents.bluefly.io:compliance-scanner
|
|
143
|
+
timestamp: 2026-03-02T00:00:00Z
|
|
151
144
|
endpoint: https://agents.example.com/compliance-scanner
|
|
152
|
-
domains:
|
|
153
|
-
|
|
154
|
-
|
|
145
|
+
domains:
|
|
146
|
+
- domain::security
|
|
147
|
+
subdomains:
|
|
148
|
+
- subdomain::compliance
|
|
149
|
+
capabilities:
|
|
150
|
+
- audit
|
|
151
|
+
- policy-enforcement
|
|
155
152
|
status: active
|
|
156
153
|
responses:
|
|
157
|
-
|
|
154
|
+
"201":
|
|
158
155
|
description: Agent successfully registered
|
|
159
156
|
content:
|
|
160
157
|
application/json:
|
|
161
158
|
schema:
|
|
162
|
-
$ref:
|
|
163
|
-
|
|
164
|
-
$ref:
|
|
165
|
-
|
|
166
|
-
$ref:
|
|
167
|
-
|
|
159
|
+
$ref: "#/components/schemas/RegistrationResponse"
|
|
160
|
+
"400":
|
|
161
|
+
$ref: "#/components/responses/BadRequest"
|
|
162
|
+
"401":
|
|
163
|
+
$ref: "#/components/responses/Unauthorized"
|
|
164
|
+
"409":
|
|
168
165
|
description: Agent ID conflict
|
|
169
166
|
content:
|
|
170
167
|
application/json:
|
|
171
168
|
schema:
|
|
172
|
-
$ref:
|
|
173
|
-
|
|
174
|
-
$ref:
|
|
175
|
-
|
|
169
|
+
$ref: "#/components/schemas/Error"
|
|
170
|
+
"500":
|
|
171
|
+
$ref: "#/components/responses/InternalError"
|
|
172
|
+
x-ossa-capability: uadp-register-agent
|
|
173
|
+
x-ossa-autonomy:
|
|
174
|
+
level: supervised
|
|
175
|
+
approval_required: true
|
|
176
176
|
/registry/unregister/{agentId}:
|
|
177
177
|
delete:
|
|
178
178
|
summary: Unregister an agent
|
|
179
179
|
description: Graceful unregistration. Registry also auto-expires agents that fail health checks.
|
|
180
180
|
operationId: uadp_unregisterAgent
|
|
181
|
-
tags:
|
|
181
|
+
tags:
|
|
182
|
+
- registry
|
|
182
183
|
security:
|
|
183
184
|
- bearerAuth: []
|
|
184
185
|
parameters:
|
|
185
|
-
- $ref:
|
|
186
|
+
- $ref: "#/components/parameters/AgentIdPath"
|
|
186
187
|
responses:
|
|
187
|
-
|
|
188
|
+
"204":
|
|
188
189
|
description: Agent successfully unregistered
|
|
189
|
-
|
|
190
|
-
$ref:
|
|
191
|
-
|
|
192
|
-
$ref:
|
|
193
|
-
|
|
194
|
-
$ref:
|
|
195
|
-
|
|
190
|
+
"401":
|
|
191
|
+
$ref: "#/components/responses/Unauthorized"
|
|
192
|
+
"404":
|
|
193
|
+
$ref: "#/components/responses/NotFound"
|
|
194
|
+
"500":
|
|
195
|
+
$ref: "#/components/responses/InternalError"
|
|
196
|
+
x-ossa-capability: uadp-unregister-agent
|
|
197
|
+
x-ossa-autonomy:
|
|
198
|
+
level: supervised
|
|
199
|
+
approval_required: true
|
|
196
200
|
/registry/heartbeat/{agentId}:
|
|
197
201
|
put:
|
|
198
202
|
summary: Renew agent registration heartbeat
|
|
199
203
|
description: Agents must call this endpoint periodically (default every 30s) to remain active.
|
|
200
204
|
operationId: uadp_heartbeat
|
|
201
|
-
tags:
|
|
205
|
+
tags:
|
|
206
|
+
- registry
|
|
202
207
|
security:
|
|
203
208
|
- bearerAuth: []
|
|
204
209
|
parameters:
|
|
205
|
-
- $ref:
|
|
210
|
+
- $ref: "#/components/parameters/AgentIdPath"
|
|
206
211
|
requestBody:
|
|
207
212
|
required: true
|
|
208
213
|
content:
|
|
209
214
|
application/json:
|
|
210
215
|
schema:
|
|
211
216
|
type: object
|
|
212
|
-
required:
|
|
217
|
+
required:
|
|
218
|
+
- status
|
|
213
219
|
properties:
|
|
214
220
|
status:
|
|
215
221
|
type: string
|
|
216
|
-
enum:
|
|
222
|
+
enum:
|
|
223
|
+
- active
|
|
224
|
+
- degraded
|
|
225
|
+
- maintenance
|
|
217
226
|
metrics:
|
|
218
227
|
type: object
|
|
219
228
|
additionalProperties: true
|
|
220
229
|
description: Optional runtime telemetry
|
|
221
230
|
responses:
|
|
222
|
-
|
|
231
|
+
"200":
|
|
223
232
|
description: Heartbeat acknowledged
|
|
224
233
|
content:
|
|
225
234
|
application/json:
|
|
@@ -229,12 +238,12 @@ paths:
|
|
|
229
238
|
ttl:
|
|
230
239
|
type: integer
|
|
231
240
|
description: Seconds until next heartbeat required
|
|
232
|
-
|
|
233
|
-
$ref:
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
241
|
+
"404":
|
|
242
|
+
$ref: "#/components/responses/NotFound"
|
|
243
|
+
x-ossa-capability: uadp-heartbeat
|
|
244
|
+
x-ossa-autonomy:
|
|
245
|
+
level: supervised
|
|
246
|
+
approval_required: true
|
|
238
247
|
/discovery/agents:
|
|
239
248
|
get:
|
|
240
249
|
summary: Discover agents by taxonomy, capabilities, and trust
|
|
@@ -247,19 +256,20 @@ paths:
|
|
|
247
256
|
|
|
248
257
|
pagination via `limit` + `cursor` for large registries.
|
|
249
258
|
operationId: uadp_discoverAgents
|
|
250
|
-
tags:
|
|
259
|
+
tags:
|
|
260
|
+
- discovery
|
|
251
261
|
parameters:
|
|
252
262
|
- name: domain
|
|
253
263
|
in: query
|
|
254
264
|
schema:
|
|
255
265
|
type: string
|
|
256
|
-
pattern:
|
|
266
|
+
pattern: ^domain::[a-z0-9-]+$
|
|
257
267
|
example: domain::security
|
|
258
268
|
- name: subdomain
|
|
259
269
|
in: query
|
|
260
270
|
schema:
|
|
261
271
|
type: string
|
|
262
|
-
pattern:
|
|
272
|
+
pattern: ^subdomain::[a-z0-9-]+$
|
|
263
273
|
example: subdomain::compliance
|
|
264
274
|
- name: concerns
|
|
265
275
|
in: query
|
|
@@ -267,7 +277,7 @@ paths:
|
|
|
267
277
|
type: array
|
|
268
278
|
items:
|
|
269
279
|
type: string
|
|
270
|
-
pattern:
|
|
280
|
+
pattern: ^concern::[a-z0-9-]+$
|
|
271
281
|
style: form
|
|
272
282
|
explode: false
|
|
273
283
|
example: concern::quality,concern::governance
|
|
@@ -284,12 +294,20 @@ paths:
|
|
|
284
294
|
description: Minimum trust tier required
|
|
285
295
|
schema:
|
|
286
296
|
type: string
|
|
287
|
-
enum:
|
|
297
|
+
enum:
|
|
298
|
+
- official
|
|
299
|
+
- verified-signature
|
|
300
|
+
- signed
|
|
301
|
+
- community
|
|
302
|
+
- experimental
|
|
288
303
|
- name: status
|
|
289
304
|
in: query
|
|
290
305
|
schema:
|
|
291
306
|
type: string
|
|
292
|
-
enum:
|
|
307
|
+
enum:
|
|
308
|
+
- active
|
|
309
|
+
- deprecated
|
|
310
|
+
- revoked
|
|
293
311
|
description: Defaults to active — pass 'revoked' to include only revoked agents
|
|
294
312
|
- name: limit
|
|
295
313
|
in: query
|
|
@@ -304,37 +322,36 @@ paths:
|
|
|
304
322
|
schema:
|
|
305
323
|
type: string
|
|
306
324
|
responses:
|
|
307
|
-
|
|
325
|
+
"200":
|
|
308
326
|
description: Matching agents
|
|
309
327
|
content:
|
|
310
328
|
application/json:
|
|
311
329
|
schema:
|
|
312
|
-
$ref:
|
|
313
|
-
|
|
314
|
-
$ref:
|
|
315
|
-
|
|
316
|
-
$ref:
|
|
317
|
-
|
|
330
|
+
$ref: "#/components/schemas/DiscoveryResponse"
|
|
331
|
+
"400":
|
|
332
|
+
$ref: "#/components/responses/BadRequest"
|
|
333
|
+
"500":
|
|
334
|
+
$ref: "#/components/responses/InternalError"
|
|
335
|
+
x-ossa-capability: uadp-discover-agents
|
|
318
336
|
/discovery/agents/{agentId}:
|
|
319
337
|
get:
|
|
320
338
|
summary: Get a single agent by ID
|
|
321
339
|
operationId: uadp_getAgent
|
|
322
|
-
tags:
|
|
340
|
+
tags:
|
|
341
|
+
- discovery
|
|
323
342
|
parameters:
|
|
324
|
-
- $ref:
|
|
343
|
+
- $ref: "#/components/parameters/AgentIdPath"
|
|
325
344
|
responses:
|
|
326
|
-
|
|
345
|
+
"200":
|
|
327
346
|
description: Agent found
|
|
328
347
|
content:
|
|
329
348
|
application/json:
|
|
330
349
|
schema:
|
|
331
|
-
$ref:
|
|
332
|
-
|
|
333
|
-
$ref:
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
# TRUST
|
|
337
|
-
# ─────────────────────────────────────────────
|
|
350
|
+
$ref: "#/components/schemas/AgentRecord"
|
|
351
|
+
"404":
|
|
352
|
+
$ref: "#/components/responses/NotFound"
|
|
353
|
+
x-ossa-capability: uadp-get-agent
|
|
354
|
+
description: Get a single agent by ID
|
|
338
355
|
/trust/verify:
|
|
339
356
|
post:
|
|
340
357
|
summary: Verify an agent's x-signature
|
|
@@ -345,14 +362,16 @@ paths:
|
|
|
345
362
|
Returns a `TrustVerificationResult` indicating whether the signature is valid,
|
|
346
363
|
what tier it earns, and why.
|
|
347
364
|
operationId: uadp_verifySignature
|
|
348
|
-
tags:
|
|
365
|
+
tags:
|
|
366
|
+
- trust
|
|
349
367
|
requestBody:
|
|
350
368
|
required: true
|
|
351
369
|
content:
|
|
352
370
|
application/json:
|
|
353
371
|
schema:
|
|
354
372
|
type: object
|
|
355
|
-
required:
|
|
373
|
+
required:
|
|
374
|
+
- signature
|
|
356
375
|
properties:
|
|
357
376
|
agentId:
|
|
358
377
|
type: string
|
|
@@ -360,20 +379,20 @@ paths:
|
|
|
360
379
|
type: string
|
|
361
380
|
description: Canonicalized YAML/JSON of the manifest that was signed
|
|
362
381
|
signature:
|
|
363
|
-
$ref:
|
|
382
|
+
$ref: "#/components/schemas/XSignature"
|
|
364
383
|
responses:
|
|
365
|
-
|
|
384
|
+
"200":
|
|
366
385
|
description: Verification result
|
|
367
386
|
content:
|
|
368
387
|
application/json:
|
|
369
388
|
schema:
|
|
370
|
-
$ref:
|
|
371
|
-
|
|
372
|
-
$ref:
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
389
|
+
$ref: "#/components/schemas/TrustVerificationResult"
|
|
390
|
+
"400":
|
|
391
|
+
$ref: "#/components/responses/BadRequest"
|
|
392
|
+
x-ossa-capability: uadp-verify-signature
|
|
393
|
+
x-ossa-autonomy:
|
|
394
|
+
level: supervised
|
|
395
|
+
approval_required: true
|
|
377
396
|
/registry/revoke/{agentId}:
|
|
378
397
|
put:
|
|
379
398
|
summary: Revoke an agent (NIST CAISI alignment)
|
|
@@ -381,18 +400,21 @@ paths:
|
|
|
381
400
|
Sets agent status to `revoked` with a timestamp. Revoked agents are not returned
|
|
382
401
|
by the discovery endpoint by default. Required for NIST CAISI compliance.
|
|
383
402
|
operationId: uadp_revokeAgent
|
|
384
|
-
tags:
|
|
403
|
+
tags:
|
|
404
|
+
- revocation
|
|
405
|
+
- registry
|
|
385
406
|
security:
|
|
386
407
|
- bearerAuth: []
|
|
387
408
|
parameters:
|
|
388
|
-
- $ref:
|
|
409
|
+
- $ref: "#/components/parameters/AgentIdPath"
|
|
389
410
|
requestBody:
|
|
390
411
|
required: true
|
|
391
412
|
content:
|
|
392
413
|
application/json:
|
|
393
414
|
schema:
|
|
394
415
|
type: object
|
|
395
|
-
required:
|
|
416
|
+
required:
|
|
417
|
+
- reason
|
|
396
418
|
properties:
|
|
397
419
|
reason:
|
|
398
420
|
type: string
|
|
@@ -402,7 +424,7 @@ paths:
|
|
|
402
424
|
format: date-time
|
|
403
425
|
description: Defaults to now if not provided
|
|
404
426
|
responses:
|
|
405
|
-
|
|
427
|
+
"200":
|
|
406
428
|
description: Agent revoked
|
|
407
429
|
content:
|
|
408
430
|
application/json:
|
|
@@ -413,37 +435,40 @@ paths:
|
|
|
413
435
|
type: string
|
|
414
436
|
status:
|
|
415
437
|
type: string
|
|
416
|
-
enum:
|
|
438
|
+
enum:
|
|
439
|
+
- revoked
|
|
417
440
|
revokedAt:
|
|
418
441
|
type: string
|
|
419
442
|
format: date-time
|
|
420
|
-
|
|
421
|
-
$ref:
|
|
422
|
-
|
|
423
|
-
$ref:
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
443
|
+
"401":
|
|
444
|
+
$ref: "#/components/responses/Unauthorized"
|
|
445
|
+
"404":
|
|
446
|
+
$ref: "#/components/responses/NotFound"
|
|
447
|
+
x-ossa-capability: uadp-revoke-agent
|
|
448
|
+
x-ossa-autonomy:
|
|
449
|
+
level: supervised
|
|
450
|
+
approval_required: true
|
|
428
451
|
/health:
|
|
429
452
|
get:
|
|
430
453
|
summary: Registry health and statistics
|
|
431
454
|
operationId: uadp_health
|
|
432
|
-
tags:
|
|
455
|
+
tags:
|
|
456
|
+
- health
|
|
433
457
|
responses:
|
|
434
|
-
|
|
458
|
+
"200":
|
|
435
459
|
description: Registry healthy
|
|
436
460
|
content:
|
|
437
461
|
application/json:
|
|
438
462
|
schema:
|
|
439
|
-
$ref:
|
|
440
|
-
|
|
463
|
+
$ref: "#/components/schemas/HealthResponse"
|
|
464
|
+
"503":
|
|
441
465
|
description: Registry unavailable
|
|
442
466
|
content:
|
|
443
467
|
application/json:
|
|
444
468
|
schema:
|
|
445
|
-
$ref:
|
|
446
|
-
|
|
469
|
+
$ref: "#/components/schemas/HealthResponse"
|
|
470
|
+
x-ossa-capability: uadp-health
|
|
471
|
+
description: Registry health and statistics
|
|
447
472
|
components:
|
|
448
473
|
securitySchemes:
|
|
449
474
|
bearerAuth:
|
|
@@ -451,7 +476,6 @@ components:
|
|
|
451
476
|
scheme: bearer
|
|
452
477
|
bearerFormat: JWT
|
|
453
478
|
description: JWT or DID-authenticated bearer token
|
|
454
|
-
|
|
455
479
|
parameters:
|
|
456
480
|
AgentIdPath:
|
|
457
481
|
name: agentId
|
|
@@ -459,15 +483,15 @@ components:
|
|
|
459
483
|
required: true
|
|
460
484
|
schema:
|
|
461
485
|
type: string
|
|
462
|
-
pattern:
|
|
486
|
+
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
|
|
463
487
|
maxLength: 253
|
|
464
488
|
description: Unique agent identifier (DNS-1123 subdomain format)
|
|
465
|
-
|
|
466
489
|
schemas:
|
|
467
|
-
# ── WEBFINGER JRD ──────────────────────────
|
|
468
490
|
WebFingerJRD:
|
|
469
491
|
type: object
|
|
470
|
-
required:
|
|
492
|
+
required:
|
|
493
|
+
- subject
|
|
494
|
+
- links
|
|
471
495
|
properties:
|
|
472
496
|
subject:
|
|
473
497
|
type: string
|
|
@@ -485,7 +509,9 @@ components:
|
|
|
485
509
|
type: array
|
|
486
510
|
items:
|
|
487
511
|
type: object
|
|
488
|
-
required:
|
|
512
|
+
required:
|
|
513
|
+
- rel
|
|
514
|
+
- href
|
|
489
515
|
properties:
|
|
490
516
|
rel:
|
|
491
517
|
type: string
|
|
@@ -504,17 +530,25 @@ components:
|
|
|
504
530
|
type: object
|
|
505
531
|
additionalProperties:
|
|
506
532
|
type: string
|
|
507
|
-
# ── SIGNATURE ──────────────────────────────
|
|
508
533
|
XSignature:
|
|
509
534
|
type: object
|
|
510
535
|
description: |
|
|
511
536
|
Cryptographic signature block for NIST CAISI identity alignment.
|
|
512
537
|
Matches `metadata.x-signature` in the OSSA agent.schema.json v0.4+.
|
|
513
|
-
required:
|
|
538
|
+
required:
|
|
539
|
+
- type
|
|
540
|
+
- value
|
|
541
|
+
- publicKey
|
|
514
542
|
properties:
|
|
515
543
|
type:
|
|
516
544
|
type: string
|
|
517
|
-
enum:
|
|
545
|
+
enum:
|
|
546
|
+
- Ed25519
|
|
547
|
+
- RSA-PSS
|
|
548
|
+
- ECDSA
|
|
549
|
+
- jwt
|
|
550
|
+
- vc
|
|
551
|
+
- did
|
|
518
552
|
description: Signature scheme or protocol used
|
|
519
553
|
value:
|
|
520
554
|
type: string
|
|
@@ -525,16 +559,19 @@ components:
|
|
|
525
559
|
issuer:
|
|
526
560
|
type: string
|
|
527
561
|
description: DID or URI of the entity that issued the signature
|
|
528
|
-
example:
|
|
562
|
+
example: did:web:agents.bluefly.io:my-agent
|
|
529
563
|
timestamp:
|
|
530
564
|
type: string
|
|
531
565
|
format: date-time
|
|
532
566
|
description: ISO 8601 timestamp of signature generation
|
|
533
|
-
|
|
534
|
-
# ── TRUST ──────────────────────────────────
|
|
535
567
|
TrustTier:
|
|
536
568
|
type: string
|
|
537
|
-
enum:
|
|
569
|
+
enum:
|
|
570
|
+
- official
|
|
571
|
+
- verified-signature
|
|
572
|
+
- signed
|
|
573
|
+
- community
|
|
574
|
+
- experimental
|
|
538
575
|
description: |
|
|
539
576
|
Trust tier resolved from the agent's `x-signature` metadata:
|
|
540
577
|
- `official` — Published by OSSA Steering Committee
|
|
@@ -542,17 +579,19 @@ components:
|
|
|
542
579
|
- `signed` — x-signature present but incomplete (e.g. missing publicKey)
|
|
543
580
|
- `community` — No cryptographic provenance
|
|
544
581
|
- `experimental` — Pre-release
|
|
545
|
-
|
|
546
582
|
TrustVerificationResult:
|
|
547
583
|
type: object
|
|
548
|
-
required:
|
|
584
|
+
required:
|
|
585
|
+
- verified
|
|
586
|
+
- tier
|
|
587
|
+
- agentId
|
|
549
588
|
properties:
|
|
550
589
|
agentId:
|
|
551
590
|
type: string
|
|
552
591
|
verified:
|
|
553
592
|
type: boolean
|
|
554
593
|
tier:
|
|
555
|
-
$ref:
|
|
594
|
+
$ref: "#/components/schemas/TrustTier"
|
|
556
595
|
signatureType:
|
|
557
596
|
type: string
|
|
558
597
|
issuer:
|
|
@@ -563,15 +602,19 @@ components:
|
|
|
563
602
|
reason:
|
|
564
603
|
type: string
|
|
565
604
|
description: Human-readable explanation when verified is false
|
|
566
|
-
|
|
567
|
-
# ── REGISTRATION ───────────────────────────
|
|
568
605
|
RegistrationRequest:
|
|
569
606
|
type: object
|
|
570
|
-
required:
|
|
607
|
+
required:
|
|
608
|
+
- agentId
|
|
609
|
+
- name
|
|
610
|
+
- version
|
|
611
|
+
- manifest
|
|
612
|
+
- endpoint
|
|
613
|
+
- status
|
|
571
614
|
properties:
|
|
572
615
|
agentId:
|
|
573
616
|
type: string
|
|
574
|
-
pattern:
|
|
617
|
+
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
|
|
575
618
|
maxLength: 253
|
|
576
619
|
name:
|
|
577
620
|
type: string
|
|
@@ -589,37 +632,45 @@ components:
|
|
|
589
632
|
type: array
|
|
590
633
|
items:
|
|
591
634
|
type: string
|
|
592
|
-
pattern:
|
|
635
|
+
pattern: ^domain::[a-z0-9-]+$
|
|
593
636
|
subdomains:
|
|
594
637
|
type: array
|
|
595
638
|
items:
|
|
596
639
|
type: string
|
|
597
|
-
pattern:
|
|
640
|
+
pattern: ^subdomain::[a-z0-9-]+$
|
|
598
641
|
concerns:
|
|
599
642
|
type: array
|
|
600
643
|
items:
|
|
601
644
|
type: string
|
|
602
|
-
pattern:
|
|
645
|
+
pattern: ^concern::[a-z0-9-]+$
|
|
603
646
|
capabilities:
|
|
604
647
|
type: array
|
|
605
648
|
items:
|
|
606
649
|
type: string
|
|
607
650
|
status:
|
|
608
651
|
type: string
|
|
609
|
-
enum:
|
|
652
|
+
enum:
|
|
653
|
+
- active
|
|
654
|
+
- degraded
|
|
655
|
+
- maintenance
|
|
610
656
|
healthEndpoint:
|
|
611
657
|
type: string
|
|
612
658
|
format: uri
|
|
613
|
-
|
|
614
659
|
RegistrationResponse:
|
|
615
660
|
type: object
|
|
616
|
-
required:
|
|
661
|
+
required:
|
|
662
|
+
- agentId
|
|
663
|
+
- status
|
|
664
|
+
- registeredAt
|
|
665
|
+
- tier
|
|
617
666
|
properties:
|
|
618
667
|
agentId:
|
|
619
668
|
type: string
|
|
620
669
|
status:
|
|
621
670
|
type: string
|
|
622
|
-
enum:
|
|
671
|
+
enum:
|
|
672
|
+
- registered
|
|
673
|
+
- updated
|
|
623
674
|
registeredAt:
|
|
624
675
|
type: string
|
|
625
676
|
format: date-time
|
|
@@ -627,18 +678,24 @@ components:
|
|
|
627
678
|
type: string
|
|
628
679
|
format: date-time
|
|
629
680
|
tier:
|
|
630
|
-
$ref:
|
|
681
|
+
$ref: "#/components/schemas/TrustTier"
|
|
631
682
|
peers:
|
|
632
683
|
type: array
|
|
633
|
-
description:
|
|
684
|
+
description: List of known UADP node URIs for P2P gossip (present if `gossip=true` was sent)
|
|
634
685
|
items:
|
|
635
686
|
type: string
|
|
636
687
|
format: uri
|
|
637
|
-
|
|
638
|
-
# ── AGENT RECORD ───────────────────────────
|
|
639
688
|
AgentRecord:
|
|
640
689
|
type: object
|
|
641
|
-
required:
|
|
690
|
+
required:
|
|
691
|
+
- agentId
|
|
692
|
+
- name
|
|
693
|
+
- version
|
|
694
|
+
- status
|
|
695
|
+
- endpoint
|
|
696
|
+
- tier
|
|
697
|
+
- registeredAt
|
|
698
|
+
- lastSeen
|
|
642
699
|
properties:
|
|
643
700
|
agentId:
|
|
644
701
|
type: string
|
|
@@ -664,9 +721,14 @@ components:
|
|
|
664
721
|
type: string
|
|
665
722
|
status:
|
|
666
723
|
type: string
|
|
667
|
-
enum:
|
|
724
|
+
enum:
|
|
725
|
+
- active
|
|
726
|
+
- deprecated
|
|
727
|
+
- revoked
|
|
728
|
+
- degraded
|
|
729
|
+
- maintenance
|
|
668
730
|
tier:
|
|
669
|
-
$ref:
|
|
731
|
+
$ref: "#/components/schemas/TrustTier"
|
|
670
732
|
endpoint:
|
|
671
733
|
type: string
|
|
672
734
|
format: uri
|
|
@@ -690,18 +752,18 @@ components:
|
|
|
690
752
|
description: Agent metadata including x-signature if present
|
|
691
753
|
properties:
|
|
692
754
|
x-signature:
|
|
693
|
-
$ref:
|
|
755
|
+
$ref: "#/components/schemas/XSignature"
|
|
694
756
|
additionalProperties: true
|
|
695
|
-
|
|
696
|
-
# ── DISCOVERY ──────────────────────────────
|
|
697
757
|
DiscoveryResponse:
|
|
698
758
|
type: object
|
|
699
|
-
required:
|
|
759
|
+
required:
|
|
760
|
+
- agents
|
|
761
|
+
- total
|
|
700
762
|
properties:
|
|
701
763
|
agents:
|
|
702
764
|
type: array
|
|
703
765
|
items:
|
|
704
|
-
$ref:
|
|
766
|
+
$ref: "#/components/schemas/AgentRecord"
|
|
705
767
|
total:
|
|
706
768
|
type: integer
|
|
707
769
|
nextCursor:
|
|
@@ -710,15 +772,19 @@ components:
|
|
|
710
772
|
source:
|
|
711
773
|
type: string
|
|
712
774
|
description: Discovery source identifier (e.g. local_uadp, agent-mesh, fallback)
|
|
713
|
-
|
|
714
|
-
# ── HEALTH ─────────────────────────────────
|
|
715
775
|
HealthResponse:
|
|
716
776
|
type: object
|
|
717
|
-
required:
|
|
777
|
+
required:
|
|
778
|
+
- status
|
|
779
|
+
- timestamp
|
|
780
|
+
- version
|
|
718
781
|
properties:
|
|
719
782
|
status:
|
|
720
783
|
type: string
|
|
721
|
-
enum:
|
|
784
|
+
enum:
|
|
785
|
+
- healthy
|
|
786
|
+
- degraded
|
|
787
|
+
- unhealthy
|
|
722
788
|
timestamp:
|
|
723
789
|
type: string
|
|
724
790
|
format: date-time
|
|
@@ -743,11 +809,11 @@ components:
|
|
|
743
809
|
type: integer
|
|
744
810
|
totalCapabilities:
|
|
745
811
|
type: integer
|
|
746
|
-
|
|
747
|
-
# ── ERRORS ─────────────────────────────────
|
|
748
812
|
Error:
|
|
749
813
|
type: object
|
|
750
|
-
required:
|
|
814
|
+
required:
|
|
815
|
+
- error
|
|
816
|
+
- message
|
|
751
817
|
properties:
|
|
752
818
|
error:
|
|
753
819
|
type: string
|
|
@@ -759,29 +825,41 @@ components:
|
|
|
759
825
|
trace_id:
|
|
760
826
|
type: string
|
|
761
827
|
format: uuid
|
|
762
|
-
|
|
763
828
|
responses:
|
|
764
829
|
BadRequest:
|
|
765
830
|
description: Bad request — invalid input
|
|
766
831
|
content:
|
|
767
832
|
application/json:
|
|
768
833
|
schema:
|
|
769
|
-
$ref:
|
|
834
|
+
$ref: "#/components/schemas/Error"
|
|
770
835
|
Unauthorized:
|
|
771
836
|
description: Unauthorized — missing or invalid authentication
|
|
772
837
|
content:
|
|
773
838
|
application/json:
|
|
774
839
|
schema:
|
|
775
|
-
$ref:
|
|
840
|
+
$ref: "#/components/schemas/Error"
|
|
776
841
|
NotFound:
|
|
777
842
|
description: Resource not found
|
|
778
843
|
content:
|
|
779
844
|
application/json:
|
|
780
845
|
schema:
|
|
781
|
-
$ref:
|
|
846
|
+
$ref: "#/components/schemas/Error"
|
|
782
847
|
InternalError:
|
|
783
848
|
description: Internal server error
|
|
784
849
|
content:
|
|
785
850
|
application/json:
|
|
786
851
|
schema:
|
|
787
|
-
$ref:
|
|
852
|
+
$ref: "#/components/schemas/Error"
|
|
853
|
+
x-ossa-metadata:
|
|
854
|
+
version: 0.5.0
|
|
855
|
+
compliance:
|
|
856
|
+
level: standard
|
|
857
|
+
observability:
|
|
858
|
+
tracing: true
|
|
859
|
+
metrics: true
|
|
860
|
+
logging: true
|
|
861
|
+
x-ossa:
|
|
862
|
+
version: 0.5.0
|
|
863
|
+
agent:
|
|
864
|
+
id: uadp-registry
|
|
865
|
+
type: gateway
|