Fai un POST del file su https://up.anon.cat/upload: per impostazione predefinita ottieni una risposta json.
Se vuoi un formato diverso da json, aggiungi un parametro che specifichi quale, per esempio https://up.anon.cat/upload?output=csv.
I tipi di risposta validi sono: json, csv, text, html e gyazo.
Un file per richiesta, fino a 1 GB.
curl -i -F files[]=@yourfile.jpeg https://up.anon.cat/upload
Puoi anche mandare il file direttamente nel corpo della richiesta invece che in un form multipart, passando il nome nella query. Per i file grandi è l'opzione migliore: la dimensione si conosce fin dall'inizio, non c'è la busta multipart, ed è quello che usa il sito stesso.
curl -i -T yourfile.iso "https://up.anon.cat/upload?filename=yourfile.iso"
Entrambi i modi passano il file direttamente al CDN, quindi nessuno dei due è limitato dallo spazio su disco del server.
Con scrub=1 il file viene ripulito dei suoi metadati lungo il percorso verso la CDN: Exif e GPS da un JPEG, blocchi di testo ed eXIf da un PNG, Exif e XMP da un WebP. I pixel restano intatti e tutto ciò che non è uno di questi tre formati viene salvato esattamente come è stato inviato.
curl -i -T photo.jpg "https://up.anon.cat/upload?filename=photo.jpg&scrub=1"
Il sito lo invia a ogni caricamento. In un caricamento ripristinabile il parametro va sulla chiamata /upload/finish, non su ogni blocco.
Anon.Notes ha una propria API, ed è una cosa diversa dall'endpoint di caricamento qui sopra: scrive dentro una sola nota, non nell'hosting pubblico di file. La chiave si crea dentro la nota, nella sua pagina delle impostazioni, e non può fare nulla su nessun'altra nota.
A cosa serve: una nota come ricevitore. Uno script di deploy, un job di CI, un cron o un bot ci spinge dentro delle righe, e tu le leggi dopo dal telefono. Niente da registrare e niente da interrogare in continuazione: la nota è la cassetta della posta.
L'indirizzo di base è https://anon.cat/api/notes/. Tutto parla JSON e tutto si autentica allo stesso modo.
Apri la nota, vai in Impostazioni e crea una chiave sotto API per sviluppatori. Viene mostrata una volta sola: copiala subito, perché da questa parte nulla può rileggertela dopo.
Ogni chiave ha un ambito: append può aggiungere voci e non leggere niente, read può leggere e non scrivere niente, e rw può entrambe le cose e gestisce le notifiche. Dai a una macchina l'ambito più stretto con cui riesce a fare il suo lavoro.
Mandala come token bearer. Nella query string non viene mai accettata, perché la query string finisce nel log degli accessi.
curl -H "Authorization: Bearer $ANON_KEY" https://anon.cat/api/notes/ping
Revocare una chiave è un clic nello stesso pannello, ha effetto immediato e non tocca né la nota né le altre chiavi. La tua password non compare da nessuna parte qui, e una chiave non può leggerla, cambiarla o cancellare la nota.
POST su /api/notes/append, con il testo in un campo text oppure come intero corpo della richiesta. Le due forme fanno la stessa cosa:
curl -H "Authorization: Bearer $ANON_KEY" -d "text=deploy 1.9.9 finished" https://anon.cat/api/notes/append
curl -H "Authorization: Bearer $ANON_KEY" -H "Content-Type: application/json" -d '{"text":"deploy 1.9.9 finished"}' https://anon.cat/api/notes/append
tail -n 20 build.log | curl -H "Authorization: Bearer $ANON_KEY" --data-binary @- https://anon.cat/api/notes/append
Una nota-registro riceve una voce in più. Una nota-pagina cresce: il testo viene aggiunto in fondo al documento, mai sopra, così uno script con una copia vecchia non può cancellare quello che hai scritto tu nel frattempo.
La risposta è un 201 con lo stato della nota. Aggiungi notify=false per saltare le notifiche in una singola chiamata: è quello che serve a un ciclo che ricarica righe vecchie.
Con una chiave read o rw, /api/notes/entries restituisce le voci decifrate, dalla più vecchia. limit e offset impaginano, e order=desc parte dalla più recente, che è quello che serve a un programma che controlla di continuo.
curl -H "Authorization: Bearer $ANON_KEY" "https://anon.cat/api/notes/entries?limit=10&order=desc"
/api/notes/note restituisce la nota senza il contenuto: quante voci ha, quando ci si è scritto l'ultima volta e quanto le resta prima che la pulizia per inattività se la porti via. Anche ogni accesso via API rimette a zero quell'orologio, quindi una nota in cui un bot scrive ogni giorno non scade mai.
Una nota può avvisarti quando una chiave ci scrive dentro, su Discord o su Telegram. Se ci scrivi tu non parte niente: il punto è sapere della macchina, non di te stesso.
Impostane una nelle Impostazioni, oppure via API con una chiave rw. Alla creazione parte subito una prova, così una URL di webhook copiata male è un codice di stato che vedi immediatamente.
curl -H "Authorization: Bearer $ANON_KEY" -H "Content-Type: application/json" -d '{"kind":"discord","url":"https://discord.com/api/webhooks/…","label":"deploys"}' https://anon.cat/api/notes/hooks
curl -H "Authorization: Bearer $ANON_KEY" -H "Content-Type: application/json" -d '{"kind":"telegram","bot":"123456789:AA…","chat":"-1001234567890"}' https://anon.cat/api/notes/hooks
Per impostazione predefinita una notifica non porta con sé nessun testo della nota: dice che è arrivato qualcosa, quanto, quale chiave l'ha mandato, e rimanda qui - e la nota resta comunque dietro la sua password. Passa preview=true e parte anche la voce stessa, il che significa consegnare il tuo testo a Discord o a Telegram. È uno scambio reale, ed è per questo che è spento finché non lo chiedi.
Sono accettati solo gli indirizzi webhook di Discord e i bot di Telegram. Una URL qualsiasi non è offerta di proposito: sarebbe questo server ad andarla a prendere.