• Projects API Dokumentation

    Erfahre, wie du die Projects API von GrüneEule integrierst

    Übersicht

    Die Projects API ermöglicht den Zugriff auf alle Projekte von GrüneEule. Mit dieser API kannst du Projektinformationen abrufen und in deiner eigenen Anwendung anzeigen.

    GET https://api.grueneeule.de/v1/projects/projects.json

    Die API liefert ein Objekt mit einem Array von Projekten im JSON-Format. Jedes Projekt enthält detaillierte Informationen wie Titel, Beschreibung, Funktionen und Button-Links.

    Authentifizierung

    Für den Zugriff auf die Projects API ist derzeit keine Authentifizierung erforderlich. Alle Endpunkte sind öffentlich zugänglich.

    Endpunkte

    Alle Projekte abrufen

    GET https://api.grueneeule.de/v1/projects/projects.json

    Gibt ein Objekt mit einem Array aller verfügbaren Projekte zurück.

    GET /api/projects.json

    Antwortformat

    Die API gibt ein Objekt mit einem "projects"-Array zurück. Jedes Projekt-Objekt hat folgende Eigenschaften:

    Feld Typ Beschreibung
    id String Eindeutige ID des Projekts
    title String Titel des Projekts
    description String Beschreibung des Projekts
    features Array Liste der Funktionen/Features des Projekts
    primaryButton Object Objekt mit Informationen zum primären Button
    secondaryButton Object Objekt mit Informationen zum sekundären Button (kann null sein)
    cardClass String CSS-Klasse für das Styling der Projektkarte

    Button-Objekt

    Feld Typ Beschreibung
    text String Text des Buttons
    url String URL, zu der der Button führt
    class String CSS-Klasse für das Styling des Buttons
    starCount Boolean Optional: Gibt an, ob die GitHub-Stern-Anzahl angezeigt werden soll

    Beispielantwort

    { "projects": [ { "id": "discord", "title": "Discord Community", "description": "Joine unseren Discord Server!", "features": [ "Community", "Hilfe für Coding und mehr", "Minecraft Stuff", "Und vieles mehr!" ], "primaryButton": { "text": "Joinen", "url": "https://grueneeule.de/l/dc", "class": "btn-discord" }, "secondaryButton": null, "cardClass": "discord-card" }, { "id": "wee", "title": "This Website. For Everyone. Everywhere.", "description": "Entdecke eine zentrale Plattform für kreative Projekte, smarte Tools und nützliche Inhalte – offen für alle, jederzeit verfügbar:", "features": [ "Offener Zugang – für alle, weltweit", "Open Source" ], "primaryButton": { "text": "Mehr", "url": "https://grueneeule.de/wee", "class": "btn-discord" }, "secondaryButton": { "text": "Star on GitHub", "url": "https://github.com/GruneEule/grueneeule-web", "class": "github-button", "starCount": true }, "cardClass": "wee-card" } ] }

    Code-Beispiele

    JavaScript (Fetch API)

    fetch('https://grueneeule.de/api/projects.json') .then(response => response.json()) .then(data => { const projects = data.projects; console.log('Projekte geladen:', projects); // Verarbeite die Projektdaten hier }) .catch(error => { console.error('Fehler beim Laden der Projekte:', error); });

    Python

    import requests import json response = requests.get('https://grueneeule.de/api/projects.json') if response.status_code == 200: data = response.json() projects = data['projects'] print('Projekte geladen:', projects) else: print('Fehler beim Abrufen der Projekte:', response.status_code)

    PHP

    $url = 'https://grueneeule.de/api/projects.json'; $json = file_get_contents($url); $data = json_decode($json, true); if ($data && isset($data['projects'])) { $projects = $data['projects']; echo 'Projekte geladen:'; print_r($projects); } else { echo 'Fehler beim Laden der Projekte'; }

    Beispiel: Projekte in HTML anzeigen

    // Nach dem Abrufen der Projektdaten function renderProjects(projects) { const container = document.getElementById('projects-container'); projects.forEach(project => { const card = document.createElement('div'); card.className = `project-card ${project.cardClass}`; let featuresHtml = ''; if (project.features && project.features.length) { featuresHtml = '<ul>'; project.features.forEach(feature => { featuresHtml += `<li>${feature}</li>`; }); featuresHtml += '</ul>'; } let buttonsHtml = ''; if (project.primaryButton) { buttonsHtml += `<a href="${project.primaryButton.url}" class="cta-button ${project.primaryButton.class}">${project.primaryButton.text}</a>`; } if (project.secondaryButton) { buttonsHtml += `<a href="${project.secondaryButton.url}" class="cta-button ${project.secondaryButton.class}">${project.secondaryButton.text}</a>`; } card.innerHTML = ` <h3>${project.title}</h3> <p>${project.description}</p> ${featuresHtml} <div class="btn-container">${buttonsHtml}</div> `; container.appendChild(card); }); }

    Fehlerbehandlung

    Die API gibt standardmäßig HTTP-Statuscodes zurück, um den Erfolg oder Misserfolg einer Anfrage anzuzeigen.

    Statuscode Bedeutung
    200 OK - Die Anfrage war erfolgreich
    404 Nicht gefunden - Der angeforderte Endpunkt existiert nicht
    500 Interner Serverfehler - Ein Problem auf dem Server

    Rate Limiting

    Für die Projects API gelten derzeit keine Rate Limits. Du kannst die API so oft abfragen, wie du möchtest. Sollten sich diese Limits in Zukunft ändern, werden wir dies hier dokumentieren.