```json
{
"tests": [
{
"name": "basic_auth_test",
"endpoint": "/rest/v2/tasks",
"method": "GET",
"headers": {
"Authorization": "Bearer {token}"
},
"payload": {},
"expected_status": 200,
"expected_behavior": "Returns user's tasks, verifying auth works",
"metrics": ["latency", "status_code", "auth_success"],
"validation": {
"type": "response_structure",
"check": "valid_json_response"
}
},
{
"name": "get_projects",
"endpoint": "/rest/v2/projects",
"method": "GET",
"headers": {
"Authorization": "Bearer {token}"
},
"payload": {},
"expected_status": 200,
"expected_behavior": "Returns user's projects list",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {
"field": "root",
"type": "array"
}
},
{
"name": "get_workspace_invitations",
"endpoint": "/api/v1/workspaces/invitations/all",
"method": "GET",
"headers": {
"Authorization": "Bearer {token}"
},
"payload": {},
"expected_status": 200,
"expected_behavior": "Returns workspace invitations (may be empty)",
"metrics": ["latency", "status_code"],
"validation": {
"type": "json_response"
}
},
{
"name": "create_task",
"endpoint": "/rest/v2/tasks",
"method": "POST",
"headers": {
"Authorization": "Bearer {token}",
"Content-Type": "application/json"
},
"payload": {
"content": "Test task from Prowl benchmark",
"description": "Automated test task"
},
"expected_status": 200,
"expected_behavior": "Successfully creates a new task",
"metrics": ["latency", "accuracy", "status_code"],
"validation": {
"field": "id",
"type": "string",
"required": true
}
},
{
"name": "invalid_auth_test",
"endpoint": "/rest/v2/tasks",
"method": "GET",
"headers": {
"Authorization": "Bearer invalid_token_12345"
},
"payload": {},
"expected_status": 401,
"expected_behavior": "Returns unauthorized error for invalid token",
"metrics": ["status_code", "error_handling"],
"validation": {
"type": "error_response",
"expected_status": 401
}
},
{
"name": "missing_auth_test",
"endpoint": "/rest/v2/tasks",
"method": "GET",
"headers": {},
"payload": {},
"expected_status": 401,
"expected_behavior": "Returns unauthorized error when no auth provided",
"metrics": ["status_code", "error_handling"],
"validation": {
"type": "error_response",
"expected_status": 401
}
},
{
"name": "malformed_request_test",
"endpoint": "/rest/v2/tasks",
"method": "POST",
"headers": {
"Authorization": "Bearer {token}",
"Content-Type": "application/json"
},
"payload": {
"invalid_field": "test"
},
"expected_status": 400,
"expected_behavior": "Returns bad request error for missing required fields",
"metrics": ["status_code", "error_handling"],
"validation": {
"type": "error_response",
"expected_status": 400
}
}
],
"pricing_probes": [
{
"name": "verify_subscription_access",
"description": "Check if API access varies by subscription tier",
"endpoint": "/rest/v2/tasks",
"method": "GET",
"payload": {},
"check": "response should succeed for valid token, features may vary by plan"
},
{
"name": "check_rate_limiting",
"description": "Test if rate limits are enforced",
"endpoint": "/rest/v2/projects",
"method": "GET",
"payload": {},
"check": "monitor for 429 status codes or rate limit headers"
}
],
"stress_profile": {
"concurrent_requests": 3,
"duration_seconds": 15,
"ramp_up": true
}
}
```