```json
{
"tests": [
{
"name": "test_markets_endpoint",
"endpoint": "/v1/markets.json",
"method": "GET",
"headers": {},
"payload": {},
"expected_status": 200,
"expected_behavior": "Returns array of Bitcoin markets with exchange and symbol info",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {
"field": "root",
"type": "array",
"min_length": 1,
"item_fields": ["symbol", "currency"]
}
},
{
"name": "test_ticker_endpoint",
"endpoint": "/v1/ticker.json",
"method": "GET",
"headers": {},
"payload": {},
"expected_status": 200,
"expected_behavior": "Returns current market data for all exchanges",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {
"field": "root",
"type": "array",
"min_length": 1,
"item_fields": ["symbol", "latest_trade", "bid", "ask"]
}
},
{
"name": "test_weighted_prices",
"endpoint": "/v1/weighted_prices.json",
"method": "GET",
"headers": {},
"payload": {},
"expected_status": 200,
"expected_behavior": "Returns weighted average Bitcoin prices",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {
"field": "root",
"type": "object",
"required_fields": ["USD", "EUR"]
}
},
{
"name": "test_exchanges_endpoint",
"endpoint": "/v2/exchanges",
"method": "GET",
"headers": {},
"payload": {},
"expected_status": 200,
"expected_behavior": "Returns exchange information and statistics",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {
"field": "root",
"type": "array",
"min_length": 1,
"item_fields": ["name", "url"]
}
},
{
"name": "test_historical_trades",
"endpoint": "/v1/trades.csv",
"method": "GET",
"headers": {},
"payload": {},
"expected_status": 200,
"expected_behavior": "Returns CSV format historical trade data",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {
"content_type": "text/csv",
"min_length": 100
}
},
{
"name": "test_invalid_endpoint",
"endpoint": "/v1/nonexistent",
"method": "GET",
"headers": {},
"payload": {},
"expected_status": 404,
"expected_behavior": "Returns 404 for non-existent endpoints",
"metrics": ["status_code", "error_handling"],
"validation": {
"status_code": 404
}
}
],
"pricing_probes": [
{
"name": "verify_rate_limit_headers",
"description": "Check if API returns rate limiting headers",
"endpoint": "/v1/ticker.json",
"method": "GET",
"payload": {},
"check": "response.headers should include rate limit info (X-RateLimit-* or similar)"
},
{
"name": "verify_free_access",
"description": "Confirm no authentication required for basic endpoints",
"endpoint": "/v1/markets.json",
"method": "GET",
"payload": {},
"check": "response.status should be 200 without any API keys or auth headers"
},
{
"name": "test_data_freshness",
"description": "Verify market data is recent and not stale",
"endpoint": "/v1/ticker.json",
"method": "GET",
"payload": {},
"check": "response data timestamps should be within last few minutes"
}
],
"stress_profile": {
"concurrent_requests": 3,
"duration_seconds": 60,
"ramp_up": true,
"respect_rate_limit": true,
"target_rpm": 50
}
}
```