API Reference Overview
SPYDER provides comprehensive APIs for data ingestion, queue management, and system integration in distributed internet mapping deployments.
API Categories
Data Ingestion API
The primary interface for receiving processed domain relationship data from SPYDER probes.
- Batch Ingestion: Efficient bulk data submission
- Real-time Processing: Low-latency data pipeline integration
- Reliability: Built-in retry logic and error handling
- Authentication: mTLS and API key support
Queue Management API
Redis-based distributed work queue for coordinating probe instances.
- Work Distribution: Automatic load balancing across probes
- Lease Management: Reliable work item processing
- Failure Recovery: Automatic retry and dead letter handling
- Monitoring: Queue depth and processing metrics
Health Check API
System health and readiness endpoints for operational monitoring.
- Liveness Probes: Service availability checks
- Readiness Probes: Service capability verification
- Dependency Checks: External service connectivity status
- Metrics Exposure: Prometheus-compatible metrics
Data Model Overview
Entity Types
Nodes
- Domain Nodes: Hostnames and apex domains
- IP Nodes: IPv4 and IPv6 addresses
- Certificate Nodes: TLS certificate metadata
Edges
Directed relationships between entities:
RESOLVES_TO
: Domain → IP (DNS A/AAAA)USES_NS
: Domain → Nameserver (DNS NS)ALIAS_OF
: Domain → CNAME targetUSES_MX
: Domain → Mail server (DNS MX)LINKS_TO
: Domain → External domain (HTML links)USES_CERT
: Domain → Certificate (TLS handshake)
Batch Structure
json
{
"probe_id": "prod-us-west-1",
"run_id": "run-20231201-143000",
"nodes_domain": [...],
"nodes_ip": [...],
"nodes_cert": [...],
"edges": [...]
}
Authentication Methods
Mutual TLS (mTLS)
Recommended for production deployments:
- Client Certificates: X.509 client certificate authentication
- Certificate Validation: Server validates client certificate chain
- Encryption: All data encrypted in transit
- Non-Repudiation: Strong identity verification
API Key Authentication
Alternative for development and testing:
- Header-Based:
Authorization: Bearer <api-key>
- Query Parameter:
?api_key=<api-key>
(not recommended) - Rate Limiting: Per-key request throttling
- Revocation: Immediate key deactivation capability
Base URLs
Production Environment
https://api.spyder.example.com/v1/
Development Environment
https://api-dev.spyder.example.com/v1/
Local Development
http://localhost:8080/v1/
Common Headers
Required Headers
http
Content-Type: application/json
User-Agent: spyder-probe/1.0
Authentication Headers
http
# mTLS (automatic with client certificates)
# OR API Key
Authorization: Bearer your-api-key-here
Optional Headers
http
X-Request-ID: unique-request-identifier
X-Probe-Version: 1.2.3
X-Run-ID: run-20231201-143000
Response Formats
Success Response
http
HTTP/1.1 200 OK
Content-Type: application/json
{
"status": "success",
"message": "Batch processed successfully",
"batch_id": "batch-20231201-143001-001",
"items_processed": 1234,
"processing_time_ms": 450
}
Error Response
http
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"status": "error",
"error_code": "INVALID_BATCH_FORMAT",
"message": "Invalid JSON in request body",
"details": {
"line": 42,
"column": 15,
"expected": "string"
},
"request_id": "req-20231201-143001-abc"
}
Rate Limits
Default Limits
- Batch API: 100 requests/minute per client
- Queue API: 1000 requests/minute per client
- Health API: No limits (monitoring use)
Rate Limit Headers
http
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1640995260
Rate Limit Exceeded
http
HTTP/1.1 429 Too Many Requests
Retry-After: 60
{
"status": "error",
"error_code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded, retry after 60 seconds"
}
Error Codes
Client Errors (4xx)
INVALID_REQUEST
: Malformed request structureAUTHENTICATION_REQUIRED
: Missing or invalid authenticationAUTHORIZATION_DENIED
: Insufficient permissionsINVALID_BATCH_FORMAT
: JSON parsing errorsVALIDATION_FAILED
: Data validation errorsRATE_LIMIT_EXCEEDED
: Too many requests
Server Errors (5xx)
INTERNAL_ERROR
: Unexpected server errorDATABASE_UNAVAILABLE
: Backend storage issuesPROCESSING_TIMEOUT
: Batch processing timeoutSERVICE_UNAVAILABLE
: Temporary service disruption
Pagination
APIs returning large result sets support cursor-based pagination:
Request Parameters
http
GET /v1/batches?cursor=eyJpZCI6MTIzNH0&limit=100
Response Format
json
{
"data": [...],
"pagination": {
"next_cursor": "eyJpZCI6MTMzOH0",
"has_more": true,
"total_count": 5420
}
}
Versioning
API Versioning Strategy
- URL Versioning:
/v1/
,/v2/
in path - Backward Compatibility: v1 supported for 12 months after v2 release
- Version Headers: Optional
Accept: application/vnd.spyder.v1+json
Deprecation Process
- Announcement: 6 months advance notice
- Warning Headers:
Warning: 299 - "Deprecated API version"
- Migration Period: 12 months parallel support
- Sunset: Complete removal of deprecated version
SDKs and Libraries
Official SDKs
- Go:
go get github.com/gustycube/spyder-go-sdk
- Python:
pip install spyder-client
- JavaScript:
npm install @spyder/client
Community Libraries
- Java: Third-party Maven packages available
- Ruby: Community-maintained gem
- PHP: Composer packages
Support and Resources
Documentation
- API Reference: Detailed endpoint documentation
- Data Model: Complete schema definitions
- Integration Guide: Step-by-step implementation
- Examples: Code samples in multiple languages
Community Resources
- GitHub Issues: Bug reports and feature requests
- Discussion Forums: Implementation questions and best practices
- Stack Overflow: Tagged questions with
spyder-api
Enterprise Support
- Technical Support: Dedicated support engineers
- SLA Guarantees: Response time commitments
- Custom Integrations: Professional services available
- Training Programs: API integration workshops