online / endpoints 18 / categories 4 / rate 60/min/ip /

GET /manifest.webmanifest

GET /manifest.webmanifest

PWA web app manifest. Wide tooling consumption — Chrome, Lighthouse, browser PWA installers all parse this and complain when it's wrong. Modes break required icons, start_url, display modes, colors, or name fields.

mode missing-icons (default; icons array empty), wrong-start-url (start_url points to a 404), contradictory-display (display: standalone with display_override: [browser, minimal-ui, fullscreen]), invalid-colors (theme_color: 'not-a-color', background_color: '#GGGGGG'), name-mismatch (name and short_name disagree about identity).
build a request:

expect: 200 OK with Content-Type: application/manifest+json. The default mode omits required icons (PWA installers refuse to offer the install prompt). Other modes break URL targets, theme colors, or name consistency. X-Chaos-Manifest-Mode reflects the selection.

bash
curl -i 'https://bots.catastrophic.io/manifest.webmanifest?mode=missing-icons'
import urllib.request
resp = urllib.request.urlopen("https://bots.catastrophic.io/manifest.webmanifest?mode=missing-icons")
print(resp.status, "Content-Type:", resp.headers["Content-Type"])
print(resp.headers["X-Chaos-Manifest-Mode"])
print(resp.read().decode())
const res = await fetch("https://bots.catastrophic.io/manifest.webmanifest?mode=missing-icons");
console.log(res.status, res.headers.get("content-type"));
console.log(res.headers.get("x-chaos-manifest-mode"));
console.log(await res.text());
package main

import (
    "fmt"
    "io"
    "net/http"
)

func main() {
    resp, _ := http.Get("https://bots.catastrophic.io/manifest.webmanifest?mode=missing-icons")
    defer resp.Body.Close()
    body, _ := io.ReadAll(resp.Body)
    fmt.Println(resp.StatusCode, "Content-Type:", resp.Header.Get("Content-Type"))
    fmt.Println(resp.Header.Get("X-Chaos-Manifest-Mode"))
    fmt.Println(string(body))
}
fn main() -> Result<(), Box> {
    let resp = reqwest::blocking::get("https://bots.catastrophic.io/manifest.webmanifest?mode=missing-icons")?;
    println!("{} {:?}", resp.status(), resp.headers().get("content-type"));
    println!("{:?}", resp.headers().get("x-chaos-manifest-mode"));
    println!("{}", resp.text()?);
    Ok(())
}
import java.net.URI;
import java.net.http.*;

public class BotsManifest {
    public static void main(String[] args) throws Exception {
        var client = HttpClient.newHttpClient();
        var req = HttpRequest.newBuilder(URI.create("https://bots.catastrophic.io/manifest.webmanifest?mode=missing-icons")).build();
        var resp = client.send(req, HttpResponse.BodyHandlers.ofString());
        System.out.println(resp.statusCode() + " " +
            resp.headers().firstValue("Content-Type").orElse(""));
        System.out.println(resp.headers().firstValue("X-Chaos-Manifest-Mode").orElse(""));
        System.out.println(resp.body());
    }
}
using var client = new HttpClient();
var resp = await client.GetAsync("https://bots.catastrophic.io/manifest.webmanifest?mode=missing-icons");
Console.WriteLine($"{(int)resp.StatusCode} {resp.Content.Headers.ContentType}");
resp.Headers.TryGetValues("X-Chaos-Manifest-Mode", out var mode);
Console.WriteLine(mode?.FirstOrDefault());
Console.WriteLine(await resp.Content.ReadAsStringAsync());
require "net/http"
res = Net::HTTP.get_response(URI("https://bots.catastrophic.io/manifest.webmanifest?mode=missing-icons"))
puts "#{res.code} Content-Type: #{res['Content-Type']}"
puts res['X-Chaos-Manifest-Mode']
puts res.body
$r = Invoke-WebRequest -Uri 'https://bots.catastrophic.io/manifest.webmanifest?mode=missing-icons'
"Content-Type: $($r.Headers['Content-Type'])"
$r.Headers['X-Chaos-Manifest-Mode']
$r.Content