5.5 KiB
5.5 KiB
Simple Data Collector API - Usage Examples
Starting the Server
Using Virtual Environment (Recommended)
# Create virtual environment (if not already created)
python -m venv venv
# Activate virtual environment
# On Linux/Mac:
source venv/bin/activate
# On Windows:
# venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run the server
python main.py
The server will start on http://localhost:8000
Simple Data Collection
Basic Usage - curl (with Bearer Authentication)
# Send simple comma-separated data to run1 (requires input token)
curl -X POST http://localhost:8000/api/run1/ \
-H "Authorization: Bearer input_token_123" \
-d "host_a,is ok"
# Send data to different runs
curl -X POST http://localhost:8000/api/run1/ \
-H "Authorization: Bearer input_token_123" \
-d "host_b,is ok"
curl -X POST http://localhost:8000/api/run1/ \
-H "Authorization: Bearer input_token_123" \
-d "host_c,failed"
curl -X POST http://localhost:8000/api/run2/ \
-H "Authorization: Bearer input_token_123" \
-d "server_x,healthy"
PowerShell Examples (with Bearer Authentication)
# Send OK status from PowerShell (requires input token)
$hostname = $env:COMPUTERNAME
$status = "is ok"
$headers = @{ "Authorization" = "Bearer input_token_123" }
Invoke-RestMethod -Uri "http://your-server:8000/api/run1/" -Method Post -Body "$hostname,$status" -Headers $headers
# Send error status
$hostname = $env:COMPUTERNAME
$status = "failed - disk full"
$headers = @{ "Authorization" = "Bearer input_token_123" }
Invoke-RestMethod -Uri "http://your-server:8000/api/run1/" -Method Post -Body "$hostname,$status" -Headers $headers
wget Examples (with Bearer Authentication)
# Send data using wget (requires input token)
wget --post-data="host_d,is ok" \
--header="Authorization: Bearer input_token_123" \
http://localhost:8000/api/run1/
wget --post-data="host_e,network error" \
--header="Authorization: Bearer input_token_123" \
http://localhost:8000/api/run1/
Multiple Endpoints (with Bearer Authentication)
# Different runs create separate directories and files (requires input token)
curl -X POST http://localhost:8000/api/daily-check/ \
-H "Authorization: Bearer input_token_123" \
-d "server1,ok"
curl -X POST http://localhost:8000/api/backup-status/ \
-H "Authorization: Bearer input_token_123" \
-d "server1,completed"
curl -X POST http://localhost:8000/api/security-scan/ \
-H "Authorization: Bearer input_token_123" \
-d "server1,clean"
Retrieving Results
View all results for a run (with Bearer Authentication)
# Get all results for run1 (requires read token)
curl -H "Authorization: Bearer read_token_456" \
http://localhost:8000/results/run1/
# Get results for other runs
curl -H "Authorization: Bearer read_token_456" \
http://localhost:8000/results/daily-check/
curl -H "Authorization: Bearer read_token_456" \
http://localhost:8000/results/backup-status/
PowerShell - Get results (with Bearer Authentication)
# Get results from PowerShell (requires read token)
$headers = @{ "Authorization" = "Bearer read_token_456" }
Invoke-RestMethod -Uri "http://your-server:8000/results/run1/" -Method Get -Headers $headers
File Output
Data is saved to text files with timestamps:
Directory Structure
input/
├── run1/
│ └── results.txt
├── daily-check/
│ └── results.txt
└── backup-status/
└── results.txt
Example File Content (input/run1/results.txt)
2025-01-06 10:30:15 - host_a,is ok
2025-01-06 10:30:22 - host_b,is ok
2025-01-06 10:30:45 - host_c,failed
2025-01-06 10:31:02 - host_d,is ok
Real-World Intune PowerShell Example (with Bearer Authentication)
# Place this in your Intune PowerShell script
try {
# Your script logic here
Write-Host "Script executed successfully"
# Send success status (requires input token)
$hostname = $env:COMPUTERNAME
$headers = @{ "Authorization" = "Bearer input_token_123" }
Invoke-RestMethod -Uri "http://your-api-server:8000/api/intune-deployment/" -Method Post -Body "$hostname,success" -Headers $headers
} catch {
# Send failure status with error
$hostname = $env:COMPUTERNAME
$error = $_.Exception.Message
$headers = @{ "Authorization" = "Bearer input_token_123" }
Invoke-RestMethod -Uri "http://your-api-server:8000/api/intune-deployment/" -Method Post -Body "$hostname,failed - $error" -Headers $headers
}
Health Check
curl http://localhost:8000/health
API Documentation
Visit http://localhost:8000/docs
for interactive API documentation.
Authentication Tokens
Required Tokens
- Input Token (for POST operations):
input_token_123
- Read Token (for GET operations):
read_token_456
Security Notes
- POST endpoints require the
input_token_123
bearer token - GET endpoints require the
read_token_456
bearer token - Change these tokens in
main.py
lines 22-23 for production use
Key Features
- Simple Input: Just send plain text data (e.g., "host_a,is ok")
- Bearer Authentication: Separate tokens for input and read operations
- Automatic Directories: Each run name creates its own directory
- Timestamped Entries: Every entry gets a timestamp
- Multiple Runs: Support multiple concurrent data collection runs
- Easy Retrieval: Get all results via REST API
- Plain Text Output: Results saved as simple text files