```json
{
"tests": [
{
"name": "host_information_happy_path",
"endpoint": "/shodan/host/8.8.8.8",
"method": "GET",
"headers": {},
"payload": {
"key": "API_KEY_PLACEHOLDER"
},
"expected_status": 200,
"intent": "happy_path",
"expected_behavior": "Returns host information for 8.8.8.8 with ip_str, ports, and data array",
"metrics": ["latency", "status_code", "response_size"],
"validation": {"field": "ip_str", "type": "string", "min_length": 1}
},
{
"name": "host_information_minified",
"endpoint": "/shodan/host/8.8.8.8",
"method": "GET",
"headers": {},
"payload": {
"key": "API_KEY_PLACEHOLDER",
"minify": "true"
},
"expected_status": 200,
"intent": "happy_path",
"expected_behavior": "Returns minified host info with ports list but no data banners",
"metrics": ["latency", "status_code", "response_size"],
"validation": {"field": "ports", "type": "array", "min_length": 1}
},
{
"name": "host_information_invalid_ip",
"endpoint": "/shodan/host/999.999.999.999",
"method": "GET",
"headers": {},
"payload": {
"key": "API_KEY_PLACEHOLDER"
},
"expected_status": 404,
"intent": "validation",
"expected_behavior": "Returns 404 with error message for invalid IP address",
"metrics": ["status_code", "latency"],
"validation": {"field": "error", "type": "string", "min_length": 1}
},
{
"name": "host_information_no_key",
"endpoint": "/shodan/host/8.8.8.8",
"method": "GET",
"headers": {},
"payload": {},
"expected_status": 401,
"intent": "auth",
"expected_behavior": "Returns 401 or error when API key is missing",
"metrics": ["status_code", "latency"],
"validation": {"field": "error", "type": "string", "min_length": 1}
},
{
"name": "host_information_invalid_key",
"endpoint": "/shodan/host/8.8.8.8",
"method": "GET",
"headers": {},
"payload": {
"key": "invalid_key_placeholder"
},
"expected_status": 401,
"intent": "auth",
"expected_behavior": "Returns 401 or error when API key is invalid",
"metrics": ["status_code", "latency"],
"validation": {"field": "error", "type": "string", "min_length": 1}
},
{
"name": "api_info_plan_check",
"endpoint": "/api-info",
"method": "GET",
"headers": {},
"payload": {
"key": "API_KEY_PLACEHOLDER"
},
"expected_status": 200,
"intent": "happy_path",
"expected_behavior": "Returns API plan information including query_credits and scan_credits",
"metrics": ["latency", "status_code"],
"validation": {"field": "plan", "type": "string", "min_length": 1}
},
{
"name": "list_all_ports",
"endpoint": "/shodan/ports",
"method": "GET",
"headers": {},
"payload": {
"key": "API_KEY_PLACEHOLDER"
},
"expected_status": 200,
"intent": "happy_path",
"expected_behavior": "Returns list of port numbers as array",
"metrics": ["latency", "status_code"],
"validation": {"field": "data", "type": "array", "min_length": 1}
},
{
"name": "list_protocols",
"endpoint": "/shodan/protocols",
"method": "GET",
"headers": {},
"payload": {
"key": "API_KEY_PLACEHOLDER"
},
"expected_status": 200,
"intent": "happy_path",
"expected_behavior": "Returns object of protocol names to descriptions",
"metrics": ["latency", "status_code"],
"validation": {"field": "data", "type": "object", "min_length": 1}
},
{
"name": "dns_resolve_hostnames",
"endpoint": "/dns/resolve",
"method": "GET",
"headers": {},
"payload": {
"key": "API_KEY_PLACEHOLDER",
"hostnames": "google.com,facebook.com"
},
"expected_status": 200,
"intent": "happy_path",
"expected_behavior": "Returns DNS resolution mapping for provided hostnames",
"metrics": ["latency", "status_code"],
"validation": {"field": "google.com", "type": "string", "min_length": 1}
},
{
"name": "dns_reverse_lookup",
"endpoint": "/dns/reverse",
"method": "GET",
"headers": {},
"payload": {
"key": "API_KEY_PLACEHOLDER",
"ips": "8.8.8.8,1.1.1.1"
},
"expected_status": 200,
"intent": "happy_path",
"expected_behavior": "Returns reverse DNS hostnames for provided IPs",
"metrics": ["latency", "status_code"],
"validation": {"field": "8.8.8.8", "type": "array", "min_length": 1}
},
{
"name": "search_facets_list",
"endpoint": "/shodan/host/search/facets",
"method": "GET",
"headers": {},
"payload": {
"key": "API_KEY_PLACEHOLDER"
},
"expected_status": 200,
"intent": "happy