Es wurde der Wunsch geäußert, dass man GEDCOM-Dateien auch von einem Programm aus in GEDBAS hochladen können soll. Das habe ich nun eingebaut.
curl -v -X POST https://gedbas.genealogy.net/database/saveWithApiKey \
-H "Content-Type: multipart/form-data" \
-F "apiKey=APIKEY" \
-F "file=@hamburg.ged" \
-F "title=Hamburg" \
-F "description=Meine Vorfahren aus Hamburg"
Als Ergebnis bekommt man die Nummer der Datei bei GEDBAS, z.B. 12345. Mit Hilfe dieser Nummer kann man die Datei später aktualisieren:
curl -v -X POST https://gedbas.genealogy.net/database/saveWithApiKey \
-H "Content-Type: multipart/form-data" \
-F "apiKey=APIKEY" \
-F "id=12345" \
-F "file=@hamburg-neu.ged" \
-F "title=Hamburg" \
-F "description=Meine Vorfahren aus Hamburg"
Den persönlichen API-Schlüssel bekommt man auf der Seite https://gedbas.genealogy.net/user/apiKeys. Bisher gibt es nur einen einzigen pro Person. Das könnte man irgendwann mal auf weitere Schlüssel erweitern, so dass man Berechtigungen auch wieder entziehen kann.
Hier ist die OpenAPI-Beschreibung zu der Schnittstelle:
openapi: 3.0.3
info:
title: GEDBAS Upload API
description: API zum Hochladen und Speichern von GEDCOM-Dateien.
version: 1.0.0
servers:
- url: https://gedbas.genealogy.net
paths:
/database/saveWithApiKey:
post:
summary: Datei speichern oder aktualisieren
description: |
Lädt eine GEDCOM-Datei mit zugehörigen Metadaten hoch.
- Wenn keine `id` übergeben wird, wird ein neuer Eintrag erstellt (Status **204**).
- Wenn eine `id` angegeben ist, wird der entsprechende Eintrag aktualisiert (Status **200**).
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
id:
type: integer
description: Optionale Nummer zum Aktualisieren einer bestehenden Datei
apiKey:
type: string
description: API-Schlüssel zur Authentifizierung (kann unter https://gedbas.genealogy.net/user/apiKeys eingesehen werden)
file:
type: string
format: binary
description: Die hochzuladende GEDCOM-Datei
title:
type: string
description: Titel der Datei
description:
type: string
description: Beschreibung der Datei
downloadAllowed:
type: boolean
description: Gibt an, ob der Download erlaubt ist. Standardmäßig ist er nicht erlaubt.
required:
- apiKey
- file
- title
- description
responses:
'200':
description: Eintrag wurde erfolgreich aktualisiert
'204':
description: Neuer Eintrag wurde erfolgreich erstellt
'400':
description: Ungültige Anfrage oder fehlende Parameter
'401':
description: Fehlender oder ungültiger API-Schlüssel
'403':
description: Zugriff auf die Datei nicht erlaubt
'500':
description: Interner Serverfehler
/database/myFiles:
post:
summary: Liste der eigenen Dateien bei GEDBAS einsehen
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
apiKey:
type: string
format: uuid
description: API-Schlüssel zur Authentifizierung (kann unter https://gedbas.genealogy.net/user/apiKeys eingesehen werden)
required:
- apiKey
responses:
'200':
description: Erfolgreiche Antwort mit JSON-Array
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: integer
title:
type: string
description:
type: string
last_updated:
type: string
format: date-time
number_of_families:
type: integer
number_of_persons:
type: integer
views:
type: integer
status:
type: string
enum: [ONLINE, NEW, DELETED]