Skip to content

Sprint 0: Create REST API Endpoints for Monitor Management #12

Description

@CLoaKY233

Epic: PingSpider MVP - Distributed Uptime & Latency Monitor

Sprint: 0

Story Points: 5

Description

Implement REST API endpoints for creating, reading, updating, and deleting monitoring endpoints.

Acceptance Criteria

  • POST /api/endpoints - Create new monitoring endpoint
  • GET /api/endpoints - List all monitoring endpoints
  • GET /api/endpoints/{id} - Get specific endpoint details
  • PUT /api/endpoints/{id} - Update endpoint configuration
  • DELETE /api/endpoints/{id} - Remove endpoint from monitoring
  • Input validation for all endpoints
  • Proper error handling with appropriate HTTP status codes
  • API documentation (OpenAPI/Swagger comments)

Request/Response Models

Create Endpoint Request

{
  "name": "My API",
  "url": "https://api.example.com/health",
  "check_interval": 60,
  "headers": {"Authorization": "Bearer token"},
  "expected_status_code": 200,
  "content_keyword": "healthy"
}

Endpoint Response

{
  "id": "endpoint:xyz",
  "name": "My API",
  "url": "https://api.example.com/health",
  "status": "up",
  "last_check": "2025-12-07T12:00:00Z",
  "uptime_percentage": 99.9
}

Technical Notes

  • Use Axum extractors (Json, Path, State)
  • Validate URL format using url crate
  • Check interval min: 30s, max: 3600s
  • Store headers as JSON in SurrealDB

Dependencies

  • Add url crate for validation
  • Add validator crate for input validation

Files to Create/Modify

  • src/rts/endpoints.rs
  • src/monitoring/validation.rs
  • src/lib.rs (register routes)

Definition of Done

  • All CRUD endpoints implemented
  • Input validation works correctly
  • Error responses follow consistent format
  • Manual API testing completed
  • Code reviewed and merged to main

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions