{"openapi":"3.1.0","info":{"title":"VLSI Hub Public Discovery API","version":"1.0.0","description":"Read-only semiconductor discovery, passports and scoped compatibility. Documentation is distinct from a Hub reproduction."},"servers":[{"url":"https://hub.vlsi.kr"}],"paths":{"/api/v1/health":{"get":{"summary":"Catalog and execution availability","parameters":[],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}},"head":{"summary":"Header-only: Catalog and execution availability","parameters":[],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}}},"/api/v1/search":{"get":{"summary":"Search all five existing public Hub collections","parameters":[{"name":"q","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":160}},{"name":"type","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"page","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"license","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"language","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"stage","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"evidence","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"docs","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"sort","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"architecture","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"interface","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"process","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"domain","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}},"head":{"summary":"Header-only: Search all five existing public Hub collections","parameters":[{"name":"q","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":160}},{"name":"type","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"page","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"license","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"language","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"stage","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"evidence","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"docs","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"sort","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"architecture","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"interface","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"process","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"domain","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}}},"/api/v1/resources":{"get":{"summary":"Paginated open silicon catalog with passports","parameters":[{"name":"q","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":160}},{"name":"page","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"license","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"language","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"stage","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"evidence","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"docs","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"sort","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"architecture","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"interface","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"process","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"domain","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}},"head":{"summary":"Header-only: Paginated open silicon catalog with passports","parameters":[{"name":"q","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":160}},{"name":"page","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"license","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"language","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"stage","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"evidence","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"docs","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"sort","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"architecture","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"interface","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"process","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}},{"name":"domain","in":"query","required":false,"description":"See /api-docs for supported values. Search results are 20 records per page.","schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}}},"/api/v1/resources/{id}":{"get":{"summary":"Resource identity, original catalog fields and engineering passport","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"description":"Stable catalog slug; legacy resource identifiers are preserved."}],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}},"head":{"summary":"Header-only: Resource identity, original catalog fields and engineering passport","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"description":"Stable catalog slug; legacy resource identifiers are preserved."}],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}}},"/api/v1/resources/{id}/evidence":{"get":{"summary":"Deduplicated source references with source hashes and revisions","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"description":"Stable catalog slug; legacy resource identifiers are preserved."}],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}},"head":{"summary":"Header-only: Deduplicated source references with source hashes and revisions","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"description":"Stable catalog slug; legacy resource identifiers are preserved."}],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}}},"/api/v1/resources/{id}/runs":{"get":{"summary":"Retained runs for this catalog resource; empty means not tested","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"description":"Stable catalog slug; legacy resource identifiers are preserved."}],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}},"head":{"summary":"Header-only: Retained runs for this catalog resource; empty means not tested","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},"description":"Stable catalog slug; legacy resource identifiers are preserved."}],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}}},"/api/v1/categories":{"get":{"summary":"Existing resource types and counts","parameters":[],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}},"head":{"summary":"Header-only: Existing resource types and counts","parameters":[],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}}},"/api/v1/compatibility":{"get":{"summary":"Scoped version-aware connections; never inferred transitively","parameters":[{"name":"resource","in":"query","required":false,"description":"Optional evidence-backed relationship filter.","schema":{"type":"string","maxLength":100}},{"name":"relationship","in":"query","required":false,"description":"Optional evidence-backed relationship filter.","schema":{"type":"string","maxLength":100}},{"name":"evidence","in":"query","required":false,"description":"Optional evidence-backed relationship filter.","schema":{"type":"string","maxLength":100}},{"name":"page","in":"query","required":false,"description":"Optional evidence-backed relationship filter.","schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}},"head":{"summary":"Header-only: Scoped version-aware connections; never inferred transitively","parameters":[{"name":"resource","in":"query","required":false,"description":"Optional evidence-backed relationship filter.","schema":{"type":"string","maxLength":100}},{"name":"relationship","in":"query","required":false,"description":"Optional evidence-backed relationship filter.","schema":{"type":"string","maxLength":100}},{"name":"evidence","in":"query","required":false,"description":"Optional evidence-backed relationship filter.","schema":{"type":"string","maxLength":100}},{"name":"page","in":"query","required":false,"description":"Optional evidence-backed relationship filter.","schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"Public catalog response. Preserve evidence scope and upstream attribution.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"400":{"description":"Invalid query"},"404":{"description":"Unknown resource or endpoint"},"405":{"description":"Read-only API"},"429":{"description":"Quota reached; Retry-After: 60"},"503":{"description":"Catalog unavailable"}}}}},"components":{"schemas":{"Envelope":{"type":"object","required":["apiVersion"],"properties":{"apiVersion":{"const":"1.0"},"data":{"description":"Resource, source evidence, relationship or availability data; schema varies by endpoint."},"entries":{"type":"array","items":{"$ref":"#/components/schemas/SearchEntry"}},"pagination":{"type":"object","required":["page","pages","total","pageSize"],"properties":{"page":{"type":"integer","minimum":1},"pages":{"type":"integer","minimum":1},"total":{"type":"integer","minimum":0},"pageSize":{"const":20}}},"attribution":{"type":"object","properties":{"catalog":{"type":"string","format":"uri"},"methodology":{"type":"string","format":"uri"},"note":{"type":"string"}}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"SearchEntry":{"type":"object","required":["id","type","title","href","evidence"],"properties":{"id":{"type":"string"},"type":{"enum":["resources","specs","standards","tools","tapeout"]},"title":{"type":"string"},"description":{"type":"string"},"href":{"type":"string"},"evidence":{"type":"string"},"source":{"type":"string","format":"uri"},"date":{"type":"string"}}},"EvidenceReference":{"type":"object","required":["id","url","sourceRevision","checkedAt","sha256","locator","rights"],"properties":{"id":{"type":"string"},"url":{"type":"string","format":"uri"},"rawUrl":{"type":"string","format":"uri"},"sourceRevision":{"type":["string","null"]},"checkedAt":{"type":"string","format":"date-time"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"locator":{"type":"string"},"rights":{"enum":["reference-only","open-metadata"]},"note":{"type":"string"}}},"CompatibilityRelationship":{"type":"object","required":["id","sourceResourceId","targetResourceId","type","status","scope","limitations"],"properties":{"id":{"type":"string"},"sourceResourceId":{"type":"string"},"targetResourceId":{"type":"string"},"type":{"type":"string"},"status":{"enum":["upstream-documented","hub-reproduced","known-failure","not-tested"]},"sourceVersion":{"type":["string","null"]},"targetVersion":{"type":["string","null"]},"scope":{"type":"string"},"limitations":{"type":"array","items":{"type":"string"}},"evidence":{"oneOf":[{"$ref":"#/components/schemas/EvidenceReference"},{"type":"null"}]},"runId":{"type":["string","null"]},"knowledgeClaimId":{"type":["string","null"]}}}}}}