Skip to content
Snippets Groups Projects
Select Git revision
  • ebd67d7c5863a5119d7d201c2ceb7c7c1f976b96
  • master default protected
  • dev
  • gh-pages
4 results

index.html

Blame
  • Martin Weise's avatar
    Deployed bdecc6cd to latest with MkDocs 1.4.3 and mike 1.1.2
    Martin Weise authored
    ebd67d7c
    History
    index.html 63.91 KiB
    
    <!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="author" content="Martin Weise">
          
          
          
            <link rel="prev" href="../customization/">
          
          
            <link rel="next" href="../publications/">
          
          <link rel="icon" href="../images/signet_white.png">
          <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.12">
        
        
          
            <title>System - Database Repository</title>
          
        
        
          <link rel="stylesheet" href="../assets/stylesheets/main.85bb2934.min.css">
          
            
            <link rel="stylesheet" href="../assets/stylesheets/palette.a6bdf11c.min.css">
          
          
    
        
        
        
          
            
            
            <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
            <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=IBM+Plex+Serif:300,300i,400,400i,700,700i%7CIBM+Plex+Mono:400,400i,700,700i&display=fallback">
            <style>:root{--md-text-font:"IBM Plex Serif";--md-code-font:"IBM Plex Mono"}</style>
          
        
        
          <link rel="stylesheet" href="../stylesheets/extra.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>
        
          
    
        
        
        
      </head>
      
      
        
        
        
        
        
        <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="indigo">
      
        
        
        <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="#system" class="md-skip">
              Skip to content
            </a>
          
        </div>
        <div data-md-component="announce">
          
        </div>
        
          <div data-md-color-scheme="default" data-md-component="outdated" hidden>
            
          </div>
        
        
          
    
      
    
    <header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
      <nav class="md-header__inner md-grid" aria-label="Header">
        <a href="https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/" title="Database Repository" class="md-header__button md-logo" aria-label="Database Repository" data-md-component="logo">
          
      <img src="../images/signet_white.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"/></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">
                Database Repository
              </span>
            </div>
            <div class="md-header__topic" data-md-component="header-topic">
              <span class="md-ellipsis">
                
                  System
                
              </span>
            </div>
          </div>
        </div>
        
          
        
        
        
          <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"/></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"/></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"/></svg>
          </label>
          <nav class="md-search__options" aria-label="Search">
            
            <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"/></svg>
            </button>
          </nav>
          
        </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://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services" 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.4.0 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 2023 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"/></svg>
      </div>
      <div class="md-source__repository">
        fda-services
      </div>
    </a>
          </div>
        
      </nav>
      
        
          
    <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="../get-started/" class="md-tabs__link">
          Get Started
        </a>
      </li>
    
          
            
      
      
    
    
      <li class="md-tabs__item">
        <a href="../customization/" class="md-tabs__link">
          Customization
        </a>
      </li>
    
          
            
      
      
        
      
    
    
      <li class="md-tabs__item">
        <a href="./" class="md-tabs__link md-tabs__link--active">
          System
        </a>
      </li>
    
          
            
      
      
    
    
      <li class="md-tabs__item">
        <a href="../publications/" class="md-tabs__link">
          Publications
        </a>
      </li>
    
          
            
      
      
    
    
      <li class="md-tabs__item">
        <a href="../contact/" class="md-tabs__link">
          Contact
        </a>
      </li>
    
          
        </ul>
      </div>
    </nav>
        
      
    </header>
        
        <div class="md-container" data-md-component="container">
          
          
            
          
          <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" hidden>
                    <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="https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/" title="Database Repository" class="md-nav__button md-logo" aria-label="Database Repository" data-md-component="logo">
          
      <img src="../images/signet_white.png" alt="logo">
    
        </a>
        Database Repository
      </label>
      
        <div class="md-nav__source">
          <a href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services" 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.4.0 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 2023 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"/></svg>
      </div>
      <div class="md-source__repository">
        fda-services
      </div>
    </a>
        </div>
      
      <ul class="md-nav__list" data-md-scrollfix>
        
          
          
          
    
      
      
      
        <li class="md-nav__item">
          <a href=".." class="md-nav__link">
            Home
          </a>
        </li>
      
    
        
          
          
          
    
      
      
      
        <li class="md-nav__item">
          <a href="../get-started/" class="md-nav__link">
            Get Started
          </a>
        </li>
      
    
        
          
          
          
    
      
      
      
        <li class="md-nav__item">
          <a href="../customization/" class="md-nav__link">
            Customization
          </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">
              System
              <span class="md-nav__icon md-icon"></span>
            </label>
          
          <a href="./" class="md-nav__link md-nav__link--active">
            System
          </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="#architecture" class="md-nav__link">
        Architecture
      </a>
      
    </li>
          
            <li class="md-nav__item">
      <a href="#services" class="md-nav__link">
        Services
      </a>
      
        <nav class="md-nav" aria-label="Services">
          <ul class="md-nav__list">
            
              <li class="md-nav__item">
      <a href="#analyse-service" class="md-nav__link">
        Analyse Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#authentication-service" class="md-nav__link">
        Authentication Service
      </a>
      
        <nav class="md-nav" aria-label="Authentication Service">
          <ul class="md-nav__list">
            
              <li class="md-nav__item">
      <a href="#groups" class="md-nav__link">
        Groups
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#roles" class="md-nav__link">
        Roles
      </a>
      
        <nav class="md-nav" aria-label="Roles">
          <ul class="md-nav__list">
            
              <li class="md-nav__item">
      <a href="#default-container-handling" class="md-nav__link">
        Default Container Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#default-database-handling" class="md-nav__link">
        Default Database Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#default-table-handling" class="md-nav__link">
        Default Table Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#default-query-handling" class="md-nav__link">
        Default Query Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#default-identifier-handling" class="md-nav__link">
        Default Identifier Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#default-user-handling" class="md-nav__link">
        Default User Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#default-maintenance-handling" class="md-nav__link">
        Default Maintenance Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#default-semantics-handling" class="md-nav__link">
        Default Semantics Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#escalated-user-handling" class="md-nav__link">
        Escalated User Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#escalated-container-handling" class="md-nav__link">
        Escalated Container Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#escalated-database-handling" class="md-nav__link">
        Escalated Database Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#escalated-table-handling" class="md-nav__link">
        Escalated Table Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#escalated-query-handling" class="md-nav__link">
        Escalated Query Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#escalated-identifier-handling" class="md-nav__link">
        Escalated Identifier Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#escalated-semantics-handling" class="md-nav__link">
        Escalated Semantics Handling
      </a>
      
    </li>
            
          </ul>
        </nav>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#api" class="md-nav__link">
        API
      </a>
      
        <nav class="md-nav" aria-label="API">
          <ul class="md-nav__list">
            
              <li class="md-nav__item">
      <a href="#obtain-access-token" class="md-nav__link">
        Obtain Access Token
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#refresh-access-token" class="md-nav__link">
        Refresh Access Token
      </a>
      
    </li>
            
          </ul>
        </nav>
      
    </li>
            
          </ul>
        </nav>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#broker-service" class="md-nav__link">
        Broker Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#container-service" class="md-nav__link">
        Container Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#database-service" class="md-nav__link">
        Database Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#gateway-service" class="md-nav__link">
        Gateway Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#identifier-service" class="md-nav__link">
        Identifier Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#metadata-database" class="md-nav__link">
        Metadata Database
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#metadata-service" class="md-nav__link">
        Metadata Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#query-service" class="md-nav__link">
        Query Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#search-database" class="md-nav__link">
        Search Database
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#semantics-service" class="md-nav__link">
        Semantics Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#table-service" class="md-nav__link">
        Table Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#ui" class="md-nav__link">
        UI
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#user-service" class="md-nav__link">
        User Service
      </a>
      
    </li>
            
          </ul>
        </nav>
      
    </li>
          
        </ul>
      
    </nav>
          
        </li>
      
    
        
          
          
          
    
      
      
      
        <li class="md-nav__item">
          <a href="../publications/" class="md-nav__link">
            Publications
          </a>
        </li>
      
    
        
          
          
          
    
      
      
      
        <li class="md-nav__item">
          <a href="../contact/" class="md-nav__link">
            Contact
          </a>
        </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="#architecture" class="md-nav__link">
        Architecture
      </a>
      
    </li>
          
            <li class="md-nav__item">
      <a href="#services" class="md-nav__link">
        Services
      </a>
      
        <nav class="md-nav" aria-label="Services">
          <ul class="md-nav__list">
            
              <li class="md-nav__item">
      <a href="#analyse-service" class="md-nav__link">
        Analyse Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#authentication-service" class="md-nav__link">
        Authentication Service
      </a>
      
        <nav class="md-nav" aria-label="Authentication Service">
          <ul class="md-nav__list">
            
              <li class="md-nav__item">
      <a href="#groups" class="md-nav__link">
        Groups
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#roles" class="md-nav__link">
        Roles
      </a>
      
        <nav class="md-nav" aria-label="Roles">
          <ul class="md-nav__list">
            
              <li class="md-nav__item">
      <a href="#default-container-handling" class="md-nav__link">
        Default Container Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#default-database-handling" class="md-nav__link">
        Default Database Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#default-table-handling" class="md-nav__link">
        Default Table Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#default-query-handling" class="md-nav__link">
        Default Query Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#default-identifier-handling" class="md-nav__link">
        Default Identifier Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#default-user-handling" class="md-nav__link">
        Default User Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#default-maintenance-handling" class="md-nav__link">
        Default Maintenance Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#default-semantics-handling" class="md-nav__link">
        Default Semantics Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#escalated-user-handling" class="md-nav__link">
        Escalated User Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#escalated-container-handling" class="md-nav__link">
        Escalated Container Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#escalated-database-handling" class="md-nav__link">
        Escalated Database Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#escalated-table-handling" class="md-nav__link">
        Escalated Table Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#escalated-query-handling" class="md-nav__link">
        Escalated Query Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#escalated-identifier-handling" class="md-nav__link">
        Escalated Identifier Handling
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#escalated-semantics-handling" class="md-nav__link">
        Escalated Semantics Handling
      </a>
      
    </li>
            
          </ul>
        </nav>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#api" class="md-nav__link">
        API
      </a>
      
        <nav class="md-nav" aria-label="API">
          <ul class="md-nav__list">
            
              <li class="md-nav__item">
      <a href="#obtain-access-token" class="md-nav__link">
        Obtain Access Token
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#refresh-access-token" class="md-nav__link">
        Refresh Access Token
      </a>
      
    </li>
            
          </ul>
        </nav>
      
    </li>
            
          </ul>
        </nav>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#broker-service" class="md-nav__link">
        Broker Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#container-service" class="md-nav__link">
        Container Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#database-service" class="md-nav__link">
        Database Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#gateway-service" class="md-nav__link">
        Gateway Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#identifier-service" class="md-nav__link">
        Identifier Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#metadata-database" class="md-nav__link">
        Metadata Database
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#metadata-service" class="md-nav__link">
        Metadata Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#query-service" class="md-nav__link">
        Query Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#search-database" class="md-nav__link">
        Search Database
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#semantics-service" class="md-nav__link">
        Semantics Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#table-service" class="md-nav__link">
        Table Service
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#ui" class="md-nav__link">
        UI
      </a>
      
    </li>
            
              <li class="md-nav__item">
      <a href="#user-service" class="md-nav__link">
        User Service
      </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">
                    
                      
    
    
    <h1 id="system">System<a class="headerlink" href="#system" title="Permanent link">&para;</a></h1>
    <div class="admonition info">
    <p class="admonition-title">Abstract</p>
    <p>This is the full system description from a technical/developer view.</p>
    </div>
    <p>We invite all open-source developers to help us fixing bugs and introducing features to the source code. Get involved by
    sending a mail to Prof. Andreas Rauber and Projektass. Martin Weise.</p>
    <h2 id="architecture">Architecture<a class="headerlink" href="#architecture" title="Permanent link">&para;</a></h2>
    <p>The repository is designed as a microservice architecture to ensure scalability and the utilization of various
    technologies. The conceptualized microservices operate the basic database operations, data versioning as well as
    <em>findability</em>, <em>accessability</em>, <em>interoperability</em> and <em>reuseability</em> (FAIR).</p>
    <figure>
    <p><img alt="DBRepo architecture" src="../images/architecture.png" /></p>
    <figcaption>Architecture</figcaption>
    </figure>
    <h2 id="services">Services<a class="headerlink" href="#services" title="Permanent link">&para;</a></h2>
    <p>View the docker images for the documentation of the service.</p>
    <h3 id="analyse-service">Analyse Service<a class="headerlink" href="#analyse-service" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 5000/tcp</li>
    <li>Prometheus: <code>http://:5000/metrics</code></li>
    <li>Swagger UI: <code>http://:5000/swagger-ui/index.html</code> <a href="/infrastructures/dbrepo/swagger/analyse" target="_blank"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 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 2023 Fonticons, Inc.--><path d="M384 32c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96c0-35.3 28.7-64 64-64h320zm-64 281.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6 0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3c-3.7 3.7-5.7 8.6-5.7 13.7s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6 12.5 0 22.6-10.1 22.6-22.6z"/></svg></span> view online</a></li>
    </ul>
    </div>
    <p>It suggests data types for the FAIR Portal when creating a table from a <em>comma separated values</em> (CSV) file. It
    recommends enumerations for columns and returns e.g. a list of potential primary key candidates. The researcher is able
    to confirm these suggestions manually. Moreover, the <em>Analyze Service</em> determines basic statistical properties of
    numerical columns.</p>
    <h3 id="authentication-service">Authentication Service<a class="headerlink" href="#authentication-service" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 8080/tcp, 8443/tcp</li>
    <li>Admin Console: <code>http://:8443/</code></li>
    </ul>
    </div>
    <p>Very specific to the deployment of the organization. In our reference implementation we implement a <em>security assertion
    markup language</em> (SAML) service provider and use our institutional SAML identity provider for obtaining account data
    through an encrypted channel.</p>
    <p>From version 1.2 onwards we use Keycloak for authentication and deprecated the previous Spring Boot application.
    Consequently,
    the authentication will be through Keycloak.</p>
    <div class="admonition warning">
    <p class="admonition-title">Unsupported Keycloak features</p>
    <p>Due to no demand at the time, we currently do not support the following Keycloak features:</p>
    <ul>
    <li>E-Mail verification</li>
    <li>Temporary passwords</li>
    </ul>
    </div>
    <p>By default, the Authentication Service comes with a self-signed certificate valid 3 months from build date. For
    deployment it is <em>highly encouraged</em> to use your own certificate, properly issued by a trusted PKI, e.g. G&#201;ANT. For
    local deployments you can use the self-signed certificate. You need to accept the risk in most browsers when visiting
    the <a href="https://localhost:8443/admin/">admin panel</a>.</p>
    <p>Sign in with the default credentials (username <code>fda</code>, password <code>fda</code>) or the one you configured during set-up. Be
    default, users are created using the frontend and the sign-up page. But it is also possible to create users from
    Keycloak, they will still act as "self-sign-up" created users. Since we do not support all features of Keycloak, leave
    out required user actions as they will not be enforced, also the temporary password.</p>
    <p>Each user has attributes associated to them. In case you manually create a user in Keycloak directly, you need to add
    them in Users &gt; Add user &gt; Attributes:</p>
    <ul>
    <li><code>theme_dark</code> (<em>boolean</em>, default: false)</li>
    <li><code>orcid</code> (<em>string</em>)</li>
    <li><code>affiliation</code> (<em>string</em>)</li>
    </ul>
    <h4 id="groups">Groups<a class="headerlink" href="#groups" title="Permanent link">&para;</a></h4>
    <p>The authorization scheme follows a group-based access control (GBAC). Users are organized in three distinct
    (non-overlapping) groups:</p>
    <ol>
    <li>Researchers (<em>default</em>)</li>
    <li>Developers</li>
    <li>Data Stewards</li>
    </ol>
    <p>Based on the membership in one of these groups, the user is assigned a set of roles that authorize specific actions. By
    default, all users are assigned to the <code>researchers</code> group.</p>
    <h4 id="roles">Roles<a class="headerlink" href="#roles" title="Permanent link">&para;</a></h4>
    <p>We organize the roles into default- and escalated composite roles. There are three composite roles, one for each group.
    Each of the composite role has a set of other associated composite roles.</p>
    <figure>
    <p><img alt="" src="../images/groups-roles.png" /></p>
    <figcaption>Three groups (Researchers, Developers, Data Stewards) and their composite roles associated.</figcaption>
    </figure>
    <p>There is one role for one specific action in the services. For example: the <code>create-database</code> role authorizes a user to
    create a database in a Docker container. Therefore,
    the <a href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/blob/a5bdd1e2169bae6497e2f7eee82dad8b9b059850/fda-database-service/rest-service/src/main/java/at/tuwien/endpoints/DatabaseEndpoint.java#L78"><code>DatabaseEndpoint.java</code></a>
    endpoint requires a JWT access token with this authority.</p>
    <div class="highlight"><pre><span></span><code><span class="nd">@PostMapping</span>
    <span class="nd">@PreAuthorize</span><span class="p">(</span><span class="s">&quot;hasAuthority(&#39;create-database&#39;)&quot;</span><span class="p">)</span>
    <span class="kd">public</span><span class="w"> </span><span class="n">ResponseEntity</span><span class="o">&lt;</span><span class="n">DatabaseBriefDto</span><span class="o">&gt;</span><span class="w"> </span><span class="nf">create</span><span class="p">(</span><span class="nd">@NotNull</span><span class="w"> </span><span class="n">Long</span><span class="w"> </span><span class="n">containerId</span><span class="p">,</span>
    <span class="w">                                               </span><span class="nd">@Valid</span><span class="w"> </span><span class="nd">@RequestBody</span><span class="w"> </span><span class="n">DatabaseCreateDto</span><span class="w"> </span><span class="n">createDto</span><span class="p">,</span>
    <span class="w">                                               </span><span class="nd">@NotNull</span><span class="w"> </span><span class="n">Principal</span><span class="w"> </span><span class="n">principal</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
    <span class="p">...</span>
    <span class="p">}</span>
    </code></pre></div>
    <h5 id="default-container-handling">Default Container Handling<a class="headerlink" href="#default-container-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td><code>create-container</code></td>
    <td>Can create a container</td>
    </tr>
    <tr>
    <td><code>find-container</code></td>
    <td>Can find a specific container</td>
    </tr>
    <tr>
    <td><code>list-containers</code></td>
    <td>Can list all containers</td>
    </tr>
    <tr>
    <td><code>modify-container-state</code></td>
    <td>Can start and stop the own container</td>
    </tr>
    </tbody>
    </table>
    <h5 id="default-database-handling">Default Database Handling<a class="headerlink" href="#default-database-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td><code>check-database-access</code></td>
    <td>Can check the access to a database of a user</td>
    </tr>
    <tr>
    <td><code>create-database</code></td>
    <td>Can create a database</td>
    </tr>
    <tr>
    <td><code>create-database-access</code></td>
    <td>Can give a new access to a database of a user</td>
    </tr>
    <tr>
    <td><code>delete-database-access</code></td>
    <td>Can delete the access to a database of a user</td>
    </tr>
    <tr>
    <td><code>find-database</code></td>
    <td>Can find a specific database in a container</td>
    </tr>
    <tr>
    <td><code>list-databases</code></td>
    <td>Can list all databases in a container</td>
    </tr>
    <tr>
    <td><code>modify-database-visibility</code></td>
    <td>Can modify the database visibility (public, private)</td>
    </tr>
    <tr>
    <td><code>modify-database-owner</code></td>
    <td>Can modify the database owner</td>
    </tr>
    <tr>
    <td><code>update-database-access</code></td>
    <td>Can update the access to a database of a user</td>
    </tr>
    </tbody>
    </table>
    <h5 id="default-table-handling">Default Table Handling<a class="headerlink" href="#default-table-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td><code>create-table</code></td>
    <td>Can create a table</td>
    </tr>
    <tr>
    <td><code>find-tables</code></td>
    <td>Can list a specific table in a database</td>
    </tr>
    <tr>
    <td><code>list-tables</code></td>
    <td>Can list all tables</td>
    </tr>
    <tr>
    <td><code>modify-table-column-semantics</code></td>
    <td>Can modify the column semantics of a specific column</td>
    </tr>
    </tbody>
    </table>
    <h5 id="default-query-handling">Default Query Handling<a class="headerlink" href="#default-query-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td><code>create-database-view</code></td>
    <td>Can create a view in a database</td>
    </tr>
    <tr>
    <td><code>delete-database-view</code></td>
    <td>Can delete a view in a database</td>
    </tr>
    <tr>
    <td><code>delete-table-data</code></td>
    <td>Can delete data in a table</td>
    </tr>
    <tr>
    <td><code>execute-query</code></td>
    <td>Can execute a query statement</td>
    </tr>
    <tr>
    <td><code>export-query-data</code></td>
    <td>Can export the data that a query has produced</td>
    </tr>
    <tr>
    <td><code>export-table-data</code></td>
    <td>Can export the data stored in a table</td>
    </tr>
    <tr>
    <td><code>find-database-view</code></td>
    <td>Can find a specific database view</td>
    </tr>
    <tr>
    <td><code>find-query</code></td>
    <td>Can find a specific query in the query store</td>
    </tr>
    <tr>
    <td><code>insert-table-data</code></td>
    <td>Can insert data into a table</td>
    </tr>
    <tr>
    <td><code>list-database-views</code></td>
    <td>Can list all database views</td>
    </tr>
    <tr>
    <td><code>list-queries</code></td>
    <td>Can list all queries in the query store</td>
    </tr>
    <tr>
    <td><code>persist-query</code></td>
    <td>Can persist a query in the query store</td>
    </tr>
    <tr>
    <td><code>re-execute-query</code></td>
    <td>Can re-execute a query to reproduce a result</td>
    </tr>
    <tr>
    <td><code>view-database-view-data</code></td>
    <td>Can view the data produced by a database view</td>
    </tr>
    <tr>
    <td><code>view-table-data</code></td>
    <td>Can view the data in a table</td>
    </tr>
    <tr>
    <td><code>view-table-history</code></td>
    <td>Can view the data history of a table</td>
    </tr>
    </tbody>
    </table>
    <h5 id="default-identifier-handling">Default Identifier Handling<a class="headerlink" href="#default-identifier-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td><code>create-identifier</code></td>
    <td>Can create an identifier (subset, database)</td>
    </tr>
    <tr>
    <td><code>find-identifier</code></td>
    <td>Can find a specific identifier</td>
    </tr>
    <tr>
    <td><code>list-identifier</code></td>
    <td>Can list all identifiers</td>
    </tr>
    </tbody>
    </table>
    <h5 id="default-user-handling">Default User Handling<a class="headerlink" href="#default-user-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td><code>modify-user-theme</code></td>
    <td>Can modify the user theme (light, dark)</td>
    </tr>
    <tr>
    <td><code>modify-user-information</code></td>
    <td>Can modify the user information</td>
    </tr>
    </tbody>
    </table>
    <h5 id="default-maintenance-handling">Default Maintenance Handling<a class="headerlink" href="#default-maintenance-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td><code>create-maintenance-message</code></td>
    <td>Can create a maintenance message banner</td>
    </tr>
    <tr>
    <td><code>delete-maintenance-message</code></td>
    <td>Can delete a maintenance message banner</td>
    </tr>
    <tr>
    <td><code>find-maintenance-message</code></td>
    <td>Can find a maintenance message banner</td>
    </tr>
    <tr>
    <td><code>list-maintenance-messages</code></td>
    <td>Can list all maintenance message banners</td>
    </tr>
    <tr>
    <td><code>update-maintenance-message</code></td>
    <td>Can update a maintenance message banner</td>
    </tr>
    </tbody>
    </table>
    <h5 id="default-semantics-handling">Default Semantics Handling<a class="headerlink" href="#default-semantics-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td><code>create-semantic-unit</code></td>
    <td>Can save a previously unknown unit for a table column</td>
    </tr>
    <tr>
    <td><code>create-semantic-concept</code></td>
    <td>Can save a previously unknown concept for a table column</td>
    </tr>
    <tr>
    <td><code>execute-semantic-query</code></td>
    <td>Can query remote SPARQL endpoints to get labels and description</td>
    </tr>
    <tr>
    <td><code>table-semantic-analyse</code></td>
    <td>Can automatically suggest units and concepts for a table</td>
    </tr>
    </tbody>
    </table>
    <h5 id="escalated-user-handling">Escalated User Handling<a class="headerlink" href="#escalated-user-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td><code>find-user</code></td>
    <td>Can list user information for a specific user</td>
    </tr>
    </tbody>
    </table>
    <h5 id="escalated-container-handling">Escalated Container Handling<a class="headerlink" href="#escalated-container-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td><code>delete-container</code></td>
    <td>Can delete any container</td>
    </tr>
    <tr>
    <td><code>modify-foreign-container-state</code></td>
    <td>Can modify any container state (start, stop)</td>
    </tr>
    </tbody>
    </table>
    <h5 id="escalated-database-handling">Escalated Database Handling<a class="headerlink" href="#escalated-database-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td><code>delete-database</code></td>
    <td>Can delete any database in any container</td>
    </tr>
    </tbody>
    </table>
    <h5 id="escalated-table-handling">Escalated Table Handling<a class="headerlink" href="#escalated-table-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td><code>delete-table</code></td>
    <td>Can delete any table in any database</td>
    </tr>
    </tbody>
    </table>
    <h5 id="escalated-query-handling">Escalated Query Handling<a class="headerlink" href="#escalated-query-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td>/</td>
    <td></td>
    </tr>
    </tbody>
    </table>
    <h5 id="escalated-identifier-handling">Escalated Identifier Handling<a class="headerlink" href="#escalated-identifier-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td><code>create-foreign-identifier</code></td>
    <td>Can create an identifier to any database or query</td>
    </tr>
    <tr>
    <td><code>delete-identifier</code></td>
    <td>Can delete any identifier</td>
    </tr>
    <tr>
    <td><code>modify-identifier-metadata</code></td>
    <td>Can modify any identifier metadata</td>
    </tr>
    </tbody>
    </table>
    <h5 id="escalated-semantics-handling">Escalated Semantics Handling<a class="headerlink" href="#escalated-semantics-handling" title="Permanent link">&para;</a></h5>
    <table>
    <thead>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td><code>create-ontology</code></td>
    <td>Can register a new ontology</td>
    </tr>
    <tr>
    <td><code>delete-ontology</code></td>
    <td>Can unregister an ontology</td>
    </tr>
    <tr>
    <td><code>list-ontologies</code></td>
    <td>Can list all ontologies</td>
    </tr>
    <tr>
    <td><code>modify-foreign-table-column-semantics</code></td>
    <td>Can modify any table column concept and unit</td>
    </tr>
    <tr>
    <td><code>update-ontology</code></td>
    <td>Can update ontology metadata</td>
    </tr>
    <tr>
    <td><code>update-semantic-concept</code></td>
    <td>Can update own table column concept</td>
    </tr>
    <tr>
    <td><code>update-semantic-unit</code></td>
    <td>Can update own table column unit</td>
    </tr>
    </tbody>
    </table>
    <h4 id="api">API<a class="headerlink" href="#api" title="Permanent link">&para;</a></h4>
    <h5 id="obtain-access-token">Obtain Access Token<a class="headerlink" href="#obtain-access-token" title="Permanent link">&para;</a></h5>
    <p>Access tokens are needed for almost all operations.</p>
    <div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Terminal</label><label for="__tabbed_1_2">Python</label></div>
    <div class="tabbed-content">
    <div class="tabbed-block">
    <div class="highlight"><pre><span></span><code><span class="go">curl -X POST \</span>
    <span class="go">  -d &quot;username=foo&amp;password=bar&amp;grant_type=password&amp;client_id=dbrepo-client&amp;scope=openid&amp;client_secret=MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG&quot; \</span>
    <span class="go">  http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token</span>
    </code></pre></div>
    </div>
    <div class="tabbed-block">
    <div class="highlight"><pre><span></span><code><span class="kn">import</span> <span class="nn">requests</span>
    
    <span class="n">auth</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s2">&quot;http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token&quot;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="p">{</span>
        <span class="s2">&quot;username&quot;</span><span class="p">:</span> <span class="s2">&quot;foo&quot;</span><span class="p">,</span>
        <span class="s2">&quot;password&quot;</span><span class="p">:</span> <span class="s2">&quot;bar&quot;</span><span class="p">,</span>
        <span class="s2">&quot;grant_type&quot;</span><span class="p">:</span> <span class="s2">&quot;password&quot;</span><span class="p">,</span>
        <span class="s2">&quot;client_id&quot;</span><span class="p">:</span> <span class="s2">&quot;dbrepo-client&quot;</span><span class="p">,</span>
        <span class="s2">&quot;scope&quot;</span><span class="p">:</span> <span class="s2">&quot;openid&quot;</span><span class="p">,</span>
        <span class="s2">&quot;client_secret&quot;</span><span class="p">:</span> <span class="s2">&quot;MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG&quot;</span>
    <span class="p">})</span>
    <span class="nb">print</span><span class="p">(</span><span class="n">auth</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">&quot;access_token&quot;</span><span class="p">])</span>
    </code></pre></div>
    </div>
    </div>
    </div>
    <h5 id="refresh-access-token">Refresh Access Token<a class="headerlink" href="#refresh-access-token" title="Permanent link">&para;</a></h5>
    <p>Using the response from above, a new access token can be created via the refresh token provided.</p>
    <div class="tabbed-set tabbed-alternate" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Terminal</label><label for="__tabbed_2_2">Python</label></div>
    <div class="tabbed-content">
    <div class="tabbed-block">
    <div class="highlight"><pre><span></span><code><span class="go">curl -X POST \</span>
    <span class="go">  -d &quot;grant_type=refresh_token&amp;client_id=dbrepo-client&amp;refresh_token=THE_REFRESH_TOKEN&amp;client_secret=MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG&quot; \</span>
    <span class="go">  http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token</span>
    </code></pre></div>
    </div>
    <div class="tabbed-block">
    <div class="highlight"><pre><span></span><code><span class="kn">import</span> <span class="nn">requests</span>
    
    <span class="n">auth</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s2">&quot;http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token&quot;</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="p">{</span>
        <span class="s2">&quot;grant_type&quot;</span><span class="p">:</span> <span class="s2">&quot;refresh_token&quot;</span><span class="p">,</span>
        <span class="s2">&quot;client_id&quot;</span><span class="p">:</span> <span class="s2">&quot;dbrepo-client&quot;</span><span class="p">,</span>
        <span class="s2">&quot;client_secret&quot;</span><span class="p">:</span> <span class="s2">&quot;MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG&quot;</span><span class="p">,</span>
        <span class="s2">&quot;refresh_token&quot;</span><span class="p">:</span> <span class="s2">&quot;THE_REFRESH_TOKEN&quot;</span>
    <span class="p">})</span>
    <span class="nb">print</span><span class="p">(</span><span class="n">auth</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s2">&quot;access_token&quot;</span><span class="p">])</span>
    </code></pre></div>
    </div>
    </div>
    </div>
    <h3 id="broker-service">Broker Service<a class="headerlink" href="#broker-service" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 5672/tcp, 15672/tcp</li>
    <li>RabbitMQ Management Plugin: <code>http://:15672</code></li>
    <li>RabbitMQ Prometheus Plugin: <code>http://:15692/metrics</code></li>
    </ul>
    </div>
    <p>It holds exchanges and topics responsible for holding AMQP messages for later consumption. We
    use <a href="https://www.rabbitmq.com/">RabbitMQ</a> in the implementation. The AMQP endpoint listens to port <code>5672</code> for
    regular declares and offers a management interface at port <code>15672</code>.</p>
    <p>The default credentials are:</p>
    <ul>
    <li>Username: <code>fda</code></li>
    <li>Password: <code>fda</code></li>
    </ul>
    <h3 id="container-service">Container Service<a class="headerlink" href="#container-service" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 9091/tcp</li>
    <li>Info: <code>http://:9091/actuator/info</code></li>
    <li>Health: <code>http://:9091/actuator/health</code></li>
    <li>Prometheus: <code>http://:9091/actuator/prometheus</code></li>
    <li>Swagger UI: <code>http://:9091/swagger-ui/index.html</code> <a href="/infrastructures/dbrepo/swagger/container" target="_blank"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 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 2023 Fonticons, Inc.--><path d="M384 32c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96c0-35.3 28.7-64 64-64h320zm-64 281.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6 0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3c-3.7 3.7-5.7 8.6-5.7 13.7s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6 12.5 0 22.6-10.1 22.6-22.6z"/></svg></span> view online</a></li>
    </ul>
    </div>
    <p>It is responsible for Docker container lifecycle operations and updating the local copy of the Docker images.</p>
    <h3 id="database-service">Database Service<a class="headerlink" href="#database-service" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 9092/tcp</li>
    <li>Info: <code>http://:9092/actuator/info</code></li>
    <li>Health: <code>http://:9092/actuator/health</code></li>
    <li>Prometheus: <code>http://:9092/actuator/prometheus</code></li>
    <li>Swagger UI: <code>http://:9092/swagger-ui/index.html</code> <a href="/infrastructures/dbrepo/swagger/database" target="_blank"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 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 2023 Fonticons, Inc.--><path d="M384 32c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96c0-35.3 28.7-64 64-64h320zm-64 281.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6 0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3c-3.7 3.7-5.7 8.6-5.7 13.7s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6 12.5 0 22.6-10.1 22.6-22.6z"/></svg></span> view online</a></li>
    </ul>
    </div>
    <p>It creates the databases inside a Docker container and the Query Store. Currently, we only
    support <a href="https://mariadb.org/">MariaDB</a> images that allow table versioning with low programmatic effort.</p>
    <h3 id="gateway-service">Gateway Service<a class="headerlink" href="#gateway-service" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 9095/tcp</li>
    <li>Info: <code>http://:9095/actuator/info</code></li>
    <li>Health: <code>http://:9095/actuator/health</code></li>
    <li>Prometheus: <code>http://:9095/actuator/prometheus</code></li>
    </ul>
    </div>
    <p>Provides a single point of access to the <em>application programming interface</em> (API) and configures a 
    standard <a href="https://www.nginx.com/">NGINX</a> reverse proxy for load balancing, SSL/TLS configuration.</p>
    <h3 id="identifier-service">Identifier Service<a class="headerlink" href="#identifier-service" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 9096/tcp</li>
    <li>Info: <code>http://:9096/actuator/info</code></li>
    <li>Health: <code>http://:9096/actuator/health</code></li>
    <li>Prometheus: <code>http://:9096/actuator/prometheus</code></li>
    <li>Swagger UI: <code>http://:9096/swagger-ui/index.html</code> <a href="/infrastructures/dbrepo/swagger/identifier" target="_blank"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 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 2023 Fonticons, Inc.--><path d="M384 32c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96c0-35.3 28.7-64 64-64h320zm-64 281.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6 0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3c-3.7 3.7-5.7 8.6-5.7 13.7s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6 12.5 0 22.6-10.1 22.6-22.6z"/></svg></span> view online</a></li>
    </ul>
    </div>
    <p>This microservice is responsible for creating and resolving a <em>persistent identifier</em> (PID) attached to a query to
    obtain the metadata attached to it and allow re-execution of a query. We store both the query and hashes of the query
    and result set to allow equality checks of the originally obtained result set and the currently obtained result set. In
    the reference implementation we currently only use a numerical id column and plan to integrate <em>digital object
    identifier</em> (DOI) through our institutional library soon.</p>
    <h3 id="metadata-database">Metadata Database<a class="headerlink" href="#metadata-database" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 3306/tcp, 9100/tcp</li>
    <li>Prometheus: <code>http://:9100/metrics</code></li>
    </ul>
    </div>
    <p>It is the core component of the project. It is a relational database that contains metadata about all researcher
    databases
    created in the database repository like column names, check expressions, value enumerations or key/value constraints and
    relevant data for citing data sets. Additionally, the concept, e.g. URI of units of measurements of numerical columns is
    stored in the Metadata Database in order to provide semantic knowledge context. We use MariaDB for its rich capabilities
    in the reference implementation.</p>
    <p>The default credentials are <code>root:dbrepo</code> for the database <code>fda</code>. Connect to the database via the JDBC connector on
    port <code>3306</code>.</p>
    <h3 id="metadata-service">Metadata Service<a class="headerlink" href="#metadata-service" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 9099/tcp</li>
    <li>Info: <code>http://:9099/actuator/info</code></li>
    <li>Health: <code>http://:9099/actuator/health</code></li>
    <li>Prometheus: <code>http://:9099/actuator/prometheus</code></li>
    <li>Swagger UI: <code>http://:9099/swagger-ui/index.html</code> <a href="/infrastructures/dbrepo/swagger/metadata" target="_blank"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 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 2023 Fonticons, Inc.--><path d="M384 32c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96c0-35.3 28.7-64 64-64h320zm-64 281.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6 0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3c-3.7 3.7-5.7 8.6-5.7 13.7s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6 12.5 0 22.6-10.1 22.6-22.6z"/></svg></span> view online</a></li>
    </ul>
    </div>
    <p>This service provides an OAI-PMH endpoint for metadata crawler.</p>
    <h3 id="query-service">Query Service<a class="headerlink" href="#query-service" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 9093/tcp</li>
    <li>Info: <code>http://:9093/actuator/info</code></li>
    <li>Health: <code>http://:9093/actuator/health</code></li>
    <li>Prometheus: <code>http://:9093/actuator/prometheus</code></li>
    <li>Swagger UI: <code>http://:9093/swagger-ui/index.html</code> <a href="/infrastructures/dbrepo/swagger/query" target="_blank"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 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 2023 Fonticons, Inc.--><path d="M384 32c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96c0-35.3 28.7-64 64-64h320zm-64 281.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6 0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3c-3.7 3.7-5.7 8.6-5.7 13.7s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6 12.5 0 22.6-10.1 22.6-22.6z"/></svg></span> view online</a></li>
    </ul>
    </div>
    <p>It provides an interface to insert data into the tables created by the Table Service. It also allows for view-only,
    paginated and versioned query execution to the raw data and consumes messages in the message queue from the Broker
    Service.</p>
    <h3 id="search-database">Search Database<a class="headerlink" href="#search-database" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 9200/tcp</li>
    <li>Indexes: <code>http://:9200/_all</code></li>
    <li>Health: <code>http://:9200/_cluster/health/</code></li>
    </ul>
    </div>
    <p>It processes search requests from the Gateway Service for full-text lookups in the metadata database. We use
    <a href="https://www.elastic.co/">Elasticsearch</a> in the reference implementation. The search database implements Elastic Search
    and creates a retrievable index on all databases that is getting updated with each save operation on databases in the
    metadata database.</p>
    <p>All requests need to be authenticated, by default the credentials <code>elastic:elastic</code> are used.</p>
    <h3 id="semantics-service">Semantics Service<a class="headerlink" href="#semantics-service" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 9097/tcp</li>
    <li>Info: <code>http://:9097/actuator/info</code></li>
    <li>Health: <code>http://:9097/actuator/health</code></li>
    <li>Prometheus: <code>http://:9097/actuator/prometheus</code></li>
    <li>Swagger UI: <code>http://:9097/swagger-ui/index.html</code> <a href="/infrastructures/dbrepo/swagger/semantics" target="_blank"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 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 2023 Fonticons, Inc.--><path d="M384 32c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96c0-35.3 28.7-64 64-64h320zm-64 281.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6 0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3c-3.7 3.7-5.7 8.6-5.7 13.7s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6 12.5 0 22.6-10.1 22.6-22.6z"/></svg></span> view online</a></li>
    </ul>
    </div>
    <p>It is designed to map terms in the domain of units of measurement to controlled vocabulary, modelled in
    the <a href="https://github.com/HajoRijgersberg/OM">ontology of units of measure</a>. This service validates researcher provided in
    units and provides a <em>uniform resource identifier</em> (URI) to the related concept, which will be stored in the system.
    Furthermore, there is a method for auto-completing text and listing a description as well as commonly used unit symbols.</p>
    <h3 id="table-service">Table Service<a class="headerlink" href="#table-service" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 9094/tcp</li>
    <li>Info: <code>http://:9094/actuator/info</code></li>
    <li>Health: <code>http://:9094/actuator/health</code></li>
    <li>Prometheus: <code>http://:9094/actuator/prometheus</code></li>
    <li>Swagger UI: <code>http://:9094/swagger-ui/index.html</code> <a href="/infrastructures/dbrepo/swagger/table" target="_blank"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 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 2023 Fonticons, Inc.--><path d="M384 32c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96c0-35.3 28.7-64 64-64h320zm-64 281.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6 0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3c-3.7 3.7-5.7 8.6-5.7 13.7s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6 12.5 0 22.6-10.1 22.6-22.6z"/></svg></span> view online</a></li>
    </ul>
    </div>
    <p>This microservice handles table operations inside a database that is managed by the Database Service. We
    use <a href="https://hibernate.org/orm/">Hibernate</a> for schema and data ingest operations.</p>
    <h3 id="ui">UI<a class="headerlink" href="#ui" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 3000/tcp, 9100/tcp</li>
    <li>Prometheus: <code>http://:9100/metrics</code></li>
    <li>UI: <code>http://:3000/</code></li>
    </ul>
    </div>
    <p>It provides a <em>graphical user interface</em> (GUI) for a researcher to interact with the database repository's API.</p>
    <figure>
    <p><img alt="UI microservice architecture detailed" src="../images/architecture-ui.png" /></p>
    <figcaption>Architecture of the UI microservice</figcaption>
    </figure>
    <h3 id="user-service">User Service<a class="headerlink" href="#user-service" title="Permanent link">&para;</a></h3>
    <div class="admonition debug">
    <p class="admonition-title">Debug Information</p>
    <ul>
    <li>Ports: 9098/tcp</li>
    <li>Info: <code>http://:9098/actuator/info</code></li>
    <li>Health: <code>http://:9098/actuator/health</code></li>
    <li>Prometheus: <code>http://:9098/actuator/prometheus</code></li>
    <li>Swagger UI: <code>http://:9098/swagger-ui/index.html</code> <a href="/infrastructures/dbrepo/swagger/user" target="_blank"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.4.0 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 2023 Fonticons, Inc.--><path d="M384 32c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96c0-35.3 28.7-64 64-64h320zm-64 281.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6 0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3c-3.7 3.7-5.7 8.6-5.7 13.7s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6 12.5 0 22.6-10.1 22.6-22.6z"/></svg></span> view online</a></li>
    </ul>
    </div>
    <p>This microservice handles user information.</p>
    
    
    
      
    
    
    
                    
                  </article>
                </div>
              
              
            </div>
            
          </main>
          
            <footer class="md-footer">
      
      <div class="md-footer-meta md-typeset">
        <div class="md-footer-meta__inner md-grid">
          <div class="md-copyright">
      
        <div class="md-copyright__highlight">
          CC-BY 4.0 Technische Universit&auml;t Wien & Universit&auml;t Wien
        </div>
      
      
        Made with
        <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
          Material for MkDocs
        </a>
      
    </div>
          
            <div class="md-social">
      
        
        
        
        
          
          
        
        <a href="https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services" target="_blank" rel="noopener" title="gitlab.phaidra.org" class="md-social__link">
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.0 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 2023 Fonticons, Inc.--><path d="m503.5 204.6-.7-1.8-69.7-181.78c-1.4-3.57-3.9-6.59-7.2-8.64-2.4-1.55-5.1-2.515-8-2.81-2.9-.295-5.7.083-8.4 1.11-2.7 1.02-5.1 2.66-7.1 4.78-1.9 2.12-3.3 4.67-4.1 7.44l-47 144H160.8l-47.1-144c-.8-2.77-2.2-5.31-4.1-7.43-2-2.12-4.4-3.75-7.1-4.77a18.1 18.1 0 0 0-8.38-1.113 18.4 18.4 0 0 0-8.04 2.793 18.09 18.09 0 0 0-7.16 8.64L9.267 202.8l-.724 1.8a129.57 129.57 0 0 0-3.52 82c7.747 26.9 24.047 50.7 46.447 67.6l.27.2.59.4 105.97 79.5 52.6 39.7 32 24.2c3.7 1.9 8.3 4.3 13 4.3 4.7 0 9.3-2.4 13-4.3l32-24.2 52.6-39.7 106.7-79.9.3-.3c22.4-16.9 38.7-40.6 45.6-67.5 8.6-27 7.4-55.8-2.6-82z"/></svg>
        </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": ["navigation.tabs", "navigation.tabs.sticky", "content.code.annotate"], "search": "../assets/javascripts/workers/search.208ed371.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"}, "version": {"default": "latest", "provider": "mike"}}</script>
        
        
          <script src="../assets/javascripts/bundle.c2be25ad.min.js"></script>
          
        
      </body>
    </html>