```json
{
"tests": [
{
"name": "test_list_trading_pairs",
"endpoint": "/v1/markets",
"method": "GET",
"headers": {
"Authorization": "Bearer <api_key>"
},
"payload": {},
"expected_status": 200,
"expected_behavior": "Returns list of trading pairs",
"metrics": ["latency", "status_code"],
"validation": {"field": "data", "type": "array", "min_length": 1}
},
{
"name": "test_price_data",
"endpoint": "/v1/ticker",
"method": "GET",
"headers": {
"Authorization": "Bearer <api_key>"
},
"payload": {},
"expected_status": 200,
"expected_behavior": "Returns price data for trading pairs",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {"field": "data", "type": "object"}
},
{
"name": "test_invalid_authentication",
"endpoint": "/v1/markets",
"method": "GET",
"headers": {
"Authorization": "Bearer invalid_key"
},
"payload": {},
"expected_status": 401,
"expected_behavior": "Returns unauthorized error for invalid API key",
"metrics": ["status_code"],
"validation": {"field": "error", "type": "string"}
},
{
"name": "test_missing_authentication",
"endpoint": "/v1/markets",
"method": "GET",
"headers": {},
"payload": {},
"expected_status": 401,
"expected_behavior": "Returns unauthorized error for missing API key",
"metrics": ["status_code"],
"validation": {"field": "error", "type": "string"}
},
{
"name": "test_rate_limit_headers",
"endpoint": "/v1/markets",
"method": "GET",
"headers": {
"Authorization": "Bearer <api_key>"
},
"payload": {},
"expected_status": 200,
"expected_behavior": "Includes rate limit headers",
"metrics": ["status_code"],
"validation": {"field": "headers", "type": "object", "required_fields": ["X-RateLimit-Limit", "X-RateLimit-Remaining"]}
},
{
"name": "test_invalid_trading_pair_error",
"endpoint": "/v1/ticker",
"method": "GET",
"headers": {
"Authorization": "Bearer <api_key>"
},
"payload": {
"symbol": "INVALID_PAIR"
},
"expected_status": 400,
"expected_behavior": "Returns error for invalid trading pair",
"metrics": ["status_code"],
"validation": {"field": "error", "type": "string"}
}
],
"pricing_probes": [
{
"name": "verify_request_pricing",
"description": "Ensuring each request is logged as per pricing model",
"endpoint": "/v1/ticker",
"method": "GET",
"headers": {
"Authorization": "Bearer <api_key>"
},
"payload": {},
"check": "response.headers['X-Request-Count'] should increment with each call"
}
],
"stress_profile": {
"concurrent_requests": 5,
"duration_seconds": 10,
"ramp_up": true
}
}
```