@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.
Files changed (125) hide show
  1. package/.version.json +3 -3
  2. package/CHANGELOG.md +8 -8
  3. package/README.md +68 -58
  4. package/bin/postinstall +0 -0
  5. package/dist/.version.json +3 -3
  6. package/dist/adapters/claude-code/adapter.js +2 -2
  7. package/dist/adapters/docker/generators.js +19 -19
  8. package/dist/adapters/drupal/generator.js +76 -76
  9. package/dist/adapters/openai-agents/adapter.js +2 -2
  10. package/dist/cli/schema-driven/schema-loader.js +5 -5
  11. package/dist/mcp-server/__tests__/mcp-server.spec.js +20 -11
  12. package/dist/mcp-server/index.js +0 -0
  13. package/dist/package.json +24 -11
  14. package/dist/services/export/langchain/langchain-exporter.js +2 -2
  15. package/dist/services/export/langchain/memory-generator.js +2 -2
  16. package/dist/services/export/testing/test-generator.js +1 -1
  17. package/dist/services/taxonomy-service.d.ts +3 -3
  18. package/dist/skills/test-skill/package.json +1 -1
  19. package/dist/spec/extensions/role-manifest.md +188 -0
  20. package/dist/spec/v0.4/extensions/mcp/README.md +1 -1
  21. package/dist/spec/v0.5/agent.schema.json +2 -1
  22. package/dist/spec/v0.5/extensions/mcp/README.md +1 -1
  23. package/dist/spec/v0.5/role.schema.json +268 -0
  24. package/dist/types/index.d.ts +2 -0
  25. package/dist/types/index.js +2 -0
  26. package/dist/types/role.d.ts +126 -0
  27. package/dist/types/role.js +38 -0
  28. package/dist/validation/validator.js +1 -1
  29. package/examples/agents/01-customer-support-bot/agent.ossa.yaml +24 -31
  30. package/examples/agents/05-sales-assistant/agent.ossa.yaml +35 -23
  31. package/examples/agents/07-research-assistant/agent.ossa.yaml +27 -21
  32. package/examples/agents/10-meeting-assistant/agent.ossa.yaml +27 -35
  33. package/examples/agents/security-audit-agent.ossa.yaml +234 -0
  34. package/examples/agentscope/react-assistant/agent.ossa.yaml +36 -32
  35. package/examples/drupal/content-moderator.ossa.yaml +2 -2
  36. package/examples/drupal/drupal-contributor.ossa.yaml +247 -0
  37. package/examples/export/langchain/production-agent-with-memory/README.md +1 -1
  38. package/examples/export/langchain/production-agent-with-memory/agent.ossa.yaml +13 -23
  39. package/examples/export/langchain/production-agent-with-streaming/agent.ossa.yaml +1 -15
  40. package/examples/export/langchain/production-agent-with-tools/agent.ossa.yaml +28 -29
  41. package/examples/getting-started/01-minimal-agent.ossa.yaml +1 -1
  42. package/examples/getting-started/02-agent-with-tools.ossa.yaml +1 -1
  43. package/examples/getting-started/03-agent-with-safety.ossa.yaml +1 -1
  44. package/examples/getting-started/04-agent-with-messaging.ossa.yaml +1 -1
  45. package/examples/getting-started/05-workflow-composition.ossa.yaml +1 -1
  46. package/examples/getting-started/README.md +3 -3
  47. package/examples/getting-started/hello-world-complete.ossa.yaml +1 -1
  48. package/examples/gitlab-agents/gitlab-ci-agent.ossa.yaml +221 -0
  49. package/examples/hierarchical-agent.ossa.yaml +10 -53
  50. package/examples/kagent/ossa-kagent-anthropic.ossa.yaml +2 -25
  51. package/examples/kagent/ossa-kagent-mcp-tools.ossa.yaml +2 -30
  52. package/examples/kagent/ossa-kagent-multi-tool.ossa.yaml +2 -18
  53. package/examples/kagent/ossa-kagent-poc.ossa.yaml +2 -16
  54. package/examples/pipeline-agent.ossa.yaml +3 -3
  55. package/examples/platform-specific/claude-code-subagent.yaml +1 -1
  56. package/examples/platform-specific/cursor-coding-agent.yaml +1 -1
  57. package/examples/platform-specific/warp-terminal-agent.yaml +1 -1
  58. package/examples/production-ready/01-customer-support-bot/agent.ossa.yaml +24 -31
  59. package/examples/production-ready/05-sales-assistant/agent.ossa.yaml +35 -23
  60. package/examples/production-ready/07-research-assistant/agent.ossa.yaml +27 -19
  61. package/examples/production-ready/10-meeting-assistant/agent.ossa.yaml +27 -35
  62. package/examples/reference-implementations/python-client/examples/basic_usage.py +0 -0
  63. package/examples/reference-implementations/python-client/examples/publish_agent.py +0 -0
  64. package/examples/roles/drupal-developer.role.yaml +37 -0
  65. package/examples/roles/platform-operator.role.yaml +28 -0
  66. package/examples/roles/security-auditor.role.yaml +27 -0
  67. package/examples/swarm-agent.ossa.yaml +13 -51
  68. package/examples/team-agent.ossa.yaml +12 -61
  69. package/examples/team-lead-teammate.ossa.yaml +12 -17
  70. package/openapi/agent-communication.yaml +260 -212
  71. package/openapi/agent-crud.yaml +217 -187
  72. package/openapi/agent-discovery.yaml +119 -81
  73. package/openapi/agent-identity.yaml +219 -187
  74. package/openapi/agent-taxonomy.yaml +95 -38
  75. package/openapi/agents-md-service.yaml +103 -30
  76. package/openapi/cli/openapi.yaml +147 -40
  77. package/openapi/core/ossa-core-api.openapi.yaml +327 -271
  78. package/openapi/core/ossa-registry-api.openapi.yaml +298 -235
  79. package/openapi/core/ossa-registry.openapi.yaml +299 -159
  80. package/openapi/core/unified-agent-gateway.openapi.yaml +234 -170
  81. package/openapi/daemon-api.openapi.yaml +323 -181
  82. package/openapi/dev-cli/openapi.yaml +137 -113
  83. package/openapi/github-sync.yaml +62 -19
  84. package/openapi/marketplace-plugin.openapi.yaml +539 -466
  85. package/openapi/ossa-api.openapi.yaml +354 -213
  86. package/openapi/ossa-cli-enhancements.openapi.yaml +108 -89
  87. package/openapi/ossa-cli.yaml +260 -184
  88. package/openapi/protocols/sse-streams.yaml +66 -74
  89. package/openapi/protocols/websocket-events.yaml +61 -54
  90. package/openapi/reference-implementations/aiflow-bridge-api.openapi.yaml +37 -20
  91. package/openapi/reference-implementations/compliance-agent-api.openapi.yaml +35 -23
  92. package/openapi/reference-implementations/crewai-agent-api.openapi.yaml +29 -18
  93. package/openapi/reference-implementations/critic-agent-api.openapi.yaml +45 -19
  94. package/openapi/reference-implementations/document-analyzer-api.openapi.yaml +30 -24
  95. package/openapi/reference-implementations/drupal-agent-api.openapi.yaml +101 -50
  96. package/openapi/reference-implementations/getting-started-hello-world-api.openapi.yaml +33 -22
  97. package/openapi/reference-implementations/gitlab-ml-recommender-api.openapi.yaml +20 -16
  98. package/openapi/reference-implementations/governor-agent-api.openapi.yaml +41 -23
  99. package/openapi/reference-implementations/helm-generator.openapi.yaml +88 -46
  100. package/openapi/reference-implementations/integrator-agent-api.openapi.yaml +30 -20
  101. package/openapi/reference-implementations/judge-agent-api.openapi.yaml +22 -16
  102. package/openapi/reference-implementations/k8s-troubleshooter-api.openapi.yaml +32 -18
  103. package/openapi/reference-implementations/langchain-agent-api.openapi.yaml +32 -21
  104. package/openapi/reference-implementations/monitor-agent-api.openapi.yaml +34 -21
  105. package/openapi/reference-implementations/orchestrator-agent-api.openapi.yaml +49 -27
  106. package/openapi/reference-implementations/quickstart-support-agent-api.openapi.yaml +27 -19
  107. package/openapi/reference-implementations/self-evolving-ecosystem.openapi.yaml +427 -293
  108. package/openapi/reference-implementations/worker-agent-api.openapi.yaml +34 -23
  109. package/openapi/reference-implementations/workflow-orchestrator-api.openapi.yaml +35 -21
  110. package/openapi/release-automation.openapi.yaml +47 -13
  111. package/openapi/schemas/common/agent.yaml +30 -29
  112. package/openapi/schemas/common/errors.yaml +13 -3
  113. package/openapi/schemas/common/metadata.yaml +22 -7
  114. package/openapi/schemas/common/pagination.yaml +18 -6
  115. package/openapi/schemas/common/security.yaml +13 -5
  116. package/openapi/schemas/index.yaml +49 -42
  117. package/openapi/uadp-asyncapi.yaml +4 -2
  118. package/openapi/uadp-openapi.yaml +243 -165
  119. package/openapi/version-management.openapi.yaml +142 -135
  120. package/package.json +114 -103
  121. package/spec/extensions/role-manifest.md +188 -0
  122. package/spec/v0.4/extensions/mcp/README.md +1 -1
  123. package/spec/v0.5/agent.schema.json +2 -1
  124. package/spec/v0.5/extensions/mcp/README.md +1 -1
  125. 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: [discovery]
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: "URI to look up (e.g., uadp://skills.sh/tools/linter)"
85
- example: "uadp://skills.sh/tools/linter"
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: "Optional link relation to filter by (e.g., https://openstandardagents.org/rel/manifest)"
84
+ description: Optional link relation to filter by (e.g., https://openstandardagents.org/rel/manifest)
91
85
  responses:
92
- '200':
86
+ "200":
93
87
  description: JRD Resource Descriptor
94
88
  content:
95
89
  application/jrd+json:
96
90
  schema:
97
- $ref: '#/components/schemas/WebFingerJRD'
98
- '400':
99
- $ref: '#/components/responses/BadRequest'
100
- '404':
101
- $ref: '#/components/responses/NotFound'
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: [registry]
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: '#/components/schemas/RegistrationRequest'
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: "base64encodedSignaturePayload=="
148
- publicKey: "base64encodedPublicKey=="
149
- issuer: "did:web:agents.bluefly.io:compliance-scanner"
150
- timestamp: "2026-03-02T00:00:00Z"
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: [domain::security]
153
- subdomains: [subdomain::compliance]
154
- capabilities: [audit, policy-enforcement]
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
- '201':
154
+ "201":
158
155
  description: Agent successfully registered
159
156
  content:
160
157
  application/json:
161
158
  schema:
162
- $ref: '#/components/schemas/RegistrationResponse'
163
- '400':
164
- $ref: '#/components/responses/BadRequest'
165
- '401':
166
- $ref: '#/components/responses/Unauthorized'
167
- '409':
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: '#/components/schemas/Error'
173
- '500':
174
- $ref: '#/components/responses/InternalError'
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: [registry]
181
+ tags:
182
+ - registry
182
183
  security:
183
184
  - bearerAuth: []
184
185
  parameters:
185
- - $ref: '#/components/parameters/AgentIdPath'
186
+ - $ref: "#/components/parameters/AgentIdPath"
186
187
  responses:
187
- '204':
188
+ "204":
188
189
  description: Agent successfully unregistered
189
- '401':
190
- $ref: '#/components/responses/Unauthorized'
191
- '404':
192
- $ref: '#/components/responses/NotFound'
193
- '500':
194
- $ref: '#/components/responses/InternalError'
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: [registry]
205
+ tags:
206
+ - registry
202
207
  security:
203
208
  - bearerAuth: []
204
209
  parameters:
205
- - $ref: '#/components/parameters/AgentIdPath'
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: [status]
217
+ required:
218
+ - status
213
219
  properties:
214
220
  status:
215
221
  type: string
216
- enum: [active, degraded, maintenance]
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
- '200':
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
- '404':
233
- $ref: '#/components/responses/NotFound'
234
-
235
- # ─────────────────────────────────────────────
236
- # DISCOVERY
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: [discovery]
259
+ tags:
260
+ - discovery
251
261
  parameters:
252
262
  - name: domain
253
263
  in: query
254
264
  schema:
255
265
  type: string
256
- pattern: '^domain::[a-z0-9-]+$'
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: '^subdomain::[a-z0-9-]+$'
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: '^concern::[a-z0-9-]+$'
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: [official, verified-signature, signed, community, experimental]
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: [active, deprecated, revoked]
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
- '200':
325
+ "200":
308
326
  description: Matching agents
309
327
  content:
310
328
  application/json:
311
329
  schema:
312
- $ref: '#/components/schemas/DiscoveryResponse'
313
- '400':
314
- $ref: '#/components/responses/BadRequest'
315
- '500':
316
- $ref: '#/components/responses/InternalError'
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: [discovery]
340
+ tags:
341
+ - discovery
323
342
  parameters:
324
- - $ref: '#/components/parameters/AgentIdPath'
343
+ - $ref: "#/components/parameters/AgentIdPath"
325
344
  responses:
326
- '200':
345
+ "200":
327
346
  description: Agent found
328
347
  content:
329
348
  application/json:
330
349
  schema:
331
- $ref: '#/components/schemas/AgentRecord'
332
- '404':
333
- $ref: '#/components/responses/NotFound'
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: [trust]
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: [signature]
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: '#/components/schemas/XSignature'
382
+ $ref: "#/components/schemas/XSignature"
364
383
  responses:
365
- '200':
384
+ "200":
366
385
  description: Verification result
367
386
  content:
368
387
  application/json:
369
388
  schema:
370
- $ref: '#/components/schemas/TrustVerificationResult'
371
- '400':
372
- $ref: '#/components/responses/BadRequest'
373
-
374
- # ─────────────────────────────────────────────
375
- # REVOCATION
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: [revocation, registry]
403
+ tags:
404
+ - revocation
405
+ - registry
385
406
  security:
386
407
  - bearerAuth: []
387
408
  parameters:
388
- - $ref: '#/components/parameters/AgentIdPath'
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: [reason]
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
- '200':
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: [revoked]
438
+ enum:
439
+ - revoked
417
440
  revokedAt:
418
441
  type: string
419
442
  format: date-time
420
- '401':
421
- $ref: '#/components/responses/Unauthorized'
422
- '404':
423
- $ref: '#/components/responses/NotFound'
424
-
425
- # ─────────────────────────────────────────────
426
- # HEALTH
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: [health]
455
+ tags:
456
+ - health
433
457
  responses:
434
- '200':
458
+ "200":
435
459
  description: Registry healthy
436
460
  content:
437
461
  application/json:
438
462
  schema:
439
- $ref: '#/components/schemas/HealthResponse'
440
- '503':
463
+ $ref: "#/components/schemas/HealthResponse"
464
+ "503":
441
465
  description: Registry unavailable
442
466
  content:
443
467
  application/json:
444
468
  schema:
445
- $ref: '#/components/schemas/HealthResponse'
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: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
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: [subject, links]
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: [rel, href]
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: [type, value, publicKey]
538
+ required:
539
+ - type
540
+ - value
541
+ - publicKey
514
542
  properties:
515
543
  type:
516
544
  type: string
517
- enum: [Ed25519, RSA-PSS, ECDSA, jwt, vc, did]
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: "did:web:agents.bluefly.io:my-agent"
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: [official, verified-signature, signed, community, experimental]
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: [verified, tier, agentId]
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: '#/components/schemas/TrustTier'
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: [agentId, name, version, manifest, endpoint, status]
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: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
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: '^domain::[a-z0-9-]+$'
635
+ pattern: ^domain::[a-z0-9-]+$
593
636
  subdomains:
594
637
  type: array
595
638
  items:
596
639
  type: string
597
- pattern: '^subdomain::[a-z0-9-]+$'
640
+ pattern: ^subdomain::[a-z0-9-]+$
598
641
  concerns:
599
642
  type: array
600
643
  items:
601
644
  type: string
602
- pattern: '^concern::[a-z0-9-]+$'
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: [active, degraded, maintenance]
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: [agentId, status, registeredAt, tier]
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: [registered, updated]
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: '#/components/schemas/TrustTier'
681
+ $ref: "#/components/schemas/TrustTier"
631
682
  peers:
632
683
  type: array
633
- description: "List of known UADP node URIs for P2P gossip (present if `gossip=true` was sent)"
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: [agentId, name, version, status, endpoint, tier, registeredAt, lastSeen]
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: [active, deprecated, revoked, degraded, maintenance]
724
+ enum:
725
+ - active
726
+ - deprecated
727
+ - revoked
728
+ - degraded
729
+ - maintenance
668
730
  tier:
669
- $ref: '#/components/schemas/TrustTier'
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: '#/components/schemas/XSignature'
755
+ $ref: "#/components/schemas/XSignature"
694
756
  additionalProperties: true
695
-
696
- # ── DISCOVERY ──────────────────────────────
697
757
  DiscoveryResponse:
698
758
  type: object
699
- required: [agents, total]
759
+ required:
760
+ - agents
761
+ - total
700
762
  properties:
701
763
  agents:
702
764
  type: array
703
765
  items:
704
- $ref: '#/components/schemas/AgentRecord'
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: [status, timestamp, version]
777
+ required:
778
+ - status
779
+ - timestamp
780
+ - version
718
781
  properties:
719
782
  status:
720
783
  type: string
721
- enum: [healthy, degraded, unhealthy]
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: [error, message]
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: '#/components/schemas/Error'
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: '#/components/schemas/Error'
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: '#/components/schemas/Error'
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: '#/components/schemas/Error'
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