CINXE.COM
HTTP REST API - EUDAT Documentation
<!doctype html> <html lang="en" class="no-js"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <link rel="canonical" href="https://docs.eudat.eu/b2share/httpapi/"> <link rel="prev" href="../cli/"> <link rel="next" href="../faq/"> <link rel="icon" href="../../assets/images/favicon.png"> <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.3"> <title>HTTP REST API - EUDAT Documentation</title> <link rel="stylesheet" href="../../assets/stylesheets/main.d7758b05.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&display=fallback"> <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style> <link rel="stylesheet" href="../../config/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="indigo" 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="#eudat-b2share-http-rest-api" class="md-skip"> Skip to content </a> </div> <div data-md-component="announce"> </div> <header class="md-header" data-md-component="header"> <nav class="md-header__inner md-grid" aria-label="Header"> <a href="../.." title="EUDAT Documentation" class="md-header__button md-logo" aria-label="EUDAT Documentation" data-md-component="logo"> <img src="../../images/EUDAT_Partial_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 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></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"> EUDAT Documentation </span> </div> <div class="md-header__topic" data-md-component="header-topic"> <span class="md-ellipsis"> HTTP REST API </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="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0"> <label class="md-header__button md-icon" title="Switch to dark 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-1H9z"/></svg> </label> <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1"> <label class="md-header__button md-icon" title="Switch to light 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-5"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var 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(var[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.52 6.52 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 5"/></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.52 6.52 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 5"/></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 11z"/></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 12z"/></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" tabindex="0" 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> </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"> Documentation </a> </li> <li class="md-tabs__item"> <a href="../../b2access/" class="md-tabs__link"> B2ACCESS </a> </li> <li class="md-tabs__item"> <a href="../../b2drop/" class="md-tabs__link"> B2DROP </a> </li> <li class="md-tabs__item"> <a href="../../b2find/" class="md-tabs__link"> B2FIND </a> </li> <li class="md-tabs__item"> <a href="../../b2handle/" class="md-tabs__link"> B2HANDLE </a> </li> <li class="md-tabs__item"> <a href="../../b2inst/" class="md-tabs__link"> B2INST </a> </li> <li class="md-tabs__item"> <a href="../../b2safe/" class="md-tabs__link"> B2SAFE </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href="../overview/" class="md-tabs__link"> B2SHARE </a> </li> <li class="md-tabs__item"> <a href="../../datacite/" class="md-tabs__link"> DataCite </a> </li> <li class="md-tabs__item"> <a href="https://eudat.eu" class="md-tabs__link"> EUDAT website </a> </li> <li class="md-tabs__item"> <a href="https://eudat.eu/contact-support-request" class="md-tabs__link"> Feedback + Support </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 md-nav--integrated" aria-label="Navigation" data-md-level="0"> <label class="md-nav__title" for="__drawer"> <a href="../.." title="EUDAT Documentation" class="md-nav__button md-logo" aria-label="EUDAT Documentation" data-md-component="logo"> <img src="../../images/EUDAT_Partial_White.png" alt="logo"> </a> EUDAT Documentation </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../.." class="md-nav__link"> <span class="md-ellipsis"> Documentation </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"> B2ACCESS </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> B2ACCESS </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2access/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../../b2access/assurance/" class="md-nav__link"> <span class="md-ellipsis"> Assurance </span> </a> </li> <li class="md-nav__item"> <a href="../../b2access/concepts/" class="md-nav__link"> <span class="md-ellipsis"> Concepts </span> </a> </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"> For Users </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> For Users </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2access/howto-mfa/" class="md-nav__link"> <span class="md-ellipsis"> Enabling MFA </span> </a> </li> <li class="md-nav__item"> <a href="../../b2access/howto-update-email/" class="md-nav__link"> <span class="md-ellipsis"> Updating Email </span> </a> </li> <li class="md-nav__item"> <a href="../../b2access/list-of-connected-organisations/" class="md-nav__link"> <span class="md-ellipsis"> List of connected organisations </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4_4" > <label class="md-nav__link" for="__nav_2_4_4" id="__nav_2_4_4_label" tabindex="0"> <span class="md-ellipsis"> For group administrators </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_4_4"> <span class="md-nav__icon md-icon"></span> For group administrators </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2access/howto-vos/" class="md-nav__link"> <span class="md-ellipsis"> Requesting a group </span> </a> </li> <li class="md-nav__item"> <a href="../../b2access/howto-vo-management/" class="md-nav__link"> <span class="md-ellipsis"> Managing a group </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_5" > <label class="md-nav__link" for="__nav_2_4_5" id="__nav_2_4_5_label" tabindex="0"> <span class="md-ellipsis"> For Service Providers </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_4_5"> <span class="md-nav__icon md-icon"></span> For Service Providers </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2access/howto-services/" class="md-nav__link"> <span class="md-ellipsis"> Registering a services </span> </a> </li> <li class="md-nav__item"> <a href="../../b2access/attributes-sp/" class="md-nav__link"> <span class="md-ellipsis"> Available attributes </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_6" > <label class="md-nav__link" for="__nav_2_4_6" id="__nav_2_4_6_label" tabindex="0"> <span class="md-ellipsis"> For Identity Providers </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_4_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_4_6"> <span class="md-nav__icon md-icon"></span> For Identity Providers </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2access/howto-idps/" class="md-nav__link"> <span class="md-ellipsis"> Joining as an Identity Provider </span> </a> </li> <li class="md-nav__item"> <a href="../../b2access/attributes-idp/" class="md-nav__link"> <span class="md-ellipsis"> Consumed attributes </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../b2access/about/" class="md-nav__link"> <span class="md-ellipsis"> About </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_3" > <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0"> <span class="md-ellipsis"> B2DROP </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="false"> <label class="md-nav__title" for="__nav_3"> <span class="md-nav__icon md-icon"></span> B2DROP </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2drop/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item 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="0"> <span class="md-ellipsis"> For Users </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> For Users </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2drop/user/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_2" > <label class="md-nav__link" for="__nav_3_2_2" id="__nav_3_2_2_label" tabindex="0"> <span class="md-ellipsis"> For groups </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_2_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3_2_2"> <span class="md-nav__icon md-icon"></span> For groups </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2drop/groups/" class="md-nav__link"> <span class="md-ellipsis"> Overview </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_3_3" > <label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="0"> <span class="md-ellipsis"> For Administrators </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> For Administrators </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2drop/admin/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../../b2drop/b2sharebridge/" class="md-nav__link"> <span class="md-ellipsis"> Enabling the B2SHAREbridge </span> </a> </li> <li class="md-nav__item"> <a href="../../b2drop/setup/" class="md-nav__link"> <span class="md-ellipsis"> Install B2DROP </span> </a> </li> <li class="md-nav__item"> <a href="../../b2drop/integration/" class="md-nav__link"> <span class="md-ellipsis"> Integrate with B2ACCESS </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../b2drop/about/" class="md-nav__link"> <span class="md-ellipsis"> About </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" > <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0"> <span class="md-ellipsis"> B2FIND </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> B2FIND </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2find/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../../b2find/forusers/" class="md-nav__link"> <span class="md-ellipsis"> For Users </span> </a> </li> <li class="md-nav__item"> <a href="../../b2find/forproviders/" class="md-nav__link"> <span class="md-ellipsis"> For Providers </span> </a> </li> <li class="md-nav__item"> <a href="../../b2find/about/" class="md-nav__link"> <span class="md-ellipsis"> About </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_5" > <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0"> <span class="md-ellipsis"> B2HANDLE </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> B2HANDLE </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2handle/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../../b2handle/foradministrators/" class="md-nav__link"> <span class="md-ellipsis"> For Administrators </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_3" > <label class="md-nav__link" for="__nav_5_3" id="__nav_5_3_label" tabindex="0"> <span class="md-ellipsis"> For Developers </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_3"> <span class="md-nav__icon md-icon"></span> For Developers </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2handle/fordevelopers/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../../b2handle/fordevelopers_pyhandle/" class="md-nav__link"> <span class="md-ellipsis"> PyHandle for Developers </span> </a> </li> <li class="md-nav__item"> <a href="../../b2handle/fordevelopers_b2handle/" class="md-nav__link"> <span class="md-ellipsis"> B2Handle for Developers </span> </a> </li> <li class="md-nav__item"> <a href="../../b2handle/fordevelopers_api/" class="md-nav__link"> <span class="md-ellipsis"> API for Developers </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_5_4" > <label class="md-nav__link" for="__nav_5_4" id="__nav_5_4_label" tabindex="0"> <span class="md-ellipsis"> Information </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_4"> <span class="md-nav__icon md-icon"></span> Information </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2handle/ownership/" class="md-nav__link"> <span class="md-ellipsis"> Ownership </span> </a> </li> <li class="md-nav__item"> <a href="../../b2handle/security/" class="md-nav__link"> <span class="md-ellipsis"> Security </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../b2handle/more/" class="md-nav__link"> <span class="md-ellipsis"> More Info </span> </a> </li> <li class="md-nav__item"> <a href="../../b2handle/about/" class="md-nav__link"> <span class="md-ellipsis"> About </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"> B2INST </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> B2INST </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2inst/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_2" > <label class="md-nav__link" for="__nav_6_2" id="__nav_6_2_label" tabindex="0"> <span class="md-ellipsis"> For Users </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_6_2"> <span class="md-nav__icon md-icon"></span> For Users </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2inst/forusers/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../../b2inst/advancedsearch/" class="md-nav__link"> <span class="md-ellipsis"> Advanced Search </span> </a> </li> <li class="md-nav__item"> <a href="../../b2inst/httpapi/" class="md-nav__link"> <span class="md-ellipsis"> HTTP REST API </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../b2inst/foradministrators/" class="md-nav__link"> <span class="md-ellipsis"> For Administrators </span> </a> </li> <li class="md-nav__item"> <a href="../../b2inst/fordevelopers/" class="md-nav__link"> <span class="md-ellipsis"> For Developers </span> </a> </li> <li class="md-nav__item"> <a href="../../b2inst/about/" class="md-nav__link"> <span class="md-ellipsis"> About </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"> B2SAFE </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> B2SAFE </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../b2safe/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../../b2safe/forusers/" class="md-nav__link"> <span class="md-ellipsis"> For Users </span> </a> </li> <li class="md-nav__item"> <a href="../../b2safe/foradministrators/" class="md-nav__link"> <span class="md-ellipsis"> For Administrators </span> </a> </li> <li class="md-nav__item"> <a href="../../b2safe/fordevelopers/" class="md-nav__link"> <span class="md-ellipsis"> For Developers </span> </a> </li> <li class="md-nav__item"> <a href="../../b2safe/about/" class="md-nav__link"> <span class="md-ellipsis"> About </span> </a> </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_8" checked> <label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex=""> <span class="md-ellipsis"> B2SHARE </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_8"> <span class="md-nav__icon md-icon"></span> B2SHARE </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../overview/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </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_8_2" > <label class="md-nav__link" for="__nav_8_2" id="__nav_8_2_label" tabindex=""> <span class="md-ellipsis"> For Users </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_8_2"> <span class="md-nav__icon md-icon"></span> For Users </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../forusers/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../advancedsearch/" class="md-nav__link"> <span class="md-ellipsis"> Advance Search </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"> HTTP REST API </span> <span class="md-nav__icon md-icon"></span> </label> <a href="./" class="md-nav__link md-nav__link--active"> <span class="md-ellipsis"> HTTP REST API </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="#eudat-b2share-http-rest-api" class="md-nav__link"> <span class="md-ellipsis"> EUDAT B2SHARE HTTP REST API. </span> </a> <nav class="md-nav" aria-label="EUDAT B2SHARE HTTP REST API."> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#guidelines" class="md-nav__link"> <span class="md-ellipsis"> Guidelines </span> </a> </li> <li class="md-nav__item"> <a href="#the-rest-api" class="md-nav__link"> <span class="md-ellipsis"> The REST API </span> </a> </li> <li class="md-nav__item"> <a href="#basic-concepts" class="md-nav__link"> <span class="md-ellipsis"> Basic concepts </span> </a> </li> <li class="md-nav__item"> <a href="#editing-and-versioning-records" class="md-nav__link"> <span class="md-ellipsis"> Editing and versioning records </span> </a> </li> <li class="md-nav__item"> <a href="#using-the-api" class="md-nav__link"> <span class="md-ellipsis"> Using the API </span> </a> </li> <li class="md-nav__item"> <a href="#authentication" class="md-nav__link"> <span class="md-ellipsis"> Authentication </span> </a> </li> <li class="md-nav__item"> <a href="#requests" class="md-nav__link"> <span class="md-ellipsis"> Requests </span> </a> </li> <li class="md-nav__item"> <a href="#responses" class="md-nav__link"> <span class="md-ellipsis"> Responses </span> </a> </li> <li class="md-nav__item"> <a href="#a-publication-workflow" class="md-nav__link"> <span class="md-ellipsis"> A publication workflow </span> </a> </li> <li class="md-nav__item"> <a href="#migrating-to-the-b2share-v2-http-rest-api" class="md-nav__link"> <span class="md-ellipsis"> Migrating to the B2SHARE v2 HTTP REST API </span> </a> </li> <li class="md-nav__item"> <a href="#available-http-rest-api-requests" class="md-nav__link"> <span class="md-ellipsis"> Available HTTP REST API requests </span> </a> </li> <li class="md-nav__item"> <a href="#object-retrieval" class="md-nav__link"> <span class="md-ellipsis"> Object retrieval </span> </a> </li> <li class="md-nav__item"> <a href="#record-administration" class="md-nav__link"> <span class="md-ellipsis"> Record administration </span> </a> </li> <li class="md-nav__item"> <a href="#record-versioning" class="md-nav__link"> <span class="md-ellipsis"> Record versioning </span> </a> </li> <li class="md-nav__item"> <a href="#other-requests" class="md-nav__link"> <span class="md-ellipsis"> Other requests </span> </a> </li> <li class="md-nav__item"> <a href="#support" class="md-nav__link"> <span class="md-ellipsis"> Support </span> </a> </li> </ul> </nav> </li> </ul> </nav> </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_8_3" > <label class="md-nav__link" for="__nav_8_3" id="__nav_8_3_label" tabindex=""> <span class="md-ellipsis"> For Developers </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_8_3"> <span class="md-nav__icon md-icon"></span> For Developers </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../fordevelopers/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </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_8_4" checked> <label class="md-nav__link" for="__nav_8_4" id="__nav_8_4_label" tabindex=""> <span class="md-ellipsis"> For Administrators </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_4_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_8_4"> <span class="md-nav__icon md-icon"></span> For Administrators </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../foradministrators/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../cli/" class="md-nav__link"> <span class="md-ellipsis"> Command Line Interface (CLI) </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"> HTTP REST API </span> <span class="md-nav__icon md-icon"></span> </label> <a href="./" class="md-nav__link md-nav__link--active"> <span class="md-ellipsis"> HTTP REST API </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="#eudat-b2share-http-rest-api" class="md-nav__link"> <span class="md-ellipsis"> EUDAT B2SHARE HTTP REST API. </span> </a> <nav class="md-nav" aria-label="EUDAT B2SHARE HTTP REST API."> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#guidelines" class="md-nav__link"> <span class="md-ellipsis"> Guidelines </span> </a> </li> <li class="md-nav__item"> <a href="#the-rest-api" class="md-nav__link"> <span class="md-ellipsis"> The REST API </span> </a> </li> <li class="md-nav__item"> <a href="#basic-concepts" class="md-nav__link"> <span class="md-ellipsis"> Basic concepts </span> </a> </li> <li class="md-nav__item"> <a href="#editing-and-versioning-records" class="md-nav__link"> <span class="md-ellipsis"> Editing and versioning records </span> </a> </li> <li class="md-nav__item"> <a href="#using-the-api" class="md-nav__link"> <span class="md-ellipsis"> Using the API </span> </a> </li> <li class="md-nav__item"> <a href="#authentication" class="md-nav__link"> <span class="md-ellipsis"> Authentication </span> </a> </li> <li class="md-nav__item"> <a href="#requests" class="md-nav__link"> <span class="md-ellipsis"> Requests </span> </a> </li> <li class="md-nav__item"> <a href="#responses" class="md-nav__link"> <span class="md-ellipsis"> Responses </span> </a> </li> <li class="md-nav__item"> <a href="#a-publication-workflow" class="md-nav__link"> <span class="md-ellipsis"> A publication workflow </span> </a> </li> <li class="md-nav__item"> <a href="#migrating-to-the-b2share-v2-http-rest-api" class="md-nav__link"> <span class="md-ellipsis"> Migrating to the B2SHARE v2 HTTP REST API </span> </a> </li> <li class="md-nav__item"> <a href="#available-http-rest-api-requests" class="md-nav__link"> <span class="md-ellipsis"> Available HTTP REST API requests </span> </a> </li> <li class="md-nav__item"> <a href="#object-retrieval" class="md-nav__link"> <span class="md-ellipsis"> Object retrieval </span> </a> </li> <li class="md-nav__item"> <a href="#record-administration" class="md-nav__link"> <span class="md-ellipsis"> Record administration </span> </a> </li> <li class="md-nav__item"> <a href="#record-versioning" class="md-nav__link"> <span class="md-ellipsis"> Record versioning </span> </a> </li> <li class="md-nav__item"> <a href="#other-requests" class="md-nav__link"> <span class="md-ellipsis"> Other requests </span> </a> </li> <li class="md-nav__item"> <a href="#support" class="md-nav__link"> <span class="md-ellipsis"> Support </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../faq/" class="md-nav__link"> <span class="md-ellipsis"> F.A.Q.s </span> </a> </li> <li class="md-nav__item"> <a href="../about/" class="md-nav__link"> <span class="md-ellipsis"> About </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_9" > <label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0"> <span class="md-ellipsis"> DataCite </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_9"> <span class="md-nav__icon md-icon"></span> DataCite </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../datacite/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../../datacite/forusers/" class="md-nav__link"> <span class="md-ellipsis"> For Users </span> </a> </li> <li class="md-nav__item"> <a href="../../datacite/about/" class="md-nav__link"> <span class="md-ellipsis"> About </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="https://eudat.eu" class="md-nav__link"> <span class="md-ellipsis"> EUDAT website </span> </a> </li> <li class="md-nav__item"> <a href="https://eudat.eu/contact-support-request" class="md-nav__link"> <span class="md-ellipsis"> Feedback + Support </span> </a> </li> </ul> </nav> </div> </div> </div> <div class="md-content" data-md-component="content"> <article class="md-content__inner md-typeset"> <h1>HTTP REST API</h1> <h2 id="eudat-b2share-http-rest-api">EUDAT B2SHARE HTTP REST API.<a class="headerlink" href="#eudat-b2share-http-rest-api" title="Permanent link">#</a></h2> <h3 id="guidelines">Guidelines<a class="headerlink" href="#guidelines" title="Permanent link">#</a></h3> <p>B2SHARE is the EUDAT service for storing and publishing data sets. In addition to its web-based GUI, B2SHARE offers an HTTP REST API. External applications or workflows can use this API, for example, to integrate B2SHARE with other websites like research community portals, or to allow uploads and downloads of large data sets that are not easily handled via a web browser. The API functionality is also used for metadata harvesting by external metadata catalogue services, including B2FIND.</p> <h3 id="the-rest-api">The REST API<a class="headerlink" href="#the-rest-api" title="Permanent link">#</a></h3> <p>B2SHARE provides a graphical, web-based interface, whose functionality is discussed in the corresponding <a href="../overview/">user documentation page</a>.</p> <p>The B2HARE HTTP REST API can be used for interaction with B2SHARE via external services or applications, for example for integration with other web-sites (research community portals) or for uploading or downloading large data sets that are not easily handled via a web browser. The API can also be used for metadata harvesting, although an OAI-PMH API endpoint is also provided for this purpose. This latter API will not be discussed here. This page will explain the basic concepts, authentication and all existing HTTP requests that can currently be used. The given examples are explained using curl commands. For usage of the API with Python, please follow the <a href="https://github.com/EUDAT-Training/B2SHARE-Training">training material</a> provided by EUDAT.</p> <blockquote> <p>Note : before B2SHARE-v.2.3.0 <strong>REST API</strong> was referred to as <strong>HTTP API</strong></p> </blockquote> <h3 id="basic-concepts">Basic concepts<a class="headerlink" href="#basic-concepts" title="Permanent link">#</a></h3> <p>The B2SHARE service uses several concepts which are briefly explained below. A scientific <strong>community</strong> has the roles of creating and maintaining metadata schemas and curating the datasets which are part of a scientific domain or research project. B2SHARE users can be part of one or more communities. Some selected members of a community are also given the role of community administrators, which grants them the special rights needed for the schema definitions and record curation tasks.</p> <p>Any user can upload scientific datasets into B2SHARE and thus create data <strong>records</strong>. A record is comprised of data files and associated metadata. The record’s <strong>metadata</strong> consists of a set of common fixed <strong>metadata field</strong> and a set of custom metadata blocks, each block containing related metadata fields. A record is always connected to one scientific community which has the role of curating and maintaining it.</p> <p>A record contains a set of common metadata fields and a set of custom metadata blocks. This metadata is not free form, however, but is governed by static schemas; the common metadata schema is set by B2SHARE and defines a superset of Dublin Core elements, while the schema for the custom metadata block is specific to each community and can be customized by the community administrators. The schemas are formally defined in the JSON Schema format. A special HTTP REST API call is available for retrieving the JSON Schema of a record in a specific community. In order to be accepted, the records submitted to a community must conform to the schema required by the community.</p> <h3 id="editing-and-versioning-records">Editing and versioning records<a class="headerlink" href="#editing-and-versioning-records" title="Permanent link">#</a></h3> <p>A data record can exist in several states. Immediately after creation a record enters the ‘draft’ state. In this state the record is only accessible by its owner and can be freely modified: its metadata can be changed and files can be uploaded into or removed from it. A draft can be published at any time, and through this action it changes its state from ‘draft’ to ‘published’, is assigned Persistent Identifiers, and becomes publicly accessible. <strong>Please note that the list of files in a <em>published record</em> cannot be changed without versioning the record</strong>.</p> <p>To update the metadata of a record through the API, a <a href="https://jsonpatch.com/">JSON Patch</a> must be supplied with the request. Please read the documentation on this website carefully to fully understand how these patches work. In the request below, the term ‘JSONPath’ is used which indicates a path in the metadata relative to the root of the structure.</p> <p>Existing published records can be versioned by creating a derivative draft that initially is a clone of the original record. This draft record can be changed in metadata but also files. A link will be established to the original record so that anyone can find and compare the contents of the versioned and original record. There is no limit to the number of versions created per record. A new versioned record needs to be published before it becomes available to other users.</p> <h3 id="using-the-api">Using the API<a class="headerlink" href="#using-the-api" title="Permanent link">#</a></h3> <p>The REST API is used by making API requests using the GET or POST methods of the standard HTTP protocol. Typically an application like curl is used to make requests, but it is also possible to do this from within your custom-built applications. To intergrate the API in your application using Python, please refer to the <a href="https://github.com/EUDAT-Training/B2SHARE-Training/tree/master/api">B2SHARE API training module</a> to learn how to use the API.</p> <h3 id="authentication">Authentication<a class="headerlink" href="#authentication" title="Permanent link">#</a></h3> <p>Although listing and accessing public data is not access-controlled, only authenticated users can use the API to its full extent. Authentication during requests is done by passing an access token along with the request. The access token is an encrypted string which can be created in the B2SHARE user profile when logged in to the web user interface. B2SHARE’s access tokens follow the OAuth 2.0 standard.</p> <h4 id="creating-an-access-token">Creating an access token<a class="headerlink" href="#creating-an-access-token" title="Permanent link">#</a></h4> <p>After logging in to the B2SHARE service click your user name and select ‘Profile’. Under ‘API tokens’, enter a token name (Figure 1).</p> <h5 id="step-1-applications">Step 1: Applications.<a class="headerlink" href="#step-1-applications" title="Permanent link">#</a></h5> <p><img alt="B2SHAREcreate API token" src="../images/httpapi/B2SHARE-API-create-api-token-1000.png" /> <em>Figure 1. B2SHARE Access Token. (Step 1: Applications)</em></p> <p>Click “New token” on the right of the text box. Your token is now created and immediately displayed (Figure 2). Please note that this is the only time the access token is visible, so copy it to a safe place.</p> <h5 id="step-2-create-new-token">Step 2: Create new token<a class="headerlink" href="#step-2-create-new-token" title="Permanent link">#</a></h5> <p><img alt="B2SHARE API tokens" src="../images/httpapi/B2SHARE-API-api-tokens-1000-3.png" /> <em>Figure 2. B2SHARE Access Token. (Step 2: Create new token)</em></p> <p>The access token is now ready for use. Access tokens can be removed by clicking on the remove button next to each access token name.</p> <p>The following shell commands will expect that the <code>ACCESS_TOKEN</code> environment variable is defined and contains the actual access token. The command to define this variable looks like this:</p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code><span class="nb">export</span><span class="w"> </span><span class="nv">ACCESS_TOKEN</span><span class="o">=</span><span class="s1">'<personal_access_token>'</span> </code></pre></div> <em>example:</em> <div class="highlight"><pre><span></span><code><span class="nb">export</span><span class="w"> </span><span class="nv">ACCESS_TOKEN</span><span class="o">=</span><span class="s1">'LMlLGmlzwo3NtDNAqIUxbb5fxq0Mr8xmS7r8gEACogHTYRpP3EIevbbSoyba'</span> </code></pre></div></p> <blockquote> <p><strong><em>Notes:</em></strong></p> </blockquote> <ul> <li>Please remember to use your actual token instead of the one given as an example above.</li> <li>Your token can only be used for the instance you created the token in. That means that a token for the training instance of B2SHARE will not work with the production instance of B2SHARE and vice-versa!</li> </ul> <h3 id="requests">Requests<a class="headerlink" href="#requests" title="Permanent link">#</a></h3> <p>The API requests are made to a URL with parameters as described below. Each URL consists of a protocol part (always ‘https://’), a hostname and a path. One of the following hostnames can be used to identify the B2SHARE instance:</p> <ul> <li><strong>https://b2share.eudat.eu</strong> - the hostname for the production site.</li> <li><strong>https://trng-b2share.eudat.eu</strong> - the hostname for the training site. Use this base URL for testing.</li> </ul> <blockquote> <p><strong><em>Notes:</em></strong> - Please make sure that you are not using production instances for creating test records or testing the API in general. - Make sure to add a forward-slash (‘/’) to the URL if that is required. If you forget the slash then the request is interpreted differently and you might get other results than expected. In many cases, a redirect (status code 302) will be returned, a result that in the browser will be handled automatically, but not in a typical API request.</p> </blockquote> <p>The curl commands in the examples of each request will expect that the HOST environment variable is defined and contains the host part of the targeted B2SHARE site, e.g.:</p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code><span class="nb">export</span><span class="w"> </span><span class="nv">B2SHARE_HOST</span><span class="o">=</span><span class="s1">'trng-b2share.eudat.eu'</span><span class="w"> </span> </code></pre></div></p> <h3 id="responses">Responses<a class="headerlink" href="#responses" title="Permanent link">#</a></h3> <p>All request response bodies are JSON encoded (UTF-8 encoded).</p> <p>A record is represented as a JSON object: <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"field1"</span><span class="p">:</span><span class="w"> </span><span class="s2">"value"</span> <span class="p">}</span> </code></pre></div> A collection of records is represented as a JSON array of objects: <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"collection"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"field1"</span><span class="p">:</span><span class="w"> </span><span class="s2">"value"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"field2"</span><span class="p">:</span><span class="w"> </span><span class="s2">"value"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"field1"</span><span class="p">:</span><span class="w"> </span><span class="s2">"value"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"field2"</span><span class="p">:</span><span class="w"> </span><span class="s2">"value"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">]</span> <span class="p">}</span> </code></pre></div> Timestamps are in UTC and formatted according to ISO 8601: <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"updated"</span><span class="p">:</span><span class="w"> </span><span class="s2">"YYYY-MM-DDTHH:MM:SS.ssssss+00:00"</span> <span class="p">}</span> </code></pre></div> In case a request fails, the body of the response body contains details about the error, for</p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again."</span><span class="p">,</span> <span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="mi">404</span> <span class="p">}</span> </code></pre></div> Here in the message field provides a detailed description of what went wrong, while the code indicates the HTTP status code (equivalent to the request response status code).</p> <h4 id="status-codes">Status codes<a class="headerlink" href="#status-codes" title="Permanent link">#</a></h4> <p>The request status codes indicate whether the request was successfully received, processed and/or executed. B2SHARE follows the HTTP status codes where possible, a complete list can be found here.</p> <p>One of the following status codes is returned in case the request was successful: <div class="highlight"><pre><span></span><code>200 : Request was successfully received and executed, see body for results 201 : Object created, see body for results 204 : No contents, this occurs when for example an object is successfully deleted </code></pre></div> In case the request failed, the body of the response usually contains details, and one of the following status codes is returned: <div class="highlight"><pre><span></span><code>400 : Request was not understood 401 : User must authenticate first, usually because no access token was provided with the request 403 : User is not authorized to perform request, missing permission to do so 404 : Requested object not found or API endpoint does not exist </code></pre></div></p> <p>Any status code greater then or equal to 500 indicates that internally something went wrong in the server. If in this case the problem persists, kindly report this to EUDAT.</p> <h3 id="a-publication-workflow">A publication workflow<a class="headerlink" href="#a-publication-workflow" title="Permanent link">#</a></h3> <p>The <strong>HTTP REST API</strong> does not impose a specific workflow for creating a record. The following example workflow only defines the most basic steps:</p> <ol> <li>Identify a target community for your data by using the HTTP REST API <a href="#list-all-communities">List all communities</a> function</li> <li>Using the community’s identifier, retrieve the JSON Schema of the record’s metadata. The submitted metadata will have to conform to this schema. Use the <a href="#get-community-schema">Get community schema</a> function</li> <li>Create a draft record: use the <a href="#create-draft-record">Create draft record</a> function</li> <li>Upload the files into the draft record. You will have to use one HTTP request per file. Use the <a href="#upload-file-into-draft-record">Upload file</a> function</li> <li>Set the complete metadata and publish the record. Use the <a href="#submit-draft-record-for-publication">Submit draft for publication</a> function</li> </ol> <h3 id="migrating-to-the-b2share-v2-http-rest-api">Migrating to the B2SHARE v2 HTTP REST API<a class="headerlink" href="#migrating-to-the-b2share-v2-http-rest-api" title="Permanent link">#</a></h3> <p>The following changes are needed for a B2SHARE version 1 client using the old HTTP REST API in order to make it work with B2SHARE version 2 for creating and publishing a record:</p> <ul> <li>Identify the unique ID of your target community or communities: see <a href="#list-all-communities">List all communities</a> function</li> <li>Update the URL for creating a new record, from <code>/api/deposition/</code> to <code>/api/records/</code>; see <a href="#create-draft-record">Create draft record</a> function</li> <li>Update the JSON structure of the newly created records to match the required JSON schema structure, see the <a href="#get-community-schema">Get community schema</a> function</li> <li>Update the file upload calls, making sure that the file bucket url is used instead of the old record URL, see the <a href="#upload-file-into-draft-record">Upload file</a> function</li> <li>Update the old ‘commit’ action as described in the <a href="#submit-draft-record-for-publication">Submit draft for publication</a> function</li> </ul> <h3 id="available-http-rest-api-requests">Available HTTP REST API requests<a class="headerlink" href="#available-http-rest-api-requests" title="Permanent link">#</a></h3> <p>Each allowed request is described as follows: <div class="highlight"><pre><span></span><code> Description : A description of the function of the request. HTTP method : which HTTP protocol such as GET or POST method is used. URL path : grammar for the allowed paths used together with one of the base URLs above. Status code : the returned status code upon a successful request. Returns : the returned data in the body of the response upon a successful request. Example : an example of usage using the program curl from the command line. </code></pre></div> Some of the requests additionally might have the following information: <div class="highlight"><pre><span></span><code> Required parameters : the parameters that need to be added to the URL. Required data : the data that needs to be sent with the request, the expected structure is shown in the example. </code></pre></div> Variables in the descriptions:</p> <ul> <li> <p><code>RECORD_ID</code> - identifier for a specific record, which can be in draft or published state</p> </li> <li> <p><code>RECORD_HEAD_ID</code> - head identifier for a group of record that are versions of each other</p> </li> <li> <p><code>FILE_BUCKET_ID</code> - identifier for a set of files. Each record has its own file set, usually found in the links -> files section</p> </li> <li> <p><code>COMMUNITY_ID</code> - identifier of a user community in B2SHARE</p> </li> <li> <p><code>SCHEMA_ID</code> - identifier of a metadata schema in B2SHARE</p> </li> <li> <p><code>FILE_NAME</code> - name of a file in a specific file bucket</p> </li> <li> <p><code>FIELD_NAME</code> - name of a metadata field</p> </li> </ul> <p>For most requests, an example is shown using a curl command. If a payload is sent with the request, this is shown in a structured way below the example. The returned response body and request-specific errors are shown if applicable.</p> <h3 id="object-retrieval">Object retrieval<a class="headerlink" href="#object-retrieval" title="Permanent link">#</a></h3> <p>The following requests concern the retrieval of information about records and communities.</p> <h4 id="list-all-communities">List all communities<a class="headerlink" href="#list-all-communities" title="Permanent link">#</a></h4> <p><em>List all the communities, without any filtering.</em></p> <ul> <li> <p>HTTP method: <code>GET</code></p> </li> <li> <p>URL path: <code>/api/communities/</code></p> </li> <li> <p>Required parameters: <code>None</code></p> </li> <li> <p>Status code on success: <code>200</code></p> </li> <li> <p>Returns: the list of communities (in JSON format) or an error message.</p> </li> </ul> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/communities/"</span> </code></pre></div></p> <p><strong><em>Returns:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"hits"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"hits"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"created"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Tue, 18 Oct 2016 08:30:47 GMT"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"The big Eudat community. Use this community if no other is suited for you"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"e9b9792e-79fb-4b07-b6b4-b9c2bd06d095"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"links"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"self"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/communities/e9b9792e-79fb-4b07-b6b4-b9c2bd06d095"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"logo"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/img/communities/eudat.png"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"EUDAT"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"updated"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Tue, 18 Oct 2016 08:30:47 GMT"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="err">...</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"total"</span><span class="p">:</span><span class="w"> </span><span class="mi">11</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"links"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"self"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/communities/"</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </code></pre></div></p> <h4 id="get-community-schema">Get community schema<a class="headerlink" href="#get-community-schema" title="Permanent link">#</a></h4> <p><em>Retrieves the JSON schema of records approved by a specific community.</em> <div class="highlight"><pre><span></span><code> HTTP method: GET URL path: /api/communities/$COMMUNITY_ID/schemas/last Required parameters: None Status code on success: 200 Returns: the community metadata schema, embedded in a JSON object, or an error message. </code></pre></div></p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/communities/</span><span class="nv">$COMMUNITY_ID</span><span class="s2">/schemas/last"</span> </code></pre></div> <strong><em>Returns:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"community"</span><span class="p">:</span><span class="w"> </span><span class="s2">"e9b9792e-79fb-4b07-b6b4-b9c2bd06d095"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"draft_json_schema"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"$ref"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/communities/e9b9792e-79fb-4b07-b6b4-b9c2bd06d095/schemas/0#/json_schema"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"$schema"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://json-schema.org/draft-04/schema#"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"json_schema"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"allOf"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="err">...</span> <span class="w"> </span><span class="p">]</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"links"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"self"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/communities/e9b9792e-79fb-4b07-b6b4-b9c2bd06d095/schemas/0"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span> <span class="p">}</span> </code></pre></div></p> <h4 id="list-all-records">List all records<a class="headerlink" href="#list-all-records" title="Permanent link">#</a></h4> <p><em>List all the records, without any filtering.</em> <div class="highlight"><pre><span></span><code> HTTP method: GET URL path: /api/records/ Required parameters: None Optional parameters: page, size, mostrecent Status code on success: 200 Returns: the list of records (in JSON format) or an error message. </code></pre></div></p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/"</span> </code></pre></div></p> <p><strong><em>Returns:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"aggregations"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"buckets"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span> <span class="w"> </span><span class="nt">"doc_count_error_upper_bound"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span> <span class="w"> </span><span class="nt">"sum_other_doc_count"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"hits"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"hits"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"created"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-19T11:32:46.095143+00:00"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"files"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"bucket"</span><span class="p">:</span><span class="w"> </span><span class="s2">"473086fc-e125-4389-8483-b8a4f130e181"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"checksum"</span><span class="p">:</span><span class="w"> </span><span class="s2">"md5:c8afdb36c52cf4727836669019e69222"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"myfile"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"size"</span><span class="p">:</span><span class="w"> </span><span class="mi">9</span><span class="p">,</span> <span class="w"> </span><span class="nt">"version_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"324fdf1d-0005-41b1-a9c5-26a8eabd05a2"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"a1c2ef96a1e446fa9bd7a2a46d2242d4"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"links"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"files"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/files/473086fc-e125-4389-8483-b8a4f130e181"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"self"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/a1c2ef96a1e446fa9bd7a2a46d2242d4"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"metadata"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="err">...</span><span class="p">:</span><span class="w"> </span><span class="err">...</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"updated"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-19T11:32:46.095152+00:00"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="err">...</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"total"</span><span class="p">:</span><span class="w"> </span><span class="mi">51</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"links"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"next"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/?sort=mostrecent&q=&page=2"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"self"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/?sort=mostrecent&q=&page=1"</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </code></pre></div></p> <h4 id="list-records-per-community">List records per community<a class="headerlink" href="#list-records-per-community" title="Permanent link">#</a></h4> <p><em>List all records of a specific community.</em> <div class="highlight"><pre><span></span><code> HTTP method: GET URL path: /api/records/ Required parameters: q with value community: COMMUNITY_ID Status code on success: 200 Returns: the list of records (in JSON format) or an error message </code></pre></div></p> <blockquote> <p><strong><em>Notes:</em></strong> - you can use search parameters to further narrow your search as described in the ‘Search records’ section.</p> </blockquote> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/?q=community:</span><span class="nv">$COMMUNITY_ID</span><span class="s2">"</span> </code></pre></div></p> <p><strong><em>Returns:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"aggregations"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"buckets"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span> <span class="w"> </span><span class="nt">"doc_count_error_upper_bound"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span> <span class="w"> </span><span class="nt">"sum_other_doc_count"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"hits"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"hits"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"created"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-24T11:29:27.016892+00:00"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"f7fddf6f111f4362a9e4661294e2b59e"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"links"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"files"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/files/90ea3483-2792-4483-9392-7d624b610398"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"self"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/f7fddf6f111f4362a9e4661294e2b59e"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"versions"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/d855e187e3864ddcaa1b68625866dd78/versions"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"updated"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-24T11:29:27.016900+00:00"</span><span class="p">,</span> <span class="w"> </span><span class="err">...</span><span class="p">:</span><span class="w"> </span><span class="err">...</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="err">...</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"total"</span><span class="p">:</span><span class="w"> </span><span class="mi">32</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"links"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"next"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/?sort=bestmatch&q=community%3Ae9b9792e-79fb-4b07-b6b4-b9c2bd06d095&size=10&page=2"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"self"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/?sort=bestmatch&q=community%3Ae9b9792e-79fb-4b07-b6b4-b9c2bd06d095&size=10&page=1"</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </code></pre></div></p> <h4 id="search-records">Search records<a class="headerlink" href="#search-records" title="Permanent link">#</a></h4> <p><em>Search all the published records for a query string.</em> <div class="highlight"><pre><span></span><code> HTTP method: GET URL path: /api/records/ Required parameters: none Optional parameters: q, page, size, sort Status code on success: 200 Returns: the list of matching records (in JSON format) or an error message </code></pre></div></p> <blockquote> <p><strong><em>Notes:</em></strong> - The parameter q determines the keywords to search for, separated by a space. - If a field name is prepended followed by a colon and the search value, the search is limited to that field, e.g. <code>'creators.creator:user'</code> searches for records with a ‘user’ in the creator metadata field. - If the parameter q is omitted, all records are returned (in paginated form). See also ‘List all records’. - For a better understanding of search queries, a listing of available search fields and advanced options like operators, please refer to the B2SHARE Advanced Search documentation on how to create them. - Using the page and size parameter, pagination can be established by providing integer values for these parameters. The page parameter is 1-based. - For example: using a value of 2 for page and 50 for size will return the records from number 51 to 100 (if there are at least 100 records available on the instance) - The sort parameter can be either <code>'mostrecent'</code> or <code>'bestmatch'</code>.</p> </blockquote> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/?q=</span><span class="nv">$QUERY_STRING</span><span class="s2">&page=1&size=100&sort=mostrecent"</span> </code></pre></div></p> <h4 id="search-drafts">Search drafts<a class="headerlink" href="#search-drafts" title="Permanent link">#</a></h4> <p><em>List all your draft records</em> <div class="highlight"><pre><span></span><code> HTTP method: GET URL path: /api/records/ Required parameters: access_token, drafts Optional parameters: q Status code on success: 200 Returns: the list of matching drafts (in JSON format) or an error message. </code></pre></div></p> <blockquote> <p><strong><em>Notes:</em></strong> - You can only list your own draft records. - You can add search parameters to narrow down your search, see ‘Search records’</p> </blockquote> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/?drafts&access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span> </code></pre></div></p> <h4 id="get-specific-record">Get specific record<a class="headerlink" href="#get-specific-record" title="Permanent link">#</a></h4> <p><em>List the metadata of the record specified by <code>RECORD_ID</code>. The metadata of all records are always public.</em> <div class="highlight"><pre><span></span><code> HTTP method: GET URL path: /api/records/RECORD_ID Required parameters: access_token Status code on success: 200 </code></pre></div></p> <blockquote> <p><strong><em>Notes:</em></strong> - the access token is only required when a record is not publicly available.</p> </blockquote> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/47077e3c4b9f4852a40709e338ad4620"</span> </code></pre></div></p> <h3 id="record-administration">Record administration<a class="headerlink" href="#record-administration" title="Permanent link">#</a></h3> <p>The following requests concern the creation, update and management of records.</p> <h4 id="create-draft-record">Create draft record<a class="headerlink" href="#create-draft-record" title="Permanent link">#</a></h4> <p><em>Create a new record, in the draft state.</em> <div class="highlight"><pre><span></span><code> HTTP method: POST URL path: /api/records/ Required parameters: access_token Payload data: JSON object with basic metadata of the object, at least the required fields of the basic metadata schema of each new record: titles, community and open_access. Status code on success: 201 Returns: the new draft record metadata including new URL location. Please note that the returned JSON object contains also the URL of the file bucket used for the record. Also note that the URL of the draft record, needed for setting record metadata, will end in '/draft/' </code></pre></div></p> <blockquote> <p><strong><em>Notes:</em></strong> - you cannot change the community the record resides in after you have created the record.</p> </blockquote> <h5 id="example-1">Example 1<a class="headerlink" href="#example-1" title="Permanent link">#</a></h5> <p>The following example creates an open-access record for a community with identifier <code>e9b9792e-79fb-4b07-b6b4-b9c2bd06d095</code> with title <code>'My dataset record'</code>, creators <code>'John Smith' and 'Jane Smith'</code> and description of type abstract <code>'A simple description'</code>.</p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>POST<span class="w"> </span>-H<span class="w"> </span><span class="s2">"Content-Type:application/json"</span><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"titles":[{"title":"My dataset record"}], "creators":[{"creator_name": "John Smith"}, {"creator_name": "Jane Smith"}], "descriptions":[{"description": "A simple description", "description_type": "Abstract"}], "community":"e9b9792e-79fb-4b07-b6b4-b9c2bd06d095", "open_access":true}'</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/?access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span> </code></pre></div> <strong><em>Payload:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"titles"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"My dataset record"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"creators"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"creator_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"John Smith"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"creator_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Jane Smith"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"descriptions"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"A simple description"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"description_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Abstract"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"community"</span><span class="p">:</span><span class="w"> </span><span class="s2">"e9b9792e-79fb-4b07-b6b4-b9c2bd06d095"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"open_access"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span> <span class="p">}</span> </code></pre></div> <strong><em>Returns:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"created"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-24T12:21:21.697737+00:00"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"01826ff3e4974415afdb2574a7ea5a91"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"links"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"files"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/files/5594a1bf-1484-4a01-b7d3-f1eb3d2e1dc6"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"publication"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/01826ff3e4974415afdb2574a7ea5a91"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"self"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/01826ff3e4974415afdb2574a7ea5a91/draft"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"versions"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/d855e187e3864ddcaa1b68625866dd78/versions"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"metadata"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"$schema"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/communities/e9b9792e-79fb-4b07-b6b4-b9c2bd06d095/schemas/0#/draft_json_schema"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"community"</span><span class="p">:</span><span class="w"> </span><span class="s2">"e9b9792e-79fb-4b07-b6b4-b9c2bd06d095"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"community_specific"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"field_1"</span><span class="p">:</span><span class="w"> </span><span class="s2">"value_1"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"field_2"</span><span class="p">:</span><span class="w"> </span><span class="s2">"value_2"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"open_access"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span> <span class="w"> </span><span class="nt">"owners"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="mi">8</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"publication_state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"draft"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"titles"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"My dataset record"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"creators"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"creator_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"John Smith"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"creator_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Jane Smith"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">]</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"updated"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-24T12:21:21.697744+00:00"</span> <span class="p">}</span> </code></pre></div></p> <h5 id="example-2">Example 2<a class="headerlink" href="#example-2" title="Permanent link">#</a></h5> <p>The next example creates an open-access record for a community with identifier <code>94a9567e-2fba-4677-8fde-a8b68bdb63e8</code> with title <code>'My community record'</code>, creator <code>'John Smith'</code>. The following community-specific fields are added: <code>'field_1'</code> and <code>'field_2'</code>.</p> <p>For this to work, the schema identifier of the community metadata schema is required. You can get this information from the community metadata using the <a href="#get-community-schema">Get community schema</a> request, although it is a bit hidden. The correct JSONPath for this metadata is <code>/json_schema/allOf/1/yml/community_specific/required</code>, in this example <code>5108aff5-be5b-4d92-968a-22930ee65e94</code>.</p> <p>``</p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>POST<span class="w"> </span>-H<span class="w"> </span><span class="s2">"Content-Type:application/json"</span><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"titles":[{"title":"My community record"}], "creators":[{"creator_name": "John Smith"}], "community":"94a9567e-2fba-4677-8fde-a8b68bdb63e8", "open_access":true, "community_specific": {"5108aff5-be5b-4d92-968a-22930ee65e94": {"field_1": "value", "field_2": "value"}}}'</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/?access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span> </code></pre></div> <strong><em>Payload:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"titles"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"My community record"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"creators"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"creator_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"John Smith"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"community"</span><span class="p">:</span><span class="w"> </span><span class="s2">"94a9567e-2fba-4677-8fde-a8b68bdb63e8"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"open_access"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span> <span class="w"> </span><span class="nt">"community_specific"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"5108aff5-be5b-4d92-968a-22930ee65e94"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"field_1"</span><span class="p">:</span><span class="w"> </span><span class="s2">"value"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"field_2"</span><span class="p">:</span><span class="w"> </span><span class="s2">"value"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </code></pre></div> <strong><em>Returns:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"created"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-24T12:21:21.697737+00:00"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"01826ff3e4974415afdb2574a7ea5a91"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"links"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"files"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/files/5594a1bf-1484-4a01-b7d3-f1eb3d2e1dc6"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"publication"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/01826ff3e4974415afdb2574a7ea5a91"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"self"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/01826ff3e4974415afdb2574a7ea5a91/draft"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"versions"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/d855e187e3864ddcaa1b68625866dd78/versions"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"metadata"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"$schema"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/communities/94a9567e-2fba-4677-8fde-a8b68bdb63e8/schemas/0#/draft_json_schema"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"community"</span><span class="p">:</span><span class="w"> </span><span class="s2">"94a9567e-2fba-4677-8fde-a8b68bdb63e8"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"community_specific"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"5108aff5-be5b-4d92-968a-22930ee65e94"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"field_1"</span><span class="p">:</span><span class="w"> </span><span class="s2">"value_1"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"field_2"</span><span class="p">:</span><span class="w"> </span><span class="s2">"value_2"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"open_access"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span> <span class="w"> </span><span class="nt">"owners"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="mi">8</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"publication_state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"draft"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"titles"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"My community record"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"creators"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"creator_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"John Smith"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"creator_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Jane Smith"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">]</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"updated"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-24T12:21:21.697744+00:00"</span> <span class="p">}</span> </code></pre></div></p> <h5 id="common-errors">Common errors<a class="headerlink" href="#common-errors" title="Permanent link">#</a></h5> <p>On metadata validation error: <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Validation error."</span><span class="p">,</span> <span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="mi">400</span> <span class="p">}</span> </code></pre></div> The supplied metadata is invalid or incorrectly structured. This means that either a specified field does not exist in the metadata schema, or that one of the values for a given field is invalid.</p> <h4 id="upload-file-into-draft-record">Upload file into draft record<a class="headerlink" href="#upload-file-into-draft-record" title="Permanent link">#</a></h4> <p>To upload a new file into a draft record object, first you need to identify the file bucket URL. This URL can be found in the information returned when querying a draft record, in the ‘links/files’ section of the returned data. <div class="highlight"><pre><span></span><code> HTTP method: PUT URL path: /api/files/FILE_BUCKET_ID/FILE_NAME Required parameters: access_token Payload data: the file, sent as direct stream, for curl use the --data-binary @FILE_NAME option for this. Status code on success: 200 Returns: informations about the newly uploaded file </code></pre></div></p> <blockquote> <p><strong><em>Notes:</em></strong> - Using the <code>--data-binary</code> option will load the entire file into memory before being sent to B2SHARE - For large files instead use the <code>-T</code> option followed by the file name (without a <code>@</code>sign) - Also, to avoid timeouts please use the <code>-H "Transfer-Encoding: chunked"</code> option to send a file in chunks instead of all at once.</p> </blockquote> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>PUT<span class="w"> </span>-H<span class="w"> </span><span class="s1">'Accept:application/json'</span><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Content-Type:application/octet-stream'</span><span class="w"> </span>--data-binary<span class="w"> </span>@<span class="nv">$FILE_NAME</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/files/</span><span class="nv">$FILE_BUCKET_ID</span><span class="s2">/</span><span class="nv">$FILE_NAME</span><span class="s2">?access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span> </code></pre></div></p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>PUT<span class="w"> </span>-H<span class="w"> </span><span class="s1">'Accept:application/json'</span><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Content-Type:application/octet-stream'</span><span class="w"> </span>-H<span class="w"> </span><span class="s1">'Transfer-Encoding:chunked'</span><span class="w"> </span>-T<span class="w"> </span><span class="nv">$FILE_NAME</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/files/</span><span class="nv">$FILE_BUCKET_ID</span><span class="s2">/</span><span class="nv">$FILE_NAME</span><span class="s2">?access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span> </code></pre></div></p> <h4 id="delete-file-from-draft-record">Delete file from draft record<a class="headerlink" href="#delete-file-from-draft-record" title="Permanent link">#</a></h4> <p>Send a DELETE request to the file’s URL, which is the same URL used for uploading. <div class="highlight"><pre><span></span><code> HTTP method: DELETE URL path: /api/files/FILE_BUCKET_ID/FILE_NAME Required parameters: access_token Status code on success: 204 Returns: no content </code></pre></div></p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>DELETE<span class="w"> </span>-H<span class="w"> </span><span class="s1">'Accept:application/json'</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/files/</span><span class="nv">$FILE_BUCKET_ID</span><span class="s2">/FileToBeRemoved.txt?access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span> </code></pre></div></p> <h4 id="list-files-of-record">List files of record<a class="headerlink" href="#list-files-of-record" title="Permanent link">#</a></h4> <p>List the files uploaded into a record object. For this request you need the FILE_BUCKET_ID which can be found in the metadata of the record. This does not include files that are referenced externally. <div class="highlight"><pre><span></span><code> HTTP method: GET URL path: /api/files/FILE_BUCKET_ID Required parameters: access_token Status code on success: 200 Returns: information about all the files in the record object </code></pre></div></p> <blockquote> <p>Notes: - the access token is only required if the record is in draft state.</p> </blockquote> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/files/</span><span class="nv">$FILE_BUCKET_ID</span><span class="s2">?access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span> </code></pre></div></p> <h4 id="update-draft-record-metadata">Update draft record metadata<a class="headerlink" href="#update-draft-record-metadata" title="Permanent link">#</a></h4> <p>This action updates the draft record with new information. <div class="highlight"><pre><span></span><code><span class="w"> </span><span class="err">HTTP</span><span class="w"> </span><span class="err">me</span><span class="kc">t</span><span class="err">hod</span><span class="p">:</span><span class="w"> </span><span class="err">PATCH</span> <span class="w"> </span><span class="err">URL</span><span class="w"> </span><span class="err">pa</span><span class="kc">t</span><span class="err">h</span><span class="p">:</span><span class="w"> </span><span class="err">/api/records/RECORD_ID/dra</span><span class="kc">ft</span> <span class="w"> </span><span class="err">Required</span><span class="w"> </span><span class="err">parame</span><span class="kc">ters</span><span class="p">:</span><span class="w"> </span><span class="err">access_</span><span class="kc">t</span><span class="err">oke</span><span class="kc">n</span> <span class="w"> </span><span class="err">Payload</span><span class="w"> </span><span class="err">da</span><span class="kc">ta</span><span class="p">:</span><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="w"> </span><span class="err">me</span><span class="kc">ta</span><span class="err">da</span><span class="kc">ta</span><span class="w"> </span><span class="kc">f</span><span class="err">or</span><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="w"> </span><span class="err">dra</span><span class="kc">ft</span><span class="w"> </span><span class="err">record</span><span class="w"> </span><span class="kc">t</span><span class="err">o</span><span class="w"> </span><span class="err">be</span><span class="w"> </span><span class="err">upda</span><span class="kc">te</span><span class="err">d</span><span class="p">,</span><span class="w"> </span><span class="err">i</span><span class="kc">n</span><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="w"> </span><span class="err">JSON</span><span class="w"> </span><span class="err">Pa</span><span class="kc">t</span><span class="err">ch</span><span class="w"> </span><span class="kc">f</span><span class="err">orma</span><span class="kc">t</span><span class="w"> </span><span class="err">(see</span><span class="w"> </span><span class="err">h</span><span class="kc">tt</span><span class="err">p</span><span class="p">:</span><span class="c1">//jsonpatch.com/)</span> <span class="w"> </span><span class="err">S</span><span class="kc">tatus</span><span class="w"> </span><span class="err">code</span><span class="w"> </span><span class="err">o</span><span class="kc">n</span><span class="w"> </span><span class="err">success</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span> <span class="w"> </span><span class="err">Re</span><span class="kc">turns</span><span class="p">:</span><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="w"> </span><span class="err">upda</span><span class="kc">te</span><span class="err">d</span><span class="w"> </span><span class="err">me</span><span class="kc">ta</span><span class="err">da</span><span class="kc">ta</span><span class="w"> </span><span class="err">o</span><span class="kc">f</span><span class="w"> </span><span class="kc">t</span><span class="err">he</span><span class="w"> </span><span class="err">dra</span><span class="kc">ft</span><span class="w"> </span><span class="err">record.</span> </code></pre></div></p> <blockquote> <p><strong><em>Notes:</em></strong> - The JSON Patch format contains one or more JSONPath strings. The root of these paths are the metadata object, as this is the only mutable object. For instance, to update the title field of the record, use this JSONPath: <code>/titles/title</code></p> </blockquote> <h5 id="example-1_1">Example 1<a class="headerlink" href="#example-1_1" title="Permanent link">#</a></h5> <p>The following example adds two values to the metadata field <code>keywords</code> of an existing draft record.</p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>PATCH<span class="w"> </span>-H<span class="w"> </span><span class="s1">'Content-Type:application/json-patch+json'</span><span class="w"> </span>-d<span class="w"> </span><span class="s1">'[{"op": "add", "path":"/keywords", "value": ["keyword1", "keyword2"]}]'</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/</span><span class="nv">$RECORD_ID</span><span class="s2">/draft?access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span> </code></pre></div> <strong><em>Returns:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"created"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-24T12:21:21.697737+00:00"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"01826ff3e4974415afdb2574a7ea5a91"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"links"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"files"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/files/5594a1bf-1484-4a01-b7d3-f1eb3d2e1dc6"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"publication"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/01826ff3e4974415afdb2574a7ea5a91"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"self"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/01826ff3e4974415afdb2574a7ea5a91/draft"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"versions"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/d855e187e3864ddcaa1b68625866dd78/versions"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"metadata"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"$schema"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/communities/e9b9792e-79fb-4b07-b6b4-b9c2bd06d095/schemas/0#/draft_json_schema"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"community"</span><span class="p">:</span><span class="w"> </span><span class="s2">"e9b9792e-79fb-4b07-b6b4-b9c2bd06d095"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"community_specific"</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span> <span class="w"> </span><span class="nt">"keywords"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="s2">"keyword1"</span><span class="p">,</span> <span class="w"> </span><span class="s2">"keyword2"</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"open_access"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span> <span class="w"> </span><span class="nt">"owners"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="mi">8</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"publication_state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"draft"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"titles"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"My community title"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">]</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"updated"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-24T12:23:59.454951+00:00"</span> <span class="p">}</span> </code></pre></div></p> <h5 id="example-2_1">Example 2<a class="headerlink" href="#example-2_1" title="Permanent link">#</a></h5> <p>This example replaces the value of the title of a record. This requires a JSONPath <code>/titles/0/title</code> as we are updated an existing value of multivalued field.</p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>PATCH<span class="w"> </span>-H<span class="w"> </span><span class="s1">'Content-Type:application/json-patch+json'</span><span class="w"> </span>-d<span class="w"> </span><span class="s1">'[{"op": "replace", "path":"/titles/0/title", "value": ["The new title"]}]'</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/</span><span class="nv">$RECORD_ID</span><span class="s2">/draft?access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span> </code></pre></div> <strong><em>Returns:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"created"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-24T12:21:21.697737+00:00"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"01826ff3e4974415afdb2574a7ea5a91"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"links"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"files"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/files/5594a1bf-1484-4a01-b7d3-f1eb3d2e1dc6"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"publication"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/01826ff3e4974415afdb2574a7ea5a91"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"self"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/01826ff3e4974415afdb2574a7ea5a91/draft"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"versions"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/d855e187e3864ddcaa1b68625866dd78/versions"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"metadata"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"$schema"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/communities/e9b9792e-79fb-4b07-b6b4-b9c2bd06d095/schemas/0#/draft_json_schema"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"community"</span><span class="p">:</span><span class="w"> </span><span class="s2">"e9b9792e-79fb-4b07-b6b4-b9c2bd06d095"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"community_specific"</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span> <span class="w"> </span><span class="nt">"open_access"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span> <span class="w"> </span><span class="nt">"owners"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="mi">8</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"publication_state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"draft"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"titles"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"The new title"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">]</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"updated"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-24T12:23:59.454951+00:00"</span> <span class="p">}</span> </code></pre></div></p> <h5 id="example-3">Example 3<a class="headerlink" href="#example-3" title="Permanent link">#</a></h5> <p>The next example updates the community-specific metadata fields <code>field_1</code> and <code>field_2</code> of an existing draft record of community with identifier <code>e9b9792e-79fb-4b07-b6b4-b9c2bd06d095</code>. Note that in order to update a community-specific field, the JSONPath <code>/community-specific/SCHEMA_ID/FIELD_NAME</code> is required which contains the schema identifier used by the community.</p> <p>For this to work, the block schema identifier of the community metadata schema is required. You can get this information from the community metadata using the <a href="#get-community-schema">Get community schema</a> request, although it is a bit hidden. The correct JSONPath for this metadata is <code>/json_schema/allOf/1/yml/community_specific/required</code>. Starting from B2SHARE version 2.1.4, you can get the block schema identifier on the corresponding <a href="https://b2share.eudat.eu/communities/CLARIN">community landing page</a> in the block schema at the bottom of the page.</p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>POST<span class="w"> </span>-H<span class="w"> </span><span class="s2">"Content-Type:application/json-patch+json"</span><span class="w"> </span>-d<span class="w"> </span><span class="s1">'[{"op": "add", "path": "/community_specific/$SCHEMA_ID/field_1", "value": "value_1"}, {"op": "add", "path": "/community_specific/$SCHEMA_ID/field_2", "value": "value_2"}]'</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/</span><span class="nv">$RECORD_ID</span><span class="s2">/draft?access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span> </code></pre></div> <strong><em>Returns:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"created"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-24T12:21:21.697737+00:00"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"01826ff3e4974415afdb2574a7ea5a91"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"links"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"files"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/files/5594a1bf-1484-4a01-b7d3-f1eb3d2e1dc6"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"publication"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/01826ff3e4974415afdb2574a7ea5a91"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"self"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/01826ff3e4974415afdb2574a7ea5a91/draft"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"versions"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/d855e187e3864ddcaa1b68625866dd78/versions"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"metadata"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"$schema"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/communities/e9b9792e-79fb-4b07-b6b4-b9c2bd06d095/schemas/0#/draft_json_schema"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"community"</span><span class="p">:</span><span class="w"> </span><span class="s2">"e9b9792e-79fb-4b07-b6b4-b9c2bd06d095"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"community_specific"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"field_1"</span><span class="p">:</span><span class="w"> </span><span class="s2">"value_1"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"field_2"</span><span class="p">:</span><span class="w"> </span><span class="s2">"value_2"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"open_access"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span> <span class="w"> </span><span class="nt">"owners"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="mi">8</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"publication_state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"draft"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"titles"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"My dataset record"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">]</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"updated"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-24T12:21:21.697744+00:00"</span> <span class="p">}</span> </code></pre></div></p> <h5 id="common-errors_1">Common errors<a class="headerlink" href="#common-errors_1" title="Permanent link">#</a></h5> <p>On JSON Patch operation error: <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Invalid Operation."</span><span class="p">,</span> <span class="w"> </span><span class="nt">"errors"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Invalid JSON Pointer"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="mi">400</span> <span class="p">}</span> </code></pre></div> One of the JSON Patch operations is invalid.</p> <p>On JSON Patch content type error: <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Invalid 'Content-Type' header. Expected one of: application/json-patch+json"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="mi">415</span> <span class="p">}</span> </code></pre></div> The supplied content type header value is invalid.</p> <p>On metadata validation error: <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Validation error."</span><span class="p">,</span> <span class="w"> </span><span class="nt">"errors"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"{'title': 'Some title'} is not of type 'array'"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"field"</span><span class="p">:</span><span class="w"> </span><span class="s2">"titles"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="mi">400</span> <span class="p">}</span> </code></pre></div> The supplied value for the metadata field is invalid.</p> <h4 id="add-externally-referenced-files-to-draft-record">Add externally referenced files to draft record<a class="headerlink" href="#add-externally-referenced-files-to-draft-record" title="Permanent link">#</a></h4> <p>To add files that are located outside of B2SHARE, a reference to that file can be added to a draft record object by defining a list of external references that include a file name and the corresponding EPIC PID. External references are added as normal metadata using a JSON Patch and can only be added during the draft stage. <div class="highlight"><pre><span></span><code> HTTP method: PATCH URL path: /api/records/RECORD_ID/draft Required parameters: access_token Payload data: the list of external references provided as a JSON Patch. Status code on success: 200 Returns: informations about the updated metadata of the draft record </code></pre></div></p> <blockquote> <p><strong><em>Notes:</em></strong> - you must provide the external references using EPIC PIDs and therefore you need to be able to register new PIDs with an EPIC PID hosting institute using a registered prefix. It is possible to get a prefix through EUDAT, please use the <a href="https://eudat.eu/contact-support-request">contact form</a> for this.</p> </blockquote> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>PATCH<span class="w"> </span>-H<span class="w"> </span><span class="s1">'Accept:application/json-patch+json'</span><span class="w"> </span>-d<span class="w"> </span><span class="s1">'["op": "add", "path": "/external_pids", "value": "[{\"ePIC_PID\": \"prefix/suffix-of-file\", \"key\": \"filename\"},{\"ePIC_PID\": \"prefix/suffix-of-file-2\", \"key\": \"filename-2\"}]'</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/</span><span class="nv">$RECORD_ID</span><span class="s2">/draft?access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span> </code></pre></div></p> <h4 id="submit-draft-record-for-publication">Submit draft record for publication<a class="headerlink" href="#submit-draft-record-for-publication" title="Permanent link">#</a></h4> <p>This action marks the draft record as complete and submits it for publication. Currently B2SHARE automatically publishes all the submitted drafts. Please be advised that publishing the draft will make its files immutable.</p> <p>A draft record is submitted for publication if a special metadata field, called ‘publication_state’ is set to ‘submitted’. This field can be set using the <a href="#update-published-record-metadata">metadata update request</a> described above.</p> <p>Depending on the community specification, other fields could be required in order to successfully publish a record. In case one of the required fields is missing the request fails and an error message is returned with further details. <div class="highlight"><pre><span></span><code> HTTP method: POST URL path: /api/records/$RECORD_ID/draft Required parameters: access_token Payload data: JSON Patch operation that alters the publication_state metadata field of the record metadata, see example below. Status code on success: 200 </code></pre></div></p> <blockquote> <p><strong><em>Notes:</em></strong> - this request is essentially a <a href="#update-published-record-metadata">metadata update request</a> as described above.</p> </blockquote> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>PATCH<span class="w"> </span>-H<span class="w"> </span><span class="s1">'Content-Type:application/json-patch+json'</span><span class="w"> </span>-d<span class="w"> </span><span class="s1">'[{"op": "add", "path":"/publication_state", "value": "submitted"}]'</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/</span><span class="nv">$RECORD_ID</span><span class="s2">/draft?access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span> </code></pre></div> <strong><em>Returns:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"created"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-24T12:21:21.697737+00:00"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"01826ff3e4974415afdb2574a7ea5a91"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"links"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"files"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/files/5594a1bf-1484-4a01-b7d3-f1eb3d2e1dc6"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"publication"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/01826ff3e4974415afdb2574a7ea5a91"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"versions"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/c1d28e53db104cb286425902af134579/versions"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"self"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/01826ff3e4974415afdb2574a7ea5a91/draft"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"metadata"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"$schema"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/communities/e9b9792e-79fb-4b07-b6b4-b9c2bd06d095/schemas/0#/draft_json_schema"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"DOI"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10.5072/b2share.cdb15c27-326e-4e95-b812-6b1c6b54c299"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"community"</span><span class="p">:</span><span class="w"> </span><span class="s2">"e9b9792e-79fb-4b07-b6b4-b9c2bd06d095"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"community_specific"</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span> <span class="w"> </span><span class="nt">"keywords"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="s2">"keyword1"</span><span class="p">,</span> <span class="w"> </span><span class="s2">"keyword2"</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"ePIC_PID"</span><span class="p">:</span><span class="w"> </span><span class="s2">"http://hdl.handle.net/11304/2c473f04-d997-47d9-9bdb-d3d71800f870"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"open_access"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span> <span class="w"> </span><span class="nt">"owners"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="mi">8</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"publication_state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"published"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"titles"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"TestRest"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">]</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"updated"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2016-10-24T12:26:51.538025+00:00"</span> <span class="p">}</span> </code></pre></div></p> <h4 id="update-published-record-metadata">Update published record metadata<a class="headerlink" href="#update-published-record-metadata" title="Permanent link">#</a></h4> <p>This request updates the metadata of an already published record without creating a new version. <div class="highlight"><pre><span></span><code> HTTP method: PATCH URL path: /api/records/RECORD_ID/ Required parameters: access_token Payload data: the metadata for the published record object to be updated, in the JSON Patch format (see http://jsonpatch.com/) Status code on success: 200 </code></pre></div></p> <blockquote> <p><strong><em>Notes:</em></strong> - The JSON Patch format contains one or more JSONPath strings. The root of these paths are the metadata object, as this is the only mutable object. For instance, to update the title field of the record, use this JSONPath: <code>/titles/title</code> - See the <a href="#update-draft-record-metadata">Update draft record metadata request</a> for examples.</p> </blockquote> <h3 id="record-versioning">Record versioning<a class="headerlink" href="#record-versioning" title="Permanent link">#</a></h3> <p>The following requests concern the versioning of published records. Click on a title to show details. Create new version of published record </p> <h4 id="create-a-new-version-of-an-existing-published-record-into-a-new-draft">Create a new version of an existing published record into a new draft.<a class="headerlink" href="#create-a-new-version-of-an-existing-published-record-into-a-new-draft" title="Permanent link">#</a></h4> <div class="highlight"><pre><span></span><code> HTTP method: POST URL path: /api/records/RECORD_ID/draft Required parameters: access_token Status code on success: 201 Returns: the new draft record metadata including new URL location. The metadata will be exactly the same as the original record with the exception of the links and persistent identifiers. Since the new record is in draft state, you can freely alter it, including the files. </code></pre></div> <blockquote> <p><strong><em>Notes:</em></strong> - the output of the request is the same as the output of the <a href="#create-draft-record">Create new record request</a>. You cannot create a new version of a draft record itself.</p> </blockquote> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>POST<span class="w"> </span>-H<span class="w"> </span><span class="s2">"Content-Type:application/json"</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/</span><span class="nv">$RECORD_ID</span><span class="s2">/draft?access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span> </code></pre></div></p> <h4 id="get-all-record-versions">Get all record versions<a class="headerlink" href="#get-all-record-versions" title="Permanent link">#</a></h4> <p><em>Get all versions of a specific record by using the record head identifier.</em> <div class="highlight"><pre><span></span><code> HTTP method: GET URL path: /api/records/RECORD_HEAD_ID/versions Required parameters: None Status code on success: 200 Returns: a JSON structure containing a list of all record versions with identifier, version number and URL. </code></pre></div></p> <blockquote> <p><strong><em>Notes:</em></strong> - the record head identifier is not the same as the record identifier. Use the metadata of the record to find the record head identifier, located in the JSONPath <code>/links/versions</code>. - If a record is not versioned, the result will be empty.</p> </blockquote> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-H<span class="w"> </span><span class="s2">"Content-Type:application/json"</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/</span><span class="nv">$RECORD_HEAD_ID</span><span class="s2">/versions"</span> </code></pre></div> <strong><em>Returns:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"versions"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"created"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Wed, 05 Jul 2017 09:40:14 GMT"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"a766efd2e5d543968fff9dd7bf3783c5"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"updated"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Tue, 19 Dec 2017 12:15:06 GMT"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/a766efd2e5d543968fff9dd7bf3783c5"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"created"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Fri, 12 Jan 2018 16:43:33 GMT"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2ff3f5815db3494a840e6b3f1e6a6542"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"updated"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Fri, 12 Jan 2018 16:43:33 GMT"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://trng-b2share.eudat.eu/api/records/2ff3f5815db3494a840e6b3f1e6a6542"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">]</span> <span class="p">}</span> </code></pre></div> <em>On not found error:</em> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"PID is not registered."</span><span class="p">,</span> <span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="mi">404</span> <span class="p">}</span> </code></pre></div></p> <h3 id="other-requests">Other requests<a class="headerlink" href="#other-requests" title="Permanent link">#</a></h3> <p>The following requests are the remaining requests possible in B2SHARE. Click on a title to show details.</p> <h4 id="report-a-record-as-an-abuse-record">Report a record as an abuse record<a class="headerlink" href="#report-a-record-as-an-abuse-record" title="Permanent link">#</a></h4> <p>If there is anything wrong with the record users can report it as an abuse record. An email will be send to the related admin and it will be followed up. There are 4 different reasons listed on the report abuse form and the reporter should choose one of:</p> <ul> <li> <p><strong>Abuse or Inappropriate content</strong></p> </li> <li> <p><strong>Copyrighted material</strong></p> </li> <li> <p><strong>Not research data</strong></p> </li> <li> <p><strong>Illegal content</strong></p> </li> </ul> <p>The reporter can also send a message to explain more about the problem. It is possible for an anonymous user to send the report and authentication is not required.</p> <p>Report an abuse record. <div class="highlight"><pre><span></span><code> HTTP method: POST URL path: /api/records/$RECORD_ID/abuse Required parameters: None Payload data: JSON object with information about reporter, the reason indicated by booleans and a message. Status code on success: 200 Returns: a message that an email was sent and the record is reported </code></pre></div></p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>POST<span class="w"> </span>-H<span class="w"> </span><span class="s1">'Content-Type:application/json'</span><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"noresearch":true, "abusecontent":false, "copyright":false, "illegalcontent":false,"message":"It is not research data...", "name":"John Smith", "affiliation":"Example University", "email":"j.smith@example.com", "address":"Example street", "city":"Example City", "country":"Example country", "zipcode":"12345", "phone":"7364017452"}'</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/</span><span class="nv">$RECORD_ID</span><span class="s2">/abuse"</span> </code></pre></div> <strong><em>Payload:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"noresearch"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span> <span class="w"> </span><span class="nt">"abusecontent"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span> <span class="w"> </span><span class="nt">"copyright"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span> <span class="w"> </span><span class="nt">"illegalcontent"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span> <span class="w"> </span><span class="nt">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"It is not research data..."</span><span class="p">,</span> <span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"John Smith"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"affiliation"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Example University"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"email"</span><span class="p">:</span><span class="w"> </span><span class="s2">"j.smith@example.com"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Example street"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"city"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Example City"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"country"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Example country"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"zipcode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"12345"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"phone"</span><span class="p">:</span><span class="w"> </span><span class="s2">"7364017452"</span> <span class="p">}</span> </code></pre></div> <strong><em>Returns:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"The record is reported."</span><span class="p">,</span> <span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span> <span class="p">}</span> </code></pre></div></p> <h4 id="send-record-access-request">Send record access request<a class="headerlink" href="#send-record-access-request" title="Permanent link">#</a></h4> <p>For the records with restricted access to data, a user (either authenticated or anonymous) can send a request to the record owner and ask for it. Send request to access closed data. <div class="highlight"><pre><span></span><code> HTTP method: POST URL path: /api/records/$RECORD_ID/accessrequests Required parameters: None Payload data: JSON object with information about who is sending the request Status code on success: 200 Returns: a message that an email was sent </code></pre></div></p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>POST<span class="w"> </span>-H<span class="w"> </span><span class="s1">'Content-Type:application/json'</span><span class="w"> </span>-d<span class="w"> </span><span class="s1">'{"message":"Explain the request...", "name":"John Smith", "affiliation":"Example University", "email":"j.smith@example.com", "address":"Example street", "city":"Example City", "country":"Example country", "zipcode":"12345", "phone":"7364017452"}'</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/</span><span class="nv">$RECORD_ID</span><span class="s2">/accessrequests"</span> </code></pre></div> <strong><em>Payload:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Explain the request..."</span><span class="p">,</span> <span class="w"> </span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"John Smith"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"affiliation"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Example University"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"email"</span><span class="p">:</span><span class="w"> </span><span class="s2">"j.smith@example.com"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Example street"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"city"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Example City"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"country"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Example country"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"zipcode"</span><span class="p">:</span><span class="w"> </span><span class="s2">"12345"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"phone"</span><span class="p">:</span><span class="w"> </span><span class="s2">"7364017452"</span> <span class="p">}</span> </code></pre></div> <strong><em>Returns:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"An email was sent to the record owner."</span><span class="p">,</span> <span class="w"> </span><span class="nt">"status"</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span> <span class="p">}</span> </code></pre></div></p> <h4 id="get-record-statistics">Get record statistics<a class="headerlink" href="#get-record-statistics" title="Permanent link">#</a></h4> <p>Returns statistics of a record, indicated by statistic type.</p> <p>Supported statistics:</p> <ul> <li>bucket-file-download-total - total downloads per file in a bucket</li> <li>record-views-total <em>(B2SHARE-v2.2.5)</em> - total number of views for a specific record</li> <li>community-record-views-total <em>(B2SHARE-v2.2.5)</em> - total number of views for records in a community</li> <li>community-file-download-total <em>(B2SHARE-v2.2.5)</em> - total number of downloads for records in a community</li> <li>community-file-size-total <em>(B2SHARE-v2.2.5)</em> - total size of files loaded by a community</li> <li>community-file-amount-total <em>(B2SHARE-v2.2.5)</em> - total number of files loaded by a community</li> </ul> <p>More statistics might be added in future releases of B2SHARE. <div class="highlight"><pre><span></span><code> HTTP method: POST URL path: /api/stats Required parameters: None Payload data: JSON structure containing the statistic and required elements for that statistic, see below Status code on success: 200 Returns: JSON structure containing requested statistics </code></pre></div></p> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>POST<span class="w"> </span>-H<span class="w"> </span><span class="s1">'Content-Type:application/json'</span><span class="w"> </span>-d<span class="w"> </span><span class="s1">'<payload>'</span><span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/stats"</span> </code></pre></div> <em>Payload examples</em>: <div class="highlight"><pre><span></span><code><span class="p">{</span><span class="nt">"fileDownloads"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nt">"params"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="nt">"bucket_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"b0377611-d5a4-4683-9781-b83edcb86324"</span><span class="p">},</span><span class="w"> </span><span class="nt">"stat"</span><span class="p">:</span><span class="w"> </span><span class="s2">"bucket-file-download-total"</span><span class="p">}}</span> </code></pre></div> <div class="highlight"><pre><span></span><code><span class="p">{</span><span class="nt">"recordViews"</span><span class="p">:{</span><span class="nt">"params"</span><span class="p">:{</span><span class="nt">"pid_value"</span><span class="p">:</span><span class="s2">"a02cfe6e13da458f9dec96c043a4c12a"</span><span class="p">},</span><span class="nt">"stat"</span><span class="p">:</span><span class="s2">"record-views-total"</span><span class="p">}}</span> </code></pre></div> <div class="highlight"><pre><span></span><code><span class="p">{</span><span class="nt">"communityRecordViewsTotal"</span><span class="p">:{</span><span class="nt">"params"</span><span class="p">:{</span><span class="nt">"community"</span><span class="p">:</span><span class="s2">"77f140b0-d4aa-437e-80d4-32c0abd3746f"</span><span class="p">},</span><span class="nt">"stat"</span><span class="p">:</span><span class="s2">"community-record-views-total"</span><span class="p">}}</span> </code></pre></div> <div class="highlight"><pre><span></span><code><span class="p">{</span><span class="nt">"communityFileDownloadTotal"</span><span class="p">:{</span><span class="nt">"params"</span><span class="p">:{</span><span class="nt">"community"</span><span class="p">:</span><span class="s2">"77f140b0-d4aa-437e-80d4-32c0abd3746f"</span><span class="p">},</span><span class="nt">"stat"</span><span class="p">:</span><span class="s2">"community-file-download-total"</span><span class="p">}}</span> </code></pre></div> <div class="highlight"><pre><span></span><code><span class="p">{</span><span class="nt">"communityFileSizeTotal"</span><span class="p">:{</span><span class="nt">"params"</span><span class="p">:{</span><span class="nt">"community"</span><span class="p">:</span><span class="s2">"77f140b0-d4aa-437e-80d4-32c0abd3746f"</span><span class="p">},</span><span class="nt">"stat"</span><span class="p">:</span><span class="s2">"community-file-size-total"</span><span class="p">}}</span> </code></pre></div> <div class="highlight"><pre><span></span><code><span class="p">{</span><span class="nt">"communityFileAmountTotal"</span><span class="p">:{</span><span class="nt">"params"</span><span class="p">:{</span><span class="nt">"community"</span><span class="p">:</span><span class="s2">"77f140b0-d4aa-437e-80d4-32c0abd3746f"</span><span class="p">},</span><span class="nt">"stat"</span><span class="p">:</span><span class="s2">"community-file-amount-total"</span><span class="p">,}}</span> </code></pre></div> <strong><em>Payload:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"fileDownloads"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"params"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"bucket_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"b0377611-d5a4-4683-9781-b83edcb86324"</span> <span class="w"> </span><span class="p">},</span> <span class="w"> </span><span class="nt">"stat"</span><span class="p">:</span><span class="w"> </span><span class="s2">"bucket-file-download-total"</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </code></pre></div> <strong><em>Returns:</em></strong> <div class="highlight"><pre><span></span><code><span class="p">{</span> <span class="w"> </span><span class="nt">"fileDownloads"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"key_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"terms"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"field"</span><span class="p">:</span><span class="w"> </span><span class="s2">"file_key"</span><span class="p">,</span> <span class="w"> </span><span class="nt">"buckets"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nt">"value"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span> <span class="w"> </span><span class="nt">"key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"file.dat"</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">],</span> <span class="w"> </span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"bucket"</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </code></pre></div></p> <h4 id="delete-draft-record">Delete draft record<a class="headerlink" href="#delete-draft-record" title="Permanent link">#</a></h4> <p>Delete a draft record. <div class="highlight"><pre><span></span><code> HTTP method: DELETE URL path: /api/records/RECORD_ID/draft Required parameters: access_token Status code on success: 204 Returns: no contents. </code></pre></div></p> <blockquote> <p><strong><em>Notes:</em></strong> - you can only delete draft records that you own, not published records.</p> </blockquote> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>DELETE<span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/</span><span class="nv">$RECORD_ID</span><span class="s2">/draft?access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span> </code></pre></div></p> <h4 id="delete-published-record">Delete published record<a class="headerlink" href="#delete-published-record" title="Permanent link">#</a></h4> <p>Delete a published record. <div class="highlight"><pre><span></span><code> HTTP method: DELETE URL path: /api/records/RECORD_ID Required parameters: access_token Status code on success: 204 Returns: no contents. </code></pre></div></p> <blockquote> <p><strong><em>Notes:</em></strong> - only a site administrator can delete a published record.</p> </blockquote> <p><strong>Command:</strong> <div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-X<span class="w"> </span>DELETE<span class="w"> </span><span class="s2">"https://</span><span class="nv">$B2SHARE_HOST</span><span class="s2">/api/records/</span><span class="nv">$RECORD_ID</span><span class="s2">/?access_token=</span><span class="nv">$ACCESS_TOKEN</span><span class="s2">"</span><span class="w"> </span> </code></pre></div></p> <h3 id="support">Support<a class="headerlink" href="#support" title="Permanent link">#</a></h3> <p>Hands-on material is available from the <a href="https://github.com/EUDAT-Training/B2SHARE-Training">EUDAT Training Repository</a>.</p> <p>Our <a href="https://www.eudat.eu/b2share-training-suite">B2SHARE presentations</a> offer training material for the service.</p> <p>Support for B2SHARE and its <strong>REST API</strong> is available via the EUDAT ticketing system through the <a href="https://eudat.eu/support-request?service=B2SHARE">webform</a>.</p> <p>If you have comments on this page, please submit them through the <a href="http://eudat.eu/support-request?service=DOCUMENTATION">EUDAT support request system</a>.</p> <p> Last review : 29.1.2025</p> </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 8z"/></svg> Back to top </button> </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"> This documentation is licensed under <a href='https://creativecommons.org/licenses/by-sa/3.0/legalcode'>CC BY-SA 3.0 <img src='/images/cc-by-sa_icon.png'></a> <!-- a href=''>Imprint</a --> </div> </div> <div class="md-social"> <a href="https://gitlab.eudat.eu/sa.apweiler/eudat-documentation" target="_blank" rel="noopener" title="gitlab.eudat.eu" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.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="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></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.sections", "navigation.tabs", "navigation.top", "toc.integrate", "search.suggest"], "search": "../../assets/javascripts/workers/search.f8cc74c7.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.f1b6f286.min.js"></script> </body> </html>