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.
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
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.