{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/repowise-dev/json-schema/repowise-dev-workspace-extraction-diagnostics-schema.json",
  "title": "WorkspaceExtractionDiagnostics",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/repowise-dev-openapi.json#/components/schemas/WorkspaceExtractionDiagnostics",
  "properties": {
    "total_providers": {
      "type": "integer",
      "title": "Total Providers",
      "default": 0
    },
    "total_consumers": {
      "type": "integer",
      "title": "Total Consumers",
      "default": 0
    },
    "total_links": {
      "type": "integer",
      "title": "Total Links",
      "default": 0
    },
    "weak_link_count": {
      "type": "integer",
      "title": "Weak Link Count",
      "default": 0
    },
    "repo_breakdown": {
      "items": {
        "$ref": "#/$defs/WorkspaceRepoDiagnostics"
      },
      "type": "array",
      "title": "Repo Breakdown",
      "default": []
    },
    "unmatched_consumers": {
      "items": {
        "$ref": "#/$defs/WorkspaceUnmatchedConsumer"
      },
      "type": "array",
      "title": "Unmatched Consumers",
      "default": []
    },
    "unmatched_by_reason": {
      "additionalProperties": {
        "type": "integer"
      },
      "type": "object",
      "title": "Unmatched By Reason",
      "default": {}
    },
    "orphan_providers": {
      "items": {
        "$ref": "#/$defs/WorkspaceOrphanProvider"
      },
      "type": "array",
      "title": "Orphan Providers",
      "default": []
    },
    "in_service_consumers": {
      "items": {
        "$ref": "#/$defs/WorkspaceUnmatchedConsumer"
      },
      "type": "array",
      "title": "In Service Consumers",
      "default": []
    },
    "providers_by_layer": {
      "additionalProperties": {
        "type": "integer"
      },
      "type": "object",
      "title": "Providers By Layer",
      "default": {}
    },
    "consumers_by_layer": {
      "additionalProperties": {
        "type": "integer"
      },
      "type": "object",
      "title": "Consumers By Layer",
      "default": {}
    },
    "http_consumers_unresolved": {
      "type": "integer",
      "title": "Http Consumers Unresolved",
      "default": 0
    },
    "http_consumer_coverage": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Http Consumer Coverage"
    },
    "http_consumers_linked": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Http Consumers Linked"
    },
    "http_link_coverage": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Http Link Coverage"
    },
    "unrecognised_call_files": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Unrecognised Call Files"
    },
    "unrecognised_call_file_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Unrecognised Call File Count"
    },
    "topic_names_unresolved": {
      "type": "integer",
      "title": "Topic Names Unresolved",
      "default": 0
    },
    "unrecognised_message_files": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Unrecognised Message Files"
    },
    "unrecognised_message_file_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Unrecognised Message File Count"
    },
    "symbol_identity": {
      "additionalProperties": {
        "$ref": "#/$defs/WorkspaceSymbolIdentity"
      },
      "type": "object",
      "title": "Symbol Identity",
      "default": {}
    },
    "schema_coverage": {
      "$ref": "#/$defs/WorkspaceSchemaCoverage",
      "default": {
        "total": 0,
        "bound": 0,
        "recovered": 0,
        "shared_symbol": 0,
        "unsupported_language": 0,
        "non_callable": 0,
        "eligible": 0
      }
    },
    "code_api": {
      "$ref": "#/$defs/WorkspaceCodeApiCoverage",
      "default": {
        "manifests": 0,
        "published": 0,
        "unsupported_ecosystem": 0,
        "providers": 0,
        "consumers": 0,
        "linked_providers": 0
      }
    },
    "openapi": {
      "$ref": "#/$defs/WorkspaceOpenApiCoverage",
      "default": {
        "documents": 0,
        "parsed_documents": 0,
        "unresolved_documents": 0,
        "operations": 0,
        "providers": 0,
        "schemas_merged": 0,
        "spec_only_providers": 0,
        "request_states": {},
        "response_states": {},
        "refusal_reasons": {}
      }
    }
  },
  "additionalProperties": false,
  "type": "object",
  "$defs": {
    "WorkspaceCodeApiCoverage": {
      "properties": {
        "manifests": {
          "type": "integer",
          "title": "Manifests",
          "default": 0
        },
        "published": {
          "type": "integer",
          "title": "Published",
          "default": 0
        },
        "unsupported_ecosystem": {
          "type": "integer",
          "title": "Unsupported Ecosystem",
          "default": 0
        },
        "providers": {
          "type": "integer",
          "title": "Providers",
          "default": 0
        },
        "consumers": {
          "type": "integer",
          "title": "Consumers",
          "default": 0
        },
        "linked_providers": {
          "type": "integer",
          "title": "Linked Providers",
          "default": 0
        },
        "published_ratio": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Published Ratio"
        },
        "linked_ratio": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Linked Ratio"
        }
      },
      "type": "object",
      "title": "WorkspaceCodeApiCoverage"
    },
    "WorkspaceOpenApiCoverage": {
      "properties": {
        "documents": {
          "type": "integer",
          "title": "Documents",
          "default": 0
        },
        "parsed_documents": {
          "type": "integer",
          "title": "Parsed Documents",
          "default": 0
        },
        "unresolved_documents": {
          "type": "integer",
          "title": "Unresolved Documents",
          "default": 0
        },
        "operations": {
          "type": "integer",
          "title": "Operations",
          "default": 0
        },
        "providers": {
          "type": "integer",
          "title": "Providers",
          "default": 0
        },
        "schemas_merged": {
          "type": "integer",
          "title": "Schemas Merged",
          "default": 0
        },
        "spec_only_providers": {
          "type": "integer",
          "title": "Spec Only Providers",
          "default": 0
        },
        "request_states": {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object",
          "title": "Request States",
          "default": {}
        },
        "response_states": {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object",
          "title": "Response States",
          "default": {}
        },
        "refusal_reasons": {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object",
          "title": "Refusal Reasons",
          "default": {}
        }
      },
      "type": "object",
      "title": "WorkspaceOpenApiCoverage"
    },
    "WorkspaceOrphanProvider": {
      "properties": {
        "repo": {
          "type": "string",
          "title": "Repo"
        },
        "file_path": {
          "type": "string",
          "title": "File Path"
        },
        "contract_id": {
          "type": "string",
          "title": "Contract Id"
        },
        "contract_type": {
          "type": "string",
          "title": "Contract Type"
        },
        "other_files": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Other Files",
          "default": []
        }
      },
      "type": "object",
      "required": [
        "repo",
        "file_path",
        "contract_id",
        "contract_type"
      ],
      "title": "WorkspaceOrphanProvider"
    },
    "WorkspaceRepoDiagnostics": {
      "properties": {
        "repo": {
          "type": "string",
          "title": "Repo"
        },
        "providers_by_type": {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object",
          "title": "Providers By Type",
          "default": {}
        },
        "consumers_by_type": {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object",
          "title": "Consumers By Type",
          "default": {}
        },
        "provider_count": {
          "type": "integer",
          "title": "Provider Count",
          "default": 0
        },
        "consumer_count": {
          "type": "integer",
          "title": "Consumer Count",
          "default": 0
        },
        "providers_by_layer": {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object",
          "title": "Providers By Layer",
          "default": {}
        },
        "consumers_by_layer": {
          "additionalProperties": {
            "type": "integer"
          },
          "type": "object",
          "title": "Consumers By Layer",
          "default": {}
        },
        "http_consumers_unresolved": {
          "type": "integer",
          "title": "Http Consumers Unresolved",
          "default": 0
        },
        "topic_names_unresolved": {
          "type": "integer",
          "title": "Topic Names Unresolved",
          "default": 0
        }
      },
      "type": "object",
      "required": [
        "repo"
      ],
      "title": "WorkspaceRepoDiagnostics"
    },
    "WorkspaceSchemaCoverage": {
      "properties": {
        "total": {
          "type": "integer",
          "title": "Total",
          "default": 0
        },
        "bound": {
          "type": "integer",
          "title": "Bound",
          "default": 0
        },
        "recovered": {
          "type": "integer",
          "title": "Recovered",
          "default": 0
        },
        "shared_symbol": {
          "type": "integer",
          "title": "Shared Symbol",
          "default": 0
        },
        "unsupported_language": {
          "type": "integer",
          "title": "Unsupported Language",
          "default": 0
        },
        "non_callable": {
          "type": "integer",
          "title": "Non Callable",
          "default": 0
        },
        "eligible": {
          "type": "integer",
          "title": "Eligible",
          "default": 0
        },
        "recovered_ratio": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Recovered Ratio"
        },
        "recovered_ratio_eligible": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Recovered Ratio Eligible"
        }
      },
      "type": "object",
      "title": "WorkspaceSchemaCoverage"
    },
    "WorkspaceSymbolIdentity": {
      "properties": {
        "total": {
          "type": "integer",
          "title": "Total",
          "default": 0
        },
        "bound": {
          "type": "integer",
          "title": "Bound",
          "default": 0
        },
        "unindexed_file": {
          "type": "integer",
          "title": "Unindexed File",
          "default": 0
        },
        "bound_ratio": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Bound Ratio"
        },
        "bound_ratio_indexed": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Bound Ratio Indexed"
        }
      },
      "type": "object",
      "title": "WorkspaceSymbolIdentity"
    },
    "WorkspaceUnmatchedConsumer": {
      "properties": {
        "repo": {
          "type": "string",
          "title": "Repo"
        },
        "file_path": {
          "type": "string",
          "title": "File Path"
        },
        "contract_id": {
          "type": "string",
          "title": "Contract Id"
        },
        "contract_type": {
          "type": "string",
          "title": "Contract Type"
        },
        "reason": {
          "type": "string",
          "title": "Reason"
        }
      },
      "type": "object",
      "required": [
        "repo",
        "file_path",
        "contract_id",
        "contract_type",
        "reason"
      ],
      "title": "WorkspaceUnmatchedConsumer"
    }
  }
}