Dokumention - API

Eine REST-API zum Erstellen, Anzeigen und Verwalten von Geheimnissen. Alle Anfragen und Antworten verwenden JSON, und die gesamte Ver- und Entschlüsselung findet auf Ihrer Seite statt, sodass der Klartext niemals unsere Server erreicht.

Überblick

Die Basis-URL für alle API-Endpunkte ist:

URL
https://password.link/api

Sie können die API verwenden, um sowohl die Verschlüsselung als auch die Entschlüsselung des Geheimnisses außerhalb unseres Dienstes zu handhaben, ohne dass Sie irgendwelche Assets von uns laden müssen. Außerdem können Sie jede beliebige Übermittlungsmethode für den Teil des öffentlichen Kennworts (die Hälfte des Kennworts, aus dem der Verschlüsselungsschlüssel für das Geheimnis abgeleitet wird) verwenden und grundsätzlich jede beliebige benutzerdefinierte Konfiguration für die Anzeige des Geheimnisses erstellen.

Funktionierenden End-to-End-Code finden Sie in den API-Beispiele.

Authentifizierung

Jede Anfrage muss mit einem API-Schlüssel authentifiziert werden, der im Authorization-Header gesendet wird:

HTTP
Authorization: ApiKey public_key_abcd...

Es gibt zwei Arten von API-Schlüsseln:

Schlüsseltyp Beschreibung
Öffentlicher API-Schlüssel Gedacht für die Erstellung einer eigenen, selbst gehosteten Seite zum Anzeigen von Geheimnissen. Kann in öffentlichen Skripten verwendet werden. Erlaubt nur das Anzeigen und Bestätigen von Geheimnissen.
Privater API-Schlüssel Erforderlich für alle anderen API-Aktionen. Muss immer geheim gehalten werden.

Beide API-Schlüssel enthalten den Typ des Schlüssels im Schlüssel selbst, so dass sie leicht unterschieden werden können.

Bei jedem Endpunkt unten ist angegeben, welchen Schlüsseltyp er erfordert.

Fehler

Wenn eine Anfrage fehlschlägt, enthält die Antwort ein Fehlerobjekt:

JSON
{
  "data": null,
  "metadata": null,
  "error": {
    "message": "Ciphertext can't be blank",
    "field": "ciphertext"
  }
}
Feld Beschreibung
message Die vollständige Fehlermeldung.
field Das Feld, auf das sich der Fehler bezieht, wenn es sich um einen Validierungsfehler handelt.

Der HTTP-Statuscode der Antwort gibt ebenfalls die Art des Fehlers an:

Statuscode Beschreibung
403 Forbidden Die Anfrage war nicht erlaubt, zum Beispiel wegen eines ungültigen API-Schlüssels.
404 Not Found Die angeforderte Ressource wurde nicht gefunden.
422 Unprocessable Content Die Anfrage wurde verstanden, hat aber die Validierung nicht bestanden, zum Beispiel wegen eines fehlenden oder ungültigen Parameters.

Geheimnisse verschlüsseln

Geheimnisse werden clientseitig verschlüsselt, bevor sie an die API gesendet werden. Dieser Abschnitt beschreibt die Passwort- und Ciphertext-Formate, die der Dienst erwartet.

Die Passwortteile

Das Passwort, das zur Verschlüsselung des Geheimnisses in AES verwendet wird, muss aus zwei 18 Zeichen langen Zeichenketten bestehen. Der eigentliche Verschlüsselungsschlüssel ist die Verkettung dieser beiden Zeichenfolgen ("privater Teil" + "öffentlicher Teil") und wird unter Verwendung von PBKDF2 aus dem Passwort abgeleitet.

Beispiel
Password: fkgjbnvlakwiejgutnFIGKEOTIRUBNAKQJRL
  => Private part: fkgjbnvlakwiejgutn
  => Public part:  FIGKEOTIRUBNAKQJRL

Der private Teil wird (Base64-kodiert) an die API gesendet und mit dem Geheimnis gespeichert. Der öffentliche Teil wird niemals an die API gesendet und in der Regel im Link selbst übermittelt, sodass wir das Geheimnis niemals selbst entschlüsseln können.

Wenn Sie die von uns bereitgestellte Seite zum Anzeigen des Geheimnisses verwenden, müssen Sie auch den öffentlichen Teil Base64-kodieren. Wenn Sie eine selbst gehostete Anzeigeseite verwenden, können Sie dieselbe Methode verwenden oder eine eigene erstellen. Referenzimplementierungen finden Sie in den API-Beispiele.

Chiffretext-Format

Der Chiffretext ist ein JSON-Objekt, Base64-codiert:

JSON
{
  "cipher": "<Base64 encoded AES-GCM ciphertext>",
  "iv": "<Base64 encoded 12-byte initialization vector>",
  "salt": "<Base64 encoded 16-byte PBKDF2 salt>",
  "iter": 10000
}

Für die Verschlüsselung des Geheimnisses müssen Sie die folgenden Einstellungen für AES verwenden:

Einstellung Wert
Modus AES-GCM mit einem an den Chiffretext angehängten 128-Bit-Authentifizierungs-Tag (Web-Crypto-Standard)
Schlüssellänge 256 bits
Schlüsselableitung PBKDF2 mit SHA-256
PBKDF2-Iterationen Der Wert des Feldes iter. Zulässiger Bereich 1000-1000000, wir empfehlen 10000.
Initialisierungsvektor 12 zufällige Bytes
Salt 16 zufällige Bytes

Älteres SJCL-Format (veraltet)

Mit der Stanford Javascript Crypto Library (SJCL) erstellte Ciphertexte werden weiterhin akzeptiert: ein SJCL-kompatibler Ciphertext-JSON-String, Base64-kodiert, mit AES-GCM ("mode:gcm"), einem 256-Bit-Schlüssel ("ks:256") und 10000 PBKDF2-Iterationen ("iter:10000"). Dieses Format ist veraltet und die Unterstützung dafür wird in Zukunft entfernt.

Geheimnisse entschlüsseln

Die API „Ansicht Geheimnis“ gibt den Ciphertext genau so zurück, wie er gespeichert wurde. In der Web-App erstellte Geheimnisse verwenden das oben beschriebene Web-Crypto-Format. Geheimnisse, die von älteren API-Clients, der Chrome-Erweiterung oder über noch nicht geöffnete Links erstellt wurden, können das ältere SJCL-Format verwenden.

Eine selbst gehostete Anzeigeseite muss beide Formate verarbeiten. Dekodieren Sie den Ciphertext von Base64 zu JSON und prüfen Sie dann auf einen ct-Schlüssel: Ist er vorhanden, entschlüsseln Sie mit SJCL, andernfalls mit Web Crypto. Siehe das Beispiel „Ansicht Geheimnis“.

API-Clients, die Geheimnisse nur erstellen, müssen nicht angepasst werden: SJCL-Ciphertexte werden beim Erstellen weiterhin akzeptiert. Clients, die über die API abgerufene Geheimnisse entschlüsseln, müssen Web-Crypto-Unterstützung ergänzen, sonst schlagen sie bei Geheimnissen fehl, die in der Web-App erstellt wurden.

Geheimnis erstellen

POST /api/secrets Privater API-Schlüssel

Erstellt ein verschlüsseltes Geheimnis und gibt dessen ID zurück. Der Ciphertext muss wie in Geheimnisse verschlüsseln beschrieben erstellt werden. Gibt bei Erfolg 201 Created zurück.

Parameter anfordern

Parameter Typ Beschreibung
ciphertexterforderlich string Ein Web-Crypto-kompatibler Ciphertext-JSON-String des Geheimnisses, Base64-kodiert. Ältere SJCL-kompatible Ciphertexte werden ebenfalls akzeptiert (veraltet).
password_part_privateerforderlich string Der private Passwortteil, der zur Verschlüsselung des Geheimnisses verwendet wurde, Base64-kodiert.
password_part_public string Der öffentliche Passwortteil, Base64-kodiert. Nur erforderlich bei Verwendung von email_to, damit die API den gehosteten Geheimnis-Link per E-Mail versenden kann.
description string Eine Beschreibung für das Geheimnis. Ist beim Anzeigen des Geheimnisses nicht sichtbar.
message string Eine Nachricht für das Geheimnis. Wird zusammen mit dem Geheimnis angezeigt.
expiration integer Eine Ablaufzeit für das Geheimnis, in Stunden. Mögliche Werte: 1-500.
view_button boolean Eine Schaltfläche zum Anzeigen des Geheimnisses anzeigen, anstatt das Geheimnis sofort nach dem Öffnen des Links anzuzeigen.
captcha boolean Vor dem Anzeigen des Geheimnisses ein einfaches CAPTCHA anzeigen, hauptsächlich zum Blockieren automatisierter Scanner.
password string Ein Passwort für das Geheimnis.
max_views integer Wie oft das Geheimnis angezeigt werden kann. Mögliche Werte: 1-100.
email_to string Durch Kommas getrennte E-Mail-Empfänger, die den erstellten Geheimnis-Link erhalten sollen. Erfordert password_part_public.
otp_email_recipient string E-Mail-Adresse, die ein Einmalpasswort erhält. Wenn gesetzt, muss der Empfänger den per E-Mail gesendeten Code eingeben, bevor das Secret angezeigt werden kann.
otp_recipient string Wird als Alias für otp_email_recipient akzeptiert. Bevorzugen Sie otp_email_recipient für neue Integrationen.
otp_sms_recipient string Telefonnummer, die ein Einmalpasswort per SMS erhält, im internationalen Format, beginnend mit + und ohne Leerzeichen.
allowed_ips string Durch Kommas getrennte IP-Adressen oder CIDR-Bereiche, die das Secret anzeigen dürfen.
allowed_locations array Array von ISO-3166-1-Alpha-2-Ländercodes, die das Secret anzeigen dürfen.
available_after datetime Datum und Uhrzeit, vor denen das Secret nicht angezeigt werden kann.
secret_folder_id string ID eines vorhandenen Secret-Ordners, der dem API-Schlüsselbenutzer gehört.
reply_enabled boolean Eine einmalige Antwort des Empfängers aktivieren, nachdem das Secret angezeigt wurde.
ack_required boolean Bestätigung des Empfängers verlangen, bevor das Secret angezeigt werden kann.
ack_mode string Bestätigungsmodus. Verwenden Sie checkbox oder phrase.
ack_phrase string Phrase, die der Empfänger eingeben muss. Erforderlich, wenn ack_required true ist und ack_mode phrase ist.
ack_disclosure_text string Offenlegungstext, der dem Empfänger angezeigt wird, bis zu 500 Zeichen.
ack_collect_name boolean den Namen des Empfängers mit der Bestätigung erfassen.
ack_name_required boolean Den Namen des Empfängers verlangen. Aktiviert auch ack_collect_name.
ack_collect_org boolean die Organisation des Empfängers mit der Bestätigung erfassen.
attachment object Metadaten für einen verschlüsselten Dateianhang, siehe Anhänge. Erfordert einen aktiven Tarif.
attachment.file_name string Der ursprüngliche Dateiname, der dem Empfänger angezeigt wird. Erforderlich, wenn ein Anhang angegeben wird.
attachment.file_type string Der ursprüngliche MIME-Typ, zum Beispiel text/plain oder application/pdf. Erforderlich, wenn ein Anhang angegeben wird.
attachment.file_size integer Die ursprüngliche unverschlüsselte Dateigröße in Bytes. Erforderlich, wenn ein Anhang angegeben wird.

Team-Secret-Einstellungen können unterstützte Secret-Optionen deaktivieren, erfordern oder Standardwerte erzwingen. Die API wendet diese Teamregeln beim Erstellen eines Secrets an.

Beispielanfrage

cURL
curl -H "Authorization: ApiKey private_key_abcd" \
     -H "Content-Type: application/json" \
     -X POST https://password.link/api/secrets \
     -d '{
       "ciphertext": "eyJjaXBoZXIiOiJRc3hxsN3...aXRlciI6MTAwMDB9",
       "password_part_private": "ZmtnamJudmxha3dpZWpndXRu",
       "description": "Database credentials",
       "expiration": 24,
       "view_button": true,
       "max_views": 1
     }'

Beispielantwort

JSON
{
  "data": {
    "id": "dT5g"
  },
  "metadata": {
    "secrets_total": 70,
    "secrets_usage": 25,
    "secrets_allowance": 100,
    "secret_requests_total": 10,
    "secret_requests_allowance": 100
  }
}

Der Link zum Geheimnis wird gebildet, indem die URL der gehosteten Anzeigeseite, die ID des Geheimnisses und der Base64-kodierte öffentliche Passwortteil kombiniert werden:

URL
https://password.link/<id>/#<public password part, Base64>

Anhänge

Das Hochladen eines Anhangs erfolgt in zwei Schritten: Erstellen Sie zuerst das Geheimnis mit den Anhang-Metadaten (siehe Geheimnis erstellen), verschlüsseln Sie dann die Anhangsdaten und laden Sie sie zur zurückgegebenen Upload-URL hoch.

Der Inhalt des Geheimnisses und der Inhalt des Anhangs werden separat verschlüsselt. Beide verwenden Web-Crypto-kompatible AES-GCM-Daten, Base64-codiert, aber die Felder der Nutzlast sind unterschiedlich codiert: Die Nutzlast des Geheimnisses enthält Base64-codierte Felder und ein iter-Feld, während die Nutzlast des Anhangs Felder mit rohen Binärzeichenketten enthält.

Verschlüsseln des Anhangs

Stellen Sie die Datei vor der Verschlüsselung als Daten-URL dar:

URL
data:<mime-type>;base64,<base64 file bytes>

Das Verschlüsselungspasswort des Anhangs ist der rohe private Passwortteil, verkettet mit dem rohen öffentlichen Passwortteil (ohne Base64-Kodierung).

Verschlüsseln Sie diesen Data-URL-String mit AES-GCM unter Verwendung von PBKDF2-SHA256, 10000 Iterationen, einem abgeleiteten 256-Bit-Schlüssel, einem zufälligen 16-Byte-Salt und einem zufälligen 12-Byte-IV. Speichern Sie die verschlüsselten Anhangsdaten als JSON-Objekt und kodieren Sie den JSON-String dann in Base64:

JSON
{
  "cipher": "<binary string>",
  "iv": "<binary string>",
  "salt": "<binary string>"
}

Hochladen der verschlüsselten Datei

Wenn ein Anhang enthalten ist, enthält die Antwort auf die Geheimnis-Erstellung ein Upload-Ziel in data.attachment.upload:

JSON
{
  "data": {
    "id": "dT5g",
    "attachment": {
      "file_name": "example.txt",
      "upload": {
        "url": "/api/secrets/dT5g/attachment",
        "fields": {},
        "metadata": {}
      }
    }
  },
  "metadata": {}
}

Laden Sie das Base64-kodierte verschlüsselte JSON als text/plain über multipart/form-data zur zurückgegebenen upload.url hoch. Fügen Sie alle zurückgegebenen upload.metadata- oder upload.fields-Schlüssel/Wert-Paare den Formulardaten hinzu, bevor Sie die verschlüsselte Datei hinzufügen. Das Feld der verschlüsselten Datei muss file heißen.

Fügen Sie bei Password.link-Upload-URLs denselben privaten API-Schlüssel im Header Authorization: ApiKey <key> hinzu. Direkte Speicher-Upload-URLs, wie vorab signierte S3-URLs, sollten nur die zurückgegebenen Formularfelder und das verschlüsselte Feld file erhalten.

Bei Password.link-gehosteten Upload-URLs ist das fields-Objekt leer. Bei direkten Speicher-Upload-URLs, z. B. vorab signierten S3-URLs, werden die Signierfelder stattdessen in metadata zurückgegeben.

Die Größenbeschränkungen für Anhänge hängen vom Kontingent des Kontos oder Teams ab, und der verschlüsselte Upload ist größer als die Originaldatei, da die Datei in Base64 umgewandelt und verschlüsselt wird.

Ansicht Geheimnis

GET /api/secrets/<id> Öffentlicher API-Schlüssel

Ruft den Ciphertext, den privaten Passwortteil und andere Details eines Geheimnisses ab. Dieser Endpunkt kann verwendet werden, um eine eigene, selbst gehostete Seite zum Anzeigen von Geheimnissen zu erstellen, die keine Skripte oder andere Ressourcen von unserem Dienst lädt. Gibt bei Erfolg 200 OK zurück.

Das erfolgreiche Abrufen eines Geheimnisses markiert es automatisch als angesehen und löscht somit den Geheimtext und den Teil des privaten Kennworts aus unserer Datenbank, so dass es unmöglich ist, das Geheimnis erneut einzusehen.

Der Ciphertext kann im Web-Crypto-Format oder im älteren SJCL-Format vorliegen. SJCL-Payloads erkennen Sie an einem ct-Schlüssel im dekodierten JSON. Siehe Geheimnisse entschlüsseln.

Wenn das Geheimnis mit einem OTP-Code oder einem Passwort geschützt ist, senden Sie diesen in einem Request-Header. Werte im Query-String werden nicht akzeptiert. Ohne gültigen Wert wird 403 Forbidden zurückgegeben, wobei secret_status auf otp_required oder password_required gesetzt ist. Wenn ein Geheimnis sowohl einen OTP-Empfänger als auch ein Passwort hat, wird nur der OTP-Code geprüft, genau wie beim Öffnen des Geheimnisses im Browser.

Der OTP-Code wird an den OTP-Empfänger gesendet, wenn dieser den Link zum Geheimnis öffnet. Die API versendet ihn nicht. Geheimnisse, die lediglich die zulässigen Empfänger-E-Mail-Adressen einschränken, erfordern über die API keinen OTP-Code.

Request-Header

Header Typ Beschreibung
X-Secret-Otp string Der an den OTP-Empfänger gesendete OTP-Code. Erforderlich, wenn das Geheimnis mit einem OTP-Code geschützt ist.
X-Secret-Password string Das Passwort des Geheimnisses. Erforderlich, wenn das Geheimnis passwortgeschützt ist.

Beispielanfrage

cURL
curl -H "Authorization: ApiKey public_key_abcd" \
     https://password.link/api/secrets/dT5g

Beispielantwort

JSON
{
  "data": {
    "id": "dT5g",
    "ciphertext": "eyJjaXBoZXIiOiJRc3hxsN3...aXRlciI6MTAwMDB9",
    "password_part_private": "ZmtnamJudmxha3dpZWpndXRu",
    "message": "Here are the credentials we talked about"
  },
  "metadata": null
}

Secret bestätigen

POST /api/secrets/<id>/acknowledge Öffentlicher API-Schlüssel

Übermittelt die Empfängerbestätigung für ein Geheimnis, das mit ack_required erstellt wurde, und gibt dieselben Geheimnis-Daten wie View Secret zurück, wenn die Bestätigung gültig ist. Gibt bei Erfolg 200 OK zurück.

Wenn eine Bestätigung erforderlich ist, gibt GET /api/secrets/<id> 403 Forbidden zurück, wobei secret_status auf ack_required gesetzt ist, bis dieser Endpunkt verwendet wird.

Ungültige oder unvollständige Bestätigungsdaten geben ebenfalls 403 Forbidden zurück. Sie werden nicht als Validierungsfehler zurückgegeben.

Wenn das Geheimnis mit einem OTP-Code oder einem Passwort geschützt ist, senden Sie diesen in denselben Headern wie bei „Ansicht Geheimnis“ oder als otp und password im JSON-Request-Body.

Parameter anfordern

Parameter Typ Beschreibung
ack_confirmed boolean Für die Bestätigung per Kontrollkästchen auf true setzen.
ack_phrase string Erforderlich für die Phrasenbestätigung und muss mit der für das Secret konfigurierten Phrase übereinstimmen.
ack_signer_name string Name des Empfängers, erforderlich, wenn die Namensabfrage aktiviert und als erforderlich markiert ist.
ack_signer_org string Organisation des Empfängers, gespeichert, wenn die Organisationserfassung aktiviert ist.

Beispielanfrage

cURL
curl -H "Authorization: ApiKey public_key_abcd" \
     -H "Content-Type: application/json" \
     -X POST https://password.link/api/secrets/dT5g/acknowledge \
     -d '{"ack_confirmed": true, "ack_signer_name": "Jane Doe"}'

Liste Geheimnisse

GET /api/secrets Privater API-Schlüssel

Ruft eine Liste von Geheimnissen ab. Enthält keine Ciphertexte oder private Passwortteile, nur IDs, Beschreibungen und Ähnliches. Gibt bei Erfolg 200 OK zurück.

Die maximale Anzahl zurückgegebener Ergebnisse pro Abfrage ist auf 50 begrenzt. Sie können den Offset mit dem optionalen Abfrageparameter offset steuern, zum Beispiel: /api/secrets?offset=50

Beispielanfrage

cURL
curl -H "Authorization: ApiKey private_key_abcd" \
     https://password.link/api/secrets

Beispielantwort

JSON
{
  "data": [
    {
      "id": "dT5g",
      "created_at": "2026-07-02T10:00:00.000Z",
      "message": "Here are the credentials we talked about",
      "description": "Database credentials",
      "view_button": true,
      "captcha": false,
      "password": false,
      "expiration": 24,
      "expired": false,
      "view_times": 1,
      "max_views": 1,
      "secret_folder_id": "5e976e6e-d205-4f58-8df9-5ac0048bc702",
      "views": [
        {
          "viewed_at": "2026-07-02T12:34:56.000Z",
          "viewed_by_ip": "192.0.2.10",
          "viewed_by_user_agent": "Mozilla/5.0 ..."
        }
      ]
    }
  ],
  "metadata": {
    "secrets_total": 70,
    "secrets_usage": 25,
    "secrets_allowance": 100,
    "secret_requests_total": 10,
    "secret_requests_allowance": 100
  }
}

Secret aktualisieren

PATCH /api/secrets/<id> Privater API-Schlüssel

Aktualisiert unterstützte Einstellungen und Metadaten eines vorhandenen Geheimnisses. Gibt bei Erfolg 204 No Content zurück.

PATCH ersetzt nicht den verschlüsselten Inhalt des Geheimnisses, versendet keine Zustellungs-E-Mails erneut und erstellt keine Anhang-Upload-Metadaten. Verwenden Sie Create Secret für Ciphertext, Passwortteile, Link-Zustellung und Anhänge.

Die folgenden Parameter können aktualisiert werden, mit derselben Bedeutung wie in Create Secret:

description, message, expiration, max_views, view_button, captcha, password, otp_email_recipient, otp_recipient, otp_sms_recipient, allowed_ips, allowed_locations, available_after, secret_folder_id, reply_enabled, ack_required, ack_mode, ack_phrase, ack_disclosure_text, ack_collect_name, ack_name_required, ack_collect_org

ciphertext, password_part_private, password_part_public, email_to und Anhang-Metadaten können nur beim Erstellen gesetzt werden. Sie werden von PATCH ignoriert.

Beispielanfrage

cURL
curl -H "Authorization: ApiKey private_key_abcd" \
     -H "Content-Type: application/json" \
     -X PATCH https://password.link/api/secrets/dT5g \
     -d '{"description": "Updated description", "otp_email_recipient": "recipient@example.com"}'

Geheimnis löschen

DELETE /api/secrets/<id> Privater API-Schlüssel

Löscht ein Geheimnis. Gibt bei Erfolg 200 OK zurück.

Beispielanfrage

cURL
curl -H "Authorization: ApiKey private_key_abcd" \
     -X DELETE https://password.link/api/secrets/dT5g

Beispielantwort

JSON
{
  "data": null,
  "metadata": {
    "secrets_total": 69,
    "secrets_usage": 24,
    "secrets_allowance": 100,
    "secret_requests_total": 10,
    "secret_requests_allowance": 100
  }
}

Secret-Ordner erstellen

POST /api/secret_folders Privater API-Schlüssel

Erstellt einen Geheimnis-Ordner. Gibt bei Erfolg 201 Created zurück.

Parameter anfordern

Parameter Typ Beschreibung
nameerforderlich string Ordnername.
description string Ordnerbeschreibung.

Beispielantwort

JSON
{
  "data": {
    "id": "5e976e6e-d205-4f58-8df9-5ac0048bc702"
  },
  "metadata": {
    "secrets_total": 70,
    "secrets_usage": 25,
    "secrets_allowance": 100,
    "secret_requests_total": 10,
    "secret_requests_allowance": 100
  }
}

Secret-Ordner auflisten

GET /api/secret_folders Privater API-Schlüssel

Ruft eine Liste von Geheimnis-Ordnern ab. Gibt bei Erfolg 200 OK zurück.

Beispielantwort

JSON
{
  "data": [
    {
      "id": "5e976e6e-d205-4f58-8df9-5ac0048bc702",
      "name": "Clients",
      "description": "Client credentials",
      "created_at": "2026-07-02T10:00:00.000Z",
      "updated_at": "2026-07-02T10:00:00.000Z"
    }
  ],
  "metadata": {
    "secrets_total": 70,
    "secrets_usage": 25,
    "secrets_allowance": 100,
    "secret_requests_total": 10,
    "secret_requests_allowance": 100
  }
}

Secret-Ordner aktualisieren

PATCH /api/secret_folders/<id> Privater API-Schlüssel

Aktualisiert den Namen und die Beschreibung eines Geheimnis-Ordners. Akzeptiert dieselben Parameter wie Create Secret Folder und gibt bei Erfolg 204 No Content zurück.

Geheimordner löschen

DELETE /api/secret_folders/<id> Privater API-Schlüssel

Löscht einen Geheimnis-Ordner. Gibt bei Erfolg 200 OK zurück.

Geheime Anfrage erstellen

POST /api/secret_requests Privater API-Schlüssel

Erstellt eine neue geheime Anfrage. Gibt bei Erfolg 201 Created zurück.

Parameter anfordern

Parameter Typ Beschreibung
description string Beschreibung für den Geheimen Antrag.
message string Nachricht für den Secret Request Viewer.
expiration integer Verfallszeit für die Geheime Anfrage in Stunden.
limit integer Nutzungslimit für die Geheime Anfrage.
send_request_to_email string Sendet den erstellten Link für die geheime Anfrage an die angegebene E-Mail-Adresse.
send_request_to_sms string Den erstellten Secret-Request-Link an die angegebene Telefonnummer senden.
send_to_email string Den mit dem Secret Request erstellten Secret Link an die angegebene E-Mail-Adresse senden.
secret_description string Beschreibung des Geheimnisses, das mit der Geheimanfrage erstellt wurde.
secret_message string Nachricht für das mit der Secret Request erstellte Secret.
secret_expiration integer Ablaufzeit für das mit der Secret Request erstellte Secret in Stunden.
secret_password string Passwort für das Secret, das mit dem Secret Request erstellt wurde.
secret_max_views integer Ansichtsgrenze für das mit der Secret Request erstellte Secret.
template_id string ID der zu verwendenden Anfragevorlage.
secret_allowed_emails string Durch Kommas getrennte E-Mail-Adressen oder Domains, die mit diesem Secret Request erstellte Secrets öffnen dürfen.
secret_allowed_ips string Durch Kommas getrennte IP-Adressen oder CIDR-Bereiche, die mit diesem Secret Request erstellte Secrets öffnen dürfen.

Beispielanfrage

cURL
curl -H "Authorization: ApiKey private_key_abcd" \
     -H "Content-Type: application/json" \
     -X POST https://password.link/api/secret_requests \
     -d '{"description": "Request for VPN credentials", "expiration": 48}'

Beispielantwort

JSON
{
  "data": {
    "id": "5e976e6e-d205-4f58-8df9-5ac0048bc702"
  },
  "metadata": {
    "secrets_total": 70,
    "secrets_usage": 25,
    "secrets_allowance": 100,
    "secret_requests_total": 10,
    "secret_requests_allowance": 100
  }
}

Liste der geheimen Ersuchen

GET /api/secret_requests Privater API-Schlüssel

Ruft eine Liste geheimer Anfragen ab. Gibt bei Erfolg 200 OK zurück.

Die maximale Anzahl zurückgegebener Ergebnisse pro Abfrage ist auf 50 begrenzt. Sie können den Offset mit dem optionalen Abfrageparameter offset steuern, zum Beispiel: /api/secret_requests?offset=50

Die Listenantwort enthält weder secret_allowed_emails noch secret_allowed_ips.

Beispielanfrage

cURL
curl -H "Authorization: ApiKey private_key_abcd" \
     https://password.link/api/secret_requests

Beispielantwort

JSON
{
  "data": [
    {
      "id": "5e976e6e-d205-4f58-8df9-5ac0048bc702",
      "description": "Request for VPN credentials",
      "message": "Please send me the VPN credentials",
      "expiration": 48,
      "limit": 1,
      "send_request_to_email": "request-recipient@example.com",
      "send_request_to_sms": "+358401234567",
      "send_to_email": "example@example.com",
      "secret_description": "VPN credentials",
      "secret_message": null,
      "secret_expiration": 24,
      "secret_max_views": 1,
      "secret_password": false,
      "template_id": null
    }
  ],
  "metadata": {
    "secrets_total": 70,
    "secrets_usage": 25,
    "secrets_allowance": 100,
    "secret_requests_total": 10,
    "secret_requests_allowance": 100
  }
}

Geheime Anfrage löschen

DELETE /api/secret_requests/<id> Privater API-Schlüssel

Löscht eine geheime Anfrage. Gibt bei Erfolg 200 OK zurück.

Beispielanfrage

cURL
curl -H "Authorization: ApiKey private_key_abcd" \
     -X DELETE https://password.link/api/secret_requests/5e976e6e-d205-4f58-8df9-5ac0048bc702