CINXE.COM
Reference for App Specification | DigitalOcean Documentation
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes"> <meta name="generator" content="Hugo 0.119.0"> <meta name="google-site-verification" content="CAYPZwe7daX8KlYYZfB4VMjfT4g8Tqrrc4Q3g_wMvI8"> <meta name="og:site_name" content="DigitalOcean"> <meta name="og:type" content="article"> <meta name="twitter:site" content="DigitalOcean"> <meta name="twitter:creator" content="@DigitalOcean"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:url" content="/products/app-platform/reference/app-spec/"> <meta name="og:image" content="/opengraph/opengraph-base-NOOPT_hu10d88a98f142b24c84f649282c796338_6896_filter_7182727078363857322.png"> <meta name="twitter:image" content="/opengraph/opengraph-base-NOOPT_hu10d88a98f142b24c84f649282c796338_6896_filter_7182727078363857322.png"> <meta name="keywords" content="DigitalOcean, cloud computing"> <meta name="og:title" content="Reference for App Specification | DigitalOcean Documentation"> <meta name="twitter:title" content="Reference for App Specification | DigitalOcean Documentation"> <meta name="description" content="Reference for the format of app configuration files for App Platform, also known as "app specs.""> <meta name="og:description" content="Reference for the format of app configuration files for App Platform, also known as "app specs.""> <meta name="twitter:description" content="Reference for the format of app configuration files for App Platform, also known as "app specs.""> <title> Reference for App Specification | DigitalOcean Documentation </title> <link rel=manifest href="/manifest.webmanifest"> <link rel="shortcut icon" href="/favicon.png"> <style> .wrapper-full { background-image: url("/images/backgrounds/sammy-space.png") background-size:cover !important } .wrapper-full.productsbg, .home-banner { background-image: url("/images/backgrounds/default.png") !important; } .search-bg { background-image: url("/images/backgrounds/support-search.png") !important } .referencebg { background-image: url("/images/backgrounds/sammy-space.png") !important } .wrapper-full.most-viewed { background-image: url("/images/backgrounds/most-viewed.png") !important } </style> <link rel="stylesheet" href="/main.min.4ef1c7a39395d47796a6dc9351436bd78f9ded4d200e7eeadc15160aebd6fca6.css"> <script type="text/javascript"> window.addEventListener('DOMContentLoaded', function() { let script = document.createElement('script'); script.src = "https://platform-api.sharethis.com/js/sharethis.js#property=63bddb30592bb2001af01bf2&product=inline-share-buttons&source=platform"; document.head.appendChild(script); }); </script> <link rel="stylesheet" href="https://use.typekit.net/bok7ybx.css"> </head> <body data-url="/products/app-platform/reference/app-spec/"> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KHWBBT" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <script>if (window.top !== window.self) { document.body.classList.add('in-iframe'); }</script> <div style="display: none;"> <svg alt="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <symbol id="navbar-logo" xmlns="http://www.w3.org/2000/svg"> <title>DigitalOcean home</title> <g fill="currentColor" fill-rule="evenodd"> <path d="M14.4942 29v-5.5674c5.9572 0 10.5633-5.8478 8.2892-12.059-.8425-2.3006-2.693-4.1355-5.0126-4.9706-6.262-2.2534-12.1564 2.3135-12.1573 8.2207 0 0-.0006.0014-.0014.0014H0C0 5.2123 9.1687-2.1167 19.1138.9624c4.3459 1.3457 7.7993 4.7708 9.1561 9.081C31.3742 19.9068 23.985 29 14.4942 29"></path> <path d="M14.507 23.4468H8.9103v-5.549s.0005-.0011.0011-.0011h5.5949c.0006 0 .0009.0006.0009.0006v5.5495M8.9093 27.7118H4.6105l-.0012-.0012v-4.2638h4.3009v4.2638l-.0009.0012M4.6125 23.4468H1.0088c-.0015 0-.0026-.0012-.0026-.0012v-3.5724s.0011-.0025.0026-.0025h3.601c.0015 0 .0027.0011.0027.0011v3.575M43.2806 9.6357h1.649c1.8346 0 3.345.358 4.49 1.0647 1.2714.7603 1.9164 2.2069 1.9164 4.2991 0 2.1554-.6465 3.6671-1.9207 4.4942h-.0008c-1.0971.7196-2.5981 1.0846-4.462 1.0846h-1.6719V9.6357zm8.324-1.0736c-1.6598-1.142-3.7252-1.721-6.1387-1.721h-5.2537V23.373h5.2537c2.4074 0 4.4737-.6113 6.1407-1.8157.907-.6382 1.6197-1.5304 2.1185-2.651.4962-1.1144.7479-2.4288.7479-3.9067 0-1.4605-.2517-2.758-.7482-3.857-.4988-1.104-1.212-1.972-2.1202-2.5804zM58.1303 6.6376c-.5051 0-.9403.1777-1.2906.5254-.3546.335-.5346.7597-.5346 1.2618 0 .501.1791.9322.532 1.2825.3529.35.788.528 1.2932.528.5042 0 .9394-.178 1.2928-.528.3535-.3508.5324-.7821.5324-1.2825 0-.5015-.18-.926-.5324-1.2592-.3534-.3503-.7886-.528-1.2928-.528M56.6247 23.3729h2.9538V11.7294h-2.9538zM69.5321 19.5787c-.5162.5814-1.1793.8635-2.0264.8635-.8471 0-1.5064-.282-2.015-.863-.5065-.5777-.7637-1.3439-.7637-2.2773 0-.9479.2572-1.7238.764-2.3058.502-.576 1.1796-.8683 2.0147-.8683.8465 0 1.5096.284 2.0262.8695.5142.582.7751 1.3573.7751 2.3046 0 .9328-.2609 1.6988-.7749 2.2768zm.775-6.8767c-.8908-.7858-1.8858-1.2444-2.9614-1.2444-1.6305 0-2.9859.5598-4.0276 1.662-1.0555 1.0932-1.5907 2.5006-1.5907 4.1823 0 1.644.5269 3.0464 1.568 4.1709 1.0498 1.088 2.4123 1.6396 4.0503 1.6396 1.139 0 2.1182-.3144 2.9157-.9356v.268c0 .9662-.2608 1.7176-.7751 2.234-.5137.5154-1.226.7764-2.1173.7764-1.3637 0-2.2183-.5314-3.2589-1.9262l-2.0115 1.917.0542.0754c.4346.605 1.1 1.197 1.9785 1.7594.8787.5603 1.9832.8447 3.2832.8447 1.7536 0 3.1726-.5363 4.2172-1.5933 1.0506-1.0628 1.5835-2.486 1.5835-4.2286V11.7294H70.307v.9726zM75.7434 23.3729h2.9541V11.7294h-2.9541zM77.249 6.6376c-.5052 0-.94.1777-1.2906.5254-.3547.335-.5344.7597-.5344 1.2618 0 .501.1789.9322.532 1.2825.353.35.7878.528 1.293.528.5045 0 .9396-.178 1.2928-.528.3535-.3508.5323-.7821.5323-1.2825 0-.5015-.1797-.926-.5323-1.2592-.3532-.3503-.7883-.528-1.2929-.528M85.1724 8.5831h-2.9082v3.1463h-1.6888v2.6702h1.6888v4.8365c0 1.5134.3047 2.5964.9064 3.2181.6031.6247 1.6741.9414 3.1831.9414.48 0 .963-.0156 1.4354-.0463l.133-.0088v-2.6683l-1.013.0526c-.7033 0-1.1728-.1226-1.3961-.3637-.226-.245-.3406-.7636-.3406-1.5404v-4.421h2.7497v-2.6703h-2.7497V8.583M101.7735 23.3729h2.9544V6.8412h-2.9544zM134.5728 19.2094c-.5286.5874-1.0693 1.0966-1.4855 1.3613v.0005c-.4085.2599-.924.3918-1.532.3918-.8703 0-1.5703-.3144-2.1405-.9621-.567-.644-.8545-1.4716-.8545-2.4613s.2838-1.8162.8436-2.4556c.5625-.6434 1.2588-.9562 2.1285-.9562.9515 0 1.9548.5869 2.8145 1.5947l1.9525-1.8568c-1.273-1.6433-2.897-2.4081-4.8352-2.4081-1.622 0-3.028.5862-4.1788 1.7411-1.1446 1.147-1.7251 2.6074-1.7251 4.3409 0 1.7335.58 3.1977 1.7234 4.352 1.1447 1.1557 2.5514 1.7417 4.1805 1.7417 2.139 0 3.8651-.9158 5.029-2.5935l-1.9204-1.8304M140.2405 16.0973c.1422-.5567.401-1.0207.7714-1.381.4005-.3906.9214-.5885 1.5489-.5885.716 0 1.2702.2019 1.6474.6014.3495.3696.5467.8296.588 1.368h-4.5557zm6.4569-2.7414c-.4191-.5788-.9896-1.0448-1.6965-1.3854-.7047-.3404-1.526-.513-2.441-.513-1.6489 0-2.9982.6037-4.0113 1.7946-.9836 1.182-1.4818 2.651-1.4818 4.3665 0 1.7648.547 3.2253 1.6254 4.341 1.0727 1.1105 2.5083 1.6737 4.267 1.6737 1.992 0 3.627-.799 4.8587-2.3752l.0666-.0847-1.9273-1.837c-.1789.2139-.4317.4561-.6628.6722-.2918.273-.5659.4842-.8588.6289-.4415.218-.9369.3255-1.4907.3255-.8187 0-1.4964-.2388-2.0147-.71-.4847-.4403-.768-1.0345-.843-1.7683h7.8265l.0264-1.0693c0-.7569-.1038-1.4862-.3088-2.1677a6.312 6.312 0 0 0-.934-1.8918zM152.797 18.9234c.3352-.2318.8085-.3483 1.4073-.3483.7112 0 1.4654.1413 2.2426.421v1.1421c-.6421.592-1.4996.8922-2.5499.8922-.5114 0-.909-.1126-1.1822-.3355-.2683-.218-.3985-.4955-.3985-.847 0-.3994.1571-.7022.4808-.9245zm5.2452-6.3229h-.0003c-.8952-.758-2.1328-1.143-3.678-1.143-.9829 0-1.902.2144-2.7336.6324-.7691.387-1.5245 1.0275-2.0043 1.8662l.0298.0358 1.8917 1.796c.7791-1.2322 1.6454-1.66 2.7941-1.66.6172 0 1.1298.1643 1.5234.4881.3916.3216.5819.7304.5819 1.249v.5652c-.7324-.221-1.4629-.333-2.1738-.333-1.47 0-2.6663.3432-3.555 1.0193-.9.6852-1.3562 1.665-1.3562 2.9125 0 1.094.3847 1.9829 1.1461 2.6433.7677.6372 1.7275.961 2.8524.961 1.1246 0 2.177-.4495 3.132-1.2191v.9587h2.9089v-7.4852c0-1.4173-.4572-2.523-1.3591-3.2872zM170.7656 12.8285c-.8227-.9092-1.9791-1.371-3.4371-1.371-1.172 0-2.1236.3338-2.8357.9926v-.7207h-2.897v11.6435h2.954v-6.4215c0-.8823.2119-1.5828.6293-2.0826.4162-.4987.989-.741 1.75-.741.6691 0 1.1765.2167 1.5506.662.3759.4474.5662 1.0638.5662 1.8335v6.7496H172v-6.7496c0-1.6127-.415-2.889-1.2344-3.7948M92.8158 18.9234c.3351-.2318.8087-.3483 1.4075-.3483.7112 0 1.4652.1413 2.2426.421v1.1421c-.6421.592-1.4998.8922-2.5502.8922-.5114 0-.9087-.1126-1.1819-.3355-.2683-.218-.3988-.4955-.3988-.847 0-.3994.1574-.7022.4808-.9245zm5.2451-6.3229h-.0003c-.8952-.758-2.1328-1.143-3.6776-1.143-.983 0-1.902.2144-2.7337.6324-.7694.387-1.5247 1.0275-2.0043 1.8662l.0295.0358 1.8917 1.796c.7792-1.2322 1.6458-1.66 2.7941-1.66.6172 0 1.1298.1643 1.5234.4881.3916.3216.5822.7304.5822 1.249v.5652c-.7327-.221-1.4631-.333-2.174-.333-1.47 0-2.6664.3432-3.555 1.0193-.8999.6852-1.3562 1.665-1.3562 2.9125 0 1.094.3847 1.9829 1.1463 2.6433.7677.6372 1.7272.961 2.8524.961 1.1246 0 2.1766-.4495 3.1318-1.2191v.9587H99.42v-7.4852c0-1.4173-.457-2.523-1.359-3.2872zM115.4464 9.5808c-3.0682 0-5.5645 2.4755-5.5645 5.5188s2.4963 5.5188 5.5645 5.5188c3.0682 0 5.5645-2.4755 5.5645-5.5188s-2.4963-5.5188-5.5645-5.5188zm0 14.0408c-4.7383 0-8.5928-3.8228-8.5928-8.522 0-4.6994 3.8545-8.5223 8.5928-8.5223 4.738 0 8.5925 3.8229 8.5925 8.5223 0 4.6992-3.8545 8.522-8.5925 8.522z"></path> </g> </symbol> <symbol id="navbar-community_logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 532.2 99.8" fill="currentColor"> <path class="st0" d="M98.5,23c15.5,0,27.7,12.1,27.7,28.2c0,16.1-12.3,28.1-27.7,28.1c-15.6,0-27.7-11.9-27.7-28.1 C70.8,35.1,82.9,23,98.5,23z M98.5,67.9c8.7,0,14.9-7,14.9-16.8c0-9.8-6.2-16.8-14.9-16.8c-8.8,0-15,7-15,16.8 C83.5,60.9,89.7,67.9,98.5,67.9z"/> <path class="st0" d="M166.8,45.9c0-7-3.5-11.6-9.9-11.6c-7.2,0-11.1,5.3-11.1,13.1V78h-12.5V24.3h12.3V29c2.4-2.8,7-6,13.9-6 c7.3,0,12.2,3.1,15,7c4.4-4.9,10-7,16.8-7c14.4,0,21.4,8.5,21.4,23.8V78h-12.5V45.9c0-7-3.5-11.6-9.9-11.6 c-7.2,0-11.2,5.3-11.2,13.1V78h-12.4V45.9z"/> <path class="st0" d="M255.5,45.9c0-7-3.5-11.6-9.9-11.6c-7.2,0-11.1,5.3-11.1,13.1V78h-12.5V24.3h12.3V29c2.4-2.8,7-6,13.9-6 c7.3,0,12.2,3.1,15,7c4.4-4.9,10-7,16.8-7c14.4,0,21.4,8.5,21.4,23.8V78h-12.5V45.9c0-7-3.5-11.6-9.9-11.6 c-7.2,0-11.2,5.3-11.2,13.1V78h-12.4V45.9z"/> <path class="st0" d="M322.5,56.4c0,7,3.6,11.6,10.1,11.6c7.2,0,11.2-5.6,11.2-13.5V24.3h12.5V78h-12.3v-4.4 c-3.4,3.7-8.1,5.6-13.9,5.6c-11.9,0-20.1-8.4-20.1-23.7V24.3h12.5V56.4z"/> <path class="st0" d="M378.2,78h-12.5V24.3h12.3v4.4c2.7-3.1,7.7-5.7,13.9-5.7c13.1,0,21.3,8.5,21.3,23.8V78h-12.5V46.8 c0-7.5-3.7-12.5-10.6-12.5c-7.8,0-11.8,5.6-11.8,14V78z"/> <path class="st0" d="M427.8,0.2c4.4,0,7.9,3.4,7.9,7.8s-3.5,7.9-7.9,7.9c-4.4,0-7.9-3.5-7.9-7.9S423.4,0.2,427.8,0.2z M421.4,24.3 h12.5V78h-12.5V24.3z"/> <path class="st0" d="M446.7,59.1V35.5h-6.5V24.3h6.5v-15H459v15h12.2v11.2H459v21.7c0,7.8,1.8,9.8,8.8,9.8c1.2,0,4.1-0.2,4.1-0.2 v11.2c0,0-2.4,0.2-6.7,0.2C451.2,78.1,446.7,72.7,446.7,59.1z"/> <path class="st0" d="M497.3,78.7l-21.3-54.4h14.2l14,38.8l14.2-38.8h13.6l-24.1,60.2c-3.7,9.4-7.2,15.3-21.3,15.3 c-2.5,0-4.8-0.1-4.8-0.1V88c0,0,1.5,0.1,2.8,0.1c7.6,0,9.8-2.3,11.8-7.8L497.3,78.7z"/> <path class="st0" d="M62.4,55.9c-5.3,7-12.2,11.4-22.1,11.4c-15.6,0-27-11.7-27-27.5c0-16.1,11.4-27.8,26.5-27.8 c10,0,16.8,4.8,21.3,11.3l8.4-8.8C63.1,5.7,53.3,0,39.7,0C17.1,0,0,15.9,0,39.8c0,23.4,17.1,39.4,40.1,39.4c13.1,0,22-4.9,28.6-12.2 L62.4,55.9z"/> </symbol> <symbol id="navbar-control_panel_icon" viewBox="0 0 45 45" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M19.6875 23.4862C19.6885 23.9722 19.4965 24.4388 19.1537 24.7833C18.8109 25.1279 18.3454 25.3222 17.8594 25.3237H3.23438C2.99366 25.3232 2.75539 25.2753 2.53321 25.1827C2.31102 25.09 2.10927 24.9545 1.93949 24.7839C1.7697 24.6132 1.63522 24.4108 1.54373 24.1881C1.45223 23.9655 1.40552 23.727 1.40626 23.4862V3.25498C1.40577 3.01417 1.45271 2.77562 1.54441 2.55295C1.63611 2.33028 1.77077 2.12785 1.9407 1.95722C2.11063 1.7866 2.31251 1.65111 2.5348 1.5585C2.75709 1.46589 2.99545 1.41797 3.23626 1.41748L17.8613 1.44186C18.347 1.44384 18.812 1.63843 19.1544 1.98292C19.4968 2.32741 19.6885 2.79366 19.6875 3.27936V23.4862Z" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M43.5863 12.27C43.5828 12.7516 43.3883 13.212 43.0456 13.5503C42.7028 13.8885 42.2397 14.0768 41.7582 14.0738H27.1332C26.8947 14.0755 26.6582 14.0302 26.4372 13.9405C26.2162 13.8507 26.015 13.7183 25.8453 13.5508C25.6755 13.3833 25.5404 13.1839 25.4477 12.9642C25.355 12.7444 25.3065 12.5085 25.3051 12.27V3.24565C25.308 2.76461 25.5019 2.30442 25.8439 1.96621C26.186 1.62799 26.6484 1.43941 27.1294 1.4419L41.7544 1.41753C42.2365 1.41403 42.7002 1.60205 43.0437 1.94027C43.3872 2.27849 43.5823 2.73924 43.5863 3.22128V12.27Z" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M19.6875 41.7956C19.686 42.0347 19.6375 42.2712 19.5446 42.4915C19.4518 42.7118 19.3164 42.9117 19.1463 43.0797C18.9762 43.2477 18.7747 43.3806 18.5532 43.4707C18.3318 43.5609 18.0947 43.6065 17.8556 43.605L3.23063 43.5806C2.74908 43.5826 2.28644 43.3934 1.94436 43.0545C1.60228 42.7155 1.40873 42.2547 1.40625 41.7731V32.7563C1.40748 32.5175 1.45575 32.2813 1.54831 32.0612C1.64087 31.8412 1.7759 31.6415 1.94569 31.4736C2.11547 31.3057 2.31667 31.173 2.53779 31.0829C2.75892 30.9929 2.99562 30.9473 3.23438 30.9488H17.8594C18.3414 30.9463 18.8047 31.1352 19.1475 31.4742C19.4903 31.8131 19.6845 32.2742 19.6875 32.7563V41.7956Z" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M27.1349 43.605C26.894 43.6045 26.6555 43.5565 26.433 43.4638C26.2106 43.3711 26.0087 43.2354 25.8387 43.0646C25.6688 42.8937 25.5341 42.6911 25.4426 42.4682C25.351 42.2453 25.3042 42.0066 25.3049 41.7656V21.5381C25.3042 21.2973 25.3509 21.0587 25.4424 20.8359C25.5338 20.6132 25.6683 20.4106 25.8381 20.2398C26.0078 20.069 26.2095 19.9333 26.4317 19.8405C26.6539 19.7476 26.8923 19.6995 27.1331 19.6987H41.7581C41.9989 19.6995 42.2372 19.7476 42.4594 19.8405C42.6816 19.9333 42.8833 20.069 43.0531 20.2398C43.2228 20.4106 43.3573 20.6132 43.4488 20.8359C43.5402 21.0587 43.5869 21.2973 43.5862 21.5381V41.7412C43.5872 42.2271 43.3955 42.6935 43.0532 43.0383C42.7109 43.3831 42.2458 43.5781 41.7599 43.5806L27.1349 43.605Z" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </symbol> <symbol id="navbar-community_icon" viewBox="0 0 45 45" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0)"> <path d="M12.6562 10.5469C12.6562 9.85155 12.8624 9.17184 13.2487 8.5937C13.635 8.01556 14.1841 7.56495 14.8265 7.29886C15.4689 7.03277 16.1758 6.96315 16.8577 7.0988C17.5397 7.23445 18.1661 7.56929 18.6578 8.06095C19.1495 8.55262 19.4843 9.17905 19.6199 9.86101C19.7556 10.543 19.686 11.2499 19.4199 11.8922C19.1538 12.5346 18.7032 13.0837 18.1251 13.47C17.5469 13.8563 16.8672 14.0625 16.1719 14.0625" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M16.1719 18.2812C16.0328 18.2812 15.8969 18.3225 15.7812 18.3997C15.6656 18.477 15.5755 18.5868 15.5223 18.7153C15.4691 18.8438 15.4551 18.9852 15.4823 19.1215C15.5094 19.2579 15.5764 19.3832 15.6747 19.4816C15.773 19.5799 15.8983 19.6469 16.0347 19.674C16.1711 19.7011 16.3125 19.6872 16.4409 19.634C16.5694 19.5808 16.6792 19.4906 16.7565 19.375C16.8338 19.2594 16.875 19.1234 16.875 18.9844C16.875 18.7979 16.8009 18.6191 16.6691 18.4872C16.5372 18.3553 16.3584 18.2812 16.1719 18.2812Z" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M32.3438 4.21875V12.6562" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M29.5312 1.40625C30.2772 1.40625 30.9925 1.70257 31.52 2.23001C32.0474 2.75746 32.3438 3.47283 32.3438 4.21875" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M4.21875 1.40625H29.5312" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M1.40625 4.21875C1.40625 3.47283 1.70257 2.75746 2.23001 2.23001C2.75746 1.70257 3.47283 1.40625 4.21875 1.40625" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M1.40625 23.9062V4.21875" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M4.21875 26.7188C3.47283 26.7187 2.75746 26.4224 2.23001 25.895C1.70257 25.3675 1.40625 24.6522 1.40625 23.9062" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M9.84375 26.7188H4.21875" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M9.84375 35.1562V26.7188" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M15.4688 30.9375L9.84375 35.1562" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M43.5938 35.1562H37.9688V43.5938L29.5312 35.1562H21.0938V18.2812H43.5938V35.1562Z" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> <path d="M32.3438 23.9062V29.5312" stroke="#0069FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </g> <defs> <clipPath id="clip0"> <rect width="45" height="45" fill="white"/> </clipPath> </defs> </symbol> <symbol id="navbar-search" viewBox="0 0 16 16" fill="currentColor"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"></path></symbol> <symbol id="navbar-logomark" viewBox="65.2 173.5 180 180" fill="currentColor"><path d="M155.2,351.7v-34.2c36.2,0,64.3-35.9,50.4-74c-5.1-14.1-16.4-25.4-30.5-30.5c-38.1-13.8-74,14.2-74,50.4l0,0H67c0-57.7,55.8-102.7,116.3-83.8c26.4,8.3,47.5,29.3,55.7,55.7C257.9,295.9,213,351.7,155.2,351.7z"/> <polygon points="155.3,317.6 121.3,317.6 121.3,283.6 121.3,283.6 155.3,283.6 155.3,283.6"/> <polygon points="121.3,343.8 95.1,343.8 95.1,343.8 95.1,317.6 121.3,317.6"/> <path d="M95.1,317.6H73.2l0,0v-21.9l0,0h21.9l0,0V317.6z"/></symbol> <symbol id="navbar-hubforgood" viewBox="6 6 30 30" width="30" height="30" fill="none" stroke="currentColor" stroke-width="1.5"><circle class="cls-3" cx="21" cy="21.03" r="8.92"/><path class="cls-3" d="M12.08,21a8.94,8.94,0,0,1,8.6-8.92"/><path class="cls-3" d="M29.92,21a9.18,9.18,0,0,1-2.61,6.37A9,9,0,0,1,20.75,30"/><path class="cls-3" d="M21,25.36S16.35,22.69,16.35,20a2.3,2.3,0,0,1,4.59,0h0a2.28,2.28,0,0,1,2.29-2.29A2.25,2.25,0,0,1,25.52,20C25.65,22.69,21,25.36,21,25.36Z"/><path class="cls-3" d="M7.43,20.84A13.49,13.49,0,0,1,20.68,7.46"/><path class="cls-3" d="M34.57,20.91a13.57,13.57,0,0,1-3.95,9.68,13.35,13.35,0,0,1-9.68,3.95"/><path class="cls-3" d="M20.87,34.6a13.42,13.42,0,0,1-9.49-4,13.64,13.64,0,0,1-4-9.81l4.65.13a8.94,8.94,0,0,0,2.61,6.31,9.09,9.09,0,0,0,6.06,2.61Z"/><path class="cls-3" d="M29.92,21a9.06,9.06,0,0,0-2.61-6.31,8.89,8.89,0,0,0-6.63-2.61V7.4a13.76,13.76,0,0,1,9.88,3.95,13.42,13.42,0,0,1,3.95,9.49Z"/></symbol> <symbol id="navbar-write4do" viewBox="0 0 30 30" fill="none" stroke="currentColor"> <path d="M16.3063 17.67L11.6663 18.3338L12.3288 13.6925L24.2613 1.76002C24.7887 1.23257 25.5041 0.936249 26.25 0.936249C26.6194 0.936249 26.9851 1.009 27.3263 1.15034C27.6675 1.29168 27.9776 1.49885 28.2388 1.76002C28.4999 2.02118 28.7071 2.33123 28.8484 2.67246C28.9898 3.01369 29.0625 3.37942 29.0625 3.74877C29.0625 4.11811 28.9898 4.48384 28.8484 4.82507C28.7071 5.1663 28.4999 5.47635 28.2388 5.73752L16.3063 17.67Z" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> <path d="M22.935 3.08624L26.9125 7.06374" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> <path d="M23.4375 17.8125V27.1875C23.4375 27.6848 23.24 28.1617 22.8883 28.5133C22.5367 28.865 22.0598 29.0625 21.5625 29.0625H2.8125C2.31522 29.0625 1.83831 28.865 1.48667 28.5133C1.13504 28.1617 0.9375 27.6848 0.9375 27.1875V8.4375C0.9375 7.94022 1.13504 7.46331 1.48667 7.11167C1.83831 6.76004 2.31522 6.5625 2.8125 6.5625H12.1875" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> </symbol> <symbol id="navbar-hacktoberfest" viewBox="0 0 30 30" fill="none" stroke="currentColor"> <path d="M19.2063 24.9918L16.5714 22.3569V14.4854L13.986 17.0708V23.5755L12.5615 25L11.1371 23.5591V8.44175L10.7419 8.04652L8.93042 9.8662L8 8.94401L11.9358 5.00823L11.944 5.01647L12.1005 5.16468L13.9778 7.04199V13.8431L16.5632 11.2577V8.42528L15.2705 7.12433L17.3948 5L19.4286 7.03376V20.9572L20.4249 21.9535L21.6352 20.7431L22.5492 21.6571L19.2063 24.9918Z" fill="currentcolor"/> <rect x="0.75" y="0.75" width="28.5" height="28.5" rx="2.25" stroke-width="1.5" stroke="currentColor"/> </symbol> <symbol id="navbar-build" viewBox="0 0 16 16" fill="none" stroke="currentColor"> <path d="M1.5 14.5C1.23478 14.5 0.98043 14.3946 0.792893 14.2071C0.605357 14.0196 0.5 13.7652 0.5 13.5V2.57667C0.500879 2.29139 0.614596 2.01804 0.81632 1.81632C1.01804 1.6146 1.29139 1.50088 1.57667 1.5H14.4287C14.7125 1.50088 14.9845 1.61403 15.1852 1.81476C15.386 2.01548 15.4991 2.28747 15.5 2.57133V13.4233C15.4991 13.7086 15.3854 13.982 15.1837 14.1837C14.982 14.3854 14.7086 14.4991 14.4233 14.5H1.5Z" stroke-linecap="round" stroke-linejoin="round"/> <path d="M15.5 4.5H0.5" stroke-linecap="round" stroke-linejoin="round"/> <path d="M11 7.5L13 9.5L11 11.5" stroke-linecap="round" stroke-linejoin="round"/> <path d="M5 7.5L3 9.5L5 11.5" stroke-linecap="round" stroke-linejoin="round"/> <path d="M9 7.5L7 11.5" stroke-linecap="round" stroke-linejoin="round"/> </symbol> </svg> </div> <nav class="navbar hide-in-iframe hide-in-print" role="navigation" aria-label="Navigation" data-js="global-navbar" style="z-index:999"> <ul role="menubar" class="primary"> <li role="menuitem" data-show="always" class="logo-square"> <a class="do-logo" href="https://www.digitalocean.com" aria-label="Main DigitalOcean site"> <svg alt="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" shape-rendering="auto"> <use xlink:href="#navbar-logomark"></use> </svg> </a> </li> <li role="menuitem" data-show="always" class="logo-sitename"> <a class="docs-logo" href="/" aria-label="DigitalOcean Product Docs home"> <svg alt="" width="69" height="24" viewBox="0 0 69 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M8.56 23C15.424 23 20.044 18.479 20.044 11.978C20.044 5.543 15.424 0.988998 8.527 0.988998H0.343V23H8.56ZM8.527 19.601H4.204V4.388H8.56C13.444 4.388 16.084 7.754 16.084 11.978C16.084 16.169 13.312 19.601 8.527 19.601ZM29.8997 23.396C34.9817 23.396 38.0837 19.568 38.0837 15.014C38.0837 10.427 34.9817 6.665 29.8997 6.665C24.8177 6.665 21.7157 10.427 21.7157 15.014C21.7157 19.568 24.8177 23.396 29.8997 23.396ZM29.8997 20.327C26.9627 20.327 25.3127 17.852 25.3127 15.014C25.3127 12.209 26.9627 9.734 29.8997 9.734C32.8697 9.734 34.4867 12.209 34.4867 15.014C34.4867 17.852 32.8697 20.327 29.8997 20.327ZM47.8819 23.396C51.0169 23.396 52.8649 22.043 53.9869 20.558L51.7099 18.413C50.8189 19.667 49.5979 20.327 48.0469 20.327C45.1759 20.327 43.2289 18.116 43.2289 15.014C43.2289 11.912 45.1759 9.734 48.0469 9.734C49.5979 9.734 50.8189 10.328 51.7099 11.582L53.9869 9.503C52.8649 7.985 51.0169 6.665 47.8819 6.665C43.0639 6.665 39.6649 10.196 39.6649 15.014C39.6649 19.832 43.0639 23.396 47.8819 23.396ZM61.5355 23.396C65.8255 23.396 68.1685 21.251 68.1685 18.413C68.1685 12.077 58.5325 14.189 58.5325 11.384C58.5325 10.262 59.6545 9.404 61.4695 9.404C63.4825 9.404 65.2315 10.262 66.1885 11.318L67.6405 8.876C66.2215 7.622 64.1755 6.665 61.4695 6.665C57.4435 6.665 55.1995 8.876 55.1995 11.483C55.1995 17.621 64.8355 15.377 64.8355 18.512C64.8355 19.766 63.7465 20.624 61.6675 20.624C59.6215 20.624 57.4105 19.568 56.2885 18.413L54.7045 20.888C56.3545 22.505 58.7965 23.396 61.5355 23.396Z" fill="#99A1B3"/> </svg> </a> </li> <li role="separator" data-show="always" data-flex="grow"></li><li role="menuitem" class="nav-item-desktop" data-show="desktop"><a href="/platform">Platform</a> </li><li role="menuitem" class="nav-item-desktop" data-show="desktop"><a href="/products"class="active">Products</a> </li><li role="menuitem" class="nav-item-desktop" data-show="desktop"><a href="/reference">Reference</a> </li><li role="menuitem" class="nav-item-desktop" data-show="desktop"><a href="/support">Support</a> </li><li role="menuitem" data-show="always" class="searchbox search-nav-button"> <button id="search-by" class="search_button use-universal-search-js"> <svg alt="" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" shape-rendering="auto" width="14px" height="14px"> <use xlink:href="#navbar-search"></use> </svg> Search Docs <kbd>/</kbd> </button> </li> <li role="menuitem" data-show="desktop" class="searchbox"> <a href="https://cloud.digitalocean.com/registrations/new" class="button blue-button small-button">Sign Up</a> </li> <li role="menuitem" data-show="mobile" aria-label="Toggle menu"> <a href="#" id="sidebar-toggle" data-sidebar-toggle="" class="hide-in-iframe"> <svg alt="" class="hamberger-toggle" width="20" height="16" viewBox="0 0 20 16" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect width="20" height="2" fill="#5B6987"/> <rect y="14" width="20" height="2" fill="#5B6987"/> <rect y="7" width="20" height="2" fill="#5B6987"/> </svg> <svg alt="" class="cross-toggle" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect x="0.221924" y="14.364" width="20" height="2" transform="rotate(-45 0.221924 14.364)" fill="#5B6987"/> <rect x="14.1421" y="15.7782" width="20" height="2" transform="rotate(-135 14.1421 15.7782)" fill="#5B6987"/> </svg> </a> </li> </ul> </nav> <div class="sidebar-primary-navigation hide-in-iframe hide-in-print"> <ul class="primary primary-menu-mobile" role="menubar" data-show="mobile" ><li role="menuitem" class="nav-item-mobile" data-show="mobile"><a href="/platform">Platform</a> </li><li role="menuitem" class="nav-item-mobile" data-show="mobile"><a href="/products"class="active">Products</a> </li><li role="menuitem" class="nav-item-mobile" data-show="mobile"><a href="/reference">Reference</a> </li><li role="menuitem" class="nav-item-mobile" data-show="mobile"><a href="/support">Support</a> </li></ul> </div> <nav id="sidebar"> <div class="highlightable"> <div id="header-wrapper"> <script type="text/javascript"> var baseurl = ""; </script> </div> <ul class="topics"> <li data-nav-id="/products/" class="dd-item"> <div> <a href="/products/"> <div class="ia-chevron-left-icon"><?xml version="1.0" encoding="UTF-8"?> <svg class="feather feather-chevron-left" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline points="15 18 9 12 15 6"/></svg> </div> <div class="ia-back-to">Back to Product Home</div> </a> </div> </li> <li data-nav-id="/products/app-platform/" class="dd-item parent"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/"> <img alt="" src="/images/icons/app-platform.svg" width="24" height="24" class="icon" /> <span >App Platform</span> </a> </div> </div> <ul> <li data-nav-id="/products/app-platform/getting-started/" class="dd-item alwaysopen"style="margin-bottom:1.5em"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/getting-started/"> <span style="font-weight:bold">Getting Started</span> </a> </div> <div class="ia-chevron-down"><?xml version="1.0" encoding="UTF-8"?> <svg class="feather feather-chevron-right" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"/></svg> </div> </div> <ul> <li data-nav-id="/products/app-platform/getting-started/quickstart/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/getting-started/quickstart/"> <span >Quickstart</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/getting-started/sample-apps/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/getting-started/sample-apps/"> <span >Sample Apps</span> </a> </div> <div class="ia-chevron-right"><?xml version="1.0" encoding="UTF-8"?> <svg class="feather feather-chevron-right" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"/></svg> </div> </div> </li> <li data-nav-id="/products/functions/getting-started/sample-functions/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/functions/getting-started/sample-functions/"> <span >Sample Functions</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/getting-started/deploy-sample-apps/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/getting-started/deploy-sample-apps/"> <span >Deploy Sample Apps</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/getting-started/deploy-rss-reader/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/getting-started/deploy-rss-reader/"> <span >Deploy an RSS Reader</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/getting-started/deploy-etherpad/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/getting-started/deploy-etherpad/"> <span >Deploy Etherpad</span> </a> </div> </div> </li></ul></li> <li data-nav-id="/products/app-platform/how-to/" class="dd-item alwaysopen"style="margin-bottom:1.5em"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/"> <span style="font-weight:bold">How-Tos</span> </a> </div> <div class="ia-chevron-down"><?xml version="1.0" encoding="UTF-8"?> <svg class="feather feather-chevron-right" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"/></svg> </div> </div> <ul> <li data-nav-id="/products/app-platform/how-to/create-apps/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/create-apps/"> <span >Create Apps</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/deploy-from-container-images/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/deploy-from-container-images/"> <span >Deploy from Container Images</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/deploy-from-monorepo/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/deploy-from-monorepo/"> <span >Deploy From Monorepos</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/deploy-from-github-actions/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/deploy-from-github-actions/"> <span >Deploy Using GitHub Actions</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/scale-app/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/scale-app/"> <span >Scale Apps</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/add-deploy-do-button/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/add-deploy-do-button/"> <span >Add "Deploy to DO" Button</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/manage-components/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/manage-components/"> <span >Manage Components</span> </a> </div> <div class="ia-chevron-right"><?xml version="1.0" encoding="UTF-8"?> <svg class="feather feather-chevron-right" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"/></svg> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/manage-data-storage/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/manage-data-storage/"> <span >Manage Data Storage</span> </a> </div> <div class="ia-chevron-right"><?xml version="1.0" encoding="UTF-8"?> <svg class="feather feather-chevron-right" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"/></svg> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/manage-settings/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/manage-settings/"> <span >Manage App Settings</span> </a> </div> <div class="ia-chevron-right"><?xml version="1.0" encoding="UTF-8"?> <svg class="feather feather-chevron-right" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"/></svg> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/manage-networking/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/manage-networking/"> <span >Manage Networking</span> </a> </div> <div class="ia-chevron-right"><?xml version="1.0" encoding="UTF-8"?> <svg class="feather feather-chevron-right" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"/></svg> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/manage-observability/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/manage-observability/"> <span >Manage Observability</span> </a> </div> <div class="ia-chevron-right"><?xml version="1.0" encoding="UTF-8"?> <svg class="feather feather-chevron-right" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"/></svg> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/manage-deployments/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/manage-deployments/"> <span >Manage Deployments</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/restart-rebuild-app/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/restart-rebuild-app/"> <span >Restart or Rebuild App</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/update-app-spec/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/update-app-spec/"> <span >Update App Spec</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/manage-source-repo/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/manage-source-repo/"> <span >Manage Source Repository</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/build-locally/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/build-locally/"> <span >Build Locally</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/how-to/destroy-app/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/how-to/destroy-app/"> <span >Destroy Apps</span> </a> </div> </div> </li></ul></li> <li data-nav-id="/products/app-platform/reference/" class="dd-item alwaysopen parent"style="margin-bottom:1.5em"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/reference/"> <span style="font-weight:bold">Reference</span> </a> </div> <div class="ia-chevron-down"><?xml version="1.0" encoding="UTF-8"?> <svg class="feather feather-chevron-right" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"/></svg> </div> </div> <ul> <li data-nav-id="https://docs.digitalocean.com/reference/api/api-reference/#tag/Apps" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="https://docs.digitalocean.com/reference/api/api-reference/#tag/Apps"> <span >API Reference</span> </a> </div> </div> </li> <li data-nav-id="/reference/doctl/reference/apps" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/reference/doctl/reference/apps"> <span >CLI Reference</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/reference/buildpacks/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/reference/buildpacks/"> <span >Builds with Buildpacks</span> </a> </div> <div class="ia-chevron-right"><?xml version="1.0" encoding="UTF-8"?> <svg class="feather feather-chevron-right" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"/></svg> </div> </div> </li> <li data-nav-id="/products/app-platform/reference/dockerfile/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/reference/dockerfile/"> <span >Builds with Dockerfiles</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/reference/app-spec/" class="dd-item active"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/reference/app-spec/"> <span >App Spec Reference</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/reference/dev-config/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/reference/dev-config/"> <span >Dev Config Reference</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/reference/error-codes/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/reference/error-codes/"> <span >Error Code Reference</span> </a> </div> </div> </li></ul></li> <li data-nav-id="/products/app-platform/concepts/" class="dd-item alwaysopen"style="margin-bottom:1.5em"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/concepts/"> <span style="font-weight:bold">Concepts</span> </a> </div> <div class="ia-chevron-down"><?xml version="1.0" encoding="UTF-8"?> <svg class="feather feather-chevron-right" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"/></svg> </div> </div> <ul> <li data-nav-id="/products/app-platform/concepts/choosing-a-plan/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/concepts/choosing-a-plan/"> <span >Choosing a Plan</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/concepts/platform-upgrade-policy/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/concepts/platform-upgrade-policy/"> <span >Platform Upgrade Policy</span> </a> </div> </div> </li> <li data-nav-id="/glossary/app-platform/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/glossary/app-platform/"> <span >Glossary</span> </a> </div> </div> </li></ul></li> <li data-nav-id="/products/app-platform/details/" class="dd-item alwaysopen"style="margin-bottom:1.5em"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/details/"> <span style="font-weight:bold">Details</span> </a> </div> <div class="ia-chevron-down"><?xml version="1.0" encoding="UTF-8"?> <svg class="feather feather-chevron-right" width="24" height="24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline points="9 18 15 12 9 6"/></svg> </div> </div> <ul> <li data-nav-id="/products/app-platform/details/intro-faq/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/details/intro-faq/"> <span >Introduction FAQ</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/details/features/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/details/features/"> <span >Features</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/details/pricing/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/details/pricing/"> <span >Pricing</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/details/availability/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/details/availability/"> <span >Availability</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/details/limits/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/details/limits/"> <span >Limits</span> </a> </div> </div> </li> <li data-nav-id="/products/app-platform/details/maintenance/" class="dd-item"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/details/maintenance/"> <span >Maintenance</span> </a> </div> </div> </li></ul></li> <li data-nav-id="/products/app-platform/support/" class="dd-item alwaysopen"style="margin-bottom:1.5em"> <div class="menu-entry" > <div class="menu-item-link"> <a href="/products/app-platform/support/"> <span style="font-weight:bold">Support</span> </a> </div> </div> </li></ul></li> </ul> </div> </nav> <div id="body-wrap"> <section id="body"> <div id="overlay"></div> <div class="top-bar-placeholder"></div> <div class="body-content padding highlightable"> <div id="breadcrumbs-feedback-wrapper"> <div id="breadcrumbs" itemscope itemtype="https://schema.org/breadcrumb" class="hide-in-iframe"> <div class="list-tab-icon"><?xml version="1.0" encoding="UTF-8"?> <svg version="1.1" viewBox="0 0 29.9 24" xmlns="http://www.w3.org/2000/svg"><defs><style>.list-tab { fill: #707070; }</style></defs><path class="list-tab" d="M25.5,11H8.7c-.5,0-.9-.4-.9-1s.4-1,.9-1h16.8c.5,0,.9.4.9,1s-.4,1-.9,1Z"/><path class="list-tab" d="M25.5,15H8.7c-.5,0-.9-.4-.9-1s.4-1,.9-1h16.8c.5,0,.9.4.9,1s-.4,1-.9,1Z"/><path class="list-tab" d="M25.5,19H8.7c-.5,0-.9-.4-.9-1s.4-1,.9-1h16.8c.5,0,.9.4.9,1s-.4,1-.9,1Z"/><path class="list-tab" d="m4.5 11c-0.6 0-1-0.4-1-1s0.4-1 1-1 1 0.4 1 1-0.4 1-1 1z"/><path class="list-tab" d="m4.5 15c-0.6 0-1-0.4-1-1s0.4-1 1-1 1 0.4 1 1-0.4 1-1 1z"/><path class="list-tab" d="m4.5 19c-0.6 0-1-0.4-1-1s0.4-1 1-1 1 0.4 1 1-0.4 1-1 1z"/><path class="list-tab" d="M29.3,23.9H.6c-.3,0-.6-.3-.6-.6V.6C0,.2.2,0,.6,0h28.7c.3,0,.6.3.6.6v22.7c0,.3-.3.6-.6.6ZM2,21.2l26.1.2V1.2c.1,0-26,0-26,0v20Z"/><rect class="list-tab" x=".6" y=".6" width="28.7" height="6.3"/></svg> </div> <span class="links" itemscope itemtype="https://schema.org/BreadcrumbList"><span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <a itemprop="item" href="/products/"> <span itemprop="name">Product Home</span> </a> <meta itemprop="position" content="1" /> </span> <span class="bc-separator">></span><span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <a itemprop="item" href="/products/app-platform/"> <span itemprop="name">App Platform</span> </a> <meta itemprop="position" content="2" /> </span> <span class="bc-separator">></span><span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <a itemprop="item" href="/products/app-platform/reference/"> <span itemprop="name">Reference</span> </a> <meta itemprop="position" content="3" /> </span> <span class="bc-separator">></span> <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <span itemprop="name">App Spec Reference</span> <meta itemprop="position" content="4" /> </span></span> </div> <div class="feedback hide-in-iframe hide-in-print"> <div class="feedback-inner"> <p class="feedback-title" id="feedback-message">Was this page helpful?</p> <div class="nero"> <div class="thumbs-up" onclick="logToLooker('Page Rating','2020-10-06 00:00:00 \u002b0000 UTC', 1);document.getElementById('feedback-message').innerHTML = 'Thank You!';"> <?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 24.1 25"> <defs> <style> .cls-thumbs-up { fill: #fff; } </style> </defs> <!-- Generator: Adobe Illustrator 28.6.0, SVG Export Plug-In . SVG Version: 1.2.0 Build 709) --> <g> <g id="Layer_1"> <g id="Layer_1-2" data-name="Layer_1"> <g id="Layer_1-2"> <path class="cls-thumbs-up" d="M14.7,8.9V4c0-2-1.6-3.7-3.7-3.7l-4.9,11v13.5h13.8c1.2,0,2.3-.9,2.5-2.1l1.7-11c.2-1.3-.7-2.6-2.1-2.8h-.4s-6.9,0-6.9,0ZM5.5,24.8h-3c-1.4,0-2.5-1.1-2.5-2.5v-8.6c0-1.4,1.1-2.5,2.5-2.5h2.9"/> </g> </g> </g> </g> </svg> </div> <div class="thumbs-down" onclick="logToLooker('Page Rating','2020-10-06 00:00:00 \u002b0000 UTC', 0);document.getElementById('feedback-message').innerHTML = 'Thank You!';"> <?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 24.1 25"> <defs> <style> .cls-thumbs-down { fill: #fff; } </style> </defs> <!-- Generator: Adobe Illustrator 28.6.0, SVG Export Plug-In . SVG Version: 1.2.0 Build 709) --> <g> <g id="Layer_1"> <path class="cls-thumbs-down" d="M9.4,16.2v4.9c0,2,1.6,3.7,3.7,3.7l4.9-11V.3H4.2c-1.2,0-2.3.9-2.5,2.1L0,13.4c-.2,1.3.7,2.6,2.1,2.8.1,0,.3,0,.4,0h6.9ZM18.7.3h3c1.4,0,2.5,1.1,2.5,2.5v8.6c0,1.4-1.1,2.5-2.5,2.5h-2.9"/> </g> </g> </svg> </div> </div> <a class="feedback-message" id="give-feedback" target="_BLANK" href="https://docs.digitalocean.com/feedback">Give Feedback</a></div> </div> </div> <div id="body-inner"> <h1> Reference for App Specification </h1> <div class="article-meta article-meta--header"> <div> <span> Validated on 6 Oct 2020 • Last edited on 11 Mar 2024 </span> </div> </div> <div class="dynamic-view-wrap"> <p>App Platform is a Platform-as-a-Service (PaaS) offering that allows developers to publish code directly to DigitalOcean servers without worrying about the underlying infrastructure.</p><hr> <p>As an alternative to configuring your app in the control panel, you can define an app specification using YAML. YAML-based app specs are useful for deploying fully-configured apps with the <a href="/products/app-platform/reference/">DigitalOcean API or <code>doctl</code>, the DigitalOcean command-line tool</a>.</p> <h2 id="app-spec-definition">App Spec Definition</h2> <div class="card has-icon"> <img alt="" class="no-popup" src="/images/icons/default.svg"> <div class="card-content"> <div class="card-title" id="App-Spec"> <a class="card-primary-action" href="/glossary/app-spec/" >App Spec</a> </div> <div class="card-body"> <div class="card-description"> The application specification, or app spec, is a YAML manifest that declaratively states everything about your App Platform app, including each resource and all of your app’s <a href="/glossary/environment-variable/">environment variables</a> and configuration variables.</div></div> </div> </div> <h2 id="example-app-spec">Example App Spec</h2> <p>This example app spec defines a single service, <code>api</code>, and a single static site, <code>website</code>. A CORS exception is defined for <code>internal.example-app.com</code>, and an alert is triggered in the event of deployment failure.</p> <pre class="code-block-title code-block-title-align-center drop-tokens" data-title="example-app-spec.yaml" data-src="example-app-spec.yaml"data-download-link > <code class="drop-tokens language-yaml"> alerts: - rule: DEPLOYMENT_FAILED - rule: DOMAIN_FAILED features: - buildpack-stack=ubuntu-22 ingress: rules: - component: name: api match: path: prefix: /api - component: name: website cors: allow_origins: - prefix: https://internal.example-app.com match: path: prefix: / name: your-app region: nyc services: - environment_slug: go github: branch: main deploy_on_push: true repo: git-user-name/api http_port: 8080 instance_count: 2 instance_size_slug: professional-xs name: api run_command: bin/api source_dir: / static_sites: - environment_slug: html github: branch: master deploy_on_push: true repo: git-user-name/website name: website source_dir: / </code> </pre> <h2 id="yaml-file-structure">YAML File Structure</h2> <p>This reference covers all possible values that can be defined in an app spec. Whitespace defines hierarchy in YAML files, so this reference uses whitespace to nest child values under parent values. Where the string <code>(array)</code> appears, you can define more than one of the child values, but you must prefix them with a <code>-</code> dash as shown, per YAML syntax.</p> <style> .yamlRef { padding: 15px; border: 1px #ccc solid; background-color: #fafafa; } .yamlRef code { border: none !important; } .yamlRef ul { list-style-type: none; margin: 0px; margin-top: 0px !important; padding-top: 0px; } .yamlRef li { margin: 0px !important; } .inlineYamlDoc .expand-content { margin-left: 16px; margin-bottom: 10px; margin-top: 10px; padding: 10px; background-color: white; border-radius: 5px; border: 1px #ccc solid; } .inlineYamlDoc .expand-content p { padding: 0px; margin-top: 0px; } .inlineYamlDoc .expand-content ul { margin-bottom: 5px !important; } .inlineYamlDoc .expand-content p:first-child { margin-top: 5px !important; } .inlineYamlDoc .expand-content p:not(:last-child) { margin-bottom: 10px !important; } .inlineYamlDoc .expand-content p:last-child { margin-bottom: 5px !important; } .inlineYamlDoc .expand-content code { white-space: pre-wrap; word-break: break-all; } .inlineYamlArray::before { content: '–'; font-weight: bold; font: monospace; color: #0069ff; float: left; } .inlineYamlArray > li { padding-left: 16px; } .expand-content ul { list-style-type: initial; } #userInput { font-size: large; width: 100%; padding: 10px; } #clearButton { position:absolute; left: 95%; border-radius: 50%; border: none; margin-top: 12px; } #clearButton:hover { background-color: #c5c5c5; } </style> <script> function filterSpec() { let input, filter, ul, li, span, i, txtValue; input = document.getElementById('userInput'); filter = input.value.toUpperCase(); ul = document.getElementById("yamlSpec"); li = ul.getElementsByTagName('li'); for (i = 0; i < li.length; i++) { let elements = li[i].getElementsByTagName('*'); let matchFound = false; for (let j = 0; j < elements.length; j++) { let element = elements[j]; if (element.matches('.expand-link-text')) { txtValue = element.textContent || element.innerText; if (txtValue.toUpperCase().indexOf(filter) > -1) { matchFound = true; break; } } } if (matchFound) { li[i].style.display = ""; let details = li[i].querySelector('details'); if (details) { details.open = true; let parentDetails = details.parentElement.closest('details'); while (parentDetails) { parentDetails.open = true; parentDetails = parentDetails.parentElement.closest('details'); } } let nestedElements = document.querySelectorAll('.nested'); nestedElements.forEach(element => { element.classList.remove('inlineYamlArray'); }); } else { li[i].style.display = "none"; } } if (filter === '') { let detailsElements = ul.getElementsByTagName('details'); for (let k = 0; k < detailsElements.length; k++) { detailsElements[k].open = false; } let nestedElements = document.querySelectorAll('.nested'); nestedElements.forEach(element => { element.classList.add('inlineYamlArray'); }); } } </script> <script> function clearSearch() { document.getElementById('userInput').value = ''; filterSpec(); } </script> <div class="search-bar"> <input type="text" id="userInput" onkeyup="filterSpec()" placeholder="Search spec..."> <button id="clearButton" onclick="clearSearch()">X</button> </div> <div class="yamlRef"> <ul id="yamlSpec" style="padding-left: 0px !important"> <li class="inlineYamlDoc" id="ref-name"> <details> <summary><span class="expand-link-text">name</span></summary> <div class="expand-content"><p>String. The name of the app. Must be unique across all apps in the same account.</p> <p>Minimum length: 2. Maximum length: 32.</p> <p>Must comply with the following regular expression: <code>^[a-z][a-z0-9-]{0,30}[a-z0-9]$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-services"> <details> <summary><span class="expand-link-text">services (array)</span></summary> <div class="expand-content">Array of Objects. Workloads which expose publicly-accessible HTTP services.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-services-name"> <details> <summary><span class="expand-link-text">name</span></summary> <div class="expand-content"><p>String. The name. Must be unique across all components within the same app.</p> <p>Minimum length: 2. Maximum length: 32.</p> <p>Must comply with the following regular expression: <code>^[a-z][a-z0-9-]{0,30}[a-z0-9]$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-git"> <details> <summary><span class="expand-link-text">git</span></summary> <div class="expand-content">Object. A Git repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, <code>gitlab</code>, or <code>image</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-services-git-repo_clone_url"> <details> <summary><span class="expand-link-text">repo_clone_url</span></summary> <div class="expand-content"><p>String. The clone URL of the repo. Example: <code>https://github.com/digitalocean/sample-golang.git</code></p> <p>Maximum length: 255</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-git-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-github"> <details> <summary><span class="expand-link-text">github</span></summary> <div class="expand-content">Object. A GitHub repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, <code>gitlab</code>, or <code>image</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-services-github-repo"> <details> <summary><span class="expand-link-text">repo</span></summary> <div class="expand-content"><p>String. The name of the repo in the format owner/repo. Example: <code>digitalocean/sample-golang</code></p> <p>Must comply with the following regular expression: <code>^[^/]+/[^/]+$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-github-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> <li class="inlineYamlDoc" id="ref-services-github-deploy_on_push"> <details> <summary><span class="expand-link-text">deploy_on_push</span></summary> <div class="expand-content">Boolean. Whether to automatically deploy new commits made to the repo</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-image"> <details> <summary><span class="expand-link-text">image</span></summary> <div class="expand-content">Object. An image to use as the component’s source. Only one of <code>git</code>, <code>github</code>, <code>gitlab</code>, or <code>image</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-services-image-registry_type"> <details> <summary><span class="expand-link-text">registry_type</span></summary> <div class="expand-content"><p>String. The registry type.</p> <ul> <li><code>DOCR</code>: The DigitalOcean container registry type.</li> <li><code>DOCKER_HUB</code>: The DockerHub container registry type.</li> <li><code>GHCR</code>: The Github container registry type.</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-image-registry"> <details> <summary><span class="expand-link-text">registry</span></summary> <div class="expand-content"><p>String. The registry name. Must be left empty for the <code>DOCR</code> registry type. Required for the <code>DOCKER_HUB</code> registry type.</p> <p>Maximum length: 192</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-image-repository"> <details> <summary><span class="expand-link-text">repository</span></summary> <div class="expand-content"><p>String. The repository name.</p> <p>Maximum length: 192</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-image-tag"> <details> <summary><span class="expand-link-text">tag</span></summary> <div class="expand-content"><p>String. The repository tag. Defaults to <code>latest</code> if not provided and no digest is provided. Cannot be specified if digest is provided.</p> <p>Maximum length: 192</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-image-digest"> <details> <summary><span class="expand-link-text">digest</span></summary> <div class="expand-content"><p>String. The image digest. Cannot be specified if tag is provided.</p> <p>Maximum length: 192</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-image-registry_credentials"> <details> <summary><span class="expand-link-text">registry_credentials</span></summary> <div class="expand-content"><p>String. The credentials to be able to pull the image. The value will be encrypted on first submission. On following submissions, the encrypted value should be used.</p> <ul> <li>“$username:$access_token” for registries of type <code>DOCKER_HUB</code>.</li> <li>“$username:$access_token” for registries of type <code>GHCR</code>.</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-image-deploy_on_push"> <details> <summary><span class="expand-link-text">deploy_on_push</span></summary> <div class="expand-content">Object. Deploy on new image tags. Only for DOCR images.</div><ul > <li class="inlineYamlDoc" id="ref-services-image-deploy_on_push-enabled"> <details> <summary><span class="expand-link-text">enabled</span></summary> <div class="expand-content">Boolean. Automatically deploy new images. Only for DOCR images. Can’t be enabled when a specific digest is specified.</div></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-gitlab"> <details> <summary><span class="expand-link-text">gitlab</span></summary> <div class="expand-content">Object. A GitLab repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, <code>gitlab</code>, or <code>image</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-services-gitlab-repo"> <details> <summary><span class="expand-link-text">repo</span></summary> <div class="expand-content"><p>String. The name of the repo in the format owner/repo or owner/subgroup/repo. Example: <code>digitalocean/sample-golang</code> or <code>digitalocean/subgroup/sample-golang</code></p> <p>Must comply with the following regular expression: <code>^[^/]+(/[^/]+)+$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-gitlab-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> <li class="inlineYamlDoc" id="ref-services-gitlab-deploy_on_push"> <details> <summary><span class="expand-link-text">deploy_on_push</span></summary> <div class="expand-content">Boolean. Whether to automatically deploy new commits made to the repo</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-dockerfile_path"> <details> <summary><span class="expand-link-text">dockerfile_path</span></summary> <div class="expand-content">String. The path to the Dockerfile relative to the root of the repo. If set, it will be used to build this component. Otherwise, App Platform will attempt to build it using buildpacks.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-build_command"> <details> <summary><span class="expand-link-text">build_command</span></summary> <div class="expand-content">String. An optional build command to run while building this component from source.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-run_command"> <details> <summary><span class="expand-link-text">run_command</span></summary> <div class="expand-content">String. An optional run command to override the component’s default.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-source_dir"> <details> <summary><span class="expand-link-text">source_dir</span></summary> <div class="expand-content">String. An optional path to the working directory to use for the build. For Dockerfile builds, this will be used as the build context. Must be relative to the root of the repo.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-environment_slug"> <details> <summary><span class="expand-link-text">environment_slug</span></summary> <div class="expand-content">String. A slug identifying the type of app, such as <code>node-js</code>. Available values are <code>node-js</code>, <code>php</code>, <code>ruby</code>, <code>python</code>, <code>go</code>, <code>hugo</code>, <code>html</code>, <code>hexo</code>, <code>ruby-on-rails</code>, <code>jekyll</code>, and <code>gatsby</code>.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-envs"> <details> <summary><span class="expand-link-text">envs (array)</span></summary> <div class="expand-content">Array of Objects. A list of environment variables made available to the component.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-services-envs-key"> <details> <summary><span class="expand-link-text">key</span></summary> <div class="expand-content"><p>String. The name</p> <p>Must comply with the following regular expression: <code>^[_A-Za-z][_A-Za-z0-9]*$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-envs-value"> <details> <summary><span class="expand-link-text">value</span></summary> <div class="expand-content">String. The value. If the type is <code>SECRET</code>, the value will be encrypted on first submission. On following submissions, the encrypted value should be used.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-envs-scope"> <details> <summary><span class="expand-link-text">scope</span></summary> <div class="expand-content"><p>String. The visibility scope</p> <ul> <li><code>RUN_TIME</code>: Made available only at run-time</li> <li><code>BUILD_TIME</code>: Made available only at build-time</li> <li><code>RUN_AND_BUILD_TIME</code>: Made available at both build and run-time</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-envs-type"> <details> <summary><span class="expand-link-text">type</span></summary> <div class="expand-content"><p>String. The type</p> <ul> <li><code>GENERAL</code>: A plain-text environment variable</li> <li><code>SECRET</code>: A secret encrypted environment variable</li> </ul> </div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-instance_size_slug"> <details> <summary><span class="expand-link-text">instance_size_slug</span></summary> <div class="expand-content">String. The instance size to use for this component. Default: <code>basic-xxs</code></div></details> </li> <li class="inlineYamlDoc" id="ref-services-instance_count"> <details> <summary><span class="expand-link-text">instance_count</span></summary> <div class="expand-content">Integer. The amount of instances that this component should be scaled to.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-autoscaling"> <details> <summary><span class="expand-link-text">autoscaling</span></summary> <div class="expand-content">Object. Configuration for automatically scaling this component based on metrics.</div><ul > <li class="inlineYamlDoc" id="ref-services-autoscaling-min_instance_count"> <details> <summary><span class="expand-link-text">min_instance_count</span></summary> <div class="expand-content">Integer. The minimum amount of instances for this component.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-autoscaling-max_instance_count"> <details> <summary><span class="expand-link-text">max_instance_count</span></summary> <div class="expand-content">Integer. The maximum amount of instances for this component.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-autoscaling-metrics"> <details> <summary><span class="expand-link-text">metrics</span></summary> <div class="expand-content">Object. The metrics that the component is scaled on.</div><ul > <li class="inlineYamlDoc" id="ref-services-autoscaling-metrics-cpu"> <details> <summary><span class="expand-link-text">cpu</span></summary> <div class="expand-content">Object. Settings for scaling the component based on CPU utilization.</div><ul > <li class="inlineYamlDoc" id="ref-services-autoscaling-metrics-cpu-percent"> <details> <summary><span class="expand-link-text">percent</span></summary> <div class="expand-content">Integer. The average target CPU utilization for the component.</div></details> </li> </ul></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-http_port"> <details> <summary><span class="expand-link-text">http_port</span></summary> <div class="expand-content">Integer. The internal port on which this service’s run command will listen. Default: 8080 If there is not an environment variable with the name <code>PORT</code>, one will be automatically added with its value set to the value of this field.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-routes"> <details> <summary><span class="expand-link-text">routes (array)</span></summary> <div class="expand-content">Array of Objects. (Deprecated) A list of HTTP routes that should be routed to this component.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-services-routes-path"> <details> <summary><span class="expand-link-text">path</span></summary> <div class="expand-content">String. (Deprecated) An HTTP path prefix. Paths must start with / and must be unique across all components within an app.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-routes-preserve_path_prefix"> <details> <summary><span class="expand-link-text">preserve_path_prefix</span></summary> <div class="expand-content">Boolean. (Deprecated) An optional flag to preserve the path that is forwarded to the backend service. By default, the HTTP request path will be trimmed from the left when forwarded to the component. For example, a component with <code>path=/api</code> will have requests to <code>/api/list</code> trimmed to <code>/list</code>. If this value is <code>true</code>, the path will remain <code>/api/list</code>. Note: this is not applicable for Functions Components.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-health_check"> <details> <summary><span class="expand-link-text">health_check</span></summary> <div class="expand-content">Object. A health check to determine the availability of this component.</div><ul > <li class="inlineYamlDoc" id="ref-services-health_check-initial_delay_seconds"> <details> <summary><span class="expand-link-text">initial_delay_seconds</span></summary> <div class="expand-content">Integer. The number of seconds to wait before beginning health checks. Default: 0 seconds, Minimum 0, Maximum 3600.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-health_check-period_seconds"> <details> <summary><span class="expand-link-text">period_seconds</span></summary> <div class="expand-content">Integer. The number of seconds to wait between health checks. Default: 10 seconds, Minimum 1, Maximum 300.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-health_check-timeout_seconds"> <details> <summary><span class="expand-link-text">timeout_seconds</span></summary> <div class="expand-content">Integer. The number of seconds after which the check times out. Default: 1 second, Minimum 1, Maximum 120.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-health_check-success_threshold"> <details> <summary><span class="expand-link-text">success_threshold</span></summary> <div class="expand-content">Integer. The number of successful health checks before considered healthy. Default: 1, Minimum 1, Maximum 50.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-health_check-failure_threshold"> <details> <summary><span class="expand-link-text">failure_threshold</span></summary> <div class="expand-content">Integer. The number of failed health checks before considered unhealthy. Default: 9, Minimum 1, Maximum 50.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-health_check-http_path"> <details> <summary><span class="expand-link-text">http_path</span></summary> <div class="expand-content">String. The route path used for the HTTP health check ping. If not set, the HTTP health check will be disabled and a TCP health check used instead.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-health_check-port"> <details> <summary><span class="expand-link-text">port</span></summary> <div class="expand-content">Integer. The port on which the health check will be performed. If not set, the health check will be performed on the component’s http_port.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-cors"> <details> <summary><span class="expand-link-text">cors</span></summary> <div class="expand-content">Object. (Deprecated, see <code>ingress > rules > cors</code>) A Cross-Origin Resource Sharing policy (CORS).</div><ul > <li class="inlineYamlDoc" id="ref-services-cors-allow_origins"> <details> <summary><span class="expand-link-text">allow_origins (array)</span></summary> <div class="expand-content">Array of Objects. The set of allowed CORS origins. This configures the Access-Control-Allow-Origin header.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-services-cors-allow_origins-exact"> <details> <summary><span class="expand-link-text">exact</span></summary> <div class="expand-content"><p>String. Exact string match. Only 1 of <code>exact</code>, <code>prefix</code>, or <code>regex</code> must be set.</p> <p>Minimum length: 1. Maximum length: 256</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-cors-allow_origins-regex"> <details> <summary><span class="expand-link-text">regex</span></summary> <div class="expand-content"><p>String. RE2 style regex-based match. Only 1 of <code>exact</code>, <code>prefix</code>, or <code>regex</code> must be set. For more information about RE2 syntax, see: <a href="https://github.com/google/re2/wiki/Syntax">https://github.com/google/re2/wiki/Syntax</a></p> <p>Minimum length: 1. Maximum length: 256</p> </div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-cors-allow_methods"> <details> <summary><span class="expand-link-text">allow_methods (array)</span></summary> <div class="expand-content">Array of Strings. The set of allowed HTTP methods. This configures the Access-Control-Allow-Methods header.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-cors-allow_headers"> <details> <summary><span class="expand-link-text">allow_headers (array)</span></summary> <div class="expand-content">Array of Strings. The set of allowed HTTP request headers. This configures the Access-Control-Allow-Headers header.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-cors-expose_headers"> <details> <summary><span class="expand-link-text">expose_headers (array)</span></summary> <div class="expand-content">Array of Strings. The set of HTTP response headers that browsers are allowed to access. This configures the Access-Control-Expose-Headers header.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-cors-max_age"> <details> <summary><span class="expand-link-text">max_age</span></summary> <div class="expand-content">String. An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: <code>5h30m</code>.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-cors-allow_credentials"> <details> <summary><span class="expand-link-text">allow_credentials</span></summary> <div class="expand-content">Boolean. Whether browsers should expose the response to the client-side JavaScript code when the request’s credentials mode is <code>include</code>. This configures the Access-Control-Allow-Credentials header.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-internal_ports"> <details> <summary><span class="expand-link-text">internal_ports (array)</span></summary> <div class="expand-content">Array of Int64s. The ports on which this service will listen for internal traffic.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-alerts"> <details> <summary><span class="expand-link-text">alerts (array)</span></summary> <div class="expand-content">Array of Objects. A list of configured alerts which apply to the component.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-services-alerts-rule"> <details> <summary><span class="expand-link-text">rule</span></summary> <div class="expand-content"><p>String. The specific type of alert.</p> <ul> <li><code>CPU_UTILIZATION</code>: Represents CPU for a given container instance. Only applicable at the component level.</li> <li><code>MEM_UTILIZATION</code>: Represents RAM for a given container instance. Only applicable at the component level.</li> <li><code>RESTART_COUNT</code>: Represents restart count for a given container instance. Only applicable at the component level.</li> <li><code>DEPLOYMENT_FAILED</code>: Represents whether a deployment has failed. Only applicable at the app level.</li> <li><code>DEPLOYMENT_LIVE</code>: Represents whether a deployment has succeeded. Only applicable at the app level.</li> <li><code>DEPLOYMENT_STARTED</code>: Represents whether a deployment has started. Only applicable at the app level.</li> <li><code>DEPLOYMENT_CANCELED</code>: Represents whether a deployment has been canceled. Only applicable at the app level.</li> <li><code>DOMAIN_FAILED</code>: Represents whether a domain configuration has failed. Only applicable at the app level.</li> <li><code>DOMAIN_LIVE</code>: Represents whether a domain configuration has succeeded. Only applicable at the app level.</li> <li><code>FUNCTIONS_ACTIVATION_COUNT</code>: Represents an activation count for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_AVERAGE_DURATION_MS</code>: Represents the average duration for function runtimes. Only applicable to functions components.</li> <li><code>FUNCTIONS_ERROR_RATE_PER_MINUTE</code>: Represents an error rate per minute for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_AVERAGE_WAIT_TIME_MS</code>: Represents the average wait time for functions. Only applicable to functions components.</li> <li><code>FUNCTIONS_ERROR_COUNT</code>: Represents an error count for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_GB_RATE_PER_SECOND</code>: Represents the rate of memory consumption (GB x seconds) for functions. Only applicable to functions components.</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-alerts-disabled"> <details> <summary><span class="expand-link-text">disabled</span></summary> <div class="expand-content">Boolean. Determines whether or not the alert is disabled.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-alerts-operator"> <details> <summary><span class="expand-link-text">operator</span></summary> <div class="expand-content">String. Can be <code>GREATER_THAN</code>, or <code>LESS_THAN</code></div></details> </li> <li class="inlineYamlDoc" id="ref-services-alerts-value"> <details> <summary><span class="expand-link-text">value</span></summary> <div class="expand-content">Number. The meaning is dependent upon the rule. It is used in conjunction with the operator and window to determine when an alert should trigger.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-alerts-window"> <details> <summary><span class="expand-link-text">window</span></summary> <div class="expand-content">String. Can be <code>FIVE_MINUTES</code>, <code>TEN_MINUTES</code>, <code>THIRTY_MINUTES</code>, or <code>ONE_HOUR</code></div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-log_destinations"> <details> <summary><span class="expand-link-text">log_destinations (array)</span></summary> <div class="expand-content">Array of Objects. A list of configured log forwarding destinations.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-services-log_destinations-name"> <details> <summary><span class="expand-link-text">name</span></summary> <div class="expand-content"><p>String. Name of the log destination.</p> <p>Minimum length: 2. Maximum length: 42.</p> <p>Must comply with the following regular expression: <code>^[A-Za-z0-9()\[\]'"][-A-Za-z0-9_. \/()\[\]]{0,40}[A-Za-z0-9()\[\]'"]$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-log_destinations-papertrail"> <details> <summary><span class="expand-link-text">papertrail</span></summary> <div class="expand-content">Object. Papertrail configuration.</div><ul > <li class="inlineYamlDoc" id="ref-services-log_destinations-papertrail-endpoint"> <details> <summary><span class="expand-link-text">endpoint</span></summary> <div class="expand-content">String. Papertrail syslog endpoint.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-log_destinations-datadog"> <details> <summary><span class="expand-link-text">datadog</span></summary> <div class="expand-content">Object. Datadog configuration.</div><ul > <li class="inlineYamlDoc" id="ref-services-log_destinations-datadog-endpoint"> <details> <summary><span class="expand-link-text">endpoint</span></summary> <div class="expand-content">String. Datadog HTTP log intake endpoint.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-log_destinations-datadog-api_key"> <details> <summary><span class="expand-link-text">api_key</span></summary> <div class="expand-content">String. Datadog API key.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-log_destinations-logtail"> <details> <summary><span class="expand-link-text">logtail</span></summary> <div class="expand-content">Object. Logtail configuration.</div><ul > <li class="inlineYamlDoc" id="ref-services-log_destinations-logtail-token"> <details> <summary><span class="expand-link-text">token</span></summary> <div class="expand-content">String. Logtail token.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-log_destinations-open_search"> <details> <summary><span class="expand-link-text">open_search</span></summary> <div class="expand-content">Object. OpenSearch configuration.</div><ul > <li class="inlineYamlDoc" id="ref-services-log_destinations-open_search-endpoint"> <details> <summary><span class="expand-link-text">endpoint</span></summary> <div class="expand-content"><p>String. OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>. Cannot be specified if <code>cluster_name</code> is also specified.</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-services-log_destinations-open_search-basic_auth"> <details> <summary><span class="expand-link-text">basic_auth</span></summary> <div class="expand-content">Object.</div><ul > <li class="inlineYamlDoc" id="ref-services-log_destinations-open_search-basic_auth-user"> <details> <summary><span class="expand-link-text">user</span></summary> <div class="expand-content">String. Username to authenticate with. Only required when <code>endpoint</code> is set. Defaults to <code>doadmin</code> when <code>cluster_name</code> is set.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-log_destinations-open_search-basic_auth-password"> <details> <summary><span class="expand-link-text">password</span></summary> <div class="expand-content">String. Password for user defined in User. Is required when <code>endpoint</code> is set. Cannot be set if using a DigitalOcean DBaaS OpenSearch cluster.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-log_destinations-open_search-index_name"> <details> <summary><span class="expand-link-text">index_name</span></summary> <div class="expand-content">String. The index name to use for the logs. If not set, the default index name is “logs”.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-log_destinations-open_search-cluster_name"> <details> <summary><span class="expand-link-text">cluster_name</span></summary> <div class="expand-content">String. The name of a DigitalOcean DBaaS OpenSearch cluster to use as a log forwarding destination. Cannot be specified if <code>endpoint</code> is also specified.</div></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-services-termination"> <details> <summary><span class="expand-link-text">termination</span></summary> <div class="expand-content">Object.</div><ul > <li class="inlineYamlDoc" id="ref-services-termination-drain_seconds"> <details> <summary><span class="expand-link-text">drain_seconds</span></summary> <div class="expand-content">Integer. The number of seconds to wait between selecting a container instance for termination and issuing the TERM signal. Selecting a container instance for termination begins an asynchronous drain of new requests on upstream load-balancers. Default: 15 seconds, Minimum 1, Maximum 110.</div></details> </li> <li class="inlineYamlDoc" id="ref-services-termination-grace_period_seconds"> <details> <summary><span class="expand-link-text">grace_period_seconds</span></summary> <div class="expand-content">Integer. The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.</div></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-static_sites"> <details> <summary><span class="expand-link-text">static_sites (array)</span></summary> <div class="expand-content">Array of Objects. Content which can be rendered to static web assets.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-static_sites-name"> <details> <summary><span class="expand-link-text">name</span></summary> <div class="expand-content"><p>String. The name. Must be unique across all components within the same app.</p> <p>Minimum length: 2. Maximum length: 32.</p> <p>Must comply with the following regular expression: <code>^[a-z][a-z0-9-]{0,30}[a-z0-9]$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-git"> <details> <summary><span class="expand-link-text">git</span></summary> <div class="expand-content">Object. A Git repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, or <code>gitlab</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-static_sites-git-repo_clone_url"> <details> <summary><span class="expand-link-text">repo_clone_url</span></summary> <div class="expand-content"><p>String. The clone URL of the repo. Example: <code>https://github.com/digitalocean/sample-golang.git</code></p> <p>Maximum length: 255</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-git-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-github"> <details> <summary><span class="expand-link-text">github</span></summary> <div class="expand-content">Object. A GitHub repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, or <code>gitlab</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-static_sites-github-repo"> <details> <summary><span class="expand-link-text">repo</span></summary> <div class="expand-content"><p>String. The name of the repo in the format owner/repo. Example: <code>digitalocean/sample-golang</code></p> <p>Must comply with the following regular expression: <code>^[^/]+/[^/]+$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-github-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-github-deploy_on_push"> <details> <summary><span class="expand-link-text">deploy_on_push</span></summary> <div class="expand-content">Boolean. Whether to automatically deploy new commits made to the repo</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-gitlab"> <details> <summary><span class="expand-link-text">gitlab</span></summary> <div class="expand-content">Object. A GitLab repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, or <code>gitlab</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-static_sites-gitlab-repo"> <details> <summary><span class="expand-link-text">repo</span></summary> <div class="expand-content"><p>String. The name of the repo in the format owner/repo or owner/subgroup/repo. Example: <code>digitalocean/sample-golang</code> or <code>digitalocean/subgroup/sample-golang</code></p> <p>Must comply with the following regular expression: <code>^[^/]+(/[^/]+)+$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-gitlab-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-gitlab-deploy_on_push"> <details> <summary><span class="expand-link-text">deploy_on_push</span></summary> <div class="expand-content">Boolean. Whether to automatically deploy new commits made to the repo</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-dockerfile_path"> <details> <summary><span class="expand-link-text">dockerfile_path</span></summary> <div class="expand-content">String. The path to the Dockerfile relative to the root of the repo. If set, it will be used to build this component. Otherwise, App Platform will attempt to build it using buildpacks.</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-build_command"> <details> <summary><span class="expand-link-text">build_command</span></summary> <div class="expand-content">String. An optional build command to run while building this component from source.</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-source_dir"> <details> <summary><span class="expand-link-text">source_dir</span></summary> <div class="expand-content">String. An optional path to the working directory to use for the build. For Dockerfile builds, this will be used as the build context. Must be relative to the root of the repo.</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-environment_slug"> <details> <summary><span class="expand-link-text">environment_slug</span></summary> <div class="expand-content">String. A slug identifying the type of app, such as <code>node-js</code>. Available values are <code>node-js</code>, <code>php</code>, <code>ruby</code>, <code>python</code>, <code>go</code>, <code>hugo</code>, <code>html</code>, <code>hexo</code>, <code>ruby-on-rails</code>, <code>jekyll</code>, and <code>gatsby</code>.</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-output_dir"> <details> <summary><span class="expand-link-text">output_dir</span></summary> <div class="expand-content">String. An optional path to where the built assets will be located, relative to the build context. If not set, App Platform will automatically scan for these directory names: <code>_static</code>, <code>dist</code>, <code>public</code>, <code>build</code>.</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-index_document"> <details> <summary><span class="expand-link-text">index_document</span></summary> <div class="expand-content">String. The name of the index document to use when serving this static site. Default: index.html</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-error_document"> <details> <summary><span class="expand-link-text">error_document</span></summary> <div class="expand-content">String. The name of the error document to use when serving this static site. Default: 404.html. If no such file exists within the built assets, App Platform will supply one.</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-envs"> <details> <summary><span class="expand-link-text">envs (array)</span></summary> <div class="expand-content">Array of Objects. A list of environment variables made available to the component.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-static_sites-envs-key"> <details> <summary><span class="expand-link-text">key</span></summary> <div class="expand-content"><p>String. The name</p> <p>Must comply with the following regular expression: <code>^[_A-Za-z][_A-Za-z0-9]*$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-envs-value"> <details> <summary><span class="expand-link-text">value</span></summary> <div class="expand-content">String. The value. If the type is <code>SECRET</code>, the value will be encrypted on first submission. On following submissions, the encrypted value should be used.</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-envs-scope"> <details> <summary><span class="expand-link-text">scope</span></summary> <div class="expand-content"><p>String. The visibility scope</p> <ul> <li><code>RUN_TIME</code>: Made available only at run-time</li> <li><code>BUILD_TIME</code>: Made available only at build-time</li> <li><code>RUN_AND_BUILD_TIME</code>: Made available at both build and run-time</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-envs-type"> <details> <summary><span class="expand-link-text">type</span></summary> <div class="expand-content"><p>String. The type</p> <ul> <li><code>GENERAL</code>: A plain-text environment variable</li> <li><code>SECRET</code>: A secret encrypted environment variable</li> </ul> </div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-routes"> <details> <summary><span class="expand-link-text">routes (array)</span></summary> <div class="expand-content">Array of Objects. (Deprecated) A list of HTTP routes that should be routed to this component.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-static_sites-routes-path"> <details> <summary><span class="expand-link-text">path</span></summary> <div class="expand-content">String. (Deprecated) An HTTP path prefix. Paths must start with / and must be unique across all components within an app.</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-routes-preserve_path_prefix"> <details> <summary><span class="expand-link-text">preserve_path_prefix</span></summary> <div class="expand-content">Boolean. (Deprecated) An optional flag to preserve the path that is forwarded to the backend service. By default, the HTTP request path will be trimmed from the left when forwarded to the component. For example, a component with <code>path=/api</code> will have requests to <code>/api/list</code> trimmed to <code>/list</code>. If this value is <code>true</code>, the path will remain <code>/api/list</code>. Note: this is not applicable for Functions Components.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-cors"> <details> <summary><span class="expand-link-text">cors</span></summary> <div class="expand-content">Object. (Deprecated, see <code>ingress > rules > cors</code>) A Cross-Origin Resource Sharing policy (CORS).</div><ul > <li class="inlineYamlDoc" id="ref-static_sites-cors-allow_origins"> <details> <summary><span class="expand-link-text">allow_origins (array)</span></summary> <div class="expand-content">Array of Objects. The set of allowed CORS origins. This configures the Access-Control-Allow-Origin header.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-static_sites-cors-allow_origins-exact"> <details> <summary><span class="expand-link-text">exact</span></summary> <div class="expand-content"><p>String. Exact string match. Only 1 of <code>exact</code>, <code>prefix</code>, or <code>regex</code> must be set.</p> <p>Minimum length: 1. Maximum length: 256</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-cors-allow_origins-regex"> <details> <summary><span class="expand-link-text">regex</span></summary> <div class="expand-content"><p>String. RE2 style regex-based match. Only 1 of <code>exact</code>, <code>prefix</code>, or <code>regex</code> must be set. For more information about RE2 syntax, see: <a href="https://github.com/google/re2/wiki/Syntax">https://github.com/google/re2/wiki/Syntax</a></p> <p>Minimum length: 1. Maximum length: 256</p> </div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-cors-allow_methods"> <details> <summary><span class="expand-link-text">allow_methods (array)</span></summary> <div class="expand-content">Array of Strings. The set of allowed HTTP methods. This configures the Access-Control-Allow-Methods header.</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-cors-allow_headers"> <details> <summary><span class="expand-link-text">allow_headers (array)</span></summary> <div class="expand-content">Array of Strings. The set of allowed HTTP request headers. This configures the Access-Control-Allow-Headers header.</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-cors-expose_headers"> <details> <summary><span class="expand-link-text">expose_headers (array)</span></summary> <div class="expand-content">Array of Strings. The set of HTTP response headers that browsers are allowed to access. This configures the Access-Control-Expose-Headers header.</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-cors-max_age"> <details> <summary><span class="expand-link-text">max_age</span></summary> <div class="expand-content">String. An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: <code>5h30m</code>.</div></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-cors-allow_credentials"> <details> <summary><span class="expand-link-text">allow_credentials</span></summary> <div class="expand-content">Boolean. Whether browsers should expose the response to the client-side JavaScript code when the request’s credentials mode is <code>include</code>. This configures the Access-Control-Allow-Credentials header.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-static_sites-catchall_document"> <details> <summary><span class="expand-link-text">catchall_document</span></summary> <div class="expand-content">String. The name of the document to use as the fallback for any requests to documents that are not found when serving this static site. Only 1 of <code>catchall_document</code> or <code>error_document</code> can be set.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-workers"> <details> <summary><span class="expand-link-text">workers (array)</span></summary> <div class="expand-content">Array of Objects. Workloads which do not expose publicly-accessible HTTP services.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-workers-name"> <details> <summary><span class="expand-link-text">name</span></summary> <div class="expand-content"><p>String. The name. Must be unique across all components within the same app.</p> <p>Minimum length: 2. Maximum length: 32.</p> <p>Must comply with the following regular expression: <code>^[a-z][a-z0-9-]{0,30}[a-z0-9]$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-git"> <details> <summary><span class="expand-link-text">git</span></summary> <div class="expand-content">Object. A Git repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, <code>gitlab</code>, or <code>image</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-workers-git-repo_clone_url"> <details> <summary><span class="expand-link-text">repo_clone_url</span></summary> <div class="expand-content"><p>String. The clone URL of the repo. Example: <code>https://github.com/digitalocean/sample-golang.git</code></p> <p>Maximum length: 255</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-git-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-workers-github"> <details> <summary><span class="expand-link-text">github</span></summary> <div class="expand-content">Object. A GitHub repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, <code>gitlab</code>, or <code>image</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-workers-github-repo"> <details> <summary><span class="expand-link-text">repo</span></summary> <div class="expand-content"><p>String. The name of the repo in the format owner/repo. Example: <code>digitalocean/sample-golang</code></p> <p>Must comply with the following regular expression: <code>^[^/]+/[^/]+$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-github-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-github-deploy_on_push"> <details> <summary><span class="expand-link-text">deploy_on_push</span></summary> <div class="expand-content">Boolean. Whether to automatically deploy new commits made to the repo</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-workers-image"> <details> <summary><span class="expand-link-text">image</span></summary> <div class="expand-content">Object. An image to use as the component’s source. Only one of <code>git</code>, <code>github</code>, <code>gitlab</code>, or <code>image</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-workers-image-registry_type"> <details> <summary><span class="expand-link-text">registry_type</span></summary> <div class="expand-content"><p>String. The registry type.</p> <ul> <li><code>DOCR</code>: The DigitalOcean container registry type.</li> <li><code>DOCKER_HUB</code>: The DockerHub container registry type.</li> <li><code>GHCR</code>: The Github container registry type.</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-image-registry"> <details> <summary><span class="expand-link-text">registry</span></summary> <div class="expand-content"><p>String. The registry name. Must be left empty for the <code>DOCR</code> registry type. Required for the <code>DOCKER_HUB</code> registry type.</p> <p>Maximum length: 192</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-image-repository"> <details> <summary><span class="expand-link-text">repository</span></summary> <div class="expand-content"><p>String. The repository name.</p> <p>Maximum length: 192</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-image-tag"> <details> <summary><span class="expand-link-text">tag</span></summary> <div class="expand-content"><p>String. The repository tag. Defaults to <code>latest</code> if not provided and no digest is provided. Cannot be specified if digest is provided.</p> <p>Maximum length: 192</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-image-digest"> <details> <summary><span class="expand-link-text">digest</span></summary> <div class="expand-content"><p>String. The image digest. Cannot be specified if tag is provided.</p> <p>Maximum length: 192</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-image-registry_credentials"> <details> <summary><span class="expand-link-text">registry_credentials</span></summary> <div class="expand-content"><p>String. The credentials to be able to pull the image. The value will be encrypted on first submission. On following submissions, the encrypted value should be used.</p> <ul> <li>“$username:$access_token” for registries of type <code>DOCKER_HUB</code>.</li> <li>“$username:$access_token” for registries of type <code>GHCR</code>.</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-image-deploy_on_push"> <details> <summary><span class="expand-link-text">deploy_on_push</span></summary> <div class="expand-content">Object. Deploy on new image tags. Only for DOCR images.</div><ul > <li class="inlineYamlDoc" id="ref-workers-image-deploy_on_push-enabled"> <details> <summary><span class="expand-link-text">enabled</span></summary> <div class="expand-content">Boolean. Automatically deploy new images. Only for DOCR images. Can’t be enabled when a specific digest is specified.</div></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-workers-gitlab"> <details> <summary><span class="expand-link-text">gitlab</span></summary> <div class="expand-content">Object. A GitLab repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, <code>gitlab</code>, or <code>image</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-workers-gitlab-repo"> <details> <summary><span class="expand-link-text">repo</span></summary> <div class="expand-content"><p>String. The name of the repo in the format owner/repo or owner/subgroup/repo. Example: <code>digitalocean/sample-golang</code> or <code>digitalocean/subgroup/sample-golang</code></p> <p>Must comply with the following regular expression: <code>^[^/]+(/[^/]+)+$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-gitlab-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-gitlab-deploy_on_push"> <details> <summary><span class="expand-link-text">deploy_on_push</span></summary> <div class="expand-content">Boolean. Whether to automatically deploy new commits made to the repo</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-workers-dockerfile_path"> <details> <summary><span class="expand-link-text">dockerfile_path</span></summary> <div class="expand-content">String. The path to the Dockerfile relative to the root of the repo. If set, it will be used to build this component. Otherwise, App Platform will attempt to build it using buildpacks.</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-build_command"> <details> <summary><span class="expand-link-text">build_command</span></summary> <div class="expand-content">String. An optional build command to run while building this component from source.</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-run_command"> <details> <summary><span class="expand-link-text">run_command</span></summary> <div class="expand-content">String. An optional run command to override the component’s default.</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-source_dir"> <details> <summary><span class="expand-link-text">source_dir</span></summary> <div class="expand-content">String. An optional path to the working directory to use for the build. For Dockerfile builds, this will be used as the build context. Must be relative to the root of the repo.</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-environment_slug"> <details> <summary><span class="expand-link-text">environment_slug</span></summary> <div class="expand-content">String. A slug identifying the type of app, such as <code>node-js</code>. Available values are <code>node-js</code>, <code>php</code>, <code>ruby</code>, <code>python</code>, <code>go</code>, <code>hugo</code>, <code>html</code>, <code>hexo</code>, <code>ruby-on-rails</code>, <code>jekyll</code>, and <code>gatsby</code>.</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-envs"> <details> <summary><span class="expand-link-text">envs (array)</span></summary> <div class="expand-content">Array of Objects. A list of environment variables made available to the component.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-workers-envs-key"> <details> <summary><span class="expand-link-text">key</span></summary> <div class="expand-content"><p>String. The name</p> <p>Must comply with the following regular expression: <code>^[_A-Za-z][_A-Za-z0-9]*$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-envs-value"> <details> <summary><span class="expand-link-text">value</span></summary> <div class="expand-content">String. The value. If the type is <code>SECRET</code>, the value will be encrypted on first submission. On following submissions, the encrypted value should be used.</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-envs-scope"> <details> <summary><span class="expand-link-text">scope</span></summary> <div class="expand-content"><p>String. The visibility scope</p> <ul> <li><code>RUN_TIME</code>: Made available only at run-time</li> <li><code>BUILD_TIME</code>: Made available only at build-time</li> <li><code>RUN_AND_BUILD_TIME</code>: Made available at both build and run-time</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-envs-type"> <details> <summary><span class="expand-link-text">type</span></summary> <div class="expand-content"><p>String. The type</p> <ul> <li><code>GENERAL</code>: A plain-text environment variable</li> <li><code>SECRET</code>: A secret encrypted environment variable</li> </ul> </div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-workers-instance_size_slug"> <details> <summary><span class="expand-link-text">instance_size_slug</span></summary> <div class="expand-content">String. The instance size to use for this component.</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-instance_count"> <details> <summary><span class="expand-link-text">instance_count</span></summary> <div class="expand-content">Integer. The amount of instances that this component should be scaled to. Default: 1</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-autoscaling"> <details> <summary><span class="expand-link-text">autoscaling</span></summary> <div class="expand-content">Object. Configuration for automatically scaling this component based on metrics.</div><ul > <li class="inlineYamlDoc" id="ref-workers-autoscaling-min_instance_count"> <details> <summary><span class="expand-link-text">min_instance_count</span></summary> <div class="expand-content">Integer. The minimum amount of instances for this component.</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-autoscaling-max_instance_count"> <details> <summary><span class="expand-link-text">max_instance_count</span></summary> <div class="expand-content">Integer. The maximum amount of instances for this component.</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-autoscaling-metrics"> <details> <summary><span class="expand-link-text">metrics</span></summary> <div class="expand-content">Object. The metrics that the component is scaled on.</div><ul > <li class="inlineYamlDoc" id="ref-workers-autoscaling-metrics-cpu"> <details> <summary><span class="expand-link-text">cpu</span></summary> <div class="expand-content">Object. Settings for scaling the component based on CPU utilization.</div><ul > <li class="inlineYamlDoc" id="ref-workers-autoscaling-metrics-cpu-percent"> <details> <summary><span class="expand-link-text">percent</span></summary> <div class="expand-content">Integer. The average target CPU utilization for the component.</div></details> </li> </ul></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-workers-alerts"> <details> <summary><span class="expand-link-text">alerts (array)</span></summary> <div class="expand-content">Array of Objects. A list of configured alerts which apply to the component.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-workers-alerts-rule"> <details> <summary><span class="expand-link-text">rule</span></summary> <div class="expand-content"><p>String. The specific type of alert.</p> <ul> <li><code>CPU_UTILIZATION</code>: Represents CPU for a given container instance. Only applicable at the component level.</li> <li><code>MEM_UTILIZATION</code>: Represents RAM for a given container instance. Only applicable at the component level.</li> <li><code>RESTART_COUNT</code>: Represents restart count for a given container instance. Only applicable at the component level.</li> <li><code>DEPLOYMENT_FAILED</code>: Represents whether a deployment has failed. Only applicable at the app level.</li> <li><code>DEPLOYMENT_LIVE</code>: Represents whether a deployment has succeeded. Only applicable at the app level.</li> <li><code>DEPLOYMENT_STARTED</code>: Represents whether a deployment has started. Only applicable at the app level.</li> <li><code>DEPLOYMENT_CANCELED</code>: Represents whether a deployment has been canceled. Only applicable at the app level.</li> <li><code>DOMAIN_FAILED</code>: Represents whether a domain configuration has failed. Only applicable at the app level.</li> <li><code>DOMAIN_LIVE</code>: Represents whether a domain configuration has succeeded. Only applicable at the app level.</li> <li><code>FUNCTIONS_ACTIVATION_COUNT</code>: Represents an activation count for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_AVERAGE_DURATION_MS</code>: Represents the average duration for function runtimes. Only applicable to functions components.</li> <li><code>FUNCTIONS_ERROR_RATE_PER_MINUTE</code>: Represents an error rate per minute for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_AVERAGE_WAIT_TIME_MS</code>: Represents the average wait time for functions. Only applicable to functions components.</li> <li><code>FUNCTIONS_ERROR_COUNT</code>: Represents an error count for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_GB_RATE_PER_SECOND</code>: Represents the rate of memory consumption (GB x seconds) for functions. Only applicable to functions components.</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-alerts-disabled"> <details> <summary><span class="expand-link-text">disabled</span></summary> <div class="expand-content">Boolean. Determines whether or not the alert is disabled.</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-alerts-operator"> <details> <summary><span class="expand-link-text">operator</span></summary> <div class="expand-content">String. Can be <code>GREATER_THAN</code>, or <code>LESS_THAN</code></div></details> </li> <li class="inlineYamlDoc" id="ref-workers-alerts-value"> <details> <summary><span class="expand-link-text">value</span></summary> <div class="expand-content">Number. The meaning is dependent upon the rule. It is used in conjunction with the operator and window to determine when an alert should trigger.</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-alerts-window"> <details> <summary><span class="expand-link-text">window</span></summary> <div class="expand-content">String. Can be <code>FIVE_MINUTES</code>, <code>TEN_MINUTES</code>, <code>THIRTY_MINUTES</code>, or <code>ONE_HOUR</code></div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-workers-log_destinations"> <details> <summary><span class="expand-link-text">log_destinations (array)</span></summary> <div class="expand-content">Array of Objects. A list of configured log forwarding destinations.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-workers-log_destinations-name"> <details> <summary><span class="expand-link-text">name</span></summary> <div class="expand-content"><p>String. Name of the log destination.</p> <p>Minimum length: 2. Maximum length: 42.</p> <p>Must comply with the following regular expression: <code>^[A-Za-z0-9()\[\]'"][-A-Za-z0-9_. \/()\[\]]{0,40}[A-Za-z0-9()\[\]'"]$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-log_destinations-papertrail"> <details> <summary><span class="expand-link-text">papertrail</span></summary> <div class="expand-content">Object. Papertrail configuration.</div><ul > <li class="inlineYamlDoc" id="ref-workers-log_destinations-papertrail-endpoint"> <details> <summary><span class="expand-link-text">endpoint</span></summary> <div class="expand-content">String. Papertrail syslog endpoint.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-workers-log_destinations-datadog"> <details> <summary><span class="expand-link-text">datadog</span></summary> <div class="expand-content">Object. Datadog configuration.</div><ul > <li class="inlineYamlDoc" id="ref-workers-log_destinations-datadog-endpoint"> <details> <summary><span class="expand-link-text">endpoint</span></summary> <div class="expand-content">String. Datadog HTTP log intake endpoint.</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-log_destinations-datadog-api_key"> <details> <summary><span class="expand-link-text">api_key</span></summary> <div class="expand-content">String. Datadog API key.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-workers-log_destinations-logtail"> <details> <summary><span class="expand-link-text">logtail</span></summary> <div class="expand-content">Object. Logtail configuration.</div><ul > <li class="inlineYamlDoc" id="ref-workers-log_destinations-logtail-token"> <details> <summary><span class="expand-link-text">token</span></summary> <div class="expand-content">String. Logtail token.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-workers-log_destinations-open_search"> <details> <summary><span class="expand-link-text">open_search</span></summary> <div class="expand-content">Object. OpenSearch configuration.</div><ul > <li class="inlineYamlDoc" id="ref-workers-log_destinations-open_search-endpoint"> <details> <summary><span class="expand-link-text">endpoint</span></summary> <div class="expand-content"><p>String. OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>. Cannot be specified if <code>cluster_name</code> is also specified.</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-workers-log_destinations-open_search-basic_auth"> <details> <summary><span class="expand-link-text">basic_auth</span></summary> <div class="expand-content">Object.</div><ul > <li class="inlineYamlDoc" id="ref-workers-log_destinations-open_search-basic_auth-user"> <details> <summary><span class="expand-link-text">user</span></summary> <div class="expand-content">String. Username to authenticate with. Only required when <code>endpoint</code> is set. Defaults to <code>doadmin</code> when <code>cluster_name</code> is set.</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-log_destinations-open_search-basic_auth-password"> <details> <summary><span class="expand-link-text">password</span></summary> <div class="expand-content">String. Password for user defined in User. Is required when <code>endpoint</code> is set. Cannot be set if using a DigitalOcean DBaaS OpenSearch cluster.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-workers-log_destinations-open_search-index_name"> <details> <summary><span class="expand-link-text">index_name</span></summary> <div class="expand-content">String. The index name to use for the logs. If not set, the default index name is “logs”.</div></details> </li> <li class="inlineYamlDoc" id="ref-workers-log_destinations-open_search-cluster_name"> <details> <summary><span class="expand-link-text">cluster_name</span></summary> <div class="expand-content">String. The name of a DigitalOcean DBaaS OpenSearch cluster to use as a log forwarding destination. Cannot be specified if <code>endpoint</code> is also specified.</div></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-workers-termination"> <details> <summary><span class="expand-link-text">termination</span></summary> <div class="expand-content">Object.</div><ul > <li class="inlineYamlDoc" id="ref-workers-termination-grace_period_seconds"> <details> <summary><span class="expand-link-text">grace_period_seconds</span></summary> <div class="expand-content">Integer. The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.</div></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-jobs"> <details> <summary><span class="expand-link-text">jobs (array)</span></summary> <div class="expand-content">Array of Objects. Pre and post deployment workloads which do not expose publicly-accessible HTTP routes.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-jobs-name"> <details> <summary><span class="expand-link-text">name</span></summary> <div class="expand-content"><p>String. The name. Must be unique across all components within the same app.</p> <p>Minimum length: 2. Maximum length: 32.</p> <p>Must comply with the following regular expression: <code>^[a-z][a-z0-9-]{0,30}[a-z0-9]$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-git"> <details> <summary><span class="expand-link-text">git</span></summary> <div class="expand-content">Object. A Git repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, <code>gitlab</code>, or <code>image</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-jobs-git-repo_clone_url"> <details> <summary><span class="expand-link-text">repo_clone_url</span></summary> <div class="expand-content"><p>String. The clone URL of the repo. Example: <code>https://github.com/digitalocean/sample-golang.git</code></p> <p>Maximum length: 255</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-git-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-jobs-github"> <details> <summary><span class="expand-link-text">github</span></summary> <div class="expand-content">Object. A GitHub repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, <code>gitlab</code>, or <code>image</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-jobs-github-repo"> <details> <summary><span class="expand-link-text">repo</span></summary> <div class="expand-content"><p>String. The name of the repo in the format owner/repo. Example: <code>digitalocean/sample-golang</code></p> <p>Must comply with the following regular expression: <code>^[^/]+/[^/]+$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-github-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-github-deploy_on_push"> <details> <summary><span class="expand-link-text">deploy_on_push</span></summary> <div class="expand-content">Boolean. Whether to automatically deploy new commits made to the repo</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-jobs-image"> <details> <summary><span class="expand-link-text">image</span></summary> <div class="expand-content">Object. An image to use as the component’s source. Only one of <code>git</code>, <code>github</code>, <code>gitlab</code>, or <code>image</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-jobs-image-registry_type"> <details> <summary><span class="expand-link-text">registry_type</span></summary> <div class="expand-content"><p>String. The registry type.</p> <ul> <li><code>DOCR</code>: The DigitalOcean container registry type.</li> <li><code>DOCKER_HUB</code>: The DockerHub container registry type.</li> <li><code>GHCR</code>: The Github container registry type.</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-image-registry"> <details> <summary><span class="expand-link-text">registry</span></summary> <div class="expand-content"><p>String. The registry name. Must be left empty for the <code>DOCR</code> registry type. Required for the <code>DOCKER_HUB</code> registry type.</p> <p>Maximum length: 192</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-image-repository"> <details> <summary><span class="expand-link-text">repository</span></summary> <div class="expand-content"><p>String. The repository name.</p> <p>Maximum length: 192</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-image-tag"> <details> <summary><span class="expand-link-text">tag</span></summary> <div class="expand-content"><p>String. The repository tag. Defaults to <code>latest</code> if not provided and no digest is provided. Cannot be specified if digest is provided.</p> <p>Maximum length: 192</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-image-digest"> <details> <summary><span class="expand-link-text">digest</span></summary> <div class="expand-content"><p>String. The image digest. Cannot be specified if tag is provided.</p> <p>Maximum length: 192</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-image-registry_credentials"> <details> <summary><span class="expand-link-text">registry_credentials</span></summary> <div class="expand-content"><p>String. The credentials to be able to pull the image. The value will be encrypted on first submission. On following submissions, the encrypted value should be used.</p> <ul> <li>“$username:$access_token” for registries of type <code>DOCKER_HUB</code>.</li> <li>“$username:$access_token” for registries of type <code>GHCR</code>.</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-image-deploy_on_push"> <details> <summary><span class="expand-link-text">deploy_on_push</span></summary> <div class="expand-content">Object. Deploy on new image tags. Only for DOCR images.</div><ul > <li class="inlineYamlDoc" id="ref-jobs-image-deploy_on_push-enabled"> <details> <summary><span class="expand-link-text">enabled</span></summary> <div class="expand-content">Boolean. Automatically deploy new images. Only for DOCR images. Can’t be enabled when a specific digest is specified.</div></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-jobs-gitlab"> <details> <summary><span class="expand-link-text">gitlab</span></summary> <div class="expand-content">Object. A GitLab repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, <code>gitlab</code>, or <code>image</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-jobs-gitlab-repo"> <details> <summary><span class="expand-link-text">repo</span></summary> <div class="expand-content"><p>String. The name of the repo in the format owner/repo or owner/subgroup/repo. Example: <code>digitalocean/sample-golang</code> or <code>digitalocean/subgroup/sample-golang</code></p> <p>Must comply with the following regular expression: <code>^[^/]+(/[^/]+)+$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-gitlab-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-gitlab-deploy_on_push"> <details> <summary><span class="expand-link-text">deploy_on_push</span></summary> <div class="expand-content">Boolean. Whether to automatically deploy new commits made to the repo</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-jobs-dockerfile_path"> <details> <summary><span class="expand-link-text">dockerfile_path</span></summary> <div class="expand-content">String. The path to the Dockerfile relative to the root of the repo. If set, it will be used to build this component. Otherwise, App Platform will attempt to build it using buildpacks.</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-build_command"> <details> <summary><span class="expand-link-text">build_command</span></summary> <div class="expand-content">String. An optional build command to run while building this component from source.</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-run_command"> <details> <summary><span class="expand-link-text">run_command</span></summary> <div class="expand-content">String. An optional run command to override the component’s default.</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-source_dir"> <details> <summary><span class="expand-link-text">source_dir</span></summary> <div class="expand-content">String. An optional path to the working directory to use for the build. For Dockerfile builds, this will be used as the build context. Must be relative to the root of the repo.</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-environment_slug"> <details> <summary><span class="expand-link-text">environment_slug</span></summary> <div class="expand-content">String. A slug identifying the type of app, such as <code>node-js</code>. Available values are <code>node-js</code>, <code>php</code>, <code>ruby</code>, <code>python</code>, <code>go</code>, <code>hugo</code>, <code>html</code>, <code>hexo</code>, <code>ruby-on-rails</code>, <code>jekyll</code>, and <code>gatsby</code>.</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-envs"> <details> <summary><span class="expand-link-text">envs (array)</span></summary> <div class="expand-content">Array of Objects. A list of environment variables made available to the component.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-jobs-envs-key"> <details> <summary><span class="expand-link-text">key</span></summary> <div class="expand-content"><p>String. The name</p> <p>Must comply with the following regular expression: <code>^[_A-Za-z][_A-Za-z0-9]*$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-envs-value"> <details> <summary><span class="expand-link-text">value</span></summary> <div class="expand-content">String. The value. If the type is <code>SECRET</code>, the value will be encrypted on first submission. On following submissions, the encrypted value should be used.</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-envs-scope"> <details> <summary><span class="expand-link-text">scope</span></summary> <div class="expand-content"><p>String. The visibility scope</p> <ul> <li><code>RUN_TIME</code>: Made available only at run-time</li> <li><code>BUILD_TIME</code>: Made available only at build-time</li> <li><code>RUN_AND_BUILD_TIME</code>: Made available at both build and run-time</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-envs-type"> <details> <summary><span class="expand-link-text">type</span></summary> <div class="expand-content"><p>String. The type</p> <ul> <li><code>GENERAL</code>: A plain-text environment variable</li> <li><code>SECRET</code>: A secret encrypted environment variable</li> </ul> </div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-jobs-instance_size_slug"> <details> <summary><span class="expand-link-text">instance_size_slug</span></summary> <div class="expand-content">String. The instance size to use for this component.</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-instance_count"> <details> <summary><span class="expand-link-text">instance_count</span></summary> <div class="expand-content">Integer. The amount of instances that this component should be scaled to. Default: 1</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-kind"> <details> <summary><span class="expand-link-text">kind</span></summary> <div class="expand-content"><p>String. The type of job and when it will be run during the deployment process.</p> <ul> <li><code>UNSPECIFIED</code>: Default job type, will auto-complete to POST_DEPLOY kind.</li> <li><code>PRE_DEPLOY</code>: Indicates a job that runs before an app deployment.</li> <li><code>POST_DEPLOY</code>: Indicates a job that runs after an app deployment.</li> <li><code>FAILED_DEPLOY</code>: Indicates a job that runs after a component fails to deploy.</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-alerts"> <details> <summary><span class="expand-link-text">alerts (array)</span></summary> <div class="expand-content">Array of Objects. A list of configured alerts which apply to the component.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-jobs-alerts-rule"> <details> <summary><span class="expand-link-text">rule</span></summary> <div class="expand-content"><p>String. The specific type of alert.</p> <ul> <li><code>CPU_UTILIZATION</code>: Represents CPU for a given container instance. Only applicable at the component level.</li> <li><code>MEM_UTILIZATION</code>: Represents RAM for a given container instance. Only applicable at the component level.</li> <li><code>RESTART_COUNT</code>: Represents restart count for a given container instance. Only applicable at the component level.</li> <li><code>DEPLOYMENT_FAILED</code>: Represents whether a deployment has failed. Only applicable at the app level.</li> <li><code>DEPLOYMENT_LIVE</code>: Represents whether a deployment has succeeded. Only applicable at the app level.</li> <li><code>DEPLOYMENT_STARTED</code>: Represents whether a deployment has started. Only applicable at the app level.</li> <li><code>DEPLOYMENT_CANCELED</code>: Represents whether a deployment has been canceled. Only applicable at the app level.</li> <li><code>DOMAIN_FAILED</code>: Represents whether a domain configuration has failed. Only applicable at the app level.</li> <li><code>DOMAIN_LIVE</code>: Represents whether a domain configuration has succeeded. Only applicable at the app level.</li> <li><code>FUNCTIONS_ACTIVATION_COUNT</code>: Represents an activation count for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_AVERAGE_DURATION_MS</code>: Represents the average duration for function runtimes. Only applicable to functions components.</li> <li><code>FUNCTIONS_ERROR_RATE_PER_MINUTE</code>: Represents an error rate per minute for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_AVERAGE_WAIT_TIME_MS</code>: Represents the average wait time for functions. Only applicable to functions components.</li> <li><code>FUNCTIONS_ERROR_COUNT</code>: Represents an error count for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_GB_RATE_PER_SECOND</code>: Represents the rate of memory consumption (GB x seconds) for functions. Only applicable to functions components.</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-alerts-disabled"> <details> <summary><span class="expand-link-text">disabled</span></summary> <div class="expand-content">Boolean. Determines whether or not the alert is disabled.</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-alerts-operator"> <details> <summary><span class="expand-link-text">operator</span></summary> <div class="expand-content">String. Can be <code>GREATER_THAN</code>, or <code>LESS_THAN</code></div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-alerts-value"> <details> <summary><span class="expand-link-text">value</span></summary> <div class="expand-content">Number. The meaning is dependent upon the rule. It is used in conjunction with the operator and window to determine when an alert should trigger.</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-alerts-window"> <details> <summary><span class="expand-link-text">window</span></summary> <div class="expand-content">String. Can be <code>FIVE_MINUTES</code>, <code>TEN_MINUTES</code>, <code>THIRTY_MINUTES</code>, or <code>ONE_HOUR</code></div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-jobs-log_destinations"> <details> <summary><span class="expand-link-text">log_destinations (array)</span></summary> <div class="expand-content">Array of Objects. A list of configured log forwarding destinations.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-jobs-log_destinations-name"> <details> <summary><span class="expand-link-text">name</span></summary> <div class="expand-content"><p>String. Name of the log destination.</p> <p>Minimum length: 2. Maximum length: 42.</p> <p>Must comply with the following regular expression: <code>^[A-Za-z0-9()\[\]'"][-A-Za-z0-9_. \/()\[\]]{0,40}[A-Za-z0-9()\[\]'"]$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-log_destinations-papertrail"> <details> <summary><span class="expand-link-text">papertrail</span></summary> <div class="expand-content">Object. Papertrail configuration.</div><ul > <li class="inlineYamlDoc" id="ref-jobs-log_destinations-papertrail-endpoint"> <details> <summary><span class="expand-link-text">endpoint</span></summary> <div class="expand-content">String. Papertrail syslog endpoint.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-jobs-log_destinations-datadog"> <details> <summary><span class="expand-link-text">datadog</span></summary> <div class="expand-content">Object. Datadog configuration.</div><ul > <li class="inlineYamlDoc" id="ref-jobs-log_destinations-datadog-endpoint"> <details> <summary><span class="expand-link-text">endpoint</span></summary> <div class="expand-content">String. Datadog HTTP log intake endpoint.</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-log_destinations-datadog-api_key"> <details> <summary><span class="expand-link-text">api_key</span></summary> <div class="expand-content">String. Datadog API key.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-jobs-log_destinations-logtail"> <details> <summary><span class="expand-link-text">logtail</span></summary> <div class="expand-content">Object. Logtail configuration.</div><ul > <li class="inlineYamlDoc" id="ref-jobs-log_destinations-logtail-token"> <details> <summary><span class="expand-link-text">token</span></summary> <div class="expand-content">String. Logtail token.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-jobs-log_destinations-open_search"> <details> <summary><span class="expand-link-text">open_search</span></summary> <div class="expand-content">Object. OpenSearch configuration.</div><ul > <li class="inlineYamlDoc" id="ref-jobs-log_destinations-open_search-endpoint"> <details> <summary><span class="expand-link-text">endpoint</span></summary> <div class="expand-content"><p>String. OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>. Cannot be specified if <code>cluster_name</code> is also specified.</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-log_destinations-open_search-basic_auth"> <details> <summary><span class="expand-link-text">basic_auth</span></summary> <div class="expand-content">Object.</div><ul > <li class="inlineYamlDoc" id="ref-jobs-log_destinations-open_search-basic_auth-user"> <details> <summary><span class="expand-link-text">user</span></summary> <div class="expand-content">String. Username to authenticate with. Only required when <code>endpoint</code> is set. Defaults to <code>doadmin</code> when <code>cluster_name</code> is set.</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-log_destinations-open_search-basic_auth-password"> <details> <summary><span class="expand-link-text">password</span></summary> <div class="expand-content">String. Password for user defined in User. Is required when <code>endpoint</code> is set. Cannot be set if using a DigitalOcean DBaaS OpenSearch cluster.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-jobs-log_destinations-open_search-index_name"> <details> <summary><span class="expand-link-text">index_name</span></summary> <div class="expand-content">String. The index name to use for the logs. If not set, the default index name is “logs”.</div></details> </li> <li class="inlineYamlDoc" id="ref-jobs-log_destinations-open_search-cluster_name"> <details> <summary><span class="expand-link-text">cluster_name</span></summary> <div class="expand-content">String. The name of a DigitalOcean DBaaS OpenSearch cluster to use as a log forwarding destination. Cannot be specified if <code>endpoint</code> is also specified.</div></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-jobs-termination"> <details> <summary><span class="expand-link-text">termination</span></summary> <div class="expand-content">Object.</div><ul > <li class="inlineYamlDoc" id="ref-jobs-termination-grace_period_seconds"> <details> <summary><span class="expand-link-text">grace_period_seconds</span></summary> <div class="expand-content">Integer. The number of seconds to wait between sending a TERM signal to a container and issuing a KILL which causes immediate shutdown. Default: 120, Minimum 1, Maximum 600.</div></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-functions"> <details> <summary><span class="expand-link-text">functions (array)</span></summary> <div class="expand-content">Array of Objects. Workloads which expose publicly-accessible HTTP services via Functions Components.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-functions-name"> <details> <summary><span class="expand-link-text">name</span></summary> <div class="expand-content"><p>String. The name. Must be unique across all components within the same app.</p> <p>Minimum length: 2. Maximum length: 32.</p> <p>Must comply with the following regular expression: <code>^[a-z][a-z0-9-]{0,30}[a-z0-9]$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-functions-git"> <details> <summary><span class="expand-link-text">git</span></summary> <div class="expand-content">Object. A Git repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, or <code>gitlab</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-functions-git-repo_clone_url"> <details> <summary><span class="expand-link-text">repo_clone_url</span></summary> <div class="expand-content"><p>String. The clone URL of the repo. Example: <code>https://github.com/digitalocean/sample-golang.git</code></p> <p>Maximum length: 255</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-functions-git-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-functions-github"> <details> <summary><span class="expand-link-text">github</span></summary> <div class="expand-content">Object. A GitHub repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, or <code>gitlab</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-functions-github-repo"> <details> <summary><span class="expand-link-text">repo</span></summary> <div class="expand-content"><p>String. The name of the repo in the format owner/repo. Example: <code>digitalocean/sample-golang</code></p> <p>Must comply with the following regular expression: <code>^[^/]+/[^/]+$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-functions-github-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> <li class="inlineYamlDoc" id="ref-functions-github-deploy_on_push"> <details> <summary><span class="expand-link-text">deploy_on_push</span></summary> <div class="expand-content">Boolean. Whether to automatically deploy new commits made to the repo</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-functions-gitlab"> <details> <summary><span class="expand-link-text">gitlab</span></summary> <div class="expand-content">Object. A GitLab repo to use as component’s source. Only one of <code>git</code>, <code>github</code>, or <code>gitlab</code> must be set.</div><ul > <li class="inlineYamlDoc" id="ref-functions-gitlab-repo"> <details> <summary><span class="expand-link-text">repo</span></summary> <div class="expand-content"><p>String. The name of the repo in the format owner/repo or owner/subgroup/repo. Example: <code>digitalocean/sample-golang</code> or <code>digitalocean/subgroup/sample-golang</code></p> <p>Must comply with the following regular expression: <code>^[^/]+(/[^/]+)+$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-functions-gitlab-branch"> <details> <summary><span class="expand-link-text">branch</span></summary> <div class="expand-content">String. The name of the branch to use</div></details> </li> <li class="inlineYamlDoc" id="ref-functions-gitlab-deploy_on_push"> <details> <summary><span class="expand-link-text">deploy_on_push</span></summary> <div class="expand-content">Boolean. Whether to automatically deploy new commits made to the repo</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-functions-source_dir"> <details> <summary><span class="expand-link-text">source_dir</span></summary> <div class="expand-content">String. An optional path to the working directory to use for the build. Must be relative to the root of the repo.</div></details> </li> <li class="inlineYamlDoc" id="ref-functions-envs"> <details> <summary><span class="expand-link-text">envs (array)</span></summary> <div class="expand-content">Array of Objects. A list of environment variables made available to the component.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-functions-envs-key"> <details> <summary><span class="expand-link-text">key</span></summary> <div class="expand-content"><p>String. The name</p> <p>Must comply with the following regular expression: <code>^[_A-Za-z][_A-Za-z0-9]*$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-functions-envs-value"> <details> <summary><span class="expand-link-text">value</span></summary> <div class="expand-content">String. The value. If the type is <code>SECRET</code>, the value will be encrypted on first submission. On following submissions, the encrypted value should be used.</div></details> </li> <li class="inlineYamlDoc" id="ref-functions-envs-scope"> <details> <summary><span class="expand-link-text">scope</span></summary> <div class="expand-content"><p>String. The visibility scope</p> <ul> <li><code>RUN_TIME</code>: Made available only at run-time</li> <li><code>BUILD_TIME</code>: Made available only at build-time</li> <li><code>RUN_AND_BUILD_TIME</code>: Made available at both build and run-time</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-functions-envs-type"> <details> <summary><span class="expand-link-text">type</span></summary> <div class="expand-content"><p>String. The type</p> <ul> <li><code>GENERAL</code>: A plain-text environment variable</li> <li><code>SECRET</code>: A secret encrypted environment variable</li> </ul> </div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-functions-routes"> <details> <summary><span class="expand-link-text">routes (array)</span></summary> <div class="expand-content">Array of Objects. (Deprecated) A list of HTTP routes that should be routed to this component.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-functions-routes-path"> <details> <summary><span class="expand-link-text">path</span></summary> <div class="expand-content">String. (Deprecated) An HTTP path prefix. Paths must start with / and must be unique across all components within an app.</div></details> </li> <li class="inlineYamlDoc" id="ref-functions-routes-preserve_path_prefix"> <details> <summary><span class="expand-link-text">preserve_path_prefix</span></summary> <div class="expand-content">Boolean. (Deprecated) An optional flag to preserve the path that is forwarded to the backend service. By default, the HTTP request path will be trimmed from the left when forwarded to the component. For example, a component with <code>path=/api</code> will have requests to <code>/api/list</code> trimmed to <code>/list</code>. If this value is <code>true</code>, the path will remain <code>/api/list</code>. Note: this is not applicable for Functions Components.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-functions-alerts"> <details> <summary><span class="expand-link-text">alerts (array)</span></summary> <div class="expand-content">Array of Objects. A list of configured alerts the user has enabled.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-functions-alerts-rule"> <details> <summary><span class="expand-link-text">rule</span></summary> <div class="expand-content"><p>String. The specific type of alert.</p> <ul> <li><code>CPU_UTILIZATION</code>: Represents CPU for a given container instance. Only applicable at the component level.</li> <li><code>MEM_UTILIZATION</code>: Represents RAM for a given container instance. Only applicable at the component level.</li> <li><code>RESTART_COUNT</code>: Represents restart count for a given container instance. Only applicable at the component level.</li> <li><code>DEPLOYMENT_FAILED</code>: Represents whether a deployment has failed. Only applicable at the app level.</li> <li><code>DEPLOYMENT_LIVE</code>: Represents whether a deployment has succeeded. Only applicable at the app level.</li> <li><code>DEPLOYMENT_STARTED</code>: Represents whether a deployment has started. Only applicable at the app level.</li> <li><code>DEPLOYMENT_CANCELED</code>: Represents whether a deployment has been canceled. Only applicable at the app level.</li> <li><code>DOMAIN_FAILED</code>: Represents whether a domain configuration has failed. Only applicable at the app level.</li> <li><code>DOMAIN_LIVE</code>: Represents whether a domain configuration has succeeded. Only applicable at the app level.</li> <li><code>FUNCTIONS_ACTIVATION_COUNT</code>: Represents an activation count for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_AVERAGE_DURATION_MS</code>: Represents the average duration for function runtimes. Only applicable to functions components.</li> <li><code>FUNCTIONS_ERROR_RATE_PER_MINUTE</code>: Represents an error rate per minute for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_AVERAGE_WAIT_TIME_MS</code>: Represents the average wait time for functions. Only applicable to functions components.</li> <li><code>FUNCTIONS_ERROR_COUNT</code>: Represents an error count for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_GB_RATE_PER_SECOND</code>: Represents the rate of memory consumption (GB x seconds) for functions. Only applicable to functions components.</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-functions-alerts-disabled"> <details> <summary><span class="expand-link-text">disabled</span></summary> <div class="expand-content">Boolean. Determines whether or not the alert is disabled.</div></details> </li> <li class="inlineYamlDoc" id="ref-functions-alerts-operator"> <details> <summary><span class="expand-link-text">operator</span></summary> <div class="expand-content">String. Can be <code>GREATER_THAN</code>, or <code>LESS_THAN</code></div></details> </li> <li class="inlineYamlDoc" id="ref-functions-alerts-value"> <details> <summary><span class="expand-link-text">value</span></summary> <div class="expand-content">Number. The meaning is dependent upon the rule. It is used in conjunction with the operator and window to determine when an alert should trigger.</div></details> </li> <li class="inlineYamlDoc" id="ref-functions-alerts-window"> <details> <summary><span class="expand-link-text">window</span></summary> <div class="expand-content">String. Can be <code>FIVE_MINUTES</code>, <code>TEN_MINUTES</code>, <code>THIRTY_MINUTES</code>, or <code>ONE_HOUR</code></div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-functions-log_destinations"> <details> <summary><span class="expand-link-text">log_destinations (array)</span></summary> <div class="expand-content">Array of Objects. A list of configured log forwarding destinations.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-functions-log_destinations-name"> <details> <summary><span class="expand-link-text">name</span></summary> <div class="expand-content"><p>String. Name of the log destination.</p> <p>Minimum length: 2. Maximum length: 42.</p> <p>Must comply with the following regular expression: <code>^[A-Za-z0-9()\[\]'"][-A-Za-z0-9_. \/()\[\]]{0,40}[A-Za-z0-9()\[\]'"]$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-functions-log_destinations-papertrail"> <details> <summary><span class="expand-link-text">papertrail</span></summary> <div class="expand-content">Object. Papertrail configuration.</div><ul > <li class="inlineYamlDoc" id="ref-functions-log_destinations-papertrail-endpoint"> <details> <summary><span class="expand-link-text">endpoint</span></summary> <div class="expand-content">String. Papertrail syslog endpoint.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-functions-log_destinations-datadog"> <details> <summary><span class="expand-link-text">datadog</span></summary> <div class="expand-content">Object. Datadog configuration.</div><ul > <li class="inlineYamlDoc" id="ref-functions-log_destinations-datadog-endpoint"> <details> <summary><span class="expand-link-text">endpoint</span></summary> <div class="expand-content">String. Datadog HTTP log intake endpoint.</div></details> </li> <li class="inlineYamlDoc" id="ref-functions-log_destinations-datadog-api_key"> <details> <summary><span class="expand-link-text">api_key</span></summary> <div class="expand-content">String. Datadog API key.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-functions-log_destinations-logtail"> <details> <summary><span class="expand-link-text">logtail</span></summary> <div class="expand-content">Object. Logtail configuration.</div><ul > <li class="inlineYamlDoc" id="ref-functions-log_destinations-logtail-token"> <details> <summary><span class="expand-link-text">token</span></summary> <div class="expand-content">String. Logtail token.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-functions-log_destinations-open_search"> <details> <summary><span class="expand-link-text">open_search</span></summary> <div class="expand-content">Object. OpenSearch configuration.</div><ul > <li class="inlineYamlDoc" id="ref-functions-log_destinations-open_search-endpoint"> <details> <summary><span class="expand-link-text">endpoint</span></summary> <div class="expand-content"><p>String. OpenSearch API Endpoint. Only HTTPS is supported. Format: https://<host>:<port>. Cannot be specified if <code>cluster_name</code> is also specified.</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-functions-log_destinations-open_search-basic_auth"> <details> <summary><span class="expand-link-text">basic_auth</span></summary> <div class="expand-content">Object.</div><ul > <li class="inlineYamlDoc" id="ref-functions-log_destinations-open_search-basic_auth-user"> <details> <summary><span class="expand-link-text">user</span></summary> <div class="expand-content">String. Username to authenticate with. Only required when <code>endpoint</code> is set. Defaults to <code>doadmin</code> when <code>cluster_name</code> is set.</div></details> </li> <li class="inlineYamlDoc" id="ref-functions-log_destinations-open_search-basic_auth-password"> <details> <summary><span class="expand-link-text">password</span></summary> <div class="expand-content">String. Password for user defined in User. Is required when <code>endpoint</code> is set. Cannot be set if using a DigitalOcean DBaaS OpenSearch cluster.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-functions-log_destinations-open_search-index_name"> <details> <summary><span class="expand-link-text">index_name</span></summary> <div class="expand-content">String. The index name to use for the logs. If not set, the default index name is “logs”.</div></details> </li> <li class="inlineYamlDoc" id="ref-functions-log_destinations-open_search-cluster_name"> <details> <summary><span class="expand-link-text">cluster_name</span></summary> <div class="expand-content">String. The name of a DigitalOcean DBaaS OpenSearch cluster to use as a log forwarding destination. Cannot be specified if <code>endpoint</code> is also specified.</div></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-functions-cors"> <details> <summary><span class="expand-link-text">cors</span></summary> <div class="expand-content">Object. (Deprecated, see <code>ingress > rules > cors</code>) A Cross-Origin Resource Sharing policy (CORS).</div><ul > <li class="inlineYamlDoc" id="ref-functions-cors-allow_origins"> <details> <summary><span class="expand-link-text">allow_origins (array)</span></summary> <div class="expand-content">Array of Objects. The set of allowed CORS origins. This configures the Access-Control-Allow-Origin header.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-functions-cors-allow_origins-exact"> <details> <summary><span class="expand-link-text">exact</span></summary> <div class="expand-content"><p>String. Exact string match. Only 1 of <code>exact</code>, <code>prefix</code>, or <code>regex</code> must be set.</p> <p>Minimum length: 1. Maximum length: 256</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-functions-cors-allow_origins-regex"> <details> <summary><span class="expand-link-text">regex</span></summary> <div class="expand-content"><p>String. RE2 style regex-based match. Only 1 of <code>exact</code>, <code>prefix</code>, or <code>regex</code> must be set. For more information about RE2 syntax, see: <a href="https://github.com/google/re2/wiki/Syntax">https://github.com/google/re2/wiki/Syntax</a></p> <p>Minimum length: 1. Maximum length: 256</p> </div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-functions-cors-allow_methods"> <details> <summary><span class="expand-link-text">allow_methods (array)</span></summary> <div class="expand-content">Array of Strings. The set of allowed HTTP methods. This configures the Access-Control-Allow-Methods header.</div></details> </li> <li class="inlineYamlDoc" id="ref-functions-cors-allow_headers"> <details> <summary><span class="expand-link-text">allow_headers (array)</span></summary> <div class="expand-content">Array of Strings. The set of allowed HTTP request headers. This configures the Access-Control-Allow-Headers header.</div></details> </li> <li class="inlineYamlDoc" id="ref-functions-cors-expose_headers"> <details> <summary><span class="expand-link-text">expose_headers (array)</span></summary> <div class="expand-content">Array of Strings. The set of HTTP response headers that browsers are allowed to access. This configures the Access-Control-Expose-Headers header.</div></details> </li> <li class="inlineYamlDoc" id="ref-functions-cors-max_age"> <details> <summary><span class="expand-link-text">max_age</span></summary> <div class="expand-content">String. An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: <code>5h30m</code>.</div></details> </li> <li class="inlineYamlDoc" id="ref-functions-cors-allow_credentials"> <details> <summary><span class="expand-link-text">allow_credentials</span></summary> <div class="expand-content">Boolean. Whether browsers should expose the response to the client-side JavaScript code when the request’s credentials mode is <code>include</code>. This configures the Access-Control-Allow-Credentials header.</div></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-databases"> <details> <summary><span class="expand-link-text">databases (array)</span></summary> <div class="expand-content">Array of Objects. Database instances which can provide persistence to workloads within the application.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-databases-name"> <details> <summary><span class="expand-link-text">name</span></summary> <div class="expand-content"><p>String. The database’s name. The name must be unique across all components within the same app and cannot use capital letters.</p> <p>Minimum length: 2. Maximum length: 32.</p> <p>Must comply with the following regular expression: <code>^[a-z][a-z0-9-]{0,30}[a-z0-9]$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-databases-engine"> <details> <summary><span class="expand-link-text">engine</span></summary> <div class="expand-content"><p>String. The database engine to use</p> <ul> <li><code>MYSQL</code>: MySQL</li> <li><code>PG</code>: PostgreSQL</li> <li><code>REDIS</code>: Redis</li> <li><code>MONGODB</code>: MongoDB</li> <li><code>KAFKA</code>: Kafka</li> <li><code>OPENSEARCH</code>: OpenSearch</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-databases-version"> <details> <summary><span class="expand-link-text">version</span></summary> <div class="expand-content">String. The version of the database engine</div></details> </li> <li class="inlineYamlDoc" id="ref-databases-production"> <details> <summary><span class="expand-link-text">production</span></summary> <div class="expand-content">Boolean. Whether this is a production or dev database.</div></details> </li> <li class="inlineYamlDoc" id="ref-databases-cluster_name"> <details> <summary><span class="expand-link-text">cluster_name</span></summary> <div class="expand-content">String. The name of the underlying DigitalOcean DBaaS cluster. This is required for production databases. For dev databases, if cluster_name is not set, a new cluster will be provisioned.</div></details> </li> <li class="inlineYamlDoc" id="ref-databases-db_name"> <details> <summary><span class="expand-link-text">db_name</span></summary> <div class="expand-content">String. The name of the MySQL or PostgreSQL database to configure.</div></details> </li> <li class="inlineYamlDoc" id="ref-databases-db_user"> <details> <summary><span class="expand-link-text">db_user</span></summary> <div class="expand-content">String. The name of the MySQL or PostgreSQL user to configure.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-domains"> <details> <summary><span class="expand-link-text">domains (array)</span></summary> <div class="expand-content">Array of Objects. A set of hostnames where the application will be available.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-domains-domain"> <details> <summary><span class="expand-link-text">domain</span></summary> <div class="expand-content"><p>String. The hostname for the domain</p> <p>Minimum length: 4. Maximum length: 253.</p> <p>Must comply with the following regular expression: <code>^([a-zA-Z0-9]+(-+[a-zA-Z0-9]+)*\.)+(xn--)?[a-zA-Z0-9]{2,}\.?$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-domains-type"> <details> <summary><span class="expand-link-text">type</span></summary> <div class="expand-content"><p>String. The domain type, which can be one of the following:</p> <ul> <li><code>DEFAULT</code>: The default <code>.ondigitalocean.app</code> domain assigned to this app</li> <li><code>PRIMARY</code>: The primary domain for this app that is displayed as the default in the control panel, used in bindable environment variables, and any other places that reference an app’s live URL. Only one domain may be set as primary.</li> <li><code>ALIAS</code>: A non-primary domain</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-domains-wildcard"> <details> <summary><span class="expand-link-text">wildcard</span></summary> <div class="expand-content">Boolean. Indicates whether the domain includes all sub-domains, in addition to the given domain</div></details> </li> <li class="inlineYamlDoc" id="ref-domains-zone"> <details> <summary><span class="expand-link-text">zone</span></summary> <div class="expand-content"><p>String. Optional. If the domain uses DigitalOcean DNS and you would like App Platform to automatically manage it for you, set this to the name of the domain on your account.</p> <p>For example, If the domain you are adding is <code>app.domain.com</code>, the zone could be <code>domain.com</code>.</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-domains-minimum_tls_version"> <details> <summary><span class="expand-link-text">minimum_tls_version</span></summary> <div class="expand-content"><p>String. Optional. The minimum version of TLS a client application can use to access resources for the domain.</p> <p>Must be one of the following values wrapped within quotations: <code>"1.2"</code> or <code>"1.3"</code>.</p> </div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-region"> <details> <summary><span class="expand-link-text">region</span></summary> <div class="expand-content">String. The slug form of the geographical origin of the app. Default: <code>nearest available</code></div></details> </li> <li class="inlineYamlDoc" id="ref-envs"> <details> <summary><span class="expand-link-text">envs (array)</span></summary> <div class="expand-content">Array of Objects. A list of environment variables made available to all components in the app.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-envs-key"> <details> <summary><span class="expand-link-text">key</span></summary> <div class="expand-content"><p>String. The name</p> <p>Must comply with the following regular expression: <code>^[_A-Za-z][_A-Za-z0-9]*$</code></p> </div></details> </li> <li class="inlineYamlDoc" id="ref-envs-value"> <details> <summary><span class="expand-link-text">value</span></summary> <div class="expand-content">String. The value. If the type is <code>SECRET</code>, the value will be encrypted on first submission. On following submissions, the encrypted value should be used.</div></details> </li> <li class="inlineYamlDoc" id="ref-envs-scope"> <details> <summary><span class="expand-link-text">scope</span></summary> <div class="expand-content"><p>String. The visibility scope</p> <ul> <li><code>RUN_TIME</code>: Made available only at run-time</li> <li><code>BUILD_TIME</code>: Made available only at build-time</li> <li><code>RUN_AND_BUILD_TIME</code>: Made available at both build and run-time</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-envs-type"> <details> <summary><span class="expand-link-text">type</span></summary> <div class="expand-content"><p>String. The type</p> <ul> <li><code>GENERAL</code>: A plain-text environment variable</li> <li><code>SECRET</code>: A secret encrypted environment variable</li> </ul> </div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-alerts"> <details> <summary><span class="expand-link-text">alerts (array)</span></summary> <div class="expand-content">Array of Objects. A list of alerts which apply to the app.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-alerts-rule"> <details> <summary><span class="expand-link-text">rule</span></summary> <div class="expand-content"><p>String. The specific type of alert.</p> <ul> <li><code>CPU_UTILIZATION</code>: Represents CPU for a given container instance. Only applicable at the component level.</li> <li><code>MEM_UTILIZATION</code>: Represents RAM for a given container instance. Only applicable at the component level.</li> <li><code>RESTART_COUNT</code>: Represents restart count for a given container instance. Only applicable at the component level.</li> <li><code>DEPLOYMENT_FAILED</code>: Represents whether a deployment has failed. Only applicable at the app level.</li> <li><code>DEPLOYMENT_LIVE</code>: Represents whether a deployment has succeeded. Only applicable at the app level.</li> <li><code>DEPLOYMENT_STARTED</code>: Represents whether a deployment has started. Only applicable at the app level.</li> <li><code>DEPLOYMENT_CANCELED</code>: Represents whether a deployment has been canceled. Only applicable at the app level.</li> <li><code>DOMAIN_FAILED</code>: Represents whether a domain configuration has failed. Only applicable at the app level.</li> <li><code>DOMAIN_LIVE</code>: Represents whether a domain configuration has succeeded. Only applicable at the app level.</li> <li><code>FUNCTIONS_ACTIVATION_COUNT</code>: Represents an activation count for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_AVERAGE_DURATION_MS</code>: Represents the average duration for function runtimes. Only applicable to functions components.</li> <li><code>FUNCTIONS_ERROR_RATE_PER_MINUTE</code>: Represents an error rate per minute for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_AVERAGE_WAIT_TIME_MS</code>: Represents the average wait time for functions. Only applicable to functions components.</li> <li><code>FUNCTIONS_ERROR_COUNT</code>: Represents an error count for a given functions instance. Only applicable to functions components.</li> <li><code>FUNCTIONS_GB_RATE_PER_SECOND</code>: Represents the rate of memory consumption (GB x seconds) for functions. Only applicable to functions components.</li> </ul> </div></details> </li> <li class="inlineYamlDoc" id="ref-alerts-disabled"> <details> <summary><span class="expand-link-text">disabled</span></summary> <div class="expand-content">Boolean. Determines whether or not the alert is disabled.</div></details> </li> <li class="inlineYamlDoc" id="ref-alerts-operator"> <details> <summary><span class="expand-link-text">operator</span></summary> <div class="expand-content">String. Can be <code>GREATER_THAN</code>, or <code>LESS_THAN</code></div></details> </li> <li class="inlineYamlDoc" id="ref-alerts-value"> <details> <summary><span class="expand-link-text">value</span></summary> <div class="expand-content">Number. The meaning is dependent upon the rule. It is used in conjunction with the operator and window to determine when an alert should trigger.</div></details> </li> <li class="inlineYamlDoc" id="ref-alerts-window"> <details> <summary><span class="expand-link-text">window</span></summary> <div class="expand-content">String. Can be <code>FIVE_MINUTES</code>, <code>TEN_MINUTES</code>, <code>THIRTY_MINUTES</code>, or <code>ONE_HOUR</code></div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-ingress"> <details> <summary><span class="expand-link-text">ingress</span></summary> <div class="expand-content">Object. Specification for component routing, rewrites, and redirects.</div><ul > <li class="inlineYamlDoc" id="ref-ingress-rules"> <details> <summary><span class="expand-link-text">rules (array)</span></summary> <div class="expand-content">Array of Objects. Rules for configuring HTTP ingress for component routes, CORS, rewrites, and redirects.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-ingress-rules-match"> <details> <summary><span class="expand-link-text">match</span></summary> <div class="expand-content">Object. The match configuration for the rule</div><ul > <li class="inlineYamlDoc" id="ref-ingress-rules-match-path"> <details> <summary><span class="expand-link-text">path</span></summary> <div class="expand-content">Object. The path to match on.</div><ul > <li class="inlineYamlDoc" id="ref-ingress-rules-match-path-prefix"> <details> <summary><span class="expand-link-text">prefix</span></summary> <div class="expand-content"><p>String. Prefix-based match. For example, <code>/api</code> will match <code>/api</code>, <code>/api/</code>, and any nested paths such as <code>/api/v1/endpoint</code>.</p> <p>Maximum length: 256</p> </div></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-component"> <details> <summary><span class="expand-link-text">component</span></summary> <div class="expand-content">Object. The component to route to. Only one of <code>component</code> or <code>redirect</code> may be set.</div><ul > <li class="inlineYamlDoc" id="ref-ingress-rules-component-name"> <details> <summary><span class="expand-link-text">name</span></summary> <div class="expand-content">String. The name of the component to route to.</div></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-component-preserve_path_prefix"> <details> <summary><span class="expand-link-text">preserve_path_prefix</span></summary> <div class="expand-content">Boolean. An optional flag to preserve the path that is forwarded to the backend service. By default, the HTTP request path will be trimmed from the left when forwarded to the component. For example, a component with <code>path=/api</code> will have requests to <code>/api/list</code> trimmed to <code>/list</code>. If this value is <code>true</code>, the path will remain <code>/api/list</code>. Note: this is not applicable for Functions Components and is mutually exclusive with <code>rewrite</code>.</div></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-component-rewrite"> <details> <summary><span class="expand-link-text">rewrite</span></summary> <div class="expand-content">String. An optional field that will rewrite the path of the component to be what is specified here. By default, the HTTP request path will be trimmed from the left when forwarded to the component. For example, a component with <code>path=/api</code> will have requests to <code>/api/list</code> trimmed to <code>/list</code>. If you specified the rewrite to be <code>/v1/</code>, requests to <code>/api/list</code> would be rewritten to <code>/v1/list</code>. Note: this is mutually exclusive with <code>preserve_path_prefix</code>.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-redirect"> <details> <summary><span class="expand-link-text">redirect</span></summary> <div class="expand-content">Object. The redirect configuration for the rule. Only one of <code>component</code> or <code>redirect</code> may be set.</div><ul > <li class="inlineYamlDoc" id="ref-ingress-rules-redirect-uri"> <details> <summary><span class="expand-link-text">uri</span></summary> <div class="expand-content">String. An optional URI path to redirect to. Note: if this is specified the whole URI of the original request will be overwritten to this value, irrespective of the original request URI being matched.</div></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-redirect-authority"> <details> <summary><span class="expand-link-text">authority</span></summary> <div class="expand-content">String. The authority/host to redirect to. This can be a hostname or IP address. Note: use <code>port</code> to set the port.</div></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-redirect-port"> <details> <summary><span class="expand-link-text">port</span></summary> <div class="expand-content">Integer. The port to redirect to.</div></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-redirect-scheme"> <details> <summary><span class="expand-link-text">scheme</span></summary> <div class="expand-content">String. The scheme to redirect to. Supported values are <code>http</code> or <code>https</code>. Default: <code>https</code>.</div></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-redirect-redirect_code"> <details> <summary><span class="expand-link-text">redirect_code</span></summary> <div class="expand-content">Integer. The redirect code to use. Defaults to <code>302</code>. Supported values are 300, 301, 302, 303, 304, 307, 308.</div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-cors"> <details> <summary><span class="expand-link-text">cors</span></summary> <div class="expand-content">Object. The CORS configuration for the rule.</div><ul > <li class="inlineYamlDoc" id="ref-ingress-rules-cors-allow_origins"> <details> <summary><span class="expand-link-text">allow_origins (array)</span></summary> <div class="expand-content">Array of Objects. The set of allowed CORS origins. This configures the Access-Control-Allow-Origin header.</div><ul class="inlineYamlArray nested"> <li class="inlineYamlDoc" id="ref-ingress-rules-cors-allow_origins-exact"> <details> <summary><span class="expand-link-text">exact</span></summary> <div class="expand-content"><p>String. Exact string match. Only 1 of <code>exact</code>, <code>prefix</code>, or <code>regex</code> must be set.</p> <p>Minimum length: 1. Maximum length: 256</p> </div></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-cors-allow_origins-regex"> <details> <summary><span class="expand-link-text">regex</span></summary> <div class="expand-content"><p>String. RE2 style regex-based match. Only 1 of <code>exact</code>, <code>prefix</code>, or <code>regex</code> must be set. For more information about RE2 syntax, see: <a href="https://github.com/google/re2/wiki/Syntax">https://github.com/google/re2/wiki/Syntax</a></p> <p>Minimum length: 1. Maximum length: 256</p> </div></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-cors-allow_methods"> <details> <summary><span class="expand-link-text">allow_methods (array)</span></summary> <div class="expand-content">Array of Strings. The set of allowed HTTP methods. This configures the Access-Control-Allow-Methods header.</div></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-cors-allow_headers"> <details> <summary><span class="expand-link-text">allow_headers (array)</span></summary> <div class="expand-content">Array of Strings. The set of allowed HTTP request headers. This configures the Access-Control-Allow-Headers header.</div></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-cors-expose_headers"> <details> <summary><span class="expand-link-text">expose_headers (array)</span></summary> <div class="expand-content">Array of Strings. The set of HTTP response headers that browsers are allowed to access. This configures the Access-Control-Expose-Headers header.</div></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-cors-max_age"> <details> <summary><span class="expand-link-text">max_age</span></summary> <div class="expand-content">String. An optional duration specifying how long browsers can cache the results of a preflight request. This configures the Access-Control-Max-Age header. Example: <code>5h30m</code>.</div></details> </li> <li class="inlineYamlDoc" id="ref-ingress-rules-cors-allow_credentials"> <details> <summary><span class="expand-link-text">allow_credentials</span></summary> <div class="expand-content">Boolean. Whether browsers should expose the response to the client-side JavaScript code when the request’s credentials mode is <code>include</code>. This configures the Access-Control-Allow-Credentials header.</div></details> </li> </ul></details> </li> </ul></details> </li> </ul></details> </li> <li class="inlineYamlDoc" id="ref-maintenance"> <details> <summary><span class="expand-link-text">maintenance</span></summary> <div class="expand-content">Object. The maintenance configuration for the app.</div><ul > <li class="inlineYamlDoc" id="ref-maintenance-enabled"> <details> <summary><span class="expand-link-text">enabled</span></summary> <div class="expand-content">Boolean. Set to <code>true</code> to enable maintenance mode. When enabled, all traffic to the app receives a maintenance message. Defaults to <code>false</code>.</div></details> </li> </ul></details> </li> </ul> </div> </div> </div> </div> </section> </div> <svg alt="" xmlns="http://www.w3.org/2000/svg"><symbol id="_sprite-alert-error" fill="none" viewBox="0 0 32 32"><path fill="#CA0C0C" d="M15.54 5.526a2 2 0 011.92 0l8.5 4.655A2 2 0 0127 11.935v9.13a2 2 0 01-1.04 1.754l-8.5 4.655a2 2 0 01-1.92 0l-8.5-4.655A2 2 0 016 21.065v-9.13a2 2 0 011.04-1.754l8.5-4.655z"/><path fill="#fff" fill-rule="evenodd" d="M15 10.8a.8.8 0 01.8-.8h1.4a.8.8 0 01.8.8v6.4a.8.8 0 01-.8.8h-1.4a.8.8 0 01-.8-.8v-6.4zm0 10.7a1.5 1.5 0 113 0 1.5 1.5 0 01-3 0z" clip-rule="evenodd"/></symbol><symbol id="_sprite-alert-info" fill="none" viewBox="0 0 32 32"><circle cx="16.5" cy="15.5" r="11.5" fill="#6355F8"/><rect width="3" height="8" x="15" y="14" fill="#fff" rx=".8"/><rect width="3" height="3" x="15" y="9" fill="#fff" rx="1.5"/></symbol><symbol id="_sprite-alert-success" fill="none" viewBox="0 0 32 32"><circle cx="16.5" cy="16.5" r="11.5" fill="#0AA653"/><path fill="#fff" fill-rule="evenodd" d="M20.884 12.205c-.183.06-.342.218-.658.534l-5.177 5.177-1.466-1.466c-.317-.317-.476-.475-.658-.535a.8.8 0 00-.495 0c-.182.06-.34.218-.657.535l-.034.033c-.316.317-.475.475-.534.658a.8.8 0 000 .494c.06.183.218.341.534.658l2.417 2.416c.317.317.475.476.658.535a.8.8 0 00.494 0c.183-.06.341-.218.658-.535l.033-.033a5.35 5.35 0 00.402-.425l5.668-5.668c.317-.317.475-.475.535-.658a.8.8 0 000-.495c-.06-.182-.218-.34-.535-.657l-.033-.034c-.317-.316-.475-.475-.658-.534a.8.8 0 00-.494 0z" clip-rule="evenodd"/></symbol><symbol id="_sprite-alert-warning-white-border" fill="none" viewBox="0 0 24 24"><g fill-rule="evenodd" clip-path="url(#_alert-warning-white-border_svg_clip0)" clip-rule="evenodd"><path fill="#F56109" stroke="#fff" stroke-width="4" d="M11.128 4.55a1 1 0 011.744 0l7.29 12.96A1 1 0 0119.29 19H4.71a1 1 0 01-.872-1.49l7.29-12.96z" paint-order="stroke"/><path fill="#fff" d="M11 8.4c0-.22.18-.4.4-.4h1.2c.22 0 .4.18.4.4v4.2a.4.4 0 01-.4.4h-1.2a.4.4 0 01-.4-.4V8.4zm0 7.6a1 1 0 112 0 1 1 0 01-2 0z"/></g><defs><clipPath id="_alert-warning-white-border_svg_clip0"><path fill="#fff" d="M0 0h24v24H0V0z"/></clipPath></defs></symbol><symbol id="_sprite-alert-warning" fill="none" viewBox="0 0 32 32"><path fill="#F56109" fill-rule="evenodd" d="M14.447 6.922a1.2 1.2 0 012.105 0l9.475 17.302A1.2 1.2 0 0124.975 26H6.025a1.2 1.2 0 01-1.052-1.776l9.474-17.302z" clip-rule="evenodd"/><path fill="#fff" fill-rule="evenodd" d="M14 12.8a.8.8 0 01.8-.8h1.4a.8.8 0 01.8.8v5.4a.8.8 0 01-.8.8h-1.4a.8.8 0 01-.8-.8v-5.4zm0 9.7a1.5 1.5 0 113 0 1.5 1.5 0 01-3 0z" clip-rule="evenodd"/></symbol><symbol id="_sprite-arrow-down-long" viewBox="0 0 32 32"><path d="M14.32 2v23.84l-4.88-4.96c-.64-.64-1.76-.64-2.4 0-.32.32-.48.72-.48 1.2s.16.88.48 1.2l7.84 7.84c.08.08.16.16.32.24.08.08.16.08.24.16h.08c.08 0 .16.08.24.08.24.08.48.08.64 0 .08 0 .16 0 .24-.08h.08c.08 0 .16-.08.24-.08l.08-.08.24-.24 7.84-7.84c.32-.32.48-.72.48-1.2s-.16-.88-.48-1.2c-.32-.32-.72-.48-1.2-.48s-.88.16-1.2.48l-4.88 4.96V2c0-.96-.8-1.68-1.68-1.68-1.12 0-1.84.72-1.84 1.68z"/></symbol><symbol id="_sprite-arrow-down" viewBox="0 0 32 32"><path d="M31.296 7.68c-.256-.32-.704-.512-1.216-.512-.448 0-.896.192-1.216.512L16 20.736 3.2 7.68c-.256-.32-.704-.512-1.216-.512-.448 0-.896.192-1.216.448S.256 8.32.256 8.768c0 .512.192.96.512 1.28L14.72 24.32c.32.32.704.512 1.152.512.256 0 .512-.064.768-.192.128-.064.256-.128.384-.128l.128-.064 14.016-14.336c.768-.64.704-1.728.128-2.432z"/></symbol><symbol id="_sprite-arrow-filter-down" viewBox="0 0 32 32"><path d="M30.8 9.04c-.24-.48-.72-.8-1.2-.8H2.4c-.48 0-.96.32-1.2.8s-.16.96.24 1.36l13.6 12.88c.24.32.64.48.96.48s.72-.16.96-.48l13.6-12.88c.4-.4.48-.88.24-1.36z"/></symbol><symbol id="_sprite-arrow-filter-up" viewBox="0 0 32 32"><path d="M30.8 22.96c-.24.48-.72.8-1.2.8H2.4c-.48 0-.96-.32-1.2-.8s-.16-.96.24-1.36l13.6-12.88c.24-.32.64-.48.96-.48s.72.16.96.48l13.6 12.88c.4.4.48.88.24 1.36z"/></symbol><symbol id="_sprite-arrow-left-long" viewBox="0 0 32 32"><path d="M30 14.32H6.16l4.96-4.88c.64-.64.64-1.76 0-2.4-.32-.32-.72-.48-1.2-.48s-.88.16-1.2.48L.8 14.8c-.08.08-.16.16-.24.32-.08.08-.08.16-.16.24v.08c0 .08-.08.16-.08.24-.08.24-.08.48 0 .64 0 .08 0 .16.08.24v.08c0 .08.08.16.08.24l.08.08.24.24 7.84 7.84c.32.32.72.48 1.2.48s.88-.16 1.2-.48c.32-.32.48-.72.48-1.2s-.16-.88-.48-1.2l-4.96-4.88h23.84c.96 0 1.68-.8 1.68-1.68.08-1.04-.64-1.76-1.6-1.76z"/></symbol><symbol id="_sprite-arrow-left" viewBox="0 0 32 32"><path d="M11.264 16.064L24.448 3.456c.32-.32.512-.768.512-1.28 0-.448-.192-.896-.512-1.216-.64-.64-1.856-.64-2.496 0l-14.4 13.824c-.32.32-.512.768-.512 1.216s.192.896.512 1.216l14.336 13.76c.32.32.768.512 1.216.512s.896-.192 1.216-.512l.064-.128c.32-.384.448-.768.448-1.088 0-.448-.192-.832-.512-1.152L11.264 16.064z"/></symbol><symbol id="_sprite-arrow-right-long" viewBox="0 0 32 32"><path d="M2 17.68h23.84l-4.96 4.88c-.64.64-.64 1.76 0 2.4.32.32.72.48 1.2.48s.88-.16 1.2-.48l7.84-7.84c.08-.08.16-.16.24-.32.08-.08.08-.16.16-.24v-.08c0-.08.08-.16.08-.24.08-.24.08-.48 0-.64 0-.08 0-.16-.08-.24v-.08c0-.08-.08-.16-.08-.24l-.08-.08-.24-.24-7.84-7.84c-.32-.32-.72-.48-1.2-.48s-.88.16-1.2.48c-.32.32-.48.72-.48 1.2s.16.88.48 1.2l4.96 4.88H2c-.96 0-1.68.8-1.68 1.68 0 1.12.72 1.84 1.68 1.84z"/></symbol><symbol id="_sprite-arrow-right" viewBox="0 0 32 32"><path d="M24.448 14.784L10.048.96c-.64-.64-1.856-.64-2.496 0-.32.32-.512.768-.512 1.28 0 .448.192.896.512 1.216l13.12 12.608-13.12 12.608c-.32.32-.512.704-.512 1.152 0 .32.128.64.448 1.088l.064.128c.32.32.768.512 1.216.512s.896-.192 1.216-.512L24.32 17.28c.32-.32.512-.768.512-1.216s-.064-.96-.384-1.28z"/></symbol><symbol id="_sprite-arrow-up-long" viewBox="0 0 32 32"><path d="M17.68 30V6.16l4.88 4.96c.64.64 1.76.64 2.4 0 .32-.32.48-.72.48-1.2s-.16-.88-.48-1.2L17.2.8c-.08-.08-.16-.16-.32-.24-.08-.08-.16-.08-.24-.16h-.08c-.08 0-.16-.08-.24-.08-.24-.08-.48-.08-.64 0-.08 0-.16 0-.24.08h-.08c-.08 0-.16.08-.24.08l-.08.08-.24.24-7.84 7.84c-.32.32-.48.72-.48 1.2s.16.88.48 1.2c.32.32.72.48 1.2.48s.88-.16 1.2-.48l4.88-4.96v23.84c0 .96.8 1.68 1.68 1.68 1.04.08 1.76-.64 1.76-1.6z"/></symbol><symbol id="_sprite-arrow-up" viewBox="0 0 32 32"><path d="M31.04 21.952l-13.824-14.4c-.64-.64-1.856-.64-2.432 0L.96 21.952a1.862 1.862 0 000 2.496c.32.32.768.512 1.28.512s.896-.192 1.216-.512l12.608-13.12 12.608 13.12c.32.32.704.512 1.152.512.32 0 .64-.128 1.152-.512.704-.704.704-1.856.064-2.496z"/></symbol><symbol id="_sprite-asterik" viewBox="0 0 32 35"><path d="M32 23.488l-11.12-6.42 11.118-6.42-2.409-4.224-11.091 6.422V0H13.62v12.841L2.468 6.421.015 10.644l11.118 6.423L0 23.492l2.467 4.224 11.154-6.424v12.844h4.877V21.29l11.093 6.422L32 23.488z"/></symbol><symbol id="_sprite-check" viewBox="0 0 32 32"><path d="M30.72 5.824a1.816 1.816 0 00-2.56 0l-16.64 16.64-7.744-7.744c-.64-.64-1.856-.64-2.496 0a1.816 1.816 0 000 2.56l8.96 8.96c.32.32.768.512 1.216.512.256 0 .832 0 1.344-.512L30.72 8.32a1.739 1.739 0 000-2.496z"/></symbol><symbol id="_sprite-close" viewBox="0 0 32 32"><path d="M29.12 26.816l-10.88-10.88L29.12 5.184c.32-.32.448-.704.448-1.088 0-.448-.192-.832-.448-1.088-.576-.576-1.664-.576-2.24 0L16.064 13.76 5.12 2.816c-.576-.576-1.664-.576-2.24 0-.64.64-.64 1.6 0 2.24l10.944 11.008L2.88 26.944c-.32.32-.448.704-.448 1.088 0 .448.192.832.448 1.088s.64.448 1.024.448c.448 0 .896-.256 1.088-.576l10.944-10.816L26.88 29.184c.256.256.64.448 1.024.448s.832-.192 1.152-.576c.64-.64.64-1.6.064-2.24z"/></symbol><symbol id="_sprite-copy" viewBox="0 0 16 17"><path d="M3 2h8V1a1 1 0 00-1-1H2a1 1 0 00-1 1v9.333a1 1 0 001 1h1V2z"/><path d="M7 6h8V5a1 1 0 00-1-1H6a1 1 0 00-1 1v9.333a1 1 0 001 1h1V6z"/><path d="M13.01 14l-8 .01.002.999a1 1 0 001.001.998l8-.01a1 1 0 00.999-1l-.011-9.33A1 1 0 0014 4.67h-1l.01 9.33z"/></symbol><symbol id="_sprite-download" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8 9.585l2.293-2.292a1 1 0 111.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 011.415-1.414L8 9.585z" clip-rule="evenodd"/><path fill-rule="evenodd" d="M8 1a1 1 0 011 1v8a1 1 0 11-2 0V2a1 1 0 011-1zM3 14a1 1 0 011-1h8a1 1 0 110 2H4a1 1 0 01-1-1z" clip-rule="evenodd"/></symbol><symbol id="_sprite-ellipsis" viewBox="0 0 40 20"><path fill="#5B6987" d="M14 12a2 2 0 100-4 2 2 0 000 4zm6 0a2 2 0 100-4 2 2 0 000 4zm6 0a2 2 0 100-4 2 2 0 000 4z"/></symbol><symbol id="_sprite-email" viewBox="0 0 18.9 14.5"><path d="M17.6 1.2v12H1.2v-12h16.4M18.9 0H0v14.5h18.9V0z"/><path d="M9.6 10.9l-9-9.4.9-.9 8.1 8.5 8-8.5.9.9"/><path d="M11.574 7.314l.943-.896 5.993 6.308-.943.895zM.608 12.76L6.74 6.31l.942.896-6.13 6.45z"/></symbol><symbol id="_sprite-error" fill="none" viewBox="0 0 24 24"><g clip-path="url(#_error_svg_clip0)"><path fill="#CA0C0C" d="M11.265 3.414a1.5 1.5 0 011.47 0l6.5 3.656A1.5 1.5 0 0120 8.377v7.246a1.5 1.5 0 01-.765 1.307l-6.5 3.656a1.5 1.5 0 01-1.47 0l-6.5-3.656A1.5 1.5 0 014 15.623V8.377a1.5 1.5 0 01.765-1.307l6.5-3.656z"/><path fill="#fff" fill-rule="evenodd" d="M11 7.4c0-.22.18-.4.4-.4h1.2c.22 0 .4.18.4.4v5.2a.4.4 0 01-.4.4h-1.2a.4.4 0 01-.4-.4V7.4zm0 8.6a1 1 0 112 0 1 1 0 01-2 0z" clip-rule="evenodd"/></g><defs><clipPath id="_error_svg_clip0"><path fill="#fff" d="M0 0h24v24H0V0z"/></clipPath></defs></symbol><symbol id="_sprite-exclamation" viewBox="0 0 32 32"><path d="M13.5.7l.8 22.4h4.1L19.2.7zm2.7 24.6c-1.6 0-3 1.4-3 3s1.4 3 3 3 3-1.4 3-3c.3-1.4-1.1-3-3-3z" class="_exclamation_svg_st0"/></symbol><symbol id="_sprite-expand" fill="none" viewBox="0 0 30 30"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M18.031 7.424h4.243v4.243M7.425 18.031v4.243h4.242M7.425 11.668V7.426h4.242m6.364 14.847h4.243v-4.242"/><path fill="#000" fill-rule="evenodd" d="M7.424 8.13a1 1 0 011.415 0l12.728 12.73a1 1 0 01-1.415 1.414L7.424 9.545a1 1 0 010-1.414z" clip-rule="evenodd"/><path fill="#000" fill-rule="evenodd" d="M21.567 8.13a1 1 0 010 1.415L8.839 22.273a1 1 0 01-1.415-1.414L20.152 8.13a1 1 0 011.415 0z" clip-rule="evenodd"/></symbol><symbol id="_sprite-external-link" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M6.131 6.14a1 1 0 000 2h2.235l-4.08 4.16a1 1 0 101.428 1.401l4.17-4.252v2.445a1 1 0 002 0V6.141H6.132z" clip-rule="evenodd"/></symbol><symbol id="_sprite-eye-hide" fill="none" viewBox="0 0 24 24"><path fill="#5B6987" d="M21 12c-1.059 3.273-4.907 6-9 6s-7.941-2.727-9-6c1.5-3.6 4.907-6 9-6s7.941 2.727 9 6z"/><circle cx="12" cy="12" r="3" stroke="#fff" stroke-width="2"/><path stroke="#fff" stroke-width="3" d="M5.102 4.816l13.077 14.167"/><path stroke="#5B6987" stroke-width="1.5" d="M4.551 5.325l13.077 14.166"/></symbol><symbol id="_sprite-eye-show" fill="none" viewBox="0 0 24 24"><path fill="#5B6987" d="M21 12c-1.059 3.273-4.907 6-9 6s-7.941-2.727-9-6c1.5-3.6 4.907-6 9-6s7.941 2.727 9 6z"/><circle cx="12" cy="12" r="3" stroke="#fff" stroke-width="2"/><path fill="#5B6987" d="M21 12c-1.059 3.273-4.907 6-9 6s-7.941-2.727-9-6c1.5-3.6 4.907-6 9-6s7.941 2.727 9 6z"/><circle cx="12" cy="12" r="3" stroke="#fff" stroke-width="2"/></symbol><symbol id="_sprite-facebook" viewBox="0 0 16 16"><path d="M9.5 3H12V0H9.5C7.57 0 6 1.57 6 3.5V5H4v3h2v8h3V8h2.5l.5-3H9V3.5c0-.271.229-.5.5-.5z"/></symbol><symbol id="_sprite-flag-canada" fill="none" viewBox="0 0 50 28"><path fill="#F5916D" d="M0 0h13v28H0z"/><path fill="#fff" d="M13 0h24v28H13z"/><path fill="#F5916D" d="M37 0h13v28H37z"/><path fill="#F5916D" fill-rule="evenodd" d="M21.204 7.85a.5.5 0 00-.204.403V11h-4.5a.5.5 0 00-.5.5v4.193a.5.5 0 00.274.446L19.955 18H20v1.5a.5.5 0 00.5.5H24v3.5a.5.5 0 00.5.5h1a.5.5 0 00.5-.5V20h3.5a.5.5 0 00.5-.5v-1.407l3.732-1.953a.5.5 0 00.268-.443V11.5a.5.5 0 00-.5-.5H29V8.247a.5.5 0 00-.196-.397L25.09 5l-3.885 2.85z" clip-rule="evenodd"/></symbol><symbol id="_sprite-flag-germany" fill="none" viewBox="0 0 50 28"><path fill="#F8DF63" d="M0 18h50v10H0z"/><path fill="#FF8663" d="M0 9.5h50V18H0z"/><path fill="#414042" d="M0 0h50v9.5H0z"/></symbol><symbol id="_sprite-flag-india" fill="none" viewBox="0 0 50 28"><path fill="#F4B161" d="M0 0h50v9H0z"/><path fill="#16CD71" d="M0 19.5h50V28H0z"/><path fill="#fff" d="M0 9h50v10.5H0z"/><rect width="6" height="6" x="22" y="11" stroke="#4886B5" rx="3"/><rect width="1" height="7" x="24.5" y="10.5" fill="#4886B5" rx=".5"/><rect width="1" height="7" x="28.5" y="13.5" fill="#4886B5" rx=".5" transform="rotate(90 28.5 13.5)"/><rect width="1" height="7" x="27.121" y="11.172" fill="#4886B5" rx=".5" transform="rotate(45 27.121 11.172)"/><rect width="1" height="7" x="22.172" y="11.879" fill="#4886B5" rx=".5" transform="rotate(-45 22.172 11.879)"/></symbol><symbol id="_sprite-flag-netherlands" fill="none" viewBox="0 0 50 28"><path fill="#FF8663" d="M0 0h50v9H0z"/><path fill="#fff" d="M0 9h50v10H0z"/><path fill="#1D82BD" d="M0 19h50v9H0z"/></symbol><symbol id="_sprite-flag-singapore" fill="none" viewBox="0 0 50 28"><path fill="#FF8663" d="M0 0h50v14H0z"/><path fill="#D8D8D8" d="M0 14h50v14H0z"/><path fill="#fff" d="M1 14h48v13H1z"/><path fill="#fff" fill-rule="evenodd" d="M7.16 2.34a4.41 4.41 0 102.09 8.295 3.946 3.946 0 110-7.77 4.39 4.39 0 00-2.09-.525z" clip-rule="evenodd"/><rect width="1.5" height="1.5" x="7.5" y="7.5" fill="#fff" rx=".75"/><rect width="1.5" height="1.5" x="9.5" y="7.5" fill="#fff" rx=".75"/><rect width="1.5" height="1.5" x="10.5" y="5.5" fill="#fff" rx=".75"/><rect width="1.5" height="1.5" x="6.5" y="5.5" fill="#fff" rx=".75"/><rect width="1.5" height="1.5" x="8.5" y="4" fill="#fff" rx=".75"/></symbol><symbol id="_sprite-flag-uk" fill="none" viewBox="0 0 50 28"><path fill="#4986B5" d="M0 0h50v28H0z"/><path fill="#fff" fill-rule="evenodd" d="M45.06 28L0 1.985V0h6.562L50 25.079V28h-4.94z" clip-rule="evenodd"/><path fill="#fff" fill-rule="evenodd" d="M0 25.345L43.9 0H50v2.251L5.402 28H0v-2.655z" clip-rule="evenodd"/><path fill="#FF8663" fill-rule="evenodd" d="M0 27.426L47.503 0H50v.13L1.727 28H0v-.574z" clip-rule="evenodd"/><path fill="#FF8663" fill-rule="evenodd" d="M48.69 28L.193 0H2.7L50 27.309V28h-1.31z" clip-rule="evenodd"/><path fill="#fff" d="M21.5 0h7v28h-7z"/><path fill="#fff" d="M0 17v-7h50v7z"/><path fill="#FF8663" d="M0 15.5v-4h50v4H0z"/><path fill="#FF8663" d="M23 0h4v28h-4z"/></symbol><symbol id="_sprite-flag-usa" fill="none" viewBox="0 0 50 28"><path fill="#FF8663" d="M0 24h50v4H0v-4z"/><path fill="#4986B5" d="M0 0h25v16H0V0z"/><path fill="#FF8663" d="M0 16h50v4H0v-4z"/><path fill="#fff" d="M0 20h50v4H0v-4z"/><path fill="#FF8663" d="M25 8h25v4H25V8z"/><path fill="#fff" d="M25 12h25v4H25v-4z"/><path fill="#FF8663" d="M25 0h25v4H25V0z"/><path fill="#fff" d="M25 4h25v4H25V4z"/></symbol><symbol id="_sprite-fleets-1" fill="none" viewBox="0 0 40 40"><path fill="#00D7D2" d="M0 0h40v40H0z"/><circle cx="19.556" cy="19.556" r="11" fill="#0069FF"/><path fill="#9EF1EE" d="M27.334 27.334c4.296-4.295 4.296-11.26 0-15.556-4.295-4.296-11.26-4.296-15.556 0l15.556 15.556z"/></symbol><symbol id="_sprite-fleets-10" fill="none" viewBox="0 0 40 40"><g clip-path="url(#_fleets-10_svg_clip0)"><path fill="#A0F2EF" d="M0 0h40v40H0z"/><path fill="#0069FF" fill-rule="evenodd" d="M20 20L40 0H0l20 20z" clip-rule="evenodd"/><path fill="#00D7D2" fill-rule="evenodd" d="M20 40l20-20H0l20 20z" clip-rule="evenodd"/></g><defs><clipPath id="_fleets-10_svg_clip0"><path fill="#fff" d="M0 0h40v40H0z"/></clipPath></defs></symbol><symbol id="_sprite-fleets-11" fill="none" viewBox="0 0 40 40"><path fill="#00D7D2" d="M0 0h40v40H0z"/><path fill="#0069FF" d="M0 0l40 20v20L0 20V0z"/></symbol><symbol id="_sprite-fleets-12" fill="none" viewBox="0 0 40 40"><path fill="#0069FF" d="M0 0h40v40H0z"/><path fill="#A0F2EF" d="M9 6h22v6H9zm0 11h22v6H9zm0 11h22v6H9z"/></symbol><symbol id="_sprite-fleets-13" fill="none" viewBox="0 0 40 40"><path fill="#0069FF" d="M0 0h40v40H0z"/><path fill="#A0F2EF" d="M40 20L0 0v40l40-20z"/></symbol><symbol id="_sprite-fleets-14" fill="none" viewBox="0 0 40 40"><g clip-path="url(#_fleets-14_svg_clip0)"><path fill="#A0F2EF" d="M40 0H0v40h40V0z"/><path fill="#0069FF" d="M0 0h20L0 40V0z"/><path fill="#00D7D2" d="M20 0h20L20 40V0z"/><path fill="#A0F2EF" d="M20 40H0L20 0v40z"/><path fill="#0069FF" d="M40 40H20L40 0v40z"/></g><defs><clipPath id="_fleets-14_svg_clip0"><path fill="#fff" d="M0 0h40v40H0z"/></clipPath></defs></symbol><symbol id="_sprite-fleets-15" fill="none" viewBox="0 0 40 40"><path fill="#00D7D2" d="M0 0h40v40H0z"/><circle cx="12" cy="12" r="6" fill="#A0F2EF"/><circle cx="28" cy="12" r="6" fill="#0069FF"/><circle cx="12" cy="28" r="6" fill="#0069FF"/><circle cx="28" cy="28" r="6" fill="#A0F2EF"/></symbol><symbol id="_sprite-fleets-16" fill="none" viewBox="0 0 40 40"><g clip-path="url(#_fleets-16_svg_clip0)"><path fill="#00D7D2" d="M0 0h40v40H0z"/><path fill="#0069FF" d="M20 20V0L0 20h20zm0 20V20L0 40h20z"/><path fill="#00D7D2" d="M40 20V0L20 20h20zm0 20V20L20 40h20z"/><path fill="#A0F2EF" d="M20 20v20l20-20H20zm0-20v20L40 0H20z"/></g><defs><clipPath id="_fleets-16_svg_clip0"><path fill="#fff" d="M0 0h40v40H0z"/></clipPath></defs></symbol><symbol id="_sprite-fleets-17" fill="none" viewBox="0 0 40 40"><g clip-path="url(#_fleets-17_svg_clip0)"><path fill="#00D7D2" d="M0 0h40v40H0z"/><path fill="#A0F2EF" d="M0 20l40 10V10L0 20zM0 0h40v10L0 0zm0 40h40V30L0 40z"/></g><defs><clipPath id="_fleets-17_svg_clip0"><path fill="#fff" d="M0 0h40v40H0z"/></clipPath></defs></symbol><symbol id="_sprite-fleets-18" fill="none" viewBox="0 0 40 40"><path fill="#00D7D2" d="M0 0h40v40H0z"/><path fill="#A0F2EF" d="M.013 40A39.746 39.746 0 010 39C0 17.46 17.46 0 39 0c.334 0 .668.004 1 .013V40H.013z"/><path fill="#00D7D2" d="M40 13.019V40H13.019A26.349 26.349 0 0113 39c0-14.36 11.64-26 26-26 .335 0 .668.006 1 .019z"/><path fill="#0069FF" d="M40 27.041V40H27.041A12.16 12.16 0 0127 39c0-6.627 5.373-12 12-12 .337 0 .67.014 1 .041z"/></symbol><symbol id="_sprite-fleets-19" fill="none" viewBox="0 0 40 40"><path fill="#0069FF" d="M0 0h40v40H0z"/><path fill="#A0F2EF" d="M20 6l14 14-14 14L6 20z"/></symbol><symbol id="_sprite-fleets-2" fill="none" viewBox="0 0 40 40"><g clip-path="url(#_fleets-2_svg_clip0)"><path fill="#A0F2EF" d="M0 0h40v40H0z"/><circle cx="20" cy="28" r="12" fill="#C4C4C4" fill-opacity=".4"/><circle cx="20" cy="28" r="12" fill="#00D7D2"/><circle cx="20" r="12" fill="#C4C4C4" fill-opacity=".4"/><circle cx="20" r="12" fill="#0069FF"/></g><defs><clipPath id="_fleets-2_svg_clip0"><path fill="#fff" d="M0 0h40v40H0z"/></clipPath></defs></symbol><symbol id="_sprite-fleets-20" fill="none" viewBox="0 0 40 40"><path fill="#0069FF" d="M0 0h40v40H0z"/><path fill="#00D7D2" d="M20 40h20c0-11.046-8.954-20-20-20v20zm0-40c11.046 0 20 8.954 20 20H20V0z"/><path fill="#A0F2EF" d="M20 40H0c0-11.046 8.954-20 20-20v20zm0-40C8.954 0 0 8.954 0 20h20V0z"/></symbol><symbol id="_sprite-fleets-3" fill="none" viewBox="0 0 40 40"><path fill="#0069FF" d="M0 0h40v40H0z"/><path fill="#A0F2EF" d="M2 28.163L28.163 2l9.192 9.192-26.163 26.163z"/></symbol><symbol id="_sprite-fleets-4" fill="none" viewBox="0 0 40 40"><path fill="#0069FF" d="M0 0h40v40H0z"/><path fill="#A0F2EF" d="M0 0h20v20H0zm20 20h20v20H20z"/></symbol><symbol id="_sprite-fleets-5" fill="none" viewBox="0 0 40 40"><path fill="#0069FF" d="M0 0h40v40H0z"/><path fill="#00D7D2" d="M0 40h40L0 0v40z"/><path fill="#A0F2EF" d="M9 9h22v22H9z"/></symbol><symbol id="_sprite-fleets-6" fill="none" viewBox="0 0 40 40"><g clip-path="url(#_fleets-6_svg_clip0)"><path fill="#A0F2EF" d="M0 0h40v40H0z"/><path fill="#0069FF" d="M13 13h14v14H13z"/></g><defs><clipPath id="_fleets-6_svg_clip0"><path fill="#fff" d="M0 0h40v40H0z"/></clipPath></defs></symbol><symbol id="_sprite-fleets-7" fill="none" viewBox="0 0 40 40"><path fill="#00D7D2" d="M0 0h40v40H0z"/><circle cx="20" cy="20" r="17" fill="#C4C4C4" fill-opacity=".4"/><circle cx="20" cy="20" r="17" fill="#A0F2EF"/><circle cx="20" cy="20" r="8" fill="#C4C4C4" fill-opacity=".4"/><circle cx="20" cy="20" r="8" fill="#0069FF"/></symbol><symbol id="_sprite-fleets-8" fill="none" viewBox="0 0 40 40"><path fill="#A0F2EF" d="M0 0h40v40H0z"/><path fill="#00D7D2" d="M0 20c0 11.046 8.954 20 20 20s20-8.954 20-20H0z"/><path fill="#0069FF" d="M0 0c0 11.046 8.954 20 20 20s20-8.954 20-20H0z"/></symbol><symbol id="_sprite-fleets-9" fill="none" viewBox="0 0 40 40"><g clip-path="url(#_fleets-9_svg_clip0)"><path fill="#A0F2EF" d="M0 0h40v40H0z"/><path fill="#0069FF" fill-rule="evenodd" d="M20 20L0 0v40l20-20z" clip-rule="evenodd"/><path fill="#00D7D2" fill-rule="evenodd" d="M20 20l20 20V0L20 20z" clip-rule="evenodd"/></g><defs><clipPath id="_fleets-9_svg_clip0"><path fill="#fff" d="M0 0h40v40H0z"/></clipPath></defs></symbol><symbol id="_sprite-gear" viewBox="0 0 32 32"><path fill="#444" d="M28.928 13.056h-1.792c-.256-1.152-.768-2.048-1.28-2.944l1.28-1.28c1.152-1.152 1.152-2.944 0-4.032s-2.944-1.152-4.032 0l-1.28 1.28c-.896-.64-1.92-.896-2.944-1.28V3.072c0-1.664-1.28-2.944-2.944-2.944s-2.944 1.28-2.944 2.944v1.792c-1.152.256-2.048.768-2.944 1.28l-1.28-1.28c-1.152-1.152-2.944-1.152-4.032 0s-1.152 2.944 0 4.032l1.28 1.28c-.64.896-.896 1.92-1.28 2.944H3.072c-1.664 0-2.944 1.28-2.944 2.944s1.28 2.944 2.944 2.944h1.792c.256 1.152.768 2.048 1.28 2.944l-1.28 1.28c-1.152 1.152-1.152 2.944 0 4.032s2.944 1.152 4.032 0l1.28-1.28c.896.64 1.92.896 2.944 1.28v1.792C13.12 30.72 14.4 32 16.064 32s2.944-1.28 2.944-2.944v-1.792c1.152-.256 2.048-.768 2.944-1.28l1.28 1.28c1.152 1.152 2.944 1.152 4.032 0s1.152-2.944 0-4.032l-1.28-1.28c.64-.896.896-1.92 1.28-2.944h1.792c1.664 0 2.944-1.28 2.944-2.944s-1.408-3.008-3.072-3.008zM16 24c-4.416 0-8-3.52-8-8s3.584-8 8-8 8 3.584 8 8-3.584 8-8 8z"/></symbol><symbol id="_sprite-github" viewBox="0 0 15 16"><path d="M5.714 10.857q0 .357-.112.732t-.384.679-.647.304-.647-.304-.384-.679-.112-.732.112-.732.384-.679.647-.304.647.304.384.679.112.732zm5.715 0q0 .357-.112.732t-.384.679-.647.304-.647-.304-.384-.679-.112-.732.112-.732.384-.679.647-.304.647.304.384.679.112.732zm1.428 0q0-1.071-.616-1.821t-1.67-.75q-.366 0-1.741.188-.634.098-1.402.098t-1.402-.098q-1.357-.188-1.741-.188-1.054 0-1.67.75t-.616 1.821q0 .786.286 1.371t.723.92 1.089.536 1.25.263 1.33.063h1.5q.732 0 1.33-.063t1.25-.263 1.089-.536.723-.92.286-1.371zm2-1.571q0 1.848-.545 2.955-.339.688-.942 1.188t-1.259.768-1.518.424-1.531.196-1.491.04q-.696 0-1.268-.027t-1.317-.112-1.362-.268-1.223-.46-1.08-.723-.768-1.027q-.554-1.098-.554-2.955 0-2.116 1.214-3.536-.241-.732-.241-1.518 0-1.036.455-1.946.964 0 1.696.353T4.81 3.741q1.313-.313 2.759-.313 1.321 0 2.5.286.938-.732 1.67-1.08t1.688-.348q.455.911.455 1.946 0 .777-.241 1.5 1.214 1.429 1.214 3.554z"/></symbol><symbol id="_sprite-google" viewBox="0 0 16 16"><path d="M5.091 7.147v1.747h2.888c-.116.75-.872 2.197-2.888 2.197-1.737 0-3.156-1.441-3.156-3.216s1.419-3.216 3.156-3.216c.991 0 1.65.422 2.028.784L8.5 4.112c-.888-.828-2.037-1.331-3.409-1.331C2.275 2.784 0 5.059 0 7.875s2.275 5.091 5.091 5.091c2.937 0 4.888-2.066 4.888-4.975 0-.334-.037-.591-.081-.844H5.092zM16 7h-1.5V5.5H13V7h-1.5v1.5H13V10h1.5V8.5H16z"/></symbol><symbol id="_sprite-hamburger" fill="none" viewBox="0 0 33 29"><path fill="#031B4E" d="M0 0h33v6H0zm0 11.5h33v6H0zM0 23h33v6H0z"/></symbol><symbol id="_sprite-instagram" viewBox="0 0 457 457"><path d="M228.14.72c-61.959 0-69.728.261-94.061 1.373-24.284 1.109-40.868 4.965-55.378 10.604-15.003 5.83-27.726 13.631-40.409 26.314S17.808 64.418 11.979 79.42c-5.642 14.512-9.498 31.096-10.605 55.379C.263 159.132.001 166.9.001 228.859c0 61.961.262 69.729 1.373 94.062 1.107 24.283 4.963 40.867 10.605 55.379 5.829 15.002 13.63 27.726 26.313 40.409 12.683 12.683 25.406 20.484 40.409 26.314 14.51 5.639 31.094 9.495 55.378 10.604 24.333 1.11 32.102 1.373 94.061 1.373 61.959 0 69.729-.263 94.062-1.373 24.283-1.109 40.867-4.965 55.378-10.604 15.003-5.83 27.725-13.631 40.408-26.314s20.484-25.407 26.314-40.409c5.641-14.512 9.497-31.096 10.605-55.379 1.111-24.333 1.372-32.101 1.372-94.062 0-61.959-.261-69.727-1.372-94.06-1.108-24.283-4.964-40.867-10.605-55.379-5.83-15.002-13.631-27.726-26.314-40.409s-25.405-20.484-40.408-26.314c-14.511-5.639-31.095-9.495-55.378-10.604C297.869.981 290.099.72 228.14.72zm0 41.106c60.916 0 68.13.232 92.188 1.329 22.243 1.015 34.323 4.733 42.362 7.856 10.65 4.139 18.25 9.083 26.232 17.066 7.985 7.984 12.929 15.583 17.066 26.232 3.123 8.039 6.841 20.12 7.856 42.362 1.097 24.058 1.33 31.272 1.33 92.188 0 60.918-.233 68.132-1.33 92.188-1.015 22.244-4.733 34.325-7.856 42.364-4.137 10.648-9.081 18.248-17.066 26.232-7.982 7.983-15.582 12.927-26.232 17.065-8.039 3.124-20.119 6.842-42.362 7.855-24.054 1.099-31.267 1.33-92.188 1.33-60.921 0-68.134-.231-92.188-1.33-22.242-1.013-34.323-4.731-42.362-7.855-10.649-4.138-18.249-9.082-26.232-17.065-7.982-7.984-12.926-15.584-17.065-26.232-3.124-8.039-6.841-20.12-7.857-42.364-1.096-24.056-1.329-31.27-1.329-92.188 0-60.916.233-68.13 1.329-92.188 1.016-22.242 4.733-34.323 7.857-42.362 4.139-10.649 9.083-18.248 17.065-26.232 7.983-7.983 15.583-12.927 26.232-17.066 8.039-3.123 20.12-6.841 42.362-7.856 24.058-1.097 31.272-1.329 92.188-1.329z"/><path d="M228.14 304.906c-41.999 0-76.047-34.047-76.047-76.047 0-41.999 34.048-76.046 76.047-76.046 42 0 76.047 34.047 76.047 76.046 0 42-34.047 76.047-76.047 76.047m0-193.199c-64.701 0-117.152 52.452-117.152 117.152 0 64.703 52.451 117.153 117.152 117.153s117.152-52.45 117.152-117.153c0-64.7-52.451-117.152-117.152-117.152m149.159-4.629c0 15.119-12.257 27.377-27.377 27.377-15.119 0-27.377-12.258-27.377-27.377 0-15.12 12.258-27.377 27.377-27.377 15.12 0 27.377 12.257 27.377 27.377"/></symbol><symbol id="_sprite-keyboard-nav-arrow-keys" fill="none" viewBox="0 0 11 10"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M2.333 9V1M1 7.667L2.333 9l1.334-1.333M7.933 9V1M6.6 2.333L7.933 1l1.334 1.333"/></symbol><symbol id="_sprite-keyboard-nav-escape" fill="none" viewBox="0 0 14 8"><path fill="currentColor" d="M1.315 7.005c.803.336 1.68.146 2.308-.453a.64.64 0 00.19-.467.64.64 0 00-.19-.468.662.662 0 00-.482-.204.623.623 0 00-.453.204.81.81 0 01-.876.175.794.794 0 01-.497-.745v-.803h2.264a.655.655 0 00.658-.658v-1.46A2.12 2.12 0 002.118.006 2.12 2.12 0 000 2.125v2.922c0 .877.497 1.622 1.315 1.958zm.803-5.683c.453 0 .804.35.804.803v.804H1.315v-.804c0-.452.35-.803.803-.803zm5.423 4.339a.634.634 0 01-.584.175.626.626 0 01-.512-.35c-.175-.307-.57-.41-.906-.234a.66.66 0 00-.233.891c.307.54.818.891 1.446.994a1.996 1.996 0 001.68-.497 1.985 1.985 0 00.658-1.636 2.025 2.025 0 00-.862-1.534l-1.359-.95a.692.692 0 01-.278-.497.59.59 0 01.22-.526.592.592 0 01.54-.16.6.6 0 01.468.32.66.66 0 00.89.235A.64.64 0 008.96 1 2.002 2.002 0 007.555.035c-.6-.102-1.184.088-1.637.482a1.95 1.95 0 00-.642 1.593c.043.599.35 1.14.832 1.49l1.374.95c.175.117.277.292.292.54a.644.644 0 01-.234.57zm3.946 1.344c.818.336 1.71.146 2.309-.453A.654.654 0 0014 6.085a.654.654 0 00-.204-.468.63.63 0 00-.468-.204.623.623 0 00-.453.204.816.816 0 01-.877.175.794.794 0 01-.496-.745V2.125c0-.336.19-.613.496-.745a.816.816 0 01.877.176.623.623 0 00.453.204.63.63 0 00.468-.204.623.623 0 00.204-.453.63.63 0 00-.204-.468c-.6-.628-1.49-.803-2.309-.467a2.083 2.083 0 00-1.3 1.957v2.922c0 .877.497 1.622 1.3 1.958z"/></symbol><symbol id="_sprite-keyboard-nav-return" fill="none" viewBox="0 0 10 10"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M2.75 8.5L1.25 7l1.5-1.5"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M1.25 7h6a1.5 1.5 0 001.5-1.5v-3A1.5 1.5 0 007.25 1H4.5"/></symbol><symbol id="_sprite-linkedin" viewBox="0 0 16 16"><path d="M6 6h2.767v1.418h.04C9.192 6.727 10.134 6 11.539 6 14.46 6 15 7.818 15 10.183V15h-2.885v-4.27c0-1.018-.021-2.329-1.5-2.329-1.502 0-1.732 1.109-1.732 2.255V15H6V6zM1 6h3v9H1V6zm3-2.5a1.5 1.5 0 11-3.001-.001A1.5 1.5 0 014 3.5z"/></symbol><symbol id="_sprite-logo" viewBox="65.2 173.5 180 180"><style type="text/css"/><g id="_logo_svg_XMLID_229_"><g id="_logo_svg_XMLID_690_"><g id="_logo_svg_XMLID_691_"><g id="_logo_svg_XMLID_44_"><g id="_logo_svg_XMLID_48_"><path id="_logo_svg_XMLID_49_" d="M155.2 351.7v-34.2c36.2 0 64.3-35.9 50.4-74-5.1-14.1-16.4-25.4-30.5-30.5-38.1-13.8-74 14.2-74 50.4H67c0-57.7 55.8-102.7 116.3-83.8 26.4 8.3 47.5 29.3 55.7 55.7 18.9 60.6-26 116.4-83.8 116.4z"/></g><path id="_logo_svg_XMLID_47_" d="M155.3 317.6h-34v-34h34z"/><path id="_logo_svg_XMLID_46_" d="M121.3 343.8H95.1v-26.2h26.2z"/><path id="_logo_svg_XMLID_45_" d="M95.1 317.6H73.2v-21.9h21.9v21.9z"/></g></g></g></g></symbol><symbol id="_sprite-minus" viewBox="0 0 32 32"><path d="M1.6 14.16h28.8c.88 0 1.6.72 1.6 1.6v.56c0 .88-.72 1.6-1.6 1.6H1.6c-.88 0-1.6-.72-1.6-1.6v-.56c0-.88.72-1.6 1.6-1.6z"/></symbol><symbol id="_sprite-notification" fill="none" viewBox="0 0 32 32"><path fill="#5B6987" d="M26.5 20.255a2.579 2.579 0 01-2.58 2.575H8.08a2.577 2.577 0 01-2.58-2.575 2.577 2.577 0 012.377-2.568v-4.565A8.121 8.121 0 0116 5a8.122 8.122 0 018.123 8.122v4.565a2.578 2.578 0 012.377 2.568zm-2.576-.595a1.781 1.781 0 01-1.782-1.783v-4.755A6.14 6.14 0 0016 6.982a6.14 6.14 0 00-6.142 6.14v4.755c0 .984-.798 1.783-1.782 1.783a.596.596 0 00-.595.595c0 .328.267.594.598.594h15.842c.33 0 .598-.268.598-.594a.597.597 0 00-.595-.595zm-11.688 4.16h1.981a1.783 1.783 0 003.566 0h1.981a3.764 3.764 0 01-7.528 0z"/></symbol><symbol id="_sprite-overview-api-docs" fill="none" viewBox="0 0 24 24"><path fill="#CEE0FA" stroke="#003F99" d="M1.5 3A1.5 1.5 0 013 1.5h18A1.5 1.5 0 0122.5 3v18a1.5 1.5 0 01-1.5 1.5H3A1.5 1.5 0 011.5 21V3z"/><path stroke="#003F99" d="M5 8h6m-6 8h5m-1-4h6m-3-4h3M5 12h3m8 0h3m-7 4h4"/></symbol><symbol id="_sprite-overview-docs-white" fill="none" viewBox="0 0 16 16"><path fill="#031B4E" stroke="#fff" d="M1.892 10.852l5.96-3.199a.333.333 0 01.3-.007l5.9 2.815c.25.12.253.474.005.599l-6.382 3.198a.333.333 0 01-.302-.002l-5.475-2.814a.333.333 0 01-.006-.59z"/><path fill="#031B4E" stroke="#fff" d="M1.892 7.899l5.96-3.2a.333.333 0 01.3-.006l5.9 2.815c.25.12.253.474.005.598l-6.382 3.198a.333.333 0 01-.302-.001L1.898 8.489a.333.333 0 01-.006-.59z"/><path fill="#031B4E" stroke="#fff" d="M1.892 4.945l5.96-3.198a.333.333 0 01.3-.008l5.9 2.815c.25.12.253.475.005.6L7.675 8.35a.333.333 0 01-.302-.001L1.898 5.536a.333.333 0 01-.006-.59z"/></symbol><symbol id="_sprite-overview-docs" fill="none" viewBox="0 0 24 24"><path fill="#CEE0FA" stroke="#003F99" d="M2.839 16.278l8.938-4.798a.5.5 0 01.452-.011l8.848 4.222a.5.5 0 01.009.899l-9.573 4.796a.5.5 0 01-.453-.002l-8.213-4.22a.5.5 0 01-.008-.886z"/><path fill="#CEE0FA" stroke="#003F99" d="M2.839 11.848l8.938-4.798a.5.5 0 01.452-.011l8.848 4.222a.5.5 0 01.009.899l-9.573 4.796a.5.5 0 01-.453-.002l-8.213-4.22a.5.5 0 01-.008-.886z"/><path fill="#fff" stroke="#003F99" d="M2.839 7.418l8.938-4.798a.5.5 0 01.452-.01l8.848 4.222a.5.5 0 01.009.898l-9.573 4.797a.5.5 0 01-.453-.003l-8.213-4.22a.5.5 0 01-.008-.886z"/></symbol><symbol id="_sprite-overview-getting-started" fill="none" viewBox="0 0 24 24"><rect width="21" height="21" x="1.5" y="1.5" fill="#CEE0FA" stroke="#003F99" rx="1.5"/><path stroke="#003F99" d="M11.5 7h6m-6 5h4m-4 5h8M5 6.5l1.595 1.646L9.45 5.5M5 11.5l1.595 1.646L9.45 10.5M5 16.5l1.595 1.646L9.45 15.5"/></symbol><symbol id="_sprite-overview-info" fill="none" viewBox="0 0 24 24"><rect width="19" height="19" x="2.5" y="2.5" fill="#CEE0FA" stroke="#003F99" rx="9.5"/><path fill="#003F99" d="M12 9.125c.791 0 1.429-.633 1.429-1.42 0-.786-.638-1.42-1.429-1.42s-1.428.634-1.428 1.42c0 .787.637 1.42 1.428 1.42zm-.01 8.59c.636 0 1.153-.517 1.153-1.155v-4.992a1.154 1.154 0 00-2.308 0v4.992c0 .638.517 1.154 1.154 1.154z"/></symbol><symbol id="_sprite-overview-tutorials" fill="none" viewBox="0 0 24 24"><path fill="#CEE0FA" stroke="#003F99" d="M2.5 10.5H6v11H4A1.5 1.5 0 012.5 20v-9.5z"/><path fill="#fff" stroke="#003F99" d="M5.5 2.5h16v19h-16z"/><path fill="#CEE0FA" stroke="#003F99" d="M9.5 6.5h8v5h-8z"/><path stroke="#003F99" d="M9 14.5h9m-9 3h9"/></symbol><symbol id="_sprite-plus" viewBox="0 0 32 32"><path d="M1.6 14.16h28.8c.88 0 1.6.72 1.6 1.6v.56c0 .88-.72 1.6-1.6 1.6H1.6c-.88 0-1.6-.72-1.6-1.6v-.56c0-.88.72-1.6 1.6-1.6z"/><path d="M15.76 0h.56c.88 0 1.6.72 1.6 1.6v28.8c0 .88-.72 1.6-1.6 1.6h-.56c-.88 0-1.6-.72-1.6-1.6V1.6c0-.88.72-1.6 1.6-1.6z"/></symbol><symbol id="_sprite-product-alert-policy" viewBox="0 0 24 24.11"><defs><style>._product-alert-policy_svg_cls-1{fill:#fff}._product-alert-policy_svg_cls-2{fill:#003f99}</style></defs><path d="M21.18 19.78a1 1 0 11-1.4 1.4L15 16.35A1 1 0 1116.35 15z" class="_product-alert-policy_svg_cls-1"/><path d="M20.5 22a1.49 1.49 0 01-1.05-.44l-4.84-4.86a1.48 1.48 0 112.09-2.1l4.83 4.83a1.5 1.5 0 010 2.11 1.46 1.46 0 01-1.03.46zm-4.86-6.81a.48.48 0 00-.48.48.55.55 0 00.15.36l4.83 4.82a.52.52 0 00.36.15.44.44 0 00.33-.14.48.48 0 000-.69L16 15.31a.51.51 0 00-.36-.15z" class="_product-alert-policy_svg_cls-2"/><path fill="#cee0fa" d="M3 12.78l2.27-.07L6.61 14l2.23-5.25 2.41 5.73 2.61-3L15 13l3.67-.05-.87 2.2S13.66 21 7 18.08l-3.49-3.74z"/><path d="M10.77 2.07a8.7 8.7 0 108.7 8.7 8.69 8.69 0 00-8.7-8.7zm0 1a7.71 7.71 0 017.7 7.7 8.17 8.17 0 01-.2 1.72h-3.4l-.95-1.2a.51.51 0 00-.42-.18.49.49 0 00-.4.24L11.57 14 9.25 8.37a.5.5 0 00-.93 0l-1.93 5.11-.57-.79a.57.57 0 00-.41-.21H3.27a7.56 7.56 0 01-.2-1.72 7.7 7.7 0 017.7-7.69zm0 15.4a7.72 7.72 0 01-7.2-5h1.58l1 1.34a.5.5 0 00.47.21.52.52 0 00.4-.32L8.8 9.92 11 15.3a.49.49 0 00.43.31.48.48 0 00.43-.25l1.68-2.89.64.81a.49.49 0 00.39.19h3.33a7.71 7.71 0 01-7.13 5z" class="_product-alert-policy_svg_cls-2"/><path d="M8.76 10.52A1.77 1.77 0 107 8.75a1.77 1.77 0 001.76 1.77z" class="_product-alert-policy_svg_cls-1"/><path d="M8.76 8a.77.77 0 11-.76.75.77.77 0 01.76-.75m0-1a1.77 1.77 0 101.77 1.77A1.77 1.77 0 008.76 7z" class="_product-alert-policy_svg_cls-2"/></symbol><symbol id="_sprite-product-alert-triggered" viewBox="0 0 24 24"><defs><style>._product-alert-triggered_svg_cls-1{fill:#003f99}</style></defs><rect width=".89" height="1.27" x="8.36" y="5.65" class="_product-alert-triggered_svg_cls-1" rx=".2"/><rect width=".89" height="1.26" x="6.31" y="6.98" class="_product-alert-triggered_svg_cls-1" rx=".2" transform="rotate(-60.88 6.749 7.606)"/><path fill="#fff" d="M21.18 19.78a1 1 0 11-1.4 1.4L15 16.35A1 1 0 1116.35 15z"/><path d="M20.5 22a1.49 1.49 0 01-1.05-.44L14.6 16.7a1.52 1.52 0 01-.44-1 1.48 1.48 0 012.54-1.1l4.83 4.83a1.5 1.5 0 010 2.11 1.46 1.46 0 01-1.03.46zm-4.86-6.81a.48.48 0 00-.48.48.55.55 0 00.15.36l4.83 4.82a.47.47 0 00.35.15.44.44 0 00.33-.14.48.48 0 000-.69L16 15.31a.51.51 0 00-.36-.15z" class="_product-alert-triggered_svg_cls-1"/><path fill="#cee0fa" d="M3 12.78l2.27-.07L6.61 14l2.23-5.25 2.41 5.73 2.61-3L15 13l3.67-.05-.87 2.2S13.66 21 7 18.08l-3.49-3.74z"/><path d="M10.77 2.07a8.7 8.7 0 108.7 8.7 8.69 8.69 0 00-8.7-8.7zm0 1a7.71 7.71 0 017.7 7.7 8.17 8.17 0 01-.2 1.72h-3.4l-.95-1.2a.47.47 0 00-.42-.18.49.49 0 00-.4.24L11.57 14 9.25 8.37a.5.5 0 00-.93 0l-1.93 5.11-.57-.79a.52.52 0 00-.41-.21H3.27a7.56 7.56 0 01-.2-1.72 7.7 7.7 0 017.7-7.69zm0 15.4a7.72 7.72 0 01-7.2-5h1.58l1 1.34a.51.51 0 00.47.21.52.52 0 00.4-.32L8.8 9.92 11 15.3a.49.49 0 00.43.31.48.48 0 00.43-.25l1.68-2.89.64.81a.49.49 0 00.39.19h3.33a7.71 7.71 0 01-7.13 5z" class="_product-alert-triggered_svg_cls-1"/><rect width="1.26" height=".89" x="10.2" y="7.16" class="_product-alert-triggered_svg_cls-1" rx=".2" transform="rotate(-29.12 10.828 7.6)"/></symbol><symbol id="_sprite-product-app" fill="none" viewBox="0 0 24 24"><path fill="#CEE0FA" d="M20.23 4H3.5a1 1 0 00-1 1v13.68a1 1 0 001 1h16.73a1 1 0 001-1V5a1 1 0 00-1-1z"/><path fill="#fff" d="M20.75 4.17H3.13a.5.5 0 00-.5.5v2.5a.5.5 0 00.5.5h17.62a.5.5 0 00.5-.5v-2.5a.5.5 0 00-.5-.5z"/><path fill="#003F99" d="M4.44 6.27a.39.39 0 100-.78.39.39 0 000 .78zm1.33 0a.39.39 0 100-.78.39.39 0 000 .78zm1.32 0a.39.39 0 100-.78.39.39 0 000 .78zM7 14.08a.16.16 0 01-.09-.14v-.66a.16.16 0 01.09-.14l3.31-1.41a.071.071 0 01.066.003.07.07 0 01.034.057v.65a.17.17 0 01-.1.14l-2.49 1v.08l2.49 1a.17.17 0 01.1.13v.65a.07.07 0 01-.03.064.07.07 0 01-.07.006L7 14.08zm3.75 2.29c-.06 0-.09 0-.07-.09L12.46 11a.15.15 0 01.14-.1h.64a.071.071 0 01.064.03.07.07 0 01.006.07l-1.78 5.32a.15.15 0 01-.13.09l-.65-.04zm2.91-.89c-.05 0-.09 0-.09-.07v-.65a.15.15 0 01.09-.13l2.5-1c.06 0 .06-.05 0-.08l-2.5-1a.16.16 0 01-.09-.14v-.65a.06.06 0 01.09-.06L17 13.14a.16.16 0 01.09.14v.66a.16.16 0 01-.09.14l-3.34 1.4z"/><path fill="#003F99" d="M20.5 3.5h-17A1.5 1.5 0 002 5v14a1.5 1.5 0 001.5 1.5h17A1.5 1.5 0 0022 19V5a1.5 1.5 0 00-1.5-1.5zm-17 1h17a.5.5 0 01.5.5v2.31H3V5a.5.5 0 01.5-.5zm17 15h-17A.5.5 0 013 19V8.31h18V19a.5.5 0 01-.5.5z"/></symbol><symbol id="_sprite-product-autoscaling-node-pool" fill="none" viewBox="0 0 23 21"><path fill="#003F99" d="M9.536 17.797h10.607l-1.583 1.557a.555.555 0 000 .766.52.52 0 00.383.153.52.52 0 00.383-.153l2.502-2.502a.353.353 0 00.076-.102c.026-.025.026-.05.051-.076v-.026c0-.025.026-.051.026-.077a.285.285 0 000-.204c0-.025 0-.05-.026-.076v-.026c0-.025-.025-.05-.025-.076l-.026-.026a55.284 55.284 0 00-.076-.076l-2.502-2.502a.52.52 0 00-.383-.153.52.52 0 00-.536.536c0 .153.051.28.153.383l1.583 1.557H9.536A.54.54 0 009 17.21c0 .357.23.587.536.587z"/><path fill="#003F99" d="M10.464 16.673H1.857l1.583-1.557a.555.555 0 000-.766.52.52 0 00-.383-.153.52.52 0 00-.383.153l-2.502 2.5a.396.396 0 00-.076.102c-.026.026-.026.052-.051.077v.026c0 .025-.026.05-.026.076a.284.284 0 000 .204c0 .026 0 .052.026.077v.026c0 .025.025.05.025.076l.026.026.076.076 2.502 2.502a.52.52 0 00.383.153.52.52 0 00.536-.536.52.52 0 00-.153-.383l-1.583-1.557h8.607A.54.54 0 0011 17.26c0-.358-.23-.587-.536-.587z"/><mask id="_product-autoscaling-node-pool_svg_a" width="8" height="12" x="15" y="0" maskUnits="userSpaceOnUse"><path fill="#C4C4C4" d="M15 0h8v12h-8z"/></mask><g mask="url(#_product-autoscaling-node-pool_svg_a)"><path stroke="#003F99" stroke-dasharray="2 2" d="M17 10.5a4.52 4.52 0 01-.879-.086l-.097.49a4.97 4.97 0 01-1.802-.746l.278-.416A4.525 4.525 0 0113.258 8.5l-.416.278a4.97 4.97 0 01-.747-1.802l.49-.097a4.52 4.52 0 010-1.758l-.49-.097a4.97 4.97 0 01.747-1.802l.416.278A4.525 4.525 0 0114.5 2.258l-.278-.416a4.972 4.972 0 011.802-.747l.097.49a4.525 4.525 0 011.758 0l.097-.49c.656.13 1.266.388 1.802.747l-.278.416c.49.328.914.751 1.242 1.242l.416-.278a4.97 4.97 0 01.747 1.802l-.49.097a4.52 4.52 0 010 1.758l.49.097a4.97 4.97 0 01-.747 1.802l-.416-.278c-.328.49-.751.914-1.242 1.242l.278.416a4.97 4.97 0 01-1.802.747l-.097-.49A4.52 4.52 0 0117 10.5z"/></g><path fill="#fff" stroke="#003F99" d="M15.5 6a4.5 4.5 0 11-9 0 4.5 4.5 0 019 0z"/><path fill="#CEE0FA" stroke="#003F99" d="M9.5 6a4.5 4.5 0 11-9 0 4.5 4.5 0 019 0z"/></symbol><symbol id="_sprite-product-certificate" viewBox="0 0 24 24"><defs><style>._product-certificate_svg_cls-2{fill:#003f99}</style></defs><rect width="16" height="16" x="4.01" y="4.04" fill="#fff" rx="1"/><path d="M19 4a1 1 0 011 1v14a1 1 0 01-1 1H5a1 1 0 01-1-1V5a1 1 0 011-1h14m0-1H5a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2V5a2 2 0 00-2-2z" class="_product-certificate_svg_cls-2"/><circle cx="16.36" cy="13.55" r="1.53" class="_product-certificate_svg_cls-2"/><path d="M17.49 17.89l-1.13-.87-1.14.87v-1.82h2.27v1.82zM5.44 5.92h13v1h-13zm0 2.62h10.5v1H5.44zm0 2.62h6.5v1h-6.5zm0 2.62h3.59v1H5.44zm0 2.63h2.1v1h-2.1z" class="_product-certificate_svg_cls-2"/></symbol><symbol id="_sprite-product-container" fill="none" viewBox="0 0 32 32"><path fill="#CEE0FA" fill-rule="evenodd" d="M17.984 4.145L4.81 10.916A1.367 1.367 0 004 12.18v10.44c0 .548.32 1.042.811 1.252l7.825 3.984c.441.192.939.192 1.38 0L27.2 21.073a1.38 1.38 0 00.8-1.264V9.37a1.367 1.367 0 00-.811-1.264l-7.825-3.972a1.781 1.781 0 00-1.38.011z" clip-rule="evenodd"/><path fill="#003F99" fill-rule="evenodd" d="M17.72 3.532a2.448 2.448 0 011.897-.015l.025.01 7.833 3.977a2.034 2.034 0 011.192 1.867V19.81a2.046 2.046 0 01-1.176 1.864L14.302 28.46l-.02.008a2.394 2.394 0 01-1.912 0l-.019-.008-7.825-3.984a2.023 2.023 0 01-1.193-1.856v-5.952l.099-3 .098-3s-.197 0-.197.666V12l.022 4 .175-5.333m0 0L17.7 3.54l.02-.009m10.947 5.84L28 9.37l.667.001zM18.265 4.75L5.076 11.333l-.41.667c-.24.104 0-.116 0 .178V12v10.62c0 .29.17.537.407.64l.02.008 7.825 3.984c.262.108.553.108.815 0l13.177-6.78.015-.006a.713.713 0 00.408-.655V9.367a.7.7 0 00-.41-.65l-.018-.007-7.816-3.968c-.266-.103-.56-.1-.824.008z" clip-rule="evenodd"/><path fill="#fff" d="M4.62 12.567l8.845 4.476v10.604l-8.49-4.513a.667.667 0 01-.354-.588v-9.979z"/><path fill="#003F99" fill-rule="evenodd" d="M12.799 27.96V15.967h1.333V27.96h-1.333zm-4.938-2.455V13.708h1.334v11.797H7.86z" clip-rule="evenodd"/><path fill="#003F99" fill-rule="evenodd" d="M27.949 9.528L14.234 16.59l-.017.008a1.925 1.925 0 01-1.574 0l-.016-.007-8.929-4.535.604-1.19 8.897 4.52a.592.592 0 00.46 0l13.68-7.043.61 1.185zm-10.122 7.646a.667.667 0 01.663.67l-.026 4.497a.666.666 0 11-1.333-.008l.025-4.496a.666.666 0 01.67-.663zM6.552 18.756a.65.65 0 01.881-.305l2.676 1.333c.33.165.47.568.313.9a.65.65 0 01-.881.306l-2.676-1.334a.684.684 0 01-.313-.9zM21.18 15.19a.667.667 0 01.662.67l-.025 4.498a.666.666 0 11-1.334-.008l.026-4.497a.666.666 0 01.67-.663zm3.41-1.862a.667.667 0 01.663.67l-.025 4.497a.666.666 0 11-1.333-.008l.025-4.497a.666.666 0 01.67-.662z" clip-rule="evenodd"/></symbol><symbol id="_sprite-product-control-panel" fill="none" viewBox="0 0 24 24"><path fill="#CEE0FA" stroke="#003F99" stroke-linejoin="round" d="M13.5 14.794h7V20.5h-7zM3.5 3.5h7v5.706h-7zm0 8.471h7V20.5h-7zm10-8.471h7v8.529h-7z"/></symbol><symbol id="_sprite-product-cost-tag" fill="none" viewBox="0 0 16 16"><path fill="#CEE0FA" stroke="#003F99" d="M2.5 6.705h0V2.5h4.15a.334.334 0 01.227.094l6.53 6.536s0 0 0 0a.32.32 0 010 .452l-3.84 3.854-.002.002a.315.315 0 01-.446 0l-.002-.003-6.524-6.502v-.001a.32.32 0 01-.093-.227z"/><path fill="#003F99" d="M5.21 4.67a.54.54 0 10-.123 1.073.54.54 0 00.123-1.073zm3.134 5.565a1.398 1.398 0 001.73.2l.254.254a.257.257 0 00.363-.363l-.237-.236a1.407 1.407 0 00.284-.915 1.243 1.243 0 00-.532-.969 1.19 1.19 0 00-1.046-.16 1.58 1.58 0 00-.486.264L7.63 7.267a.887.887 0 01.988.185.257.257 0 10.363-.363 1.394 1.394 0 00-.992-.41c-.265 0-.519.072-.738.209l-.254-.254a.257.257 0 00-.363.363l.237.237c-.197.26-.3.584-.284.914.02.394.213.747.532.97a1.19 1.19 0 001.046.159c.167-.053.33-.142.486-.263l1.043 1.043a.887.887 0 01-.988-.185.257.257 0 00-.363.363zm.97-1.699a.68.68 0 01.598.091c.188.13.302.34.313.573a.89.89 0 01-.14.522L9.042 8.677a.966.966 0 01.274-.141zm-1.303.252a.68.68 0 01-.597-.092.734.734 0 01-.313-.572.892.892 0 01.14-.522l1.044 1.045a.962.962 0 01-.274.14z"/></symbol><symbol id="_sprite-product-credits" fill="none" viewBox="0 0 32 24"><g clip-path="url(#_product-credits_svg_clip0)"><path fill="#ABD0FF" stroke="#0069FF" stroke-miterlimit="10" d="M9.366 6.244H7.96c-.39 0-.78-.234-1.015-.546L4.761 2.263C4.293 1.483 4.839.39 5.775.39h5.698c.937 0 1.483 1.015 1.015 1.873l-2.186 3.435c-.156.312-.546.546-.936.546z"/><path fill="#fff" stroke="#0069FF" stroke-miterlimit="10" d="M14.049 23.337H3.199a2.798 2.798 0 01-2.809-2.81v-7.883a7.245 7.245 0 017.26-7.259H9.6a7.245 7.245 0 017.26 7.259v7.883a2.798 2.798 0 01-2.81 2.81z"/><path fill="#0069FF" d="M6.166 16.703L6.868 16c.39.468.78.78 1.327.937V15.14c-.624-.078-1.093-.312-1.405-.624-.312-.312-.468-.702-.468-1.249 0-.468.156-.858.546-1.17.39-.313.78-.469 1.327-.547v-1.014h.859v1.014c.702.078 1.248.39 1.795.937l-.703.78c-.312-.39-.702-.624-1.014-.702v1.717c.702.078 1.17.312 1.483.624.312.313.468.78.468 1.327 0 .468-.156.859-.546 1.17-.39.313-.859.547-1.483.547v.937h-.859v-.937c-.859-.234-1.483-.624-2.03-1.248zm1.17-3.59c0 .39.235.702.781.78v-1.561c-.234 0-.468.156-.624.312-.078.156-.157.312-.157.468zm1.718 3.746a.99.99 0 00.702-.313A.709.709 0 009.99 16c0-.468-.312-.78-.936-.858v1.717z"/><path fill="#ABD0FF" d="M15.22 18.654v2.888c0 1.014.78 1.795 1.795 1.795h6.244c1.014 0 1.795-.78 1.795-1.795v-2.888"/><path stroke="#0069FF" stroke-miterlimit="10" d="M15.22 18.654v2.888c0 1.014.78 1.795 1.795 1.795h6.244c1.014 0 1.795-.78 1.795-1.795v-2.888"/><path fill="#ABD0FF" d="M15.22 15.922v2.888c0 1.014.78 1.795 1.795 1.795h6.244c1.014 0 1.795-.78 1.795-1.795v-2.888"/><path stroke="#0069FF" stroke-miterlimit="10" d="M15.22 15.922v2.888c0 1.014.78 1.795 1.795 1.795h6.244c1.014 0 1.795-.78 1.795-1.795v-2.888"/><path fill="#ABD0FF" d="M15.22 13.19v2.888c0 1.015.78 1.795 1.795 1.795h6.244c1.014 0 1.795-.78 1.795-1.795V13.19"/><path stroke="#0069FF" stroke-miterlimit="10" d="M15.22 13.19v2.888c0 1.015.78 1.795 1.795 1.795h6.244c1.014 0 1.795-.78 1.795-1.795V13.19"/><path fill="#fff" stroke="#0069FF" stroke-miterlimit="10" d="M23.337 15.22H16.78c-.936 0-1.639-.703-1.639-1.64v-.312c0-.936.703-1.639 1.64-1.639h6.556c.936 0 1.639.703 1.639 1.64v.312c0 .858-.703 1.639-1.64 1.639z"/><path fill="#ABD0FF" d="M21.776 18.654v2.887c0 1.015.78 1.796 1.795 1.796h6.244c1.014 0 1.795-.78 1.795-1.796v-2.887"/><path stroke="#0069FF" stroke-miterlimit="10" d="M21.776 18.654v2.887c0 1.015.78 1.796 1.795 1.796h6.244c1.014 0 1.795-.78 1.795-1.796v-2.887"/><path fill="#ABD0FF" d="M21.776 15.922v2.888c0 1.014.78 1.795 1.795 1.795h6.244c1.014 0 1.795-.78 1.795-1.795v-2.888"/><path stroke="#0069FF" stroke-miterlimit="10" d="M21.776 15.922v2.888c0 1.014.78 1.795 1.795 1.795h6.244c1.014 0 1.795-.78 1.795-1.795v-2.888"/><path fill="#fff" stroke="#0069FF" stroke-miterlimit="10" d="M29.97 17.873h-6.555c-.937 0-1.64-.702-1.64-1.639v-.312c0-.937.703-1.639 1.64-1.639h6.556c.936 0 1.639.702 1.639 1.639v.312c0 .937-.703 1.64-1.64 1.64z"/><path stroke="#0069FF" stroke-miterlimit="10" d="M29.268 7.024v3.903m-1.951-1.951h3.902M20.683 1.561v3.902m-1.951-1.951h3.902"/></g><defs><clipPath id="_product-credits_svg_clip0"><path fill="#fff" d="M0 0h32v23.727H0z"/></clipPath></defs></symbol><symbol id="_sprite-product-dbaas-primary-2-standby" viewBox="0 0 24 24"><defs><style>._product-dbaas-primary-2-standby_svg_cls-2{fill:#cee0fa}._product-dbaas-primary-2-standby_svg_cls-3{fill:#003f99}._product-dbaas-primary-2-standby_svg_cls-4{fill:#fff}</style></defs><g opacity=".5"><ellipse cx="15.87" cy="11.94" class="_product-dbaas-primary-2-standby_svg_cls-2" rx="4.04" ry="2.19"/><path d="M15.87 9.75c2.23 0 4 1 4 2.19s-1.81 2.19-4 2.19-4-1-4-2.19 1.81-2.19 4-2.19m0-.64c-2.63 0-4.68 1.24-4.68 2.83s2.05 2.83 4.68 2.83 4.68-1.25 4.68-2.83-2.06-2.83-4.68-2.83z" class="_product-dbaas-primary-2-standby_svg_cls-3"/><path d="M11.83 10.06h8.08v1.88h-8.08z" class="_product-dbaas-primary-2-standby_svg_cls-2"/><ellipse cx="15.87" cy="9.43" class="_product-dbaas-primary-2-standby_svg_cls-2" rx="4.04" ry="2.19"/><path d="M11.83 9.43c0-1.21 1.81-2.19 4-2.19m0 0c2.23 0 4 1 4 2.19s-1.81 2.19-4 2.19-4-1-4-2.19m-.45 0c0 .26-.14.51 0 .75.54 1.2 2.33 2.06 4.52 2.06s3.74-.75 4.39-1.83a3.64 3.64 0 00-.06-2.09 5.26 5.26 0 00-4.36-1.72c-2.2 0-4 .87-4.53 2.09-.1.24 0 .5 0 .76" class="_product-dbaas-primary-2-standby_svg_cls-3"/><path d="M11.83 9.43h8.08V7.56h-8.08v1.87" class="_product-dbaas-primary-2-standby_svg_cls-2"/><ellipse cx="15.87" cy="6.84" class="_product-dbaas-primary-2-standby_svg_cls-2" rx="4.04" ry="2.19"/><path d="M15.87 4.65c2.23 0 4 1 4 2.19S18.1 9 15.87 9s-4-1-4-2.19 1.81-2.19 4-2.19m0-.64c-2.14 0-3.89.82-4.48 2a3.72 3.72 0 000 1.66c.57 1.18 2.34 2 4.5 2s3.8-.79 4.43-1.9a3.7 3.7 0 000-1.87C19.67 4.79 18 4 15.87 4z" class="_product-dbaas-primary-2-standby_svg_cls-3"/><path d="M11.83 4.96h8.08v1.88h-8.08z" class="_product-dbaas-primary-2-standby_svg_cls-2"/><ellipse cx="15.87" cy="4.53" class="_product-dbaas-primary-2-standby_svg_cls-4" rx="4.04" ry="1.85"/><path d="M11.83 9.43V5.8a6.08 6.08 0 004 1.22 6.1 6.1 0 004-1.21v6.25h.64V4.53c0-1.42-2-2.5-4.68-2.5s-4.68 1.08-4.68 2.5v7.53h.64V9.43m4-3c-2.23 0-4-.83-4-1.85s1.81-1.85 4-1.85 4 .82 4 1.85c.12.98-1.67 1.8-3.88 1.8z" class="_product-dbaas-primary-2-standby_svg_cls-3"/><ellipse cx="8.13" cy="15.34" class="_product-dbaas-primary-2-standby_svg_cls-2" rx="4.04" ry="2.19"/><path d="M8.13 13.15c2.23 0 4 1 4 2.19s-1.81 2.19-4 2.19-4.05-1-4.05-2.19 1.81-2.19 4.05-2.19m0-.64c-2.63 0-4.69 1.25-4.69 2.83s2.06 2.83 4.69 2.83 4.68-1.24 4.68-2.83-2.06-2.83-4.68-2.83z" class="_product-dbaas-primary-2-standby_svg_cls-3"/><path d="M4.08 13.47h8.08v1.88H4.08z" class="_product-dbaas-primary-2-standby_svg_cls-2"/><ellipse cx="8.13" cy="12.84" class="_product-dbaas-primary-2-standby_svg_cls-2" rx="4.04" ry="2.19"/><path d="M4.08 12.84c0-1.21 1.81-2.19 4.05-2.19m0 0c2.23 0 4 1 4 2.19S10.36 15 8.13 15s-4.05-1-4.05-2.19m-.44 0c0 .27-.14.51 0 .76.54 1.2 2.33 2.06 4.52 2.06 2 0 3.74-.75 4.39-1.84a3.64 3.64 0 00-.06-2.09A5.28 5.28 0 008.13 10c-2.2 0-4 .87-4.53 2.09-.1.23 0 .49 0 .75" class="_product-dbaas-primary-2-standby_svg_cls-3"/><path d="M4.08 12.84h8.09v-1.88H4.08v1.88" class="_product-dbaas-primary-2-standby_svg_cls-2"/><ellipse cx="8.13" cy="10.24" class="_product-dbaas-primary-2-standby_svg_cls-2" rx="4.04" ry="2.19"/><path d="M8.13 8.05c2.23 0 4 1 4 2.19s-1.81 2.19-4 2.19-4.05-1-4.05-2.19 1.81-2.19 4.05-2.19m0-.64c-2.14 0-3.89.82-4.48 2a3.72 3.72 0 000 1.66c.56 1.18 2.34 2 4.5 2s3.8-.78 4.43-1.89a3.59 3.59 0 000-1.87c-.62-1.12-2.35-1.9-4.42-1.9z" class="_product-dbaas-primary-2-standby_svg_cls-3"/><path d="M4.08 8.37h8.08v1.88H4.08z" class="_product-dbaas-primary-2-standby_svg_cls-2"/><ellipse cx="8.13" cy="7.93" class="_product-dbaas-primary-2-standby_svg_cls-4" rx="4.04" ry="1.85"/><path d="M4.09 12.84V9.21a6.06 6.06 0 004 1.21 6.05 6.05 0 004-1.21v6.25h.64V8c0-1.42-2-2.49-4.68-2.49s-4.61 1-4.61 2.42v7.53h.64v-2.62m4-3.06c-2.19 0-4-.78-4-1.85s1.81-1.85 4.05-1.85 4 .83 4 1.85c0 1.07-1.79 1.85-4 1.85z" class="_product-dbaas-primary-2-standby_svg_cls-3"/></g><ellipse cx="14.78" cy="19.17" class="_product-dbaas-primary-2-standby_svg_cls-2" rx="4.04" ry="2.19"/><path d="M14.78 17c2.24 0 4 1 4 2.19s-1.81 2.19-4 2.19-4-1-4-2.19 1.81-2.19 4-2.19m0-.64c-2.62 0-4.68 1.24-4.68 2.83S12.16 22 14.78 22s4.69-1.24 4.69-2.83-2.06-2.83-4.69-2.83z" class="_product-dbaas-primary-2-standby_svg_cls-3"/><path d="M10.74 17.29h8.08v1.88h-8.08z" class="_product-dbaas-primary-2-standby_svg_cls-2"/><ellipse cx="14.78" cy="16.67" class="_product-dbaas-primary-2-standby_svg_cls-2" rx="4.04" ry="2.19"/><path d="M10.74 16.67c0-1.21 1.81-2.19 4-2.19m0 0c2.24 0 4 1 4 2.19s-1.81 2.19-4 2.19-4-1-4-2.19m-.44 0c0 .26-.14.51 0 .75.54 1.2 2.33 2.07 4.51 2.07s3.75-.76 4.4-1.84a3.64 3.64 0 00-.06-2.09 5.28 5.28 0 00-4.34-1.74c-2.19 0-4 .88-4.52 2.09-.1.24 0 .5 0 .76" class="_product-dbaas-primary-2-standby_svg_cls-3"/><path d="M10.74 16.66h8.09v-1.87h-8.09v1.87" class="_product-dbaas-primary-2-standby_svg_cls-2"/><ellipse cx="14.78" cy="14.07" class="_product-dbaas-primary-2-standby_svg_cls-2" rx="4.04" ry="2.19"/><path d="M14.78 11.88c2.24 0 4 1 4 2.19s-1.81 2.19-4 2.19-4-1-4-2.19 1.81-2.19 4-2.19m0-.64c-2.13 0-3.89.82-4.47 2a3.72 3.72 0 000 1.66c.56 1.18 2.34 2 4.49 2s3.81-.78 4.44-1.9a3.59 3.59 0 000-1.87c-.62-1.11-2.35-1.89-4.43-1.89z" class="_product-dbaas-primary-2-standby_svg_cls-3"/><path d="M10.74 12.19h8.08v1.88h-8.08z" class="_product-dbaas-primary-2-standby_svg_cls-2"/><ellipse cx="14.78" cy="11.76" class="_product-dbaas-primary-2-standby_svg_cls-4" rx="4.04" ry="1.85"/><path d="M10.75 16.67V13a6.1 6.1 0 004 1.21 6.13 6.13 0 004-1.21v6.25h.64v-7.49c0-1.42-2-2.49-4.69-2.49s-4.68 1.07-4.68 2.49v7.53h.64v-2.62m4-3.06c-2.23 0-4-.83-4-1.85s1.81-1.85 4-1.85 4 .83 4 1.85c.13 1.03-1.66 1.85-3.88 1.85z" class="_product-dbaas-primary-2-standby_svg_cls-3"/></symbol><symbol id="_sprite-product-dbaas-primary-standby" viewBox="0 0 24 24"><defs><style>._product-dbaas-primary-standby_svg_cls-2{fill:#cee0fa}._product-dbaas-primary-standby_svg_cls-3{fill:#003f99}._product-dbaas-primary-standby_svg_cls-4{fill:#fff}</style></defs><g opacity=".5"><ellipse cx="8.54" cy="13.45" class="_product-dbaas-primary-standby_svg_cls-2" rx="4.74" ry="2.57"/><path d="M8.54 10.88c2.61 0 4.73 1.15 4.73 2.57S11.15 16 8.54 16 3.8 14.87 3.8 13.45s2.12-2.57 4.74-2.57m0-.75c-3.08 0-5.49 1.46-5.49 3.32s2.41 3.32 5.49 3.32S14 15.31 14 13.45s-2.41-3.32-5.48-3.32z" class="_product-dbaas-primary-standby_svg_cls-3"/><path d="M3.8 11.25h9.48v2.2H3.8z" class="_product-dbaas-primary-standby_svg_cls-2"/><ellipse cx="8.54" cy="10.52" class="_product-dbaas-primary-standby_svg_cls-2" rx="4.74" ry="2.57"/><path d="M3.8 10.52C3.8 9.1 5.92 8 8.54 8m0 0c2.61 0 4.73 1.15 4.73 2.57s-2.12 2.56-4.73 2.56-4.74-1.2-4.74-2.61m-.52 0c0 .31-.16.6 0 .88.64 1.41 2.73 2.42 5.3 2.42 2.39 0 4.39-.88 5.15-2.15a4.19 4.19 0 00-.08-2.45c-.81-1.2-2.75-2-5.07-2-2.58 0-4.69 1-5.31 2.45-.12.27 0 .58 0 .88" class="_product-dbaas-primary-standby_svg_cls-3"/><path d="M3.8 10.52h9.47v-2.2H3.8v2.2" class="_product-dbaas-primary-standby_svg_cls-2"/><ellipse cx="8.54" cy="7.47" class="_product-dbaas-primary-standby_svg_cls-2" rx="4.74" ry="2.57"/><path d="M8.54 4.9c2.61 0 4.73 1.15 4.73 2.57S11.15 10 8.54 10 3.8 8.89 3.8 7.47 5.92 4.9 8.54 4.9m0-.75C6 4.15 4 5.12 3.29 6.47a4.15 4.15 0 000 2C3.93 9.8 6 10.79 8.54 10.79s4.46-.92 5.19-2.22a4.32 4.32 0 000-2.2C13 5.07 11 4.15 8.54 4.15z" class="_product-dbaas-primary-standby_svg_cls-3"/><path d="M3.8 5.27h9.48v2.2H3.8z" class="_product-dbaas-primary-standby_svg_cls-2"/><ellipse cx="8.54" cy="4.76" class="_product-dbaas-primary-standby_svg_cls-4" rx="4.74" ry="2.17"/><path d="M3.8 10.52V6.26a7.2 7.2 0 004.74 1.42 7.19 7.19 0 004.73-1.42v7.33H14V4.76c0-1.66-2.36-2.92-5.48-2.92S3.05 3.1 3.05 4.76v8.83h.75v-3.07m4.74-3.59C5.92 6.93 3.8 6 3.8 4.76s2.12-2.17 4.74-2.17 4.73 1 4.73 2.17C13.23 6 11.13 6.93 8.54 6.93z" class="_product-dbaas-primary-standby_svg_cls-3"/></g><ellipse cx="15.46" cy="18.68" class="_product-dbaas-primary-standby_svg_cls-2" rx="4.74" ry="2.57"/><path d="M15.46 16.11c2.62 0 4.74 1.15 4.74 2.57s-2.12 2.57-4.74 2.57-4.73-1.15-4.73-2.57 2.12-2.57 4.73-2.57m0-.75c-3.07 0-5.48 1.46-5.48 3.32S12.39 22 15.46 22 21 20.54 21 18.68s-2.41-3.32-5.49-3.32z" class="_product-dbaas-primary-standby_svg_cls-3"/><path d="M10.73 16.48h9.48v2.2h-9.48z" class="_product-dbaas-primary-standby_svg_cls-2"/><ellipse cx="15.46" cy="15.75" class="_product-dbaas-primary-standby_svg_cls-2" rx="4.74" ry="2.57"/><path d="M10.73 15.75c0-1.42 2.12-2.57 4.73-2.57m0 0c2.62 0 4.74 1.15 4.74 2.57s-2.12 2.56-4.74 2.56-4.73-1.15-4.73-2.56m-.52 0c0 .31-.17.6 0 .88.63 1.42 2.73 2.42 5.29 2.42 2.4 0 4.39-.88 5.16-2.15a4.28 4.28 0 00-.08-2.45c-.81-1.2-2.76-2-5.08-2-2.57 0-4.68 1-5.3 2.45-.12.27.05.58.05.88" class="_product-dbaas-primary-standby_svg_cls-3"/><path d="M10.73 15.75h9.47v-2.2h-9.47v2.2" class="_product-dbaas-primary-standby_svg_cls-2"/><ellipse cx="15.46" cy="12.7" class="_product-dbaas-primary-standby_svg_cls-2" rx="4.74" ry="2.57"/><path d="M15.46 10.13c2.62 0 4.74 1.15 4.74 2.57s-2.12 2.57-4.74 2.57-4.73-1.15-4.73-2.57 2.12-2.57 4.73-2.57m0-.75c-2.5 0-4.56 1-5.24 2.33a4.24 4.24 0 000 1.94C10.85 15 12.93 16 15.46 16s4.47-.92 5.2-2.22a4.21 4.21 0 000-2.2c-.73-1.3-2.75-2.22-5.19-2.22z" class="_product-dbaas-primary-standby_svg_cls-3"/><path d="M10.73 10.5h9.48v2.2h-9.48z" class="_product-dbaas-primary-standby_svg_cls-2"/><ellipse cx="15.46" cy="9.99" class="_product-dbaas-primary-standby_svg_cls-4" rx="4.74" ry="2.17"/><path d="M10.73 15.75v-4.26a7.15 7.15 0 004.73 1.42 7.15 7.15 0 004.73-1.42v7.33H21V10c0-1.66-2.36-2.92-5.49-2.92S10 8.33 10 10a.5.5 0 000 .12v8.71h.75v-3.08m4.73-3.59c-2.61 0-4.73-1-4.73-2.17s2.12-2.17 4.73-2.17S20.2 8.8 20.2 10c-.04 1.21-2.14 2.16-4.74 2.16z" class="_product-dbaas-primary-standby_svg_cls-3"/></symbol><symbol id="_sprite-product-dbaas-primary" viewBox="0 0 24 24"><defs><style>._product-dbaas-primary_svg_cls-1{fill:#cee0fa}._product-dbaas-primary_svg_cls-2{fill:#003f99}</style></defs><ellipse cx="12" cy="17.53" class="_product-dbaas-primary_svg_cls-1" rx="6.31" ry="3.42"/><path d="M12 14.11c3.48 0 6.31 1.53 6.31 3.42S15.48 21 12 21s-6.31-1.53-6.31-3.42 2.82-3.47 6.31-3.47m0-1c-4.1 0-7.31 1.94-7.31 4.42S7.9 22 12 22s7.31-1.94 7.31-4.42-3.21-4.47-7.31-4.47z" class="_product-dbaas-primary_svg_cls-2"/><path d="M5.69 14.6h12.63v2.93H5.69z" class="_product-dbaas-primary_svg_cls-1"/><ellipse cx="12" cy="13.62" class="_product-dbaas-primary_svg_cls-1" rx="6.31" ry="3.42"/><path d="M12 10.2c3.48 0 6.31 1.53 6.31 3.42S15.48 17 12 17s-6.31-1.53-6.31-3.42S8.51 10.2 12 10.2m0-1c-3.25 0-5.94 1.22-6.92 3-.26.46.11.93.11 1.44s-.35 1.07-.08 1.54C6.11 16.85 8.78 18 12 18c3.05 0 5.62-1.08 6.72-2.65a2.91 2.91 0 00.28-1.8 2.68 2.68 0 00-.18-1.55c-1.05-1.66-3.67-2.8-6.82-2.8z" class="_product-dbaas-primary_svg_cls-2"/><path d="M5.69 10.69h12.63v2.93H5.69z" class="_product-dbaas-primary_svg_cls-1"/><ellipse cx="12" cy="9.56" class="_product-dbaas-primary_svg_cls-1" rx="6.31" ry="3.42"/><path d="M12 6.14c3.48 0 6.31 1.53 6.31 3.42S15.48 13 12 13s-6.31-1.55-6.31-3.44S8.51 6.14 12 6.14m0-1c-3.14 0-5.75 1.14-6.81 2.78-.33.5-.1 1.06-.1 1.64s-.29.91-.08 1.33C5.92 12.7 8.67 14 12 14c3.13 0 5.74-1.13 6.8-2.77.33-.5.08-1.06.08-1.65s.27-1.07 0-1.55c-1-1.69-3.67-2.87-6.86-2.87z" class="_product-dbaas-primary_svg_cls-2"/><path d="M5.69 6.63h12.63v2.93H5.69z" class="_product-dbaas-primary_svg_cls-1"/><ellipse cx="12" cy="5.96" fill="#fff" rx="6.31" ry="2.89"/><path d="M19.31 6c0-2.22-3.14-3.9-7.31-3.9S4.69 3.74 4.69 6v11.72h1V8A9.62 9.62 0 0012 9.85 9.67 9.67 0 0018.3 8v9.74h1V6.14a1.1 1.1 0 00.01-.14zM12 8.85c-3.49 0-6.31-1.3-6.31-2.85S8.51 3.06 12 3.06s6.31 1.3 6.31 2.9S15.48 8.85 12 8.85z" class="_product-dbaas-primary_svg_cls-2"/></symbol><symbol id="_sprite-product-dbaas-read-only" viewBox="0 0 24 24"><defs><style>._product-dbaas-read-only_svg_cls-1{fill:#cee0fa}._product-dbaas-read-only_svg_cls-2{fill:#003f99}._product-dbaas-read-only_svg_cls-3{fill:#fff}</style></defs><ellipse cx="12" cy="17.53" class="_product-dbaas-read-only_svg_cls-1" rx="6.31" ry="3.42"/><path d="M12 14.11c3.49 0 6.31 1.53 6.31 3.42S15.49 21 12 21s-6.31-1.53-6.31-3.42 2.82-3.47 6.31-3.47m0-1c-4.1 0-7.31 1.94-7.31 4.42S7.9 22 12 22s7.31-1.94 7.31-4.42-3.21-4.47-7.31-4.47z" class="_product-dbaas-read-only_svg_cls-2"/><path d="M5.69 14.6h12.63v2.93H5.69z" class="_product-dbaas-read-only_svg_cls-1"/><ellipse cx="12" cy="13.62" class="_product-dbaas-read-only_svg_cls-3" rx="6.31" ry="3.42"/><path d="M12 10.2c3.49 0 6.31 1.53 6.31 3.42S15.49 17 12 17s-6.31-1.53-6.31-3.42S8.51 10.2 12 10.2m0-1c-3.25 0-5.94 1.22-6.92 3-.25.45.11.92.11 1.43s-.35 1.07-.08 1.55C6.11 16.85 8.78 18 12 18c3.06 0 5.62-1.08 6.73-2.65a3 3 0 00.27-1.8 2.68 2.68 0 00-.18-1.55c-1-1.65-3.67-2.8-6.82-2.8z" class="_product-dbaas-read-only_svg_cls-2"/><path d="M5.69 10.69h12.63v2.93H5.69z" class="_product-dbaas-read-only_svg_cls-3"/><ellipse cx="12" cy="9.56" class="_product-dbaas-read-only_svg_cls-1" rx="6.31" ry="3.42"/><path d="M12 6.14c3.49 0 6.31 1.54 6.31 3.42S15.49 13 12 13s-6.31-1.55-6.31-3.44S8.51 6.14 12 6.14m0-1c-3.13 0-5.75 1.14-6.81 2.78-.32.51-.1 1.06-.1 1.64s-.29.92-.08 1.33C5.92 12.7 8.67 14 12 14c3.13 0 5.74-1.14 6.8-2.77.33-.51.08-1.07.08-1.66s.27-1.07 0-1.55c-1-1.69-3.67-2.87-6.86-2.87z" class="_product-dbaas-read-only_svg_cls-2"/><path d="M5.69 6.64h12.63v2.93H5.69z" class="_product-dbaas-read-only_svg_cls-1"/><ellipse cx="12" cy="5.96" class="_product-dbaas-read-only_svg_cls-3" rx="6.31" ry="2.89"/><path d="M19.31 6c0-2.22-3.14-3.89-7.31-3.89S4.69 3.74 4.69 6v11.72h1V8A9.68 9.68 0 0012 9.85 9.67 9.67 0 0018.3 8v9.74h1V6.14c0-.06.01-.14.01-.14zM12 8.85c-3.49 0-6.31-1.3-6.31-2.85S8.51 3.07 12 3.07 18.31 4.36 18.31 6 15.49 8.85 12 8.85z" class="_product-dbaas-read-only_svg_cls-2"/></symbol><symbol id="_sprite-product-docker" fill="none" viewBox="0 0 32 32"><path fill="#fff" d="M10.667 5.333C10.667 4.597 11.264 4 12 4h4c.736 0 1.333.597 1.333 1.333v4c0 .737-.596 1.334-1.333 1.334h-4a1.333 1.333 0 01-1.333-1.334v-4z"/><path fill="#003F99" fill-rule="evenodd" d="M16 5.333h-4v4h4v-4zM12 4c-.736 0-1.333.597-1.333 1.333v4c0 .737.597 1.334 1.333 1.334h4c.736 0 1.333-.597 1.333-1.334v-4C17.333 4.597 16.737 4 16 4h-4z" clip-rule="evenodd"/><path fill="#fff" d="M10.667 10.667c0-.737.597-1.334 1.333-1.334h4c.736 0 1.333.597 1.333 1.334v4c0 .736-.596 1.333-1.333 1.333h-4a1.333 1.333 0 01-1.333-1.333v-4z"/><path fill="#003F99" fill-rule="evenodd" d="M16 10.667h-4v4h4v-4zm-4-1.334c-.736 0-1.333.597-1.333 1.334v4c0 .736.597 1.333 1.333 1.333h4c.736 0 1.333-.597 1.333-1.333v-4c0-.737-.596-1.334-1.333-1.334h-4z" clip-rule="evenodd"/><path fill="#fff" d="M5.333 10.667c0-.737.597-1.334 1.334-1.334h4c.736 0 1.333.597 1.333 1.334v4c0 .736-.597 1.333-1.333 1.333h-4a1.333 1.333 0 01-1.334-1.333v-4z"/><path fill="#003F99" fill-rule="evenodd" d="M10.667 10.667h-4v4h4v-4zm-4-1.334c-.737 0-1.334.597-1.334 1.334v4c0 .736.597 1.333 1.334 1.333h4c.736 0 1.333-.597 1.333-1.333v-4c0-.737-.597-1.334-1.333-1.334h-4z" clip-rule="evenodd"/><path fill="#CEE0FA" fill-rule="evenodd" d="M23.66 13.042a4.678 4.678 0 00-.255-1.143c-.555-1.56-2.735-2.21-2.735-2.21s-1.28 1.88-.725 3.441c.408 1.146 1.177 1.984 1.934 2.215-.362.334-.992.655-2.073.655H4c0 5.71 1.333 8.815 6.667 10 5.236 1.163 11.114-2.527 13.296-10.168.72.195 1.721.025 2.662-.518 1.435-.828 1.68-3.09 1.68-3.09s-2.081-.918-3.516-.09c-.45.26-.831.573-1.129.908z" clip-rule="evenodd"/><path fill="#003F99" fill-rule="evenodd" d="M24.853 12.098a4.556 4.556 0 00-1.193.944 4.682 4.682 0 00-.255-1.143 2.33 2.33 0 00-.143-.321c-.713-1.33-2.592-1.89-2.592-1.89l.382-1.278.003.001.004.002.01.003.031.01a6.746 6.746 0 01.415.15c.257.103.608.26.985.48.584.34 1.375.912 1.88 1.788 1.058-.503 2.195-.422 2.941-.288a7.579 7.579 0 011.475.428l.03.013.01.004.004.002h.002s.001.001-.537 1.221c0 0-2.02-.892-3.452-.126zm3.452.126l.538-1.22c.532.235.85.786.787 1.364l-1.325-.144zm-3.384 5.007c.805-.06 1.633-.337 2.37-.762 1.128-.651 1.689-1.787 1.966-2.56a7.584 7.584 0 00.367-1.49l.004-.032.002-.011v-.008l-1.325-.144s-.245 2.262-1.68 3.09c-.94.543-1.941.713-2.662.518-2.182 7.64-8.06 11.331-13.296 10.168-4.903-1.09-6.426-3.8-6.64-8.667A30.376 30.376 0 014 16.007V16h15.806a4.8 4.8 0 00.504-.026c.78-.082 1.268-.351 1.57-.63-.4-.12-.803-.411-1.154-.827a4.489 4.489 0 01-.78-1.387c-.556-1.561.724-3.442.724-3.442l.382-1.278a1.334 1.334 0 00-1.484.528l1.102.75-1.102-.75-.002.003-.003.003-.006.01-.018.027a5.607 5.607 0 00-.226.379 7.586 7.586 0 00-.461.994c-.29.767-.599 1.996-.163 3.223.134.376.306.744.513 1.09H4c-.736 0-1.333.596-1.333 1.333 0 2.91.328 5.427 1.528 7.392 1.247 2.042 3.288 3.266 6.182 3.91 5.86 1.302 11.997-2.635 14.544-10.07z" clip-rule="evenodd"/><mask id="_product-docker_svg_a" width="25" height="18" x="4" y="9" maskUnits="userSpaceOnUse"><path fill="#ABD0FF" fill-rule="evenodd" d="M23.66 13.042a4.678 4.678 0 00-.255-1.143c-.555-1.56-2.735-2.211-2.735-2.211s-1.28 1.88-.725 3.442c.408 1.146 1.177 1.984 1.934 2.214-.362.334-.992.656-2.073.656H4c0 5.71 1.333 8.815 6.667 10 5.236 1.163 11.114-2.528 13.296-10.168.72.195 1.721.025 2.662-.518 1.435-.828 1.68-3.09 1.68-3.09s-2.081-.918-3.516-.09a4.56 4.56 0 00-1.129.908z" clip-rule="evenodd"/></mask><g mask="url(#_product-docker_svg_a)"><path fill="#003F99" d="M10.833 19.083a1.75 1.75 0 11-3.5 0 1.75 1.75 0 013.5 0z"/></g></symbol><symbol id="_sprite-product-domain" viewBox="0 0 24 24"><path fill="#cee0fa" d="M12 22A10 10 0 102 12a10 10 0 0010 10z"/><path fill="#003f99" d="M12 2a10 10 0 1010 10A10 10 0 0012 2zm3.9 7.27c3.08.55 5 1.68 5 2.73s-1.94 2.18-5 2.73a25 25 0 00.15-2.73 24.66 24.66 0 00-.15-2.73zm4.88.77a11.61 11.61 0 00-5-1.8 11.71 11.71 0 00-1.79-5A9 9 0 0120.78 10zM12 20.9c-1.05 0-2.18-1.93-2.72-5a24.52 24.52 0 002.72.15 24.52 24.52 0 002.72-.15c-.54 3.1-1.67 5-2.72 5zm0-5.85a23.49 23.49 0 01-2.88-.17 24.48 24.48 0 010-5.76 24.48 24.48 0 015.76 0 23.45 23.45 0 01.17 2.88 23.66 23.66 0 01-.17 2.89 23.49 23.49 0 01-2.88.16zm0-12c1.05 0 2.19 1.95 2.73 5a24.92 24.92 0 00-5.46 0C9.81 5 11 3.07 12 3.07zm-2 .15a11.71 11.71 0 00-1.79 5 11.61 11.61 0 00-5 1.8A9 9 0 0110 3.22zM8.1 14.73c-3.08-.55-5-1.68-5-2.73s1.9-2.18 5-2.73A24.66 24.66 0 008 12a25 25 0 00.1 2.73zM3.22 14a11.66 11.66 0 005 1.8 11.68 11.68 0 001.81 5A9 9 0 013.22 14zM14 20.78a11.43 11.43 0 001.81-5 11.66 11.66 0 005-1.8 9 9 0 01-6.81 6.8z"/></symbol><symbol id="_sprite-product-droplet-snapshot" viewBox="0 0 24 24"><defs><style>._product-droplet-snapshot_svg_cls-1{fill:#003f99}</style></defs><path d="M14 22a7.78 7.78 0 01-7.77-7.77C6.23 10.86 11.45 4.69 14 2c2.55 2.75 7.77 8.86 7.77 12.23A7.78 7.78 0 0114 22z" class="_product-droplet-snapshot_svg_cls-1"/><path d="M14 2c-2.55 2.69-7.77 8.86-7.77 12.23a7.77 7.77 0 1015.54 0c0-3.37-5.22-9.48-7.77-12.23z" class="_product-droplet-snapshot_svg_cls-1"/><path fill="#cee0fa" d="M10.05 21.38a7.3 7.3 0 01-7.29-7.29c0-3.16 4.89-8.94 7.29-11.47 2.39 2.58 7.28 8.31 7.28 11.47a7.3 7.3 0 01-7.28 7.29z"/><path d="M10 3.47c3.41 3.78 6.78 8.37 6.78 10.75a6.77 6.77 0 11-13.54 0c0-2.33 3.38-7 6.76-10.76M10 2c-2.55 2.69-7.77 8.86-7.77 12.23a7.77 7.77 0 1015.54 0c0-3.37-5.22-9.48-7.77-12.23z" class="_product-droplet-snapshot_svg_cls-1"/></symbol><symbol id="_sprite-product-droplet" viewBox="0 0 24 24"><path fill="#cee0fa" d="M12 21.57a7.23 7.23 0 01-7.22-7.23C4.77 11.22 9.62 5.48 12 3c2.37 2.56 7.22 8.24 7.22 11.36A7.23 7.23 0 0112 21.57z"/><path fill="#003f99" d="M12 3.47c3.41 3.78 6.78 8.37 6.78 10.75a6.77 6.77 0 11-13.54 0c0-2.33 3.38-7 6.76-10.76M12 2c-2.56 2.69-7.78 8.86-7.78 12.23a7.77 7.77 0 0015.54 0c0-3.37-5.21-9.48-7.76-12.23z"/></symbol><symbol id="_sprite-product-firewall" viewBox="0 0 24 24"><defs><style>._product-firewall_svg_cls-1{fill:#cee0fa}._product-firewall_svg_cls-3{fill:#003f99}</style></defs><path d="M12 2S8.21 4.79 8.21 7.63a3.79 3.79 0 107.58 0C15.8 4.9 12 2 12 2z" class="_product-firewall_svg_cls-1"/><path fill="#fff" d="M12 6.88s-1.83 1.35-1.83 2.76a1.83 1.83 0 003.66 0c0-1.37-1.83-2.76-1.83-2.76z"/><path d="M12 12a2.33 2.33 0 01-2.33-2.36c0-1.62 1.83-3 2-3.16l.3-.22.3.22c.21.16 2 1.59 2 3.16A2.33 2.33 0 0112 12zm0-4.43a3.45 3.45 0 00-1.33 2.11 1.33 1.33 0 002.66 0A3.61 3.61 0 0012 7.53z" class="_product-firewall_svg_cls-3"/><path d="M3.92 14.46h16.01v6.86H3.92z" class="_product-firewall_svg_cls-1"/><path d="M18.9 13.8H5.1a1.88 1.88 0 00-1.88 1.88v4.44A1.88 1.88 0 005.1 22h13.8a1.88 1.88 0 001.88-1.88v-4.44a1.88 1.88 0 00-1.88-1.88zm0 1a.87.87 0 01.88.88v1.73h-7.44V14.8zm-3.17 3.61V21H8.18v-2.59zM5.1 14.8h6.24v2.61H4.22v-1.73a.87.87 0 01.88-.88zm-.88 5.32v-1.71h3V21H5.1a.87.87 0 01-.88-.88zM18.9 21h-2.17v-2.59h3.05v1.71a.87.87 0 01-.88.88z" class="_product-firewall_svg_cls-3"/></symbol><symbol id="_sprite-product-floating-ip" viewBox="0 0 24 24"><defs><style>._product-floating-ip_svg_cls-1{fill:#cee0fa}</style></defs><path d="M9.34 12.52h-.59v-1.27h.59a10.1 10.1 0 009.6-6.82l1.19.42a11.39 11.39 0 01-10.79 7.67z" class="_product-floating-ip_svg_cls-1"/><circle cx="5.8" cy="12.11" r="3.29" class="_product-floating-ip_svg_cls-1"/><circle cx="19.36" cy="5" r="2.64" class="_product-floating-ip_svg_cls-1"/><path fill="#003f99" d="M19.36 16.36a3.08 3.08 0 00-.61.07 11.34 11.34 0 00-9.22-4.94 3.79 3.79 0 100 1.26A10.1 10.1 0 0117.64 17a2.64 2.64 0 101.72-.64zM5.81 14.91a2.79 2.79 0 112.79-2.79 2.8 2.8 0 01-2.79 2.79z"/></symbol><symbol id="_sprite-product-guided-config" fill="none" viewBox="0 0 40 40"><path fill="#003F99" d="M35.85 14.709h-1.125c-.16-.723-.482-1.285-.803-1.848l.803-.803c.723-.723.723-1.847 0-2.53-.723-.683-1.847-.723-2.53 0l-.803.803c-.433-.309-.913-.475-1.405-.645a16.8 16.8 0 01-.442-.158V8.444a1.818 1.818 0 00-1.848-1.848 1.818 1.818 0 00-1.847 1.848v1.124c-.723.16-1.285.482-1.848.803l-.803-.803c-.723-.723-1.847-.723-2.53 0-.683.723-.723 1.848 0 2.53l.803.804c-.309.433-.475.913-.645 1.404-.051.147-.102.295-.158.443h-1.044a1.818 1.818 0 00-1.847 1.847c0 1.045.803 1.848 1.847 1.848h1.125c.126.568.352 1.038.599 1.486h2.145a5.4 5.4 0 01-1.133-3.334 5.391 5.391 0 015.417-5.416 5.419 5.419 0 015.416 5.416 5.42 5.42 0 01-3.454 5.05v1.951c.668-.168 1.2-.472 1.732-.776l.804.803c.722.723 1.847.723 2.53 0 .682-.722.723-1.847 0-2.53l-.803-.803c.309-.433.475-.913.645-1.405.051-.146.102-.294.158-.442h1.124a1.818 1.818 0 001.848-1.848c0-1.044-.884-1.887-1.928-1.887z"/><path fill="#003F99" d="M23.023 21.215c-.838.356-1.682-1.296-1.682-1.296h2.14s.38.94-.458 1.296zm5.434 1.918c-.367-.834 1.302-1.492 1.302-1.492v1.946s-.936.379-1.302-.454z"/><path fill="#CEE0FA" d="M4 31V21h9l4 5h6l2 5H4z"/><path stroke="#003F99" d="M17 26h6l2 5H4V21h9l4 5zm0 0h-6m-7-8v16"/></symbol><symbol id="_sprite-product-k8s-cluster" viewBox="0 0 24 24"><defs><style>._product-k8s-cluster_svg_cls-1{fill:#003f99}._product-k8s-cluster_svg_cls-2{fill:#fff}</style></defs><path d="M20.37 13.99L13.12 12l5.84-4.39-.6-.8-5.86 4.4V3.92h-1v7.29l-5.82-4.4-.6.8L10.89 12l-7.26 1.99.27.97 7.17-1.98-3.35 6.88.9.44 3.41-7.01 3.35 7 .9-.43L13.01 13l7.1 1.96.26-.97z" class="_product-k8s-cluster_svg_cls-1"/><circle cx="12" cy="3.92" r="1.92" class="_product-k8s-cluster_svg_cls-2"/><path d="M12 3a.92.92 0 11-.92.92A.92.92 0 0112 3m0-1a1.92 1.92 0 101.92 1.92A1.92 1.92 0 0012 2z" class="_product-k8s-cluster_svg_cls-1"/><circle cx="3.92" cy="14.47" r="1.92" class="_product-k8s-cluster_svg_cls-2"/><path d="M3.92 13.55a.93.93 0 11-.92.92.92.92 0 01.92-.92m0-1a1.93 1.93 0 101.92 1.92 1.92 1.92 0 00-1.92-1.92z" class="_product-k8s-cluster_svg_cls-1"/><circle cx="18.66" cy="7.21" r="1.92" class="_product-k8s-cluster_svg_cls-2"/><path d="M18.66 6.29a.92.92 0 11-.92.92.93.93 0 01.92-.92m0-1a1.92 1.92 0 101.93 1.92 1.92 1.92 0 00-1.93-1.92z" class="_product-k8s-cluster_svg_cls-1"/><circle cx="15.83" cy="20.08" r="1.92" class="_product-k8s-cluster_svg_cls-2"/><path d="M15.83 19.16a.92.92 0 11-.92.92.92.92 0 01.92-.92m0-1a1.92 1.92 0 101.92 1.92 1.92 1.92 0 00-1.92-1.92z" class="_product-k8s-cluster_svg_cls-1"/><circle cx="8.17" cy="20.08" r="1.92" class="_product-k8s-cluster_svg_cls-2"/><path d="M8.17 19.16a.92.92 0 11-.92.92.92.92 0 01.92-.92m0-1a1.92 1.92 0 101.92 1.92 1.92 1.92 0 00-1.92-1.92z" class="_product-k8s-cluster_svg_cls-1"/><circle cx="20.08" cy="14.47" r="1.92" class="_product-k8s-cluster_svg_cls-2"/><path d="M20.08 13.55a.93.93 0 11-.92.92.92.92 0 01.92-.92m0-1A1.93 1.93 0 1022 14.47a1.92 1.92 0 00-1.92-1.92z" class="_product-k8s-cluster_svg_cls-1"/><circle cx="5.38" cy="7.21" r="1.92" class="_product-k8s-cluster_svg_cls-2"/><path d="M5.38 6.29a.92.92 0 11-.92.92.92.92 0 01.92-.92m0-1A1.92 1.92 0 107.3 7.21a1.92 1.92 0 00-1.92-1.92z" class="_product-k8s-cluster_svg_cls-1"/><path fill="#cee0fa" d="M12 16a3.83 3.83 0 10-3.83-3.83A3.83 3.83 0 0012 16z"/><path d="M12 16.54a4.33 4.33 0 114.33-4.33A4.33 4.33 0 0112 16.54zm0-7.66a3.33 3.33 0 103.33 3.33A3.33 3.33 0 0012 8.88z" class="_product-k8s-cluster_svg_cls-1"/></symbol><symbol id="_sprite-product-k8s-high-availability" fill="none" viewBox="0 0 32 32"><path fill="#fff" d="M0 0h32v32H0z"/><circle cx="16.266" cy="15.76" r="12.999" fill="#CEE0FA"/><path fill="#003F99" fill-rule="evenodd" d="M24.396 3.661l1.963-2.258.148 2.111.344 4.943.003.045-.045.003-4.943.344-2.11.147 1.963-2.257.841-.968a12.464 12.464 0 00-9.29-1.451C6.563 5.888 2.4 12.555 3.954 19.204c1.556 6.648 8.246 10.775 14.95 9.206 6.018-1.408 9.991-6.924 9.617-12.846a.625.625 0 011.247-.079c.413 6.528-3.963 12.595-10.578 14.142-7.37 1.725-14.738-2.81-16.453-10.138C1.023 12.16 5.615 4.827 12.984 3.103a13.714 13.714 0 0110.23 1.603.62.62 0 01.157.134l1.025-1.179z" clip-rule="evenodd"/><path stroke="#003F99" stroke-width="1.75" d="M9.386 16.172l5.02 5.599 8.98-9"/></symbol><symbol id="_sprite-product-k8s-node-pool" viewBox="0 0 24 24"><defs><style>._product-k8s-node-pool_svg_cls-2{fill:#003f99}._product-k8s-node-pool_svg_cls-3{fill:#fff}</style></defs><path fill="#cee0fa" d="M12.01 8.11l-5 7.77h10l-5-7.77z"/><path d="M17.93 16.38H6.09L12 7.19zm-10-1h8.17L12 9z" class="_product-k8s-node-pool_svg_cls-2"/><circle cx="12.01" cy="8.19" r="2.88" class="_product-k8s-node-pool_svg_cls-3"/><path d="M12 11.58a3.38 3.38 0 113.39-3.38A3.39 3.39 0 0112 11.58zm0-5.76a2.38 2.38 0 102.39 2.38A2.39 2.39 0 0012 5.82z" class="_product-k8s-node-pool_svg_cls-2"/><circle cx="7.01" cy="15.81" r="2.88" class="_product-k8s-node-pool_svg_cls-3"/><path d="M7 19.2a3.38 3.38 0 113.38-3.38A3.39 3.39 0 017 19.2zm0-5.76a2.38 2.38 0 102.38 2.38A2.39 2.39 0 007 13.44z" class="_product-k8s-node-pool_svg_cls-2"/><circle cx="16.99" cy="15.8" r="2.88" class="_product-k8s-node-pool_svg_cls-3"/><path d="M17 19.19a3.38 3.38 0 113.38-3.38A3.39 3.39 0 0117 19.19zm0-5.76a2.38 2.38 0 102.38 2.38A2.39 2.39 0 0017 13.43z" class="_product-k8s-node-pool_svg_cls-2"/></symbol><symbol id="_sprite-product-k8s-node" viewBox="0 0 24 24"><circle cx="12.01" cy="12" r="3.84" fill="#cee0fa"/><path fill="#003f99" d="M12 16.34A4.34 4.34 0 1116.35 12 4.34 4.34 0 0112 16.34zm0-7.68A3.34 3.34 0 1015.35 12 3.35 3.35 0 0012 8.66z"/></symbol><symbol id="_sprite-product-load-balancer" viewBox="0 0 24 24"><defs><style>._product-load-balancer_svg_cls-1{fill:#003f99}._product-load-balancer_svg_cls-2{fill:#cee0fa}</style></defs><circle cx="12.01" cy="4.61" r="2.61" class="_product-load-balancer_svg_cls-1"/><circle cx="18.77" cy="18.91" r="2.61" class="_product-load-balancer_svg_cls-2"/><circle cx="12" cy="4.61" r="2.61" class="_product-load-balancer_svg_cls-1"/><circle cx="5.23" cy="18.91" r="2.61" class="_product-load-balancer_svg_cls-2"/><path d="M19.27 15.86v-2.34a3 3 0 00-3-3H12.5V5.29h-1v5.23H7.73a3 3 0 00-3 3v2.34a3.1 3.1 0 101 0v-2.34a2 2 0 012-2h8.54a2 2 0 012 2v2.34a3.09 3.09 0 101 0zM7.33 18.91a2.1 2.1 0 11-2.1-2.1 2.1 2.1 0 012.1 2.1zM18.77 21a2.1 2.1 0 112.09-2.09A2.1 2.1 0 0118.77 21z" class="_product-load-balancer_svg_cls-1"/></symbol><symbol id="_sprite-product-marketplace-white" fill="none" viewBox="0 0 16 16"><path stroke="#fff" d="M14 11.422l-6 3.466-6-3.466V4.466L8 1l6 3.466v6.956z"/><path stroke="#fff" d="M2 4.465l6 3.466v6.957M5.024 6.45v6.956M2 7.944l6 3.466m5.974-6.945L8 7.931v6.957m5.974-6.944L8 11.41m2.95-8.426L4.976 6.45"/></symbol><symbol id="_sprite-product-marketplace" fill="none" viewBox="0 0 24 24"><path fill="#CEE0FA" d="M12 11.655L4 7v9.328L12 21v-9.345zm0 0L20 7v9.328L12 21v-9.345z"/><path stroke="#003F99" d="M19.553 16.508L11.776 21 4 16.508V7.492L11.777 3l7.776 4.492v9.016z"/><path stroke="#003F99" d="M4 7.491l7.777 4.492V21M7.92 10.063v9.017M4 12l7.777 4.492"/><path stroke="#003F99" d="M19.52 7.491l-7.743 4.492V21m7.743-9l-7.743 4.492M15.743 5L8 9.492"/></symbol><symbol id="_sprite-product-metrics" fill="none" viewBox="0 0 40 40"><path fill="#CEE0FA" d="M4.5 10.5a2 2 0 012-2h27a2 2 0 012 2v19a2 2 0 01-2 2h-27a2 2 0 01-2-2v-19z"/><path stroke="#003F99" d="M10 19.5v7m4-12v12m4-9v9m4-7v7m4-14v14m4-10v10m-23.5 5h27a2 2 0 002-2v-19a2 2 0 00-2-2h-27a2 2 0 00-2 2v19a2 2 0 002 2z"/></symbol><symbol id="_sprite-product-monitors" fill="none" viewBox="0 0 40 40"><rect width="15.667" height="9" x="12.167" y="3.833" fill="#CEE0FA" stroke="#003F99" rx=".5"/><rect width="15.667" height="9" x="22.167" y="22.167" fill="#CEE0FA" stroke="#003F99" rx=".5"/><rect width="15.667" height="9" x="2.167" y="22.167" fill="#CEE0FA" stroke="#003F99" rx=".5"/><path stroke="#003F99" d="M20 13.333V17.5m-4.167 0h8.334M10 31.667v4.166m-4.167 0h8.334M30 31.667v4.166m-4.167 0h8.334"/></symbol><symbol id="_sprite-product-space-file" viewBox="0 0 24 24"><defs><style>._product-space-file_svg_cls-3{fill:#003f99}</style></defs><path fill="#fff" d="M5.79 22h12.44a1.36 1.36 0 001.36-1.35V7.35a1.38 1.38 0 00-.42-1L15 2.37A1.36 1.36 0 0014 2H5.77a1.36 1.36 0 00-1.36 1.36v17.29A1.36 1.36 0 005.79 22z"/><path fill="#cee0fa" d="M8.06 16.71H16v1.42H8.06zm0-3.38H16v1.42H8.06zm0-3.38H16v1.42H8.06z"/><path d="M9.79 9.95h1.92v1.42H9.79zm2.59 3.38h1.92v1.42h-1.92zm-4.32 3.38h1.92v1.42H8.06z" class="_product-space-file_svg_cls-3"/><path d="M19.17 6.37l-4.17-4A1.36 1.36 0 0014 2H5.77a1.36 1.36 0 00-1.36 1.36v17.29A1.36 1.36 0 005.79 22h12.44a1.36 1.36 0 001.36-1.35V7.35a1.38 1.38 0 00-.42-.98zm-.69.72h-2.84a.82.82 0 01-.85-.78V3.58zM18.23 21H5.79a.35.35 0 01-.35-.35V3.35a.37.37 0 01.11-.25.39.39 0 01.22-.1h8v3.32a1.82 1.82 0 001.87 1.78h2.95v12.55a.36.36 0 01-.36.35z" class="_product-space-file_svg_cls-3"/></symbol><symbol id="_sprite-product-space-folder" viewBox="0 0 24 24"><path fill="#fff" d="M21.5 9.31v9.74a1.31 1.31 0 01-1.31 1.3H3.81a1.31 1.31 0 01-1.31-1.3V9.34"/><path fill="#cee0fa" d="M21.5 7.52v1.79h-19V7.52a1.28 1.28 0 011.24-1.31h1.68A.62.62 0 006 5.85l.72-1.49a1.23 1.23 0 011.08-.71h2.61a1.23 1.23 0 011.1.71l.74 1.5a.61.61 0 00.55.35h7.46a1.28 1.28 0 011.24 1.31z"/><path fill="#003f99" d="M20.26 5.71H12.8a.15.15 0 01-.11-.07L12 4.14a1.73 1.73 0 00-1.55-1H7.8a1.73 1.73 0 00-1.56 1l-.72 1.5a.12.12 0 01-.1.07H3.74A1.78 1.78 0 002 7.52v11.53a1.81 1.81 0 001.81 1.8h16.38a1.81 1.81 0 001.81-1.8V7.52a1.78 1.78 0 00-1.74-1.81zM3 7.52a.77.77 0 01.74-.81h1.68a1.11 1.11 0 001-.64l.72-1.49a.73.73 0 01.66-.43h2.61a.73.73 0 01.65.42l.74 1.51a1.1 1.1 0 001 .63h7.46a.77.77 0 01.74.81v1.3H3zm18 11.53a.8.8 0 01-.81.8H3.81a.8.8 0 01-.81-.8V9.83h18z"/></symbol><symbol id="_sprite-product-space" viewBox="0 0 24 24"><defs><style>._product-space_svg_cls-2{fill:#003f99}</style></defs><path fill="#cee0fa" d="M11.88 17.58A5.58 5.58 0 106.3 12a5.58 5.58 0 005.58 5.58z"/><path d="M6.12 4.88a.74.74 0 00-.53-.25.75.75 0 00-.76.68.66.66 0 00.17.52.74.74 0 00.49.29.83.83 0 00.52-.19.75.75 0 00.26-.53.7.7 0 00-.15-.52zM3.49 9.1h.06A.72.72 0 004 8.92a.78.78 0 00.08-1.06.84.84 0 00-.57-.26.76.76 0 00-.74.7.74.74 0 00.72.8zm-.18 3.35a.75.75 0 00-.44-1.31h-.08a.67.67 0 00-.47.19.71.71 0 00-.26.51.75.75 0 00.18.54.77.77 0 00.5.26h.08a.73.73 0 00.49-.19zm.29 2.15h-.05a.78.78 0 00-.5.19.75.75 0 00.45 1.31.65.65 0 00.5-.22.73.73 0 00.26-.52.76.76 0 00-.66-.76zm1.99 2.99a.77.77 0 00-.76.72.76.76 0 00.19.57.77.77 0 00.53.21.65.65 0 00.26-.09.75.75 0 00.5-.64.71.71 0 00-.19-.56.69.69 0 00-.53-.21zm3 1.95h-.05a.72.72 0 00-.49.18.77.77 0 00-.26.51.76.76 0 00.7.8h.06a.77.77 0 00.74-.7.79.79 0 00-.18-.55.74.74 0 00-.52-.24zm6.58-4.06a.75.75 0 00-.53.22.72.72 0 00-.21.53.75.75 0 00.46.7.93.93 0 00.29.05.74.74 0 00.53-.22.78.78 0 00.16-.82.75.75 0 00-.7-.46zm1.97-2.71a.75.75 0 000 1.5.75.75 0 000-1.5zm.58-3.08a.76.76 0 00-.82-.16.77.77 0 00-.46.7.75.75 0 00.22.53.72.72 0 00.52.21.75.75 0 00.53-1.28zm-2.55-3a.72.72 0 00-.69.45.75.75 0 00.16.83.74.74 0 00.52.22.8.8 0 00.3-.06.77.77 0 00.46-.7.75.75 0 00-.75-.74zm-6.08-3.8a.82.82 0 00-.52-.22.84.84 0 00-.57.19.78.78 0 000 1.06.89.89 0 00.49.25.79.79 0 00.8-.71.74.74 0 00-.2-.57z" class="_product-space_svg_cls-2"/><path d="M12 21.59v-1A8.71 8.71 0 0020.8 12 8.71 8.71 0 0012 3.41v-1A9.71 9.71 0 0121.8 12a9.71 9.71 0 01-9.8 9.59zm-.28-3.67a5.92 5.92 0 010-11.84v1a4.92 4.92 0 000 9.84z" class="_product-space_svg_cls-2"/></symbol><symbol id="_sprite-product-static-site" viewBox="0 0 24 24"><defs><style>._product-static-site_svg_cls-3{fill:#003f99}</style></defs><rect width="18.73" height="15.68" x="2.5" y="4" fill="#cee0fa" rx="1"/><rect width="18.62" height="3.5" x="2.63" y="4.17" fill="#fff" rx=".5"/><circle cx="4.44" cy="5.88" r=".39" class="_product-static-site_svg_cls-3"/><circle cx="5.77" cy="5.88" r=".39" class="_product-static-site_svg_cls-3"/><circle cx="7.09" cy="5.88" r=".39" class="_product-static-site_svg_cls-3"/><path d="M7 14.08a.16.16 0 01-.09-.14v-.66a.16.16 0 01.09-.14l3.31-1.41a.07.07 0 01.1.06v.65a.17.17 0 01-.1.14l-2.49 1v.08l2.49 1a.17.17 0 01.1.13v.65a.07.07 0 01-.1.07zm3.75 2.29c-.06 0-.09 0-.07-.09L12.46 11a.15.15 0 01.14-.1h.64a.07.07 0 01.07.1l-1.78 5.32a.15.15 0 01-.13.09zm2.91-.89c-.05 0-.09 0-.09-.07v-.65a.15.15 0 01.09-.13l2.5-1c.06 0 .06-.05 0-.08l-2.5-1a.16.16 0 01-.09-.14v-.65a.06.06 0 01.09-.06L17 13.14a.16.16 0 01.09.14v.66a.16.16 0 01-.09.14z" class="_product-static-site_svg_cls-3"/><path d="M20.5 3.5h-17A1.5 1.5 0 002 5v14a1.5 1.5 0 001.5 1.5h17A1.5 1.5 0 0022 19V5a1.5 1.5 0 00-1.5-1.5zm-17 1h17a.5.5 0 01.5.5v2.31H3V5a.5.5 0 01.5-.5zm17 15h-17A.5.5 0 013 19V8.31h18V19a.5.5 0 01-.5.5z" class="_product-static-site_svg_cls-3"/></symbol><symbol id="_sprite-product-tag" viewBox="0 0 24 24"><defs><style>._product-tag_svg_cls-2{fill:#003f99}</style></defs><path fill="#cee0fa" d="M3.42 10.1V3.72a.33.33 0 01.33-.33h6.31a1.19 1.19 0 01.82.34l9.32 9.33a1.17 1.17 0 010 1.65l-5.48 5.5a1.16 1.16 0 01-1.65 0l-9.31-9.28a1.17 1.17 0 01-.34-.83z"/><path d="M13.9 21a1.57 1.57 0 01-1.14-.47l-9.32-9.28A1.64 1.64 0 013 10.1V3.72a.75.75 0 01.23-.55.76.76 0 01.55-.23h6.3a1.62 1.62 0 011.14.48l9.32 9.32a1.62 1.62 0 010 2.28l-5.48 5.51a1.64 1.64 0 01-1.16.47zM3.84 3.84v6.26a.74.74 0 00.21.51l9.31 9.31a.71.71 0 00.51.21.71.71 0 00.51-.21l5.48-5.5a.71.71 0 000-1l-9.3-9.34a.71.71 0 00-.5-.21z" class="_product-tag_svg_cls-2"/><path d="M8 7.2a.77.77 0 100 1.53.77.77 0 000-1.53z" class="_product-tag_svg_cls-2"/></symbol><symbol id="_sprite-product-vendor-forum" fill="none" viewBox="0 0 24 24"><path fill="#CEE0FA" fill-rule="evenodd" d="M10 4a1 1 0 00-1 1v7.414a1 1 0 001 1h7.357V16l2.38-2.586H21a1 1 0 001-1V5a1 1 0 00-1-1H10z" clip-rule="evenodd"/><path fill="#003F99" d="M17.357 13.414h.5a.5.5 0 00-.5-.5v.5zm0 2.586h-.5a.5.5 0 00.868.339L17.357 16zm2.38-2.586v-.5a.5.5 0 00-.367.161l.368.339zM9.5 5a.5.5 0 01.5-.5v-1A1.5 1.5 0 008.5 5h1zm0 7.414V5h-1v7.414h1zm.5.5a.5.5 0 01-.5-.5h-1a1.5 1.5 0 001.5 1.5v-1zm7.357 0H10v1h7.357v-1zm-.5.5V16h1v-2.586h-1zm.868 2.925l2.38-2.586-.735-.678-2.38 2.586.735.678zM21 12.914h-1.262v1H21v-1zm.5-.5a.5.5 0 01-.5.5v1a1.5 1.5 0 001.5-1.5h-1zM21.5 5v7.414h1V5h-1zm-.5-.5a.5.5 0 01.5.5h1A1.5 1.5 0 0021 3.5v1zm-11 0h11v-1H10v1z"/><path fill="#fff" fill-rule="evenodd" d="M14 9a1 1 0 011 1v7.192a1 1 0 01-1 1h-3.389V21l-2.648-2.808H3a1 1 0 01-1-1V10a1 1 0 011-1h11z" clip-rule="evenodd"/><path fill="#003F99" d="M10.611 18.192h-.5a.5.5 0 01.5-.5v.5zm0 2.808h.5a.5.5 0 01-.864.343l.364-.343zm-2.648-2.808v-.5a.5.5 0 01.364.157l-.364.343zM14.5 10a.5.5 0 00-.5-.5v-1a1.5 1.5 0 011.5 1.5h-1zm0 7.192V10h1v7.192h-1zm-.5.5a.5.5 0 00.5-.5h1a1.5 1.5 0 01-1.5 1.5v-1zm-3.389 0H14v1h-3.389v-1zm.5.5V21h-1v-2.808h1zm-.864 3.151L7.6 18.535l.728-.686 2.648 2.808-.728.686zM3 17.692h4.963v1H3v-1zm-.5-.5a.5.5 0 00.5.5v1a1.5 1.5 0 01-1.5-1.5h1zM2.5 10v7.192h-1V10h1zm.5-.5a.5.5 0 00-.5.5h-1A1.5 1.5 0 013 8.5v1zm11 0H3v-1h11v1z"/></symbol><symbol id="_sprite-product-vendor-portal-white" fill="none" viewBox="0 0 16 16"><circle cx="4.5" cy="4.5" r="3" stroke="#fff"/><circle cx="11.5" cy="11.5" r="3" stroke="#fff"/><path stroke="#fff" stroke-linecap="round" d="M13.6 5.9a3.5 3.5 0 00-3.5-3.5m-7.7 7.7a3.5 3.5 0 003.5 3.5"/></symbol><symbol id="_sprite-product-vendor-portal" fill="none" viewBox="0 0 24 24"><circle cx="7" cy="7" r="4.5" fill="#CEE0FA" stroke="#003F99"/><circle cx="17" cy="17" r="4.5" fill="#CEE0FA" stroke="#003F99"/><path stroke="#003F99" stroke-linecap="round" d="M20 9a5 5 0 00-5-5M4 15a5 5 0 005 5"/></symbol><symbol id="_sprite-product-volume-snapshot" viewBox="0 0 24 24"><path fill="#cee0fa" d="M11.36 4.37L3.27 7.79a1.19 1.19 0 00-.72 1.1v2.93a1.17 1.17 0 00.72 1.09l8.21 3.45a1.55 1.55 0 001.23 0l8.1-3.43a1.19 1.19 0 00.72-1.1V8.9a1.2 1.2 0 00-.73-1.1l-8.21-3.44a1.64 1.64 0 00-1.23.01z"/><path fill="#003f99" d="M21 7.34L12.74 3.9a2.09 2.09 0 00-1.61 0L3 7.33a1.69 1.69 0 00-1 1.56v6.46a1.23 1.23 0 00.76 1.14l8.64 3.64a1.72 1.72 0 001.3 0l8.53-3.62a1.25 1.25 0 00.77-1.15V8.9a1.69 1.69 0 00-1-1.56zM21 9v2.85a.69.69 0 01-.41.63l-8.1 3.42v-3.32l.21-.07zm-9.48-4.17a1.11 1.11 0 01.84 0l8 3.35-8 3.42a.62.62 0 01-.53 0l-8.2-3.43zM3 9l8.38 3.52a.38.38 0 00.1 0v3.3l-8.05-3.37a.67.67 0 01-.43-.62z"/></symbol><symbol id="_sprite-product-volume" viewBox="0 0 24 24"><path fill="#cee0fa" d="M11.36 6L3.27 9.43a1.2 1.2 0 00-.73 1.1v2.93a1.18 1.18 0 00.73 1.09l8.2 3.45a1.57 1.57 0 001.24 0l8.1-3.43a1.2 1.2 0 00.71-1.1v-2.93a1.19 1.19 0 00-.72-1.1L12.59 6a1.59 1.59 0 00-1.23 0z"/><path fill="#003f99" d="M21 9l-8.26-3.47a2.14 2.14 0 00-1.61 0L3 9a1.68 1.68 0 00-1 1.56v2.93A1.65 1.65 0 003 15l8.2 3.45a2 2 0 001.63 0L21 15a1.67 1.67 0 001-1.56v-2.9A1.68 1.68 0 0021 9zm-9.48-2.53a1.07 1.07 0 01.84 0l8 3.35-8 3.42a.67.67 0 01-.52 0L3.62 9.81zm-8.1 7.62a.66.66 0 01-.42-.63v-2.83l8.37 3.52h.1v3.3zm17.16 0l-8.1 3.43v-3.3l.22-.07 8.3-3.52v2.84a.69.69 0 01-.42.64z"/></symbol><symbol id="_sprite-product-vpc" viewBox="0 0 24 24"><defs><style>._product-vpc_svg_cls-2{fill:#003f99}._product-vpc_svg_cls-3{fill:#fff}</style></defs><path fill="#cee0fa" d="M3.12 7.82v8.39a1.56 1.56 0 00.8 1.39l7.28 4.2a1.62 1.62 0 001.62 0l7.28-4.2a1.58 1.58 0 00.8-1.39V7.82a1.58 1.58 0 00-.8-1.39l-7.28-4.2a1.62 1.62 0 00-1.62 0l-7.28 4.2a1.56 1.56 0 00-.8 1.39z"/><path d="M20.1 6.44l-7.28-4.2a1.6 1.6 0 00-1.62 0l-7.28 4.2a1.57 1.57 0 00-.8 1.39v8.39a1.59 1.59 0 00.8 1.4l7.28 4.19a1.6 1.6 0 001.62 0l7.28-4.19a1.61 1.61 0 00.8-1.4V7.83a1.59 1.59 0 00-.8-1.39zm-.5.87a.58.58 0 01.3.52v8.05l-3.61-2-3.78-6.1V3.22zM12 8.87L15.18 14H8.84zM4.42 7.31l7.09-4.09v4.56L7.64 14l-.06-.1-3.46 1.94v-8a.57.57 0 01.3-.53zM12.32 21a.68.68 0 01-.32 0 .56.56 0 01-.31-.09l-7.22-4.13L7.73 15h8.5l3.28 1.84z" class="_product-vpc_svg_cls-2"/><path d="M12 9.92a1.81 1.81 0 10-1.81-1.8A1.79 1.79 0 0012 9.92z" class="_product-vpc_svg_cls-3"/><path d="M12 10.42a2.31 2.31 0 112.3-2.3 2.31 2.31 0 01-2.3 2.3zm0-3.61a1.31 1.31 0 100 2.61 1.31 1.31 0 000-2.61z" class="_product-vpc_svg_cls-2"/><path d="M15.8 16.26a1.81 1.81 0 10-1.8-1.8 1.8 1.8 0 001.8 1.8z" class="_product-vpc_svg_cls-3"/><path d="M15.8 16.76a2.31 2.31 0 112.31-2.3 2.3 2.3 0 01-2.31 2.3zm0-3.61a1.31 1.31 0 101.31 1.31 1.31 1.31 0 00-1.31-1.31z" class="_product-vpc_svg_cls-2"/><path d="M8.21 16.29a1.81 1.81 0 10-1.8-1.81 1.81 1.81 0 001.8 1.81z" class="_product-vpc_svg_cls-3"/><path d="M8.21 16.79a2.31 2.31 0 112.31-2.31 2.31 2.31 0 01-2.31 2.31zm0-3.61a1.31 1.31 0 000 2.61 1.31 1.31 0 100-2.61z" class="_product-vpc_svg_cls-2"/></symbol><symbol id="_sprite-refresh" viewBox="0 0 24 24"><path d="M21.997 9.388V2l-2.923 2.924a10.036 10.036 0 00-7.04-2.868C6.498 2.056 2 6.513 2 12.026c0 5.514 4.498 9.971 10.033 9.971 4.97 0 9.1-3.591 9.895-8.316a1 1 0 00-1.972-.331c-.634 3.767-3.936 6.647-7.923 6.647C7.59 19.997 4 16.422 4 12.027c0-4.396 3.59-7.971 8.033-7.971 2.192 0 4.176.87 5.625 2.28l.002.002-3.05 3.05h7.387z"/></symbol><symbol id="_sprite-sammy" viewBox="0 0 32 32"><path fill="#444" d="M31.808 13.504c.128-.32.448-1.216-.448-1.664-.448-.32-1.28-.576-2.176-.768-2.176-.448-6.016-.576-8.256-.32-1.536.128-2.944.192-4.352.32-.32-.64-.896-1.536-1.856-2.432a13.28 13.28 0 00-2.752-2.112c-.576-.32-1.088-.576-1.728-.896-.32-.128-.96-.192-1.408-.128-.32 0-.576.32-.448.64 0 .192.192.32.448.576.192.192.448.448.64.896.32.448.448 1.024.576 1.664 0 .128 0 .32.128.448.128.576.128 1.344.128 2.112-1.216.192-2.176.448-3.136.576-.32-.32-.896-.576-1.216-.576-.32.128-.448.448-.768.64-.448 0-.768-.128-.96-.32 0 0-.32-.32-.768-1.216C2.56 9.28 1.152 6.272.832 6.592c0 .128 0 .32-.128.448-.192 2.56.768 6.08.896 6.336-1.216.896-1.664 2.432-1.536 3.072 0 0 .128.448.448.128.896-.896 2.176-1.664 2.944-1.536 0 0 .448 0 1.088.448 0 .128.128.192.128.448 0 .32 0 .448.32.576.192.128.64.128 1.088.128.448.448.896.896 1.408 1.536.896 1.216 1.536 2.24 2.368 3.2l.192.192c-1.088.896-2.752 1.344-2.944 1.408-.32.128-.64.128-.896.128-.128 0-.192 0-.32.128-.32.128-.448.128-.448.32 0 .448.64.768.64.768 1.216.576 3.456.448 4.352.32.64-.128 1.216-.32 1.664-.448 1.088 1.088 2.752 1.984 4.928 2.24 0 0 2.176.32 4.544-.32 1.408-.32 3.264-1.024 4.16-1.856.128 0 .128-.128.128-.128.32-.32.576-.896-.192-1.536 0 0-.576-.576-.896-1.536.896-.128 1.856-.32 2.816-.896 0-.576.128-1.024.448-1.408.128-.32.64-1.024.896-1.344 1.024-1.152 2.432-2.56 2.88-3.904z"/></symbol><symbol id="_sprite-search" viewBox="0 0 32 32"><path d="M30.976 28.608l-9.984-9.984a11.16 11.16 0 002.24-6.72c0-6.272-5.056-11.328-11.328-11.328S.512 5.632.512 11.904 5.568 23.232 11.84 23.232c2.496 0 4.8-.832 6.72-2.24l9.984 9.984c.256.256.704.448 1.152.448s.768-.192 1.088-.32l.128-.128c.704-.64.704-1.728.064-2.368zM11.84 19.776c-4.352 0-7.872-3.52-7.872-7.872s3.52-7.872 7.872-7.872c4.416 0 7.872 3.456 7.872 7.872 0 4.288-3.52 7.872-7.872 7.872z"/></symbol><symbol id="_sprite-share" viewBox="0 0 62 82"><path d="M17.9 16.9c-1.3-1.2-1.3-3.4 0-4.6L28.8 1.4C30 .2 32 .2 33.2 1.4l10.9 10.9c1.3 1.3 1.3 3.4 0 4.6-.6.5-1.3.8-2.1.8s-1.7-.3-2.3-.9L34 11v39.3c0 1.7-1.3 3.1-3 3.1s-3-1.4-3-3.1V11l-5.8 5.7c-.6.6-1.4.9-2.2.9-.8.1-1.6-.2-2.1-.7zM56 21H46c-1.6 0-3.1 1.1-3.2 2.7-.2 1.9 1.2 3.3 3 3.3h8.6c.9 0 1.6.6 1.6 1.5v45.3c0 .9-.7 1.2-1.6 1.2H7.6c-.9 0-1.6-.3-1.6-1.2V28.5c0-.9.7-1.5 1.6-1.5H16c1.6 0 3.1-1.1 3.2-2.7.2-1.9-1.3-3.3-3.1-3.3H6c-3.5 0-6 2.5-6 5.9v48.4c0 3.5 2.5 6.6 6 6.6h50c3.5 0 6-3.2 6-6.6V26.9c0-3.4-2.5-5.9-6-5.9z"/></symbol><symbol id="_sprite-shrink" fill="none" viewBox="0 0 36 36"><path fill="#020000" fill-rule="evenodd" d="M22.159 23.545v2.493a.877.877 0 01-.254.618.861.861 0 01-1.225 0 .878.878 0 01-.253-.618v-4.644c0-.225.088-.44.246-.6a.836.836 0 01.594-.248h4.602c.23 0 .45.092.612.256a.878.878 0 010 1.236.862.862 0 01-.612.256h-2.47l3.198 3.227a.89.89 0 010 1.25v.001a.87.87 0 01-1.24 0l-3.198-3.227zm-8.395 0v2.493c0 .232.091.454.254.618a.862.862 0 001.225 0 .877.877 0 00.253-.618v-4.644a.852.852 0 00-.246-.6.836.836 0 00-.594-.248h-4.602a.86.86 0 00-.612.256.878.878 0 000 1.236.862.862 0 00.612.256h2.47L9.326 25.52a.89.89 0 000 1.25v.001a.87.87 0 001.24 0l3.198-3.227zm8.395-11.167V9.885a.878.878 0 00-.254-.618.862.862 0 00-1.225 0 .878.878 0 00-.253.618v4.644c0 .225.088.44.246.6a.836.836 0 00.594.248h4.602a.86.86 0 00.612-.256.878.878 0 000-1.236.862.862 0 00-.612-.256h-2.47l3.197-3.227a.89.89 0 000-1.251.87.87 0 00-1.24 0l-3.198 3.227zm-8.395 0V9.885c0-.232.091-.454.254-.618a.862.862 0 011.225 0 .878.878 0 01.253.618v4.644c0 .225-.089.44-.246.6a.836.836 0 01-.594.248h-4.602a.862.862 0 01-.612-.256.878.878 0 010-1.236.862.862 0 01.612-.256h2.47l-3.198-3.227a.89.89 0 010-1.251.87.87 0 011.24 0l3.198 3.227z" clip-rule="evenodd"/></symbol><symbol id="_sprite-slideout" fill="none" viewBox="0 0 16 16"><path fill="#fff" d="M0 0h16v16H0z"/><rect width="11" height="10" x="2.5" y="3" fill="#fff" stroke="currentColor" rx="1.5"/><path fill="currentColor" stroke="currentColor" d="M5.5 12H4a1.5 1.5 0 01-1.5-1.5v-5A1.5 1.5 0 014 4h1.5v8z"/><rect width="3.5" height=".5" x="7.25" y="5.75" fill="currentColor" stroke="currentColor" stroke-width=".5" rx=".25"/><rect width="1.5" height=".5" x="7.25" y="7.75" fill="currentColor" stroke="currentColor" stroke-width=".5" rx=".25"/><rect width="1.5" height=".5" x="10.25" y="7.75" fill="currentColor" stroke="currentColor" stroke-width=".5" rx=".25"/><rect width="2.5" height=".5" x="7.25" y="9.75" fill="currentColor" stroke="currentColor" stroke-width=".5" rx=".25"/></symbol><symbol id="_sprite-support-white" fill="none" viewBox="0 0 24 24"><mask id="_support-white_svg_a" fill="#fff"><path fill-rule="evenodd" d="M12 23c6.075 0 11-4.925 11-11S18.075 1 12 1 1 5.925 1 12s4.925 11 11 11zm0-5a6 6 0 100-12 6 6 0 000 12z" clip-rule="evenodd"/></mask><path fill="#fff" d="M22 12c0 5.523-4.477 10-10 10v2c6.627 0 12-5.373 12-12h-2zM12 2c5.523 0 10 4.477 10 10h2c0-6.627-5.373-12-12-12v2zM2 12C2 6.477 6.477 2 12 2V0C5.373 0 0 5.373 0 12h2zm10 10C6.477 22 2 17.523 2 12H0c0 6.627 5.373 12 12 12v-2zm5-10a5 5 0 01-5 5v2a7 7 0 007-7h-2zm-5-5a5 5 0 015 5h2a7 7 0 00-7-7v2zm-5 5a5 5 0 015-5V5a7 7 0 00-7 7h2zm5 5a5 5 0 01-5-5H5a7 7 0 007 7v-2z" mask="url(#_support-white_svg_a)"/><path stroke="#fff" d="M16.191 7.707l3.536-3.536m-3.484 12.072l3.535 3.535m-15.505.051l3.535-3.536M4.222 4.222l3.535 3.535"/></symbol><symbol id="_sprite-support" fill="none" viewBox="0 0 32 32"><path fill="#5B6987" stroke="#5B6987" stroke-width=".15" d="M14.987 17.314h0v.002c-.034.538.411.97.943.97h.494a.62.62 0 00.608-.587h0c.01-.142.034-.27.072-.385h0v-.003c.034-.112.09-.223.172-.334.083-.112.199-.243.349-.393.248-.218.494-.442.738-.67h0c.252-.236.475-.485.67-.748.197-.259.358-.538.482-.838h0c.126-.31.188-.65.188-1.018 0-.496-.082-.935-.25-1.317a2.59 2.59 0 00-.72-.964h0-.001a3.246 3.246 0 00-1.161-.577 5.62 5.62 0 00-1.535-.194 5.02 5.02 0 00-1.421.194c-.44.124-.825.316-1.153.576-.329.261-.59.59-.782.985a2.611 2.611 0 00-.145.362.77.77 0 00.175.77c.182.199.46.323.758.323h.494c.39 0 .663-.327.816-.643.082-.158.187-.286.314-.385h.002c.123-.1.265-.172.428-.215h.002a1.76 1.76 0 01.512-.073c.228 0 .426.024.596.073h0c.174.048.318.12.436.213.111.103.198.234.26.396h0c.062.157.094.348.094.575 0 .18-.04.363-.123.547a2.85 2.85 0 01-.326.55 6.06 6.06 0 01-.465.54c-.171.17-.342.334-.513.49-.24.189-.43.37-.566.543a1.8 1.8 0 00-.309.555h0a2.92 2.92 0 00-.133.68zm1.97.38a1.61 1.61 0 01.076-.404l-1.971.03c-.031.492.376.891.868.891h.494a.545.545 0 00.533-.517zM15 21.392h0c.236.236.56.35.96.35.39 0 .71-.114.95-.349h0a1.18 1.18 0 00.365-.876c0-.353-.121-.652-.364-.89-.24-.245-.56-.364-.951-.364-.401 0-.725.119-.96.365a1.225 1.225 0 00-.348.89c0 .343.116.636.348.874z"/><circle cx="16" cy="16" r="10" stroke="#5B6987" stroke-width="2"/></symbol><symbol id="_sprite-tooltip-active" fill="none" viewBox="0 0 18 18"><rect width="16" height="16" x="1" y="1" fill="#0061EB" stroke="#0061EB" rx="2"/><path fill="#fff" d="M8.366 10.622l1.54-.448a.802.802 0 01-.266-.588c0-1.176 2.338-1.33 2.338-3.374C11.978 4.91 10.872 4 9.066 4 7.862 4 6.742 4.476 6 5.358l1.134 1.274c.434-.532 1.022-.868 1.722-.868.77 0 1.106.364 1.106.798 0 .966-2.058 1.162-2.058 2.814 0 .49.168.924.462 1.246zm.672 3.01c.616 0 1.134-.518 1.134-1.134 0-.616-.518-1.134-1.134-1.134-.616 0-1.134.518-1.134 1.134 0 .616.518 1.134 1.134 1.134z"/></symbol><symbol id="_sprite-tooltip-default" fill="none" viewBox="0 0 18 18"><rect width="16" height="16" x="1" y="1" stroke="#5B6987" rx="2"/><path fill="#5B6987" d="M8.366 10.622l1.54-.448a.802.802 0 01-.266-.588c0-1.176 2.338-1.33 2.338-3.374C11.978 4.91 10.872 4 9.066 4 7.862 4 6.742 4.476 6 5.358l1.134 1.274c.434-.532 1.022-.868 1.722-.868.77 0 1.106.364 1.106.798 0 .966-2.058 1.162-2.058 2.814 0 .49.168.924.462 1.246zm.672 3.01c.616 0 1.134-.518 1.134-1.134 0-.616-.518-1.134-1.134-1.134-.616 0-1.134.518-1.134 1.134 0 .616.518 1.134 1.134 1.134z"/></symbol><symbol id="_sprite-trash" fill="none" viewBox="0 0 16 16"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M13 3v11a1 1 0 01-1 1H4a1 1 0 01-1-1V3m12 0H1m4 0V2a1 1 0 011-1h4a1 1 0 011 1v1"/><path fill="currentColor" fill-rule="evenodd" d="M5.879 6.879a1 1 0 000 1.414L6.586 9l-.707.707a1 1 0 001.414 1.414L8 10.414l.707.707a1 1 0 101.414-1.414L9.414 9l.707-.707a1 1 0 00-1.414-1.414L8 7.586l-.707-.707a1 1 0 00-1.414 0z" clip-rule="evenodd"/></symbol><symbol id="_sprite-twitter" viewBox="0 0 16 16"><path d="M16 3.538a6.461 6.461 0 01-1.884.516 3.301 3.301 0 001.444-1.816 6.607 6.607 0 01-2.084.797 3.28 3.28 0 00-2.397-1.034 3.28 3.28 0 00-3.197 4.028 9.321 9.321 0 01-6.766-3.431 3.284 3.284 0 001.015 4.381A3.301 3.301 0 01.643 6.57v.041A3.283 3.283 0 003.277 9.83a3.291 3.291 0 01-1.485.057 3.293 3.293 0 003.066 2.281 6.586 6.586 0 01-4.862 1.359 9.286 9.286 0 005.034 1.475c6.037 0 9.341-5.003 9.341-9.341 0-.144-.003-.284-.009-.425a6.59 6.59 0 001.637-1.697z"/></symbol><symbol id="_sprite-wave" viewBox="0 0 576 32"><path fill="#444" d="M561.6 14.4c-3.2 4.8-4.8 6.4-9.6 6.4s-6.4-3.2-9.6-6.4c-3.2-4.8-6.4-9.6-14.4-9.6s-11.2 4.8-14.4 9.6c-3.2 4.8-4.8 6.4-9.6 6.4s-6.4-3.2-9.6-6.4c-3.2-4.8-6.4-9.6-14.4-9.6s-11.2 4.8-14.4 9.6c-3.2 4.8-4.8 6.4-9.6 6.4s-6.4-3.2-9.6-6.4c-3.2-4.8-6.4-9.6-14.4-9.6s-11.2 4.8-14.4 9.6c-3.2 4.8-4.8 6.4-9.6 6.4s-6.4-3.2-9.6-6.4c-3.2-4.8-6.4-9.6-14.4-9.6s-11.2 4.8-14.4 9.6c-3.2 4.8-4.8 6.4-9.6 6.4s-6.4-3.2-9.6-6.4c-3.2-4.8-6.4-9.6-14.4-9.6s-11.2 4.8-14.4 9.6c-3.2 4.8-4.8 6.4-9.6 6.4s-6.4-3.2-9.6-6.4c-3.2-4.8-6.4-9.6-14.4-9.6s-11.2 4.8-14.4 9.6c-3.2 4.8-4.8 6.4-9.6 6.4s-6.4-3.2-9.6-6.4c-3.2-4.8-6.4-9.6-14.4-9.6s-11.2 4.8-14.4 9.6c-3.2 4.8-4.8 6.4-9.6 6.4s-6.4-3.2-9.6-6.4c-3.2-4.8-6.4-9.6-14.4-9.6s-11.2 4.8-14.4 9.6c-3.2 4.8-4.8 6.4-9.6 6.4s-6.4-3.2-9.6-6.4c-3.2-4.8-6.4-9.6-14.4-9.6s-11.2 4.8-14.4 9.6c-3.2 4.8-4.8 6.4-9.6 6.4s-6.4-3.2-9.6-6.4C107.2 9.6 104 4.8 96 4.8s-11.2 4.8-14.4 9.6c-3.2 4.8-4.8 6.4-9.6 6.4s-6.4-3.2-9.6-6.4C59.2 9.6 56 4.8 48 4.8s-11.2 4.8-14.4 9.6c-3.2 4.8-4.8 6.4-9.6 6.4s-6.4-3.2-9.6-6.4C11.2 9.6 8 4.8 0 4.8v4.8c4.8 0 6.4 3.2 9.6 6.4 3.2 4.8 6.4 9.6 14.4 9.6s11.2-4.8 14.4-9.6c3.2-4.8 4.8-6.4 9.6-6.4s6.4 3.2 9.6 6.4c3.2 4.8 6.4 9.6 14.4 9.6s11.2-4.8 14.4-9.6c3.2-4.8 4.8-6.4 9.6-6.4s6.4 3.2 9.6 6.4c3.2 4.8 6.4 9.6 14.4 9.6s11.2-4.8 14.4-9.6c3.2-4.8 4.8-6.4 9.6-6.4s6.4 3.2 9.6 6.4c3.2 4.8 6.4 9.6 14.4 9.6s11.2-4.8 14.4-9.6c3.2-4.8 4.8-6.4 9.6-6.4s6.4 3.2 9.6 6.4c3.2 4.8 6.4 9.6 14.4 9.6s11.2-4.8 14.4-9.6c3.2-4.8 4.8-6.4 9.6-6.4s6.4 3.2 9.6 6.4c3.2 4.8 6.4 9.6 14.4 9.6s11.2-4.8 14.4-9.6c3.2-4.8 4.8-6.4 9.6-6.4s6.4 3.2 9.6 6.4c3.2 4.8 6.4 9.6 14.4 9.6s11.2-4.8 14.4-9.6c3.2-4.8 4.8-6.4 9.6-6.4s6.4 3.2 9.6 6.4c3.2 4.8 6.4 9.6 14.4 9.6s11.2-4.8 14.4-9.6c3.2-4.8 4.8-6.4 9.6-6.4s6.4 3.2 9.6 6.4c3.2 4.8 6.4 9.6 14.4 9.6s11.2-4.8 14.4-9.6c3.2-4.8 4.8-6.4 9.6-6.4s6.4 3.2 9.6 6.4c3.2 4.8 6.4 9.6 14.4 9.6s11.2-4.8 14.4-9.6c3.2-4.8 4.8-6.4 9.6-6.4s6.4 3.2 9.6 6.4c3.2 4.8 6.4 9.6 14.4 9.6s11.2-4.8 14.4-9.6c3.2-4.8 4.8-6.4 9.6-6.4s6.4 3.2 9.6 6.4c3.2 4.8 6.4 9.6 14.4 9.6s11.2-4.8 14.4-9.6c3.2-4.8 4.8-6.4 9.6-6.4V4.8c-8 0-12.8 4.8-14.4 9.6z"/></symbol><symbol id="_sprite-youtube" viewBox="0 0 16 16"><path d="M15.841 4.8s-.156-1.103-.637-1.587c-.609-.637-1.291-.641-1.603-.678-2.237-.163-5.597-.163-5.597-.163h-.006s-3.359 0-5.597.163c-.313.038-.994.041-1.603.678C.317 3.697.164 4.8.164 4.8S.005 6.094.005 7.391v1.213c0 1.294.159 2.591.159 2.591s.156 1.103.634 1.588c.609.637 1.409.616 1.766.684 1.281.122 5.441.159 5.441.159s3.363-.006 5.6-.166c.313-.037.994-.041 1.603-.678.481-.484.637-1.588.637-1.588s.159-1.294.159-2.591V7.39c-.003-1.294-.162-2.591-.162-2.591zm-9.494 5.275V5.578l4.322 2.256-4.322 2.241z"/></symbol></svg> <div class="Footer hide-in-iframe"> <a href="https://cloud.digitalocean.com" target="_blank" rel="noopener noreferrer">Control Panel</a> <a href="https://blog.digitalocean.com/" target="_blank" rel="noopener noreferrer">Blog</a> <a href="https://www.digitalocean.com/pricing" target="_blank" rel="noopener noreferrer">Pricing</a> <a href="https://www.digitalocean.com/company/careers" target="_blank" rel="noopener noreferrer">Careers</a> <a href="https://www.digitalocean.com/legal/terms-of-service-agreement" target="_blank" rel="noopener noreferrer">Terms</a> <a href="https://www.digitalocean.com/legal/privacy-policy" target="_blank" rel="noopener noreferrer">Privacy</a> <a href="https://status.digitalocean.com" target="_blank" rel="noopener noreferrer">Status</a> <a href="/reference/api/" rel="noopener noreferrer">API Docs</a> <a href="https://www.digitalocean.com/community" target="_blank" rel="noopener noreferrer">Tutorials</a> <a href="/support/" rel="noopener noreferrer">Support</a> </div> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KHWBBT');</script> <script> ! function() { var analytics = window.analytics = window.analytics || []; if (!analytics.initialize) if (analytics.invoked) window.console && console.error && console.error("Segment snippet included twice."); else { analytics.invoked = !0; analytics.methods = ["trackSubmit", "trackClick", "trackLink", "trackForm", "pageview", "identify", "reset", "group", "track", "ready", "alias", "debug", "page", "once", "off", "on", "addSourceMiddleware", "addIntegrationMiddleware", "setAnonymousId", "addDestinationMiddleware"]; analytics.factory = function(e) { return function() { var t = Array.prototype.slice.call(arguments); t.unshift(e); analytics.push(t); return analytics } }; for (var e = 0; e < analytics.methods.length; e++) { var key = analytics.methods[e]; analytics[key] = analytics.factory(key) } analytics.load = function(key, e) { var t = document.createElement("script"); t.type = "text/javascript"; t.async = !0; t.src = "https://segment.digitalocean.com/analytics.js/v1/" + key + "/analytics.min.js"; var n = document.getElementsByTagName("script")[0]; n.parentNode.insertBefore(t, n); analytics._loadOptions = e }; var docsWriteKey = (window.location.hostname=="docs.digitalocean.com") ? "PdAqZ1G1scddUCiOO651LXOXHFaOuhxD" : "NSaCuggJIEBbuVehJ22ZxYfyiiT7BJgl" analytics._writeKey = docsWriteKey;; analytics.SNIPPET_VERSION = "4.15.3"; analytics.load(docsWriteKey); analytics.page(); } }(); function logToLooker(actionValue,nameValue,valueValue) { try { if(window.analytics) { if (typeof analytics.track === 'function') { analytics.track('Web Interaction', { category: "Product Docs", action: actionValue, name: nameValue, value: valueValue }); var thumbsUpButton = document.querySelector('.thumbs-up'); var thumbsDownButton = document.querySelector('.thumbs-down'); var nero = document.querySelector('.nero'); if (valueValue) { thumbsUpButton.classList.add('clicked'); thumbsDownButton.classList.add('disabled'); nero.classList.add('clicked'); } else { thumbsDownButton.classList.add('clicked'); thumbsUpButton.classList.add('disabled'); nero.classList.add('clicked'); }; } } console.log(actionValue,nameValue,valueValue); } catch (e) {} } </script> <div id="empty_state_holder" style="display:none;"> <h3>We can't find any results for your search.</h3> <p>Please try using alternative keywords or simplifying your search terms.</p> </div> <script src="https://assets.digitalocean.com/labs/search.js.gz"></script> <link rel="stylesheet" type="text/css" href="/sass/prism.css"> <script src="/prism.js" ></script> <script src="/js/main.min.902b855f06e9bafb78193143dccb158f4d2421192521ab20dcfa5ebffcd79402.js" integrity="sha256-kCuFXwbpuvt4GTFD3MsVj00kIRklIasg3Ppev/zXlAI="></script> <script type="text/javascript">(function(){d=document;s=d.createElement("script");s.src="https://sitegpt.ai/widget/379773961881256536.js";s.async=1;d.getElementsByTagName("head")[0].appendChild(s);})();</script> </body> </html>