Zum Hauptinhalt springen

Überblick

Die Teamzusammenarbeits-API ermöglicht Autohäusern mit mehreren Nutzern, Teams zu verwalten, Mitglieder einzuladen, Rollen zuzuweisen und Zugriffsrechte zu steuern. Ideal für Organisationen mit mehreren Vertriebsmitarbeitern, Managern und Administratoren.

Hauptfunktionen

Teamverwaltung

Erstellen und verwalten Sie mehrere Teams innerhalb Ihrer Organisation

Mitgliedereinladungen

Laden Sie Teammitglieder per E-Mail mit Rollen zu

Rollenbasierter Zugriff

Steuern Sie, worauf Teammitglieder zugreifen und was sie ändern können

Audit-Trail

Verfolgen Sie Teamaktivitäten und Mitgliederänderungen

Endpunkte

Alle Teams auflisten

GET
endpoint
/teams
Ruft alle Teams mit optionaler Filterung und Sortierung ab. Query-Parameter:
Suche nach Teamname oder Slug
ownerId
string
Filter nach Team-Owner-ID
sortBy
enum
Sortierfeld: name, createdAt (Standard: name)
sortOrder
enum
Sortierrichtung: asc (Standard), desc
Antwort:
[
  {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Downtown Dealership",
    "slug": "downtown-dealership",
    "ownerId": "owner_uuid",
    "createdAt": "2024-01-15T10:30:00Z",
    "owner": {
      "id": "owner_uuid",
      "name": "John Doe",
      "email": "[email protected]"
    },
    "memberCount": 12,
    "roleCount": 4,
    "invitationCount": 2
  }
]

Meine Teams abrufen

GET
endpoint
/teams/my
Ruft alle Teams ab, in denen der aktuelle Nutzer Mitglied oder Team-Owner ist. Antwort: Array von Teamobjekten, in denen der Nutzer Mitglied ist.

Team nach ID abrufen

GET
endpoint
/teams/
Ruft detaillierte Informationen zu einem bestimmten Team ab. Path-Parameter:
id
string
erforderlich
Team-UUID
Query-Parameter:
includeDetails
boolean
Mitglieder, Rollen und ausstehende Einladungen einbeziehen (Standard: false)
Antwort:
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "Downtown Dealership",
  "slug": "downtown-dealership",
  "ownerId": "owner_uuid",
  "createdAt": "2024-01-15T10:30:00Z",
  "owner": {
    "id": "owner_uuid",
    "name": "John Doe",
    "email": "[email protected]"
  },
  "members": [
    {
      "id": "member_uuid",
      "name": "Jane Smith",
      "email": "[email protected]",
      "image": "https://...",
      "createdAt": "2024-01-15T10:30:00Z",
      "role": {
        "id": "role_uuid",
        "name": "Sales Manager",
        "permissions": ["view_inventory", "edit_inventory", "view_analytics"]
      },
      "isOwner": false
    }
  ],
  "memberCount": 12,
  "roleCount": 4,
  "invitationCount": 2
}

Team nach Slug abrufen

GET
endpoint
/teams/slug/
Ruft Teaminformationen über den URL-freundlichen Slug ab. Path-Parameter:
slug
string
erforderlich
Team-Slug (z. B. “downtown-dealership”)

Team erstellen

POST
endpoint
/teams
Erstellt ein neues Team. Der authentifizierte Nutzer wird Team-Owner. Anfrage-Body:
{
  "name": "North Branch Dealership",
  "slug": "north-branch"
}
name
string
erforderlich
Anzeigename des Teams (max. 100 Zeichen)
slug
string
erforderlich
URL-freundlicher Bezeichner (nur Kleinbuchstaben, Zahlen, Bindestriche; max. 50 Zeichen)
Antwort:
{
  "id": "new_team_uuid",
  "name": "North Branch Dealership",
  "slug": "north-branch",
  "ownerId": "current_user_uuid",
  "createdAt": "2024-01-17T11:00:00Z"
}

Team aktualisieren

PATCH
endpoint
/teams/
Aktualisiert Teaminformationen. Nur der Team-Owner kann Teamdetails ändern. Path-Parameter:
id
string
erforderlich
Team-UUID
Anfrage-Body:
{
  "name": "North Branch Dealership - Updated",
  "slug": "north-branch-updated"
}

Team löschen

DELETE
endpoint
/teams/
Löscht ein Team. Nur der Team-Owner kann ein Team löschen, und es darf keine aktiven Mitglieder haben (außer dem Team-Owner). Path-Parameter:
id
string
erforderlich
Team-UUID
Teams mit aktiven Mitgliedern können nicht gelöscht werden. Entfernen Sie zuerst alle Mitglieder oder übertragen Sie den Besitz.

Teammitglied einladen

POST
endpoint
/teams//invite
Lädt einen Nutzer mit einer bestimmten Rolle in das Team ein. Path-Parameter:
teamId
string
erforderlich
Team-UUID
Anfrage-Body:
{
  "email": "[email protected]",
  "roleId": "role_uuid"
}
email
string
erforderlich
E-Mail-Adresse des einzuladenden Nutzers
roleId
string
erforderlich
Rollen-UUID für das Mitglied
Antwort:
{
  "id": "invitation_uuid",
  "teamId": "team_uuid",
  "userId": "invited_user_uuid",
  "email": "[email protected]",
  "roleId": "role_uuid",
  "token": "invitation_token",
  "expiresAt": "2024-01-24T11:00:00Z",
  "user": {
    "id": "invited_user_uuid",
    "name": "New Member",
    "email": "[email protected]"
  },
  "role": {
    "id": "role_uuid",
    "name": "Salesperson"
  }
}
Der eingeladene Nutzer erhält eine E-Mail mit Einladungslink. Die Einladung verfällt nach 7 Tagen.

Teameinladung annehmen

POST
endpoint
/teams/accept-invitation
Nimmt eine Teameinladung mit dem Token aus der Einladungs-E-Mail an. Anfrage-Body:
{
  "token": "invitation_token_from_email"
}
token
string
erforderlich
Einladungs-Token
Antwort:
{
  "id": "membership_uuid",
  "teamId": "team_uuid",
  "userId": "user_uuid",
  "roleId": "role_uuid",
  "team": {
    "id": "team_uuid",
    "name": "Downtown Dealership",
    "slug": "downtown-dealership"
  },
  "role": {
    "id": "role_uuid",
    "name": "Salesperson",
    "permissions": ["view_inventory", "create_leads"]
  }
}

Teammitglieder abrufen

GET
endpoint
/teams//members
Ruft alle Mitglieder eines Teams mit Rollen und Berechtigungen ab. Path-Parameter:
teamId
string
erforderlich
Team-UUID
Antwort:
[
  {
    "id": "member_uuid",
    "name": "Jane Smith",
    "email": "[email protected]",
    "image": "https://...",
    "createdAt": "2024-01-15T10:30:00Z",
    "role": {
      "id": "role_uuid",
      "name": "Sales Manager",
      "permissions": [
        "view_inventory",
        "edit_inventory",
        "delete_inventory",
        "view_analytics",
        "manage_leads",
        "invite_members"
      ]
    },
    "isOwner": false
  }
]

Ausstehende Einladungen abrufen

GET
endpoint
/teams//invitations
Ruft alle ausstehenden (noch nicht angenommenen) Einladungen eines Teams ab. Path-Parameter:
teamId
string
erforderlich
Team-UUID
Antwort:
[
  {
    "id": "invitation_uuid",
    "teamId": "team_uuid",
    "email": "[email protected]",
    "roleId": "role_uuid",
    "expiresAt": "2024-01-24T11:00:00Z",
    "user": {
      "id": "user_uuid",
      "name": "Pending User",
      "email": "[email protected]"
    },
    "role": {
      "id": "role_uuid",
      "name": "Salesperson"
    }
  }
]

Teammitglied entfernen

DELETE
endpoint
/teams//members/
Entfernt ein Mitglied aus dem Team. Erfordert entsprechende Berechtigungen. Path-Parameter:
teamId
string
erforderlich
Team-UUID
memberId
string
erforderlich
Nutzer-ID des zu entfernenden Mitglieds
Antwort:
{
  "success": true,
  "message": "Member removed from team successfully"
}
Der Team-Owner kann nicht entfernt werden. Übertragen Sie zuerst den Besitz, falls nötig.

Einladung stornieren

DELETE
endpoint
/teams/invitations//cancel
Storniert eine ausstehende Teameinladung. Path-Parameter:
invitationId
string
erforderlich
Einladungs-UUID
Antwort:
{
  "success": true,
  "message": "Invitation cancelled successfully"
}

Teams eines Nutzers abrufen

GET
endpoint
/teams/user/
Ruft alle Teams ab, die einem bestimmten Nutzer zugeordnet sind. Path-Parameter:
userId
string
erforderlich
Nutzer-UUID

Teamrollen & Berechtigungen

Standardrollen

RolleBerechtigungenBeschreibung
OwnerAlle BerechtigungenVollständige Kontrolle über Team und Ressourcen
AdminAlle außer TeamlöschungMitglieder, Bestand und Einstellungen verwalten
ManagerBestand ansehen/bearbeiten, Analytik, LeadsVertriebsleitung mit Reporting-Zugriff
SalespersonBestand ansehen, Leads erstellen/bearbeitenVertriebsmitarbeiter an vorderster Front
ViewerNur LeserechteNur lesender Zugriff auf Bestand und Reports

Berechtigungssystem

Häufige Berechtigungen:
  • view_inventory - Fahrzeuge und Inserate ansehen
  • edit_inventory - Fahrzeuginformationen ändern
  • delete_inventory - Fahrzeuge entfernen
  • create_leads - Neue Leads erstellen
  • manage_leads - Alle Leads bearbeiten und löschen
  • view_analytics - Zugriff auf Dashboard und Reports
  • manage_kpis - KPI-Dashboard konfigurieren
  • invite_members - Neue Teammitglieder einladen
  • remove_members - Teammitglieder entfernen
  • manage_roles - Rollen erstellen und ändern
  • manage_team - Teameinstellungen bearbeiten

Anwendungsfälle

Beispiel 1: Autohaus-Team erstellen

# Create team
curl -X POST "https://api.steerai.autos/v1/teams" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Prime Auto Group",
    "slug": "prime-auto-group"
  }'

Beispiel 2: Vertriebsteam einladen

# Invite salesperson
curl -X POST "https://api.steerai.autos/v1/teams/{teamId}/invite" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "roleId": "salesperson_role_uuid"
  }'

Beispiel 3: Teamaktivität überwachen

# Get team members
curl -X GET "https://api.steerai.autos/v1/teams/{teamId}/members" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Get pending invitations
curl -X GET "https://api.steerai.autos/v1/teams/{teamId}/invitations" \
  -H "Authorization: Bearer YOUR_API_KEY"

Fehlercodes

CodeStatusBeschreibung
TEAM_NOT_FOUND404Team-ID existiert nicht
SLUG_ALREADY_EXISTS400Team-Slug ist bereits vergeben
NOT_TEAM_OWNER403Nur der Team-Owner kann diese Aktion ausführen
INSUFFICIENT_PERMISSIONS403Nutzer hat nicht die erforderlichen Berechtigungen
ALREADY_TEAM_MEMBER400Nutzer ist bereits Mitglied
INVITATION_EXPIRED400Einladungs-Token ist abgelaufen
INVITATION_NOT_FOUND404Einladung existiert nicht
CANNOT_REMOVE_OWNER400Team-Owner kann nicht entfernt werden
TEAM_HAS_MEMBERS400Team mit aktiven Mitgliedern kann nicht gelöscht werden

Bewährte Praktiken

Wählen Sie klare, professionelle Namen. Slugs sollten URL-freundlich und einprägsam sein.
Weisen Sie passende Rollen anhand der Aufgaben zu. Nicht allen Admin-Rechte geben.
Prüfen Sie Teammitglieder quartalsweise. Entfernen Sie inaktive Nutzer und aktualisieren Sie Rollen.
Erinnern Sie an ausstehende Einladungen, bevor sie ablaufen (7 Tage).
Dokumentieren Sie Berechtigungen benutzerdefinierter Rollen klar für Ihr Team.
Nutzen Sie Team-Slugs in URLs für saubere, teilbare Links.

Integrationsmuster

Mandantenfähige Architektur

// Check user's team membership
async function getUserTeams(userId) {
  const response = await fetch(
    `https://api.steerai.autos/v1/teams/user/${userId}`,
    {
      headers: { 'Authorization': `Bearer ${API_KEY}` }
    }
  );
  return response.json();
}

// Filter data by team context
async function getTeamInventory(teamId) {
  const response = await fetch(
    `https://api.steerai.autos/v1/vehicles?teamId=${teamId}`,
    {
      headers: { 'Authorization': `Bearer ${API_KEY}` }
    }
  );
  return response.json();
}

Berechtigungsprüfung

function hasPermission(member, permission) {
  return member.role.permissions.includes(permission) || member.isOwner;
}

// Usage
if (hasPermission(currentMember, 'edit_inventory')) {
  // Show edit controls
}

Verwandte Ressourcen