{"id":13072,"date":"2014-06-02T18:05:24","date_gmt":"2014-06-02T12:35:24","guid":{"rendered":"http:\/\/blog.fusioncharts.com\/?p=13072"},"modified":"2026-01-20T14:40:45","modified_gmt":"2026-01-20T09:10:45","slug":"extend-jsdoc-api-documentation-through-tutorials","status":"publish","type":"post","link":"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/","title":{"rendered":"Extend JSDoc API Documentation Through Tutorials 2026"},"content":{"rendered":"<a href=\"https:\/\/usejsdoc.org\">JSDoc<\/a> aids in the creation of API documentation for JavaScript projects by maintaining a close relationship between source code and documentation content. After comparing tools for JavaScript API documentation, we decided on JSDoc for documenting the <a href=\"https:\/\/www.fusioncharts.com\">FusionCharts<\/a> library. Though JSDoc may appear to be a bit large for smaller projects, it has a lot of power under the hood.\r\n\r\nJSDoc can be used to write additional articles that can be shipped with the API documentation in addition to annotating source code. In JSDoc parlance, these articles are referred to as &#8220;<a href=\"https:\/\/usejsdoc.org\/about-tutorials.html\">tutorials<\/a>.&#8221; Tutorials are one of JSDoc&#8217;s less-used features, but they are extremely useful for a documentation team attempting to ship a unified documentation pack for its product.\r\n\r\nIn this blog post, we&#8217;ll discuss how tutorials can be created, organized, and rendered with API documentation using JSDoc. If you\u2019re looking for a\u00a0<a href=\"https:\/\/www.fusioncharts.com\/fusioncharts\">Data Visualization Tool<\/a>, we suggest using fusioncharts for creating tutorials.\r\n\r\n<!--more-->\r\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_71 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#Creating_tutorials\" title=\"Creating tutorials\">Creating tutorials<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#Linking_to_a_tutorial\" title=\"Linking to a tutorial\">Linking to a tutorial<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#Provide_meta_information_for_tutorials\" title=\"Provide meta information for tutorials\">Provide meta information for tutorials<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#Nesting_tutorials_as_children\" title=\"Nesting tutorials as children\">Nesting tutorials as children<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#Organizing_tutorials\" title=\"Organizing tutorials\">Organizing tutorials<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#Rendering_tutorials\" title=\"Rendering tutorials\">Rendering tutorials<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#Passing_path_to_tutorials_folder_on_commandline\" title=\"Passing path to tutorials folder on commandline\">Passing path to tutorials folder on commandline<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#Specifying_tutorial_path_in_the_configuration\" title=\"Specifying tutorial path in the configuration\">Specifying tutorial path in the configuration<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#Why_not_write_documentation_separately\" title=\"Why not write documentation separately?\">Why not write documentation separately?<\/a><\/li><\/ul><\/nav><\/div>\n<h2 id=\"creating-tutorials\"><span class=\"ez-toc-section\" id=\"Creating_tutorials\"><\/span>Creating tutorials<span class=\"ez-toc-section-end\"><\/span><\/h2>\r\nTutorials can be written as Markdown or as pure HTML. So, each tutorial in JSDoc is either a Markdown or a HTML file with just the content of the article. JSDoc takes care of putting the content in the right place, applying styles to the text and generating a separate page for the tutorial within the documentation output. e.g., a tutorial file can be named <code>getting-started.md<\/code>.\r\n<h3 id=\"linking-to-a-tutorial\"><span class=\"ez-toc-section\" id=\"Linking_to_a_tutorial\"><\/span>Linking to a tutorial<span class=\"ez-toc-section-end\"><\/span><\/h3>\r\nThe name of the file, without the extension, becomes the internal machine name of the tutorial. This name can be used in the annotated source or in other tutorials to link to the tutorial using <code>@tutorial<\/code> directive.\r\n\r\nSo, the internal name for the tutorial in our example would be <code>getting-started<\/code> and the code to link to it from a documentation block would be:\r\n<pre class=\"lang:javascript\">@tutorial getting-started<\/pre>\r\nWhen linking from another tutorial, the directive has to be wrapped in curly braces, so the code will become:\r\n<pre class=\"lang:javascript\">{@tutorial getting-started}<\/pre>\r\nOn compilation, JSDoc will replace that portion with a link to the tutorial file.\r\n<h3 id=\"provide-meta-information-for-tutorials\"><span class=\"ez-toc-section\" id=\"Provide_meta_information_for_tutorials\"><\/span>Provide meta information for tutorials<span class=\"ez-toc-section-end\"><\/span><\/h3>\r\nA tutorial can be accompanied by an optional JSON file containing meta information about the tutorial. This file has to be named the same as the tutorial it refers to. The JSON meta file name for the tutorial example mentioned above will be <code>getting-started.json<\/code>.\r\n\r\nThe content of the JSON meta file is an <code>object<\/code> with two important <code>properties<\/code>. Both the properties are optional:\r\n<ul>\r\n \t<li><code>title<\/code>: This value becomes the tutorial\u2019s title. It is shown on the tutorial\u2019s page as the page title and is used as the anchor tag text in links to the tutorial. This is different from the internal machine name. The internal machine name of a tutorial is always derived from the file name. So, a tutorial\u2019s title can be changed anytime without changing its filename. If the title is changed, all references to that tutorial will automatically update to the new title provided.<\/li>\r\n \t<li><code>children<\/code>: This is an array of tutorial names that are rendered as children of the current tutorial. More on this in the following section.<\/li>\r\n<\/ul>\r\nAn example of content for the JSON file can be:\r\n<pre class=\"lang:javascript\">{\r\n    \"title\": \"Getting Started\",\r\n    \"children\": [\r\n        \"building-your-first-chart\",\r\n        \"configuring-your-chart\"\r\n    ]\r\n}<\/pre>\r\n<h3 id=\"nesting-tutorials-as-children\"><span class=\"ez-toc-section\" id=\"Nesting_tutorials_as_children\"><\/span>Nesting tutorials as <code>children<\/code><span class=\"ez-toc-section-end\"><\/span><\/h3>\r\nTutorials can be specified as children of other tutorials through the <code>children<\/code> property in the parent tutorial\u2019s JSON metadata. This helps in organizing entire documentation into a tree with neat sections.\r\n\r\nThe nesting, however, is at the meta level. The child tutorials still remain in the same location, their file names upon compilation remain the same. They simply show up as sub-articles under their parent tutorial in the generated documentation and do not appear on the main \u201cTutorials\u201d menu anymore.\r\n\r\nJSDoc handles any cyclic dependency which may result from specifying the parent tutorial in the <code>children<\/code> property of the child tutorial. In this case, JSDoc takes only the first instance of the relation. If it already knows that a given tutorial is a child of a parent, it will ignore any further relation it finds to the parent from the child.\r\n<h2 id=\"organizing-tutorials\"><span class=\"ez-toc-section\" id=\"Organizing_tutorials\"><\/span>Organizing tutorials<span class=\"ez-toc-section-end\"><\/span><\/h2>\r\nAs of JSDoc 3.3.0-alpha5, all tutorials have to be put in one folder. The tutorial parser only checks in the first level of that folder and does not recurse in subfolders. This may prove to be problematic for documentation projects having more than 100 articles as tutorials. Things tend to go out of control very soon if proper file names are not used to namespace sections in the documentation.\r\n\r\nAt FusionCharts, we handled this issue by keeping our tutorial files in different directories and writing a script which copies them to one temporary directory each time JSDoc is run.\r\n<h2 id=\"rendering-tutorials\"><span class=\"ez-toc-section\" id=\"Rendering_tutorials\"><\/span>Rendering tutorials<span class=\"ez-toc-section-end\"><\/span><\/h2>\r\nFinally, let us look at how to build tutorials along with API documentation. There are two ways to do this: directly passing the path to the tutorials folder on the commandline or adding the path to JSDoc\u2019s configuration.\r\n<h3 id=\"passing-path-to-tutorials-folder-on-commandline\"><span class=\"ez-toc-section\" id=\"Passing_path_to_tutorials_folder_on_commandline\"><\/span>Passing path to tutorials folder on commandline<span class=\"ez-toc-section-end\"><\/span><\/h3>\r\nJSDoc provides the <code>-u<\/code> switch for providing path to the tutorial folder. This path is relative to the directory from which JSDoc is executed. Assuming the tutorials are kept in <code>.\/docs\/tutorials<\/code>, the command for running JSDoc has to be modified to:\r\n<pre class=\"lang: bash\">$ jsdoc [options] -u \".\/docs\/tutorials\"<\/pre>\r\nEven if the tutorial path is specified in the configuration, specifying it on the commandline takes precedence over the configuration.\r\n<h3 id=\"specifying-tutorial-path-in-the-configuration\"><span class=\"ez-toc-section\" id=\"Specifying_tutorial_path_in_the_configuration\"><\/span>Specifying tutorial path in the configuration<span class=\"ez-toc-section-end\"><\/span><\/h3>\r\nIf the project uses a configuration file for JSDoc, the configuration file needs a new property called <code>tutorials<\/code> under the <code>opts<\/code> property in the configuration. The value of the <code>tutorials<\/code> property will be a string containing relative path to the tutorials directory. Taking the same example above, the configuration file would look like:\r\n<pre class=\"lang:javascript\">{\r\n    \u2026\r\n    \"opts\": {\r\n        \u2026\r\n        \"tutorials\": \".\/docs\/tutorials\"\r\n    }\r\n}<\/pre>\r\n<h2 id=\"why-not-write-documentation-separately\"><span class=\"ez-toc-section\" id=\"Why_not_write_documentation_separately\"><\/span>Why not write documentation separately?<span class=\"ez-toc-section-end\"><\/span><\/h2>\r\nThe main reason is: the entire documentation is served as one single package. If a product has an API whose end users are developers, it would aid the end-users greatly if they could have more clarity on how a particular method works and when they should use it.\r\n\r\nAlso, if an API method, event, member, or namespace needs elaboration, it becomes unmanageable to write lengthy details in the source code annotation. It gets troublesome for an end-user to read such documentation. So, it makes sense to write lengthy details as a separate article and link that article from the API item.\r\n\r\nOn top of that, the documentation source can be version controlled and be part of the project repository. How cool is that?\r\n\r\nAt FusionCharts, we have adopted JSDoc tutorials extensively in our documentation and we are happy with the flexibility we have.","protected":false},"excerpt":{"rendered":"<p>JSDoc aids in the creation of API documentation for JavaScript projects by maintaining a close relationship between source code and documentation content. After comparing tools for JavaScript API documentation, we decided on JSDoc for documenting the FusionCharts library. Though JSDoc may appear to be a bit large for smaller projects, it has a lot of [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21],"tags":[32,513,218],"coauthors":[690],"class_list":["post-13072","post","type-post","status-publish","format-standard","hentry","category-thoughts","tag-apis","tag-documentation","tag-jsdoc"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Extend JSDoc API Documentation Through Tutorials 2026<\/title>\n<meta name=\"description\" content=\"JSDoc makes creating API documentation easy. Learn how to maintain the relationship between your source code and 2026 project documentation right today.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Extend JSDoc API Documentation Through Tutorials 2026\" \/>\n<meta property=\"og:description\" content=\"JSDoc makes creating API documentation easy. Learn how to maintain the relationship between your source code and 2026 project documentation right today.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/\" \/>\n<meta property=\"og:site_name\" content=\"FusionBrew - The FusionCharts Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-06-02T12:35:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-20T09:10:45+00:00\" \/>\n<meta name=\"author\" content=\"Kaustav Das Modak\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kaustav Das Modak\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\n\t    \"@context\": \"https:\/\/schema.org\",\n\t    \"@graph\": [\n\t        {\n\t            \"@type\": \"Article\",\n\t            \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#article\",\n\t            \"isPartOf\": {\n\t                \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/\"\n\t            },\n\t            \"author\": {\n\t                \"name\": \"Kaustav Das Modak\",\n\t                \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/#\/schema\/person\/d6727c5ac5aea0fd6fa833a417c15457\"\n\t            },\n\t            \"headline\": \"Extend JSDoc API Documentation Through Tutorials 2026\",\n\t            \"datePublished\": \"2014-06-02T12:35:24+00:00\",\n\t            \"dateModified\": \"2026-01-20T09:10:45+00:00\",\n\t            \"mainEntityOfPage\": {\n\t                \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/\"\n\t            },\n\t            \"wordCount\": 1063,\n\t            \"commentCount\": 0,\n\t            \"publisher\": {\n\t                \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/#organization\"\n\t            },\n\t            \"keywords\": [\n\t                \"APIs\",\n\t                \"documentation\",\n\t                \"jsdoc\"\n\t            ],\n\t            \"articleSection\": [\n\t                \"Thoughts\"\n\t            ],\n\t            \"inLanguage\": \"en-US\",\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"CommentAction\",\n\t                    \"name\": \"Comment\",\n\t                    \"target\": [\n\t                        \"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#respond\"\n\t                    ]\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"WebPage\",\n\t            \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/\",\n\t            \"url\": \"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/\",\n\t            \"name\": \"Extend JSDoc API Documentation Through Tutorials 2026\",\n\t            \"isPartOf\": {\n\t                \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/#website\"\n\t            },\n\t            \"datePublished\": \"2014-06-02T12:35:24+00:00\",\n\t            \"dateModified\": \"2026-01-20T09:10:45+00:00\",\n\t            \"description\": \"JSDoc makes creating API documentation easy. Learn how to maintain the relationship between your source code and 2026 project documentation right today.\",\n\t            \"breadcrumb\": {\n\t                \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#breadcrumb\"\n\t            },\n\t            \"inLanguage\": \"en-US\",\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"ReadAction\",\n\t                    \"target\": [\n\t                        \"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/\"\n\t                    ]\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"BreadcrumbList\",\n\t            \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#breadcrumb\",\n\t            \"itemListElement\": [\n\t                {\n\t                    \"@type\": \"ListItem\",\n\t                    \"position\": 1,\n\t                    \"name\": \"Home\",\n\t                    \"item\": \"https:\/\/www.fusioncharts.com\/blog\/\"\n\t                },\n\t                {\n\t                    \"@type\": \"ListItem\",\n\t                    \"position\": 2,\n\t                    \"name\": \"Extend JSDoc API Documentation Through Tutorials 2026\"\n\t                }\n\t            ]\n\t        },\n\t        {\n\t            \"@type\": \"WebSite\",\n\t            \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/#website\",\n\t            \"url\": \"https:\/\/www.fusioncharts.com\/blog\/\",\n\t            \"name\": \"FusionBrew - The FusionCharts Blog\",\n\t            \"description\": \"Get tips and tricks on how to build effective Data Visualisation using FusionCharts\",\n\t            \"publisher\": {\n\t                \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/#organization\"\n\t            },\n\t            \"potentialAction\": [\n\t                {\n\t                    \"@type\": \"SearchAction\",\n\t                    \"target\": {\n\t                        \"@type\": \"EntryPoint\",\n\t                        \"urlTemplate\": \"https:\/\/www.fusioncharts.com\/blog\/?s={search_term_string}\"\n\t                    },\n\t                    \"query-input\": {\n\t                        \"@type\": \"PropertyValueSpecification\",\n\t                        \"valueRequired\": true,\n\t                        \"valueName\": \"search_term_string\"\n\t                    }\n\t                }\n\t            ],\n\t            \"inLanguage\": \"en-US\"\n\t        },\n\t        {\n\t            \"@type\": \"Organization\",\n\t            \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/#organization\",\n\t            \"name\": \"FusionCharts\",\n\t            \"url\": \"https:\/\/www.fusioncharts.com\/blog\/\",\n\t            \"logo\": {\n\t                \"@type\": \"ImageObject\",\n\t                \"inLanguage\": \"en-US\",\n\t                \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/#\/schema\/logo\/image\/\",\n\t                \"url\": \"\/blog\/wp-content\/uploads\/2020\/03\/idera-fc-logo.svg\",\n\t                \"contentUrl\": \"\/blog\/wp-content\/uploads\/2020\/03\/idera-fc-logo.svg\",\n\t                \"width\": 1,\n\t                \"height\": 1,\n\t                \"caption\": \"FusionCharts\"\n\t            },\n\t            \"image\": {\n\t                \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/#\/schema\/logo\/image\/\"\n\t            }\n\t        },\n\t        {\n\t            \"@type\": \"Person\",\n\t            \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/#\/schema\/person\/d6727c5ac5aea0fd6fa833a417c15457\",\n\t            \"name\": \"Kaustav Das Modak\",\n\t            \"image\": {\n\t                \"@type\": \"ImageObject\",\n\t                \"inLanguage\": \"en-US\",\n\t                \"@id\": \"https:\/\/www.fusioncharts.com\/blog\/#\/schema\/person\/image\/ece3e38ec52f0709739ce50a255a5bb6\",\n\t                \"url\": \"\/blog\/wp-content\/wphb-cache\/gravatar\/933\/9331472aaa32a48035bcf7ade06553d2x96.jpg\",\n\t                \"contentUrl\": \"\/blog\/wp-content\/wphb-cache\/gravatar\/933\/9331472aaa32a48035bcf7ade06553d2x96.jpg\",\n\t                \"caption\": \"Kaustav Das Modak\"\n\t            },\n\t            \"url\": \"https:\/\/www.fusioncharts.com\/blog\/author\/kaustav\/\"\n\t        }\n\t    ]\n\t}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Extend JSDoc API Documentation Through Tutorials 2026","description":"JSDoc makes creating API documentation easy. Learn how to maintain the relationship between your source code and 2026 project documentation right today.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/","og_locale":"en_US","og_type":"article","og_title":"Extend JSDoc API Documentation Through Tutorials 2026","og_description":"JSDoc makes creating API documentation easy. Learn how to maintain the relationship between your source code and 2026 project documentation right today.","og_url":"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/","og_site_name":"FusionBrew - The FusionCharts Blog","article_published_time":"2014-06-02T12:35:24+00:00","article_modified_time":"2026-01-20T09:10:45+00:00","author":"Kaustav Das Modak","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kaustav Das Modak","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#article","isPartOf":{"@id":"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/"},"author":{"name":"Kaustav Das Modak","@id":"https:\/\/www.fusioncharts.com\/blog\/#\/schema\/person\/d6727c5ac5aea0fd6fa833a417c15457"},"headline":"Extend JSDoc API Documentation Through Tutorials 2026","datePublished":"2014-06-02T12:35:24+00:00","dateModified":"2026-01-20T09:10:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/"},"wordCount":1063,"commentCount":0,"publisher":{"@id":"https:\/\/www.fusioncharts.com\/blog\/#organization"},"keywords":["APIs","documentation","jsdoc"],"articleSection":["Thoughts"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/","url":"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/","name":"Extend JSDoc API Documentation Through Tutorials 2026","isPartOf":{"@id":"https:\/\/www.fusioncharts.com\/blog\/#website"},"datePublished":"2014-06-02T12:35:24+00:00","dateModified":"2026-01-20T09:10:45+00:00","description":"JSDoc makes creating API documentation easy. Learn how to maintain the relationship between your source code and 2026 project documentation right today.","breadcrumb":{"@id":"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.fusioncharts.com\/blog\/extend-jsdoc-api-documentation-through-tutorials\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fusioncharts.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Extend JSDoc API Documentation Through Tutorials 2026"}]},{"@type":"WebSite","@id":"https:\/\/www.fusioncharts.com\/blog\/#website","url":"https:\/\/www.fusioncharts.com\/blog\/","name":"FusionBrew - The FusionCharts Blog","description":"Get tips and tricks on how to build effective Data Visualisation using FusionCharts","publisher":{"@id":"https:\/\/www.fusioncharts.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.fusioncharts.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.fusioncharts.com\/blog\/#organization","name":"FusionCharts","url":"https:\/\/www.fusioncharts.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fusioncharts.com\/blog\/#\/schema\/logo\/image\/","url":"\/blog\/wp-content\/uploads\/2020\/03\/idera-fc-logo.svg","contentUrl":"\/blog\/wp-content\/uploads\/2020\/03\/idera-fc-logo.svg","width":1,"height":1,"caption":"FusionCharts"},"image":{"@id":"https:\/\/www.fusioncharts.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.fusioncharts.com\/blog\/#\/schema\/person\/d6727c5ac5aea0fd6fa833a417c15457","name":"Kaustav Das Modak","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fusioncharts.com\/blog\/#\/schema\/person\/image\/ece3e38ec52f0709739ce50a255a5bb6","url":"\/blog\/wp-content\/wphb-cache\/gravatar\/933\/9331472aaa32a48035bcf7ade06553d2x96.jpg","contentUrl":"\/blog\/wp-content\/wphb-cache\/gravatar\/933\/9331472aaa32a48035bcf7ade06553d2x96.jpg","caption":"Kaustav Das Modak"},"url":"https:\/\/www.fusioncharts.com\/blog\/author\/kaustav\/"}]}},"_links":{"self":[{"href":"https:\/\/www.fusioncharts.com\/blog\/wp-json\/wp\/v2\/posts\/13072","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fusioncharts.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fusioncharts.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fusioncharts.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fusioncharts.com\/blog\/wp-json\/wp\/v2\/comments?post=13072"}],"version-history":[{"count":0,"href":"https:\/\/www.fusioncharts.com\/blog\/wp-json\/wp\/v2\/posts\/13072\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fusioncharts.com\/blog\/wp-json\/wp\/v2\/media?parent=13072"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fusioncharts.com\/blog\/wp-json\/wp\/v2\/categories?post=13072"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fusioncharts.com\/blog\/wp-json\/wp\/v2\/tags?post=13072"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.fusioncharts.com\/blog\/wp-json\/wp\/v2\/coauthors?post=13072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}