{"openapi":"3.1.0","info":{"title":"LinkSniffer API","version":"0.1.0","description":"Check what really answers behind a link - status, every redirect hop, meta refresh and JavaScript redirects - and monitor links for changes. Free during the beta: https://www.linksniffer.de/entwickler"},"servers":[{"url":"https://www.linksniffer.de/v1"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"API key (lsk_...)"}},"responses":{"Error":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}}}},"schemas":{"InspectRequest":{"type":"object","required":["url"],"properties":{"url":{"type":"string"},"method":{"type":"string","enum":["GET","HEAD"]},"userAgent":{"type":"string","enum":["desktop","mobile","googlebot"]},"followRedirects":{"type":"boolean"},"lang":{"type":"string","enum":["en","de"],"description":"Language of error messages."}}},"MonitorRequest":{"type":"object","required":["url"],"properties":{"url":{"type":"string"},"label":{"type":"string"},"userAgent":{"type":"string","enum":["desktop","mobile","googlebot"]},"compare":{"type":"string","enum":["path","full"]}}}}},"paths":{"/keys":{"post":{"operationId":"createKey","summary":"Create a free API key (shown once)","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email","acceptTerms"],"properties":{"email":{"type":"string"},"label":{"type":"string"},"acceptTerms":{"type":"boolean","const":true},"newsOptIn":{"type":"boolean"}}}}}},"responses":{"201":{"description":"Key created"},"400":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/inspect":{"post":{"operationId":"inspectUrl","summary":"Inspect one URL","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InspectRequest"}}}},"responses":{"200":{"description":"Inspection result"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/me":{"get":{"operationId":"getAccount","summary":"Plan, usage and limits","responses":{"200":{"description":"Account"},"401":{"$ref":"#/components/responses/Error"}}},"patch":{"operationId":"updateAccount","summary":"Set or remove the webhook, change the news opt-in","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"webhookUrl":{"type":["string","null"]},"newsOptIn":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Updated"},"400":{"$ref":"#/components/responses/Error"}}},"delete":{"operationId":"deleteAccount","summary":"Delete key, monitors and history","responses":{"200":{"description":"Deleted"}}}},"/me/feed":{"post":{"operationId":"rotateFeed","summary":"Create a new Atom feed URL (old one stops working)","responses":{"200":{"description":"New feed URL"}}}},"/monitors":{"get":{"operationId":"listMonitors","summary":"List monitors","responses":{"200":{"description":"Monitors"}}},"post":{"operationId":"createMonitor","summary":"Monitor a URL","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitorRequest"}}}},"responses":{"201":{"description":"Monitor created"},"400":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"}}}},"/monitors/{id}":{"get":{"operationId":"getMonitor","summary":"Monitor with history","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Monitor"},"404":{"$ref":"#/components/responses/Error"}}},"delete":{"operationId":"deleteMonitor","summary":"Remove a monitor","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Deleted"},"404":{"$ref":"#/components/responses/Error"}}}},"/monitors/{id}/check":{"post":{"operationId":"checkMonitor","summary":"Check a monitor now","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Result"}}}},"/events":{"get":{"operationId":"listEvents","summary":"Recent confirmed change events","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","maximum":200}},{"name":"sinceId","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Events"}}}}}}