CINXE.COM
Lufthansa Cargo Developer Portal - Lufthansa Cargo API Portfolio and its functionalities
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rel="P3Pv1" href="/w3c/p3p.xml" /> <link rel="stylesheet" href='https://cdn.jsdelivr.net/npm/@boomi/exosphere@3.0.0/dist/styles.css' /> <script type="text/javascript" > var csp = ''; var nonce = 'd2e98fcbc263a26269f4'; //<![CDATA[ var mashery_info = { }; // iframe'd detection, to pop out if in an iframe if (window.location !== parent.window.location && !(/(page|docs|blog)\/preview/.test(window.location.pathname))) { parent.window.location = window.location; } //]]> </script> <title>Lufthansa Cargo Developer Portal - Lufthansa Cargo API Portfolio and its functionalities</title> <link rel="alternate" type="application/rss+xml" href="https://developer.lufthansa-cargo.com/docs/feed-comments/Home" /> <link rel="stylesheet" type="text/css" media="screen" href="/files/LufthansaCargo.CSS" /> <script src="/public/Mashery/scripts/themes/blackbeard/placeholders.js" type="text/javascript"></script> <script src="/public/Mashery/scripts/Mashery/source/ForumPreview.js" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ </script> <link rel="stylesheet" type="text/css" href="/files/font.css"> <script> //]]> </script> <!-- add syntax highlighter --> <script type="text/javascript" > if(window.SyntaxHighlighter != undefined) { // check for syntax highlighter load before using SyntaxHighlighter.all(); } </script> <!-- end syntax highlighter --> <!--[if lt IE 7.]> <link href="/public/Mashery/styles/IE6.css" type="text/css" media="screen" rel="stylesheet" /> <![endif]--> <!--[if IE 7]> <link href="/public/Mashery/styles/IE7.css" type="text/css" media="screen" rel="stylesheet" /> <![endif]--> <!--[if gte IE 8]> <link href="/public/Mashery/styles/IE8.css" type="text/css" media="screen" rel="stylesheet" /> <![endif]--> </head> <body id="page-docs" class="page-docs read en_US"> <!-- PAGE --> <div id="page" class="page read"> <!-- HEADER --> <div id="header" class="header"> <div id="branding" class="branding"> <div id="branding-logo" class="branding-logo"> Lufthansa Cargo Developer Portal </div><!-- /branding-logo --> <div id="branding-tagline"> </div><!-- /branding-tagline --> <!--div id="branding-mashery"></div --><!-- /branding-mashery --> </div><!-- /branding --> <div id="search" class="search"> <form id="search-input" class="search-input" method="get" action="/search"> <div> <input id="search-box" class="search-box" type="text" value="" name="q" /> <input id="search-button" class="search-button" type="submit" value="Search" /> </div> </form> </div> </div> <!-- /HEADER --> <div id="user" class="user"> <div id="user-auth" class="user-auth"> </div><!-- /user-auth --> <div id="user-main" class="user-main"> </div><!-- /user-main --> <div id="user-nav" class="user-nav"> <ul> <script > window. addEventListener('load', (event) => { var lastSignOut = document.getElementById("lastSignOut"); if(lastSignOut) { lastSignOut.addEventListener("click", function () { document.getElementById('mashery-logout-form').submit(); }); } }); </script> <li class="first sign-in"> <a href="https://developer.lufthansa-cargo.com/login/login?r=https%3A%2F%2Fdeveloper.lufthansa-cargo.com%2Fdocs&h=221712064a037116d30c4ab010a54310">Sign In</a> </li> <li class="register"> <a href="https://developer.lufthansa-cargo.com/member/register">Register</a> </li> </ul> </div><!-- /user-nav --> <div id="user-menu"> </div> </div><!-- /user --> <div id="info" class="info" style="display: none;"> </div><!-- /info --> <!-- CONTENT --> <div id="content" class="content"> <div id="main" class="main"> <ul class="pun-nav last"><li class="previous empty"><span class="label">Previous:</span> </li><li class="up empty"><span class="label">Up:</span> </li><li class="next"><span class="label">Next:</span> <a href="https://developer.lufthansa-cargo.com/docs/read/howtoconnect">How to connect</a></li></ul> <h1 class="first">Lufthansa Cargo API Portfolio and its functionalities</h1> <div class="section"> <div class="section-body"> <svg width="960" height="567" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="hidden"><defs><clipPath id="clip0"><rect x="0" y="0" width="723900" height="733425"/></clipPath><image width="128" height="128" xlink:href="data:image/png;base64,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" preserveAspectRatio="none" id="img1"></image><clipPath id="clip2"><rect x="0" y="0" width="723900" height="723900"/></clipPath><clipPath id="clip3"><rect x="0" y="0" width="323850" height="333375"/></clipPath><image width="42" height="42" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAMAAAANmfvwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIKUExURQAAAAAAAAAAAAAAgAAAVQAAQAAAMwAAVQAASQAkSQAgQAAgYAAcVQAXRgAUTgARVQAPSwAORwAcRwANUQAaTQAWTgAVQAAVSgAURwAURQAUTgASRgARTQAZSgAXTQAPSwAVRwAVRQcVTAAUSgAUTgcUSAASTwAYTQARSwYRSwYRSgYWSAUVSgUUTQAUTgATTQUTRwUTSgUXSgUXTwQWTAQUTAQUSwQTSQQTTQQTTwQXSwQVTgMRTQMVTAMTSgMTTAMWTAMTSwMVTgMUSwMUSgMTTQMVSwMSSgMSSwMUTAIUSgIUTAIVSwUVSwUVTQUUTQQUTAQUSwQRSwQVSwQVSgQVSwQVTAQUSQQUSwQUTAQUSwQTTAQTSwQVSwQVSwQUTQUVTQQVTAUTTAMVTQMTSwMTTAMTSgMVSgUVTAMUTAUUSwUUTAMVTAUUSwMVTAUVTAMVSwMVSwUTSwUVTAUUTAUUTQQWTAQVTQQVTAQUSwQWSwQWTAQVTAQXTAQVTQQVTAQWTAQVTAUVSwQVTQQVSwQVTQQVTAUWTQUVSwUVTAUWTQUVTQUVTQUVTAQVTAUWTQUWSwUWTQUVTQUWTQUWSwUXTQQVTAQVTAQVTQQVTQQWTQQVTAQWTQQWTQQVSwQVTQUWTQUWTQUWTQUWTQUWTQUWTQUWTQUVTQUVTQUWTQUWTQUWTQUWTQUWTbvcnjcAAACtdFJOUwABAgIDBAUGBwcICAkLDQ8REhITFBcYGBkaGh0eHyEiJCUlJicnKissLC0uMDI0NTY3Nzc5QEFCQkRESElKT1FRUlVYWl1fYWNlZ2htbW5wcnR3d3l6fH19gIKDhISFj4+RkZKTk5SUlJeYmpucnp6foKChpKarrK6wsbG1tbe4uLm6vr/BwsPExcnKy8zR1Nrc3t/h4uPk5unp6urs7+/x8/T29/j5+vv7/P3+ipUr2gAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAUFJREFUOE9jGAUEAIe+mQyUiQuI5C9cXW/JC+VhBVymvgmTpwXwQLk4AKdFXaOYvIUuPqMY+bWaFy5eNN2cESqABah2LJs4ceL8JW7iokAghK6SXU5NMmJlmaKCgtfy2Q21QJDIBZUCA0F1FY3iLpfqtZ25WdmlK9aCQS+Kozxn9Qf2rnVtX7t29arVayAq1vagKPFbPSO0e3VQBVRy7ao5U6qUkZ3CxGlblGIfVeQevAisYM3kDD0WqBwUSIdn5qWlpeUku5SvBCmZ68gMlYEDHiWDCUmaHjNthKVC5q1dVqnDCpVAAXxN6S06QJpHNMaKF0fIOU8KY2NgYK5MjY3ukoWKoQK7Eu9MfyYG7qnT2/qWmkAFkYCET/z0mriCmYWh2lNbjSMXGEHFkYCAtRMEOEgZKjMImrNDxUcBTsDAAAC0yGUKmbwd6gAAAABJRU5ErkJggg==" preserveAspectRatio="none" id="img4"></image><clipPath id="clip5"><rect x="0" y="0" width="323850" height="323850"/></clipPath><clipPath id="clip6"><rect x="0" y="0" width="647700" height="657225"/></clipPath><image width="128" height="128" xlink:href="data:image/png;base64,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" preserveAspectRatio="none" id="img7"></image><clipPath id="clip8"><rect x="0" y="0" width="647700" height="647700"/></clipPath><clipPath id="clip9"><rect x="0" y="0" width="466725" height="466725"/></clipPath><image width="64" height="64" xlink:href="data:image/png;base64,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" preserveAspectRatio="none" id="img10"></image><clipPath id="clip11"><rect x="0" y="-0.0625" width="466725" height="466725"/></clipPath><clipPath id="clip12"><rect x="0" y="0" width="295275" height="304800"/></clipPath><image width="38" height="38" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAfCAMAAAAocOYLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAFcUExURQAAAAAAAAAAAAAAgAAAVQAAQAAAVQAASQAkSQAgQAAcOQAcVQAVQAAUTgASSQARRAARVQAQUAAPSwAORwAYSQAVSgAURwAUTgATTAkTTAASSQASRgAQSgAQSAAXTQAVTAAUSAAUTgYYTQARSwAQSQAVTgUTTwQVSAQXSwQWTQQVSgMUSwMUTgMUTAMTSgMWTQMTSwMWSwMVTQMVTAMUSwMXSgMUSgMUTQMTSwMTSgMTTQUWTQUVTAUVTAUVTAQWTAQVTQQVSwQVTQQVTQQUSwQUSwQUSgQUTAQUSwQVTAUUSwUVSgUVTAMTTQMVTQMWTQMUSwMVTAMVSwMVSwMUTAMWTQMVTQQVTAQVTQQVTAQWTAQVTQQWSwQUTAUWTAQVTAUVSwUVTAQVTAQUSwUWTQUVTAUVTQUVTQUVTQQVTAQWTQQWTQQWTQUWTAUWTQUWTQUVTQUWTQUWTQUWTbH/fG8AAABzdFJOUwABAgIDBAYHBwgJCQwNDg8PEBESFRgZGhsbHB0fICElJycrLDExNzxERkhLS01PUFJSVldYWVpaXF1dXWtsb3Z4enp7fX5/gIKHjpCQkpKVmJucoKKiqLW3ubm6uru7wsTGx8jR1tje4uPk6Onq8/X8/P6EPx7RAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABMElEQVQ4T+XR11LCUBCA4Q0kdKSKEhUVQSkCdsVCsFIsgIUi0lRQYgPP+8+YA8sAI0+g/83u5LvZzIH/kWJ3jg6Ze9Mto8tsWEFHL3n4iaeTS3wlOLrwjztyOjFnLqAygWL++o283yyowKQK5JxoUkz03LB9pl57IbTXPe3pluEiyqACsCW/rb6y+PzdcVJfWq3blkssKsBM1bJR0R+3u0zaJ2OVdUt1GhUgWGBjaeMtMiF3xnSMLQRRAXxF7ihjzqISkjVnDrmiDxVgsmb3xIc87rHXJlCl+/Ih7fiQ2zShfP8+JpJUgvUBlZB7KyiTkf7/gZ5Xp8otVEJa5ZRmSo/WTdf4GKyhw++9OK9f6kAQhH26eDuv8KsrURQvcR+Vq/nZdOE+Ksbhdwyc/ecD+AE920/dbc8o9gAAAABJRU5ErkJggg==" preserveAspectRatio="none" id="img13"></image><clipPath id="clip14"><rect x="0" y="0" width="295275" height="295275"/></clipPath><clipPath id="clip15"><rect x="0" y="0" width="466725" height="466725"/></clipPath><image width="150" height="150" xlink:href="data:image/png;base64,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" preserveAspectRatio="none" id="img16"></image><clipPath id="clip17"><rect x="0" y="0" width="733425" height="733425"/></clipPath><image width="75" height="75" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAMAAAAPkIrYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADhUExURQAAAAAAAAAAMwAASQARRAAPSwANTQAMSQAXUQAWTgAUTgATTAAXSwATSwYSTwAQSgUUSwQWTAQWTgQVSgQVTgQUTQQUTAQXTAQXSwMUSwMTSwMTTQMVTQMVTQIWTAITTQUVTQUUSwQWTAQWTAQVTQQWTAQVSwQVTQQWTQMWTAMVSwMVTAUVTQQUTQQWTQQUSwMWTQUWSwMWTQUWTAIWTAQVTAQVTAQUTAQVTAQVTAQWTAQUTQQVTAQUTAQVTQQVTQQVTAQWTAQVTAUVTAQVTAUVTAUVSwUVTAUVTAUWTAUWTXojdJ4AAABKdFJOUwABBQcPERQVFhcaGyIpKjAzOTs+Pj9AQ0ROUl1gY2hqbnB1dnh/hIiMmpydqq+5vMPEycnP0dPU2OPl5+nq6uvu8vT29/v8/P3+yhKYsAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAUlJREFUWEft1tdWg0AQBuCxYI0YY+917b0nlqjYmPd/IHeXX8HoOTLIhZ7Md0GY2fCH2QsCKaXUn1DDZxkYn2XQLJmSsozD/ohOcZxCp7ipFDotDvP/SC2Fzidb9n7ncf6jmWQ+6xwdomD/5PIqQvsMzTyucU1mkrVHtJjvutDLB1eNokz07Lje8wDKvNZ91MdtdR5U7TFwtzaSdASMj0pHfGKOm7Yxh1qiNYteXbmJQuZL1i9olsz/yOqoLu3WM7VMNmsvOXd8LYWs70zgK7lplkw7ZLWDcfeOsxLYw2rgamP6fb8Iv/e3Fb/Zs/ZBwXyKFTnjHwkVtu8mHBNt80WxZ4RjOAzDPpfVzXWb9zLEk1gS8zNu+BkfiHp5kfgeS2LvM04PHvEwHXOjERceMrtfN3bLoijiZb8il83iMV6wRUn/JEopVQqiN6mhkBNW8qBMAAAAAElFTkSuQmCC" preserveAspectRatio="none" id="img18"></image><clipPath id="clip19"><rect x="0" y="0" width="371475" height="371475"/></clipPath><clipPath id="clip20"><rect x="0" y="4.65661e-10" width="781050" height="781050"/></clipPath><image width="150" height="150" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAMAAAAL34HQAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACKUExURQAAAAAAAAAAgAAAQAArVQAcVQAUTgAeSwAXRgkTTAgXTQYTTQUWTAUXSgUXTwQUTAQYTAMVTQYWTQUWTQUXTQUWTAQWTgQWTAYWTgYWTQUWTQUWTAQWTQYXTQUVTQUVTQUVTAQWTAQVTQMVTQQWTgUVTAUWTQUWTAUVTAUWTAUWTQUWTAUWTQUWTaDVL2gAAAAtdFJOUwABAgQGCQ0RFhshKC83N0BASVNdZGhzf4CLlqGstb6/x8/W3ePp7fL2+fv9/oStws0AAAAJcEhZcwAACxMAAAsTAQCanBgAAAElSURBVHhe7de3bsNQEETRcc5yzjnn//89i/SaogQ3Yxec4p5CgEDs4LZPAAAAAAAAAABgaCefv9tpPl7Xn/9pp0xkOchykOUgy0GWgywHWQ6yHGQ5yHKQ5SDLQZaDLAdZDrIcZDnIcpDlIMsRmnVQt7MGzpo7r+MZA2dp8aqupw2dpZW7Op8yeJbWH+u+b/gsjV5qoCcgS3vvtTCRkKWjWpiIyNJZTXQyshYua+NHRpaWb2ukhGRp7aFWvqVkafO5ZloxWdp9q51GTpYOa6cRlKXTGhpLypq/qKWsLC3d1FRWllbv+1sxWdp46m3lZGn7dbIVlKX9j24rKUvH3VZUVvsYystqH0OBWc1jKDFr/BiKzNJoq/mNywIAAAAAAAAAAH8nfQHxrkqKzfjMLgAAAABJRU5ErkJggg==" preserveAspectRatio="none" id="img21"></image><clipPath id="clip22"><rect x="0" y="-0.25" width="781050" height="781050"/></clipPath><clipPath id="clip23"><rect x="0" y="-4.65661e-10" width="295275" height="304800"/></clipPath><image width="38" height="38" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAMAAACf4xmcAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGbUExURQAAAP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////39/f39/f39/f39/f39/f39/f////39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f////39/f39/f39/f39/f39/f////7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v////7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v////7+/v7+/v7+/v7+/v7+/v7+/v7+/v///5KspQUAAACIdFJOUwABAgMEBQYHCAkLDA0PEBESExQVFhcYGRodHh8gJCUoKSssMDEyNDY7PT4/QkNETE9RUlRYX2BhY2VoaWttcHN2enx9gYKDhIaHiIyNkZOZmpucnZ6goqOkpaiqq6yytba5uru8v8DBwsPHyMnNz9HS09XW19jg4ubn6Onr7O3u8PH1+vv8/f5rzwU7AAAACXBIWXMAAAsTAAALEwEAmpwYAAABgklEQVQ4T+2RV1NCQQyF4xUUe8Hee0HsvSMo9q6oCGLFriBWsIvc/Gxz14yMKD7x6Pewsyc5k02y8E8EiNEZlneOj7YWB2tUHPpJ9dIzfvE0V8nh75Rvi/Tj2Z7z/EVcN8s4FUQ9/o7od3TmCxVV1LsnI76NhDytPSTTbAErQek6GZ1prAQ5V4iuCrqo9abVTYdlSKeUqb9B9GQLgyDJjWiNo5oT96IpwmtOBUg/QHQnsQlgBnFeAuhWBpW9LrcwP7YDxO0gTrMJIMO1IYF6mXInXeKR/P4LEgsqSHTtJwuLQJsMkg3xtoU1gNRNS7FKkKvhAGNGPM2itH50xTJcGwVQfI1o5mQQG16mADR4lLZo7DqAwge0cDKIeo12PhCgGe58tLD3PoCmKSr6C60yvhozAfIm/Sg3c/AHGh8+V31eG/3oDWk+iBE76CwpoWMs0C9Cv9ITDQm7iLvxkNnGoTCYlEFNLMJjV2x2FuExKDYDi/BobLJsj2XxF1n0Z/9EAoAP7BFvx1FoxAwAAAAASUVORK5CYII=" preserveAspectRatio="none" id="img24"></image><clipPath id="clip25"><rect x="0" y="0" width="295275" height="295275"/></clipPath><clipPath id="clip26"><rect x="0" y="4.65661e-10" width="304800" height="304800"/></clipPath><image width="38" height="38" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAMAAACf4xmcAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABsUExURQAAAAAAAAAAZgAAVQAXUQAWTgAVSgoUUgoUTgUYTQUYTAQYTAQYSwQYTgQXTQYVTgUWTQQVTgQXTAQWTQQWTAUXTQYWTQUVTQUVTAUUTQQVTQQXTQQWTQUVTAUVTQUWTAUVTQUVTQUWTQUWTZuRkyQAAAAjdFJOUwABBQYWFxgZGjU2QEFBQlVqeXx+f5G3vsfI1tfa6ery9fj+Iub/nAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAO9JREFUOE/lk8kWgjAMRSNqHZmkyiAKkv//R6N9RcpwZK13lSb3tDSh9L8oPwx9hcUESl/5zVVPm15SG+lFnXhI91A5DJCPbqhKlFvKEW9p97qfTjeE2fDcBCXeEe0RcoJii7JfX8ti8bCLtam2aBSYA6IAIbNG2YJ+CdX5XCFkLlAGCuk+jXuqj7QQR1GMUPAhGEJkhS3RBqEQQjDM1DqHutoRgqFzBUdrVhDApyGO1mtIp72O1m9vOyxHGwzrM/quNhg9eRlK6eWSIhz5kWb+luLZ/UA28WrmPRlhrYvm5TSFHtzRZXWQ5/zF+V2InkfcO6prfIJhAAAAAElFTkSuQmCC" preserveAspectRatio="none" id="img27"></image><clipPath id="clip28"><rect x="-0.5" y="-0.25" width="304800" height="304800"/></clipPath></defs><g><rect x="0" y="0" width="960" height="567" fill="#FFFFFF"/><rect x="57.5001" y="19.5001" width="393" height="27" stroke="#05164D" stroke-linejoin="round" stroke-miterlimit="10" fill="#002060"/><text fill="#FFFFFF" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(211.085 35)">Offer & booking</text><rect x="513.5" y="19.5001" width="393" height="27" stroke="#05164D" stroke-linejoin="round" stroke-miterlimit="10" fill="#002060"/><text fill="#FFFFFF" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(670.13 35)">Transportation</text><path d="M166.5 168.5 166.5 335.823" stroke="#05164D" stroke-miterlimit="8" fill="none" fill-rule="evenodd"/><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(73.0557 284)">smartBooking</text><g clip-path="url(#clip0)" transform="matrix(0.000104987 0 0 0.000104987 72 210)"><g clip-path="url(#clip2)" transform="matrix(1 0 0 1.01316 -0.0625 -0.125)"><use width="100%" height="100%" xlink:href="#img1" transform="scale(5655.47 5655.47)"></use></g></g><rect x="91" y="240" width="37" height="21" fill="#FFFFFF"/><g clip-path="url(#clip3)" transform="matrix(0.000104987 0 0 0.000104987 94 232)"><g clip-path="url(#clip5)" transform="matrix(1 0 0 1.02941 -0.0625 0)"><use width="100%" height="100%" xlink:href="#img4" transform="scale(7710.71 7710.71)"></use></g></g><path d="M166.5 81.5001 166.5 144.786" stroke="#05164D" stroke-miterlimit="8" fill="none" fill-rule="evenodd"/><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(190.812 95)">Get detailed routing information</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(190.812 109)">(incl. CO2)</text><rect x="313" y="123" width="134" height="21" fill="#D7E0FC"/><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(348.124 137)">Open Usage</text><g clip-path="url(#clip6)" transform="matrix(0.000104987 0 0 0.000104987 75 67)"><g clip-path="url(#clip8)" transform="matrix(1 0 0 1.01471 -0.0625 0)"><use width="100%" height="100%" xlink:href="#img7" transform="scale(5060.16 5060.16)"></use></g></g><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(75.4979 133)">Routing Offer</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(190.812 181)">Searching for the best offer and direct booking?</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(190.812 195)">Then use this API to:</text><text fill="#05164D" font-family="Arial,Arial_MSFontService,sans-serif" font-weight="400" font-size="12" transform="translate(190.812 216)">•</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(204.345 216)">G</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(212.679 216)">et</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(226.012 216)">a qualified offer (incl. spot rates)</text><text fill="#05164D" font-family="Arial,Arial_MSFontService,sans-serif" font-weight="400" font-size="12" transform="translate(190.812 237)">•</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(204.345 237)">A</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(211.845 237)">utomatically</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(276.512 237)">assign an AWB</text><text fill="#05164D" font-family="Arial,Arial_MSFontService,sans-serif" font-weight="400" font-size="12" transform="translate(190.812 258)">•</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(204.345 258)">C</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(212.345 258)">reate</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(241.345 258)">your booking</text><text fill="#05164D" font-family="Arial,Arial_MSFontService,sans-serif" font-weight="400" font-size="12" transform="translate(190.812 280)">•</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(204.345 280)">U</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(212.512 280)">pdate</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(242.012 280)">, get or cancel your booking</text><text fill="#05164D" font-family="Arial,Arial_MSFontService,sans-serif" font-weight="400" font-size="12" transform="translate(190.812 301)">•</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(204.345 301)">R</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(211.845 301)">eceive</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(247.512 301)">automated booking status updates</text><rect x="313" y="314" width="134" height="21" fill="#E4E4E4"/><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(337.707 328)">Prior agreement</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(540.793 131)">Shipment</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(544.88 145)">Tracking</text><g clip-path="url(#clip9)" transform="matrix(0.000104987 0 0 0.000104987 543 70)"><g clip-path="url(#clip11)"><use width="100%" height="100%" xlink:href="#img10" transform="matrix(7292.58 0 0 7292.58 0 -0.0625)"></use></g></g><path d="M624.5 82.5001 624.5 166.734" stroke="#05164D" stroke-miterlimit="8" fill="none" fill-rule="evenodd"/><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(640.835 96)">Track the</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(690.668 96)">current status</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(763.668 96)">of your shipment</text><rect x="771" y="137" width="135" height="21" fill="#D7E0FC"/><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(806.352 151)">Open Usage</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(640.34 238)">Subscribe to updates to be informed when tracking</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(640.34 252)">status changes</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(542.126 274)">Shipment</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(543.546 288)">Tracking</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(541.293 303)">Subscribe</text><g clip-path="url(#clip12)" transform="matrix(0.000104987 0 0 0.000104987 574 206)"><g clip-path="url(#clip14)" transform="scale(1 1.03226)"><use width="100%" height="100%" xlink:href="#img13" transform="scale(7770.39 7770.39)"></use></g></g><g transform="matrix(0.000104987 0 0 0.000104987 543 217)"><g clip-path="url(#clip15)"><use width="100%" height="100%" xlink:href="#img10" transform="scale(7292.58 7292.58)"></use></g></g><rect x="771" y="283" width="135" height="21" fill="#D7E0FC"/><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(806.352 297)">Open Usage</text><path d="M624.5 225.5 624.5 309.734" stroke="#05164D" stroke-miterlimit="8" fill="none" fill-rule="evenodd"/><path d="M165.5 373.5 166.944 493.076" stroke="#05164D" stroke-miterlimit="8" fill="none" fill-rule="evenodd"/><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(188.629 387)">Get detailed information about our stations like:</text><text fill="#05164D" font-family="Arial,Arial_MSFontService,sans-serif" font-weight="400" font-size="12" transform="translate(188.629 408)">•</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(202.162 408)">Opening</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(248.496 408)">hours</text><text fill="#05164D" font-family="Arial,Arial_MSFontService,sans-serif" font-weight="400" font-size="12" transform="translate(188.629 429)">•</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(202.162 429)">Relevant</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(249.662 429)">contacts</text><text fill="#05164D" font-family="Arial,Arial_MSFontService,sans-serif" font-weight="400" font-size="12" transform="translate(188.629 450)">•</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(202.162 450)">Relevant</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(249.662 450)">Information for Active Temp Control &</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(202.162 464)">Passive Temp Support handling</text><rect x="311" y="478" width="134" height="21" fill="#D7E0FC"/><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(345.94 493)">Open Usage</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(55.0302 454)">Station Information</text><g transform="matrix(0.000104987 0 0 0.000104987 74 372)"><g clip-path="url(#clip17)" transform="scale(1 1.02597)"><use width="100%" height="100%" xlink:href="#img16" transform="scale(4889.5 4889.5)"></use></g></g><rect x="90" y="404" width="33" height="29" fill="#FFFFFF"/><g transform="matrix(0.000104987 0 0 0.000104987 87 399)"><g clip-path="url(#clip19)"><use width="100%" height="100%" xlink:href="#img18" transform="scale(4953 4953)"></use></g></g><rect x="97" y="426" width="15" height="5" fill="#FFFFFF"/><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(641.785 348)">Subscribe to sensory data from</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(802.451 348)">smartULDs</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(861.951 348)">such as:</text><text fill="#05164D" font-family="Arial,Arial_MSFontService,sans-serif" font-weight="400" font-size="12" transform="translate(641.785 369)">•</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(659.785 369)">Temperatures</text><text fill="#05164D" font-family="Arial,Arial_MSFontService,sans-serif" font-weight="400" font-size="12" transform="translate(641.785 390)">•</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(659.785 390)">Baterylevels</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(724.451 390)">or</text><text fill="#05164D" font-family="Arial,Arial_MSFontService,sans-serif" font-weight="400" font-size="12" transform="translate(641.785 411)">•</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(659.785 411)">Geodata</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(641.785 432)">Receive status of container checks performed</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(641.785 447)">during handling for</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(740.118 447)">smatULds</text><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="300" font-size="12" transform="translate(794.451 447)">and regular ULDs</text><path d="M624.5 337.5 624.5 482.611" stroke="#05164D" stroke-miterlimit="8" fill="none" fill-rule="evenodd"/><rect x="771" y="461" width="135" height="21" fill="#E4E4E4"/><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(795.935 476)">Prior agreement</text><g clip-path="url(#clip20)" transform="matrix(0.000104987 0 0 0.000104987 527 369)"><g clip-path="url(#clip22)"><use width="100%" height="100%" xlink:href="#img21" transform="matrix(5207 0 0 5207 0 -0.25)"></use></g></g><g clip-path="url(#clip23)" transform="matrix(0.000104987 0 0 0.000104987 554 394)"><g clip-path="url(#clip25)" transform="scale(1 1.03226)"><use width="100%" height="100%" xlink:href="#img24" transform="scale(7770.39 7770.39)"></use></g></g><path d="M579 390.5C579 383.044 584.82 377 592 377 599.18 377 605 383.044 605 390.5 605 397.956 599.18 404 592 404 584.82 404 579 397.956 579 390.5Z" fill="#FFFFFF" fill-rule="evenodd"/><g clip-path="url(#clip26)" transform="matrix(0.000104987 0 0 0.000104987 576 374)"><g clip-path="url(#clip28)"><use width="100%" height="100%" xlink:href="#img27" transform="matrix(8021.05 0 0 8021.05 -0.5 -0.25)"></use></g></g><text fill="#05164D" font-family="Lufthansa Office Text,Lufthansa Office Text_MSFontService,sans-serif" font-weight="700" font-size="12" transform="translate(539.601 445)">ULD Status</text></g></svg> </div> <div class="section-meta"> <p> <span class="revision">version 19</span> <span class="timestamp">as of <abbr title="5/27/24 4:54 am">6 months ago</abbr></span> <span class="moniker">by <span class="user-reference">Florian Goertz</span></span></p> </div> <ul class="pun-nav last"><li class="previous empty"><span class="label">Previous:</span> </li><li class="up empty"><span class="label">Up:</span> </li><li class="next"><span class="label">Next:</span> <a href="https://developer.lufthansa-cargo.com/docs/read/howtoconnect">How to connect</a></li></ul> </div> <div class="comments"> <h3> 0 Comments </h3> <p><a href="https://developer.lufthansa-cargo.com/login/login?r=https%3A%2F%2Fdeveloper.lufthansa-cargo.com%2Fdocs&h=221712064a037116d30c4ab010a54310">Please sign in to post a comment.</a></p> </div> </div><!-- /main --> <!-- SUB --> <div id="sub" class="sub"> <h2>Docs Navigation</h2> <ul> <li class="active"><a href="https://developer.lufthansa-cargo.com/docs/read/Home" class="active">Lufthansa Cargo API Portfolio and its functionalities</a></li> <li><a href="https://developer.lufthansa-cargo.com/docs/read/howtoconnect">How to connect</a></li> <li><a href="https://developer.lufthansa-cargo.com/docs/read/apis">Public APIs</a><ul> <li><a href="https://developer.lufthansa-cargo.com/docs/read/apis/shipmenttracking">Shipment Tracking</a></li> <li><a href="https://developer.lufthansa-cargo.com/docs/read/apis/shipmenttrackingsubscribe">Shipment Tracking Subscribe</a></li> <li><a href="https://developer.lufthansa-cargo.com/docs/read/apis/routingoffer">Routing Offer</a></li> <li><a href="https://developer.lufthansa-cargo.com/docs/read/apis/stationinformation">Station Information</a></li> </ul> </li> <li><a href="https://developer.lufthansa-cargo.com/docs/read/prioragreementapis">Prior Agreement APIs</a><ul> <li><a href="https://developer.lufthansa-cargo.com/docs/read/prioragreementapis/uldstatus">ULD Status</a></li> <li><a href="https://developer.lufthansa-cargo.com/docs/read/prioragreementapis/smartbooking">smartBooking</a></li> <li><a href="https://developer.lufthansa-cargo.com/docs/read/prioragreementapis/onerecord">ONE Record</a></li> </ul> </li> </ul> </div> <!-- /SUB --> <div id="breadcrumbs"> </div><!-- /breadcrumbs --> <div id="local" class="local"> <ul> <li class=" first"><a href="https://developer-test.lufthansa-cargo.com/">Developer Portal Test</a></li> <li class="active "><a href="https://developer.lufthansa-cargo.com/docs">Overview APIs</a></li> <li class=" "><a href="https://developer.lufthansa-cargo.com/docs/read/howtoconnect">How to connect</a></li> <li class=" "><a href="https://developer.lufthansa-cargo.com/io-docs">Interactive API</a></li> <li class=" "><a href="https://developer.lufthansa-cargo.com/news">News</a></li> <li class=" last"><a href="https://developer.lufthansa-cargo.com/contact">Contact</a></li> </ul> </div><!-- /local --> <div id="nav" class="nav"> </div><!-- /nav --> </div> <!-- /CONTENT --> <div id="footer" class="footer"> <ul> <li class=" first"><a href="https://developer.lufthansa-cargo.com/contact">Contact Us</a></li> <li class=" "><a href="https://developer.lufthansa-cargo.com/termsandconditions">Terms</a></li> <li class=" "><a href="https://lufthansa-cargo.com/footer/bottomnav/imprint">Imprint</a></li> <li class=" last"><a href="https://lufthansa-cargo.com/footer/bottomnav/privacy">Privacy</a></li> </ul> <!-- SITEINFO --> <div id="siteinfo" class="siteinfo"> </div> <!-- /SITEINFO --> </div><!-- /footer --> </div> <!-- /page --> <!-- Start Branding script tag --> <script type="text/javascript" > // get the branding logo to set the mouseover/out and onclick var brandingLogo = document.getElementById('branding-logo'); if(brandingLogo != undefined) { brandingLogo.addEventListener("click", function () { location.href = "https://developer.lufthansa-cargo.com/"; }); brandingLogo.addEventListener("mouseover", function () { this.style.cursor = 'pointer'; }); brandingLogo.addEventListener("mouseout", function () { this.style.cursor = 'auto'; }); } // get the mashery logo to set the mouseover/out and onclick var masheryLogo = document.getElementById('branding-mashery'); if(masheryLogo != undefined) { masheryLogo.addEventListener("click", function () { location.href = "http://www.mashery.com/"; }); masheryLogo.addEventListener("mouseover", function () { this.style.cursor = 'pointer'; }); masheryLogo.addEventListener("mouseout", function () { this.style.cursor = 'auto'; }); } </script> <!-- End Branding script tag --> <!-- <div id="extra1"> </div> <div id="extra2"> </div> --> <script type="text/javascript" > const enableBoomiTheme = 0; window.isOidcUser = 0; </script> <script type="text/javascript" src="/public/Mashery/scripts/themes/blackbeard/app.js"></script> <script type="text/javascript"> //<![CDATA[ /*! * Templates & Initializations * lufthansa-cargo v2.0.0 * Portal Theme Starter Kit v2.10.0 - Default Theme * http://github.com/mashery/portal-theme-starter-kit */ /** * Theme Templates */ // Enable full width layouts window.portalOptions.templates.page = function() { return '<div class="main container container-small content" id="main">' + (mashery.globals.noHeading ? '' : '<h1>{{content.heading}}</h1>') + '{{content.main}}' + '</div>'; }; // Add theme style hook document.documentElement.className += ' js-theme-default'; // Logo portalOptions.logo = '<img alt="Lufthansa Cargo Developer Program" height="36" width="300" src="/files/logoNeu.png">'; // Favicon portalOptions.favicon = true; portalOptions.faviconSizes = '16x16 24x24 32x32 64x64'; /** * Initialize plugins */ window.addEventListener('portalAfterRender', function() { // Expand-and-collapse nav on small viewports astro.init(); // Enhanced documentation if (mashery.globals.betterDocs) { new BetterDocs('.content', { langs: [{ selector: 'bash', title: 'Bash' }, { selector: 'javascript, js', title: 'JavaScript', }, { selector: 'ruby', title: 'Ruby' }, { selector: 'python', title: 'Python' } ], langDefault: 'js', wideLayout: !mashery.globals.betterDocsOneColumn, }); } // Responsive iFrame Videos fluidvids.init({ selector: ['iframe', 'object'], // runs querySelectorAll() players: ['www.youtube.com', 'player.vimeo.com'] // players to support }); // Get the latest blog posts latestBlogPosts(); }, false); // // Record customer terms accepted on user registration // function getRequiredRegistrationTextFields() { // List of required text fields var requiredRegistrationTextFields = ["members-handle", "members-moniker", "members-email", "email_again", "passwd_new", "passwd_again", "applications-name" ]; return requiredRegistrationTextFields; } // All custom fields complete function isFormComplete() { var requiredRegistrationTextFields = getRequiredRegistrationTextFields(); for (var field = 0; field < requiredRegistrationTextFields.length; field++) { var textField = document.getElementById(requiredRegistrationTextFields[field]); if (!textField.value) { return false; } } var customerTerms = document.getElementById("customerTerms").checked; var masheryTerms = document.getElementById("masheryTerms").checked; var shipmentTrackingSubscribe = document.getElementById("shipmentTrackingSubscribe").checked; //CS7608 // var oneRecordAPIIdentityProvider = document.getElementById("oneRecordAPIIdentityProvider").checked; // var oneRecordAPIURI = document.getElementById("oneRecordAPIURI").checked; var oneRecordAPI = document.getElementById("oneRecordAPI").checked; // if (customerTerms && masheryTerms && (!shipmentTrackingSubscribe || ( // shipmentTrackingSubscribe && document.getElementById("applications-shipment_tracking_sub_callback") // .value))) { // return true; // } else { // return false; // } //CS7608 // if (customerTerms && masheryTerms && // (!shipmentTrackingSubscribe || ( shipmentTrackingSubscribe && document.getElementById("applications-shipment_tracking_sub_callback").value)) && // (!oneRecordAPIIdentityProvider || (oneRecordAPIIdentityProvider && document.getElementById("applications-recordapi_idpissuer_sub_callback").value && document.getElementById("applications-recordapi_idppuburl_sub_callback").value)) && // (!oneRecordAPIURI || (oneRecordAPIURI && document.getElementById("applications-recordapi_recorduri_sub_callback").value)) // ) { // return true; // } else { // return false; // } // CS7608 Customers wants to make other fields (idppuburl,idpissuer ) of OneRecordAPI optional // (!oneRecordAPI || (oneRecordAPI && document.getElementById("applications-recordapi_idpissuer_sub_callback").value && document.getElementById("applications-recordapi_idppuburl_sub_callback").value) && document.getElementById("applications-recordapi_recorduri_sub_callback").value)) if (customerTerms && masheryTerms && (!shipmentTrackingSubscribe || ( shipmentTrackingSubscribe && document.getElementById("applications-shipment_tracking_sub_callback").value)) && (!oneRecordAPI || (oneRecordAPI && document.getElementById("applications-recordapi_recorduri_sub_callback").value))) { return true; } else { return false; } } // Update member form field when terms checked function setRequestedApisAndAcceptedTerms() { var acceptedTerms = ""; if (isFormComplete()) { var now = new Date(); var apis = document.getElementsByClassName("customerAPI"); var checkedApis = ""; for (let i = 0; i < apis.length; i++) { if (apis[i].checked == true) checkedApis = checkedApis + apis[i].nextSibling.data + ','; } document.getElementById("applications-requested_api_access").value = checkedApis; document.getElementById("applications-terms_and_conditions_accepted").value = now.toISOString(); document.getElementById("members-terms_accepted").value = now.toISOString(); document.getElementById("process-register").disabled = false; } else { document.getElementById("process-register").disabled = true; document.getElementById("members-terms_accepted").value = ""; } } // Update member form field when terms checked function setRequestedApisAndAcceptedTermsForEdit() { var acceptedTerms = ""; if (document.getElementById("customerTerms").checked) { var now = new Date(); var apis = document.getElementsByClassName("customerAPI"); var checkedApis = ""; for (let i = 0; i < apis.length; i++) { if (apis[i].checked == true) checkedApis = checkedApis + apis[i].nextSibling.data + ','; } document.getElementById("applications-requested_api_access").value = checkedApis; document.getElementById("applications-terms_and_conditions_accepted").value = now.toISOString(); document.getElementById("process-save").disabled = false; } else { document.getElementById("process-save").disabled = true; } } // Show shipment tracking callback url field function showShipmentTrackingSubscribeCallbackField() { var required = document.getElementById("shipmentTrackingSubscribe").checked; var fieldId = "applications-shipment_tracking_sub_callback"; if (required) { document.getElementById(fieldId).parentElement.classList.add("require"); document.getElementById(fieldId).classList.add("require"); document.getElementById(fieldId).hidden = false; if (!document.getElementById(fieldId).value) { if (document.getElementById("process-register")) { document.getElementById("process-register").disabled = true; } else { document.getElementById("process-save").disabled = true; } } } else { document.getElementById(fieldId).parentElement.classList.remove("require"); document.getElementById(fieldId).classList.remove("require"); document.getElementById(fieldId).hidden = true; } // Same of the field's label var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for") && elem.getAttribute("for").toString().toLowerCase() == fieldId.toLowerCase()) { if (required) { elem.classList.add("require"); elem.parentElement.classList.add("require"); elem.hidden = false; } else { elem.classList.remove("require"); elem.parentElement.classList.remove("require"); elem.hidden = true; } break; } } } // CS7608 Show oneRecordAPI callback url field function showoneRecordAPICallbackField() { var required = document.getElementById("oneRecordAPI").checked; var fieldId = "applications-recordapi_idpissuer_sub_callback"; var fieldId2 = "applications-recordapi_idppuburl_sub_callback"; var fieldID3 = "applications-recordapi_recorduri_sub_callback"; if (required) { //CS7608 Customer wants to make this field optional // document.getElementById(fieldId2).parentElement.classList.add("require"); // document.getElementById(fieldId2).classList.add("require"); document.getElementById(fieldId2).hidden = false; //CS7608 Customer wants to make this field optional // document.getElementById(fieldId).parentElement.classList.add("require"); // document.getElementById(fieldId).classList.add("require"); document.getElementById(fieldId).hidden = false; document.getElementById(fieldID3).parentElement.classList.add("require"); document.getElementById(fieldID3).classList.add("require"); document.getElementById(fieldID3).hidden = false; if (!document.getElementById(fieldID3).value) { if (document.getElementById("process-register")) { document.getElementById("process-register").disabled = true; } else { document.getElementById("process-save").disabled = true; } } if (!document.getElementById(fieldId2).value) { if (document.getElementById("process-register")) { document.getElementById("process-register").disabled = true; } else { document.getElementById("process-save").disabled = true; } } if (!document.getElementById(fieldId).value) { if (document.getElementById("process-register")) { document.getElementById("process-register").disabled = true; } else { document.getElementById("process-save").disabled = true; } } } else { document.getElementById(fieldID3).parentElement.classList.remove("require"); document.getElementById(fieldID3).classList.remove("require"); document.getElementById(fieldID3).hidden = true; document.getElementById(fieldId2).parentElement.classList.remove("require"); document.getElementById(fieldId2).classList.remove("require"); document.getElementById(fieldId2).hidden = true; document.getElementById(fieldId).parentElement.classList.remove("require"); document.getElementById(fieldId).classList.remove("require"); document.getElementById(fieldId).hidden = true; } // Same of the field's label var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for") && elem.getAttribute("for").toString().toLowerCase() == fieldId.toLowerCase()) { if (required) { //CS7608 Customer wants to make this field optional // elem.classList.add("require"); // elem.parentElement.classList.add("require"); elem.hidden = false; } else { elem.classList.remove("require"); elem.parentElement.classList.remove("require"); elem.hidden = true; } break; } } // Same of the field's label Need to repeat as 2 sub-field labelss are controled by 1 checkbox els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for") && elem.getAttribute("for").toString().toLowerCase() == fieldId2.toLowerCase()) { if (required) { //CS7608 Customer wants to make this field optional // elem.classList.add("require"); // elem.parentElement.classList.add("require"); elem.hidden = false; } else { elem.classList.remove("require"); elem.parentElement.classList.remove("require"); elem.hidden = true; } break; } } // Same of the field's label els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for") && elem.getAttribute("for").toString().toLowerCase() == fieldID3.toLowerCase() ) { if (required) { // CS7608 Customer wants to make this field optional elem.classList.add("require"); elem.parentElement.classList.add("require"); elem.hidden = false; } else { elem.classList.remove("require"); elem.parentElement.classList.remove("require"); elem.hidden = true; } break; } } } // CS7608 Show oneRecordAPIIdentityProvider callback url field // CS7608 Should be removed if showoneRecordAPICallbackField function is used function showoneRecordAPIIdentityProviderCallbackField() { var required = document.getElementById("oneRecordAPIIdentityProvider").checked; var fieldId = "applications-recordapi_idpissuer_sub_callback"; var fieldId2 = "applications-recordapi_idppuburl_sub_callback"; if (required) { document.getElementById(fieldId2).parentElement.classList.add("require"); document.getElementById(fieldId2).classList.add("require"); document.getElementById(fieldId2).hidden = false; document.getElementById(fieldId).parentElement.classList.add("require"); document.getElementById(fieldId).classList.add("require"); document.getElementById(fieldId).hidden = false; if (!document.getElementById(fieldId2).value) { if (document.getElementById("process-register")) { document.getElementById("process-register").disabled = true; } else { document.getElementById("process-save").disabled = true; } } if (!document.getElementById(fieldId).value) { if (document.getElementById("process-register")) { document.getElementById("process-register").disabled = true; } else { document.getElementById("process-save").disabled = true; } } } else { document.getElementById(fieldId2).parentElement.classList.remove("require"); document.getElementById(fieldId2).classList.remove("require"); document.getElementById(fieldId2).hidden = true; document.getElementById(fieldId).parentElement.classList.remove("require"); document.getElementById(fieldId).classList.remove("require"); document.getElementById(fieldId).hidden = true; } // Same of the field's label var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for") && elem.getAttribute("for").toString().toLowerCase() == fieldId.toLowerCase()) { if (required) { elem.classList.add("require"); elem.parentElement.classList.add("require"); elem.hidden = false; } else { elem.classList.remove("require"); elem.parentElement.classList.remove("require"); elem.hidden = true; } break; } } // Same of the field's label Need to repeat as 2 sub-field labelss are controled by 1 checkbox els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for") && elem.getAttribute("for").toString().toLowerCase() == fieldId2.toLowerCase()) { if (required) { elem.classList.add("require"); elem.parentElement.classList.add("require"); elem.hidden = false; } else { elem.classList.remove("require"); elem.parentElement.classList.remove("require"); elem.hidden = true; } break; } } // Same of the field's label descr CS7608 Kamlesh trying out var eld = document.getElementsByTagName("descr"); for (var i = 0; i < eld.length; i++) { var elem = eld[i]; if ((elem.getAttribute("for") && elem.getAttribute("for").toString().toLowerCase() == fieldId.toLowerCase()) || (elem.getAttribute("for") && elem.getAttribute("for").toString().toLowerCase() == fieldId2.toLowerCase())){ if (required) { elem.classList.add("require"); elem.parentElement.classList.add("require"); elem.hidden = false; } else { elem.classList.remove("require"); elem.parentElement.classList.remove("require"); elem.hidden = true; } break; } } } // CS7608 Show oneRecordAPIURI callback url field // CS7608 Should be removed if showoneRecordAPICallbackField function is used function showoneRecordAPIURICallbackField() { var required = document.getElementById("oneRecordAPIURI").checked; var fieldID3 = "applications-recordapi_recorduri_sub_callback"; if (required) { document.getElementById(fieldID3).parentElement.classList.add("require"); document.getElementById(fieldID3).classList.add("require"); document.getElementById(fieldID3).hidden = false; if (!document.getElementById(fieldID3).value) { if (document.getElementById("process-register")) { document.getElementById("process-register").disabled = true; } else { document.getElementById("process-save").disabled = true; } } } else { document.getElementById(fieldID3).parentElement.classList.remove("require"); document.getElementById(fieldID3).classList.remove("require"); document.getElementById(fieldID3).hidden = true; } // Same of the field's label var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for") && elem.getAttribute("for").toString().toLowerCase() == fieldID3.toLowerCase() ) { if (required) { elem.classList.add("require"); elem.parentElement.classList.add("require"); elem.hidden = false; } else { elem.classList.remove("require"); elem.parentElement.classList.remove("require"); elem.hidden = true; } break; } } // Same of the field's label descr CS7608 Kamlesh trying out var eld = document.getElementsByTagName("descr"); for (var i = 0; i < eld.length; i++) { var elem = eld[i]; if ((elem.getAttribute("for") && elem.getAttribute("for").toString().toLowerCase() == fieldID3.toLowerCase())) { if (required) { elem.classList.add("require"); elem.parentElement.classList.add("require"); elem.hidden = false; } else { elem.classList.remove("require"); elem.parentElement.classList.remove("require"); elem.hidden = true; } break; } } } // Check custom required fields and set submit disabled/enabled function updateSubmit() { // updated requested apis and accepted terms fields setRequestedApisAndAcceptedTerms(); if (isFormComplete()) { document.getElementById("process-register").disabled = false; } else { document.getElementById("process-register").disabled = true; } } // Check custom required fields and set submit disabled/enabled function updateSubmitForEdit() { // updated requested apis and accepted terms fields setRequestedApisAndAcceptedTermsForEdit(); if (document.getElementById("customerTerms").checked) { document.getElementById("process-save").disabled = false; } else { document.getElementById("process-save").disabled = true; } } // Display custom terms to user and add hidden field to store accepted terms window.addEventListener('portalAfterRender', function() { // Only run on member registration page if (!document.getElementById("page-member")) return; // Disable registration button until terms accepted const submit = document.getElementById("process-register"); submit.disabled = true; // Hide field storing accepted terms and its label document.getElementById("members-terms_accepted").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'members-terms_accepted') { elem.remove(); break; } } // Hide field storing oAuth callback url and its label document.getElementById("applications-oauth_redirect_uri").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'applications-oauth_redirect_uri') { elem.remove(); break; } } // Hide field storing requested API access and its label document.getElementById("applications-requested_api_access").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'applications-requested_api_access') { // remove descr elem.parentElement.getElementsByClassName("descr").forEach(elem => elem.remove()); elem.remove(); break; } } // Hide field storing requested API access and its label document.getElementById("applications-terms_and_conditions_accepted").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'applications-terms_and_conditions_accepted') { elem.remove(); break; } } // Hide field storing shipment tracking subscribe callback document.getElementById("applications-shipment_tracking_sub_callback").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'applications-shipment_tracking_sub_callback') { elem.hidden = true; break; } } //CS 7608 // Hide field storing recordapi identity provider issuer callback document.getElementById("applications-recordapi_idpissuer_sub_callback").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'applications-recordapi_idpissuer_sub_callback') { // elem.parentElement.getElementsByClassName("descr").forEach(elem => elem.remove()); // remove descr CS7608 Kamlesh trying out -remove to hidden // var descr = elem.parentElement.getElementsByClassName("descr"); // for (var n = 0; n < descr.length; n++) { // // descr[n].remove(); // descr[n].hidden = true; // } elem.hidden = true; break; } } //CS 7608 // Hide field storing recordapi identity provider publickey url callback document.getElementById("applications-recordapi_idppuburl_sub_callback").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'applications-recordapi_idppuburl_sub_callback') { // remove descr CS7608 Kamlesh trying out -remove to hidden // var descr = elem.parentElement.getElementsByClassName("descr"); // for (var n = 0; n < descr.length; n++) { // // descr[n].remove(); // descr[n].hidden = true; // } elem.hidden = true; break; } } //CS 7608 // Hide field storing recordapi one record uri callback document.getElementById("applications-recordapi_recorduri_sub_callback").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'applications-recordapi_recorduri_sub_callback') { // remove descr CS7608 Kamlesh trying out -remove to hidden // var descr = elem.parentElement.getElementsByClassName("descr"); // for (var n = 0; n < descr.length; n++) { // // descr[n].remove(); // descr[n].hidden = true; // } elem.hidden = true; break; } } // Hide first para (it is duplicated) var paras = document.getElementsByTagName('p'); paras[0].hidden = true; paras[0].fontSize = "0%"; // Display customer terms //CS7608 added onclick actions for RoutingOffer // <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="oneRecordAPIIdentityProvider" onclick="showoneRecordAPIIdentityProviderCallbackField()" onchange="updateSubmit()">ONE Record API - Use own Identity Provider</label> \ // <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="oneRecordAPIURI" onclick="showoneRecordAPIURICallbackField()" onchange="updateSubmit()">ONE Record API - Use own ONE Record API</label> \ var apisRequested = '<p> \ <h3>Required API access</h3> \ <b>Select open API you would like to use:<br></b> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="shipmentTracking" onchange="updateSubmit()">Shipment Tracking API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="shipmentTrackingSubscribe" onclick="showShipmentTrackingSubscribeCallbackField()" onchange="updateSubmit()">Shipment Tracking Subscribe API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="routingOffer" onchange="updateSubmit()">Routing Offer API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="stationInformation" onchange="updateSubmit()">Station Information API</label><br> \ <b>Select partner API (access will only be given upon prior approval and agreement by LH):</b><br> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="smartBooking" onchange="updateSubmit()">smartBooking API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="airmail" onchange="updateSubmit()">Airmail API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="cargoXML" onchange="updateSubmit()">CargoXML API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="cargoIMP" onchange="updateSubmit()">CargoIMP API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="uldStatus" onchange="updateSubmit()">ULD Status API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="oneRecordAPI" onclick="showoneRecordAPICallbackField()" onchange="updateSubmit()">ONE Record API</label> \ </p>'; var summHTML = document.getElementById("applications-summ").parentElement.innerHTML; document.getElementById("applications-summ").parentElement.innerHTML = summHTML + apisRequested; var customerTerms = '<label style="font-weight:normal"><input type="checkbox" id="customerTerms" onclick="setRequestedApisAndAcceptedTerms()">I agree to the <a href="/files/General_Terms_and_Conditions_API.pdf" target="_blank">General Terms and Conditions</a> and the applicable <a href="/files/Terms_of_Services.pdf" target="_blank">Terms of Services</a>.</label>'; // MUST have existing Mashery terms too - it's a TIBCO account var masheryTerms = '<label style="font-weight:normal"><input type="checkbox" id="masheryTerms" onclick="setRequestedApisAndAcceptedTerms()">I certify that I have read and agree to the <a href="http://www.mashery.com/terms/" target="_blank" >Mashery Terms of Service</a> and <a href="http://www.mashery.com/privacy/" target="_blank">Privacy Policy</a>.</label><br>'; document.getElementById("registration-terms-of-service").innerHTML = ""; // Push the terms above the submit button var submitHTML = document.getElementById("process-register").parentElement .innerHTML; document.getElementById("process-register").parentElement.innerHTML = customerTerms + masheryTerms + submitHTML; document.getElementById("registration-terms-of-service").innerHTML = ""; // Add call back URL field input document.getElementById("applications-shipment_tracking_sub_callback").setAttribute( "oninput", "updateSubmit()"); // CS7608 Add call back URL field input document.getElementById("applications-recordapi_idpissuer_sub_callback").setAttribute( "oninput", "updateSubmit()"); // CS7608 Add call back URL field input document.getElementById("applications-recordapi_idppuburl_sub_callback").setAttribute( "oninput", "updateSubmit()"); // CS7608 Add call back URL field input document.getElementById("applications-recordapi_recorduri_sub_callback").setAttribute( "oninput", "updateSubmit()"); // Add call back for text field input var requiredRegistrationTextFields = getRequiredRegistrationTextFields(); for (var field = 0; field < requiredRegistrationTextFields.length; field++) { var textField = document.getElementById(requiredRegistrationTextFields[field]); textField.setAttribute("oninput", "updateSubmit()"); } }); // Hide fields in apps edit page window.addEventListener('portalAfterRender', function() { // Only run on apps edit page if (document.getElementsByClassName("category-appedit").length == 0) return; // Disable registration button until terms accepted const submit = document.getElementById("process-save"); submit.disabled = true; // Hide field storing oAuth callback url and its label document.getElementById("applications-oauth_redirect_uri").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'applications-oauth_redirect_uri') { elem.remove(); break; } } // Hide field storing requested API access and its label document.getElementById("applications-requested_api_access").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'applications-requested_api_access') { // remove descr var descr = elem.parentElement.getElementsByClassName("descr"); for (var n = 0; n < descr.length; n++) { descr[n].remove(); } elem.remove(); break; } } // Hide field storing terms and conditions accepted and its label document.getElementById("applications-terms_and_conditions_accepted").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'applications-terms_and_conditions_accepted') { elem.remove(); break; } } // Hide field storing shipment tracking subscribe callback document.getElementById("applications-shipment_tracking_sub_callback").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'applications-shipment_tracking_sub_callback') { elem.hidden = true; break; } } //CS7608 // Hide field storing recordapi identityprovider tracking subscribe callback document.getElementById("applications-recordapi_idpissuer_sub_callback").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'applications-recordapi_idpissuer_sub_callback') { // remove descr CS7608 Kamlesh trying out -remove to hidden // var descr = elem.parentElement.getElementsByClassName("descr"); // for (var n = 0; n < descr.length; n++) { // // descr[n].remove(); // descr[n].hidden = true; // } elem.hidden = true; break; } } //CS7608 // Hide field storing recordapi identityprovider tracking subscribe callback document.getElementById("applications-recordapi_idppuburl_sub_callback").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'applications-recordapi_idppuburl_sub_callback') { // remove descr CS7608 Kamlesh trying out -remove to hidden // var descr = elem.parentElement.getElementsByClassName("descr"); // for (var n = 0; n < descr.length; n++) { // // descr[n].remove(); // descr[n].hidden = true; // } elem.hidden = true; break; } } //CS7608 // Hide field storing recordapi onerecorduri tracking subscribe callback document.getElementById("applications-recordapi_recorduri_sub_callback").hidden = true; var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for").toString().toLowerCase() == 'applications-recordapi_recorduri_sub_callback') { // remove descr CS7608 Kamlesh trying out -remove to hidden // var descr = elem.parentElement.getElementsByClassName("descr"); // for (var n = 0; n < descr.length; n++) { // // descr[n].remove(); // descr[n].hidden = true; // } elem.hidden = true; break; } } // Display customer terms // CS7608 Added oneRecordAPIIdentityProvider, oneRecordAPIURI // <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="oneRecordAPIIdentityProvider" onclick="showoneRecordAPIIdentityProviderCallbackField()" onchange="updateSubmitForEdit()">ONE Record API - Use own Identity Provider</label> \ // <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="oneRecordAPIURI" onclick="showoneRecordAPIURICallbackField()" onchange="updateSubmitForEdit()">ONE Record API - Use own ONE Record API</label> \ var apisRequested = '<p> \ <h3>Request further API access</h3> \ <p>Please select APIs you would like request access to. Further access will be granted after approval.</p> \ <b>Select open API:<br></b> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="shipmentTracking" onchange="updateSubmitForEdit()">Shipment Tracking API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="shipmentTrackingSubscribe" onclick="showShipmentTrackingSubscribeCallbackField()" onchange="updateSubmitForEdit()">Shipment Tracking Subscribe API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="routingOffer" onchange="updateSubmitForEdit()">Routing Offer API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="stationInformation" onchange="updateSubmitForEdit()">Station Information API</label><br> \ <b>Select partner API (access will only be given upon prior approval and agreement by LH):</b><br> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="smartBooking" onchange="updateSubmitForEdit()">smartBooking API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="airmail" onchange="updateSubmitForEdit()">Airmail API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="cargoXML" onchange="updateSubmitForEdit()">CargoXML API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="cargoIMP" onchange="updateSubmitForEdit()">CargoIMP API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="uldStatus" onchange="updateSubmitForEdit()">ULD Status API</label> \ <label style=font-weight:normal><input type="checkbox" class="customerAPI" id="oneRecordAPI" onclick="showoneRecordAPICallbackField()" onchange="updateSubmit()">ONE Record API</label> \ </p>'; var summHTML = document.getElementById("applications-summ").parentElement.innerHTML; document.getElementById("applications-summ").parentElement.innerHTML = summHTML + apisRequested; var customerTerms = '<label style="font-weight:normal"><input type="checkbox" id="customerTerms" onclick="setRequestedApisAndAcceptedTermsForEdit()">I agree to the <a href="/files/General_Terms_and_Conditions_API.pdf" target="_blank">General Terms and Conditions</a> and the applicable <a href="/files/Terms_of_Services.pdf" target="_blank">Terms of Services</a>.</label>'; // Push the terms above the submit button var submitHTML = document.getElementById("process-save").parentElement .innerHTML; document.getElementById("process-save").parentElement.innerHTML = customerTerms + submitHTML; // Add call back URL field input document.getElementById("applications-shipment_tracking_sub_callback").setAttribute( "oninput", "updateSubmitForEdit()"); // CS7608 Add call back URL field input document.getElementById("applications-recordapi_idpissuer_sub_callback").setAttribute( "oninput", "updateSubmitForEdit()"); // CS7608 Add call back URL field input document.getElementById("applications-recordapi_idppuburl_sub_callback").setAttribute( "oninput", "updateSubmitForEdit()"); // CS7608 Add call back URL field input document.getElementById("applications-recordapi_recorduri_sub_callback").setAttribute( "oninput", "updateSubmitForEdit()"); }); // // Conditional contact request // function getContactFields() { // List of all custom fields added in the MashDash Model and Layout for contact request // Three arrays: one for each request dropdown select index var customContactFormFields = [ [], ["contact_request-message"], ["contact_request-api", "contact_request-httpStatus", "contact_request-affected_awb", "contact_request-company_name", "contact_request-complete_received_response", "contact_request-complete_request_body", "contact_request-conversation_id", "contact_request-issue_description", "contact_request-issue_timestamp", "contact_request-type_of_impairment", "contact_request-environment", "contact_request-url_accessed" ] ]; return customContactFormFields; } function getRequiredContactFields() { // List of required fields, ie must have a value. Can include custom and standard fields. // Three arrays: one for each request dropdown select index var requiredContactFields = [ [], ["contact_request-subject", "contact_request-message", "contact_request-name", "contact_request-email" ], ["contact_request-subject", "contact_request-name", "contact_request-email", "contact_request-company_name", "contact_request-type_of_impairment", "contact_request-environment", "contact_request-api", "contact_request-url_accessed", "contact_request-httpStatus", "contact_request-issue_description" ] ]; return requiredContactFields; } function changeContactFieldLabel(labelFor, labelText) { // Change label text var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for") && elem.getAttribute("for").toString().toLowerCase() == labelFor) { elem.innerHTML = labelText; break; } } } function setSubmitState() { // Skip post-submit pages if (!document.getElementById("contact_request-type")) return; // Enables the submit button if all required fields have values var formType = document.getElementById("contact_request-type").selectedIndex; if (formType == 0) { // No type selected document.getElementById("process-submit").disabled = true; } var requiredFields = getRequiredContactFields(); for (var field = 0; field < requiredFields[formType].length; field++) { if (!document.getElementById(requiredFields[formType][field]).value) { document.getElementById("process-submit").disabled = true; return; } } document.getElementById("process-submit").disabled = false; } function setContactFieldRequired(fieldId, required = false) { // Sets field to be required (ie must have a value) or not required) if (required) { document.getElementById(fieldId).parentElement.classList.add("require"); document.getElementById(fieldId).classList.add("require"); } else { document.getElementById(fieldId).parentElement.classList.remove("require"); document.getElementById(fieldId).classList.remove("require"); } // Same of the field's label var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for") && elem.getAttribute("for").toString().toLowerCase() == fieldId.toLowerCase()) { if (required) { elem.classList.add("require"); elem.parentElement.classList.add("require"); } else { elem.classList.remove("require"); elem.parentElement.classList.remove("require"); } break; } } } function setContactFieldDisplay(fieldId, showField) { // Show/hide form field // Input field: if (showField) { document.getElementById(fieldId).hidden = false; document.getElementById(fieldId).parentElement.style.visibility = "visible"; document.getElementById(fieldId).parentElement.style.fontSize = "100%"; } else { document.getElementById(fieldId).hidden = true; document.getElementById(fieldId).parentElement.style.visibility = "hidden"; document.getElementById(fieldId).parentElement.style.fontSize = "0%"; } // Fields label: var els = document.getElementsByTagName("label"); for (var i = 0; i < els.length; i++) { var elem = els[i]; if (elem.getAttribute("for") && elem.getAttribute("for").toString().toLowerCase() == fieldId.toLowerCase()) { if (showField) { elem.style.visibility = "visible"; elem.parentElement.style.visibility = "visible"; elem.parentElement.style.fontSize = "100%"; } else { elem.style.visibility = "hidden"; elem.parentElement.style.visibility = "hidden"; elem.parentElement.style.fontSize = "0%"; } break; } } } function setCustomLabels(formType) { // Custom label text per form type if (formType == 0) { // Default changeContactFieldLabel('contact_request-subject', 'Subject'); } else { // Not default changeContactFieldLabel('contact_request-subject', 'Issue Title'); } } function setContactFormType() { // Skip post-submit pages if (!document.getElementById("contact_request-type")) return; // Sets all the fields for different contact type selections var formType = document.getElementById("contact_request-type").selectedIndex; // Selected form index // If form type not selected so hide of defaults var defaultFields = ['contact_request-subject','contact_request-name','contact_request-handle','contact_request-email'] for (var defaultField = 0; defaultField < defaultFields.length; defaultField++) { if (formType == 0) { setContactFieldDisplay(defaultFields[defaultField], false); } else { setContactFieldDisplay(defaultFields[defaultField], true); } } var contactFields = getContactFields(); var displayedFieldsProcessed = []; var requiredFieldsProcessed = []; // Loop over all possible form selections for (var form = 0; form < contactFields.length; form++) { var formState = false; if (form == formType) { formState = true; } // Display all fields for this form type for (var contactField = 0; contactField < contactFields[form].length; contactField++) { if (displayedFieldsProcessed.includes(contactFields[form][contactField])) break; setContactFieldDisplay( contactFields[form][contactField], formState); if (form == formType) displayedFieldsProcessed.push(contactFields[form] [contactField]); } // Set required fields var requiredFields = getRequiredContactFields(); for (var requiredField = 0; requiredField < requiredFields[form].length; requiredField++) { if (requiredFieldsProcessed.includes(requiredFields[form][requiredField])) break; setContactFieldRequired( requiredFields[form][requiredField], formState); if (form == formType) requiredFieldsProcessed.push(requiredFields[ form][requiredField]); } } // Set custom labels setCustomLabels(formType); // Clear form when it changes type var inputs = document.getElementsByTagName('input'); for (var i = 0; i < inputs.length; i++) { if (inputs[i].type.toLowerCase() == 'text') { inputs[i].value = ''; } } var textareas = document.getElementsByTagName('textarea'); for (var i = 0; i < textareas.length; i++) { textareas[i].value = ''; } if (formType == 0) { document.getElementById('contact_request-type_of_impairment').selectedIndex = -1; document.getElementById('contact_request-environment').selectedIndex = -1; document.getElementById('contact_request-api').selectedIndex = -1; } document.getElementById("process-submit").disabled = true; } // Conditional contact request window.addEventListener('portalAfterRender', function() { // Only run on contact request page if (!document.getElementById("page-contact")) return; // Skip post-submit pages if (!document.getElementById("contact_request-type")) return; // Set up the form setContactFormType(); setSubmitState(); // Add field onchange listener to be able to enable/disable submit var requiredFields = getRequiredContactFields(); document.getElementById("process-submit").disabled = true; for (var formType = 0; formType < requiredFields.length; formType++) { for (var field = 0; field < requiredFields[formType].length; field++) { document.getElementById(requiredFields[formType][field]).setAttribute( "oninput", "setSubmitState()"); } } // Add request type select onchange document.getElementById("contact_request-type").setAttribute( "onchange", "setContactFormType()"); }); //]]> </script> <script src="/files/main.js" type="text/javascript"></script> <script type="text/javascript" > m$.init(portalOptions); </script> </body> </html>