myCRM Bruno API Collection

Diese Bruno-Collection enthält alle API-Endpunkte für die myCRM-Anwendung.

Setup

  1. Bruno installieren

    # Via npm
    npm install -g @usebruno/cli
    
    # Oder Desktop-App von https://www.usebruno.com/ herunterladen
    
  2. Collection öffnen

    • Bruno Desktop-App öffnen
    • "Open Collection" wählen
    • Diesen bruno/ Ordner auswählen
  3. Environment konfigurieren

    • In Bruno: Environment "local" auswählen
    • Session-Cookie holen:
      # Option 1: Aus Browser DevTools kopieren
      # 1. In Browser bei localhost:8000 einloggen
      # 2. DevTools → Application → Cookies
      # 3. PHPSESSID kopieren
      
      # Option 2: Via Symfony CLI
      symfony server:log
      # Nach Login den Cookie aus den Logs kopieren
      
    • In environments/local.bru den sessionCookie Wert eintragen

Verfügbare Sammlungen

Git Integration

Alle Endpunkte für die Git-Repository-Integration:

  • Get Git Repositories - Liste aller Repositories eines Projekts
  • Get Single Repository - Details eines einzelnen Repositories
  • Test Repository Connection - Verbindung testen (10 Commits)
  • Get Commits - Commit-Historie abrufen
  • Get Contributions - Tägliche Contributions für Heatmap
  • Refresh Cache - Cache manuell leeren
  • Create Repository - Neues Repository anlegen
  • Update Repository - Repository aktualisieren
  • Delete Repository - Repository löschen

Authentifizierung

Die API verwendet Session-basierte Authentifizierung:

Cookie: PHPSESSID=your_session_id_here

Die Session wird automatisch von allen Requests verwendet, wenn sie im Environment konfiguriert ist.

Sicherheit

Alle Endpunkte sind durch Symfony Security und Voter geschützt:

  • Authentication: Session-Cookie erforderlich
  • Authorization: GitRepositoryVoter prüft VIEW/EDIT/DELETE Rechte
  • Project-Filtering: Nur Repositories des eigenen Projekts sind sichtbar

Caching

Die Git-Integration verwendet Symfony Cache:

  • Commits: 15 Minuten (900s)
  • Contributions: 1 Stunde (3600s)
  • Manuelles Löschen: POST /api/git-repos/{id}/refresh-cache

Provider-Typen

GitHub

{
  "provider": "github",
  "owner": "username",
  "repo": "repository",
  "personalAccessToken": "ghp_xxxxx"
}

Gitea

{
  "provider": "gitea",
  "owner": "username",
  "repo": "repository",
  "personalAccessToken": "gitea_token",
  "giteaUrl": "https://gitea.example.com"
}

Local

{
  "provider": "local",
  "localPath": "/absolute/path/to/repo"
}

Testing

  1. Repository-Verbindung testen:

    POST /api/git-repos/{id}/test
    
  2. Commits abrufen:

    GET /api/git-repos/{id}/commits?branch=main&limit=50
    
  3. Contributions für Heatmap:

    GET /api/git-repos/{id}/contributions?branch=main&year=2025
    

Troubleshooting

401 Unauthorized

  • Session-Cookie abgelaufen → Neu einloggen und Cookie aktualisieren
  • Cookie falsch formatiert → Format: PHPSESSID=value

403 Forbidden

  • Voter verweigert Zugriff → Repository gehört nicht zum eigenen Projekt
  • Fehlende Berechtigungen → Projekt-Zugriff prüfen

404 Not Found

  • Repository existiert nicht
  • Falsche ID verwendet
  • Repository wurde gelöscht

500 Internal Server Error

  • Git-Fehler → Repository-Einstellungen prüfen (owner/repo/branch)
  • Token ungültig → Personal Access Token erneuern
  • Cache-Fehler → var/cache/ Ordner prüfen

Weitere Informationen