API de Anon.Cat

Adreça

Fes un POST del fitxer a https://up.anon.cat/upload; per defecte rebràs una resposta en json.

Si en vols una altra que no sigui json, afegeix-hi un paràmetre indicant el format, per exemple https://up.anon.cat/upload?output=csv.

Els tipus de resposta vàlids són: json, csv, text, html i gyazo.

Un fitxer per petició, fins a 1 GB.

Exemple amb curl

curl -i -F files[]=@yourfile.jpeg https://up.anon.cat/upload

Pujada al cos de la petició

També pots enviar el fitxer directament al cos de la petició en comptes d'un formulari multipart, passant el nom a la query. Per a fitxers grans és la millor opció: la mida es coneix des del principi, no hi ha embolcall multipart, i és el que fa servir el mateix web.

curl -i -T yourfile.iso "https://up.anon.cat/upload?filename=yourfile.iso"

Totes dues formes passen el fitxer directament a la CDN, així que cap de les dues no queda limitada per l'espai de disc del servidor.

Eliminar metadades

Amb scrub=1 el fitxer perd les seves metadades camí de la CDN: Exif i GPS d'un JPEG, blocs de text i eXIf d'un PNG, Exif i XMP d'un WebP. Els píxels no es toquen, i tot allò que no sigui un d'aquests tres formats es desa exactament tal com es va enviar.

curl -i -T photo.jpg "https://up.anon.cat/upload?filename=photo.jpg&scrub=1"

El web l'envia a cada pujada. En una pujada represa el paràmetre va a la crida /upload/finish, no a cada bloc.

API de notes

Anon.Notes té la seva pròpia API, i és una cosa diferent del punt de pujada de més amunt: escriu dins d'una sola nota, no dins de l'allotjament públic de fitxers. La clau es crea des de la nota mateixa, a la seva pàgina de configuració, i no pot fer res a cap altra nota.

Per a què serveix: una nota com a receptor. Un script de desplegament, una tasca de CI, un cron o un bot hi empeny línies, i tu les llegeixes després al mòbil. Res per registrar i res per anar consultant: la nota és la bústia.

L'adreça base és https://anon.cat/api/notes/. Tot parla JSON i tot s'autentica igual.

Claus

Obre la nota, ves a Configuració i crea una clau a API per a desenvolupadors. Es mostra una sola vegada: copia-la llavors, perquè d'aquesta banda ja no hi ha res que te la pugui tornar a llegir.

Cada clau porta un abast: append pot afegir entrades i no llegir res, read pot llegir i no escriure res, i rw pot totes dues coses i gestiona les notificacions. Dona a cada màquina l'abast més estret amb què pugui fer la seva feina.

Envia-la com a testimoni bearer. A la cadena de consulta no s'accepta mai, perquè la cadena de consulta acaba al registre d'accessos.

curl -H "Authorization: Bearer $ANON_KEY" https://anon.cat/api/notes/ping

Revocar una clau és un clic al mateix quadre, té efecte immediat i no toca ni la nota ni cap altra clau. La teva contrasenya no hi intervé enlloc, i una clau no la pot llegir, ni canviar, ni esborrar la nota.

Enviar una entrada

POST a /api/notes/append, amb el text en un camp text o com a cos sencer de la petició. Totes dues formes fan el mateix:

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 de registre rep una entrada més. Una nota de pàgina creix: el text s'afegeix al final del document, mai a sobre, perquè un script amb una còpia antiga no pugui esborrar el que has escrit tu mentrestant.

La resposta és un 201 amb l'estat de la nota. Afegeix-hi notify=false per saltar-te les notificacions en una crida, que és el que vol un bucle que reprodueix línies velles.

Llegir una nota

Amb una clau read o rw, /api/notes/entries retorna les entrades desxifrades, de la més antiga a la més nova. limit i offset pagina, i order=desc comença per la més nova, que és el que vol un programa que va consultant.

curl -H "Authorization: Bearer $ANON_KEY" "https://anon.cat/api/notes/entries?limit=10&order=desc"

/api/notes/note retorna la nota sense el contingut: quantes entrades té, quan s'hi va escriure per últim cop i quant li queda abans que la neteja per inactivitat se l'endugui. Cada accés per l'API també posa aquest rellotge a zero, així que una nota on un bot escriu cada dia no caduca mai.

Notificacions

Una nota et pot avisar quan una clau hi escriu, per Discord o per Telegram. Que hi escriguis tu no n'envia mai cap: la idea és assabentar-te de la màquina, no de tu mateix.

Configura'n una a Configuració, o per l'API amb una clau rw. En crear-la es dispara una prova, de manera que una URL de webhook mal copiada sigui un codi d'estat que veus a l'instant.

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 defecte una notificació no porta gens de text de la nota: diu que ha arribat alguna cosa, quanta, quina clau ho ha enviat, i enllaça cap aquí - i la nota continua darrere la seva contrasenya. Passa-hi preview=true i hi va també l'entrada mateixa, cosa que vol dir donar el teu text a Discord o a Telegram. És un intercanvi de debò, i per això està apagat si no ho demanes.

Només s'accepten adreces de webhook de Discord i bots de Telegram. Una URL qualsevol no s'ofereix expressament: seria aquest servidor qui l'aniria a buscar.