{
  "openapi": "3.1.0",
  "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "info": {
    "title": "mibvendor Permanently Free Public API",
    "version": "0.4.0-alpha.3",
    "description": "Permanently free, source-aware OID and bounded device-identity intelligence plus a fail-closed MIB source catalog. Direct PEN and reviewed organization-key fields avoid name-only correlation; unavailable keys stay null. The assessment endpoint accepts only four bounded identity signals, never a raw SNMP walk. There is no paid tier, billing, subscription, or paid quota upgrade. Free access is fair-use bounded, not unlimited use or an availability SLA. Raw files are served only for modules approved by file-specific or recognized pinned repository-license evidence; unapproved vendor sources remain directory-only."
  },
  "x-mibvendor-status": "public-alpha",
  "x-mibvendor-access-policy": {
    "access": "permanently-free",
    "paid_tiers": false,
    "billing": false,
    "unlimited_use": false,
    "availability_sla": false,
    "authentication": {
      "required": false,
      "optional_keys": "free-abuse-control-only"
    },
    "fair_use": {
      "rate_limit_units_per_client": 120,
      "default_request_units": 1,
      "window_seconds": 60,
      "limits_may_change": true,
      "operation_costs": { "POST /v1/device-identities:assess": 4 },
      "response_headers": ["RateLimit-Limit", "RateLimit-Remaining", "RateLimit-Reset", "Retry-After"],
      "cors_exposed_response_headers": ["Content-Disposition", "ETag", "Link", "RateLimit-Limit", "RateLimit-Remaining", "RateLimit-Reset", "Retry-After", "X-Content-SHA256", "X-MIB-SHA256"]
    },
    "caching": {
      "cache_control": true,
      "etag": true,
      "conditional_get": true,
      "cursor_pagination": true,
      "immutable_release_artifacts": true,
      "post_responses_no_store": true,
      "active_raw_revalidation": true
    }
  },
  "x-service-links": {
    "health": "https://mibvendor.io/healthz",
    "status": "https://mibvendor.io/status",
    "version": "https://mibvendor.io/version",
    "openapi": "https://mibvendor.io/openapi.json",
    "production_monitor": "https://github.com/ta2jam/mibvendor/actions/workflows/production-monitor.yml"
  },
  "servers": [{ "url": "https://mibvendor.io", "description": "Official public service" }],
  "security": [],
  "paths": {
    "/status": {
      "get": {
        "operationId": "getServiceStatus",
        "summary": "Inspect the live process self-check",
        "responses": { "200": { "description": "Current process status; this is not uptime history or an SLA", "headers": { "Cache-Control": { "$ref": "#/components/headers/NoStore" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } } }, "405": { "description": "Only GET and HEAD are allowed" } }
      },
      "head": {
        "operationId": "headServiceStatus",
        "summary": "Check service status without a response body",
        "responses": { "200": { "description": "Same status and no-store headers as GET, without a body", "headers": { "Cache-Control": { "$ref": "#/components/headers/NoStore" } } } }
      }
    },
    "/version": {
      "get": {
        "operationId": "getServiceVersion",
        "summary": "Inspect deployed code, MIB data, and identity release identifiers",
        "responses": { "200": { "description": "Deployed immutable identifiers and identity statistics", "headers": { "Cache-Control": { "$ref": "#/components/headers/NoStore" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VersionResponse" } } } }, "405": { "description": "Only GET and HEAD are allowed" } }
      },
      "head": {
        "operationId": "headServiceVersion",
        "summary": "Check version metadata without a response body",
        "responses": { "200": { "description": "Same version and no-store headers as GET, without a body", "headers": { "Cache-Control": { "$ref": "#/components/headers/NoStore" } } } }
      }
    },
    "/v1/data-release": {
      "get": {
        "operationId": "getDataRelease",
        "summary": "Inspect the active immutable data release",
        "responses": { "200": { "description": "Release identity, effective publication view, bounded source catalog, and active-public statistics; clients must revalidate before reuse", "headers": { "Cache-Control": { "$ref": "#/components/headers/NoCache" }, "ETag": { "$ref": "#/components/headers/ETag" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimitLimit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimitRemaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimitReset" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DataRelease" } } } } }
      }
    },
    "/v1/device-identities:assess": {
      "post": {
        "operationId": "assessDeviceIdentity",
        "summary": "Assess bounded SNMP identity signals without accepting or retaining a raw walk",
        "description": "Submit only the minimum identity fields. Arrays, raw SNMP walks, and extra fields are rejected; there is no serial-number field, so do not place serials in text signals. sys_descr is processed in memory and is neither echoed nor part of the response evidence.",
        "x-max-body-bytes": 16384,
        "x-rate-limit-units": 4,
        "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeviceIdentityAssessmentRequest" }, "examples": { "c9300": { "value": { "signals": { "sys_object_id": "1.3.6.1.4.1.9.1.2435", "ent_physical_model_name": "C9300-24T" } } } } } } },
        "responses": {
          "200": {
            "description": "Evidence-separated assessment; conflicts remain explicit and body-dependent results are never shared-cacheable",
            "headers": { "Cache-Control": { "$ref": "#/components/headers/NoStore" }, "RateLimit-Limit": { "$ref": "#/components/headers/RateLimitLimit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimitRemaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimitReset" } },
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/DeviceIdentityAssessmentResponse" },
                "examples": {
                  "c9300": {
                    "summary": "Exact C9300-24T assignment with direct PEN and reviewed organization key",
                    "value": {
                      "data_release": "license-signaled-2026-07-20.2",
                      "identity_release": "device-identity-2026-07-20.3",
                      "identity_publication": {
                        "identity_release": "device-identity-2026-07-20.3",
                        "identity_release_sha256": "8f00a2a9478d7876809286f1f5fd3dceb62c9f638d5b5fc5e5a7718ba0d4ff00",
                        "control_revision": 1,
                        "control_sha256": "7e9bc67566b3c66d204976ab5768c144c5704bb27c75f860fa2fdd3789663737",
                        "disabled_sources": [],
                        "identity_view": "device-identity-2026-07-20.3.8f00a2a9478d.c1.7e9bc67566b3"
                      },
                      "assessment": {
                        "status": "resolved",
                        "identity_status": "exact_model",
                        "firmware_scope": "not_established",
                        "enterprise_number": 9,
                        "organization_name": "ciscoSystems",
                        "organization_key": "Q173395",
                        "organization_key_status": "reviewed",
                        "model": "C9300-24T",
                        "product_family": "Catalyst 9300",
                        "mib_identifier": "ciscoCat930024T",
                        "platform": null,
                        "confidence": "high",
                        "candidates": [
                          {
                            "identity_status": "exact_model",
                            "firmware_scope": "not_established",
                            "enterprise_number": 9,
                            "organization_name": "ciscoSystems",
                            "organization_key": "Q173395",
                            "model": "C9300-24T",
                            "product_family": "Catalyst 9300",
                            "mib_identifier": "ciscoCat930024T",
                            "platform": null,
                            "confidence": "high",
                            "source_assignment_confidence": "high",
                            "claim_scope": "device-model",
                            "match_type": "exact",
                            "evidence": [{ "type": "sys_object_id", "source_id": "cisco-products", "source_url": "https://github.com/librenms/librenms/blob/dfba713a2ffd39c2b6619cccdec016e04a06a027/mibs/cisco/CISCO-PRODUCTS-MIB", "matched_oid": "1.3.6.1.4.1.9.1.2435", "source_revision": "dfba713a2ffd39c2b6619cccdec016e04a06a027", "source_date": null, "publication_mode": "metadata-only", "raw_download": false, "signal": "sys_object_id" }]
                          },
                          {
                            "identity_status": "exact_model",
                            "firmware_scope": "not_established",
                            "enterprise_number": 9,
                            "organization_name": "ciscoSystems",
                            "organization_key": "Q173395",
                            "model": "C9300-24T",
                            "product_family": "Catalyst 9300",
                            "platform": null,
                            "confidence": "medium",
                            "source_assignment_confidence": "device-reported-reviewed-model",
                            "claim_scope": "device-reported-model",
                            "match_type": "signature",
                            "evidence": [{ "type": "device-reported-model", "source_id": null, "source_url": null, "publication_mode": null, "raw_download": false }]
                          }
                        ],
                        "conflicts": [],
                        "evidence": [
                          { "type": "iana-pen-registry", "enterprise_number": 9, "registry_status": "assigned", "source_url": "https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers" },
                          { "signal": "sys_object_id", "match_type": "exact" },
                          { "signal": "ent_physical_model_name", "match_type": "corroborated-model" }
                        ],
                        "signals_used": ["sys_object_id", "ent_physical_model_name"],
                        "identity_release": "device-identity-2026-07-20.3",
                        "identity_view": "device-identity-2026-07-20.3.8f00a2a9478d.c1.7e9bc67566b3",
                        "identity_release_sha256": "8f00a2a9478d7876809286f1f5fd3dceb62c9f638d5b5fc5e5a7718ba0d4ff00",
                        "publication_control": {
                          "identity_release": "device-identity-2026-07-20.3",
                          "identity_release_sha256": "8f00a2a9478d7876809286f1f5fd3dceb62c9f638d5b5fc5e5a7718ba0d4ff00",
                          "control_revision": 1,
                          "control_sha256": "7e9bc67566b3c66d204976ab5768c144c5704bb27c75f860fa2fdd3789663737",
                          "disabled_sources": [],
                          "identity_view": "device-identity-2026-07-20.3.8f00a2a9478d.c1.7e9bc67566b3"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/Problem" },
          "405": { "$ref": "#/components/responses/Problem" },
          "409": { "$ref": "#/components/responses/Problem" },
          "413": { "$ref": "#/components/responses/Problem" },
          "415": { "$ref": "#/components/responses/Problem" },
          "422": { "$ref": "#/components/responses/Problem" },
          "429": { "$ref": "#/components/responses/Problem" },
          "500": { "$ref": "#/components/responses/Problem" }
        }
      }
    },
    "/v1/resolve:batch": {
      "post": {
        "operationId": "resolveOidBatch",
        "summary": "Resolve numeric OIDs while preserving order, duplicates, and instance suffixes",
        "x-max-body-bytes": 65536,
        "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BatchRequest" } } } },
        "responses": {
          "200": { "description": "Per-item resolution results; body-dependent POST responses are never shared-cacheable", "headers": { "Cache-Control": { "$ref": "#/components/headers/CacheControl" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BatchResponse" } } } },
          "400": { "$ref": "#/components/responses/Problem" },
          "409": { "$ref": "#/components/responses/Problem" },
          "413": { "$ref": "#/components/responses/Problem" },
          "422": { "$ref": "#/components/responses/Problem" },
          "429": { "$ref": "#/components/responses/Problem" }
        }
      }
    },
    "/v1/search": {
      "get": {
        "operationId": "searchObjects",
        "summary": "Search by task, symbol, module, or numeric OID",
        "parameters": [{ "name": "q", "in": "query", "required": false, "schema": { "type": "string", "maxLength": 200 } }],
        "responses": {
          "200": { "description": "At most 20 deterministic matches", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SearchResponse" } } } },
          "422": { "$ref": "#/components/responses/Problem" },
          "429": { "$ref": "#/components/responses/Problem" }
        }
      }
    },
    "/v1/objects/{objectId}": {
      "get": {
        "operationId": "getObject",
        "summary": "Get structured syntax, access, status, description, relationships, and provenance",
        "parameters": [{ "$ref": "#/components/parameters/ObjectId" }],
        "responses": {
          "200": { "description": "Complete available object intelligence", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectResponse" } } } },
          "404": { "$ref": "#/components/responses/Problem" },
          "422": { "$ref": "#/components/responses/Problem" },
          "429": { "$ref": "#/components/responses/Problem" }
        }
      }
    },
    "/v1/objects/{objectId}/navigation": {
      "get": {
        "operationId": "getObjectNavigation",
        "summary": "Get known ancestors, paginated direct children, and a bounded subtree summary for one object",
        "parameters": [
          { "$ref": "#/components/parameters/ObjectId" },
          { "name": "child_cursor", "in": "query", "schema": { "type": "integer", "minimum": 0, "default": 0 } },
          { "name": "child_limit", "in": "query", "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } },
          { "name": "subtree_depth", "in": "query", "schema": { "type": "integer", "minimum": 0, "maximum": 4, "default": 2 } },
          { "name": "subtree_limit", "in": "query", "schema": { "type": "integer", "minimum": 1, "maximum": 250, "default": 100 } }
        ],
        "responses": {
          "200": { "description": "Bounded lazy-tree navigation; the complete object corpus is never embedded in the response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectNavigationResponse" } } } },
          "404": { "$ref": "#/components/responses/Problem" },
          "422": { "$ref": "#/components/responses/Problem" },
          "429": { "$ref": "#/components/responses/Problem" }
        }
      }
    },
    "/v1/modules": {
      "get": {
        "operationId": "listModules",
        "summary": "List rights-cleared MIB modules with provenance, checksums, and publication mode",
        "parameters": [
          { "name": "q", "in": "query", "schema": { "type": "string", "maxLength": 200 } },
          { "name": "publisher", "in": "query", "schema": { "type": "string", "maxLength": 64 } },
          { "name": "limit", "in": "query", "schema": { "type": "integer", "minimum": 1, "maximum": 100, "default": 50 } },
          { "name": "cursor", "in": "query", "description": "Start at 0, then pass the preceding response's non-null next_cursor unchanged. A null next_cursor marks the final page.", "schema": { "type": "integer", "minimum": 0, "default": 0 } }
        ],
        "responses": {
          "200": {
            "description": "Paginated module catalog. Follow next_cursor exactly; do not derive it from counts.",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ModuleListResponse" },
                "examples": {
                  "firstPage": {
                    "summary": "First IANA module page",
                    "value": {
                      "data_release": "license-signaled-2026-07-20.2",
                      "query": "IANA",
                      "publisher": "",
                      "cursor": 0,
                      "limit": 1,
                      "total": 22,
                      "next_cursor": 1,
                      "results": [{
                        "id": "IANA-ADDRESS-FAMILY-NUMBERS-MIB",
                        "publisher": "IANA",
                        "publication_mode": "redistributable",
                        "raw_download": true,
                        "raw_url": "/v1/modules/IANA-ADDRESS-FAMILY-NUMBERS-MIB/raw",
                        "source_url": "https://www.iana.org/assignments/ianaaddressfamilynumbers-mib/ianaaddressfamilynumbers-mib",
                        "source_revision": "retrieved 2026-07-14",
                        "source_sha256": "199cb8484daf5a99e1ca01ce7dfc169f4221d1eccdf5ce712e293786d80753fa",
                        "artifact_sha256": "199cb8484daf5a99e1ca01ce7dfc169f4221d1eccdf5ce712e293786d80753fa",
                        "revision": "2021-10-19",
                        "license": {
                          "spdx": "CC0-1.0",
                          "name": "IANA Protocol Registries CC0 1.0",
                          "url": "https://www.iana.org/help/licensing-terms",
                          "notice_required": true
                        },
                        "dependencies": ["SNMPv2-SMI", "SNMPv2-TC"],
                        "root_objects": [{
                          "id": "iana-address-family-numbers-mib--ianaaddressfamilynumbers",
                          "symbol": "ianaAddressFamilyNumbers",
                          "oid": "1.3.6.1.2.1.72",
                          "kind": "module-identity"
                        }],
                        "declared_oid_count": 1,
                        "resolved_oid_count": 1
                      }]
                    }
                  },
                  "nextPage": {
                    "summary": "Next page using the returned cursor",
                    "value": {
                      "data_release": "license-signaled-2026-07-20.2",
                      "query": "IANA",
                      "publisher": "",
                      "cursor": 1,
                      "limit": 1,
                      "total": 22,
                      "next_cursor": 2,
                      "results": [{
                        "id": "IANA-BFD-TC-STD-MIB",
                        "publisher": "IANA",
                        "publication_mode": "redistributable",
                        "raw_download": true,
                        "raw_url": "/v1/modules/IANA-BFD-TC-STD-MIB/raw",
                        "source_url": "https://www.iana.org/assignments/ianabfdtcstd-mib/ianabfdtcstd-mib",
                        "source_revision": "retrieved 2026-07-14",
                        "source_sha256": "5617e0077c1e21cce1e3fc318cd2d2d1ff49c495c7b8f405f226141f3176d02d",
                        "artifact_sha256": "5617e0077c1e21cce1e3fc318cd2d2d1ff49c495c7b8f405f226141f3176d02d",
                        "revision": "2025-11-25",
                        "license": {
                          "spdx": "CC0-1.0",
                          "name": "IANA Protocol Registries CC0 1.0",
                          "url": "https://www.iana.org/help/licensing-terms",
                          "notice_required": true
                        },
                        "dependencies": ["SNMPv2-SMI", "SNMPv2-TC"],
                        "root_objects": [{
                          "id": "iana-bfd-tc-std-mib--ianabfdtcstdmib",
                          "symbol": "ianaBfdTCStdMib",
                          "oid": "1.3.6.1.2.1.224",
                          "kind": "module-identity"
                        }],
                        "declared_oid_count": 1,
                        "resolved_oid_count": 1
                      }]
                    }
                  }
                }
              }
            }
          },
          "422": { "$ref": "#/components/responses/Problem" },
          "429": { "$ref": "#/components/responses/Problem" }
        }
      }
    },
    "/v1/modules/{moduleId}": {
      "get": {
        "operationId": "getModule",
        "summary": "Get one module's rights, source, checksums, dependency names, and raw availability",
        "parameters": [{ "$ref": "#/components/parameters/ModuleId" }],
        "responses": {
          "200": { "description": "Module metadata", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ModuleResponse" } } } },
          "404": { "$ref": "#/components/responses/Problem" },
          "429": { "$ref": "#/components/responses/Problem" }
        }
      }
    },
    "/v1/modules/{moduleId}/raw": {
      "get": {
        "operationId": "downloadRawModule",
        "summary": "Download a deterministic bundle containing the exact raw MIB, retained license or notice, and provenance when redistribution is approved",
        "parameters": [{ "$ref": "#/components/parameters/ModuleId" }],
        "responses": {
          "200": { "description": "Deterministic TAR containing the exact source MIB, retained license or generated notice, and provenance. The active unversioned route always revalidates publication controls.", "headers": { "Cache-Control": { "$ref": "#/components/headers/CacheControl" }, "ETag": { "$ref": "#/components/headers/ETag" }, "X-Content-SHA256": { "schema": { "type": "string", "pattern": "^[0-9a-f]{64}$", "description": "SHA-256 of the served TAR bytes." } }, "X-MIB-SHA256": { "schema": { "type": "string", "pattern": "^[0-9a-f]{64}$", "description": "SHA-256 of the exact MIB entry inside the TAR." } }, "Link": { "schema": { "type": "string" } } }, "content": { "application/x-tar": { "schema": { "type": "string", "format": "binary" } } } },
          "404": { "$ref": "#/components/responses/Problem" },
          "451": { "$ref": "#/components/responses/Problem" },
          "429": { "$ref": "#/components/responses/Problem" }
        }
      }
    },
    "/v1/sources": {
      "get": {
        "operationId": "listSources",
        "summary": "List reviewed source families and their fail-closed publication modes",
        "parameters": [{ "name": "mode", "in": "query", "schema": { "type": "string", "enum": ["redistributable", "metadata-only", "directory-only"] } }],
        "responses": {
          "200": { "description": "Reviewed source catalog", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SourceListResponse" } } } },
          "422": { "$ref": "#/components/responses/Problem" },
          "429": { "$ref": "#/components/responses/Problem" }
        }
      }
    },
    "/v1/sources/{sourceId}": {
      "get": {
        "operationId": "getSource",
        "summary": "Inspect one source family's publication decision and scope evidence",
        "parameters": [{ "name": "sourceId", "in": "path", "required": true, "schema": { "type": "string", "maxLength": 128 } }],
        "responses": {
          "200": { "description": "Source rights decision", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SourceResponse" } } } },
          "404": { "$ref": "#/components/responses/Problem" },
          "429": { "$ref": "#/components/responses/Problem" }
        }
      }
    },
    "/v1/enterprises/{enterpriseNumber}": {
      "get": {
        "operationId": "getEnterprise",
        "summary": "Look up an IANA Private Enterprise Number",
        "parameters": [{ "$ref": "#/components/parameters/EnterpriseNumber" }],
        "responses": {
          "200": {
            "description": "IANA registry assignment with identity caveat",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/EnterpriseResponse" },
                "examples": {
                  "netSnmp": {
                    "summary": "PEN 8072 registry assignment",
                    "value": {
                      "data_release": "license-signaled-2026-07-20.2",
                      "enterprise": {
                        "number": 8072,
                        "oid": "1.3.6.1.4.1.8072",
                        "organization": "net-snmp",
                        "registry_status": "assigned",
                        "source": {
                          "url": "https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers",
                          "updated": "2026-07-10",
                          "retrieved_at": "2026-07-14T12:45:22.136Z",
                          "sha256": "aca0fe8748ed2d6b9c8f159cd3cc672387e47d6df2bdd21d5a139341fad7eda8",
                          "rights": "CC0-1.0"
                        },
                        "caveat": "A PEN registration identifies the registry assignee; it does not prove device manufacturer, product model, ownership, or authenticity."
                      }
                    }
                  }
                }
              }
            }
          },
          "404": { "$ref": "#/components/responses/Problem" },
          "422": { "$ref": "#/components/responses/Problem" },
          "429": { "$ref": "#/components/responses/Problem" }
        }
      }
    },
    "/v1/sys-object-ids/{oid}": {
      "get": {
        "operationId": "getSysObjectId",
        "summary": "Resolve exact identity, longest arc-bound platform prefix, or PEN boundary",
        "parameters": [{ "$ref": "#/components/parameters/OidPath" }],
        "responses": {
          "200": { "description": "Resolved, enterprise-only, or not-found result in the effective publication view; clients must revalidate before reuse", "headers": { "Cache-Control": { "$ref": "#/components/headers/NoCache" }, "ETag": { "$ref": "#/components/headers/ETag" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SysObjectIdResponse" } } } },
          "422": { "$ref": "#/components/responses/Problem" },
          "429": { "$ref": "#/components/responses/Problem" }
        }
      }
    },
    "/v1/modules/{moduleId}/dependencies": {
      "get": {
        "operationId": "getModuleDependencies",
        "summary": "Get direct, transitive, missing, and cyclic dependency states",
        "parameters": [{ "$ref": "#/components/parameters/ModuleId" }],
        "responses": {
          "200": { "description": "Machine-distinguishable dependency graph", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DependenciesResponse" } } } },
          "404": { "$ref": "#/components/responses/Problem" },
          "429": { "$ref": "#/components/responses/Problem" }
        }
      }
    }
  },
  "components": {
    "headers": {
      "CacheControl": {
        "description": "Cache policy for this response; clients should reuse cacheable public results.",
        "schema": { "type": "string" }
      },
      "NoStore": {
        "description": "Sensitive or live response data is not stored by shared or private caches.",
        "schema": { "type": "string", "const": "no-store" }
      },
      "NoCache": {
        "description": "Clients may store the representation but must revalidate it so publication-control changes are not served stale.",
        "schema": { "type": "string", "const": "no-cache" }
      },
      "ETag": {
        "description": "Strong validator for the exact response bytes. Send it in If-None-Match on later GET requests.",
        "schema": { "type": "string" }
      },
      "RateLimitLimit": {
        "description": "Current fair-use unit limit for the client window; this operational value may change.",
        "schema": { "type": "integer", "minimum": 1 }
      },
      "RateLimitRemaining": {
        "description": "Fair-use units remaining in the current client window.",
        "schema": { "type": "integer", "minimum": 0 }
      },
      "RateLimitReset": {
        "description": "Unix timestamp in seconds when the current client window resets.",
        "schema": { "type": "integer", "minimum": 0 }
      },
      "RetryAfter": {
        "description": "Seconds the client should wait before retrying a rate-limited request.",
        "schema": { "type": "integer", "minimum": 0 }
      }
    },
    "parameters": {
      "ObjectId": { "name": "objectId", "in": "path", "required": true, "description": "Stable module--symbol id or an exact numeric object OID; instance suffixes are not resolved by this item endpoint.", "schema": { "type": "string", "maxLength": 512, "oneOf": [{ "pattern": "^[a-z0-9-]+--[a-z0-9-]+$" }, { "$ref": "#/components/schemas/Oid" }] } },
      "ModuleId": { "name": "moduleId", "in": "path", "required": true, "schema": { "type": "string", "minLength": 1, "maxLength": 128 } },
      "EnterpriseNumber": { "name": "enterpriseNumber", "in": "path", "required": true, "schema": { "type": "integer", "minimum": 0, "maximum": 4294967295 } },
      "OidPath": { "name": "oid", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/Oid" } }
    },
    "responses": {
      "Problem": { "description": "RFC 9457-compatible machine-distinguishable failure; Retry-After is emitted for rate-limit responses", "headers": { "RateLimit-Limit": { "$ref": "#/components/headers/RateLimitLimit" }, "RateLimit-Remaining": { "$ref": "#/components/headers/RateLimitRemaining" }, "RateLimit-Reset": { "$ref": "#/components/headers/RateLimitReset" }, "Retry-After": { "$ref": "#/components/headers/RetryAfter" } }, "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/Problem" } } } }
    },
    "schemas": {
      "DataReleaseId": { "type": "string", "const": "license-signaled-2026-07-20.2" },
      "IdentityReleaseId": { "type": "string", "const": "device-identity-2026-07-20.3" },
      "FirmwareScope": {
        "type": "string",
        "const": "not_established",
        "description": "The identity evidence establishes no firmware version, range, compatibility, or feature support; this is not an all-firmware claim."
      },
      "IdentityPublication": {
        "type": "object",
        "additionalProperties": false,
        "required": ["identity_release", "identity_release_sha256", "control_revision", "control_sha256", "disabled_sources", "identity_view"],
        "properties": {
          "identity_release": { "$ref": "#/components/schemas/IdentityReleaseId" },
          "identity_release_sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
          "control_revision": { "type": "integer", "minimum": 1 },
          "control_sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
          "disabled_sources": { "type": "array", "maxItems": 16, "uniqueItems": true, "items": { "type": "string" } },
          "identity_view": { "type": "string", "pattern": "^device-identity-2026-07-20\\.3\\.[0-9a-f]{12}\\.c[1-9][0-9]*\\.[0-9a-f]{12}$" }
        }
      },
      "IdentitySource": {
        "type": "object",
        "additionalProperties": false,
        "required": ["source_id", "enabled", "source_status", "source_type", "evidence_layer", "enterprise_number", "organization_key", "repository_revision", "repository_license_signal", "artifact_rights", "publication_mode", "raw_distribution", "source_url", "official_source_status", "official_source_url"],
        "properties": {
          "source_id": { "type": "string" },
          "enabled": { "type": "boolean" },
          "source_status": { "type": "string", "enum": ["active", "disabled-by-publication-control"] },
          "source_type": { "type": "string", "enum": ["vendor-mib", "open-source-project-definition", "open-source-project-platform-prefix", "project-fixture", "builtin"] },
          "evidence_layer": { "type": "string", "enum": ["vendor-mib-factual-metadata", "open-source-project-device-definitions", "open-source-project-platform-prefixes", "project-fixture-observation", "rights-cleared-builtin"] },
          "enterprise_number": { "type": ["integer", "null"], "minimum": 0, "maximum": 4294967295 },
          "organization_key": { "type": ["string", "null"] },
          "repository_revision": { "type": ["string", "null"] },
          "repository_license_signal": { "type": ["string", "null"], "description": "Repository-level license signal; this does not override rights found in the source artifact." },
          "artifact_rights": { "type": ["string", "null"], "description": "Rights classification of the referenced artifact itself." },
          "publication_mode": { "type": "string", "enum": ["metadata-only", "definition-only", "observation-only", "release-governed"] },
          "raw_distribution": { "type": "string", "enum": ["denied", "not-provided"] },
          "source_url": { "type": "string", "format": "uri" },
          "official_source_status": { "type": ["string", "null"] },
          "official_source_url": { "type": ["string", "null"], "format": "uri" }
        }
      },
      "StatusResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["schema_version", "status", "checked_at", "version", "commit", "data_release", "identity_release", "identity_publication", "identity_statistics", "scope", "links"],
        "properties": {
          "schema_version": { "const": 1 },
          "status": { "const": "operational" },
          "checked_at": { "type": "string", "format": "date-time" },
          "version": { "type": "string" },
          "commit": { "type": "string" },
          "data_release": { "$ref": "#/components/schemas/DataReleaseId" },
          "identity_release": { "$ref": "#/components/schemas/IdentityReleaseId" },
          "identity_publication": { "$ref": "#/components/schemas/IdentityPublication" },
          "identity_statistics": { "$ref": "#/components/schemas/DeviceIdentityStatistics" },
          "scope": { "const": "Live process self-check only; no uptime SLA or incident history." },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": ["health", "production_monitor"],
            "properties": {
              "health": { "const": "/healthz" },
              "production_monitor": { "type": "string", "format": "uri" }
            }
          }
        }
      },
      "VersionResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["schema_version", "version", "commit", "data_release", "identity_release", "identity_publication", "identity_statistics"],
        "properties": {
          "schema_version": { "const": 1 },
          "version": { "type": "string" },
          "commit": { "type": "string" },
          "data_release": { "$ref": "#/components/schemas/DataReleaseId" },
          "identity_release": { "$ref": "#/components/schemas/IdentityReleaseId" },
          "identity_publication": { "$ref": "#/components/schemas/IdentityPublication" },
          "identity_statistics": { "$ref": "#/components/schemas/DeviceIdentityStatistics" }
        }
      },
      "DeviceIdentityStatistics": {
        "type": "object",
        "additionalProperties": false,
        "required": ["identity_release", "identity_release_sha256", "identity_view", "publication_control_revision", "publication_control_sha256", "runtime_index_sha256", "sys_object_id_mappings", "claims", "exact_models", "product_families", "vendor_identifiers", "platforms", "vendor_families", "project_observation_oids", "project_definition_oids", "project_identity_oid_coverage", "project_platform_prefixes", "project_prefix_platforms", "project_prefix_enterprises", "conflicting_observation_oids", "reviewed_organization_keys", "disabled_sources"],
        "properties": {
          "identity_release": { "$ref": "#/components/schemas/IdentityReleaseId" },
          "identity_release_sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
          "identity_view": { "type": "string" },
          "publication_control_revision": { "type": "integer", "minimum": 1 },
          "publication_control_sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
          "runtime_index_sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
          "sys_object_id_mappings": { "type": "integer", "minimum": 0, "maximum": 6391, "description": "Unique exact sysObjectID keys enabled in the effective publication view." },
          "claims": { "type": "integer", "minimum": 0, "maximum": 7143 },
          "exact_models": { "type": "integer", "minimum": 0, "maximum": 306, "description": "Exact-model claims, not a count of reviewed or unconditionally resolved models: 36 reviewed vendor-MIB normalizations plus up to 270 medium-confidence open-source project definitions in the active view." },
          "product_families": { "type": "integer", "minimum": 0, "maximum": 1491 },
          "vendor_identifiers": { "type": "integer", "minimum": 0, "maximum": 4672, "description": "Exact vendor-MIB identifier assignments whose symbols may denote devices, chassis, modules, line cards, or components; these are not whole-device model claims." },
          "platforms": { "type": "integer", "minimum": 0, "maximum": 674, "description": "Platform claims include 19 exact built-in mappings and up to 655 source-defined project prefixes; this is not a hardware-model count." },
          "vendor_families": { "type": "integer", "minimum": 0, "maximum": 279 },
          "project_observation_oids": { "type": "integer", "minimum": 0, "maximum": 713, "description": "Project-fixture observations are corroboration only, not universal model assignments." },
          "project_definition_oids": { "type": "integer", "minimum": 0, "maximum": 270, "description": "Medium-confidence exact-model claims normalized from the pinned RackTables static mapping after structural, privacy, and source-conflict quarantine. Reviewed material disagreements with project observations still return ambiguous results." },
          "project_identity_oid_coverage": { "type": "integer", "minimum": 0, "maximum": 964, "description": "Unique union of active project observations and publishable open-source project definitions." },
          "project_platform_prefixes": { "type": "integer", "minimum": 0, "maximum": 655, "description": "Arc-bound LibreNMS sysObjectID prefixes that support platform-only claims; kept separate from exact mapping coverage." },
          "project_prefix_platforms": { "type": "integer", "minimum": 0, "maximum": 406 },
          "project_prefix_enterprises": { "type": "integer", "minimum": 0, "maximum": 266 },
          "conflicting_observation_oids": { "type": "integer", "minimum": 0, "maximum": 72 },
          "reviewed_organization_keys": { "type": "integer", "const": 7 },
          "disabled_sources": { "type": "integer", "minimum": 0, "maximum": 16 }
        }
      },
      "DeviceIdentitySignals": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 1,
        "maxProperties": 4,
        "properties": {
          "sys_object_id": { "type": "string", "pattern": "^\\.?[0-9]+(?:\\.[0-9]+)+$", "maxLength": 512, "description": "Numeric OID with uint32 arcs; one leading dot is accepted." },
          "ent_physical_vendor_type": { "type": "string", "pattern": "^\\.?[0-9]+(?:\\.[0-9]+)+$", "maxLength": 512, "description": "Numeric ENTITY-MIB vendor-type OID with uint32 arcs; one leading dot is accepted." },
          "ent_physical_model_name": { "type": "string", "minLength": 1, "maxLength": 256 },
          "sys_descr": { "type": "string", "minLength": 1, "maxLength": 2048, "writeOnly": true, "description": "Processed in memory for bounded platform signatures; never echoed, stored, or returned as evidence." }
        }
      },
      "DeviceIdentityAssessmentRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": ["signals"],
        "properties": {
          "data_release": { "$ref": "#/components/schemas/DataReleaseId" },
          "identity_release": { "$ref": "#/components/schemas/IdentityReleaseId" },
          "signals": { "$ref": "#/components/schemas/DeviceIdentitySignals" }
        }
      },
      "IdentityEvidence": {
        "type": "object",
        "additionalProperties": false,
        "required": ["type", "source_id", "source_url", "publication_mode", "raw_download"],
        "properties": {
          "type": { "type": "string" },
          "source_id": { "type": ["string", "null"] },
          "source_url": { "type": ["string", "null"], "format": "uri" },
          "matched_oid": { "type": ["string", "null"], "pattern": "^[0-9]+(?:\\.[0-9]+)*$", "description": "Exact OID or source-defined prefix that produced this evidence." },
          "source_revision": { "type": ["string", "null"] },
          "source_date": { "type": ["string", "null"], "format": "date" },
          "publication_mode": { "type": ["string", "null"], "enum": ["definition-only", "metadata-only", "redistributable", "registry", null] },
          "raw_download": { "const": false },
          "signal": { "type": "string", "enum": ["sys_object_id", "ent_physical_vendor_type", "ent_physical_model_name", "sys_descr"] }
        }
      },
      "DeviceIdentityCandidate": {
        "type": "object",
        "additionalProperties": false,
        "required": ["identity_status", "firmware_scope", "enterprise_number", "organization_name", "organization_key", "model", "product_family", "platform", "confidence", "source_assignment_confidence", "claim_scope", "match_type", "evidence"],
        "properties": {
          "identity_status": { "type": "string", "enum": ["exact_model", "product_family", "vendor_identifier", "platform", "vendor_only"] },
          "firmware_scope": { "$ref": "#/components/schemas/FirmwareScope" },
          "enterprise_number": { "type": ["integer", "null"], "minimum": 0, "maximum": 4294967295 },
          "organization_name": { "type": ["string", "null"] },
          "organization_key": { "type": ["string", "null"], "description": "Reviewed stable organization key when available; null is explicit and must not be inferred from a name." },
          "model": { "type": ["string", "null"] },
          "product_family": { "type": ["string", "null"] },
          "mib_identifier": { "type": ["string", "null"], "description": "Vendor MIB symbol when the source supplies one; this is not automatically a whole-device model." },
          "platform": { "type": ["string", "null"] },
          "confidence": { "type": "string", "enum": ["high", "medium", "registry"] },
          "source_assignment_confidence": { "type": "string", "enum": ["high", "medium", "project-definition", "registry", "signature", "device-reported-reviewed-model"] },
          "claim_scope": { "type": "string", "enum": ["device-model", "open-source-project-device-definition", "open-source-project-platform-prefix", "vendor-mib-object-identifier", "product-family", "agent-platform", "pen-registry-assignee", "device-reported-model"] },
          "match_type": { "type": "string", "enum": ["exact", "prefix", "signature", "registry"] },
          "evidence": { "type": "array", "maxItems": 32, "items": { "$ref": "#/components/schemas/IdentityEvidence" } }
        }
      },
      "DeviceIdentityConflict": {
        "type": "object",
        "additionalProperties": false,
        "required": ["type"],
        "properties": {
          "type": { "type": "string", "enum": ["cross_vendor", "model_mismatch", "family_mismatch"] },
          "enterprise_number": { "type": "integer", "minimum": 0, "maximum": 4294967295 },
          "enterprise_numbers": { "type": "array", "minItems": 2, "maxItems": 32, "items": { "type": "integer", "minimum": 0, "maximum": 4294967295 } },
          "models": { "type": "array", "minItems": 2, "maxItems": 32, "items": { "type": "string" } },
          "product_families": { "type": "array", "minItems": 2, "maxItems": 32, "items": { "type": "string" } }
        }
      },
      "AssessmentEvidence": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "signal": { "type": "string", "enum": ["sys_object_id", "ent_physical_vendor_type", "ent_physical_model_name", "sys_descr"] },
          "match_type": { "type": "string", "enum": ["exact", "prefix", "signature", "corroborated-model", "registry", "none"] },
          "type": { "type": "string", "enum": ["project-fixture-corroboration", "iana-pen-registry"] },
          "sys_object_id": { "$ref": "#/components/schemas/Oid" },
          "evidence_state": { "type": "string" },
          "candidate_count": { "type": "integer", "minimum": 1, "maximum": 32 },
          "corroborates_reported_model": { "type": "boolean" },
          "enterprise_number": { "type": "integer", "minimum": 0, "maximum": 4294967295 },
          "registry_status": { "type": "string", "enum": ["assigned", "reserved"] },
          "source_url": { "type": "string", "format": "uri" }
        },
        "anyOf": [{ "required": ["signal", "match_type"] }, { "required": ["type", "sys_object_id", "evidence_state", "candidate_count"] }, { "required": ["type", "enterprise_number", "registry_status", "source_url"] }]
      },
      "DeviceIdentityAssessment": {
        "type": "object",
        "additionalProperties": false,
        "required": ["status", "identity_status", "firmware_scope", "enterprise_number", "organization_name", "organization_key", "organization_key_status", "model", "product_family", "mib_identifier", "platform", "confidence", "candidates", "conflicts", "evidence", "signals_used", "identity_release", "identity_view", "identity_release_sha256", "publication_control"],
        "properties": {
          "status": { "type": "string", "enum": ["resolved", "vendor_only", "ambiguous", "not_found"] },
          "identity_status": { "type": "string", "enum": ["exact_model", "product_family", "vendor_identifier", "platform", "vendor_only", "conflicting_evidence", "unknown"] },
          "firmware_scope": { "anyOf": [{ "$ref": "#/components/schemas/FirmwareScope" }, { "type": "null" }], "description": "Null only when no singular identity result exists (unknown or conflicting evidence)." },
          "enterprise_number": { "type": ["integer", "null"], "minimum": 0, "maximum": 4294967295 },
          "organization_name": { "type": ["string", "null"] },
          "organization_key": { "type": ["string", "null"] },
          "organization_key_status": { "type": "string", "enum": ["reviewed", "not_available"] },
          "model": { "type": ["string", "null"] },
          "product_family": { "type": ["string", "null"] },
          "mib_identifier": { "type": ["string", "null"] },
          "platform": { "type": ["string", "null"] },
          "confidence": { "type": ["string", "null"], "enum": ["high", "medium", "registry", null] },
          "candidates": { "type": "array", "maxItems": 32, "items": { "$ref": "#/components/schemas/DeviceIdentityCandidate" } },
          "conflicts": { "type": "array", "maxItems": 32, "items": { "$ref": "#/components/schemas/DeviceIdentityConflict" } },
          "evidence": { "type": "array", "maxItems": 32, "items": { "$ref": "#/components/schemas/AssessmentEvidence" } },
          "signals_used": { "type": "array", "minItems": 1, "maxItems": 4, "uniqueItems": true, "items": { "type": "string", "enum": ["sys_object_id", "ent_physical_vendor_type", "ent_physical_model_name", "sys_descr"] } },
          "identity_release": { "$ref": "#/components/schemas/IdentityReleaseId" },
          "identity_view": { "type": "string" },
          "identity_release_sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
          "publication_control": { "$ref": "#/components/schemas/IdentityPublication" }
        }
      },
      "DeviceIdentityAssessmentResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["data_release", "identity_release", "identity_publication", "assessment"],
        "properties": {
          "data_release": { "$ref": "#/components/schemas/DataReleaseId" },
          "identity_release": { "$ref": "#/components/schemas/IdentityReleaseId" },
          "identity_publication": { "$ref": "#/components/schemas/IdentityPublication" },
          "assessment": { "$ref": "#/components/schemas/DeviceIdentityAssessment" }
        }
      },
      "DataRelease": {
        "type": "object",
        "additionalProperties": false,
        "required": ["data_release", "identity_release", "identity_publication", "identity_statistics", "identity_sources", "status", "production_data", "statistics", "object_count", "enterprise_count", "sys_object_id_count", "module_count", "redistributable_module_count", "directory_only_source_count", "enterprise_registry"],
        "properties": {
          "data_release": { "$ref": "#/components/schemas/DataReleaseId" },
          "identity_release": { "$ref": "#/components/schemas/IdentityReleaseId" },
          "identity_publication": { "$ref": "#/components/schemas/IdentityPublication" },
          "identity_statistics": { "$ref": "#/components/schemas/DeviceIdentityStatistics" },
          "identity_sources": { "type": "array", "minItems": 16, "maxItems": 16, "items": { "$ref": "#/components/schemas/IdentitySource" } },
          "status": { "const": "public-alpha" },
          "production_data": { "const": true },
          "statistics": { "$ref": "#/components/schemas/CorpusStatistics" },
          "object_count": { "type": "integer", "minimum": 0, "deprecated": true, "description": "Compatibility alias for statistics.oid_nodes.searchable_records; this is not the catalog OID-node count." },
          "enterprise_count": { "type": "integer", "minimum": 60000, "deprecated": true, "description": "Compatibility alias for statistics.identity.enterprise_records." },
          "sys_object_id_count": { "type": "integer", "minimum": 0, "deprecated": true, "description": "Compatibility alias for statistics.identity.sys_object_id_mappings." },
          "module_count": { "type": "integer", "minimum": 100, "deprecated": true, "description": "Compatibility alias for statistics.modules.total." },
          "redistributable_module_count": { "type": "integer", "minimum": 100, "deprecated": true, "description": "Compatibility alias for statistics.modules.publication_modes.redistributable." },
          "directory_only_source_count": { "type": "integer", "minimum": 1, "deprecated": true, "description": "Compatibility alias for statistics.sources.publication_modes.directory-only." },
          "enterprise_registry": { "$ref": "#/components/schemas/RegistrySource" }
        }
      },
      "CorpusStatistics": {
        "type": "object",
        "additionalProperties": false,
        "description": "Counts derived only from the active public release. Candidate, staged, and quarantined content is not included.",
        "required": ["scope", "modules", "oid_nodes", "definitions", "identity", "sources", "publication_controls"],
        "properties": {
          "scope": { "const": "active-public-release" },
          "modules": { "$ref": "#/components/schemas/ModuleStatistics" },
          "oid_nodes": { "$ref": "#/components/schemas/OidNodeStatistics" },
          "definitions": { "$ref": "#/components/schemas/DefinitionStatistics" },
          "identity": { "$ref": "#/components/schemas/IdentityStatistics" },
          "sources": { "$ref": "#/components/schemas/SourceStatistics" },
          "publication_controls": { "$ref": "#/components/schemas/PublicationControlStatistics" }
        }
      },
      "ModuleStatistics": {
        "type": "object",
        "additionalProperties": false,
        "required": ["total", "publication_modes"],
        "properties": {
          "total": { "type": "integer", "const": 702 },
          "publication_modes": {
            "type": "object",
            "additionalProperties": false,
            "required": ["redistributable", "metadata-only", "directory-only"],
            "properties": {
              "redistributable": { "type": "integer", "const": 702 },
              "metadata-only": { "type": "integer", "const": 0 },
              "directory-only": { "type": "integer", "const": 0 }
            }
          }
        }
      },
      "OidNodeStatistics": {
        "type": "object",
        "additionalProperties": false,
        "required": ["catalog_oid_nodes", "supplemental_legacy_records", "searchable_records"],
        "properties": {
          "catalog_oid_nodes": { "type": "integer", "const": 76606, "description": "OID-bearing records parsed from the active module catalog." },
          "supplemental_legacy_records": { "type": "integer", "const": 0, "description": "Legacy fixtures duplicated by the active catalog are removed from the searchable release." },
          "searchable_records": { "type": "integer", "const": 76606, "description": "Catalog OID nodes plus non-duplicated supplemental legacy records." }
        }
      },
      "DefinitionStatistics": {
        "type": "object",
        "additionalProperties": false,
        "required": ["textual_conventions", "notifications"],
        "properties": {
          "textual_conventions": {
            "type": "object",
            "additionalProperties": false,
            "required": ["active_module_definitions", "searchable_records"],
            "properties": {
              "active_module_definitions": { "type": "integer", "const": 4138, "description": "TEXTUAL-CONVENTION definitions in active redistributable module artifacts." },
              "searchable_records": { "type": "integer", "const": 0, "description": "Textual conventions are not yet first-class searchable records." }
            }
          },
          "notifications": {
            "type": "object",
            "additionalProperties": false,
            "required": ["catalog_oid_nodes", "supplemental_searchable_records", "searchable_records"],
            "properties": {
              "catalog_oid_nodes": { "type": "integer", "const": 1273 },
              "supplemental_searchable_records": { "type": "integer", "const": 0 },
              "searchable_records": { "type": "integer", "const": 1273 }
            }
          }
        }
      },
      "IdentityStatistics": {
        "type": "object",
        "additionalProperties": false,
        "required": ["enterprise_records", "sys_object_id_mappings", "identity_release", "exact_models", "product_families", "platforms", "project_observation_oids", "project_definition_oids", "project_identity_oid_coverage", "project_platform_prefixes", "project_prefix_platforms", "project_prefix_enterprises"],
        "properties": {
          "enterprise_records": { "type": "integer", "const": 66266, "description": "IANA PEN registry records; these are registry assignments, not device identities." },
          "sys_object_id_mappings": { "type": "integer", "minimum": 0, "maximum": 6391, "description": "Published exact sysObjectID mappings in the effective publication view. Exact OID match remains separate from claim strength." },
          "identity_release": { "$ref": "#/components/schemas/IdentityReleaseId" },
          "exact_models": { "type": "integer", "minimum": 0, "maximum": 306, "description": "Exact-model claim count; not a reviewed-model or guaranteed-resolution count." },
          "product_families": { "type": "integer", "minimum": 0, "maximum": 1491 },
          "platforms": { "type": "integer", "minimum": 0, "maximum": 674 },
          "project_observation_oids": { "type": "integer", "minimum": 0, "maximum": 713 },
          "project_definition_oids": { "type": "integer", "minimum": 0, "maximum": 270, "description": "Published medium-confidence RackTables-derived definition claims." },
          "project_identity_oid_coverage": { "type": "integer", "minimum": 0, "maximum": 964 },
          "project_platform_prefixes": { "type": "integer", "minimum": 0, "maximum": 655 },
          "project_prefix_platforms": { "type": "integer", "minimum": 0, "maximum": 406 },
          "project_prefix_enterprises": { "type": "integer", "minimum": 0, "maximum": 266 }
        }
      },
      "SourceStatistics": {
        "type": "object",
        "additionalProperties": false,
        "required": ["total", "publication_modes"],
        "properties": {
          "total": { "type": "integer", "const": 32 },
          "publication_modes": {
            "type": "object",
            "additionalProperties": false,
            "required": ["redistributable", "metadata-only", "directory-only"],
            "properties": {
              "redistributable": { "type": "integer", "const": 12 },
              "metadata-only": { "type": "integer", "const": 0 },
              "directory-only": { "type": "integer", "const": 20 }
            }
          }
        }
      },
      "PublicationControlStatistics": {
        "type": "object",
        "additionalProperties": false,
        "description": "Effective fail-closed source and module withdrawal state for this application release.",
        "required": ["event_count", "disabled_sources", "disabled_modules", "latest_event_sha256"],
        "properties": {
          "event_count": { "type": "integer", "const": 2 },
          "disabled_sources": { "type": "integer", "const": 0 },
          "disabled_modules": { "type": "integer", "const": 0 },
          "latest_event_sha256": { "type": "string", "const": "df23577bee9ae71f4aa71e951cb66c23fc3d4bf45f1f937b14dcf212afde8750", "pattern": "^[0-9a-f]{64}$" }
        }
      },
      "BatchRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": ["oids"],
        "properties": {
          "data_release": { "$ref": "#/components/schemas/DataReleaseId" },
          "oids": { "type": "array", "maxItems": 1000, "items": { "$ref": "#/components/schemas/Oid" } }
        }
      },
      "BatchResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["data_release", "results"],
        "properties": {
          "data_release": { "$ref": "#/components/schemas/DataReleaseId" },
          "results": { "type": "array", "maxItems": 1000, "items": { "$ref": "#/components/schemas/ResolveResult" } }
        }
      },
      "ResolveResult": {
        "type": "object",
        "additionalProperties": false,
        "required": ["input", "status"],
        "properties": {
          "input": { "type": "string" },
          "status": { "type": "string", "enum": ["resolved", "not_found", "invalid", "ambiguous", "unavailable_due_to_rights"] },
          "object": { "$ref": "#/components/schemas/MibObject" },
          "instance_suffix": { "type": "array", "items": { "type": "integer", "minimum": 0, "maximum": 4294967295 } }
        }
      },
      "SearchResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["data_release", "query", "results"],
        "properties": {
          "data_release": { "$ref": "#/components/schemas/DataReleaseId" },
          "query": { "type": "string" },
          "results": { "type": "array", "maxItems": 20, "items": { "$ref": "#/components/schemas/MibObject" } }
        }
      },
      "ObjectResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["data_release", "object"],
        "properties": { "data_release": { "$ref": "#/components/schemas/DataReleaseId" }, "object": { "$ref": "#/components/schemas/MibObject" } }
      },
      "ObjectNavigationResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["data_release", "navigation"],
        "properties": {
          "data_release": { "$ref": "#/components/schemas/DataReleaseId" },
          "navigation": { "$ref": "#/components/schemas/ObjectNavigation" }
        }
      },
      "ObjectNavigation": {
        "type": "object",
        "additionalProperties": false,
        "required": ["object", "ancestors", "direct_children", "subtree"],
        "properties": {
          "object": { "$ref": "#/components/schemas/MibObject" },
          "ancestors": { "type": "array", "items": { "$ref": "#/components/schemas/MibObject" } },
          "direct_children": { "$ref": "#/components/schemas/DirectChildrenPage" },
          "subtree": { "$ref": "#/components/schemas/SubtreeSummary" }
        }
      },
      "DirectChildrenPage": {
        "type": "object",
        "additionalProperties": false,
        "required": ["total", "cursor", "limit", "next_cursor", "results"],
        "properties": {
          "total": { "type": "integer", "minimum": 0 },
          "cursor": { "type": "integer", "minimum": 0 },
          "limit": { "type": "integer", "minimum": 1, "maximum": 100 },
          "next_cursor": { "type": ["integer", "null"], "minimum": 0, "description": "Pass a non-null value unchanged as the next request's cursor. Null marks the final page." },
          "results": { "type": "array", "maxItems": 100, "items": { "$ref": "#/components/schemas/MibObject" } }
        }
      },
      "SubtreeSummary": {
        "type": "object",
        "additionalProperties": false,
        "required": ["depth", "limit", "descendant_count", "returned_count", "truncated", "nodes"],
        "properties": {
          "depth": { "type": "integer", "minimum": 0, "maximum": 4 },
          "limit": { "type": "integer", "minimum": 1, "maximum": 250 },
          "descendant_count": { "type": "integer", "minimum": 0 },
          "returned_count": { "type": "integer", "minimum": 0, "maximum": 250 },
          "truncated": { "type": "boolean" },
          "nodes": { "type": "array", "maxItems": 250, "items": { "$ref": "#/components/schemas/SubtreeNode" } }
        }
      },
      "SubtreeNode": {
        "type": "object",
        "additionalProperties": false,
        "required": ["depth", "direct_child_count", "object"],
        "properties": {
          "depth": { "type": "integer", "minimum": 1, "maximum": 4 },
          "direct_child_count": { "type": "integer", "minimum": 0 },
          "object": { "$ref": "#/components/schemas/MibObject" }
        }
      },
      "MibObject": {
        "type": "object",
        "additionalProperties": false,
        "required": ["id", "module", "symbol", "oid", "kind", "syntax", "access", "status", "description", "revision", "relationships", "provenance"],
        "properties": {
          "id": { "type": "string" },
          "module": { "type": "string" },
          "symbol": { "type": "string" },
          "oid": { "$ref": "#/components/schemas/Oid" },
          "kind": { "type": "string" },
          "syntax": { "$ref": "#/components/schemas/Syntax" },
          "access": { "type": ["string", "null"] },
          "status": { "type": ["string", "null"] },
          "description": { "$ref": "#/components/schemas/Description" },
          "revision": { "type": ["string", "null"], "format": "date" },
          "relationships": { "$ref": "#/components/schemas/Relationships" },
          "provenance": { "$ref": "#/components/schemas/Provenance" }
        }
      },
      "Syntax": {
        "type": "object",
        "additionalProperties": false,
        "required": ["raw", "base", "textual_convention", "display_hint", "units", "constraints", "enums", "bits"],
        "properties": {
          "raw": { "type": ["string", "null"] },
          "base": { "type": "string" },
          "textual_convention": { "type": ["string", "null"] },
          "display_hint": { "type": ["string", "null"] },
          "units": { "type": ["string", "null"] },
          "constraints": { "type": "array", "items": { "type": "string" } },
          "enums": { "type": "object", "additionalProperties": { "type": "string" } },
          "bits": { "type": "object", "additionalProperties": { "type": "string" } }
        }
      },
      "Description": {
        "type": "object",
        "additionalProperties": false,
        "required": ["status", "text"],
        "properties": { "status": { "type": "string", "enum": ["available", "not-provided", "unavailable_due_to_rights"] }, "text": { "type": ["string", "null"] } }
      },
      "Relationships": {
        "type": "object",
        "additionalProperties": false,
        "required": ["parent", "table", "row", "indexes", "augments", "notification_objects"],
        "properties": {
          "parent": { "type": ["string", "null"] },
          "table": { "type": ["string", "null"] },
          "row": { "type": ["string", "null"] },
          "indexes": { "type": "array", "items": { "type": "string" } },
          "augments": { "type": ["string", "null"] },
          "notification_objects": { "type": "array", "items": { "type": "string" } }
        }
      },
      "Provenance": {
        "type": "object",
        "additionalProperties": true,
        "required": ["source", "source_url", "parse_status", "publication_mode", "raw_download", "rights_tier"],
        "properties": {
          "source": { "type": ["string", "null"] },
          "source_url": { "type": ["string", "null"], "format": "uri" },
          "parse_status": { "type": "string" },
          "publication_mode": { "type": "string", "enum": ["redistributable", "metadata-only"] },
          "raw_download": { "type": "boolean" },
          "rights_tier": { "type": "string", "enum": ["A", "B"] }
        }
      },
      "RegistrySource": {
        "type": "object",
        "additionalProperties": false,
        "required": ["url", "updated", "retrieved_at", "sha256", "rights"],
        "properties": {
          "url": { "type": "string", "format": "uri" },
          "updated": { "type": "string", "format": "date" },
          "retrieved_at": { "type": "string", "format": "date-time" },
          "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
          "rights": { "const": "CC0-1.0" }
        }
      },
      "Enterprise": {
        "type": "object",
        "additionalProperties": false,
        "required": ["number", "oid", "organization", "registry_status", "source", "caveat"],
        "properties": {
          "number": { "type": "integer", "minimum": 0, "maximum": 4294967295 },
          "oid": { "$ref": "#/components/schemas/Oid" },
          "organization": { "type": "string" },
          "registry_status": { "type": "string", "enum": ["assigned", "reserved"] },
          "source": { "$ref": "#/components/schemas/RegistrySource" },
          "caveat": { "type": "string" }
        }
      },
      "EnterpriseResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["data_release", "enterprise"],
        "properties": { "data_release": { "$ref": "#/components/schemas/DataReleaseId" }, "enterprise": { "$ref": "#/components/schemas/Enterprise" } }
      },
      "IdentityArtifactEvidence": {
        "type": "object",
        "additionalProperties": false,
        "required": ["fields", "symbols", "source_path", "source_url", "git_blob_oid", "sha256"],
        "properties": {
          "fields": { "type": "array", "minItems": 1, "items": { "type": "string" } },
          "symbols": { "type": "array", "minItems": 1, "items": { "type": "string" } },
          "source_path": { "type": "string" },
          "source_url": { "type": "string", "format": "uri" },
          "git_blob_oid": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
          "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" }
        }
      },
      "IdentityLicenseEvidence": {
        "type": "object",
        "additionalProperties": false,
        "required": ["source_path", "source_url", "git_blob_oid", "sha256"],
        "properties": {
          "source_path": { "type": "string" },
          "source_url": { "type": "string", "format": "uri" },
          "git_blob_oid": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
          "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" }
        }
      },
      "IdentityProvenance": {
        "type": "object",
        "additionalProperties": false,
        "required": ["source_id", "source", "source_url", "source_revision"],
        "properties": {
          "source_id": { "type": "string" },
          "source": { "type": "string" },
          "source_symbol": { "type": "string" },
          "source_url": { "type": "string", "format": "uri" },
          "source_revision": { "type": "string" },
          "source_date": { "type": "string", "format": "date" },
          "source_path": { "type": "string" },
          "git_blob_oid": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
          "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
          "source_license": { "type": "string", "description": "Legacy rights-cleared built-in source license field." },
          "license_basis": { "type": "string", "description": "Legacy rights-cleared built-in evidence basis." },
          "rights": { "type": "string", "description": "Rights statement for a rights-cleared built-in source." },
          "repository_license_signal": { "type": "string", "description": "License detected for the containing repository; it is not the rights classification of the referenced MIB artifact." },
          "artifact_rights": { "type": "string", "enum": ["restrictive-notice", "copyright-no-redistribution-grant", "no-redistribution-grant-found", "GPL-2.0-only source; mibvendor-normalized definition", "GPL-3.0-or-later derived platform-prefix definition"] },
          "publication_basis": { "type": "string", "enum": ["independently-authored factual metadata; artifact rights deny raw redistribution", "RackTables static exact key with mibvendor-authored bounded model-label normalization", "scope-bound manual pinned license classification; unconditional LibreNMS sysObjectID prefix definition"] },
          "publication_mode": { "type": "string", "enum": ["redistributable", "metadata-only", "definition-only"] },
          "raw_download": { "const": false },
          "raw_distribution": { "type": "string", "enum": ["denied", "not-provided"] },
          "official_source_url": { "type": ["string", "null"], "format": "uri" },
          "official_source_status": { "type": ["string", "null"] },
          "official_source_byte_verified": { "type": "boolean" },
          "field_provenance": { "type": "string" },
          "license": { "$ref": "#/components/schemas/IdentityLicenseEvidence" },
          "field_evidence": { "type": "array", "items": { "$ref": "#/components/schemas/IdentityArtifactEvidence" } },
          "claim_boundary": { "type": "string" },
          "checked_at": { "type": "string", "format": "date" }
        }
      },
      "SysObjectIdMatch": {
        "type": "object",
        "additionalProperties": false,
        "required": ["oid", "enterprise_number", "organization_name", "organization_key", "organization", "product_family", "model", "platform", "firmware_scope", "identity_type", "match_type", "claim_strength", "claim_scope", "confidence", "source_assignment_confidence", "provenance"],
        "properties": {
          "oid": { "$ref": "#/components/schemas/Oid" },
          "enterprise_number": { "type": "integer", "minimum": 0, "maximum": 4294967295 },
          "organization_name": { "type": ["string", "null"] },
          "organization_key": { "type": ["string", "null"] },
          "organization": { "type": ["string", "null"] },
          "vendor": { "type": "string" },
          "product_family": { "type": ["string", "null"] },
          "mib_identifier": { "type": ["string", "null"], "description": "Vendor MIB symbol when supplied; prefix platform claims leave it null." },
          "model": { "type": ["string", "null"] },
          "platform": { "type": ["string", "null"] },
          "firmware_scope": { "$ref": "#/components/schemas/FirmwareScope" },
          "identity_type": { "type": "string" },
          "match_type": { "type": "string", "enum": ["exact", "prefix"], "description": "Prefix means the longest arc-bound published sysObjectID prefix; exact identity evidence remains primary when both exist." },
          "claim_strength": { "type": "string", "enum": ["exact_model", "product_family", "vendor_identifier", "platform", "vendor_only"], "description": "Strength of the identity assertion. An exact OID match does not imply an exact-model claim." },
          "claim_scope": { "type": "string" },
          "confidence": { "type": "string", "enum": ["high", "medium"] },
          "source_assignment_confidence": { "type": "string", "enum": ["high", "medium"] },
          "provenance": { "$ref": "#/components/schemas/IdentityProvenance" }
        }
      },
      "ProjectObservationCandidate": {
        "type": "object",
        "additionalProperties": false,
        "required": ["model", "product_family", "platform", "firmware_scope", "device_class", "source_id", "confidence", "entity_corroborated"],
        "properties": {
          "model": { "type": ["string", "null"] },
          "product_family": { "type": ["string", "null"] },
          "platform": { "type": ["string", "null"] },
          "firmware_scope": { "$ref": "#/components/schemas/FirmwareScope" },
          "device_class": { "type": ["string", "null"] },
          "source_id": { "type": "string" },
          "confidence": { "type": "string", "enum": ["high", "medium", "low"] },
          "entity_corroborated": { "type": "boolean" }
        }
      },
      "ProjectObservation": {
        "type": "object",
        "additionalProperties": false,
        "required": ["sys_object_id", "evidence_state", "confidence", "candidates"],
        "properties": {
          "sys_object_id": { "$ref": "#/components/schemas/Oid" },
          "evidence_state": { "type": "string" },
          "confidence": { "type": "string", "enum": ["high", "medium", "low"] },
          "candidates": { "type": "array", "maxItems": 32, "items": { "$ref": "#/components/schemas/ProjectObservationCandidate" } }
        }
      },
      "SysObjectIdAssessment": {
        "type": "object",
        "additionalProperties": false,
        "required": ["candidates", "conflicts", "corroboration", "evidence"],
        "properties": {
          "candidates": { "type": "array", "maxItems": 32, "items": { "$ref": "#/components/schemas/DeviceIdentityCandidate" } },
          "conflicts": { "type": "array", "maxItems": 32, "items": { "$ref": "#/components/schemas/DeviceIdentityConflict" } },
          "corroboration": { "type": "array", "maxItems": 32, "items": { "$ref": "#/components/schemas/ProjectObservation" } },
          "evidence": { "type": "array", "maxItems": 32, "items": { "$ref": "#/components/schemas/AssessmentEvidence" } }
        }
      },
      "SysObjectIdResult": {
        "type": "object",
        "additionalProperties": false,
        "required": ["input", "normalized_oid", "status", "enterprise", "enterprise_number", "organization_name", "organization_key", "organization_key_status", "identity_status", "firmware_scope", "identity_release", "identity_view", "identity_release_sha256", "publication_control", "match", "assessment"],
        "properties": {
          "input": { "type": "string" },
          "normalized_oid": { "$ref": "#/components/schemas/Oid" },
          "status": { "type": "string", "enum": ["resolved", "enterprise_only", "not_found", "ambiguous", "unavailable_due_to_rights"] },
          "enterprise": { "anyOf": [{ "$ref": "#/components/schemas/Enterprise" }, { "type": "null" }] },
          "enterprise_number": { "type": ["integer", "null"], "minimum": 0, "maximum": 4294967295 },
          "organization_name": { "type": ["string", "null"] },
          "organization_key": { "type": ["string", "null"] },
          "organization_key_status": { "type": "string", "enum": ["reviewed", "not_available"] },
          "identity_status": { "type": "string", "enum": ["exact_model", "product_family", "vendor_identifier", "platform", "vendor_only", "conflicting_evidence", "unknown"] },
          "firmware_scope": { "anyOf": [{ "$ref": "#/components/schemas/FirmwareScope" }, { "type": "null" }], "description": "Null only when no singular identity result exists (unknown or conflicting evidence)." },
          "identity_release": { "$ref": "#/components/schemas/IdentityReleaseId" },
          "identity_view": { "type": "string" },
          "identity_release_sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
          "publication_control": { "$ref": "#/components/schemas/IdentityPublication" },
          "match": { "anyOf": [{ "$ref": "#/components/schemas/SysObjectIdMatch" }, { "type": "null" }] },
          "assessment": { "$ref": "#/components/schemas/SysObjectIdAssessment" },
          "rights": { "$ref": "#/components/schemas/RightsRestriction" },
          "caveat": { "type": "string" }
        }
      },
      "RightsRestriction": {
        "type": "object",
        "additionalProperties": false,
        "required": ["source_family", "api_output", "checked_at", "detail"],
        "properties": {
          "source_family": { "type": "string" },
          "api_output": { "const": "denied" },
          "checked_at": { "type": "string", "format": "date" },
          "detail": { "type": "string" }
        }
      },
      "SysObjectIdResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["data_release", "identity_release", "identity_publication", "result"],
        "properties": { "data_release": { "$ref": "#/components/schemas/DataReleaseId" }, "identity_release": { "$ref": "#/components/schemas/IdentityReleaseId" }, "identity_publication": { "$ref": "#/components/schemas/IdentityPublication" }, "result": { "$ref": "#/components/schemas/SysObjectIdResult" } }
      },
      "License": {
        "type": "object",
        "additionalProperties": false,
        "required": ["spdx", "name", "url", "notice_required"],
        "properties": {
          "spdx": { "type": "string" },
          "name": { "type": "string" },
          "url": { "type": "string", "format": "uri" },
          "notice_required": { "type": "boolean" }
        }
      },
      "Module": {
        "type": "object",
        "additionalProperties": false,
        "required": ["id", "publisher", "publication_mode", "raw_download", "raw_url", "source_url", "source_revision", "source_sha256", "artifact_sha256", "revision", "license", "dependencies", "root_objects", "declared_oid_count", "resolved_oid_count"],
        "properties": {
          "id": { "type": "string" },
          "publisher": { "type": "string", "enum": ["IETF", "IANA", "Net-SNMP"] },
          "publication_mode": { "const": "redistributable" },
          "raw_download": { "const": true },
          "raw_url": { "type": "string" },
          "source_url": { "type": "string", "format": "uri" },
          "source_revision": { "type": "string" },
          "source_sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
          "artifact_sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
          "revision": { "type": ["string", "null"], "format": "date" },
          "license": { "$ref": "#/components/schemas/License" },
          "dependencies": { "type": "array", "items": { "type": "string" } },
          "root_objects": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": ["id", "symbol", "oid", "kind"],
              "properties": {
                "id": { "type": "string" },
                "symbol": { "type": "string" },
                "oid": { "$ref": "#/components/schemas/Oid" },
                "kind": { "type": "string" }
              }
            }
          },
          "declared_oid_count": { "type": "integer", "minimum": 0 },
          "resolved_oid_count": { "type": "integer", "minimum": 0 }
        }
      },
      "ModuleResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["data_release", "module"],
        "properties": { "data_release": { "$ref": "#/components/schemas/DataReleaseId" }, "module": { "$ref": "#/components/schemas/Module" } }
      },
      "ModuleListResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["data_release", "query", "publisher", "cursor", "limit", "total", "next_cursor", "results"],
        "properties": {
          "data_release": { "$ref": "#/components/schemas/DataReleaseId" },
          "query": { "type": "string" },
          "publisher": { "type": "string" },
          "cursor": { "type": "integer", "minimum": 0 },
          "limit": { "type": "integer", "minimum": 1, "maximum": 100 },
          "total": { "type": "integer", "minimum": 0 },
          "next_cursor": { "type": ["integer", "null"], "minimum": 0, "description": "Pass a non-null value unchanged as the next request's cursor. Null marks the final page." },
          "results": { "type": "array", "items": { "$ref": "#/components/schemas/Module" } }
        }
      },
      "Source": {
        "type": "object",
        "additionalProperties": true,
        "required": ["id", "publisher", "official_source_url", "rights_evidence_url", "checked_at", "publication_mode", "content_intake", "scopes", "public_fields", "reason"],
        "properties": {
          "id": { "type": "string" },
          "publisher": { "type": "string" },
          "official_source_url": { "type": "string", "format": "uri" },
          "rights_evidence_url": { "type": "string", "format": "uri" },
          "checked_at": { "type": "string", "format": "date" },
          "publication_mode": { "type": "string", "enum": ["redistributable", "metadata-only", "directory-only"] },
          "content_intake": { "type": "string", "enum": ["approved", "quarantine"] },
          "scopes": { "type": "object" },
          "public_fields": { "type": "array", "items": { "type": "string" } },
          "reason": { "type": "string" }
        }
      },
      "SourceResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["data_release", "source"],
        "properties": { "data_release": { "$ref": "#/components/schemas/DataReleaseId" }, "source": { "$ref": "#/components/schemas/Source" } }
      },
      "SourceListResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["data_release", "mode", "total", "results"],
        "properties": {
          "data_release": { "$ref": "#/components/schemas/DataReleaseId" },
          "mode": { "type": ["string", "null"] },
          "total": { "type": "integer", "minimum": 0 },
          "results": { "type": "array", "items": { "$ref": "#/components/schemas/Source" } }
        }
      },
      "DependenciesResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["data_release", "module", "status", "direct", "transitive", "missing", "cyclic", "diagnostics"],
        "properties": {
          "data_release": { "$ref": "#/components/schemas/DataReleaseId" },
          "module": { "type": "string" },
          "status": { "type": "string", "enum": ["complete", "partial"] },
          "direct": { "type": "array", "items": { "type": "string" } },
          "transitive": { "type": "array", "items": { "type": "string" } },
          "missing": { "type": "array", "items": { "type": "string" } },
          "cyclic": { "type": "array", "items": { "type": "string" } },
          "diagnostics": { "type": "array", "items": { "type": "string" } }
        }
      },
      "Oid": { "type": "string", "pattern": "^[0-9]+(?:\\.[0-9]+)+$", "maxLength": 512 },
      "Problem": {
        "type": "object",
        "additionalProperties": false,
        "required": ["type", "title", "status", "detail"],
        "properties": {
          "type": { "type": "string", "format": "uri" },
          "title": { "type": "string" },
          "status": { "type": "integer", "minimum": 400, "maximum": 599 },
          "detail": { "type": "string" }
        }
      }
    }
  }
}
