Allmänt

Vi har ett standardiserat REST API för hantering av hemligheter. Alla förfrågningar och svar använder JSON-formatet.

Du kan använda API:et för att hantera både kryptering och dekryptering av hemligheten utanför vår tjänst, utan att behöva att ladda några tillgångar från oss. Det låter dig också använda alla typer av leveransmetoder för den offentliga lösenordsdelen (hälften av lösenordet som används för att härleda krypteringsnyckeln för hemligheten från) och i princip skapa alla typer av anpassad konfiguration för visning av hemligheten.

Exempel på kod

Se våra API-exempel för hur du använder API:et.

Autentisering

Vi använder två typer av API-nycklar för autentisering:

  • Publika API-nycklar
  • Privata API-nycklar

Offentliga API-nycklar är avsedda för att skapa en anpassad hemlig sida för självhanterad vy. Alla andra API-åtgärder kräver en privat API-nyckel.

Publika API-nycklar kan användas i publika skript. Privata API-nycklar måste alltid hållas privata.

Båda API-nycklarna innehåller typen av nyckel i själva nyckeln så att de lätt kan särskiljas.

API-nyckeln måste skickas i rubriken Authorization: ApiKey <key>-header, till exempel:

Auktorisering: ApiKey public_key_abc...

Fel

Om en fråga inte lyckas kommer svaret att innehålla ett felobjekt.

Objektet innehåller följande fält:

  • message: det fullständiga felmeddelandet, t.ex. "Ciphertext can't be blank"
  • field: det fält som felet gäller, t.ex. "ciphertext"

Statuskoden för HTTP-svaret kommer också att ange ett fel, t.ex:

  • 403 Forbidden: begäran var inte tillåten, t.ex. på grund av ogiltig API-nyckel
  • 404 Hittades inte: den begärda hemligheten hittades inte

Visa hemlighet

Typ av begäran: GET

Sökväg för begäran: https://password.link/api/secrets/<id>

Statuskod för lyckad förfrågan: 200 OK


Hämta chiffertexten, den privata lösenordsdelen och andra detaljer för en hemlighet. Kräver den offentliga API-nyckeln.

Denna API-fråga kan användas för att skapa en anpassad hemlig sida med egen värd som inte laddar några skript eller andra tillgångar från vår tjänst.

Om du lyckas hämta en hemlighet markeras den automatiskt som visad och därmed raderas chiffertexten och den privata lösenordsdelen från vår databas, vilket gör det omöjligt att visa hemligheten igen.

Parametrar som krävs
  • id: hemlighetens id, till exempel dT5g

Exempel på fråga

curl -H "Auktorisation: ApiKey public_key_abcd" https://password.link/api/secrets/dT5g

Exempel på svar

{
"data": {
  "id":"ID för hemligheten",
  "chiffertext":"chiffertexten förhemligheten",
  "password_part_private": "den privata lösenordsdelen av hemligheten",
  "message":"meddelandet för hemligheten, om det harangetts"
},
"metadata": {
  "secrets_total": 1,
  "secrets_usage": 1,
  "hemligheter_tillåtelse": 1
}
}

Exempel på kod

Vänligen se våra API-exempel.

Skapa hemlighet

Typ av begäran: POST

Sökväg för begäran: https://password.link/api/secrets

Statuskod för framgångsrik fråga: 201 Skapad

Detta API-anrop stöder också att lägga till en bilaga till hemligheten. Kontakta oss om du vill ha mer information.


Skapa en krypterad hemlighet.

För att kryptera hemligheten på klientsidan innan den skickas till vårt API krävs att du skapar en SJCL-kompatibel JSON-sträng med chiffertext. Se SJCL-dokumentationen för korrekt format på JSON-strängen och se våra API-exempel för exempel på hur du skapar chiffertexten.

Skapa lösenordet för kryptering av hemligheten

Lösenordet som används för att kryptera hemligheten i AES måste bestå av två 18 tecken långa strängar. Den faktiska krypteringsnyckeln kommer att vara sammankopplingen av dessa två strängar ("privat del" + "offentlig del") och härleds från lösenordet av SJCL med hjälp av PBKDF2.

Exempel på hur man skapar den privata och den offentliga delen av lösenordet:

Lösenord: fkgjbnvlakwiejgutnFIGKEOTIRUBNAKQJRL
=> Privat del: fkgjbnvlakwiejgutn
=> Offentlig del: FIGKEOTIRUBNAKQJRL

Den privata delen måste Base64-kodas innan den skickas över till vårt API. Om du använder den hemliga sidan som vi tillhandahåller måste du även Base64-koda den offentliga delen. Om du använder en egen värd för en hemlig sida kan du använda samma metod eller skapa din egen. Se våra API-exempel för referensimplementeringar.

Nödvändiga SJCL AES-inställningar

Du måste använda följande inställningar för AES när du krypterar hemligheten:

  • Läge: AES-GCM (SJCL-inställning: "mode:gcm")
  • Nyckelstorlek: 256 bitar (SJCL-inställning: "ks:256")
  • Funktion för härledning av nyckel: PBKDF2 (SJCL standard)
  • PBKDF2 iterationer: 10000 (SJCL-inställning: "iter:10000")

Nyttolast för begäran

{
"chiffertext": "chiffertext",
"password_part_private":"password_part_private",
"description": "description",
"message": "message",
"expiration": "expiration",
"view_button": "view_button",
"captcha":"captcha",
"password": "password",
"max_visningar":"max_vyer"
}

Parametrar för begäran

  • chiffertext: En SJCL-kompatibel JSON-sträng med chiffertext för hemligheten, kodad i Base64.
  • password_part_private: den privata lösenordsdelen som användes för att kryptera hemligheten, i Base64-format.
  • description (valfritt): en beskrivning av hemligheten. Kan inte ses när hemligheten visas.
  • message (valfritt): ett meddelande för hemligheten. Visas tillsammans med hemligheten.
  • expiration (valfritt): en utgångstid för hemligheten, i timmar. Möjliga värden: 0-350.
  • view_button (valfritt): visa en knapp för att visa hemligheten istället för att visa hemligheten direkt efter att länken har öppnats. Om du vill aktivera den här funktionen ska du ställa in den på true.
  • captcha (valfritt): visa en enkel CAPTCHA innan du visar hemligheten, främst för att blockera automatiska skannrar. Om du vill aktivera den här funktionen ska du ange true.
  • password (valfritt): ettlösenord för hemligheten.
  • max_views (valfritt): hur många gånger hemligheten kan visas. Möjliga värden: 1-100.

Exempel på kod

Vänligen se våra API-exempel.

Lista hemligheter

Typ av begäran: GET

Sökväg för begäran: https://password.link/api/secrets

Statuskod för lyckad förfrågan: 200 OK


Hämta en lista med hemligheter. Innehåller inte chiffertexternas privata lösenordsdelar, endast ID, beskrivningar och liknande.

Begränsning och offset

Det maximala antalet returnerade hemligheter för varje fråga är begränsat till 50. Du kan styra förskjutningen med den valfria frågeparametern offset.

Om du t.ex. vill hoppa över de första 50 posterna använder du en fråga som t.ex: .../api/secrets?offset=50

Exempel på fråga

curl -H "Auktorisering: ApiKey private_key_abcd" https://password.link/api/secrets

Exempel på svar

{
"data": [
  {
    "id": hemlighetens ID,
    "created_at": när hemligheten skapades,
    "message": meddelandet för hemligheten,
    "description": beskrivningen av hemligheten,
    "view_button": är knappen för att visa hemligheten aktiverad,
    "captcha": är CAPTCHA aktiverat,
    "password": har hemligheten ett lösenord,
    "expiration": utgångstid i timmar,
    "expired": har hemligheten löpt ut,
    "view_times": hur många gånger hemligheten har visats,
    "max_views": det maximala antalet gånger som hemligheten kan visas,
    "views": [
      {
        "viewed_at": en tidsstämpel för när hemligheten visades,
        "viewed_by_ip": IP-adress för den som tittade,
        "viewed_by_user_agent": tittarens användaragent
      }
    ]
  }
],
"metadata": {
  "secrets_total": 1,
  "secrets_usage": 1,
  "hemligheter_tillåtelse": 1
}
}

Ta bort hemlighet

Typ av begäran: DELETE

Sökväg för begäran: https://password.link/api/secrets/<id>

Statuskod för framgångsrik fråga: 200 OK


Ta bort en hemlighet.

Exempel på fråga

curl -H "Auktorisation: ApiKey privat_nyckel_abcd" \
  -X DELETE https://password.link/api/secrets/dT5g

Exempel på svar

{
"data": null,
"metadata": {
  "secrets_total": 1,
  "secrets_usage": 1,
  "hemligheter_tillåtelse": 1
}
}

Skapa hemlig begäran

Typ av begäran: POST

Sökväg för begäran: https://password.link/api/secret_requests

Statuskod för framgångsrik fråga: 201 Created


Skapa en ny hemlig begäran.

Parametrar för begäran

  • description: beskrivning för den hemliga begäran.
  • message: meddelande för Secret Request-tittaren.
  • expiration: utgångstid för den hemliga begäran, i timmar.
  • limit: användningsgräns för den hemliga begäran.
  • send_request_to_email: skicka den skapade länken för hemlig begäran till den angivna e-postadressen.
  • send_to_email: skicka den hemliga länken som skapats med hjälp av den hemliga begäran till den angivna e-postadressen.
  • secret_description: beskrivning för den hemlighet som skapats med hjälp av hemlighetsbegäran.
  • secret_message: meddelande för den hemlighet som skapats med hjälp av hemlighetsbegäran.
  • secret_expiration: utgångstid i timmar för den hemlighet som skapats med hjälp av hemlighetsbegäran.
  • secret_password: lösenord för den hemlighet som skapats med hjälp av hemlighetsbegäran, i timmar.
  • secret_max_views: visningsgräns för den hemlighet som skapats med hjälp av hemlighetsbegäran.

Exempel på fråga

curl -H "Authorization: ApiKey private_key_abcd" \
-H "Content-Type: application/json" -X POST https://password.link/api/secret_requests

Exempel på svar

{
  "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
  }
}

Lista hemliga förfrågningar

Typ av begäran: GET

Sökväg för begäran: https://password.link/api/secret_requests

Statuskod för framgångsrik fråga: 200 OK


Lista hemliga förfrågningar.

Limit och offset

Det maximala antalet resultat som returneras för varje fråga är begränsat till 50. Du kan styra förskjutningen med den valfria frågeparametern offset.

Om du t.ex. vill hoppa över de första 50 posterna använder du en fråga som: .../api/secret_requests?offset=50

Exempel på fråga

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

Exempel på svar

{
  "data":[
      {
         "id":"5e976e6e-d205-4f58-8df9-5ac0048bc702",
         "description":"example",
         "message":"example",
         "expiration":3,
         "limit":1,
         "send_to_email":"example@example.com",
         "secret_description":"example",
         "secret_message":"example",
         "secret_expiration":"example",
         "secret_max_views":4,
         "secret_password":false,
         "template_id":null
      }
  ],
  "metadata": {
    "secrets_total":70,
    "secrets_usage":25,
    "secrets_allowance":100,
    "secret_requests_total":10,
    "secret_requests_allowance":100
  }
}

Begäran om att ta bort hemlighet

Typ av begäran: DELETE

Sökväg för begäran: https://password.link/api/secret_requests/<id>

Statuskod för framgångsrik fråga: 200 OK


Ta bort en hemlig begäran.

Exempel på fråga

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

Exempel på svar

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