Fix SDK compatibility: poll response field names and file metadata format

This commit is contained in:
oval
2026-06-08 12:11:48 +02:00
parent 5883565b87
commit 3601d48f5a
5 changed files with 29 additions and 1780 deletions
+29 -5
View File
@@ -321,12 +321,27 @@ def _poll_result(endpoint: str, request_id: str) -> Response:
result = request_store.get_result(request_id) result = request_store.get_result(request_id)
if result is None: if result is None:
return jsonify({"status": "complete", "success": False, "error": "Result not found"}), 500 return jsonify({"status": "complete", "success": False, "error": "Result not found"}), 500
return jsonify({ fmt = result.get("format", "markdown")
payload = {
"status": "complete", "status": "complete",
"success": result.get("success", False), "success": result.get("success", False),
"error": result.get("error"), "error": result.get("error"),
**{k: v for k, v in result.items() if k not in ("success", "error")}, "output_format": fmt,
}) }
output_text = result.get("output", "")
if fmt in ("markdown", "html"):
payload[fmt] = output_text
elif fmt == "json":
try:
payload["json"] = json.loads(output_text) if output_text else None
except (json.JSONDecodeError, TypeError):
payload["json"] = output_text
elif fmt == "chunks":
payload["chunks"] = output_text
payload["images"] = result.get("images_b64", {})
payload["metadata"] = result.get("metadata", {})
payload["page_count"] = result.get("page_count")
return jsonify(payload)
# ── Flask app factory ──────────────────────────────────────────────── # ── Flask app factory ────────────────────────────────────────────────
@@ -756,14 +771,21 @@ code{background:#f4f4f4;padding:2px 6px;border-radius:3px}
data = request.get_json() if request.is_json else {} data = request.get_json() if request.is_json else {}
filename = data.get("filename", "file") filename = data.get("filename", "file")
content_type = data.get("content_type", "application/octet-stream") content_type = data.get("content_type", "application/octet-stream")
import time as tmod
file_id = str(uuid.uuid4()) file_id = str(uuid.uuid4())
file_dir = _file_storage_path() / file_id file_dir = _file_storage_path() / file_id
file_dir.mkdir(parents=True, exist_ok=True) file_dir.mkdir(parents=True, exist_ok=True)
metadata = { metadata = {
"file_id": file_id, "file_id": file_id,
"original_filename": filename,
"filename": filename, "filename": filename,
"content_type": content_type, "content_type": content_type,
"reference": f"datalab://file-{file_id}",
"created_at": time.time(), "created_at": time.time(),
"created": tmod.strftime("%Y-%m-%dT%H:%M:%SZ", tmod.gmtime()),
"file_size": None,
"upload_status": "pending",
"error": None,
} }
(file_dir / "metadata.json").write_text(json.dumps(metadata)) (file_dir / "metadata.json").write_text(json.dumps(metadata))
import secrets import secrets
@@ -785,9 +807,11 @@ code{background:#f4f4f4;padding:2px 6px;border-radius:3px}
(file_dir / "content").write_bytes(request.data) (file_dir / "content").write_bytes(request.data)
metadata_path = file_dir / "metadata.json" metadata_path = file_dir / "metadata.json"
if metadata_path.exists(): if metadata_path.exists():
import time as tmod
meta = json.loads(metadata_path.read_text()) meta = json.loads(metadata_path.read_text())
meta["uploaded_at"] = time.time() meta["uploaded_at"] = tmod.time()
meta["size"] = len(request.data) meta["file_size"] = len(request.data)
meta["upload_status"] = "completed"
metadata_path.write_text(json.dumps(meta)) metadata_path.write_text(json.dumps(meta))
return jsonify({"success": True}) return jsonify({"success": True})
-974
View File
@@ -1,974 +0,0 @@
<html lang="en" class="no-js">
<head>
<meta charset="utf-8" />
<title>Sorry - 821436</title>
<meta content="width=device-width,initial-scale=1" name="viewport" />
<meta content="IE=edge" http-equiv="X-UA-Compatible" />
<script>
var cl = document.querySelector('html').classList;
cl.remove('no-js');
cl.add('has-js');
</script>
<script>
!function(a,b){"function"==typeof define&&define.amd?define([],function(){return a.svg4everybody=b()}):"object"==typeof module&&module.exports?module.exports=b():a.svg4everybody=b()}(this,function(){function a(a,b,c){if(c){var d=document.createDocumentFragment(),e=!b.hasAttribute("viewBox")&&c.getAttribute("viewBox");e&&b.setAttribute("viewBox",e);for(var f=c.cloneNode(!0);f.childNodes.length;)d.appendChild(f.firstChild);a.appendChild(d)}}function b(b){b.onreadystatechange=function(){if(4===b.readyState){var c=b._cachedDocument;c||(c=b._cachedDocument=document.implementation.createHTMLDocument(""),c.body.innerHTML=b.responseText,b._cachedTarget={}),b._embeds.splice(0).map(function(d){var e=b._cachedTarget[d.id];e||(e=b._cachedTarget[d.id]=c.getElementById(d.id)),a(d.parent,d.svg,e)})}},b.onreadystatechange()}function c(c){function e(){for(var c=0;c<o.length;){var h=o[c],i=h.parentNode,j=d(i),k=h.getAttribute("xlink:href")||h.getAttribute("href");if(!k&&g.attributeName&&(k=h.getAttribute(g.attributeName)),j&&k){if(f)if(!g.validate||g.validate(k,j,h)){i.removeChild(h);var l=k.split("#"),q=l.shift(),r=l.join("#");if(q.length){var s=m[q];s||(s=m[q]=new XMLHttpRequest,s.open("GET",q),s.send(),s._embeds=[]),s._embeds.push({parent:i,svg:j,id:r}),b(s)}else a(i,j,document.getElementById(r))}else++c,++p}else++c}(!o.length||o.length-p>0)&&n(e,67)}var f,g=Object(c),h=/\bTrident\/[567]\b|\bMSIE (?:9|10)\.0\b/,i=/\bAppleWebKit\/(\d+)\b/,j=/\bEdge\/12\.(\d+)\b/,k=/\bEdge\/.(\d+)\b/,l=window.top!==window.self;f="polyfill"in g?g.polyfill:h.test(navigator.userAgent)||(navigator.userAgent.match(j)||[])[1]<10547||(navigator.userAgent.match(i)||[])[1]<537||k.test(navigator.userAgent)&&l;var m={},n=window.requestAnimationFrame||setTimeout,o=document.getElementsByTagName("use"),p=0;f&&e()}function d(a){for(var b=a;"svg"!==b.nodeName.toLowerCase()&&(b=b.parentNode););return b}return c});
</script>
<link
rel="stylesheet"
href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/styles/ecl-eu-preset-website.css"
integrity="sha256-Mwc5eL1RymLbiIKrMvbZmz/FOXFlCnjAsGHs9AIb6Qc= sha384-NQOOLrEUKk++wGGz+h1BASx0NyOK/mTbtDF4gZ9e3x1ZgXrWnhG/FmQYfOsojLws sha512-86FiTtDKFNsKWJYUgy0J08wzXIbbDCwWyYkhaVYL75I8J6ANisHNib3imST5zh20lAFaS9cAqYMxPRARWkUPqg=="
crossorigin="anonymous"
media="screen"
/>
<link
rel="stylesheet"
href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/styles/ecl-eu-preset-website-print.css"
integrity="sha256-lJYdcmklwVrgn2ZWsSN3GZ5G+1saXwJLjUX0mrcHoX4= sha384-Os00jmeauouS56K4NmaQ636onpfJqEMNVujF5H9lwauJgQTQjOLbdJvZbUwmtBti sha512-OjGa7LT06TdGWp9P9RkGtYkcAygRxjLswT8X3vmTuNTXigf/R+vYllFHgDtQj7W3vQX/fxd2DvVLVel+nodiew=="
crossorigin="anonymous"
media="print"
/>
</head>
<body>
<header
data-ecl-auto-init="SiteHeaderHarmonised"
class="ecl-site-header-harmonised"
>
<div class="ecl-site-header-harmonised__container ecl-container">
<div class="ecl-site-header-harmonised__top">
<a
class="ecl-link ecl-link--standalone ecl-site-header-harmonised__logo-link"
href="#"
aria-label="European Union"
>
<img
alt="European Union logo"
title="European Union"
class="ecl-site-header-harmonised__logo-image-mobile"
src="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/logo/condensed-version/positive/en.svg"
/>
<img
alt="European Union logo"
title="European Union"
class="ecl-site-header-harmonised__logo-image-desktop"
src="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/logo/standard-version/positive/en.svg"
/>
</a>
<div class="ecl-site-header-harmonised__action"></div>
</div>
</div>
<div class="ecl-site-header-harmonised__banner">
<div class="ecl-container">
<h1 class="ecl-page-header-core__title">Server inaccessibility</h1>
<p class="ecl-page-header-core__description">429 - Too Many Requests</br>Status ID: <b>64b800fd</b> / Request ID: <b>821436</b></p>
</div>
</div>
</header>
<main class="ecl-container ecl-u-mv-xl ecl-u-mv-md-3xl">
<div class="ecl-row">
<div class="ecl-col-md-6">
<div class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-width-100">
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>bg</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Сървърът е временно недостъпен
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Извиняваме се за неудобството. Моля, опитайте пак по-късно.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>cs</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Server je dočasně nedostupný
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Omlouváme se za způsobené nepříjemnosti. Zkuste to prosím znovu později.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>da</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Serveren er midlertidigt utilgængelig
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Vi undskylder ulejligheden. Prøv igen senere.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>de</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Der Server ist vorübergehend nicht verfügbar
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Wir entschuldigen uns für etwaige Unannehmlichkeiten. Bitte
versuchen Sie es später noch einmal.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>el</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Ο διακομιστής δεν είναι διαθέσιμος προσωρινά
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Ζητούμε συγγνώμη για τυχόν προβλήματα. Δοκιμάστε ξανά αργότερα.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>en</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
The server is temporarily unavailable
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
We apologise for any inconvenience. Please try again later.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>es</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
El servidor no está disponible temporalmente
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Le rogamos disculpe las molestias. Vuelva a intentarlo más
tarde.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>et</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Server ei ole ajutiselt kättesaadav
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Palume vabandust tekkinud ebamugavuste pärast. Palun proovige
hiljem uuesti.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>fi</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Palvelin on väliaikaisesti poissa käytöstä
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Pahoittelemme mahdollista haittaa. Yritä myöhemmin uudelleen.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>fr</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Le serveur est temporairement indisponible
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Veuillez nous excuser pour ce désagrément. Merci de réessayer
plus tard.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>ga</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Níl fáil ar an bhfreastalaí i láthair na huaire
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Is oth linn an chiotaí. Bain triail as arís ar ball.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>hr</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Poslužitelj je privremeno nedostupan
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Ispričavamo se zbog neugodnosti. Pokušajte ponovno kasnije.
</p>
</div>
</div>
</div>
<div class="ecl-col-md-6">
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-mt-md-none ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>hu</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
A szerver átmenetileg nem érhető el, kérjük, próbálkozzon újra
később
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Az esetleges kellemetlenségekért elnézését kérjük.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>it</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Il server è temporaneamente non disponibile
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Ci scusiamo per il disagio arrecato. Riprovare più tardi.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>lt</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Serveris laikinai neveikia
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Atsiprašome už nepatogumus. Bandykite dar kartą vėliau.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>lv</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Serveris pagaidām nav pieejams
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Atvainojamies par neērtībām. Mēģiniet vēlreiz vēlāk.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>mt</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Is-server mhux disponibbli temporanjament
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Niskużaw ruħna għal kwalunkwe inkonvenjenza. Jekk jogħġbok erġa
pprova aktar tard.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>nl</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
De server is tijdelijk niet beschikbaar
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Onze excuses voor het ongemak. Probeer het later nog een keer.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>pl</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Serwer jest tymczasowo niedostępny
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Przepraszamy za wszelkie niedogodności. Proszę spróbować
później.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>pt</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
O servidor está temporariamente indisponível
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Pedimos desculpa pelo incómodo. Volte a tentar mais tarde.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>ro</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Serverul este temporar indisponibil
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Ne cerem scuze pentru eventualele inconveniente. Vă rugăm să
reîncercați mai târziu.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>sk</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Server je dočasne nedostupný
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Ospravedlňujeme sa za prípadné problémy, ktoré môžu v dôsledku
toho vzniknúť.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>sl</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Strežnik je začasno nedosegljiv
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Opravičujemo se za morebitne nevšečnosti. Poskusite ponovno
pozneje.
</p>
</div>
</div>
<div
class="ecl-u-d-inline-flex ecl-u-pt-m ecl-u-mt-l ecl-u-width-100"
>
<span class="ecl-u-d-flex" style="position: relative">
<svg
focusable="false"
aria-hidden="true"
class="ecl-icon ecl-icon--m ecl-u-type-color-blue-100"
>
<use
xlink:href="https://cdn1.fpfis.tech.ec.europa.eu/ecl/v2.38.0/eu-preset-website/images/icons/sprites/icons.svg#general--language"
></use>
</svg>
<span
style="
left: 50%;
position: absolute;
top: 0;
transform: translate(-50%, 3px);
"
class="ecl-u-type-xs ecl-u-type-color-white-100 ecl-u-type-uppercase"
>sv</span
>
</span>
<div class="ecl-u-ml-m ecl-u-width-100">
<div
class="ecl-u-type-prolonged-m ecl-u-type-color-blue-100 ecl-u-type-bold"
>
Servern är inte tillgänglig för tillfället
</div>
<p
class="ecl-u-type-paragraph ecl-u-border-bottom ecl-u-border-color-grey-15 ecl-u-mt-s ecl-u-mb-none ecl-u-pb-m"
>
Vi ber om ursäkt för besväret. Försök igen senare.
</p>
</div>
</div>
</div>
</div>
</main>
<footer class="ecl-u-bg-blue-100 ecl-u-pa-l"></footer>
<script>
svg4everybody({ polyfill: true });
</script>
</body>
</html>
-683
View File
@@ -1,683 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="ltr" class="h-100">
<head>
<meta charset="utf-8" />
<meta name="MobileOptimized" content="width" />
<meta name="HandheldFriendly" content="true" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" href="/themes/custom/enisaweb/favicon.ico" type="image/png" />
<script>window.a2a_config=window.a2a_config||{};a2a_config.callbacks=[];a2a_config.overlays=[];a2a_config.templates={};</script>
<meta content="ENISA: Every day we experience the Information Society. Interconnected networks touch our everyday lives, at home and at work. It is therefore vital that computers, mobile phones, banking, and the Internet function, to support Europes digital economy. That is why ENISA is working with Cybersecurity for the EU and the Member States." name="DC.description">
<meta name="description" content="ENISA is the EU agency dedicated to enhancing cybersecurity in Europe. They offer guidance, tools, and resources to safeguard citizens and businesses from cyber threats.">
<meta name="keywords" content="Cybersecurity, EU, ENISA, computer security, Cyber Threats, EU Cyber Crisis, Incident Management, Market and Standards, Product Security, Security certification, Risk Management, Skills and competences, State of cybersecurity in the EU, Vulnerability Disclosure, Artificial Intelligence, Next Gen Technologies, Awareness, Cyber Hygiene, Digital Identity, Data Protection, Education and career path">
<title>Page not found | ENISA</title>
<link rel="stylesheet" media="all" href="/sites/default/files/css/css_iVtEkkXK3GsFFviOb5N0RiPlHf9nxcwaa_bXGH1_dHo.css?delta=0&amp;language=en&amp;theme=enisaweb&amp;include=eJxtj2sOwyAMgy9E4UhVCl6HRpKJ0FXd6Uf3lrY_kfPJkR1KqSnJFugp_KGqNBdPSLlpHSlGrSmrhLd6WCDJdYAgWplKvsJBstGKKUxkX9tcdKIyWNtKlvnDGWY0w5xpzFRG7pE0ds_JwqEndJMpw0flswp6qz_GX-TbEQxnmzXwo8olY7Vwn541LQVuRb-ZiSFLD6vsVww7GHYyvD68AUVHcCg" />
<link rel="stylesheet" media="all" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css" />
<link rel="stylesheet" media="all" href="/sites/default/files/css/css_kqnoItugpXU7ofOC42w0XMtkmLysYC4L7i2sNGGYGPM.css?delta=2&amp;language=en&amp;theme=enisaweb&amp;include=eJxtj2sOwyAMgy9E4UhVCl6HRpKJ0FXd6Uf3lrY_kfPJkR1KqSnJFugp_KGqNBdPSLlpHSlGrSmrhLd6WCDJdYAgWplKvsJBstGKKUxkX9tcdKIyWNtKlvnDGWY0w5xpzFRG7pE0ds_JwqEndJMpw0flswp6qz_GX-TbEQxnmzXwo8olY7Vwn541LQVuRb-ZiSFLD6vsVww7GHYyvD68AUVHcCg" />
<link rel="stylesheet" media="all" href="/sites/default/files/css/css_f0YtobP3TA7lxU-qAZjtQhMje8XKUL_bPtkAvJX_XBg.css?delta=3&amp;language=en&amp;theme=enisaweb&amp;include=eJxtj2sOwyAMgy9E4UhVCl6HRpKJ0FXd6Uf3lrY_kfPJkR1KqSnJFugp_KGqNBdPSLlpHSlGrSmrhLd6WCDJdYAgWplKvsJBstGKKUxkX9tcdKIyWNtKlvnDGWY0w5xpzFRG7pE0ds_JwqEndJMpw0flswp6qz_GX-TbEQxnmzXwo8olY7Vwn541LQVuRb-ZiSFLD6vsVww7GHYyvD68AUVHcCg" />
</head>
<body class="path-sites d-flex flex-column h-100">
<div class="dialog-off-canvas-main-canvas d-flex flex-column h-100" data-off-canvas-main-canvas>
<header>
<p class="sr-only"><a href="#main-content" accesskey="M">Go to the main content</a></p>
<div class="navbar navbar-expand-lg navbar-dark text-light bg-primary header">
<div class="container logo-menu-wrapper d-flex">
<div class="region region-nav-branding">
<div id="block-enisaweb-branding" class="block block-system block-system-branding-block">
<div class="navbar-brand d-flex align-items-center">
<a href="/" title="Home" rel="home" class="site-logo d-block">
<img src="/sites/default/files/enisa-logo.svg" alt="Home" fetchpriority="high" />
</a>
<div>
</div>
</div>
</div>
</div>
<nav class="collapse navbar-collapse justify-content-end main-menu" id="navbarSupportedContent" role="navigation" aria-label="Main menu and Search box">
<div class="region region-nav-main">
<div id="block-enisaweb-mainnavigation-2" class="block block-we-megamenu block-we-megamenu-blockmain">
<div class="region-we-mega-menu">
<a href="javascript:" class="navbar-toggle collapsed" aria-label="Open/close menu" aria-controls="mainMenuResponsive" name="menu-button" role="button">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<nav class="main navbar navbar-default navbar-we-mega-menu mobile-collapse hover-action" data-menu-name="main" data-block-theme="enisaweb" data-style="Default" data-animation="None" data-delay="" data-duration="" data-autoarrow="" data-alwayshowsubmenu="" data-action="hover" data-mobile-collapse="0" aria-label="ENISA main menu" id="mainMenuResponsive">
<div class="container-fluid">
<ul class="we-mega-menu-ul nav nav-tabs">
<li class="we-mega-menu-li justify dropdown-menu" title="" data-level="0" data-element-type="" data-id="320e2c86-310b-4f7b-a4a9-188df34c3e43" data-submenu="1" data-hide-sub-when-collapse="" data-group="0" data-caption="" data-alignsub="justify" data-target="" data-icon="" >
<span class="we-megamenu-nolink">
Topics</span>
<div class="we-mega-menu-submenu" data-element-type="we-mega-menu-submenu" data-submenu-width="" data-class="" style="width: px">
<div class="we-mega-menu-submenu-inner">
<div class="we-mega-menu-row" data-element-type="we-mega-menu-row" data-custom-row="1">
<div class="we-mega-menu-col span3" data-element-type="we-mega-menu-col" data-width="3" data-block="enisaweb_topics" data-blocktitle="0" data-hidewhencollapse="" data-class="">
<div class="type-of-block"><div class="block-inner"><div id="block-enisaweb-topics" class="block block-block-content block-block-contentec3f1f7d-35d4-4776-a03c-7f97a2fcfc8f">
<p class="title"><a href="/topics" target="_self" title="Access to All Topics page">Topics</a></p>
<div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Learn more about the topics</p>
<p><a class="button" href="/topics" data-entity-type="node" data-entity-uuid="5f4db810-e19d-49a4-baaa-86ec782eb91e" data-entity-substitution="canonical" title="Topics">Access</a></p>
</div>
</div>
</div></div>
</div>
<div class="we-mega-menu-col span3" data-element-type="we-mega-menu-col" data-width="3" data-block="enisaweb_views_block__topics_tax_block_1" data-blocktitle="0" data-hidewhencollapse="" data-class="">
<div class="type-of-block"><div class="block-inner"><div class="views-element-container block block-views block-views-blocktopics-tax-block-1" id="block-enisaweb-views-block-topics-tax-block-1">
<p class="title"><a href="/audience/national-eu-authorities" target="_self" title="Access to For National / EU authorities page">For National / EU authorities</a></p>
<div data-block="nav_main"><div class="view view-topics-tax view-id-topics_tax view-display-id-block_1 js-view-dom-id-7c1d2b87dabde327b4783b35298dbb11acd8b020c150d501b78875867b1ec97b">
<div class="view-content">
<div class="item-list">
<ul>
<li><a href="/topics/cyber-threats" hreflang="en">Cyber Threats</a></li>
<li><a href="/topics/eu-incident-response-and-cyber-crisis-management" hreflang="en">EU incident response and cyber crisis management</a></li>
<li><a href="/topics/market" hreflang="en">Market</a></li>
<li><a href="/topics/product-security-and-certification" hreflang="en">Product Security and Certification</a></li>
<li><a href="/topics/risk-management" hreflang="en">Risk Management</a></li>
<li><a href="/topics/skills-and-competences" hreflang="en">Skills and competences</a></li>
<li><a href="/topics/state-of-cybersecurity-in-the-eu" hreflang="en">State of cybersecurity in the EU</a></li>
<li><a href="/topics/vulnerability-disclosure" hreflang="en">Vulnerability Disclosure</a></li>
</ul>
</div>
</div>
</div>
</div>
</div></div></div>
</div>
<div class="we-mega-menu-col span3" data-element-type="we-mega-menu-col" data-width="3" data-block="enisaweb_views_block__topics_tax_block_2" data-blocktitle="0" data-hidewhencollapse="" data-class="">
<div class="type-of-block"><div class="block-inner"><div class="views-element-container title block block-views block-views-blocktopics-tax-block-2" id="block-enisaweb-views-block-topics-tax-block-2">
<p class="title"><a href="/audience/private-sector" target="_self" title="Access to Private Sector page">Private Sector</a></p>
<div data-block="nav_main"><div class="view view-topics-tax view-id-topics_tax view-display-id-block_2 js-view-dom-id-74b36a87a5d07d7f173c71b98d555f07f38adc86d0349f9aa7359a3e5c5fbbe7">
<div class="view-content">
<div class="item-list">
<ul>
<li><a href="/topics/artificial-intelligence-and-next-gen-technologies" hreflang="en">Artificial Intelligence and Next Gen Technologies</a></li>
<li><a href="/topics/awareness-and-cyber-hygiene" hreflang="en">Awareness and Cyber Hygiene</a></li>
<li><a href="/topics/certification-and-standards" hreflang="en">Certification and Standards</a></li>
<li><a href="/topics/cyber-threats" hreflang="en">Cyber Threats</a></li>
<li><a href="/topics/cybersecurity-of-critical-sectors" hreflang="en">Cybersecurity of Critical Sectors</a></li>
<li><a href="/topics/digital-identity-and-data-protection" hreflang="en">Digital Identity and Data Protection</a></li>
<li><a href="/topics/incident-management" hreflang="en">Incident management</a></li>
<li><a href="/topics/risk-management" hreflang="en">Risk Management</a></li>
<li><a href="/topics/skills-and-competences-for-companies" hreflang="en">Skills and competences (for companies)</a></li>
<li><a href="/topics/vulnerability-disclosure" hreflang="en">Vulnerability Disclosure</a></li>
</ul>
</div>
</div>
</div>
</div>
</div></div></div>
</div>
<div class="we-mega-menu-col span3" data-element-type="we-mega-menu-col" data-width="3" data-block="enisaweb_views_block__topics_tax_block_3" data-blocktitle="0" data-hidewhencollapse="" data-class="">
<div class="type-of-block"><div class="block-inner"><div class="views-element-container title block block-views block-views-blocktopics-tax-block-3" id="block-enisaweb-views-block-topics-tax-block-3">
<p class="title"><a href="/audience/citizens" target="_self" title="Access to Citizens page">Citizens</a></p>
<div data-block="nav_main"><div class="view view-topics-tax view-id-topics_tax view-display-id-block_3 js-view-dom-id-83bf5b206d0154c644b588d05a80369b2cba5116f1dc1735d8b2cd51de25353a">
<div class="view-content">
<div class="item-list">
<ul>
<li><a href="/topics/cyber-hygiene" hreflang="en">Cyber Hygiene</a></li>
<li><a href="/topics/cyber-incident-awareness" hreflang="en">Cyber Incident Awareness</a></li>
<li><a href="/topics/education-and-career-path" hreflang="en">Education and career path</a></li>
</ul>
</div>
</div>
</div>
</div>
</div></div></div>
</div>
</div>
</div>
</div>
</li><li class="we-mega-menu-li" title="Access to all publications" data-level="0" data-element-type="" data-id="2d24a690-803d-44ad-8d7e-8cf0eb7d0e40" data-submenu="0" data-hide-sub-when-collapse="" data-group="0" data-caption="" data-alignsub="" data-target="_self" data-icon="" >
<a class="we-mega-menu-li" title="" href="/publications" target="_self">
Publications </a>
</li><li class="we-mega-menu-li dropdown-menu" title="" data-level="0" data-element-type="" data-id="54b069d8-f99f-45e7-9d50-9345e82ad14f" data-submenu="1" data-hide-sub-when-collapse="" data-group="0" data-caption="" data-alignsub="" data-target="" data-icon="" >
<span class="we-megamenu-nolink">
Newsroom &amp; Events</span>
<div class="we-mega-menu-submenu" data-element-type="we-mega-menu-submenu" data-submenu-width="" data-class="" style="width: px">
<div class="we-mega-menu-submenu-inner">
<div class="we-mega-menu-row" data-element-type="we-mega-menu-row" data-custom-row="1">
<div class="we-mega-menu-col span4" data-element-type="we-mega-menu-col" data-width="4" data-block="enisaweb_news" data-blocktitle="0" data-hidewhencollapse="" data-class="">
<div class="type-of-block"><div class="block-inner"><div id="block-enisaweb-news" class="block block-block-content block-block-content00f65cb0-e1b0-41a1-8a0d-00ce6ced0f0e">
<p class="title"><a href="/news" target="_self" title="Access to All News">News</a></p>
<div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Cybersecurity in focus: News &amp; updates from ENISA</p>
<p><a class="button" href="/news" data-entity-type="node" data-entity-uuid="088dd847-33ff-4c8e-b094-f0d38a66bbdd" data-entity-substitution="canonical" title="News">Access</a></p>
</div>
</div>
</div></div>
</div>
<div class="we-mega-menu-col span4" data-element-type="we-mega-menu-col" data-width="4" data-block="enisaweb_events" data-blocktitle="0" data-hidewhencollapse="" data-class="">
<div class="type-of-block"><div class="block-inner"><div id="block-enisaweb-events" class="block block-block-content block-block-contentb3c06780-f342-437d-9828-54fe86eb9786">
<p class="title"><a href="/events" target="_self" title="Access to All Events">Events</a></p>
<div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Cybersecurity in practice: Events &amp; Workshops by ENISA</p>
<p><a class="button" href="/events" data-entity-type="node" data-entity-uuid="34f66c6d-0f07-4977-85e3-e8578a59d59c" data-entity-substitution="canonical" title="Events">Access</a></p>
</div>
</div>
</div></div>
</div>
<div class="we-mega-menu-col span4" data-element-type="we-mega-menu-col" data-width="4" data-block="enisaweb_pressoffice" data-blocktitle="0" data-hidewhencollapse="" data-class="">
<div class="type-of-block"><div class="block-inner"><div id="block-enisaweb-pressoffice" class="block block-system block-system-menu-blockpress-office">
<p class="title"><a href="/press-office" target="_self" title="Access to Press office page">Press office</a></p>
<ul data-block="nav_main" class="nav navbar-nav">
<li class="nav-item">
<a href="/press-office/corporate-identity" class="nav-link" data-drupal-link-system-path="node/11030">Corporate identity</a>
</li>
<li class="nav-item">
<a href="/press-office/cybersecurity-material" class="nav-link" data-drupal-link-system-path="node/11031">Cybersecurity material</a>
</li>
<li class="nav-item">
<a href="/form/seek-an-expert" class="nav-link" data-drupal-link-system-path="webform/seek_an_expert">Seek an expert or Request a speaker</a>
</li>
</ul>
</div></div></div>
</div>
</div>
</div>
</div>
</li><li class="we-mega-menu-li dropdown-menu" title="" data-level="0" data-element-type="" data-id="eaba29ce-6446-4da3-930a-c3d97495f00b" data-submenu="1" data-hide-sub-when-collapse="" data-group="0" data-caption="" data-alignsub="" data-target="" data-icon="" >
<span class="we-megamenu-nolink">
About</span>
<div class="we-mega-menu-submenu" data-element-type="we-mega-menu-submenu" data-submenu-width="" data-class="" style="width: px">
<div class="we-mega-menu-submenu-inner">
<div class="we-mega-menu-row" data-element-type="we-mega-menu-row" data-custom-row="1">
<div class="we-mega-menu-col span4" data-element-type="we-mega-menu-col" data-width="4" data-block="enisaweb_whatwedosubmenubutton_2" data-blocktitle="0" data-hidewhencollapse="" data-class="">
<div class="type-of-block"><div class="block-inner"><div id="block-enisaweb-whatwedosubmenubutton-2" class="block block-block-content block-block-contente0a96203-1eca-4991-9533-33064cace452">
<p class="title"><a href="/about-enisa/what-we-do" target="_self" title="Access to What we do page">What we do</a></p>
<div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Achieving a high common level of cybersecurity across Europe</p>
<p><a class="button" href="/about-enisa/what-we-do" data-entity-type="node" data-entity-uuid="0619d110-d4dc-4f6b-aa0d-9a56252da07d" data-entity-substitution="canonical" title="What we do">Access</a></p>
</div>
</div></div></div>
</div>
<div class="we-mega-menu-col span4" data-element-type="we-mega-menu-col" data-width="4" data-block="enisaweb_whatwedosubmenu_2" data-blocktitle="0" data-hidewhencollapse="" data-class="">
<div class="type-of-block"><div class="block-inner"><div id="block-enisaweb-whatwedosubmenu-2" class="block block-block-content block-block-content99599d89-56f7-43f1-907b-72614045018d">
<p class="title"><a href="/about-enisa/who-we-are" target="_self" title="Access to Who we are page">Who we are</a></p>
<div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Towards a Trusted and Cyber Secure Europe&nbsp;</p>
<p><a class="button" href="/about-enisa/who-we-are" data-entity-type="node" data-entity-uuid="3c46c210-298c-472c-b871-b167dfe2642c" data-entity-substitution="canonical" title="Who we are">Access</a></p>
</div>
</div></div></div>
</div>
<div class="we-mega-menu-col span4" data-element-type="we-mega-menu-col" data-width="4" data-block="enisaweb_transparency" data-blocktitle="0" data-hidewhencollapse="" data-class="">
<div class="type-of-block"><div class="block-inner"><div id="block-enisaweb-transparency" class="block block-system block-system-menu-blocktransparency">
<p class="title"><a href="/about-enisa/How-we-work" target="_self" title="Access to How we work page">How we work</a></p>
<ul data-block="nav_main" class="nav navbar-nav">
<li class="nav-item">
<a href="/about-enisa/accounting-finance/accounting-finance" class="nav-link" data-drupal-link-system-path="node/17339">Accounting and Finance</a>
</li>
<li class="nav-item">
<a href="/about-enisa/procedures-and-policies" class="nav-link dropdown-toggle" data-drupal-link-system-path="node/17360">Policies and Procedures</a>
</li>
<li class="nav-item">
<a href="/about-enisa/data-protection/data-protection" class="nav-link dropdown-toggle" data-drupal-link-system-path="node/17346">Data Protection</a>
</li>
<li class="nav-item">
<a href="/about-enisa/transparency" class="nav-link dropdown-toggle" data-drupal-link-system-path="node/17404">Transparency</a>
</li>
<li class="nav-item">
<a href="/enisa-a-climate-neutral-agency" class="nav-link" data-drupal-link-system-path="node/18893">ENISA, a climate neutral agency </a>
</li>
</ul>
</div>
</div></div>
</div>
</div>
<div class="we-mega-menu-row" data-element-type="we-mega-menu-row" data-custom-row="1">
<div class="we-mega-menu-col span12 transversal-menu" data-element-type="we-mega-menu-col" data-width="12" data-block="enisaweb_transversaloptionsofaboutmenu" data-blocktitle="0" data-hidewhencollapse="" data-class="transversal-menu">
<div class="type-of-block"><div class="block-inner"><div id="block-enisaweb-transversaloptionsofaboutmenu" class="block block-system block-system-menu-blocktransversal-options-about-menu">
<ul data-block="nav_main" class="nav navbar-nav">
<li class="nav-item">
<a href="/about-enisa/international-cooperation" class="nav-link" data-drupal-link-system-path="node/19377">International Cooperation</a>
</li>
</ul>
</div>
</div></div>
</div>
</div>
</div>
</div>
</li><li class="we-mega-menu-li dropdown-menu" title="" data-level="0" data-element-type="" data-id="44fbec5d-1aaf-4cb3-b06b-a79b571ad50c" data-submenu="1" data-hide-sub-when-collapse="" data-group="0" data-caption="" data-alignsub="" data-target="" data-icon="" >
<span class="we-megamenu-nolink">
Working with us</span>
<div class="we-mega-menu-submenu" data-element-type="we-mega-menu-submenu" data-submenu-width="" data-class="" style="width: px">
<div class="we-mega-menu-submenu-inner">
<div class="we-mega-menu-row" data-element-type="we-mega-menu-row" data-custom-row="1">
<div class="we-mega-menu-col span4" data-element-type="we-mega-menu-col" data-width="4" data-block="enisaweb_workwithenisa" data-blocktitle="0" data-hidewhencollapse="" data-class="">
<div class="type-of-block"><div class="block-inner"><div id="block-enisaweb-workwithenisa" class="block block-block-content block-block-content86d5ce2f-abc2-4160-afda-442fe2c68258">
<p class="title"><a href="/working-with-us/working-for-enisa" target="_self" title="Access to Working for ENISA page">Working for ENISA</a></p>
<div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Explore the benefits of working for ENISA</p>
<p><a class="button" href="/working-with-us/working-for-enisa" data-entity-type="node" data-entity-uuid="f10da531-46ad-49f6-84cb-0770c69d839e" data-entity-substitution="canonical" title="Working for ENISA">Access</a></p>
</div>
</div>
</div></div>
</div>
<div class="we-mega-menu-col span8" data-element-type="we-mega-menu-col" data-width="8" data-block="enisaweb_workingwithus" data-blocktitle="0" data-hidewhencollapse="" data-class="">
<div class="type-of-block"><div class="block-inner"><div id="block-enisaweb-workingwithus" class="title block block-system block-system-menu-blockworking-with-us">
<p class="title"><a href="/work-with-us" target="_self" title="Access to Working with us page">Working with us</a></p>
<ul data-block="nav_main" class="nav navbar-nav">
<li class="nav-item">
<a href="/careers" class="nav-link" data-drupal-link-system-path="node/12487">Careers</a>
</li>
<li class="nav-item">
<a href="/working-with-us/procurement" class="nav-link" data-drupal-link-system-path="node/17421">Procurement</a>
</li>
<li class="nav-item">
<a href="/working-with-us/ad-hoc-working-groups-calls" class="nav-link" data-drupal-link-system-path="node/17422">Ad hoc working groups</a>
</li>
</ul>
</div></div></div>
</div>
</div>
</div>
</div>
</li>
</ul>
</div>
</nav>
</div>
</div>
</div>
<p class="btn-search">
<a href="javascript:" title="Show the search field">Search</a>
</p>
<div class="search-form-wrapper" aria-label="Search field">
<div class="region region-nav-additional">
<div id="block-enisaweb-search" class="search-block-form block block-search container-inline" data-drupal-selector="search-block-form" id="block-enisaweb-search-form" role="search">
<form data-block="nav_additional" action="/search" method="get" id="search-block-form" accept-charset="UTF-8">
<div class="js-form-item form-item js-form-type-search form-type-search js-form-item-keys form-item-keys form-no-label">
<label class="visually-hidden" for="edit-keys">Search</label>
<input class="form-search form-control" title="Enter the terms you wish to search for." data-drupal-selector="edit-keys" type="search" id="edit-keys" name="keys" value="" size="15" maxlength="128">
</div>
<div class="form-actions js-form-wrapper form-wrapper" data-drupal-selector="edit-actions" id="edit-actions-search">
<button class="button js-form-submit form-submit btn-enisa btn-primary" data-drupal-selector="edit-submit" type="submit" id="edit-submit" value="Search">Search</button>
</div>
</form>
</div>
</div>
<p class="btn-close-search"><a href="javascript:" title="Hide the search field">Close</a></p>
</div>
</nav>
</div>
</div>
</header>
<main role="main" class="container-full image-banner">
<div class="title-breadcrumbs container">
<div class="title-intro full">
<div id="block-enisaweb-page-title" class="block block-core block-page-title-block">
<h1>Page not found</h1>
</div>
</div>
</div>
<div class="main container" id="main-content">
<a id="main-content" tabindex="-1"></a> <div class="container">
<div data-drupal-messages-fallback class="hidden"></div>
<div class="row g-0 not-found-page">
<div class="col-xs-12 col-md-12 col-lg-6 not-found-image">
<div class="image"></div>
</div>
<div class="col-xs-12 col-md-12 col-lg-6 not-found-text">
<h2>OOPS! PAGE NOT FOUND</h2>
<p>The page you are looking for can't be found.</p>
<p><a href="https://www.enisa.europa.eu/" class="btn-all left">Go to the homepage</a></p>
</div>
</div>
</div>
</div>
</main>
<section class="subscribe-section" role="complementary">
<div class="container">
<div class="row">
<div class="col-md-3 col-lg-3 subscribe-image"></div>
<div class="col-md-9 col-lg-9 subscribe-wrapper">
<h2>Subscribe</h2>
<p><strong>Stay updated with ENISA!</strong> Sign up for email alerts on publications, events, vacancies,
and more.</p>
<p><a href="/alertservice" class="btn-all left">Sign up now</a></p>
</div>
</div>
</div>
</section>
<footer class="mt-auto enisa-footer">
<div class="container">
<div class="footer container">
<div class="row">
<div class="col-md-12 col-lg-3">
<div id="block-enisaweb-enisalogos">
<div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item">
<div class="enisa-logo">
<img src="/themes/custom/enisaweb/images/enisa-logo-white.svg"
alt="ENISA, European Union Agency for Cybersecurity" width="220" height="150"
class="align-left" loading="lazy">
<p><em>A Trusted and Cyber Secure Europe</em></p>
</div>
<div class="agencies-network-logo">
<img src="/themes/custom/enisaweb/images/agencies-network.png"
alt="Agencies network logo" width="39" height="36" class="align-left"
loading="lazy">
<p><a href="https://agencies-network.europa.eu/index_en">EU Agencies Network</a></p>
</div>
</div>
</div>
<div id="block-enisaweb-socialmedialinks" class="block-social-media-links block block-social-media-links-block">
<p>Follow us on</p>
<ul class="social-media-links--platforms platforms vertical">
<li>
<a class="social-media-link-icon--youtube" href="https://www.youtube.com/user/ENISAvideos" target="_blank" >
<span class='fab fa-youtube fa-2x'></span>
<span class="platform-name">Youtube</span>
</a>
</li>
<li>
<a class="social-media-link-icon--twitter" href="https://x.com/enisa_eu" target="_blank" >
<span class='fab fa-x-twitter fa-2x'></span>
<span class="platform-name">X</span>
</a>
</li>
<li>
<a class="social-media-link-icon--linkedin" href="https://www.linkedin.com/company/european-union-agency-for-cybersecurity-enisa/" target="_blank" >
<span class='fab fa-linkedin fa-2x'></span>
<span class="platform-name">LinkedIn</span>
</a>
</li>
<li>
<a class="social-media-link-icon--facebook" href="https://www.facebook.com/ENISAEUAGENCY" target="_blank" >
<span class='fab fa-facebook fa-2x'></span>
<span class="platform-name">Facebook</span>
</a>
</li>
</ul>
</div>
</div>
<div class="col-xs-12 col-md-6 col-lg-3 border-left">
<nav aria-labelledby="block-enisaweb-contactus-menu" id="block-enisaweb-contactus" class="block block-menu navigation menu--contact-us">
<p id="block-enisaweb-contactus-menu">Contact us</p>
<ul data-block="footer" class="nav navbar-nav">
<li class="nav-item">
<a href="/about-enisa/contact/contact" class="nav-link" data-drupal-link-system-path="node/17344">Contacts</a>
</li>
<li class="nav-item">
<a href="/form/contact-form" class="nav-link" data-drupal-link-system-path="webform/contact_form">General queries</a>
</li>
<li class="nav-item">
<a href="/working-with-us/procurement" class="nav-link" data-drupal-link-system-path="node/17421">Public Procurement</a>
</li>
<li class="nav-item">
<a href="/form/media-inquiries" class="nav-link" data-drupal-link-system-path="webform/media_inquiries">Media inquiries</a>
</li>
</ul>
</nav>
</div>
<div class="col-xs-12 col-md-6 col-lg-3 border-left">
<div id="block-enisaweb-findoutaboutus" class="block block-system block-system-menu-blockfind-out-about-us">
<p>Find out about us</p>
<ul data-block="footer" class="nav navbar-nav">
<li class="nav-item">
<a href="/accessibility-statement" class="nav-link" data-drupal-link-system-path="node/18887">Accessibility</a>
</li>
<li class="nav-item">
<a href="/about-enisa/legal-notice" class="nav-link" data-drupal-link-system-path="node/17355">Legal Notice</a>
</li>
<li class="nav-item">
<a href="/about-enisa/data-protection/data-protection" class="nav-link" data-drupal-link-system-path="node/17346">Data Protection</a>
</li>
<li class="nav-item">
<a href="/about-enisa/cookies" class="nav-link" data-drupal-link-system-path="node/17345">Cookies</a>
</li>
<li class="nav-item">
<a href="/sitemap" target="_blank" class="nav-link" data-drupal-link-system-path="sitemap">Sitemap</a>
</li>
</ul>
</div>
</div>
<div class="col-xs-12 col-md-6 col-lg-3 border-left">
<div id="block-enisaweb-pageofinterest" class="block block-system block-system-menu-blockpage-of-interest">
<p>Page of interest</p>
<ul data-block="footer" class="nav navbar-nav">
<li class="nav-item">
<a href="/publications" class="nav-link" data-drupal-link-system-path="publications">Publications </a>
</li>
<li class="nav-item">
<a href="/press-office" class="nav-link" data-drupal-link-system-path="node/11033">Press Office</a>
</li>
<li class="nav-item">
<a href="/digital-tools" class="nav-link" data-drupal-link-system-path="digital-tools">Digital Tools</a>
</li>
<li class="nav-item">
<a href="/work-with-us" class="nav-link" data-drupal-link-system-path="node/11443">Working with us</a>
</li>
<li class="nav-item">
<a href="/about-enisa/public-access-to-documents" class="nav-link" data-drupal-link-system-path="node/17363">Public access to documents</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="line"></div>
<div class="copy container">
<div class="row">
<div class="col-xs-12 col-md-12 col-lg-6 alignleft">
<div id="block-enisaweb-copyrightfooter" class="block block-block-content block-block-content0f0b270e-cc5d-448c-a771-6cc7c0621340">
<div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>©&nbsp;2026 by the European Union Agency for Cybersecurity</p>
</div>
</div>
</div>
<div class="col-xs-12 col-md-12 col-lg-6 alignright">
<div id="block-enisaweb-enisadescriptionfooter" class="block block-block-content block-block-content2b4d8729-4032-4438-ba87-1a58fbc364db">
<div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>ENISA is an agency of the European Union</p>
</div>
</div>
</div>
</div>
</div>
<p><a href="#" id="totop" class="totop"><span class="sr-only">Go to top</span></a></p>
</footer>
</div>
<script type="application/json">{"utility":"piwik","siteID":"5847bf6f-3ce3-4800-8749-1c565b34b7b6","sitePath":["www.enisa.europa.eu"],"is404":true,"instance":"ec"}</script>
<script type="application/json">{"utility":"cck","url":"\/about-enisa\/cookies"}</script>
<script type="application/json" data-drupal-selector="drupal-settings-json">{"path":{"baseUrl":"\/","pathPrefix":"","currentPath":"","currentPathIsAdmin":false,"isFront":false,"currentLanguage":"en"},"pluralDelimiter":"\u0003","suppressDeprecationErrors":true,"ckeditorAccordion":{"accordionStyle":{"collapseAll":1,"keepRowsOpen":0,"animateAccordionOpenAndClose":1,"openTabsWithHash":0,"allowHtmlInTitles":1}},"user":{"uid":0,"permissionsHash":"c1c359b7541ecd1c4f0e321882d2e1eba1197d85c8ad3b45b15aff5871a9e6d0"}}</script>
<script src="/sites/default/files/js/js_Uv_fxqHIMtEtS30w0hjV4odzonkoWsMT5KD3y13y8kU.js?scope=footer&amp;delta=0&amp;language=en&amp;theme=enisaweb&amp;include=eJxlj0EOgzAMBD-EG6kfQiYxEOrYNHGE8vuCWkql3mZn97IYgilKc_iB25hVrPMPCtE09-i95hBV3JfeE5LQkcSCGw3uBFgKMBoVu7qJdUCGYo2jTJdfnpVyA98805-tEUyrn2Gt4uefuqjcO6V-D6bKxYVcV-TbmaEkzMaKgXK3UZ9owkRS3ag57Ss4BBwGzhsvrCdlDA"></script>
<script src="https://static.addtoany.com/menu/page.js" defer></script>
<script src="/sites/default/files/js/js_PJg5XHigxDm_42CAJgw7llont3PySBp-PdpAvGlCYSs.js?scope=footer&amp;delta=2&amp;language=en&amp;theme=enisaweb&amp;include=eJxlj0EOgzAMBD-EG6kfQiYxEOrYNHGE8vuCWkql3mZn97IYgilKc_iB25hVrPMPCtE09-i95hBV3JfeE5LQkcSCGw3uBFgKMBoVu7qJdUCGYo2jTJdfnpVyA98805-tEUyrn2Gt4uefuqjcO6V-D6bKxYVcV-TbmaEkzMaKgXK3UZ9owkRS3ag57Ss4BBwGzhsvrCdlDA"></script>
<script src="/modules/contrib/ckeditor_accordion/js/accordion.frontend.min.js?tg28tw"></script>
<script src="/sites/default/files/js/js_fPzrD9aZOLJS9JI2GLgD7Zs-CzoWHT18p8hYIEuW9h4.js?scope=footer&amp;delta=4&amp;language=en&amp;theme=enisaweb&amp;include=eJxlj0EOgzAMBD-EG6kfQiYxEOrYNHGE8vuCWkql3mZn97IYgilKc_iB25hVrPMPCtE09-i95hBV3JfeE5LQkcSCGw3uBFgKMBoVu7qJdUCGYo2jTJdfnpVyA98805-tEUyrn2Gt4uefuqjcO6V-D6bKxYVcV-TbmaEkzMaKgXK3UZ9owkRS3ag57Ss4BBwGzhsvrCdlDA"></script>
<script src="https://webtools.europa.eu/load.js" defer></script>
<script src="/sites/default/files/js/js_Pj1gX-gXRHcdCBDI1-WO0jTP3o3GK7ZZPT2TZokpFjY.js?scope=footer&amp;delta=6&amp;language=en&amp;theme=enisaweb&amp;include=eJxlj0EOgzAMBD-EG6kfQiYxEOrYNHGE8vuCWkql3mZn97IYgilKc_iB25hVrPMPCtE09-i95hBV3JfeE5LQkcSCGw3uBFgKMBoVu7qJdUCGYo2jTJdfnpVyA98805-tEUyrn2Gt4uefuqjcO6V-D6bKxYVcV-TbmaEkzMaKgXK3UZ9owkRS3ag57Ss4BBwGzhsvrCdlDA"></script>
<script async="" src="/themes/custom/enisaweb/js/application.js"></script>
</body>
</html>
-58
View File
@@ -1,58 +0,0 @@
# Test Report — marker-api Endpoint Tests
**Date:** 2026-06-04 10:57:07
**API Base:** N/A (offline validation)
**Test files:** /home/oval/Projects/marker-api/test_files/enisa (5 file(s))
## Summary
| Result | Count |
|--------|-------|
| ✅ Passed | 5 |
| ❌ Failed | 0 |
| ⏭️ Skipped | 10 |
| **Total** | **15** |
| **Pass Rate** | **33.3%** |
## Test Details
| Test | Result | Time | Notes |
|------|--------|------|-------|
### Application Tests
| app.py syntax valid | ✅ PASS | 0.002s | |
| use_llm/llm_service params present in app.py | ✅ PASS | 0.000s | |
| marker-convert.ps1 has all new parameters | ✅ PASS | 0.000s | |
| README.md documents all endpoints | ✅ PASS | 0.000s | |
| ENISA test files available | ✅ PASS | 0.019s | |
### Endpoint Tests (HTTP)
| GET /health | ⏭️ SKIP | - | API not running |
| GET / | ⏭️ SKIP | - | API not running |
| POST /marker (multipart) | ⏭️ SKIP | - | API not running |
| POST /marker (JSON) | ⏭️ SKIP | - | API not running |
| POST /marker with use_llm | ⏭️ SKIP | - | API not running |
| POST /marker with page_range | ⏭️ SKIP | - | API not running |
| POST /marker missing file | ⏭️ SKIP | - | API not running |
| POST /v1/conversions | ⏭️ SKIP | - | API not running |
| POST /v1/files/convert (multipart) | ⏭️ SKIP | - | API not running |
| POST /v1/files/convert (JSON) | ⏭️ SKIP | - | API not running |
## Environment
- Python: 3.14.5
- Platform: linux
- marker: ❌ not installed (Pillow build failure on this platform)
## Test Files
- enisa-international-strategy-2026.pdf (39.7 KB)
- enisa-nis360-2026.pdf (3983.3 KB)
- enisa-stakeholder-strategy-2026-2028.pdf (35.3 KB)
- nis-investments-2025.pdf (3118.9 KB)
- nis2-technical-implementation-guidance.pdf (4699.7 KB)
## Notes
- HTTP endpoint tests require a running marker-api instance.
- API-level tests were skipped (no API running).
- Offline validation tests (syntax, parameter availability, docs) ran regardless.
- The marker library could not be installed due to Pillow build failure in this sandbox.
- For live endpoint testing, start the API with: `python app.py` (requires marker-pdf[full] + flask).
-60
View File
@@ -1,60 +0,0 @@
# Test Report — marker-api Endpoint Tests
**Date:** 2026-06-04 13:19:39
**API Base:** http://10.0.2.145:8000
**Test files:** /home/oval/Projects/marker-api/test_files/enisa (5 file(s))
## Summary
| Result | Count |
|--------|-------|
| ✅ Passed | 5 |
| ❌ Failed | 11 |
| ⏭️ Skipped | 0 |
| **Total** | **16** |
| **Pass Rate** | **31.2%** |
## Test Details
| Test | Result | Time | Notes |
|------|--------|------|-------|
### Application Tests
| app.py syntax valid | ✅ PASS | 0.003s | |
| use_llm/llm_service params present in app.py | ✅ PASS | 0.000s | |
| marker-convert.ps1 has all new parameters | ✅ PASS | 0.000s | |
| README.md documents all endpoints | ✅ PASS | 0.000s | |
| ENISA test files available | ✅ PASS | 0.017s | |
### Endpoint Tests (HTTP)
| GET /health returns 200 | ❌ FAIL | 0.003s | Cannot reach http://10.0.2.145:8000/health: [Errno 113] No route to host |
| GET / returns docs page | ❌ FAIL | 0.001s | Cannot reach http://10.0.2.145:8000/: [Errno 113] No route to host |
| POST /marker multipart (markdown) | ❌ FAIL | 0.000s | Cannot reach http://10.0.2.145:8000/marker: [Errno 113] No route to host |
| POST /marker multipart (json) | ❌ FAIL | 0.000s | Cannot reach http://10.0.2.145:8000/marker: [Errno 113] No route to host |
| POST /marker JSON base64 | ❌ FAIL | 0.000s | Cannot reach http://10.0.2.145:8000/marker: [Errno 113] No route to host |
| POST /marker with use_llm=true | ❌ FAIL | 0.000s | Cannot reach http://10.0.2.145:8000/marker: [Errno 113] No route to host |
| POST /marker with page_range | ❌ FAIL | 1.034s | Cannot reach http://10.0.2.145:8000/marker: [Errno 113] No route to host |
| POST /marker missing file → 400 | ❌ FAIL | 1.025s | Cannot reach http://10.0.2.145:8000/marker: [Errno 113] No route to host |
| POST /v1/conversions JSON | ❌ FAIL | 1.023s | Cannot reach http://10.0.2.145:8000/v1/conversions: [Errno 113] No route to host |
| POST /v1/files/convert multipart | ❌ FAIL | 1.024s | Cannot reach http://10.0.2.145:8000/v1/files/convert: [Errno 113] No route to host |
| POST /v1/files/convert JSON | ❌ FAIL | 1.024s | Cannot reach http://10.0.2.145:8000/v1/files/convert: [Errno 113] No route to host |
## Environment
- Python: 3.14.5
- Platform: linux
- marker: ❌ not installed (Pillow build failure on this platform)
## Test Files
- enisa-international-strategy-2026.pdf (39.7 KB)
- enisa-nis360-2026.pdf (3983.3 KB)
- enisa-stakeholder-strategy-2026-2028.pdf (35.3 KB)
- nis-investments-2025.pdf (3118.9 KB)
- nis2-technical-implementation-guidance.pdf (4699.7 KB)
## Notes
- HTTP endpoint tests require a running marker-api instance.
- API-level tests were run against http://10.0.2.145:8000
- Offline validation tests (syntax, parameter availability, docs) ran regardless.
- The marker library could not be installed due to Pillow build failure in this sandbox.
- For live endpoint testing, start the API with: `python app.py` (requires marker-pdf[full] + flask).
- Failed tests may indicate missing marker library or API connectivity issues.