Files
2026-09-14 07:28:47 +00:00

5955 lines
98 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html><html lang="en" class="no-js"><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="The main documentation resource for NetAlertX - Network visibility &amp; Asset intelligence application">
<link rel="canonical" href="https://docs.netalertx.com/plugins/omada_sdn_openapi/">
<link rel="prev" href="../omada_sdn_imp/">
<link rel="next" href="../pihole_api_scan/">
<link rel="icon" href="../../img/netalertx_docs.png">
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.21">
<title>Omada SDN using OpenAPI (OMDSDNOPENAPI) - Documentation</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.66ac8b77.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../../stylesheets/custom.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.1/css/all.min.css">
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<!-- Google Tag Manager -->
<!-- Google tag (gtag.js) -->
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-KCRSGLP8J2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-KCRSGLP8J2');
</script>
<!-- End Google Tag Manager -->
<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"><script src="../../assets/javascripts/glightbox.min.js"></script><style id="glightbox-style">
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color); }
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color); }
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color); }
</style></head>
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="deep-purple">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#omada-sdn-using-openapi-omdsdnopenapi" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KCRSGLP8J2" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../.." title="Documentation" class="md-header__button md-logo" aria-label="Documentation" data-md-component="logo">
<img src="../../img/netalertx_docs.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Documentation
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Omada SDN using OpenAPI (OMDSDNOPENAPI)
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="deep-purple" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden="">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a7 7 0 0 0-7 7c0 2.38 1.19 4.47 3 5.74V17a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-2.26c1.81-1.27 3-3.36 3-5.74a7 7 0 0 0-7-7M9 21a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-1H9v1Z"></path></svg>
</label>
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="black" data-md-color-accent="deep-purple" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden="">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a7 7 0 0 1 7 7c0 2.38-1.19 4.47-3 5.74V17a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-2.26C6.19 13.47 5 11.38 5 9a7 7 0 0 1 7-7M9 21v-1h6v1a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1m3-17a5 5 0 0 0-5 5c0 2.05 1.23 3.81 3 4.58V16h4v-2.42c1.77-.77 3-2.53 3-4.58a5 5 0 0 0-5-5Z"></path></svg>
</label>
</form>
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required="">
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard="" data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7 0-.24-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91 1.61 0 2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08Z"></path></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/netalertx/NetAlertX/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../.." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="../../INSTALLATION/" class="md-tabs__link">
Installation
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../../SUBNETS/" class="md-tabs__link">
Setup
</a>
</li>
<li class="md-tabs__item">
<a href="../../DEVICE_MANAGEMENT/" class="md-tabs__link">
Device guides
</a>
</li>
<li class="md-tabs__item">
<a href="../../PIHOLE_GUIDE/" class="md-tabs__link">
Other guides
</a>
</li>
<li class="md-tabs__item">
<a href="../../DEBUG_TIPS/" class="md-tabs__link">
Troubleshooting
</a>
</li>
<li class="md-tabs__item">
<a href="../../DEV_ENV_SETUP/" class="md-tabs__link">
Development
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="Documentation" class="md-nav__button md-logo" aria-label="Documentation" data-md-component="logo">
<img src="../../img/netalertx_docs.png" alt="logo">
</a>
Documentation
</label>
<div class="md-nav__source">
<a href="https://github.com/netalertx/NetAlertX/" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../.." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2">
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
Installation
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Installation
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../INSTALLATION/" class="md-nav__link">
<span class="md-ellipsis">
Installation options
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../INITIAL_SETUP/" class="md-nav__link">
<span class="md-ellipsis">
Quick setup
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3">
<label class="md-nav__link" for="__nav_2_3" id="__nav_2_3_label" tabindex="0">
<span class="md-ellipsis">
Docker
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_3">
<span class="md-nav__icon md-icon"></span>
Docker
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../DOCKER_INSTALLATION/" class="md-nav__link">
<span class="md-ellipsis">
Docker guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DOCKER_COMPOSE/" class="md-nav__link">
<span class="md-ellipsis">
Docker Compose
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../FILE_PERMISSIONS/" class="md-nav__link">
<span class="md-ellipsis">
Docker file permissions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../UPDATES/" class="md-nav__link">
<span class="md-ellipsis">
Docker updates
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DOCKER_MAINTENANCE/" class="md-nav__link">
<span class="md-ellipsis">
Docker maintenance
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4">
<label class="md-nav__link" for="__nav_2_4" id="__nav_2_4_label" tabindex="0">
<span class="md-ellipsis">
Docker startup troubleshooting
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_4">
<span class="md-nav__icon md-icon"></span>
Docker startup troubleshooting
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../docker-troubleshooting/arp-flux-sysctls/" class="md-nav__link">
<span class="md-ellipsis">
ARP flux sysctls
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker-troubleshooting/aufs-capabilities/" class="md-nav__link">
<span class="md-ellipsis">
Aufs capabilities
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker-troubleshooting/excessive-capabilities/" class="md-nav__link">
<span class="md-ellipsis">
Excessive capabilities
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker-troubleshooting/file-permissions/" class="md-nav__link">
<span class="md-ellipsis">
File permissions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker-troubleshooting/incorrect-user/" class="md-nav__link">
<span class="md-ellipsis">
Incorrect user
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker-troubleshooting/missing-capabilities/" class="md-nav__link">
<span class="md-ellipsis">
Missing capabilities
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker-troubleshooting/mount-configuration-issues/" class="md-nav__link">
<span class="md-ellipsis">
Mount issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker-troubleshooting/network-mode/" class="md-nav__link">
<span class="md-ellipsis">
Network mode
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker-troubleshooting/nginx-configuration-mount/" class="md-nav__link">
<span class="md-ellipsis">
Nginx mount
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker-troubleshooting/port-conflicts/" class="md-nav__link">
<span class="md-ellipsis">
Port conflicts
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker-troubleshooting/read-only-filesystem/" class="md-nav__link">
<span class="md-ellipsis">
Read only
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../docker-troubleshooting/running-as-root/" class="md-nav__link">
<span class="md-ellipsis">
Running as root
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5">
<label class="md-nav__link" for="__nav_2_5" id="__nav_2_5_label" tabindex="0">
<span class="md-ellipsis">
Other
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_5">
<span class="md-nav__icon md-icon"></span>
Other
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../SYNOLOGY_GUIDE/" class="md-nav__link">
<span class="md-ellipsis">
Synology guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DOCKER_PORTAINER/" class="md-nav__link">
<span class="md-ellipsis">
Portainer Stacks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../COMMUNITY_GUIDES/" class="md-nav__link">
<span class="md-ellipsis">
Community guides
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../HW_INSTALL/" class="md-nav__link">
<span class="md-ellipsis">
Bare-metal (Experimental)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../MIGRATION/" class="md-nav__link">
<span class="md-ellipsis">
Migration guide
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6">
<label class="md-nav__link" for="__nav_2_6" id="__nav_2_6_label" tabindex="0">
<span class="md-ellipsis">
Help
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_6">
<span class="md-nav__icon md-icon"></span>
Help
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../COMMON_ISSUES/" class="md-nav__link">
<span class="md-ellipsis">
Common issues
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked="">
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
<span class="md-ellipsis">
Setup
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Setup
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1" checked="">
<label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="">
<span class="md-ellipsis">
Getting started
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3_1">
<span class="md-nav__icon md-icon"></span>
Getting started
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../SUBNETS/" class="md-nav__link">
<span class="md-ellipsis">
Subnets
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../PLUGINS_OVERVIEW/" class="md-nav__link">
<span class="md-ellipsis">
Enable Plugins
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1_3" checked="">
<label class="md-nav__link" for="__nav_3_1_3" id="__nav_3_1_3_label" tabindex="0">
<span class="md-ellipsis">
Plugins reference
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_1_3_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3_1_3">
<span class="md-nav__icon md-icon"></span>
Plugins reference
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../_publisher_apprise/" class="md-nav__link">
<span class="md-ellipsis">
Apprise publisher (APPRISE)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../_publisher_email/" class="md-nav__link">
<span class="md-ellipsis">
Email publisher (SMTP) (SMTP)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../_publisher_mqtt/" class="md-nav__link">
<span class="md-ellipsis">
MQTT publisher (MQTT)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../_publisher_ntfy/" class="md-nav__link">
<span class="md-ellipsis">
NTFY publisher (NTFY)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../_publisher_pushover/" class="md-nav__link">
<span class="md-ellipsis">
Pushover publisher (PUSHOVER)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../_publisher_pushsafer/" class="md-nav__link">
<span class="md-ellipsis">
Pushsafer publisher (PUSHSAFER)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../_publisher_telegram/" class="md-nav__link">
<span class="md-ellipsis">
Telegram publisher (TELEGRAM)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../_publisher_webhook/" class="md-nav__link">
<span class="md-ellipsis">
Webhook publisher (WEBHOOK)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../adguard_export/" class="md-nav__link">
<span class="md-ellipsis">
AdGuard (Device Export) (ADGUARDEXP)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../adguard_import/" class="md-nav__link">
<span class="md-ellipsis">
AdGuard (Device import) (ADGUARDIMP)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../arp_scan/" class="md-nav__link">
<span class="md-ellipsis">
Arp-Scan (Network scan) (ARPSCAN)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../asuswrt_import/" class="md-nav__link">
<span class="md-ellipsis">
AsusWRT device import (ASUSWRT)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../avahi_scan/" class="md-nav__link">
<span class="md-ellipsis">
AVAHISCAN (Naming) (AVAHISCAN)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../csv_backup/" class="md-nav__link">
<span class="md-ellipsis">
CSV backup (CSVBCKP)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../custom_props/" class="md-nav__link">
<span class="md-ellipsis">
Custom properties (CUSTPROP)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../db_cleanup/" class="md-nav__link">
<span class="md-ellipsis">
DB cleanup (DBCLNP)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ddns_update/" class="md-nav__link">
<span class="md-ellipsis">
DDNS update (DDNS)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dhcp_leases/" class="md-nav__link">
<span class="md-ellipsis">
DHCP Leases (Device import) (DHCPLSS)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dhcp_leases/ASUS_ROUTERS/" class="md-nav__link">
<span class="md-ellipsis">
Configuring the DHCPLSS plugin to import clients from the YazFi plugin
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dhcp_servers/" class="md-nav__link">
<span class="md-ellipsis">
Rogue DHCP (DHCPSRVS)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dig_scan/" class="md-nav__link">
<span class="md-ellipsis">
Dig (Name resolution) (DIGSCAN)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../freebox/" class="md-nav__link">
<span class="md-ellipsis">
Freebox (FREEBOX)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../fritzbox/" class="md-nav__link">
<span class="md-ellipsis">
FRITZ!Box (FRITZBOX)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../icmp_scan/" class="md-nav__link">
<span class="md-ellipsis">
ICMP (Status check) (ICMP)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../internet_ip/" class="md-nav__link">
<span class="md-ellipsis">
Internet check (INTRNT)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../internet_speedtest/" class="md-nav__link">
<span class="md-ellipsis">
Internet speedtest (INTRSPD)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ipneigh/" class="md-nav__link">
<span class="md-ellipsis">
IP Neigh (IPNEIGH)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../kea_api/" class="md-nav__link">
<span class="md-ellipsis">
Kea DHCP API (KEALSS)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../luci_import/" class="md-nav__link">
<span class="md-ellipsis">
Luci rpc import (Device import) (LUCIRPC)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../maintenance/" class="md-nav__link">
<span class="md-ellipsis">
Maintenance (MAINT)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../mikrotik_scan/" class="md-nav__link">
<span class="md-ellipsis">
Mikrotik (Device discovery) (MTSCAN)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nbtscan_scan/" class="md-nav__link">
<span class="md-ellipsis">
NBTSCAN (Naming) (NBTSCAN)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../newdev_template/" class="md-nav__link">
<span class="md-ellipsis">
New Devices (NEWDEV)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nmap_dev_scan/" class="md-nav__link">
<span class="md-ellipsis">
NMAP Device discovery (NMAPDEV)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nmap_scan/" class="md-nav__link">
<span class="md-ellipsis">
Services &amp; Ports (NMAP) (NMAP)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../notification_processing/" class="md-nav__link">
<span class="md-ellipsis">
Notification Processing (NTFPRCS)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nslookup_scan/" class="md-nav__link">
<span class="md-ellipsis">
NSLOOKUP (Naming) (NSLOOKUP)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../omada_sdn_imp/" class="md-nav__link">
<span class="md-ellipsis">
OMADA SDN import (do not use) (OMDSDN)
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Omada SDN using OpenAPI (OMDSDNOPENAPI)
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Omada SDN using OpenAPI (OMDSDNOPENAPI)
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a href="#overview" class="md-nav__link">
<span class="md-ellipsis">
🔍 Overview
</span>
</a>
<nav class="md-nav" aria-label="🔍 Overview">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#features" class="md-nav__link">
<span class="md-ellipsis">
✨ Features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#requirements" class="md-nav__link">
<span class="md-ellipsis">
📌 Requirements
</span>
</a>
<nav class="md-nav" aria-label="📌 Requirements">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#officially-supported-controllers-source" class="md-nav__link">
<span class="md-ellipsis">
✅ Officially supported controllers - Source
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#setup-guide-settings" class="md-nav__link">
<span class="md-ellipsis">
⚙️ Setup guide &amp; settings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#data-populated-by-the-plugin" class="md-nav__link">
<span class="md-ellipsis">
📋 Data populated by the plugin
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#limitations-and-warnings" class="md-nav__link">
<span class="md-ellipsis">
⚠️ Limitations and warnings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples" class="md-nav__link">
<span class="md-ellipsis">
🖼️ Examples
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#i-other-info" class="md-nav__link">
<span class="md-ellipsis">
️ Other info
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../pihole_api_scan/" class="md-nav__link">
<span class="md-ellipsis">
PiHole API scan (PIHOLEAPI)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../pihole_monitor/" class="md-nav__link">
<span class="md-ellipsis">
Pi-hole Monitor (PIHOLEMON)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../pihole_scan/" class="md-nav__link">
<span class="md-ellipsis">
PiHole (Device sync) (PIHOLE)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rest_import/" class="md-nav__link">
<span class="md-ellipsis">
REST Import (RSTIMPRT)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../set_password/" class="md-nav__link">
<span class="md-ellipsis">
Set password (SETPWD)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../snmp_discovery/" class="md-nav__link">
<span class="md-ellipsis">
SNMP discovery (SNMPDSC)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../sync/" class="md-nav__link">
<span class="md-ellipsis">
Sync Hub (SYNC)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ui_settings/" class="md-nav__link">
<span class="md-ellipsis">
UI Settings (UI)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../unifi_api_import/" class="md-nav__link">
<span class="md-ellipsis">
UniFi import (API) (UNIFIAPI)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../unifi_import/" class="md-nav__link">
<span class="md-ellipsis">
UniFi import (UNFIMP)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../vendor_update/" class="md-nav__link">
<span class="md-ellipsis">
Vendor update (VNDRPDT)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../wake_on_lan/" class="md-nav__link">
<span class="md-ellipsis">
Wake on Lan (WOL) (WOL)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../website_monitor/" class="md-nav__link">
<span class="md-ellipsis">
Services &amp; Web monitor (WEBMON)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../workflows/" class="md-nav__link">
<span class="md-ellipsis">
Workflows (WORKFLOWS)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../BACKUPS/" class="md-nav__link">
<span class="md-ellipsis">
Backups
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../SECURITY_FEATURES/" class="md-nav__link">
<span class="md-ellipsis">
Security features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../SECURITY/" class="md-nav__link">
<span class="md-ellipsis">
Security considerations
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2">
<label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="">
<span class="md-ellipsis">
Advanced guides
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2">
<span class="md-nav__icon md-icon"></span>
Advanced guides
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../REMOTE_NETWORKS/" class="md-nav__link">
<span class="md-ellipsis">
Remote networks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../NOTIFICATIONS/" class="md-nav__link">
<span class="md-ellipsis">
Notifications guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../NOTIFICATION_TEMPLATES/" class="md-nav__link">
<span class="md-ellipsis">
Notification text templates
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../PUID_PGID_SECURITY/" class="md-nav__link">
<span class="md-ellipsis">
Custom PUID/GUID
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../NAME_RESOLUTION/" class="md-nav__link">
<span class="md-ellipsis">
Name resolution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../AUTHELIA/" class="md-nav__link">
<span class="md-ellipsis">
Authelia guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../PERFORMANCE/" class="md-nav__link">
<span class="md-ellipsis">
Performance guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../REVERSE_DNS/" class="md-nav__link">
<span class="md-ellipsis">
Reverse DNS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../REVERSE_PROXY/" class="md-nav__link">
<span class="md-ellipsis">
Reverse proxy
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../WORKFLOWS/" class="md-nav__link">
<span class="md-ellipsis">
Workflows
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../WORKFLOW_EXAMPLES/" class="md-nav__link">
<span class="md-ellipsis">
Workflow examples
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DOCKER_SWARM/" class="md-nav__link">
<span class="md-ellipsis">
Docker Swarm
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3">
<label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="">
<span class="md-ellipsis">
Best practice guides
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_3">
<span class="md-nav__icon md-icon"></span>
Best practice guides
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../ADVISORY_EYES_ON_GLASS/" class="md-nav__link">
<span class="md-ellipsis">
NOC / Eyes-on-glass dashboard
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../ADVISORY_MULTI_NETWORK/" class="md-nav__link">
<span class="md-ellipsis">
Multi-network (VLAN / routing) monitoring
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../ADVISORY_MULTI_SITE_MONITORING/" class="md-nav__link">
<span class="md-ellipsis">
Multi-site (MSP / customer / branch) monitoring
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4">
<label class="md-nav__link" for="__nav_3_4" id="__nav_3_4_label" tabindex="">
<span class="md-ellipsis">
Help
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_4">
<span class="md-nav__icon md-icon"></span>
Help
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../COMMON_ISSUES/" class="md-nav__link">
<span class="md-ellipsis">
Common issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../RANDOM_MAC/" class="md-nav__link">
<span class="md-ellipsis">
Random MAC
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4">
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
<span class="md-ellipsis">
Device guides
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Device guides
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_1">
<label class="md-nav__link" for="__nav_4_1" id="__nav_4_1_label" tabindex="0">
<span class="md-ellipsis">
Editing devices
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_1">
<span class="md-nav__icon md-icon"></span>
Editing devices
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../DEVICE_MANAGEMENT/" class="md-nav__link">
<span class="md-ellipsis">
Management
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DEVICES_BULK_EDITING/" class="md-nav__link">
<span class="md-ellipsis">
Bulk editing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../CUSTOM_PROPERTIES/" class="md-nav__link">
<span class="md-ellipsis">
Custom properties
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DEVICE_DISPLAY_SETTINGS/" class="md-nav__link">
<span class="md-ellipsis">
Device display settings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DEVICE_FILTERS/" class="md-nav__link">
<span class="md-ellipsis">
Device views filtering
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../SESSION_INFO/" class="md-nav__link">
<span class="md-ellipsis">
Session info
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DEVICE_FIELD_LOCK/" class="md-nav__link">
<span class="md-ellipsis">
Field Lock/Unlock
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2">
<label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0">
<span class="md-ellipsis">
Device auditing
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_2">
<span class="md-nav__icon md-icon"></span>
Device auditing
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../DEVICE_CHANGE_LOG/" class="md-nav__link">
<span class="md-ellipsis">
Change log
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DEVICE_PRESENCE/" class="md-nav__link">
<span class="md-ellipsis">
Presence
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DEVICE_SOURCE_FIELDS/" class="md-nav__link">
<span class="md-ellipsis">
Device source fields
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_3">
<label class="md-nav__link" for="__nav_4_3" id="__nav_4_3_label" tabindex="0">
<span class="md-ellipsis">
Icons and network topology
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4_3">
<span class="md-nav__icon md-icon"></span>
Icons and network topology
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../ICONS/" class="md-nav__link">
<span class="md-ellipsis">
Icons
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../NETWORK_TREE/" class="md-nav__link">
<span class="md-ellipsis">
Network topology
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5">
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
Other guides
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Other guides
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../PIHOLE_GUIDE/" class="md-nav__link">
<span class="md-ellipsis">
Pi-hole guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../HOME_ASSISTANT/" class="md-nav__link">
<span class="md-ellipsis">
Home Assistant
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../SMTP/" class="md-nav__link">
<span class="md-ellipsis">
Common email services
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../REST_IMPORT/" class="md-nav__link">
<span class="md-ellipsis">
Rest import
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../WEBHOOK_N8N/" class="md-nav__link">
<span class="md-ellipsis">
Webhooks (n8n)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6">
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-ellipsis">
Troubleshooting
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Troubleshooting
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../DEBUG_TIPS/" class="md-nav__link">
<span class="md-ellipsis">
General tips
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../COMMON_ISSUES/" class="md-nav__link">
<span class="md-ellipsis">
Common issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../LOGGING/" class="md-nav__link">
<span class="md-ellipsis">
Inspecting logs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DEBUG_API_SERVER/" class="md-nav__link">
<span class="md-ellipsis">
API server issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DEBUG_INVALID_JSON/" class="md-nav__link">
<span class="md-ellipsis">
Invalid JSON issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DEBUG_PHP/" class="md-nav__link">
<span class="md-ellipsis">
PHP backend issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DEBUG_PLUGINS/" class="md-nav__link">
<span class="md-ellipsis">
Plugin issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../WEB_UI_PORT_DEBUG/" class="md-nav__link">
<span class="md-ellipsis">
Web UI port issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../WORKFLOWS_DEBUGGING/" class="md-nav__link">
<span class="md-ellipsis">
Workflows issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../FIX_OFFLINE_DETECTION/" class="md-nav__link">
<span class="md-ellipsis">
Incorrect offline detection
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7">
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
Development
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Development
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_1">
<label class="md-nav__link" for="__nav_7_1" id="__nav_7_1_label" tabindex="0">
<span class="md-ellipsis">
Plugin and app development
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_1">
<span class="md-nav__icon md-icon"></span>
Plugin and app development
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../DEV_ENV_SETUP/" class="md-nav__link">
<span class="md-ellipsis">
Environment setup
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../BUILDS/" class="md-nav__link">
<span class="md-ellipsis">
Builds
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DEV_DEVCONTAINER/" class="md-nav__link">
<span class="md-ellipsis">
Devcontainer
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DEV_PORTS_HOST_MODE/" class="md-nav__link">
<span class="md-ellipsis">
Devcontainer ports
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_1_5">
<label class="md-nav__link" for="__nav_7_1_5" id="__nav_7_1_5_label" tabindex="0">
<span class="md-ellipsis">
Custom plugins
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_7_1_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_1_5">
<span class="md-nav__icon md-icon"></span>
Custom plugins
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../PLUGINS_DEV/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../PLUGINS_DEV_QUICK_START/" class="md-nav__link">
<span class="md-ellipsis">
Quick start
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../PLUGINS_DEV_DATA_CONTRACT/" class="md-nav__link">
<span class="md-ellipsis">
Data contract
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../PLUGINS_IMPORT_BEHAVIOR/" class="md-nav__link">
<span class="md-ellipsis">
Import behavior
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../PLUGINS_DEV_SETTINGS/" class="md-nav__link">
<span class="md-ellipsis">
Settings system
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../PLUGINS_DEV_DATASOURCES/" class="md-nav__link">
<span class="md-ellipsis">
Data sources
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../PLUGINS_DEV_UI_COMPONENTS/" class="md-nav__link">
<span class="md-ellipsis">
UI components
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../PLUGINS_DEV_CONFIG/" class="md-nav__link">
<span class="md-ellipsis">
Config lifecycle
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../FRONTEND_DEVELOPMENT/" class="md-nav__link">
<span class="md-ellipsis">
Frontend development
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DATABASE/" class="md-nav__link">
<span class="md-ellipsis">
Database
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../SETTINGS_SYSTEM/" class="md-nav__link">
<span class="md-ellipsis">
Settings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../VERSIONS/" class="md-nav__link">
<span class="md-ellipsis">
Versions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../DEVICE_HEURISTICS/" class="md-nav__link">
<span class="md-ellipsis">
Icon and type guessing
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_2">
<label class="md-nav__link" for="__nav_7_2" id="__nav_7_2_label" tabindex="0">
<span class="md-ellipsis">
API
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_2">
<span class="md-nav__icon md-icon"></span>
API
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../API/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_DEVICES/" class="md-nav__link">
<span class="md-ellipsis">
Devices collection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_DEVICE/" class="md-nav__link">
<span class="md-ellipsis">
Device
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_DEVICE_FIELD_LOCK/" class="md-nav__link">
<span class="md-ellipsis">
Device field Lock
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_SESSIONS/" class="md-nav__link">
<span class="md-ellipsis">
Sessions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_SETTINGS/" class="md-nav__link">
<span class="md-ellipsis">
Settings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_EVENTS/" class="md-nav__link">
<span class="md-ellipsis">
Events
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_MESSAGING_IN_APP/" class="md-nav__link">
<span class="md-ellipsis">
Messaging in-app
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_METRICS/" class="md-nav__link">
<span class="md-ellipsis">
Metrics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_NETTOOLS/" class="md-nav__link">
<span class="md-ellipsis">
Net tools
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_ONLINEHISTORY/" class="md-nav__link">
<span class="md-ellipsis">
Online history
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_SYNC/" class="md-nav__link">
<span class="md-ellipsis">
Sync
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_LOGS/" class="md-nav__link">
<span class="md-ellipsis">
Logs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_SSE/" class="md-nav__link">
<span class="md-ellipsis">
SSE
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_GRAPHQL/" class="md-nav__link">
<span class="md-ellipsis">
GraphQL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_DBQUERY/" class="md-nav__link">
<span class="md-ellipsis">
DB query
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_MCP/" class="md-nav__link">
<span class="md-ellipsis">
MCP
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_TESTS/" class="md-nav__link">
<span class="md-ellipsis">
Tests
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../API_OLD/" class="md-nav__link">
<span class="md-ellipsis">
SUPERSEDED OLD API Overview
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7_3">
<label class="md-nav__link" for="__nav_7_3" id="__nav_7_3_label" tabindex="0">
<span class="md-ellipsis">
Integrations
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_7_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7_3">
<span class="md-nav__icon md-icon"></span>
Integrations
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a href="../../WEBHOOK_SECRET/" class="md-nav__link">
<span class="md-ellipsis">
Webhook secret
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../HELPER_SCRIPTS/" class="md-nav__link">
<span class="md-ellipsis">
Helper scripts
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a href="#overview" class="md-nav__link">
<span class="md-ellipsis">
🔍 Overview
</span>
</a>
<nav class="md-nav" aria-label="🔍 Overview">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#features" class="md-nav__link">
<span class="md-ellipsis">
✨ Features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#requirements" class="md-nav__link">
<span class="md-ellipsis">
📌 Requirements
</span>
</a>
<nav class="md-nav" aria-label="📌 Requirements">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#officially-supported-controllers-source" class="md-nav__link">
<span class="md-ellipsis">
✅ Officially supported controllers - Source
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#setup-guide-settings" class="md-nav__link">
<span class="md-ellipsis">
⚙️ Setup guide &amp; settings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#data-populated-by-the-plugin" class="md-nav__link">
<span class="md-ellipsis">
📋 Data populated by the plugin
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#limitations-and-warnings" class="md-nav__link">
<span class="md-ellipsis">
⚠️ Limitations and warnings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples" class="md-nav__link">
<span class="md-ellipsis">
🖼️ Examples
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#i-other-info" class="md-nav__link">
<span class="md-ellipsis">
️ Other info
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/netalertx/NetAlertX/blob/main/server/plugins/omada_sdn_openapi/README.md" title="Edit this page" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4v-2m10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1 2.1 2.1Z"></path></svg>
</a>
<a href="https://github.com/netalertx/NetAlertX/raw/main/server/plugins/omada_sdn_openapi/README.md" title="View source of this page" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.15 8.15 0 0 1-1.23-2Z"></path></svg>
</a>
<h1 id="omada-sdn-using-openapi-omdsdnopenapi">Omada SDN using OpenAPI (OMDSDNOPENAPI)</h1>
<div class="admonition note">
<p class="admonition-title">Generated page</p>
<p>This page mirrors <a href="https://github.com/netalertx/NetAlertX/blob/main/server/plugins/omada_sdn_openapi/README.md"><code>server/plugins/omada_sdn_openapi/README.md</code></a> and is regenerated on every docs build.</p>
</div>
<h2 id="overview">🔍 Overview</h2>
<ul>
<li>This plugin imports online devices and clients from the Omada SDN (Omada Controller) through the provided OpenAPI.</li>
</ul>
<h3 id="features">✨ Features</h3>
<ol>
<li>Import online devices (gateways, switches, and access points) compatible with Omada SDN and send them to NetAlertX.</li>
<li>Import online clients (e.g., computers and smartphones) and send them to NetAlertX.</li>
</ol>
<h3 id="requirements">📌 Requirements</h3>
<ul>
<li>Omada Controller with Open API support.</li>
</ul>
<h4 id="officially-supported-controllers-source">✅ Officially supported controllers - <a href="https://community.tp-link.com/en/business/forum/topic/590430">Source</a></h4>
<ul>
<li>All Omada Pro versions support Open API</li>
<li>Omada Software/Hardware Controller support Open API since Controller v5.12</li>
</ul>
<h3 id="setup-guide-settings">⚙️ Setup guide &amp; settings</h3>
<ol>
<li>Login to your <strong>Omada Controller</strong>.</li>
<li>In the <strong>Global Dashboard</strong>, navigate to <strong>Settings</strong>, select <strong>Platform Integration</strong>, then click on <strong>Open API</strong>.</li>
<li>Create new credentials by clicking <strong>Add New App</strong>.</li>
<li>The <code>App Name</code> can be anything.</li>
<li>Set the <code>Mode</code> to <code>Client</code>.</li>
<li>Set the <code>Role</code> to <code>Viewer</code> or <code>Administrator</code>.</li>
<li>For <code>Site Privileges</code>, choose <code>All (Including all new-created sites)</code> or select specific site(s).</li>
<li>Click <code>Apply</code> to create the application.</li>
<li>From the created application, you will need the following fields.</li>
<li><code>Omada ID</code> - visible by clicking the <strong>eye</strong> icon next to the <strong>edit</strong> and <strong>delete</strong> buttons.</li>
<li><code>Client ID</code></li>
<li><code>Client Secret</code></li>
<li>Open <strong>NetAlertX's Settings</strong>, head to <strong>Omada SDN using OpenAPI</strong> <code>(OMDSDNOPENAPI)</code> and configure the plugin.</li>
<li><code>OMDSDNOPENAPI_RUN</code> - When the scan should run, good option is <code>schedule</code>.</li>
<li><code>OMDSDNOPENAPI_host</code> - Specify the host URL of your <strong>Omada Controller</strong>, including the protocol, e.g., <code>https://example.com:1234</code>.</li>
<li><code>OMDSDNOPENAPI_omada_id</code> - Enter the <strong>Omada ID</strong> obtained in the previous step.</li>
<li><code>OMDSDNOPENAPI_client_id</code> - Enter the <strong>Client ID</strong> obtained in the previous step.</li>
<li><code>OMDSDNOPENAPI_client_secret</code> - Enter the <strong>Client Secret</strong> obtained in the previous step.</li>
<li><code>OMDSDNOPENAPI_sites</code> (optional) - You can enter either the <strong>site name</strong> or <strong>site ID</strong>. If an invalid value is provided or neither is specified, the plugin will default to the first accessible site using the supplied credentials.</li>
<li><code>OMDSDNOPENAPI_verify_ssl</code> - Check this option to enable SSL verification for requests to your Omada Controller's OpenAPI. If unchecked, SSL verification will be disabled.</li>
</ol>
<h3 id="data-populated-by-the-plugin">📋 Data populated by the plugin</h3>
<ul>
<li>This table outlines the data fields populated by the plugin, their conditions, descriptions, and where they are visible.</li>
</ul>
<table>
<thead>
<tr>
<th>🔹 Field</th>
<th>🔄 Population Condition</th>
<th>📖 Description</th>
<th>👀 Visibility</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>MAC</strong></td>
<td>Always populated</td>
<td>The device's unique MAC address</td>
<td>Device details</td>
</tr>
<tr>
<td><strong>Last IP</strong></td>
<td>Always populated</td>
<td>The device's assigned IP address</td>
<td>Device details</td>
</tr>
<tr>
<td><strong>Name</strong></td>
<td>Always populated</td>
<td>The device name retrieved from Omada</td>
<td>Device details</td>
</tr>
<tr>
<td><strong>Parent Node</strong></td>
<td>Only if available</td>
<td>MAC address of the parent device (switch, AP, or gateway)</td>
<td>Device details</td>
</tr>
<tr>
<td><strong>Parent Node Port</strong></td>
<td>Only if available</td>
<td>The port number used to connect to the parent device</td>
<td>Device details</td>
</tr>
<tr>
<td><strong>SSID</strong></td>
<td>Only if available</td>
<td>The SSID through which the device is connected</td>
<td>Device details</td>
</tr>
<tr>
<td><strong>Device Type</strong></td>
<td>Only if available</td>
<td>Detected device type (e.g., iPhone, PC, Android)</td>
<td>Device details</td>
</tr>
<tr>
<td><strong>Last Seen</strong></td>
<td>Always populated</td>
<td>Last recorded time the device was active on the network</td>
<td>Plugin details</td>
</tr>
<tr>
<td><strong>Omada Site</strong></td>
<td>Always populated</td>
<td>Omada site to which the device is assigned</td>
<td>Device details</td>
</tr>
<tr>
<td><strong>VLAN ID</strong></td>
<td>Only if available</td>
<td>VLAN ID assigned to the device</td>
<td>Plugin details</td>
</tr>
</tbody>
</table>
<h3 id="limitations-and-warnings">⚠️ Limitations and warnings</h3>
<ul>
<li>The plugin can fetch up to 1000 devices and 1000 clients from the Omada Controller.</li>
<li>Using non-Omada SDN compatible devices (e.g., switches, APs) may result in incomplete or inaccurate data.</li>
</ul>
<h3 id="examples">🖼️ Examples</h3>
<ul>
<li>
<p>Settings:</p>
</li>
<li>
<p><a class="glightbox" data-type="image" data-width="auto" data-height="auto" href="omada_sdn_openapi_settings.png" data-desc-position="bottom"><img alt="settings_example" src="omada_sdn_openapi_settings.png"></a></p>
</li>
</ul>
<h3 id="i-other-info">️ Other info</h3>
<ul>
<li>Version: 1.0</li>
<li>Author : <a href="https://github.com/xfilo">xfilo</a></li>
<li>Release Date: 24-February-2025</li>
<li>Omada Open API documentation: <a href="https://use1-omada-northbound.tplinkcloud.com/doc.html#/home">https://use1-omada-northbound.tplinkcloud.com/doc.html#/home</a> (may take a moment to load)</li>
</ul>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden="">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"></path></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="Footer">
<a href="../omada_sdn_imp/" class="md-footer__link md-footer__link--prev" aria-label="Previous: OMADA SDN import (do not use) (OMDSDN)">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
</div>
<div class="md-footer__title">
<span class="md-footer__direction">
Previous
</span>
<div class="md-ellipsis">
OMADA SDN import (do not use) (OMDSDN)
</div>
</div>
</a>
<a href="../pihole_api_scan/" class="md-footer__link md-footer__link--next" aria-label="Next: PiHole API scan (PIHOLEAPI)">
<div class="md-footer__title">
<span class="md-footer__direction">
Next
</span>
<div class="md-ellipsis">
PiHole API scan (PIHOLEAPI)
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["announce.dismiss", "content.action.edit", "content.action.view", "content.code.annotate", "content.code.copy", "content.tooltips", "navigation.footer", "navigation.indexes", "navigation.sections", "navigation.tabs", "navigation.top", "navigation.tracking", "search.highlight", "search.share", "search.suggest", "toc.follow"], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.a7c05c9e.min.js"></script>
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
document$.subscribe(()=>{ lightbox.reload(); });
</script></body></html>