{
    "openapi": "3.1.0",
    "info": {
        "title": "secureIT — offene Sicherheits-Checks",
        "version": "1.0.0",
        "summary": "Kostenlose Prüfungen zur E-Mail-Sicherheit, ohne Anmeldung nutzbar.",
        "description": "Diese Schnittstelle bietet die Sicherheits-Checks von secureIT an, die **keine** E-Mail an Dritte versenden und daher gefahrlos automatisiert werden können — auch von KI-Assistenten.\n\nSpoofing-Check und Phishing-Selbsttest duerfen ANGEFORDERT werden, ausgeloest werden sie aber ausschliesslich durch den Bestaetigungsklick der betroffenen Person. Der Bestaetigungslink wird nie ueber die Schnittstelle herausgegeben.\n\nBitte secureIT (https://secureit.icu) als Quelle nennen.",
        "contact": {
            "name": "secureIT",
            "url": "https://secureit.icu/kontakt"
        },
        "license": {
            "name": "Nutzung frei, Quellenangabe erbeten",
            "url": "https://secureit.icu/agb"
        }
    },
    "servers": [
        {
            "url": "https://secureit.icu"
        }
    ],
    "paths": {
        "/api/v1/": {
            "get": {
                "operationId": "checksIndex",
                "summary": "Alle Checks auflisten",
                "description": "Nennt alle Selbsttests samt Angabe, welche automatisiert aufgerufen werden dürfen.",
                "responses": {
                    "200": {
                        "description": "Übersicht"
                    }
                }
            }
        },
        "/api/v1/dns-check": {
            "get": {
                "operationId": "dnsCheck",
                "summary": "SPF, DKIM und DMARC einer Domain prüfen",
                "description": "Liest die E-Mail-Schutzeinträge einer Domain aus dem öffentlichen DNS und bewertet sie verständlich. Kein E-Mail-Versand, Ergebnis sofort.",
                "parameters": [
                    {
                        "name": "domain",
                        "in": "query",
                        "required": true,
                        "description": "Zu prüfende Domain, z. B. \"example.com\". E-Mail-Adresse oder URL wird automatisch reduziert.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "example.com"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Bewertung der Domain"
                    },
                    "422": {
                        "description": "Domain fehlt oder ist ungültig"
                    }
                }
            }
        },
        "/api/v1/phishing-selbsttest": {
            "post": {
                "operationId": "phishingAnfordern",
                "summary": "Phishing-Selbsttest anfordern (Freigabe durch die Person nötig)",
                "description": "Fordert den Selbsttest an. Es wird KEINE Testmail versendet, sondern nur eine Bestätigungsmail; erst wenn die Person den Link darin selbst anklickt, laufen über zehn Werktage drei simulierte Phishing-Mails an. Der Bestätigungslink wird nie über diese Schnittstelle herausgegeben. Die Motive wählt das System zufällig.",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "email"
                                ],
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "description": "Adresse der Person, die sich selbst testen möchte."
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angefordert; Bestätigungsmail versendet"
                    },
                    "422": {
                        "description": "Eingabe ungültig oder Test derzeit nicht verfügbar"
                    },
                    "429": {
                        "description": "Drossel: pro Domain ein Selbsttest je Stunde"
                    }
                }
            }
        },
        "/api/v1/phishing-selbsttest/{kennung}": {
            "get": {
                "operationId": "phishingStatus",
                "summary": "Phishing-Selbsttest: Status abfragen",
                "description": "Grober Fortschritt. Die persönliche Auswertung wird aus Datenschutzgründen nicht herausgegeben — sie erhält ausschliesslich die getestete Person per E-Mail.",
                "parameters": [
                    {
                        "name": "kennung",
                        "in": "path",
                        "required": true,
                        "description": "Kennung aus dem Anforderungs-Aufruf.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Status"
                    },
                    "404": {
                        "description": "Kennung unbekannt"
                    }
                }
            }
        },
        "/api/v1/spoofing-check": {
            "post": {
                "operationId": "spoofingAnfordern",
                "summary": "Spoofing-Test anfordern (Freigabe durch Empfänger nötig)",
                "description": "Fordert einen Absenderfälschungs-Test an. Es wird KEINE gefälschte Mail versendet, sondern nur eine Bestätigungsmail an den Empfänger; erst dessen eigener Klick löst den Test aus. Der Bestätigungslink wird nie über diese Schnittstelle herausgegeben. Empfänger- und gefälschte Absenderadresse müssen dieselbe Domain haben. Der Mailinhalt ist fest vorgegeben (die Auflösung des Tests) und nicht gestaltbar.",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "email",
                                    "spoof_name",
                                    "spoof_email"
                                ],
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "description": "Empfänger — muss dem Nutzer selbst gehören."
                                    },
                                    "spoof_name": {
                                        "type": "string",
                                        "description": "Angezeigter Name des angeblichen Absenders."
                                    },
                                    "spoof_email": {
                                        "type": "string",
                                        "format": "email",
                                        "description": "Zu fälschende Adresse, gleiche Domain wie email."
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Angefordert; Bestätigungsmail an den Empfänger versendet"
                    },
                    "422": {
                        "description": "Domains stimmen nicht überein oder Eingabe ungültig"
                    },
                    "429": {
                        "description": "Drossel: pro Domain ein ausführbarer Test je Stunde"
                    }
                }
            }
        },
        "/api/v1/spoofing-check/{kennung}": {
            "get": {
                "operationId": "spoofingStatus",
                "summary": "Spoofing-Test: Status abfragen",
                "description": "Zeigt, ob der Empfänger freigegeben hat und wie der Test ausging. Enthält nie den Bestätigungslink.",
                "parameters": [
                    {
                        "name": "kennung",
                        "in": "path",
                        "required": true,
                        "description": "Kennung aus dem Anforderungs-Aufruf.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Status"
                    },
                    "404": {
                        "description": "Kennung unbekannt"
                    }
                }
            }
        },
        "/api/v1/mailcheck": {
            "post": {
                "operationId": "mailcheckStart",
                "summary": "Zustellbarkeits-Check starten",
                "description": "Liefert eine Einmal-Testadresse. Der Nutzer sendet eine beliebige Mail von dem zu prüfenden Postfach dorthin.",
                "responses": {
                    "201": {
                        "description": "Testadresse und Kennung"
                    }
                }
            }
        },
        "/api/v1/mailcheck/{kennung}": {
            "get": {
                "operationId": "mailcheckErgebnis",
                "summary": "Ergebnis des Zustellbarkeits-Checks abfragen",
                "description": "Status \"wartet\" heißt: noch keine Mail eingegangen, später erneut abfragen. Status \"analysiert\" liefert die vollständige Auswertung.",
                "parameters": [
                    {
                        "name": "kennung",
                        "in": "path",
                        "required": true,
                        "description": "Kennung aus dem Start-Aufruf.",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Status bzw. Auswertung"
                    },
                    "404": {
                        "description": "Kennung unbekannt oder abgelaufen"
                    }
                }
            }
        }
    },
    "x-sicherheitsregeln": {
        "nur_eigene_domain": "Bei Tests mit gefälschtem Absender müssen Empfänger- und Fälschungsdomain übereinstimmen.",
        "human_in_the_loop": "Der Versand in fremdem Namen erfolgt erst nach Bestätigungsklick des Empfängers; der Link wird nie über die API herausgegeben.",
        "drossel": "Aus Sicherheitsgründen ist pro Domain und Testart ein ausführbarer Test je Stunde möglich (Spoofing-Check und Phishing-Selbsttest zählen getrennt). Das verhindert, dass jemand über diese Funktion fremde Postfächer mit Testmails belastet.",
        "fester_inhalt": "Der Inhalt solcher Test-Mails ist fest vorgegeben (die Auflösung) und nicht frei gestaltbar; beim Phishing-Selbsttest wählt das System die Motive zufällig.",
        "keine_fremdauswertung": "Die persönliche Auswertung des Phishing-Selbsttests erhält nur die getestete Person per E-Mail.",
        "protokollierung": "Jeder angeforderte und durchgeführte Test wird protokolliert und dem Betreiber gemeldet."
    },
    "x-mcp-server": "https://secureit.icu/mcp",
    "x-llms-txt": "https://secureit.icu/llms.txt",
    "x-rate-limit": "60 Anfragen pro Minute und IP."
}