Syntagma Forschung – Schnittstelle v1 (FORSCH-PROV0447 v3.4) Basis: https://syntagma-science.com/api/v1/ Antworten: JSON (UTF-8), CORS offen für alle Lesezugriffe. Lizenz der Inhalte: CC BY 4.0. LESEN (öffentlich, ohne Anmeldung) GET /api/v1/ Übersicht der Endpunkte GET /api/v1/status Zustand, Anzahl Werke/Werkzeuge, Testbetrieb GET /api/v1/beobachtungen Bürgerforschung: geprüfte Beobachtungen je Programm, Art und Rasterzelle 0,1° (CC BY 4.0); ?programm=voegel|bestaeuber|fledermaeuse|gewaesser GET /api/v1/register Gesamtes Register: fields, status, works, tools, brands, linked GET /api/v1/register.js dasselbe als JavaScript (window.SYN) GET /api/v1/works Werke; Filter: ?feld=bio|tech|soc|cult|event ?stand=pub|ready|draft|frame|plan ?q=Suchtext GET /api/v1/works/{slug} Ein Werk mit Änderungsprotokoll und Dateien (URL, Größe, SHA-256) GET /api/v1/works/{slug}/cite.bib BibTeX GET /api/v1/works/{slug}/cite.ris RIS (Zotero, Citavi, EndNote) GET /api/v1/works/{slug}/cite.json CSL-JSON GET /api/v1/tools Werkzeuge GET /api/v1/brands Marken im Verbund GET /api/v1/linked Werkzeuge im Verbund GET /api/v1/news Neuigkeiten (JSON), ?n=Anzahl GET /api/v1/news.rss Neuigkeiten als RSS GET /api/v1/lic_products angebotene Zusatzlizenzen und Fachbuch-Lizenzen GET /api/v1/autoren Forschende mit Profil (Slug, Name, ORCID, Rolle, Profil-Adresse) GET /api/v1/profil?autor={slug} Forscherprofil einer Person: Veröffentlichungen aus ORCID und Zenodo (zusammengeführt nach DOI, Zuordnung zu Werken, Stand; Zwischenspeicher 12 Stunden); ohne autor die Gründerperson POST /api/v1/lizenz/pruefen Lizenzschlüssel prüfen: {"schluessel":"SYN-XXXX-XXXX-XXXX-XXXX"} Antwort: gueltig, grund, produkt, inhaber (Organisation), umfang, ab, bis Begrenzung: 20 ungültige Versuche je 15 Minuten GET /api/v1/changes letzte 50 Änderungen (JSON) GET /api/v1/feed.atom letzte 50 Änderungen (Atom-Feed) OAI-PMH 2.0 (für wissenschaftliche Sammeldienste wie BASE und OpenAIRE) Basis: https://syntagma-science.com/oai Verben: Identify, ListMetadataFormats, ListSets, ListIdentifiers, ListRecords, GetRecord Format: oai_dc (Dublin Core); Mengen (set) je Feld: bio, tech, soc, cult, event Kennungen: oai:syntagma-science.com: Zeitstempel: JJJJ-MM-TT Beispiel: /oai?verb=ListRecords&metadataPrefix=oai_dc&set=soc SCHREIBEN (Kopfzeile: Authorization: Bearer ; Token in der Verwaltung → Schnittstellen) POST /api/v1/works/{slug} Werk anlegen oder ändern. JSON, Felder wie im Register: {"k":"FORSCH-0450","f":"bio","s":"draft","t":["Titel","Title"],"d":["Kurz","Short"],"doi":"","rel":["slug"], "lic":"CC BY 4.0|CC BY-SA 4.0|CC BY-NC-SA 4.0|CC BY-NC 4.0","online":"werkzeuge/…|werke/…|https://…"} Nicht übergebene Felder bleiben bei bestehenden Werken erhalten. DELETE /api/v1/works/{slug} Werk ausblenden (nicht löschen) POST /api/v1/works/{slug}/log Protokolleintrag: {"datum":"JJJJ-MM-TT","de":"…","en":"…"} POST /api/v1/works/{slug}/files Datei (multipart): typ=de|en|daten, datei=@datei.pdf|.zip POST /api/v1/tools/{slug}/upload Werkzeug-ZIP (multipart): zip=@werkzeug.zip (muss index.html enthalten) Jede schreibende Änderung veröffentlicht sofort (data.js, sitemap.xml) und löst Webhooks aus. WEBHOOKS (ausgehend) POST an die in der Verwaltung eingetragenen https-Adressen, Inhalt: {"ereignis":"werk|protokoll|datei|werkzeug|verbund|import|einstellungen|manuell|test","ziel":"slug","zeit":"…","quelle":"https://syntagma-science.com/","api":"…/api/v1/register"} Prüfung beim Empfänger: X-Syntagma-Signature = "sha256=" + HMAC-SHA256(Rohinhalt, Geheimnis) FEHLER 400 Eingabe ungültig · 401 Token fehlt · 403 Token ungültig · 404 nicht gefunden · 429 zu viele Fehlversuche · 503 Backend nicht eingerichtet EINBINDUNG IN ANDERE SEITEN (Beispiel) fetch("https://syntagma-science.com/api/v1/works?stand=pub").then(r=>r.json()).then(d=>{ /* d.werke */ });