{
  "ok": true,
  "sources": [
    {
      "id": "28east",
      "name": "28East",
      "type": "external_api",
      "provider": "28east",
      "base_url": "https://api.coverage.28east.co.za/getfeasibility",
      "auth_type": "api_key",
      "api_key_ref": null,
      "enabled": false,
      "supports_feasibility": true,
      "supports_ordering": false,
      "visibility": "admin",
      "description": "28East coverage/feasibility source.",
      "created_at": "2026-05-20T14:41:45Z",
      "updated_at": "2026-06-30 06:24:49",
      "source_key": "28east_28east",
      "source_type": null,
      "order_enabled": 0,
      "endpoint_url": null,
      "method": null,
      "capabilities_json": null,
      "config_json": null,
      "visibility_json": null,
      "priority": 100,
      "source_readiness": "missing_endpoint",
      "source_readiness_notes": "No endpoint configured",
      "is_callable_api": 0,
      "endpoints": {
        "feasibility": {
          "method": "GET",
          "path": "/getfeasibility"
        }
      },
      "extra": {
        "id": "28east",
        "name": "28East",
        "type": "external_api",
        "provider": "28east",
        "base_url": "https://api.coverage.28east.co.za/getfeasibility",
        "enabled": false,
        "description": "28East coverage/feasibility source.",
        "supports_feasibility": true,
        "supports_ordering": false,
        "auth_type": "api_key",
        "visibility": "admin",
        "endpoints": {
          "feasibility": {
            "method": "GET",
            "path": "/getfeasibility"
          }
        }
      }
    },
    {
      "id": null,
      "name": "28East Coverage API",
      "type": "external_api",
      "provider": "28East",
      "base_url": null,
      "auth_type": "api_key",
      "api_key_ref": null,
      "enabled": false,
      "supports_feasibility": true,
      "supports_ordering": false,
      "visibility": "admin",
      "description": "28East coverage API source. Configure endpoint and API key before enabling.",
      "created_at": "2026-05-21T12:04:43Z",
      "updated_at": "2026-06-30 06:24:49",
      "source_key": "28east_coverage",
      "source_type": "external_api",
      "order_enabled": 0,
      "endpoint_url": "",
      "method": "GET",
      "capabilities_json": "{\"feasibility\": true, \"ordering\": false, \"coverage\": true}",
      "config_json": "{\"requires_api_key\": true}",
      "visibility_json": "{\"wholesale\": true, \"reseller_portal\": false, \"feasibility_studio\": true}",
      "priority": 30,
      "source_readiness": "missing_endpoint",
      "source_readiness_notes": "No endpoint configured",
      "is_callable_api": 0,
      "endpoints": {},
      "extra": {}
    },
    {
      "id": null,
      "name": "Aggregator External API",
      "type": "external_api",
      "provider": "Aggregator",
      "base_url": null,
      "auth_type": "api_key",
      "api_key_ref": null,
      "enabled": false,
      "supports_feasibility": true,
      "supports_ordering": false,
      "visibility": "admin",
      "description": "Generic aggregator feasibility source. Configure endpoint and credentials before enabling.",
      "created_at": "2026-05-21T12:04:43Z",
      "updated_at": "2026-06-30 06:24:49",
      "source_key": "aggregator_api",
      "source_type": "external_api",
      "order_enabled": 0,
      "endpoint_url": "",
      "method": "POST",
      "capabilities_json": "{\"feasibility\": true, \"ordering\": false}",
      "config_json": "{\"requires_credentials\": true}",
      "visibility_json": "{\"wholesale\": true, \"reseller_portal\": false, \"feasibility_studio\": true}",
      "priority": 40,
      "source_readiness": "missing_endpoint",
      "source_readiness_notes": "No endpoint configured",
      "is_callable_api": 0,
      "endpoints": {},
      "extra": {}
    },
    {
      "id": null,
      "name": "Carrier Library KMZ/KML",
      "type": "external_api",
      "provider": "ConnexiFi",
      "base_url": null,
      "auth_type": "api_key",
      "api_key_ref": null,
      "enabled": true,
      "supports_feasibility": true,
      "supports_ordering": false,
      "visibility": "admin",
      "description": "Local uploaded carrier route and coverage library used for GIS proximity checks.",
      "created_at": "2026-05-21T12:04:43Z",
      "updated_at": "2026-06-30 06:24:49",
      "source_key": "carrier_library_kmz",
      "source_type": "carrier_library",
      "order_enabled": 0,
      "endpoint_url": "",
      "method": "LOCAL",
      "capabilities_json": "{\"feasibility\": true, \"ordering\": false, \"kmz\": true, \"kml\": true, \"route_distance\": true}",
      "config_json": "{\"library_path\": \"/opt/connexifi-feasibility/library\", \"distance_bands_m\": [50, 100, 250, 500, 1000]}",
      "visibility_json": "{\"wholesale\": true, \"reseller_portal\": true, \"feasibility_studio\": true}",
      "priority": 10,
      "source_readiness": "manual_or_library",
      "source_readiness_notes": "Manual/KMZ/library source, not a live external API",
      "is_callable_api": 0,
      "endpoints": {},
      "extra": {}
    },
    {
      "id": "comsol",
      "name": "Comsol",
      "type": "external_api",
      "provider": "comsol",
      "base_url": "https://feasibility.api.comsol.co.za",
      "auth_type": "api_key",
      "api_key_ref": null,
      "enabled": false,
      "supports_feasibility": true,
      "supports_ordering": false,
      "visibility": "admin",
      "description": "Comsol feasibility source. Use Service Qualification or Max BW for comprehensive results. Ordering disabled until order endpoint is supplied.",
      "created_at": "2026-05-20T14:41:45Z",
      "updated_at": "2026-06-30 06:24:49",
      "source_key": "comsol_comsol",
      "source_type": null,
      "order_enabled": 0,
      "endpoint_url": null,
      "method": null,
      "capabilities_json": null,
      "config_json": null,
      "visibility_json": null,
      "priority": 100,
      "source_readiness": "missing_endpoint",
      "source_readiness_notes": "No endpoint configured",
      "is_callable_api": 0,
      "endpoints": {
        "status": {
          "method": "GET",
          "path": "/api/platform/providers/comsol/status"
        },
        "max_bw": {
          "method": "POST",
          "path": "/api/v2/max_bw"
        },
        "service_qualification": {
          "method": "POST",
          "path": "/feasibility/serviceQualificationManagement/v4/checkServiceQualification/"
        },
        "order_submit": {
          "method": "POST",
          "path": "",
          "disabled": true
        }
      },
      "extra": {
        "id": "comsol",
        "name": "Comsol",
        "type": "external_api",
        "provider": "comsol",
        "base_url": "https://feasibility.api.comsol.co.za",
        "enabled": false,
        "description": "Comsol feasibility source. Use Service Qualification or Max BW for comprehensive results. Ordering disabled until order endpoint is supplied.",
        "supports_feasibility": true,
        "supports_ordering": false,
        "auth_type": "api_key",
        "visibility": "admin",
        "endpoints": {
          "status": {
            "method": "GET",
            "path": "/api/platform/providers/comsol/status"
          },
          "max_bw": {
            "method": "POST",
            "path": "/api/v2/max_bw"
          },
          "service_qualification": {
            "method": "POST",
            "path": "/feasibility/serviceQualificationManagement/v4/checkServiceQualification/"
          },
          "order_submit": {
            "method": "POST",
            "path": "",
            "disabled": true
          }
        }
      }
    },
    {
      "id": null,
      "name": "Comsol Max BW",
      "type": "external_api",
      "provider": "Comsol",
      "base_url": null,
      "auth_type": "api_key",
      "api_key_ref": null,
      "enabled": true,
      "supports_feasibility": true,
      "supports_ordering": false,
      "visibility": "admin",
      "description": "Comsol maximum bandwidth endpoint for comprehensive availability result enrichment.",
      "created_at": "2026-05-21T12:04:43Z",
      "updated_at": "2026-06-30 06:24:49",
      "source_key": "comsol_max_bw",
      "source_type": "external_api",
      "order_enabled": 0,
      "endpoint_url": "",
      "method": "POST",
      "capabilities_json": "{\"feasibility\": true, \"ordering\": false, \"max_bandwidth\": true}",
      "config_json": "{\"preferred_endpoint\": \"max_bw\", \"requires_credentials\": true}",
      "visibility_json": "{\"wholesale\": true, \"reseller_portal\": false, \"feasibility_studio\": true}",
      "priority": 21,
      "source_readiness": "missing_endpoint",
      "source_readiness_notes": "No endpoint configured",
      "is_callable_api": 0,
      "endpoints": {},
      "extra": {}
    },
    {
      "id": null,
      "name": "Comsol Service Qualification",
      "type": "external_api",
      "provider": "Comsol",
      "base_url": null,
      "auth_type": "api_key",
      "api_key_ref": null,
      "enabled": true,
      "supports_feasibility": true,
      "supports_ordering": false,
      "visibility": "admin",
      "description": "Comsol feasibility source using Service Qualification endpoint. Ordering remains disabled until the order endpoint is confirmed.",
      "created_at": "2026-05-21T12:04:43Z",
      "updated_at": "2026-06-30 06:24:49",
      "source_key": "comsol_service_qualification",
      "source_type": "external_api",
      "order_enabled": 0,
      "endpoint_url": "",
      "method": "POST",
      "capabilities_json": "{\"feasibility\": true, \"ordering\": false, \"service_qualification\": true, \"max_bandwidth\": true}",
      "config_json": "{\"preferred_endpoint\": \"service_qualification\", \"fallback_endpoint\": \"max_bw\", \"requires_credentials\": true}",
      "visibility_json": "{\"wholesale\": true, \"reseller_portal\": false, \"feasibility_studio\": true}",
      "priority": 20,
      "source_readiness": "missing_endpoint",
      "source_readiness_notes": "No endpoint configured",
      "is_callable_api": 0,
      "endpoints": {},
      "extra": {}
    },
    {
      "id": "dfa",
      "name": "DFA",
      "type": "external_api",
      "provider": "dfa",
      "base_url": "",
      "auth_type": "api_key",
      "api_key_ref": null,
      "enabled": true,
      "supports_feasibility": true,
      "supports_ordering": false,
      "visibility": "admin",
      "description": "DFA infrastructure feasibility source.",
      "created_at": "2026-05-20T14:41:45Z",
      "updated_at": "2026-06-30 06:24:49",
      "source_key": "dfa_dfa",
      "source_type": null,
      "order_enabled": 0,
      "endpoint_url": null,
      "method": null,
      "capabilities_json": null,
      "config_json": null,
      "visibility_json": null,
      "priority": 100,
      "source_readiness": "missing_endpoint",
      "source_readiness_notes": "No endpoint configured",
      "is_callable_api": 0,
      "endpoints": {
        "feasibility": {
          "method": "POST",
          "path": ""
        }
      },
      "extra": {
        "id": "dfa",
        "name": "DFA",
        "type": "external_api",
        "provider": "dfa",
        "base_url": "",
        "enabled": true,
        "description": "DFA infrastructure feasibility source.",
        "supports_feasibility": true,
        "supports_ordering": false,
        "auth_type": "api_key",
        "visibility": "admin",
        "endpoints": {
          "feasibility": {
            "method": "POST",
            "path": ""
          }
        }
      }
    },
    {
      "id": "liquid_geographic",
      "name": "Liquid Intelligent Technologies GeoGraphic",
      "type": "external_api",
      "provider": "liquid",
      "base_url": "",
      "auth_type": "api_key",
      "api_key_ref": null,
      "enabled": true,
      "supports_feasibility": true,
      "supports_ordering": false,
      "visibility": "admin",
      "description": "Liquid GeoGraphic feasibility source.",
      "created_at": "2026-05-20T14:41:45Z",
      "updated_at": "2026-06-30 06:24:49",
      "source_key": "liquid_intelligent_technologies_geographic_liquid_geographic",
      "source_type": null,
      "order_enabled": 0,
      "endpoint_url": null,
      "method": null,
      "capabilities_json": null,
      "config_json": null,
      "visibility_json": null,
      "priority": 100,
      "source_readiness": "missing_endpoint",
      "source_readiness_notes": "No endpoint configured",
      "is_callable_api": 0,
      "endpoints": {
        "feasibility": {
          "method": "GET",
          "path": ""
        }
      },
      "extra": {
        "id": "liquid_geographic",
        "name": "Liquid Intelligent Technologies GeoGraphic",
        "type": "external_api",
        "provider": "liquid",
        "base_url": "",
        "enabled": true,
        "description": "Liquid GeoGraphic feasibility source.",
        "supports_feasibility": true,
        "supports_ordering": false,
        "auth_type": "api_key",
        "visibility": "admin",
        "endpoints": {
          "feasibility": {
            "method": "GET",
            "path": ""
          }
        }
      }
    },
    {
      "id": null,
      "name": "Manual Supplier Check",
      "type": "external_api",
      "provider": "ConnexiFi",
      "base_url": null,
      "auth_type": "api_key",
      "api_key_ref": null,
      "enabled": true,
      "supports_feasibility": true,
      "supports_ordering": false,
      "visibility": "admin",
      "description": "Manual feasibility fallback for suppliers without API integration or when API responses require review.",
      "created_at": "2026-05-21T12:04:43Z",
      "updated_at": "2026-06-30 06:24:49",
      "source_key": "manual_supplier_check",
      "source_type": "manual",
      "order_enabled": 0,
      "endpoint_url": "",
      "method": "MANUAL",
      "capabilities_json": "{\"feasibility\": true, \"ordering\": false, \"manual_review\": true}",
      "config_json": "{\"sla_hours\": 24}",
      "visibility_json": "{\"wholesale\": true, \"reseller_portal\": true, \"feasibility_studio\": true}",
      "priority": 90,
      "source_readiness": "manual_or_library",
      "source_readiness_notes": "Manual/KMZ/library source, not a live external API",
      "is_callable_api": 0,
      "endpoints": {},
      "extra": {}
    },
    {
      "id": "smoke_test_api",
      "name": "Smoke Test API",
      "type": "external_api",
      "provider": "smoke",
      "base_url": "https://example.invalid",
      "auth_type": "api_key",
      "api_key_ref": null,
      "enabled": false,
      "supports_feasibility": true,
      "supports_ordering": false,
      "visibility": "admin",
      "description": "Temporary test source",
      "created_at": "2026-05-20T14:42:31Z",
      "updated_at": "2026-06-30 06:24:49",
      "source_key": "smoke_test_api_smoke_test_api",
      "source_type": null,
      "order_enabled": 0,
      "endpoint_url": null,
      "method": null,
      "capabilities_json": null,
      "config_json": null,
      "visibility_json": null,
      "priority": 100,
      "source_readiness": "missing_endpoint",
      "source_readiness_notes": "No endpoint configured",
      "is_callable_api": 0,
      "endpoints": {
        "feasibility": {
          "method": "GET",
          "path": "/test"
        }
      },
      "extra": {
        "updated_from": "sources_manager"
      }
    },
    {
      "id": "kmz_carrier_library",
      "name": "Carrier KMZ/KML Library",
      "type": "file_library",
      "provider": "carrier_library",
      "base_url": "",
      "auth_type": "none",
      "api_key_ref": null,
      "enabled": true,
      "supports_feasibility": true,
      "supports_ordering": false,
      "visibility": "admin",
      "description": "Uploaded carrier network KMZ/KML route libraries used for distance and route matching.",
      "created_at": "2026-05-20T14:41:45Z",
      "updated_at": "2026-06-30 06:24:49",
      "source_key": "carrier_kmz_kml_library_kmz_carrier_library",
      "source_type": null,
      "order_enabled": 0,
      "endpoint_url": null,
      "method": null,
      "capabilities_json": null,
      "config_json": null,
      "visibility_json": null,
      "priority": 100,
      "source_readiness": "manual_or_library",
      "source_readiness_notes": "Manual/KMZ/library source, not a live external API",
      "is_callable_api": 0,
      "endpoints": {},
      "extra": {
        "id": "kmz_carrier_library",
        "name": "Carrier KMZ/KML Library",
        "type": "file_library",
        "provider": "carrier_library",
        "base_url": "",
        "enabled": true,
        "description": "Uploaded carrier network KMZ/KML route libraries used for distance and route matching.",
        "supports_feasibility": true,
        "supports_ordering": false,
        "auth_type": "none",
        "visibility": "admin",
        "endpoints": {}
      }
    }
  ],
  "count": 12,
  "note": "Shared editable feasibility source registry."
}