Files
root d715fca5f5 Aufteilung der README.md in modulare Dokumentation
- Haupt-README.md behält Übersicht und Links zu detaillierten READMEs
- steps/advoware_proxy/README.md: Detaillierte Dokumentation der 4 Proxy-Steps
- steps/vmh/README.md: Detaillierte Dokumentation der Webhook-Receiver und Sync-Steps
- Verbesserte Navigation und modulare Dokumentationsstruktur
2025-10-20 11:46:30 +00:00

184 lines
4.4 KiB
Markdown

# Advoware API Proxy Steps
Dieser Ordner enthält die API-Proxy-Steps für die Advoware-Integration. Jeder Step implementiert eine HTTP-Methode als universellen Proxy zur Advoware-API.
## Übersicht
Die Proxy-Steps fungieren als transparente Schnittstelle zwischen Clients und der Advoware-API. Sie handhaben Authentifizierung, Fehlerbehandlung und Logging automatisch.
## Steps
### 1. GET Proxy (`advoware_api_proxy_get_step.py`)
**Zweck:** Universeller Proxy für GET-Requests an die Advoware-API.
**Konfiguration:**
- **Type:** api
- **Name:** Advoware Proxy GET
- **Path:** `/advoware/proxy`
- **Method:** GET
- **Flows:** advoware
**Funktionalität:**
- Extrahiert den Ziel-Endpoint aus Query-Parametern (`endpoint`)
- Übergibt alle anderen Query-Parameter als API-Parameter
- Gibt das Ergebnis als JSON zurück
**Beispiel Request:**
```
GET /advoware/proxy?endpoint=employees&limit=10&offset=0
```
**Response:**
```json
{
"result": {
"data": [...],
"total": 100
}
}
```
### 2. POST Proxy (`advoware_api_proxy_post_step.py`)
**Zweck:** Universeller Proxy für POST-Requests an die Advoware-API.
**Konfiguration:**
- **Type:** api
- **Name:** Advoware Proxy POST
- **Path:** `/advoware/proxy`
- **Method:** POST
- **Flows:** advoware
**Funktionalität:**
- Extrahiert den Ziel-Endpoint aus Query-Parametern (`endpoint`)
- Verwendet den Request-Body als JSON-Daten für die API
- Erstellt neue Ressourcen in Advoware
**Beispiel Request:**
```
POST /advoware/proxy?endpoint=employees
Content-Type: application/json
{
"name": "John Doe",
"email": "john@example.com"
}
```
### 3. PUT Proxy (`advoware_api_proxy_put_step.py`)
**Zweck:** Universeller Proxy für PUT-Requests an die Advoware-API.
**Konfiguration:**
- **Type:** api
- **Name:** Advoware Proxy PUT
- **Path:** `/advoware/proxy`
- **Method:** PUT
- **Flows:** advoware
**Funktionalität:**
- Extrahiert den Ziel-Endpoint aus Query-Parametern (`endpoint`)
- Verwendet den Request-Body als JSON-Daten für Updates
- Aktualisiert bestehende Ressourcen in Advoware
**Beispiel Request:**
```
PUT /advoware/proxy?endpoint=employees/123
Content-Type: application/json
{
"name": "John Smith",
"email": "johnsmith@example.com"
}
```
### 4. DELETE Proxy (`advoware_api_proxy_delete_step.py`)
**Zweck:** Universeller Proxy für DELETE-Requests an die Advoware-API.
**Konfiguration:**
- **Type:** api
- **Name:** Advoware Proxy DELETE
- **Path:** `/advoware/proxy`
- **Method:** DELETE
- **Flows:** advoware
**Funktionalität:**
- Extrahiert den Ziel-Endpoint aus Query-Parametern (`endpoint`)
- Löscht Ressourcen in Advoware
**Beispiel Request:**
```
DELETE /advoware/proxy?endpoint=employees/123
```
## Gemeinsame Features
### Authentifizierung
Alle Steps verwenden den `AdvowareAPI` Service für automatische Token-Verwaltung und Authentifizierung.
### Fehlerbehandlung
- **400 Bad Request:** Fehlender `endpoint` Parameter
- **500 Internal Server Error:** API-Fehler oder Exceptions
### Logging
Detaillierte Logs für:
- Eingehende Requests
- API-Calls an Advoware
- Fehler und Exceptions
### Sicherheit
- Keine direkte Weitergabe sensibler Daten
- Authentifizierung über Service-Layer
- Input-Validation für erforderliche Parameter
## Testing
### Unit Tests
```bash
# Test GET Proxy
curl -X GET "http://localhost:3000/advoware/proxy?endpoint=employees"
# Test POST Proxy
curl -X POST "http://localhost:3000/advoware/proxy?endpoint=employees" \
-H "Content-Type: application/json" \
-d '{"name": "Test Employee"}'
# Test PUT Proxy
curl -X PUT "http://localhost:3000/advoware/proxy?endpoint=employees/1" \
-H "Content-Type: application/json" \
-d '{"name": "Updated Employee"}'
# Test DELETE Proxy
curl -X DELETE "http://localhost:3000/advoware/proxy?endpoint=employees/1"
```
### Integration Tests
Überprüfen Sie die Logs für korrekte API-Calls:
```bash
motia logs | grep "Proxying request to Advoware"
```
## Konfiguration
### Umgebungsvariablen
Stellen Sie sicher, dass folgende Variablen gesetzt sind:
- `ADVOWARE_BASE_URL`
- `ADVOWARE_USERNAME`
- `ADVOWARE_PASSWORD`
### Dependencies
- `services/advoware.py` - Advoware API Client
- `config.py` - Konfigurationsmanagement
## Erweiterungen
### Geplante Features
- Request/Response Caching
- Rate Limiting
- Request Validation Schemas
- Batch-Operations Support
### Custom Endpoints
Für spezifische Endpoints können zusätzliche Steps erstellt werden, die direkt auf bestimmte Ressourcen zugreifen.