@bluefly/openstandardagents 0.2.4

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 (371) hide show
  1. package/.env.example +41 -0
  2. package/.eslintrc.cjs +43 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +39 -0
  4. package/.github/dependabot.yml +58 -0
  5. package/.github/workflows/ci.yml +154 -0
  6. package/.github/workflows/codeql.yml +41 -0
  7. package/.github/workflows/dependabot-auto-merge.yml +28 -0
  8. package/.github/workflows/release.yml +103 -0
  9. package/.prettierignore +7 -0
  10. package/.prettierrc.json +10 -0
  11. package/.redocly.yaml +9 -0
  12. package/.releaserc.json +84 -0
  13. package/.releaserc.json.disabled +81 -0
  14. package/CHANGELOG.md +152 -0
  15. package/CONTRIBUTING.md +249 -0
  16. package/LICENSE +190 -0
  17. package/README.md +280 -0
  18. package/bin/ossa +8 -0
  19. package/bin/validate-ossa-0.2.2.ts +244 -0
  20. package/dist/di-container.d.ts +18 -0
  21. package/dist/di-container.d.ts.map +1 -0
  22. package/dist/di-container.js +43 -0
  23. package/dist/di-container.js.map +1 -0
  24. package/dist/index.d.ts +13 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +17 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/repositories/manifest.repository.d.ts +26 -0
  29. package/dist/repositories/manifest.repository.d.ts.map +1 -0
  30. package/dist/repositories/manifest.repository.js +90 -0
  31. package/dist/repositories/manifest.repository.js.map +1 -0
  32. package/dist/repositories/schema.repository.d.ts +30 -0
  33. package/dist/repositories/schema.repository.d.ts.map +1 -0
  34. package/dist/repositories/schema.repository.js +143 -0
  35. package/dist/repositories/schema.repository.js.map +1 -0
  36. package/dist/services/generation.service.d.ts +54 -0
  37. package/dist/services/generation.service.d.ts.map +1 -0
  38. package/dist/services/generation.service.js +298 -0
  39. package/dist/services/generation.service.js.map +1 -0
  40. package/dist/services/migration.service.d.ts +30 -0
  41. package/dist/services/migration.service.d.ts.map +1 -0
  42. package/dist/services/migration.service.js +231 -0
  43. package/dist/services/migration.service.js.map +1 -0
  44. package/dist/services/runtime/openai.adapter.d.ts +94 -0
  45. package/dist/services/runtime/openai.adapter.d.ts.map +1 -0
  46. package/dist/services/runtime/openai.adapter.js +209 -0
  47. package/dist/services/runtime/openai.adapter.js.map +1 -0
  48. package/dist/services/validation.service.d.ts +45 -0
  49. package/dist/services/validation.service.d.ts.map +1 -0
  50. package/dist/services/validation.service.js +362 -0
  51. package/dist/services/validation.service.js.map +1 -0
  52. package/dist/services/validators/anthropic.validator.d.ts +9 -0
  53. package/dist/services/validators/anthropic.validator.d.ts.map +1 -0
  54. package/dist/services/validators/anthropic.validator.js +105 -0
  55. package/dist/services/validators/anthropic.validator.js.map +1 -0
  56. package/dist/services/validators/autogen.validator.d.ts +9 -0
  57. package/dist/services/validators/autogen.validator.d.ts.map +1 -0
  58. package/dist/services/validators/autogen.validator.js +111 -0
  59. package/dist/services/validators/autogen.validator.js.map +1 -0
  60. package/dist/services/validators/crewai.validator.d.ts +9 -0
  61. package/dist/services/validators/crewai.validator.d.ts.map +1 -0
  62. package/dist/services/validators/crewai.validator.js +117 -0
  63. package/dist/services/validators/crewai.validator.js.map +1 -0
  64. package/dist/services/validators/cursor.validator.d.ts +9 -0
  65. package/dist/services/validators/cursor.validator.d.ts.map +1 -0
  66. package/dist/services/validators/cursor.validator.js +88 -0
  67. package/dist/services/validators/cursor.validator.js.map +1 -0
  68. package/dist/services/validators/index.d.ts +15 -0
  69. package/dist/services/validators/index.d.ts.map +1 -0
  70. package/dist/services/validators/index.js +15 -0
  71. package/dist/services/validators/index.js.map +1 -0
  72. package/dist/services/validators/langchain.validator.d.ts +9 -0
  73. package/dist/services/validators/langchain.validator.d.ts.map +1 -0
  74. package/dist/services/validators/langchain.validator.js +103 -0
  75. package/dist/services/validators/langchain.validator.js.map +1 -0
  76. package/dist/services/validators/langflow.validator.d.ts +9 -0
  77. package/dist/services/validators/langflow.validator.d.ts.map +1 -0
  78. package/dist/services/validators/langflow.validator.js +92 -0
  79. package/dist/services/validators/langflow.validator.js.map +1 -0
  80. package/dist/services/validators/langgraph.validator.d.ts +9 -0
  81. package/dist/services/validators/langgraph.validator.d.ts.map +1 -0
  82. package/dist/services/validators/langgraph.validator.js +123 -0
  83. package/dist/services/validators/langgraph.validator.js.map +1 -0
  84. package/dist/services/validators/llamaindex.validator.d.ts +9 -0
  85. package/dist/services/validators/llamaindex.validator.d.ts.map +1 -0
  86. package/dist/services/validators/llamaindex.validator.js +121 -0
  87. package/dist/services/validators/llamaindex.validator.js.map +1 -0
  88. package/dist/services/validators/openai.validator.d.ts +9 -0
  89. package/dist/services/validators/openai.validator.d.ts.map +1 -0
  90. package/dist/services/validators/openai.validator.js +126 -0
  91. package/dist/services/validators/openai.validator.js.map +1 -0
  92. package/dist/services/validators/vercel-ai.validator.d.ts +9 -0
  93. package/dist/services/validators/vercel-ai.validator.d.ts.map +1 -0
  94. package/dist/services/validators/vercel-ai.validator.js +99 -0
  95. package/dist/services/validators/vercel-ai.validator.js.map +1 -0
  96. package/dist/spec/v0.1.9/agent-autonomous-extensions.json +234 -0
  97. package/dist/spec/v0.1.9/ecosystem-compliance.json +235 -0
  98. package/dist/spec/v0.1.9/ossa-v0.1.9.schema.json +695 -0
  99. package/dist/spec/v0.1.9/ossa-v0.1.9.schema.json.backup +695 -0
  100. package/dist/spec/v0.1.9/reasoning-compliance.json +654 -0
  101. package/dist/spec/v0.2.2/kagent-enhancements.json +395 -0
  102. package/dist/spec/v0.2.2/ossa-0.2.2.schema.json +906 -0
  103. package/dist/spec/v0.2.2/ossa-0.2.2.yaml +448 -0
  104. package/dist/spec/v0.2.2/ossa-reasoning-compliance-1.0.schema.json +424 -0
  105. package/dist/spec/v0.2.3/CHANGELOG.md +176 -0
  106. package/dist/spec/v0.2.3/README.md +154 -0
  107. package/dist/spec/v0.2.3/migrations/v0.2.2-to-v0.2.3.md +343 -0
  108. package/dist/spec/v0.2.3/ossa-0.2.3.schema.json +1397 -0
  109. package/dist/spec/v0.2.3/ossa-0.2.3.yaml +448 -0
  110. package/dist/spec/v0.2.4-dev/CHANGELOG.md +403 -0
  111. package/dist/spec/v0.2.4-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
  112. package/dist/spec/v0.2.4-dev/ossa-0.2.4-dev.schema.json +1696 -0
  113. package/dist/spec/v0.2.4-dev/ossa-0.2.4-dev.yaml +581 -0
  114. package/dist/spec/v0.2.5-dev/CHANGELOG.md +171 -0
  115. package/dist/spec/v0.2.5-dev/examples/customer-support-graph.ossa.yaml +362 -0
  116. package/dist/spec/v0.2.5-dev/examples/parallel-processors.ossa.yaml +464 -0
  117. package/dist/spec/v0.2.5-dev/examples/research-team.ossa.yaml +440 -0
  118. package/dist/spec/v0.2.5-dev/migrations/v0.2.4-to-v0.2.5.md +317 -0
  119. package/dist/spec/v0.2.5-dev/ossa-0.2.5-dev.schema.json +1732 -0
  120. package/dist/spec/v0.2.5-dev/ossa-0.2.5-dev.yaml +409 -0
  121. package/dist/types/index.d.ts +178 -0
  122. package/dist/types/index.d.ts.map +1 -0
  123. package/dist/types/index.js +6 -0
  124. package/dist/types/index.js.map +1 -0
  125. package/dist/types/openapi-extensions.d.ts +164 -0
  126. package/dist/types/openapi-extensions.d.ts.map +1 -0
  127. package/dist/types/openapi-extensions.js +6 -0
  128. package/dist/types/openapi-extensions.js.map +1 -0
  129. package/docs/OSSA-COMPLIANT-BADGE.md +248 -0
  130. package/docs/README.md +31 -0
  131. package/docs/VERSIONING.md +284 -0
  132. package/docs/agent-openapi-spec.yml +942 -0
  133. package/docs/getting-started.md +87 -0
  134. package/docs/migration/general-agent-schema.yml +255 -0
  135. package/docs/migration/migration-manifest.json +64 -0
  136. package/docs/openapi-extensions.md +930 -0
  137. package/docs/schemas/openapi-extensions.schema.json +486 -0
  138. package/examples/adk-integration/code-review-workflow.yml +136 -0
  139. package/examples/adk-integration/customer-support.yml +263 -0
  140. package/examples/adk-integration/data-pipeline.yml +173 -0
  141. package/examples/advanced/patterns/compliance-context-production.json +53 -0
  142. package/examples/advanced/patterns/model-router.ts +274 -0
  143. package/examples/advanced/patterns/smart-model-routing.ts +248 -0
  144. package/examples/advanced/workflows/hybrid-model-strategy.yaml +232 -0
  145. package/examples/agent-manifests/critics/critic-agent.yaml +149 -0
  146. package/examples/agent-manifests/governors/governor-agent.yaml +128 -0
  147. package/examples/agent-manifests/integrators/integrator-agent.yaml +103 -0
  148. package/examples/agent-manifests/judges/judge-agent.yaml +153 -0
  149. package/examples/agent-manifests/monitors/monitor-agent.yaml +122 -0
  150. package/examples/agent-manifests/orchestrators/orchestrator-agent.yaml +247 -0
  151. package/examples/agent-manifests/sample-compliant-agent.yaml +147 -0
  152. package/examples/agent-manifests/workers/worker-agent.yaml +82 -0
  153. package/examples/anthropic/claude-assistant.ossa.json +45 -0
  154. package/examples/architecture/model-configuration/ollama-integration.ts +110 -0
  155. package/examples/autogen/multi-agent.ossa.json +37 -0
  156. package/examples/bridge-configurations.yaml +346 -0
  157. package/examples/bridges/Dockerfile.production +87 -0
  158. package/examples/bridges/__pycache__/aiflow-bridge-enhanced.cpython-313.pyc +0 -0
  159. package/examples/bridges/__pycache__/aiflow-phoenix-tracing.cpython-313.pyc +0 -0
  160. package/examples/bridges/__pycache__/test_aiflow_integration.cpython-313.pyc +0 -0
  161. package/examples/bridges/aiflow-bridge-enhanced.py +462 -0
  162. package/examples/bridges/aiflow-bridge-example.yml +310 -0
  163. package/examples/bridges/aiflow-phoenix-tracing.py +310 -0
  164. package/examples/bridges/aiflow-registration-api.openapi.yml +439 -0
  165. package/examples/bridges/k8s/configmap.yaml +121 -0
  166. package/examples/bridges/k8s/deployment-simple.yaml +34 -0
  167. package/examples/bridges/k8s/deployment.yaml +275 -0
  168. package/examples/bridges/k8s/hpa.yaml +126 -0
  169. package/examples/bridges/k8s/ingress.yaml +155 -0
  170. package/examples/bridges/kagent-bridge-example.yml +94 -0
  171. package/examples/bridges/load-tests/Dockerfile +28 -0
  172. package/examples/bridges/load-tests/k6-load-test.js +302 -0
  173. package/examples/bridges/load-tests/requirements.txt +20 -0
  174. package/examples/bridges/loadtest/k6-scenarios.js +270 -0
  175. package/examples/bridges/phase4/SLO-SLA.yaml +249 -0
  176. package/examples/bridges/phase4/chaos-tests.yaml +226 -0
  177. package/examples/bridges/requirements.txt +24 -0
  178. package/examples/bridges/test_aiflow_integration.py +341 -0
  179. package/examples/common_npm/agent-router.ossa.yaml +182 -0
  180. package/examples/common_npm/agent-router.v0.2.2.ossa.yaml +60 -0
  181. package/examples/compliance-agent.yml +155 -0
  182. package/examples/crewai/research-team.ossa.json +36 -0
  183. package/examples/cursor/code-review-agent.ossa.json +47 -0
  184. package/examples/drupal/gitlab-ml-recommender.ossa.yaml +609 -0
  185. package/examples/drupal/gitlab-ml-recommender.v0.2.2.ossa.yaml +68 -0
  186. package/examples/enterprise/agent.yml +452 -0
  187. package/examples/extensions/drupal-v1.yml +266 -0
  188. package/examples/extensions/kagent-v1.yml +167 -0
  189. package/examples/getting-started/hello-world-complete.ossa.yaml +266 -0
  190. package/examples/integration-patterns/agent-to-agent-orchestration.ossa.yaml +376 -0
  191. package/examples/kagent/README.md +31 -0
  192. package/examples/kagent/compliance-validator.ossa.yaml +111 -0
  193. package/examples/kagent/cost-optimizer.ossa.yaml +93 -0
  194. package/examples/kagent/documentation-agent.ossa.yaml +91 -0
  195. package/examples/kagent/k8s-troubleshooter-v1.ossa.yaml +269 -0
  196. package/examples/kagent/k8s-troubleshooter-v1.v0.2.2.ossa.yaml +106 -0
  197. package/examples/kagent/k8s-troubleshooter.ossa.yaml +257 -0
  198. package/examples/kagent/security-scanner.ossa.yaml +140 -0
  199. package/examples/langchain/chain-agent.ossa.json +42 -0
  200. package/examples/langflow/workflow-agent.ossa.json +39 -0
  201. package/examples/langgraph/state-machine-agent.ossa.json +59 -0
  202. package/examples/llamaindex/rag-agent.ossa.json +41 -0
  203. package/examples/migration-guides/from-langchain-to-ossa.yaml +309 -0
  204. package/examples/minimal/agent.yml +152 -0
  205. package/examples/minimal/openapi.yaml +95 -0
  206. package/examples/openai/swarm-agent.ossa.json +59 -0
  207. package/examples/openapi-extensions/README.md +87 -0
  208. package/examples/openapi-extensions/minimal-agent-api.openapi.yml +288 -0
  209. package/examples/openapi-extensions/orchestrator-agent-api.openapi.yml +633 -0
  210. package/examples/openapi-extensions/worker-agent-api.openapi.yml +533 -0
  211. package/examples/production/agent.yml +713 -0
  212. package/examples/production/document-analyzer-openai.yml +134 -0
  213. package/examples/quickstart/support-agent.ossa.yaml +59 -0
  214. package/examples/service-registry-usage.ts +423 -0
  215. package/examples/spec-examples/audit-agent.yml +147 -0
  216. package/examples/spec-examples/chat-agent.yml +189 -0
  217. package/examples/spec-examples/compliance-agent.yml +204 -0
  218. package/examples/spec-examples/data-processing-agent.yml +132 -0
  219. package/examples/spec-examples/development-agent.yml +138 -0
  220. package/examples/spec-examples/edge-agent.yml +101 -0
  221. package/examples/spec-examples/integration-agent.yml +129 -0
  222. package/examples/spec-examples/monitoring-agent.yml +130 -0
  223. package/examples/spec-examples/serverless-agent.yml +82 -0
  224. package/examples/spec-examples/workflow-agent.yml +223 -0
  225. package/examples/templates/ossa-compliance.yaml +56 -0
  226. package/examples/typescript/advanced/demo-registry.ts +168 -0
  227. package/examples/typescript/mcpb-agent-example.ts +358 -0
  228. package/examples/vercel/edge-agent.ossa.json +43 -0
  229. package/infrastructure/docker-compose.yml +33 -0
  230. package/junit.xml +1 -0
  231. package/openapi/drupal-agent-api.openapi.yaml +348 -0
  232. package/openapi/gitlab-orchestrator.openapi.yaml +330 -0
  233. package/openapi/helm-generator.openapi.yaml +389 -0
  234. package/openapi/ossa-core-api.openapi.yaml +1448 -0
  235. package/openapi/ossa-registry-api.openapi.yaml +980 -0
  236. package/openapi/ossa-registry.openapi.yaml +782 -0
  237. package/openapi/self-evolving-ecosystem.openapi.yaml +1530 -0
  238. package/openapi/unified-agent-gateway.openapi.yaml +833 -0
  239. package/ossa-website-swarm-tasks.json +105 -0
  240. package/package.json +132 -0
  241. package/release.config.js +64 -0
  242. package/spec/v0.1.9/agent-autonomous-extensions.json +234 -0
  243. package/spec/v0.1.9/ecosystem-compliance.json +235 -0
  244. package/spec/v0.1.9/ossa-v0.1.9.schema.json +695 -0
  245. package/spec/v0.1.9/ossa-v0.1.9.schema.json.backup +695 -0
  246. package/spec/v0.1.9/reasoning-compliance.json +654 -0
  247. package/spec/v0.2.2/kagent-enhancements.json +395 -0
  248. package/spec/v0.2.2/ossa-0.2.2.schema.json +906 -0
  249. package/spec/v0.2.2/ossa-0.2.2.yaml +448 -0
  250. package/spec/v0.2.2/ossa-reasoning-compliance-1.0.schema.json +424 -0
  251. package/spec/v0.2.3/CHANGELOG.md +176 -0
  252. package/spec/v0.2.3/README.md +154 -0
  253. package/spec/v0.2.3/migrations/v0.2.2-to-v0.2.3.md +343 -0
  254. package/spec/v0.2.3/ossa-0.2.3.schema.json +1397 -0
  255. package/spec/v0.2.3/ossa-0.2.3.yaml +448 -0
  256. package/spec/v0.2.4-dev/CHANGELOG.md +403 -0
  257. package/spec/v0.2.4-dev/migrations/v0.2.3-to-v0.2.4.md +599 -0
  258. package/spec/v0.2.4-dev/ossa-0.2.4-dev.schema.json +1696 -0
  259. package/spec/v0.2.4-dev/ossa-0.2.4-dev.yaml +581 -0
  260. package/spec/v0.2.5-dev/CHANGELOG.md +171 -0
  261. package/spec/v0.2.5-dev/examples/customer-support-graph.ossa.yaml +362 -0
  262. package/spec/v0.2.5-dev/examples/parallel-processors.ossa.yaml +464 -0
  263. package/spec/v0.2.5-dev/examples/research-team.ossa.yaml +440 -0
  264. package/spec/v0.2.5-dev/migrations/v0.2.4-to-v0.2.5.md +317 -0
  265. package/spec/v0.2.5-dev/ossa-0.2.5-dev.schema.json +1732 -0
  266. package/spec/v0.2.5-dev/ossa-0.2.5-dev.yaml +409 -0
  267. package/test-results.xml +1 -0
  268. package/website/.lighthouserc.js +20 -0
  269. package/website/.prettierrc +10 -0
  270. package/website/Dockerfile +17 -0
  271. package/website/app/about/page.tsx +295 -0
  272. package/website/app/api/validate/route.ts +88 -0
  273. package/website/app/blog/[slug]/page.tsx +167 -0
  274. package/website/app/blog/page.tsx +162 -0
  275. package/website/app/docs/[[...slug]]/page.tsx +349 -0
  276. package/website/app/docs/core-concepts/project-structure/page.tsx +349 -0
  277. package/website/app/ecosystem/page.tsx +375 -0
  278. package/website/app/examples/page.tsx +123 -0
  279. package/website/app/globals.css +108 -0
  280. package/website/app/layout.tsx +106 -0
  281. package/website/app/page.tsx +409 -0
  282. package/website/app/playground/page.tsx +507 -0
  283. package/website/app/robots.ts +19 -0
  284. package/website/app/rss.xml/route.ts +74 -0
  285. package/website/app/schema/page.tsx +970 -0
  286. package/website/app/sitemap.ts +56 -0
  287. package/website/app/specification/page.tsx +211 -0
  288. package/website/components/InstallCommand.tsx +96 -0
  289. package/website/components/Logo.tsx +24 -0
  290. package/website/components/StructuredData.tsx +65 -0
  291. package/website/components/docs/DocsSearch.tsx +104 -0
  292. package/website/components/docs/DocsSidebar.tsx +118 -0
  293. package/website/components/docs/MarkdownContent.tsx +183 -0
  294. package/website/components/docs/VersionSelector.tsx +49 -0
  295. package/website/components/examples/ExamplesViewer.tsx +293 -0
  296. package/website/components/layout/Footer.tsx +111 -0
  297. package/website/components/layout/Header.tsx +170 -0
  298. package/website/components/schema/SchemaExplorer.tsx +213 -0
  299. package/website/content/blog/OpenAPI-AI-Agents-Standard.md +285 -0
  300. package/website/content/blog/Why-Formal-Standards-Matter-Now.md +209 -0
  301. package/website/content/blog/introducing-ossa-framework.md +328 -0
  302. package/website/content/blog/ossa-production-results.md +279 -0
  303. package/website/content/blog/welcome-to-ossa.md +43 -0
  304. package/website/content/blog/why-ai-agents-need-open-standard.md +98 -0
  305. package/website/content/docs/00-HOME.md +160 -0
  306. package/website/content/docs/AIFlow-Framework-Integration-with-OSSA.md +107 -0
  307. package/website/content/docs/OpenAPI-Extensions.md +498 -0
  308. package/website/content/docs/architecture/execution-flow.md +335 -0
  309. package/website/content/docs/architecture/multi-agent-systems.md +737 -0
  310. package/website/content/docs/architecture/overview.md +121 -0
  311. package/website/content/docs/architecture/stack-integration.md +461 -0
  312. package/website/content/docs/changelog.md +246 -0
  313. package/website/content/docs/contributing.md +599 -0
  314. package/website/content/docs/core-concepts/project-structure.md +348 -0
  315. package/website/content/docs/ecosystem/framework-support.md +821 -0
  316. package/website/content/docs/ecosystem/overview.md +366 -0
  317. package/website/content/docs/examples/Migration-Guides.md +214 -0
  318. package/website/content/docs/examples.md +71 -0
  319. package/website/content/docs/for-audiences/Enterprises.md +256 -0
  320. package/website/content/docs/for-audiences/Students-Researchers.md +122 -0
  321. package/website/content/docs/for-audiences/architects.md +224 -0
  322. package/website/content/docs/for-audiences/developers.md +220 -0
  323. package/website/content/docs/getting-started/5-minute-overview.md +85 -0
  324. package/website/content/docs/getting-started/Hello-World.md +184 -0
  325. package/website/content/docs/getting-started/first-agent.md +196 -0
  326. package/website/content/docs/getting-started/installation.md +155 -0
  327. package/website/content/docs/getting-started/running-agents.md +107 -0
  328. package/website/content/docs/integrations/aiflow.md +104 -0
  329. package/website/content/docs/integrations/drupal.md +105 -0
  330. package/website/content/docs/migration-guides/00-index.md +76 -0
  331. package/website/content/docs/migration-guides/README.md +133 -0
  332. package/website/content/docs/migration-guides/anthropic-mcp-to-ossa.md +1750 -0
  333. package/website/content/docs/migration-guides/crewai-to-ossa.md +274 -0
  334. package/website/content/docs/migration-guides/drupal-eca-to-ossa.md +2017 -0
  335. package/website/content/docs/migration-guides/index.md +133 -0
  336. package/website/content/docs/migration-guides/langchain-to-ossa.md +1714 -0
  337. package/website/content/docs/migration-guides/langflow-to-ossa.md +2075 -0
  338. package/website/content/docs/migration-guides/openai-to-ossa.md +1202 -0
  339. package/website/content/docs/openapi-extensions/examples.md +550 -0
  340. package/website/content/docs/openapi-extensions/index.md +495 -0
  341. package/website/content/docs/openapi-extensions/operation-extensions.md +398 -0
  342. package/website/content/docs/openapi-extensions/root-extensions.md +364 -0
  343. package/website/content/docs/pre-release/index.md +175 -0
  344. package/website/content/docs/quick-reference.md +17 -0
  345. package/website/content/docs/schema-reference/agent-spec.md +406 -0
  346. package/website/content/docs/schema-reference/autonomy.md +568 -0
  347. package/website/content/docs/schema-reference/constraints.md +543 -0
  348. package/website/content/docs/schema-reference/index.md +176 -0
  349. package/website/content/docs/schema-reference/llm-config.md +445 -0
  350. package/website/content/docs/schema-reference/observability.md +654 -0
  351. package/website/content/docs/schema-reference/ossa-manifest.md +309 -0
  352. package/website/content/docs/schema-reference/taxonomy.md +509 -0
  353. package/website/content/docs/schema-reference/tools.md +628 -0
  354. package/website/content/docs/templates/blog-post.md +43 -0
  355. package/website/content/docs/use-cases/00-index.md +395 -0
  356. package/website/content/docs/use-cases/cicd-code-review.md +1236 -0
  357. package/website/content/docs/use-cases/customer-support.md +1234 -0
  358. package/website/content/docs/use-cases/enterprise-compliance.md +1208 -0
  359. package/website/content/docs/use-cases/research-multi-agent.md +1161 -0
  360. package/website/lib/version.ts +18 -0
  361. package/website/next.config.js +17 -0
  362. package/website/next.config.ts +16 -0
  363. package/website/nginx.conf +32 -0
  364. package/website/package-lock.json +9145 -0
  365. package/website/package.json +53 -0
  366. package/website/postcss.config.js +7 -0
  367. package/website/postcss.config.mjs +9 -0
  368. package/website/scripts/sync-version.js +44 -0
  369. package/website/scripts/sync-wiki.ts +261 -0
  370. package/website/tailwind.config.js +58 -0
  371. package/website/tailwind.config.ts +65 -0
@@ -0,0 +1,980 @@
1
+ openapi: 3.1.0
2
+ info:
3
+ title: OSSA Agent Registry API
4
+ version: 1.0.0
5
+ description: |
6
+ Central registry for OSSA-compliant AI agents.
7
+
8
+ Similar to Docker Hub for containers or npm for packages, the OSSA Registry provides:
9
+ - Agent discovery and search
10
+ - Version management
11
+ - Compliance certification
12
+ - Cryptographic signatures
13
+ - Usage analytics
14
+
15
+ **OpenAPI-First Architecture:**
16
+ - This spec drives all types and validation
17
+ - Zod schemas generated from this spec
18
+ - Complete CRUD operations
19
+ - Type-safe throughout
20
+ contact:
21
+ name: OSSA Registry Team
22
+ url: https://registry.openstandardagents.org
23
+ email: registry@openstandardagents.org
24
+ license:
25
+ name: Apache 2.0
26
+ url: https://www.apache.org/licenses/LICENSE-2.0.html
27
+
28
+ servers:
29
+ - url: https://registry.openstandardagents.org/api/v1
30
+ description: Production
31
+ - url: https://staging.registry.openstandardagents.org/api/v1
32
+ description: Staging
33
+ - url: http://localhost:3100/api/v1
34
+ description: Local development
35
+
36
+ tags:
37
+ - name: agents
38
+ description: Agent CRUD operations
39
+ - name: versions
40
+ description: Version management
41
+ - name: search
42
+ description: Agent discovery
43
+ - name: certification
44
+ description: Compliance certification
45
+ - name: signatures
46
+ description: Cryptographic signatures
47
+ - name: analytics
48
+ description: Usage metrics
49
+
50
+ paths:
51
+ /agents:
52
+ get:
53
+ summary: List all agents
54
+ operationId: listAgents
55
+ tags: [agents]
56
+ parameters:
57
+ - $ref: '#/components/parameters/PageParam'
58
+ - $ref: '#/components/parameters/LimitParam'
59
+ - $ref: '#/components/parameters/SortParam'
60
+ - name: namespace
61
+ in: query
62
+ schema:
63
+ type: string
64
+ description: Filter by namespace
65
+ - name: certified
66
+ in: query
67
+ schema:
68
+ type: boolean
69
+ description: Filter by certification status
70
+ - name: compliance
71
+ in: query
72
+ schema:
73
+ type: array
74
+ items:
75
+ type: string
76
+ enum: [fedramp, iso27001, soc2, hipaa]
77
+ description: Filter by compliance frameworks
78
+ responses:
79
+ '200':
80
+ description: List of agents
81
+ content:
82
+ application/json:
83
+ schema:
84
+ $ref: '#/components/schemas/AgentListResponse'
85
+ '400':
86
+ $ref: '#/components/responses/BadRequest'
87
+ '500':
88
+ $ref: '#/components/responses/InternalError'
89
+
90
+ post:
91
+ summary: Register new agent
92
+ operationId: createAgent
93
+ tags: [agents]
94
+ security:
95
+ - bearerAuth: []
96
+ requestBody:
97
+ required: true
98
+ content:
99
+ application/json:
100
+ schema:
101
+ $ref: '#/components/schemas/AgentCreateRequest'
102
+ responses:
103
+ '201':
104
+ description: Agent created
105
+ content:
106
+ application/json:
107
+ schema:
108
+ $ref: '#/components/schemas/Agent'
109
+ '400':
110
+ $ref: '#/components/responses/BadRequest'
111
+ '401':
112
+ $ref: '#/components/responses/Unauthorized'
113
+ '409':
114
+ $ref: '#/components/responses/Conflict'
115
+ '500':
116
+ $ref: '#/components/responses/InternalError'
117
+
118
+ /agents/{namespace}/{name}:
119
+ get:
120
+ summary: Get agent details
121
+ operationId: getAgent
122
+ tags: [agents]
123
+ parameters:
124
+ - $ref: '#/components/parameters/NamespaceParam'
125
+ - $ref: '#/components/parameters/NameParam'
126
+ responses:
127
+ '200':
128
+ description: Agent details
129
+ content:
130
+ application/json:
131
+ schema:
132
+ $ref: '#/components/schemas/Agent'
133
+ '404':
134
+ $ref: '#/components/responses/NotFound'
135
+ '500':
136
+ $ref: '#/components/responses/InternalError'
137
+
138
+ put:
139
+ summary: Update agent
140
+ operationId: updateAgent
141
+ tags: [agents]
142
+ security:
143
+ - bearerAuth: []
144
+ parameters:
145
+ - $ref: '#/components/parameters/NamespaceParam'
146
+ - $ref: '#/components/parameters/NameParam'
147
+ requestBody:
148
+ required: true
149
+ content:
150
+ application/json:
151
+ schema:
152
+ $ref: '#/components/schemas/AgentUpdateRequest'
153
+ responses:
154
+ '200':
155
+ description: Agent updated
156
+ content:
157
+ application/json:
158
+ schema:
159
+ $ref: '#/components/schemas/Agent'
160
+ '400':
161
+ $ref: '#/components/responses/BadRequest'
162
+ '401':
163
+ $ref: '#/components/responses/Unauthorized'
164
+ '403':
165
+ $ref: '#/components/responses/Forbidden'
166
+ '404':
167
+ $ref: '#/components/responses/NotFound'
168
+ '500':
169
+ $ref: '#/components/responses/InternalError'
170
+
171
+ delete:
172
+ summary: Delete agent
173
+ operationId: deleteAgent
174
+ tags: [agents]
175
+ security:
176
+ - bearerAuth: []
177
+ parameters:
178
+ - $ref: '#/components/parameters/NamespaceParam'
179
+ - $ref: '#/components/parameters/NameParam'
180
+ responses:
181
+ '204':
182
+ description: Agent deleted
183
+ '401':
184
+ $ref: '#/components/responses/Unauthorized'
185
+ '403':
186
+ $ref: '#/components/responses/Forbidden'
187
+ '404':
188
+ $ref: '#/components/responses/NotFound'
189
+ '500':
190
+ $ref: '#/components/responses/InternalError'
191
+
192
+ /agents/{namespace}/{name}/versions:
193
+ get:
194
+ summary: List agent versions
195
+ operationId: listVersions
196
+ tags: [versions]
197
+ parameters:
198
+ - $ref: '#/components/parameters/NamespaceParam'
199
+ - $ref: '#/components/parameters/NameParam'
200
+ - $ref: '#/components/parameters/PageParam'
201
+ - $ref: '#/components/parameters/LimitParam'
202
+ responses:
203
+ '200':
204
+ description: List of versions
205
+ content:
206
+ application/json:
207
+ schema:
208
+ $ref: '#/components/schemas/VersionListResponse'
209
+ '404':
210
+ $ref: '#/components/responses/NotFound'
211
+ '500':
212
+ $ref: '#/components/responses/InternalError'
213
+
214
+ post:
215
+ summary: Publish new version
216
+ operationId: createVersion
217
+ tags: [versions]
218
+ security:
219
+ - bearerAuth: []
220
+ parameters:
221
+ - $ref: '#/components/parameters/NamespaceParam'
222
+ - $ref: '#/components/parameters/NameParam'
223
+ requestBody:
224
+ required: true
225
+ content:
226
+ multipart/form-data:
227
+ schema:
228
+ type: object
229
+ required:
230
+ - version
231
+ - manifest
232
+ properties:
233
+ version:
234
+ type: string
235
+ pattern: '^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9]+)?$'
236
+ description: Semantic version
237
+ manifest:
238
+ type: string
239
+ format: binary
240
+ description: OSSA agent manifest (YAML/JSON)
241
+ readme:
242
+ type: string
243
+ description: Markdown documentation
244
+ signature:
245
+ type: string
246
+ format: binary
247
+ description: GPG signature
248
+ responses:
249
+ '201':
250
+ description: Version created
251
+ content:
252
+ application/json:
253
+ schema:
254
+ $ref: '#/components/schemas/Version'
255
+ '400':
256
+ $ref: '#/components/responses/BadRequest'
257
+ '401':
258
+ $ref: '#/components/responses/Unauthorized'
259
+ '403':
260
+ $ref: '#/components/responses/Forbidden'
261
+ '409':
262
+ $ref: '#/components/responses/Conflict'
263
+ '500':
264
+ $ref: '#/components/responses/InternalError'
265
+
266
+ /agents/{namespace}/{name}/versions/{version}:
267
+ get:
268
+ summary: Get version details
269
+ operationId: getVersion
270
+ tags: [versions]
271
+ parameters:
272
+ - $ref: '#/components/parameters/NamespaceParam'
273
+ - $ref: '#/components/parameters/NameParam'
274
+ - $ref: '#/components/parameters/VersionParam'
275
+ responses:
276
+ '200':
277
+ description: Version details
278
+ content:
279
+ application/json:
280
+ schema:
281
+ $ref: '#/components/schemas/Version'
282
+ '404':
283
+ $ref: '#/components/responses/NotFound'
284
+ '500':
285
+ $ref: '#/components/responses/InternalError'
286
+
287
+ delete:
288
+ summary: Unpublish version
289
+ operationId: deleteVersion
290
+ tags: [versions]
291
+ security:
292
+ - bearerAuth: []
293
+ parameters:
294
+ - $ref: '#/components/parameters/NamespaceParam'
295
+ - $ref: '#/components/parameters/NameParam'
296
+ - $ref: '#/components/parameters/VersionParam'
297
+ responses:
298
+ '204':
299
+ description: Version deleted
300
+ '401':
301
+ $ref: '#/components/responses/Unauthorized'
302
+ '403':
303
+ $ref: '#/components/responses/Forbidden'
304
+ '404':
305
+ $ref: '#/components/responses/NotFound'
306
+ '500':
307
+ $ref: '#/components/responses/InternalError'
308
+
309
+ /agents/{namespace}/{name}/versions/{version}/manifest:
310
+ get:
311
+ summary: Download manifest
312
+ operationId: downloadManifest
313
+ tags: [versions]
314
+ parameters:
315
+ - $ref: '#/components/parameters/NamespaceParam'
316
+ - $ref: '#/components/parameters/NameParam'
317
+ - $ref: '#/components/parameters/VersionParam'
318
+ responses:
319
+ '200':
320
+ description: OSSA manifest file
321
+ content:
322
+ application/x-yaml:
323
+ schema:
324
+ type: string
325
+ format: binary
326
+ application/json:
327
+ schema:
328
+ type: object
329
+ '404':
330
+ $ref: '#/components/responses/NotFound'
331
+ '500':
332
+ $ref: '#/components/responses/InternalError'
333
+
334
+ /search:
335
+ get:
336
+ summary: Search agents
337
+ operationId: searchAgents
338
+ tags: [search]
339
+ parameters:
340
+ - name: q
341
+ in: query
342
+ required: true
343
+ schema:
344
+ type: string
345
+ description: Search query
346
+ - $ref: '#/components/parameters/PageParam'
347
+ - $ref: '#/components/parameters/LimitParam'
348
+ - name: filters
349
+ in: query
350
+ schema:
351
+ type: object
352
+ properties:
353
+ certified:
354
+ type: boolean
355
+ compliance:
356
+ type: array
357
+ items:
358
+ type: string
359
+ tags:
360
+ type: array
361
+ items:
362
+ type: string
363
+ responses:
364
+ '200':
365
+ description: Search results
366
+ content:
367
+ application/json:
368
+ schema:
369
+ $ref: '#/components/schemas/SearchResponse'
370
+ '400':
371
+ $ref: '#/components/responses/BadRequest'
372
+ '500':
373
+ $ref: '#/components/responses/InternalError'
374
+
375
+ /certifications:
376
+ get:
377
+ summary: List all certifications
378
+ operationId: listCertifications
379
+ tags: [certification]
380
+ parameters:
381
+ - $ref: '#/components/parameters/PageParam'
382
+ - $ref: '#/components/parameters/LimitParam'
383
+ responses:
384
+ '200':
385
+ description: List of certifications
386
+ content:
387
+ application/json:
388
+ schema:
389
+ $ref: '#/components/schemas/CertificationListResponse'
390
+ '500':
391
+ $ref: '#/components/responses/InternalError'
392
+
393
+ /certifications/{namespace}/{name}/request:
394
+ post:
395
+ summary: Request certification
396
+ operationId: requestCertification
397
+ tags: [certification]
398
+ security:
399
+ - bearerAuth: []
400
+ parameters:
401
+ - $ref: '#/components/parameters/NamespaceParam'
402
+ - $ref: '#/components/parameters/NameParam'
403
+ requestBody:
404
+ required: true
405
+ content:
406
+ application/json:
407
+ schema:
408
+ $ref: '#/components/schemas/CertificationRequest'
409
+ responses:
410
+ '201':
411
+ description: Certification request created
412
+ content:
413
+ application/json:
414
+ schema:
415
+ $ref: '#/components/schemas/Certification'
416
+ '400':
417
+ $ref: '#/components/responses/BadRequest'
418
+ '401':
419
+ $ref: '#/components/responses/Unauthorized'
420
+ '404':
421
+ $ref: '#/components/responses/NotFound'
422
+ '500':
423
+ $ref: '#/components/responses/InternalError'
424
+
425
+ /analytics/{namespace}/{name}:
426
+ get:
427
+ summary: Get agent analytics
428
+ operationId: getAnalytics
429
+ tags: [analytics]
430
+ security:
431
+ - bearerAuth: []
432
+ parameters:
433
+ - $ref: '#/components/parameters/NamespaceParam'
434
+ - $ref: '#/components/parameters/NameParam'
435
+ - name: from
436
+ in: query
437
+ schema:
438
+ type: string
439
+ format: date-time
440
+ - name: to
441
+ in: query
442
+ schema:
443
+ type: string
444
+ format: date-time
445
+ responses:
446
+ '200':
447
+ description: Analytics data
448
+ content:
449
+ application/json:
450
+ schema:
451
+ $ref: '#/components/schemas/Analytics'
452
+ '401':
453
+ $ref: '#/components/responses/Unauthorized'
454
+ '403':
455
+ $ref: '#/components/responses/Forbidden'
456
+ '404':
457
+ $ref: '#/components/responses/NotFound'
458
+ '500':
459
+ $ref: '#/components/responses/InternalError'
460
+
461
+ components:
462
+ securitySchemes:
463
+ bearerAuth:
464
+ type: http
465
+ scheme: bearer
466
+ bearerFormat: JWT
467
+ description: JWT token obtained from authentication endpoint
468
+
469
+ parameters:
470
+ NamespaceParam:
471
+ name: namespace
472
+ in: path
473
+ required: true
474
+ schema:
475
+ type: string
476
+ pattern: '^[a-z0-9][a-z0-9-]*[a-z0-9]$'
477
+ description: Agent namespace (e.g., 'ossa', 'my-org')
478
+
479
+ NameParam:
480
+ name: name
481
+ in: path
482
+ required: true
483
+ schema:
484
+ type: string
485
+ pattern: '^[a-z0-9][a-z0-9-]*[a-z0-9]$'
486
+ description: Agent name
487
+
488
+ VersionParam:
489
+ name: version
490
+ in: path
491
+ required: true
492
+ schema:
493
+ type: string
494
+ pattern: '^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9]+)?$'
495
+ description: Semantic version
496
+
497
+ PageParam:
498
+ name: page
499
+ in: query
500
+ schema:
501
+ type: integer
502
+ minimum: 1
503
+ default: 1
504
+ description: Page number
505
+
506
+ LimitParam:
507
+ name: limit
508
+ in: query
509
+ schema:
510
+ type: integer
511
+ minimum: 1
512
+ maximum: 100
513
+ default: 20
514
+ description: Items per page
515
+
516
+ SortParam:
517
+ name: sort
518
+ in: query
519
+ schema:
520
+ type: string
521
+ enum: [name, downloads, updated, created]
522
+ default: downloads
523
+ description: Sort field
524
+
525
+ schemas:
526
+ Agent:
527
+ type: object
528
+ required:
529
+ - id
530
+ - namespace
531
+ - name
532
+ - description
533
+ - latest_version
534
+ - created_at
535
+ - updated_at
536
+ properties:
537
+ id:
538
+ type: string
539
+ format: uuid
540
+ description: Unique agent ID
541
+ namespace:
542
+ type: string
543
+ description: Agent namespace
544
+ name:
545
+ type: string
546
+ description: Agent name
547
+ full_name:
548
+ type: string
549
+ description: Full name (namespace/name)
550
+ description:
551
+ type: string
552
+ description: Short description
553
+ readme:
554
+ type: string
555
+ description: Full documentation (Markdown)
556
+ homepage:
557
+ type: string
558
+ format: uri
559
+ description: Homepage URL
560
+ repository:
561
+ type: string
562
+ format: uri
563
+ description: Source repository URL
564
+ latest_version:
565
+ type: string
566
+ description: Latest version number
567
+ downloads:
568
+ type: integer
569
+ description: Total downloads
570
+ stars:
571
+ type: integer
572
+ description: Star count
573
+ tags:
574
+ type: array
575
+ items:
576
+ type: string
577
+ description: Searchable tags
578
+ certified:
579
+ type: boolean
580
+ description: OSSA certification status
581
+ compliance:
582
+ type: array
583
+ items:
584
+ type: string
585
+ enum: [fedramp, iso27001, soc2, hipaa]
586
+ description: Compliance frameworks
587
+ maintainers:
588
+ type: array
589
+ items:
590
+ $ref: '#/components/schemas/Maintainer'
591
+ created_at:
592
+ type: string
593
+ format: date-time
594
+ updated_at:
595
+ type: string
596
+ format: date-time
597
+
598
+ AgentCreateRequest:
599
+ type: object
600
+ required:
601
+ - namespace
602
+ - name
603
+ - description
604
+ properties:
605
+ namespace:
606
+ type: string
607
+ pattern: '^[a-z0-9][a-z0-9-]*[a-z0-9]$'
608
+ name:
609
+ type: string
610
+ pattern: '^[a-z0-9][a-z0-9-]*[a-z0-9]$'
611
+ description:
612
+ type: string
613
+ maxLength: 500
614
+ readme:
615
+ type: string
616
+ homepage:
617
+ type: string
618
+ format: uri
619
+ repository:
620
+ type: string
621
+ format: uri
622
+ tags:
623
+ type: array
624
+ items:
625
+ type: string
626
+
627
+ AgentUpdateRequest:
628
+ type: object
629
+ properties:
630
+ description:
631
+ type: string
632
+ maxLength: 500
633
+ readme:
634
+ type: string
635
+ homepage:
636
+ type: string
637
+ format: uri
638
+ repository:
639
+ type: string
640
+ format: uri
641
+ tags:
642
+ type: array
643
+ items:
644
+ type: string
645
+
646
+ AgentListResponse:
647
+ type: object
648
+ required:
649
+ - data
650
+ - pagination
651
+ properties:
652
+ data:
653
+ type: array
654
+ items:
655
+ $ref: '#/components/schemas/Agent'
656
+ pagination:
657
+ $ref: '#/components/schemas/Pagination'
658
+
659
+ Version:
660
+ type: object
661
+ required:
662
+ - id
663
+ - version
664
+ - agent_id
665
+ - manifest_url
666
+ - created_at
667
+ properties:
668
+ id:
669
+ type: string
670
+ format: uuid
671
+ version:
672
+ type: string
673
+ description: Semantic version
674
+ agent_id:
675
+ type: string
676
+ format: uuid
677
+ manifest_url:
678
+ type: string
679
+ format: uri
680
+ description: Downloadable manifest URL
681
+ readme:
682
+ type: string
683
+ signature:
684
+ type: string
685
+ description: GPG signature
686
+ verified:
687
+ type: boolean
688
+ description: Signature verification status
689
+ downloads:
690
+ type: integer
691
+ sha256:
692
+ type: string
693
+ description: Manifest checksum
694
+ size:
695
+ type: integer
696
+ description: Manifest size in bytes
697
+ created_at:
698
+ type: string
699
+ format: date-time
700
+
701
+ VersionListResponse:
702
+ type: object
703
+ required:
704
+ - data
705
+ - pagination
706
+ properties:
707
+ data:
708
+ type: array
709
+ items:
710
+ $ref: '#/components/schemas/Version'
711
+ pagination:
712
+ $ref: '#/components/schemas/Pagination'
713
+
714
+ SearchResponse:
715
+ type: object
716
+ required:
717
+ - data
718
+ - total
719
+ - query
720
+ properties:
721
+ data:
722
+ type: array
723
+ items:
724
+ $ref: '#/components/schemas/SearchResult'
725
+ total:
726
+ type: integer
727
+ query:
728
+ type: string
729
+ pagination:
730
+ $ref: '#/components/schemas/Pagination'
731
+
732
+ SearchResult:
733
+ allOf:
734
+ - $ref: '#/components/schemas/Agent'
735
+ - type: object
736
+ properties:
737
+ score:
738
+ type: number
739
+ description: Search relevance score
740
+ highlight:
741
+ type: object
742
+ description: Highlighted matching text
743
+
744
+ Certification:
745
+ type: object
746
+ required:
747
+ - id
748
+ - agent_id
749
+ - level
750
+ - status
751
+ - requested_at
752
+ properties:
753
+ id:
754
+ type: string
755
+ format: uuid
756
+ agent_id:
757
+ type: string
758
+ format: uuid
759
+ level:
760
+ type: string
761
+ enum: [compatible, certified, enterprise]
762
+ description: |
763
+ - compatible: Basic OSSA compliance
764
+ - certified: Full audit passed
765
+ - enterprise: FedRAMP/ISO compliance
766
+ compliance_frameworks:
767
+ type: array
768
+ items:
769
+ type: string
770
+ enum: [fedramp, iso27001, soc2, hipaa]
771
+ status:
772
+ type: string
773
+ enum: [pending, in_review, approved, rejected, expired]
774
+ badge_url:
775
+ type: string
776
+ format: uri
777
+ certificate_url:
778
+ type: string
779
+ format: uri
780
+ expires_at:
781
+ type: string
782
+ format: date-time
783
+ requested_at:
784
+ type: string
785
+ format: date-time
786
+ reviewed_at:
787
+ type: string
788
+ format: date-time
789
+ notes:
790
+ type: string
791
+
792
+ CertificationRequest:
793
+ type: object
794
+ required:
795
+ - level
796
+ - version
797
+ properties:
798
+ level:
799
+ type: string
800
+ enum: [compatible, certified, enterprise]
801
+ version:
802
+ type: string
803
+ compliance_frameworks:
804
+ type: array
805
+ items:
806
+ type: string
807
+ enum: [fedramp, iso27001, soc2, hipaa]
808
+ documentation_url:
809
+ type: string
810
+ format: uri
811
+ notes:
812
+ type: string
813
+
814
+ CertificationListResponse:
815
+ type: object
816
+ required:
817
+ - data
818
+ - pagination
819
+ properties:
820
+ data:
821
+ type: array
822
+ items:
823
+ $ref: '#/components/schemas/Certification'
824
+ pagination:
825
+ $ref: '#/components/schemas/Pagination'
826
+
827
+ Analytics:
828
+ type: object
829
+ required:
830
+ - agent_id
831
+ - period
832
+ properties:
833
+ agent_id:
834
+ type: string
835
+ format: uuid
836
+ period:
837
+ type: object
838
+ properties:
839
+ from:
840
+ type: string
841
+ format: date-time
842
+ to:
843
+ type: string
844
+ format: date-time
845
+ downloads:
846
+ type: object
847
+ properties:
848
+ total:
849
+ type: integer
850
+ by_version:
851
+ type: object
852
+ additionalProperties:
853
+ type: integer
854
+ by_day:
855
+ type: array
856
+ items:
857
+ type: object
858
+ properties:
859
+ date:
860
+ type: string
861
+ format: date
862
+ count:
863
+ type: integer
864
+ geography:
865
+ type: object
866
+ additionalProperties:
867
+ type: integer
868
+ top_referrers:
869
+ type: array
870
+ items:
871
+ type: object
872
+ properties:
873
+ url:
874
+ type: string
875
+ count:
876
+ type: integer
877
+
878
+ Maintainer:
879
+ type: object
880
+ required:
881
+ - username
882
+ - role
883
+ properties:
884
+ username:
885
+ type: string
886
+ name:
887
+ type: string
888
+ email:
889
+ type: string
890
+ format: email
891
+ role:
892
+ type: string
893
+ enum: [owner, maintainer, contributor]
894
+ avatar_url:
895
+ type: string
896
+ format: uri
897
+
898
+ Pagination:
899
+ type: object
900
+ required:
901
+ - page
902
+ - limit
903
+ - total
904
+ - total_pages
905
+ properties:
906
+ page:
907
+ type: integer
908
+ minimum: 1
909
+ limit:
910
+ type: integer
911
+ minimum: 1
912
+ total:
913
+ type: integer
914
+ minimum: 0
915
+ total_pages:
916
+ type: integer
917
+ minimum: 0
918
+ has_next:
919
+ type: boolean
920
+ has_prev:
921
+ type: boolean
922
+
923
+ Error:
924
+ type: object
925
+ required:
926
+ - error
927
+ - message
928
+ properties:
929
+ error:
930
+ type: string
931
+ message:
932
+ type: string
933
+ details:
934
+ type: object
935
+ trace_id:
936
+ type: string
937
+ format: uuid
938
+
939
+ responses:
940
+ BadRequest:
941
+ description: Bad request
942
+ content:
943
+ application/json:
944
+ schema:
945
+ $ref: '#/components/schemas/Error'
946
+
947
+ Unauthorized:
948
+ description: Unauthorized
949
+ content:
950
+ application/json:
951
+ schema:
952
+ $ref: '#/components/schemas/Error'
953
+
954
+ Forbidden:
955
+ description: Forbidden
956
+ content:
957
+ application/json:
958
+ schema:
959
+ $ref: '#/components/schemas/Error'
960
+
961
+ NotFound:
962
+ description: Not found
963
+ content:
964
+ application/json:
965
+ schema:
966
+ $ref: '#/components/schemas/Error'
967
+
968
+ Conflict:
969
+ description: Conflict (duplicate)
970
+ content:
971
+ application/json:
972
+ schema:
973
+ $ref: '#/components/schemas/Error'
974
+
975
+ InternalError:
976
+ description: Internal server error
977
+ content:
978
+ application/json:
979
+ schema:
980
+ $ref: '#/components/schemas/Error'