CINXE.COM
How should we improve our client libraries? - Developers & API - Asana Forum
<!DOCTYPE html> <html lang="en-GB"> <head> <meta charset="utf-8"> <title>How should we improve our client libraries? - Developers & API - Asana Forum</title> <meta name="description" content="Hi everyone, We are evaluating potential improvements to our API client libraries. For those of you that have used one of our client libraries: Which client library do you use (Java, Node.js, PHP, Python, Ruby)? How &hellip;"> <meta name="generator" content="Discourse 3.4.0.beta3-dev - https://github.com/discourse/discourse version d71016522e8d9bb21c20312388271f8f0dd53069"> <link rel="icon" type="image/png" href="https://global.discourse-cdn.com/asana/optimized/3X/7/c/7ca722c5ac96374284efc40db654de76b4f1c7ef_2_32x32.ico"> <link rel="apple-touch-icon" type="image/png" href="https://global.discourse-cdn.com/asana/optimized/3X/d/1/d1db5789c272061204ade493230c1daccb0135e6_2_180x180.png"> <meta name="theme-color" media="all" content="#ffffff"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, user-scalable=yes, viewport-fit=cover"> <link rel="canonical" href="https://forum.asana.com/t/how-should-we-improve-our-client-libraries/211347" /> <link rel="search" type="application/opensearchdescription+xml" href="https://forum.asana.com/opensearch.xml" title="Asana Forum Search"> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/color_definitions_asana_7_58_f5a4c242f8c316abcf51547e38a640ab8ab5d2bb.css?__ws=forum.asana.com" media="all" rel="stylesheet" class="light-scheme"/> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/desktop_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="desktop" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/automation_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="automation" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/checklist_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="checklist" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-adplugin_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-adplugin" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-ai_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-ai" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-akismet_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-akismet" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-asana-plugin_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-asana-plugin" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-assign_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-assign" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-cakeday_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-cakeday" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-data-explorer_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-data-explorer" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-details_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-details" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-interstitials_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-interstitials" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-lazy-videos_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-lazy-videos" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-local-dates_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-local-dates" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-narrative-bot_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-narrative-bot" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-policy_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-policy" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-presence_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-presence" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-reactions_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-reactions" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-solved_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-solved" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-templates_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-templates" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-topic-voting_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-topic-voting" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-user-notes_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-user-notes" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/footnote_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="footnote" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/hosted-site_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="hosted-site" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/poll_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="poll" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/spoiler-alert_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="spoiler-alert" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-ai_desktop_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-ai_desktop" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-reactions_desktop_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-reactions_desktop" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/discourse-topic-voting_desktop_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="discourse-topic-voting_desktop" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/poll_desktop_de32cd3441688c756df9abb0119c0d8d21dce7cd.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="poll_desktop" /> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/desktop_theme_83_a001703a01d0d4f2609c3272c5fe2ad5612e78f0.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="83" data-theme-name="asana highlight category"/> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/desktop_theme_89_ea114a0973da64046472f1d8abf5f1a31b3fa106.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="89" data-theme-name="asana interstitial customizations"/> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/desktop_theme_87_697abd51fbd675f6629d1a8cbffa5c9320be1c8e.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="87" data-theme-name="celebration animation"/> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/desktop_theme_64_fd514a660fd467c9cb6a09d2cbdf740bb47d75d5.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="64" data-theme-name="custom category filters"/> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/desktop_theme_69_6707d523c0d9fa301991b713a2b4388f1548f31e.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="69" data-theme-name="custom header links"/> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/desktop_theme_46_da6a22fcb4770e74dae3ca6ad3382cc15131c926.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="46" data-theme-name="discourse clickable topic"/> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/desktop_theme_54_edeb00cc7abec53b904279cae0441404c6a47bca.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="54" data-theme-name="discourse-gated-topics-in-category"/> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/desktop_theme_86_2463d99a50d4a1f977bbeec19ec14dee38939872.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="86" data-theme-name="follow category & topics"/> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/desktop_theme_58_fab5678924541f756e40775a021d6d2093d7606c.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="58" data-theme-name="discourse-asana-theme (localization updates)"/> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/desktop_theme_65_4dc3858af7b8bad59d3cef1a582754b831f54bd5.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="65" data-theme-name="category featured images"/> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/desktop_theme_74_ba6f711d87372189f65b29e4e0f8f2a12f3b1045.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="74" data-theme-name="category image adjustments "/> <link href="https://sea2.discourse-cdn.com/asana/stylesheets/desktop_theme_72_a75d8b15ddca8b18bb6bddeadf353764c15973a1.css?__ws=forum.asana.com" media="all" rel="stylesheet" data-target="desktop_theme" data-theme-id="72" data-theme-name="tldr customization for templates"/> <meta name="google-site-verification" content="DxotoqlMTfSRrxiKGMd-XA44xVkuFK-hBE6Fb1s_sos"> <meta name="zd-site-verification" content="5to4s8d7jjbd3lbfyoj269"> <link rel="alternate nofollow" type="application/rss+xml" title="RSS feed of 'How should we improve our client libraries?'" href="https://forum.asana.com/t/how-should-we-improve-our-client-libraries/211347.rss" /> <meta property="og:site_name" content="Asana Forum" /> <meta property="og:type" content="website" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:image" content="https://global.discourse-cdn.com/asana/original/2X/2/23b34ef5392fc258a1fd8f2536542589769767d1.png" /> <meta property="og:image" content="https://global.discourse-cdn.com/asana/original/2X/2/23b34ef5392fc258a1fd8f2536542589769767d1.png" /> <meta property="og:url" content="https://forum.asana.com/t/how-should-we-improve-our-client-libraries/211347" /> <meta name="twitter:url" content="https://forum.asana.com/t/how-should-we-improve-our-client-libraries/211347" /> <meta property="og:title" content="How should we improve our client libraries?" /> <meta name="twitter:title" content="How should we improve our client libraries?" /> <meta property="og:description" content="Hi everyone, We are evaluating potential improvements to our API client libraries. For those of you that have used one of our client libraries: Which client library do you use (Java, Node.js, PHP, Python, Ruby)? How could we make them better? What is challenging or frustrating about using them? What feature/features of our client libraries do you rely on or use (auto pagination/collection iterators, Asana change warnings, event streams/event polling)? For those that chose not to use a clien..." /> <meta name="twitter:description" content="Hi everyone, We are evaluating potential improvements to our API client libraries. For those of you that have used one of our client libraries: Which client library do you use (Java, Node.js, PHP, Python, Ruby)? How could we make them better? What is challenging or frustrating about using them? What feature/features of our client libraries do you rely on or use (auto pagination/collection iterators, Asana change warnings, event streams/event polling)? For those that chose not to use a clien..." /> <meta property="og:article:section" content="English Forum" /> <meta property="og:article:section:color" content="4573D2" /> <meta property="og:article:section" content="Developers & API" /> <meta property="og:article:section:color" content="25E8C8" /> <meta property="og:article:tag" content="client-libraries" /> <meta name="twitter:label1" value="Reading time" /> <meta name="twitter:data1" value="1 mins 🕑" /> <meta name="twitter:label2" value="Likes" /> <meta name="twitter:data2" value="12 ❤" /> <meta property="article:published_time" content="2022-10-05T22:36:35+00:00" /> <meta property="og:ignore_canonical" content="true" /> <script type="application/ld+json">{"@context":"http://schema.org","@type":"QAPage","name":"How should we improve our client libraries?","mainEntity":{"@type":"Question","name":"How should we improve our client libraries?","text":"Hi everyone,\n\nWe are evaluating potential improvements to our <a href=\"https://developers.asana.com/docs/official-client-libraries\">API client libraries<\/a>.\n\nFor those of you that have used one of our client libraries:\n\nWhich client library do you use (<a href=\"https://github.com/Asana/java-asana\">Java<\/a>, <a href=\"https://github.com/Asana/node-asana\">Node.js<\/a>, <a href=\"https://github.com/Asana/php-asana\">PHP<\/a>, <a href=\"https://github.com/Asana/python-asana\">Python<\/a>, <a href=\"https://github.com/Asana/ruby-asana\">Ruby<\/a>)?\n\nHow could we make them better?\n\nWhat is challenging or frustrating about using them?\n\nW…","upvoteCount":2,"answerCount":0,"datePublished":"2022-10-05T22:36:35.699Z","author":{"@type":"Person","name":"John_Vu","url":"https://forum.asana.com/u/John_Vu"}}}</script> </head> <body class="crawler browser-update"> <script src="https://unpkg.com/@pqina/flip/dist/flip.min.js" nonce="6ICnog2eQav2hKCkcH8ZrzLFX"></script> <link href="https://unpkg.com/@pqina/flip/dist/flip.min.css" rel="stylesheet"> <header> <a href="/"> Asana Forum </a> </header> <div id="main-outlet" class="wrap" role="main"> <div id="topic-title"> <h1> <a href="/t/how-should-we-improve-our-client-libraries/211347">How should we improve our client libraries?</a> </h1> <div class="topic-category" itemscope itemtype="http://schema.org/BreadcrumbList"> <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <a href="/c/forum-en/api/24" class="badge-wrapper bullet" itemprop="item"> <span class='badge-category-bg' style='background-color: #4573D2'></span> <span class='badge-category clear-badge'> <span class='category-name' itemprop='name'>English Forum</span> </span> </a> <meta itemprop="position" content="1" /> </span> <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <a href="/c/forum-en/api/24" class="badge-wrapper bullet" itemprop="item"> <span class='badge-category-bg' style='background-color: #25E8C8'></span> <span class='badge-category clear-badge'> <span class='category-name' itemprop='name'>Developers & API</span> </span> </a> <meta itemprop="position" content="2" /> </span> </div> <div class="topic-category"> <div class='discourse-tags list-tags'> <a href='https://forum.asana.com/tag/client-libraries' class='discourse-tag' rel="tag">client-libraries</a> </div> </div> </div> <div itemscope itemtype='http://schema.org/DiscussionForumPosting'> <meta itemprop='headline' content='How should we improve our client libraries?'> <link itemprop='url' href='https://forum.asana.com/t/how-should-we-improve-our-client-libraries/211347'> <meta itemprop='datePublished' content='2022-10-05T22:36:35Z'> <meta itemprop='articleSection' content='Developers & API'> <meta itemprop='keywords' content='client-libraries'> <div itemprop='publisher' itemscope itemtype="http://schema.org/Organization"> <meta itemprop='name' content='Asana'> <div itemprop='logo' itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop='url' content='https://global.discourse-cdn.com/asana/original/3X/5/c/5c508db2e32d82a608625dc77cf2066cf229d2b4.svg'> </div> </div> <div id='post_1' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://forum.asana.com/u/John_Vu'><span itemprop='name'>John_Vu</span></a> </span> <link itemprop="mainEntityOfPage" href="https://forum.asana.com/t/how-should-we-improve-our-client-libraries/211347"> <span class="crawler-post-infos"> <time datetime='2022-10-05T22:36:35Z' class='post-time'> 5 October 2022 22:36 </time> <meta itemprop='dateModified' content='2022-10-06T18:04:04Z'> <span itemprop='position'>1</span> </span> </div> <div class='post' itemprop='text'> <p>Hi everyone,</p> <p>We are evaluating potential improvements to our <a href="https://developers.asana.com/docs/official-client-libraries">API client libraries</a>.</p> <p>For those of you that have used one of our client libraries:</p> <ol> <li>Which client library do you use (<a href="https://github.com/Asana/java-asana">Java</a>, <a href="https://github.com/Asana/node-asana">Node.js</a>, <a href="https://github.com/Asana/php-asana">PHP</a>, <a href="https://github.com/Asana/python-asana">Python</a>, <a href="https://github.com/Asana/ruby-asana">Ruby</a>)?</li> <li>How could we make them better?</li> <li>What is challenging or frustrating about using them?</li> <li>What feature/features of our client libraries do you rely on or use (auto pagination/collection iterators, Asana change warnings, event streams/event polling)?</li> </ol> <p>For those that chose not to use a client library:</p> <ol> <li>Why did you decide not to use them?</li> <li>What improvements would we need to make in order for you to use a client library?</li> </ol> <p>Thank you for your feedback! It will help us prioritize the improvements you want. We will keep you updated on our progress.</p> <p>Best,<br> John</p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="2" /> <span class='post-likes'>2 Likes</span> </div> </div> <div id='post_2' itemprop='comment' itemscope itemtype='http://schema.org/Comment' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://forum.asana.com/u/Raed_Turkmani'><span itemprop='name'>Raed_Turkmani</span></a> </span> <span class="crawler-post-infos"> <time itemprop='datePublished' datetime='2022-10-06T00:20:25Z' class='post-time'> 6 October 2022 00:20 </time> <meta itemprop='dateModified' content='2022-10-06T00:20:25Z'> <span itemprop='position'>2</span> </span> </div> <div class='post' itemprop='text'> <p>Kindly, where can one download such a client library or SDK?</p> <p>Thank you.</p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="0" /> <span class='post-likes'></span> </div> </div> <div id='post_3' itemprop='comment' itemscope itemtype='http://schema.org/Comment' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://forum.asana.com/u/Phil_Seeman'><span itemprop='name'>Phil_Seeman</span></a> </span> <span class="crawler-post-infos"> <time itemprop='datePublished' datetime='2022-10-06T00:56:01Z' class='post-time'> 6 October 2022 00:56 </time> <meta itemprop='dateModified' content='2022-10-06T00:56:01Z'> <span itemprop='position'>3</span> </span> </div> <div class='post' itemprop='text'> <aside class="quote no-group" data-username="Raed_Turkmani" data-post="2" data-topic="211347"> <div class="title"> <div class="quote-controls"></div> <img loading="lazy" alt="" width="24" height="24" src="https://sea2.discourse-cdn.com/asana/user_avatar/forum.asana.com/raed_turkmani/48/116457_2.png" class="avatar"> Raed_Turkmani:</div> <blockquote> <p>where can one download such a client library or SDK?</p> </blockquote> </aside> <p>If you visit the link in John’s post above, that will take you to a page containing links to all of the client libraries.</p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="0" /> <span class='post-likes'></span> </div> </div> <div id='post_4' itemprop='comment' itemscope itemtype='http://schema.org/Comment' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://forum.asana.com/u/Bastien_Siebman'><span itemprop='name'>Bastien_Siebman</span></a> </span> <span class="crawler-post-infos"> <time itemprop='datePublished' datetime='2022-10-06T06:12:13Z' class='post-time'> 6 October 2022 06:12 </time> <meta itemprop='dateModified' content='2022-10-06T06:12:13Z'> <span itemprop='position'>4</span> </span> </div> <div class='post' itemprop='text'> <p>One tiny frustration has been that the client librairies are behind in terms of roadmap so if you want to use the latest features you have to make a custom call with the dispatcher directly. I would also love for them to include typing (schemas turned into classes).</p> <p>Thanks!</p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="4" /> <span class='post-likes'>4 Likes</span> </div> </div> <div id='post_5' itemprop='comment' itemscope itemtype='http://schema.org/Comment' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://forum.asana.com/u/John_Vu'><span itemprop='name'>John_Vu</span></a> </span> <span class="crawler-post-infos"> <time itemprop='datePublished' datetime='2022-10-06T22:57:08Z' class='post-time'> 6 October 2022 22:57 </time> <meta itemprop='dateModified' content='2022-10-06T22:57:08Z'> <span itemprop='position'>5</span> </span> </div> <div class='post' itemprop='text'> <p>Hi Bastien, thank you for sharing your feedback. As our API becomes more and more feature-rich, making sure that our client libraries have parity with our API is high on our list of improvements.</p> <p>We would love to understand your use case with typing (schemas turned into classes). Could you tell us more about this use case and how it improves your workflows?</p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="1" /> <span class='post-likes'>1 Like</span> </div> </div> <div id='post_6' itemprop='comment' itemscope itemtype='http://schema.org/Comment' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://forum.asana.com/u/Bastien_Siebman'><span itemprop='name'>Bastien_Siebman</span></a> </span> <link itemprop="image" href="https://global.discourse-cdn.com/asana/original/3X/d/b/db461b94b4c54e5b72bd377cf8ca947c63005e7e.png"> <span class="crawler-post-infos"> <time itemprop='datePublished' datetime='2022-10-08T13:53:01Z' class='post-time'> 8 October 2022 13:53 </time> <meta itemprop='dateModified' content='2022-10-08T13:53:01Z'> <span itemprop='position'>6</span> </span> </div> <div class='post' itemprop='text'> <aside class="quote group-Asana_Staff_Badge" data-username="John_Vu" data-post="5" data-topic="211347"> <div class="title"> <div class="quote-controls"></div> <img loading="lazy" alt="" width="24" height="24" src="https://sea2.discourse-cdn.com/asana/user_avatar/forum.asana.com/john_vu/48/97235_2.png" class="avatar"> John_Vu:</div> <blockquote> <p>We would love to understand your use case with typing (schemas turned into classes). Could you tell us more about this use case and how it improves your workflows?</p> </blockquote> </aside> <p>I believe I should not have to create such a file, it should come built-in with the lib.<br> <div class="lightbox-wrapper"><a class="lightbox" href="https://global.discourse-cdn.com/asana/original/3X/d/b/db461b94b4c54e5b72bd377cf8ca947c63005e7e.png" data-download-href="/uploads/short-url/vhMLOlWPe52jZi9nynUNkuSFmOO.png?dl=1" title="CleanShot 2022-10-08 at 15.52.12@2x"><img src="https://global.discourse-cdn.com/asana/optimized/3X/d/b/db461b94b4c54e5b72bd377cf8ca947c63005e7e_2_579x500.png" alt="CleanShot 2022-10-08 at 15.52.12@2x" data-base62-sha1="vhMLOlWPe52jZi9nynUNkuSFmOO" width="579" height="500" srcset="https://global.discourse-cdn.com/asana/optimized/3X/d/b/db461b94b4c54e5b72bd377cf8ca947c63005e7e_2_579x500.png, https://global.discourse-cdn.com/asana/optimized/3X/d/b/db461b94b4c54e5b72bd377cf8ca947c63005e7e_2_868x750.png 1.5x, https://global.discourse-cdn.com/asana/original/3X/d/b/db461b94b4c54e5b72bd377cf8ca947c63005e7e.png 2x" data-dominant-color="2D383E"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">CleanShot 2022-10-08 at 15.52.12@2x</span><span class="informations">1108×956 109 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div></p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="1" /> <span class='post-likes'>1 Like</span> </div> </div> <div id='post_8' itemprop='comment' itemscope itemtype='http://schema.org/Comment' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://forum.asana.com/u/John_Vu'><span itemprop='name'>John_Vu</span></a> </span> <span class="crawler-post-infos"> <time itemprop='datePublished' datetime='2022-10-13T19:27:50Z' class='post-time'> 13 October 2022 19:27 </time> <meta itemprop='dateModified' content='2022-10-13T20:37:47Z'> <span itemprop='position'>8</span> </span> </div> <div class='post' itemprop='text'> <p>We generated a new JavaScript/Node.js client library using <a href="https://github.com/OpenAPITools/openapi-generator">openapi-generator</a>. For example, this (<a href="https://github.com/Asana/asana-node-openapi-generator">asana-node-openapi-generator</a>) is what we get when we generated a JavaScript/Node client library from OpenAPI Generator.</p> <p>Feel free to try it out:</p> <ol> <li>Clone the package <code>git clone https://github.com/Asana/asana-node-openapi-generator.git</code></li> <li>Install the package locally <code>npm install ./asana-node-openapi-generator</code></li> <li>Create a test script file <code>touch test.js</code></li> <li>Test out an API call<br> Example code for <code>test.js</code>:</li> </ol> <pre><code class="lang-auto">const Asana = require('asana'); let defaultClient = Asana.ApiClient.instance; // Configure Bearer access token for authorization: personalAccessToken let personalAccessToken = defaultClient.authentications['personalAccessToken']; personalAccessToken.accessToken = '<YOUR_ASANA_PERSONAL_ACCESS_TOKEN>'; let apiInstance = new Asana.UsersApi(); let userGid = 'me'; // String | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. let opts = { 'optFields': ["gid","resource_type", "name", "email", "workspaces"] }; apiInstance.getUser(userGid, opts, (error, data, response) => { if (error) { console.error(error); } else { console.log('API called successfully. Returned data: ' + JSON.stringify(data)); } }); </code></pre> <ol start="5"> <li>Run the script <code>node test.js</code></li> </ol> <p>How does this compare to other client libraries you have used? Is this more intuitive and better practice than what we currently offer? Feel free to try out other endpoints based on the <a href="https://github.com/Asana/asana-node-openapi-generator#documentation-for-api-endpoints">documentation that was generated.</a></p> <p>For context this is what making the same call would look like with our current Node.js client library</p> <pre><code class="lang-auto">const asana = require('asana'); const client = asana.Client.create().useAccessToken('<YOUR_ASANA_PERSONAL_ACCESS_TOKEN>'); client.users.getUser('me', {optFields: ["gid","resource_type", "name", "email", "workspaces"]}) .then((result) => { console.log(result); }); </code></pre> <p><a class="mention" href="/u/bastien">@Bastien</a> I do believe this adds typing to the client library. For example, this is the <a href="https://github.com/Asana/asana-node-openapi-generator/blob/main/src/model/TaskBase.js">TaskBase</a> class that was generated.</p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="3" /> <span class='post-likes'>3 Likes</span> </div> </div> <div id='post_9' itemprop='comment' itemscope itemtype='http://schema.org/Comment' class='topic-body crawler-post'> <div class='crawler-post-meta'> <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person"> <a itemprop="url" href='https://forum.asana.com/u/John_Vu'><span itemprop='name'>John_Vu</span></a> </span> <span class="crawler-post-infos"> <time itemprop='datePublished' datetime='2023-04-20T20:01:01Z' class='post-time'> 20 April 2023 20:01 </time> <meta itemprop='dateModified' content='2023-04-21T07:27:29Z'> <span itemprop='position'>9</span> </span> </div> <div class='post' itemprop='text'> <p>Hi everyone,</p> <p>Just wanted to follow up in this thread with the announcement of our preview <a href="https://github.com/Asana/node-asana-preview">Node.js</a> and <a href="https://github.com/Asana/python-asana-preview">Python</a> client libraries:</p> <aside class="quote quote-modified" data-post="1" data-topic="394881"> <div class="title"> <div class="quote-controls"></div> <img loading="lazy" alt="" width="24" height="24" src="https://sea2.discourse-cdn.com/asana/user_avatar/forum.asana.com/john_vu/48/97235_2.png" class="avatar"> <a href="https://forum.asana.com/t/try-an-early-preview-of-our-new-node-js-and-python-sdks/394881">Try an early preview of our new Node.js and Python SDKs</a> <a class="badge-category__wrapper " href="/c/forum-en/api/news/97"><span data-category-id="97" data-parent-category-id="24" data-drop-close="true" class="badge-category --has-parent" title="Hi Everyone,"><span class="badge-category__name">Platform News</span></span></a> </div> <blockquote> Hello everyone, We have been exploring ways to modernize and improve our SDKs. We are actively working on the next version of our <a href="https://github.com/Asana/node-asana-preview">Node.js</a> and <a href="https://github.com/Asana/python-asana-preview">Python</a> SDKs and we’re ready to share a preview with our developers. We’d love your early feedback to learn more about the quality and usability improvements we’ve made. We’ve picked these first few endpoints because they are the most popular. We’ll continue to roll out new endpoints for these previews in the weeks to come. Let us know which endpoints you… </blockquote> </aside> <p>We are looking for feedback so that we can iterate. Please leave your feedback in the above forum thread or through our <a href="https://form-beta.asana.com/?k=C4sELCq6hAUsoWEY0kJwAA&d=15793206719">developer document feedback form</a>.</p> </div> <div itemprop="interactionStatistic" itemscope itemtype="http://schema.org/InteractionCounter"> <meta itemprop="interactionType" content="http://schema.org/LikeAction"/> <meta itemprop="userInteractionCount" content="1" /> <span class='post-likes'>1 Like</span> </div> </div> </div> <div id="related-topics" class="more-topics__list " role="complementary" aria-labelledby="related-topics-title"> <h3 id="related-topics-title" class="more-topics__list-title"> Related topics </h3> <div class="topic-list-container" itemscope itemtype='http://schema.org/ItemList'> <meta itemprop='itemListOrder' content='http://schema.org/ItemListOrderDescending'> <table class='topic-list'> <thead> <tr> <th>Topic</th> <th></th> <th class="replies">Replies</th> <th class="views">Views</th> <th>Activity</th> </tr> </thead> <tbody> <tr class="topic-list-item" id="topic-list-item-50951"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='1'> <span class="link-top-line"> <a itemprop='url' href='https://forum.asana.com/t/topicality-of-official-asana-sdks/50951' class='title raw-link raw-topic-link'>Topicality of official Asana SDKs</a> </span> <div class="link-bottom-line"> <a href='/c/forum-en/api/24' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #25E8C8'></span> <span class='badge-category clear-badge'> <span class='category-name'>Developers & API</span> </span> </a> <div class="discourse-tags"> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>7</span> </td> <td class="views"> <span class='views' title='views'>1524</span> </td> <td> 31 October 2019 </td> </tr> <tr class="topic-list-item" id="topic-list-item-394881"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='2'> <span class="link-top-line"> <a itemprop='url' href='https://forum.asana.com/t/try-an-early-preview-of-our-new-node-js-and-python-sdks/394881' class='title raw-link raw-topic-link'>Try an early preview of our new Node.js and Python SDKs</a> </span> <div class="link-bottom-line"> <a href='/c/forum-en/api/news/97' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #0088CC'></span> <span class='badge-category clear-badge'> <span class='category-name'>Platform News</span> </span> </a> <div class="discourse-tags"> <a href='https://forum.asana.com/tag/client-libraries' class='discourse-tag'>client-libraries</a> , <a href='https://forum.asana.com/tag/sdks' class='discourse-tag'>sdks</a> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>0</span> </td> <td class="views"> <span class='views' title='views'>1092</span> </td> <td> 11 April 2023 </td> </tr> <tr class="topic-list-item" id="topic-list-item-524656"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='3'> <span class="link-top-line"> <a itemprop='url' href='https://forum.asana.com/t/why-create-a-new-node-asana-sdk/524656' class='title raw-link raw-topic-link'>Why create a new Node-asana SDK?</a> </span> <div class="link-bottom-line"> <a href='/c/forum-en/api/24' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #25E8C8'></span> <span class='badge-category clear-badge'> <span class='category-name'>Developers & API</span> </span> </a> <div class="discourse-tags"> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>9</span> </td> <td class="views"> <span class='views' title='views'>1026</span> </td> <td> 28 October 2024 </td> </tr> <tr class="topic-list-item" id="topic-list-item-763740"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='4'> <span class="link-top-line"> <a itemprop='url' href='https://forum.asana.com/t/new-python-client-library/763740' class='title raw-link raw-topic-link'>[New] Python client library</a> </span> <div class="link-bottom-line"> <a href='/c/forum-en/api/api-changelog/204' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #A4CF30'></span> <span class='badge-category clear-badge'> <span class='category-name'>Changelog</span> </span> </a> <div class="discourse-tags"> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>2</span> </td> <td class="views"> <span class='views' title='views'>1161</span> </td> <td> 4 April 2024 </td> </tr> <tr class="topic-list-item" id="topic-list-item-47330"> <td class="main-link" itemprop='itemListElement' itemscope itemtype='http://schema.org/ListItem'> <meta itemprop='position' content='5'> <span class="link-top-line"> <a itemprop='url' href='https://forum.asana.com/t/2019-developer-survey-findings/47330' class='title raw-link raw-topic-link'>2019 Developer Survey Findings</a> </span> <div class="link-bottom-line"> <a href='/c/forum-en/api/news/97' class='badge-wrapper bullet'> <span class='badge-category-bg' style='background-color: #0088CC'></span> <span class='badge-category clear-badge'> <span class='category-name'>Platform News</span> </span> </a> <div class="discourse-tags"> </div> </div> </td> <td class="replies"> <span class='posts' title='posts'>1</span> </td> <td class="views"> <span class='views' title='views'>2849</span> </td> <td> 15 April 2019 </td> </tr> </tbody> </table> </div> </div> </div> <footer class="container wrap"> <nav class='crawler-nav'> <ul> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='/' itemprop="url">Home </a> </span> </li> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='/categories' itemprop="url">Categories </a> </span> </li> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='/guidelines' itemprop="url">Guidelines </a> </span> </li> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='https://asana.com/terms' itemprop="url">Terms of Service </a> </span> </li> <li itemscope itemtype='http://schema.org/SiteNavigationElement'> <span itemprop='name'> <a href='https://asana.com/terms#privacy-policy' itemprop="url">Privacy Policy </a> </span> </li> </ul> </nav> <p class='powered-by-link'>Powered by <a href="https://www.discourse.org">Discourse</a>, best viewed with JavaScript enabled</p> </footer> <footer class="siteFooter"> <div class="siteFooter__main__wrapper py-2 py-sm-5"> <div class="container -wide"> <div class="siteFooter__row"> <div class="siteFooter__logo mb-3 mb-md-0"> <a href="https://asana.com/?noredirect" class="siteFooter__logo-icon"> <span class="sr-only">Asana Logo</span> <svg class="icon-svg icon-svg--dots icon--white" width="10" height="10" viewBox="0 0 32 32" preserveAspectRatio="xMinYMin"> <path d="M23.1,8.1c0,3.8-3.1,6.9-7,6.9s-7-3.1-7-6.9c0-3.8,3.1-6.9,7-6.9S23.1,4.3,23.1,8.1C23.1,8.1,23.1,8.1,23.1,8.1z M7.1,16.7c-3.8,0-7,3.1-7,6.9s3.1,6.9,7,6.9s7-3.1,7-6.9S10.9,16.7,7.1,16.7C7.1,16.7,7.1,16.7,7.1,16.7z M25.1,16.7c-3.8,0-7,3.1-7,6.9s3.1,6.9,7,6.9s7-3.1,7-6.9S29,16.7,25.1,16.7C25.1,16.7,25.1,16.7,25.1,16.7z"></path> </svg> </a> </div> <ul class="siteFooter__list"> <li class="siteFooter__title">New to Asana?</li> <li class="siteFooter__item"> <a href="https://asana.com/product" class="-white">Product overview</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/features" class="-white">All features</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/whats-new" class="-white">Latest feature release</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/pricing" class="-white">Pricing</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/plan/starter" class="-white">Starter plan</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/plan/advanced" class="-white">Advanced plan</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/enterprise" class="-white">Enterprise</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/apps" class="-white">App integrations</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/product/ai" class="-white">AI work management</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/resources/benefits-project-management" class="-white">Project management</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/resources/resource-management-plan" class="-white">Resource management</a> </li> </ul> <ul class="siteFooter__list"> <li class="siteFooter__title">Use cases</li> <li class="siteFooter__item"> <a href="https://asana.com/uses/campaign-management" class="-white">Campaign management</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/uses/content-calendar" class="-white">Content calendar</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/uses/creative-production" class="-white">Creative production</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/uses/goal-management" class="-white">Goal management</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/uses/employee-onboarding" class="-white">New hire onboarding</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/uses/organizational-planning" class="-white">Organizational planning</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/uses/product-launch" class="-white">Product launches</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/uses/resource-planning" class="-white">Resource planning</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/uses/marketing-strategic-planning" class="-white">Strategic planning</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/uses/project-intake" class="-white">Project intake</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/uses" class="-white">All use cases</a> </li> </ul> <ul class="siteFooter__list"> <li class="siteFooter__title">Solutions</li> <li class="siteFooter__item"> <a href="https://asana.com/teams/marketing" class="-white">Marketing</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/teams/operations" class="-white">Operations</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/teams/it" class="-white">IT</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/teams/product-managers" class="-white">Product</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/teams/sales" class="-white">Sales</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/industry/healthcare" class="-white">Healthcare</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/industry/retail" class="-white">Retail</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/education" class="-white">Education</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/industry/nonprofit" class="-white">Nonprofits</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/teams" class="-white">All Teams</a> </li> </ul> <ul class="siteFooter__list"> <li class="siteFooter__title">Resources</li> <li class="siteFooter__item"> <a href="https://help.asana.com/s/" class="-white" target="_blank" rel="noopener noreferrer">Help Center</a> </li> <li class="siteFooter__item"> <a href="https://help.asana.com/s/#chat" class="-white" target="_blank" rel="noopener noreferrer">Get support</a> </li> <li class="siteFooter__item"> <a href="https://academy.asana.com/" class="-white" target="_blank" rel="noopener noreferrer">Asana Academy</a> </li> <li class="siteFooter__item"> <a href="http://asana.com/certifications" class="-white">Certifications</a> </li> <li class="siteFooter__item"> <a href="https://forum.asana.com/" class="-white" target="_blank" rel="noopener noreferrer">Forum</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/resources" class="-white">Resource hub</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/templates" class="-white">Project templates</a> </li> <li class="siteFooter__item"> <a href="https://events.asana.com/" class="-white" target="_blank" rel="noopener noreferrer">Events</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/customer-success" class="-white">Customer Success</a> </li> <li class="siteFooter__item"> <a href="https://developers.asana.com/docs/" class="-white" target="_blank" rel="noopener noreferrer">Developers and API</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/partners" class="-white">Partners</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/site-map" class="-white">Sitemap</a> </li> </ul> <ul class="siteFooter__list"> <li class="siteFooter__title">Company</li> <li class="siteFooter__item"> <a href="https://asana.com/company" class="-white">About us</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/leadership" class="-white">Leadership</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/customers" class="-white">Customers</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/jobs" class="-white">Careers</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/inside-asana" class="-white">Inside Asana</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/diversity-and-inclusion" class="-white">Diversity</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/press" class="-white">Press</a> </li> <li class="siteFooter__item"> <a href="https://investors.asana.com/" class="-white" target="_blank" rel="noopener noreferrer">Investor relations</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/trust" class="-white">Trust and security</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/privacy" class="-white">Privacy</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/terms/modern-slavery-statement" class="-white">Supplier responsibility</a> </li> <li class="siteFooter__item"> <a href="https://asana.com/esg/" class="-white">Sustainability and ESG</a> </li> </ul> </div> </div> </div> <div class="siteFooter__secondary__wrapper"> <div class="container -wide"> <div class="siteFooter__row"> <div class="siteFooter__secondary__col-wrapper"> <div class="siteFooter__secondary__col"> <span title="Copyright"> © Asana, Inc. </span> </div> <div class="siteFooter__secondary__col siteFooter__secondary__col--terms"> <a href="https://asana.com/terms" title="Terms & Privacy" class="-white"> Terms & Privacy </a> </div> <div class="siteFooter__secondary__col siteFooter__secondary__col--social"> <a href="https://twitter.com/intent/follow?screen_name=asana" target="_blank" rel="noopener noreferrer"> <img src="https://luna1.co/twitter_icon-circle.svg" alt="twitter"> </a> <a href="https://www.linkedin.com/company/asana" target="_blank" rel="noopener noreferrer"> <img src="https://luna1.co/linkedin_icon-circle.svg" alt="linkedin"> </a> <a href="https://www.instagram.com/asana" target="_blank" rel="noopener noreferrer"> <img src="https://luna1.co/instagram_icon-circle.svg" alt="instagram"> </a> <a href="https://www.facebook.com/asana" target="_blank" rel="noopener noreferrer"> <img src="https://luna1.co/facebook_icon-circle.svg" alt="facebook"> </a> <a href="https://www.youtube.com/channel/UC2BoogM0AqwOJyoSp1S4ClQ" target="_blank" rel="noopener noreferrer"> <img src="https://luna1.co/youtube_icon-circle.svg" alt="youtube"> </a> </div> <div class="siteFooter__secondary__col"> <a href="https://itunes.apple.com/us/app/asana-mobile/id489969512?mt=8" data-ois-button="" class="siteFooter-mobile-button"> <img src="https://luna1.co/Download_App_Store_Badge_US.svg" alt="Download App Button" title="Download App"> </a> <a href="https://play.google.com/store/apps/details?id=com.asana.app&referrer=noredirect" data-android-button="" class="siteFooter-mobile-button"> <img src="https://luna1.co/Google_Play_EN.svg" alt="Download App Button" title="Download App"> </a> </div> </div> </div> </div> </div> </footer> <style> .siteFooter a { cursor: auto; } .siteFooter ::selection { background-color: #95e0ff; color: #222b37; text-shadow: none; } .siteFooter a { background-color: transparent; color: #796eff; cursor: pointer; font-weight: 500; text-decoration: none; transition: color 0.3s; } .siteFooter a:hover { border-bottom: 2px solid #635ac7; color: #635ac7; text-decoration: none; } .siteFooter a.-white { border-bottom: 2px solid #edf1f2; color: #fff; } .siteFooter a.-white:hover { border-bottom-color: #fff; } .siteFooter .container { box-sizing: border-box; margin-left: auto; margin-right: auto; transition: width 0.15s; width: calc(100% - 64px); } .siteFooter .container.-wide { max-width: 1312px; width: calc(100% - 128px); } @media (max-width: 48em) { .siteFooter .container.-wide { width: calc(100% - 96px); } } @media (max-width: 30em) { .siteFooter .container.-wide { width: calc(100% - 32px); } } .siteFooter ul { box-sizing: border-box; list-style-type: disc; margin: 0; margin-bottom: 32px; padding-left: 32px; } .siteFooter ul li { margin-bottom: 8px; position: relative; } .siteFooter :last-child { margin-bottom: 0 !important; } .siteFooter .icon--white { color: #fff; } .siteFooter li { list-style-type: none; } .siteFooter a { font-size: 14px; } .siteFooter a.-white { color: #fff; border-bottom: none; font-weight: 400; } .siteFooter a.-white:hover { border-bottom: 1px solid #fff; } .siteFooter .siteFooter__row { display: flex; flex-direction: row; flex-wrap: wrap; } .siteFooter .siteFooter__logo { box-sizing: border-box; flex-basis: 100%; padding: 0 15px; } @media (min-width: 60em) { .siteFooter .siteFooter__logo { flex-basis: 8.33333%; } } .siteFooter .siteFooter__logo-icon { display: inline-block; position: relative; height: 25px; width: 25px; } .siteFooter .siteFooter__logo-icon:before { content: ""; display: block; width: 35px; height: 35px; position: absolute; background: #222b37; border-radius: 3px; top: 50%; left: 50%; transform: translate(-50%, -50%); opacity: 0; z-index: 0; border: 3px solid transparent; transition: opacity 0.2s ease-in-out, outline-color 0.2s ease-in-out; } .siteFooter .siteFooter__logo-icon:hover { border: none; } .siteFooter .siteFooter__logo-icon:hover:before { opacity: 1; } .siteFooter .siteFooter__logo-icon:focus { outline: none; } .siteFooter .siteFooter__logo-icon:focus:before { opacity: 1; border-color: #fff; } .siteFooter .siteFooter__logo-icon svg { height: 24px; width: 24px; position: relative; z-index: 1; } .siteFooter .siteFooter__list { flex-basis: 50%; padding: 0 15px; margin-bottom: 64px; } @media (min-width: 48em) { .siteFooter .siteFooter__list { flex-basis: 33.33333%; } } @media (min-width: 60em) { .siteFooter .siteFooter__list { flex-basis: 25%; } .siteFooter .siteFooter__list:nth-of-type(4) { margin-left: 8.33333%; } } @media (min-width: 70em) { .siteFooter .siteFooter__list { flex-basis: 16.66667%; margin-bottom: 0; } .siteFooter .siteFooter__list:nth-of-type(4) { margin-left: 0; } } .siteFooter .siteFooter__title { color: #9ca6af; font-weight: 500; margin-bottom: 32px; font-size: 14px; } .siteFooter .siteFooter__item { hyphens: auto; -webkit-hyphens: auto; -moz-hyphens: auto; word-wrap: break-word; margin-bottom: 14px; } .siteFooter .siteFooter__item:last-child { margin-bottom: 0; } @media (max-width: 59.9375em) { .siteFooter .siteFooter__item { margin-bottom: 12px; } .siteFooter .siteFooter__item a { font-size: 12px; } } .siteFooter .siteFooter__main__wrapper { background-color: #151b26; } @media (min-width: 960px) { .siteFooter .mb-md-0 { margin-bottom: 0 !important; } } .siteFooter .py-2 { padding-top: 32px !important; padding-bottom: 32px !important; } .siteFooter .mb-3 { margin-bottom: 48px !important; } @media (min-width: 768px) { .siteFooter .py-sm-5 { padding-top: 80px !important; padding-bottom: 80px !important; } } .siteFooter .siteFooter__secondary__wrapper { background-color: #222b37; color: #fff; padding-bottom: 32px; padding-top: 32px; } .siteFooter .siteFooter__secondary__col-wrapper { flex-basis: 100%; margin: 0 8.33333%; padding: 0 15px; display: flex; flex-flow: row wrap; justify-content: space-between; align-items: center; } .siteFooter .siteFooter__secondary__col { display: flex; justify-content: center; align-items: center; margin-bottom: 32px; flex-basis: 100%; } @media (min-width: 60em) { .siteFooter .siteFooter__secondary__col { margin-bottom: 0; flex-basis: auto; } } .siteFooter .siteFooter__secondary__col--terms { align-items: center; } .siteFooter .siteFooter__secondary__col--social a { font-size: 1.375rem; border-bottom: none; width: 32px; margin: 0 1.5px; } .siteFooter .siteFooter__secondary__col--social a:hover { border-bottom: none !important; filter: invert(1) contrast(2); } .siteFooter .siteFooter-mobile-button { display: block; margin-right: 5px; } .siteFooter .siteFooter-mobile-button:hover { border-bottom: none; } .siteFooter .siteFooter-mobile-button img { height: 40px; opacity: 0.6; transition: opacity 225ms; } .siteFooter .siteFooter-mobile-button img:hover { opacity: 1; } .siteFooter .icon--white path { fill: #fff; } </style> <script defer="" src="https://sea2.discourse-cdn.com/asana/theme-javascripts/5b2e5581ebec98d78ee87a58e3848c5eea4e660e.js?__ws=forum.asana.com" data-theme-id="58" nonce="6ICnog2eQav2hKCkcH8ZrzLFX"></script> <div class="buorg"><div>Unfortunately, <a href="https://www.discourse.org/faq/#browser">your browser is unsupported</a>. Please <a href="https://browsehappy.com">switch to a supported browser</a> to view rich content, log in and reply.</div></div> </body> </html>