Coder Social home page Coder Social logo

apidocjs.com's Introduction

Important note

This project is currently not active maintained! See discussion #1436

apiDoc

apiDoc creates a documentation from API descriptions in your source code.

validate NPM version Join the chat at https://gitter.im/apidoc/talk

Documentation: apidocjs.com

Installation

$ npm install -g apidoc

Usage

Add some apidoc comments anywhere in your source code:

/**
 * @api {get} /user/:id Request User information
 * @apiName GetUser
 * @apiGroup User
 *
 * @apiParam {Number} id User's unique ID.
 *
 * @apiSuccess {String} firstname Firstname of the User.
 * @apiSuccess {String} lastname  Lastname of the User.
 */

Now generate the documentation from src/ into doc/.

$ apidoc -i src/ -o doc/

This repository contains and example folder from which you can generate a very complete documentation on an example api endpoint. It also contains best practice hints (in the footer.md file).

$ git clone https://github.com/apidoc/apidoc && cd apidoc
$ npm install --prod
$ ./bin/apidoc -i example -o /tmp/doc
$ $BROWSER /tmp/doc

Programmatic usage

You can generate the documentation programmatically:

import path from 'path'
import { createDoc } from 'apidoc'

const doc = createDoc({
  src: path.resolve(__dirname, 'src'),
  dest: path.resolve(__dirname, 'doc'), // can be omitted if dryRun is true
  // if you don't want to generate the output files:
  dryRun: true,
  // if you don't want to see any log output:
  silent: true,
})

if (typeof doc !== 'boolean') {
  // Documentation was generated!
  console.log(doc.data) // the parsed api documentation object
  console.log(doc.project) // the project information
}

Install type definitions (see @types/apidoc):

$ npm install -D @types/apidoc

Docker image

You can use apidoc in Docker like this:

# first build the image after cloning this repository
docker build -t apidoc/apidoc .
# run it
docker run --rm -v $(pwd):/home/node/apidoc apidoc/apidoc -o outputdir -i inputdir

Supported programming languages

  • C#, Go, Dart, Java, JavaScript, PHP, Scala (all DocStyle capable languages):

    /**
      * This is a comment.
      */
  • Clojure:

    ;;;;
    ;; This is a comment.
    ;;;;
  • CoffeeScript:

    ###
    This is a comment.
    ###
  • Elixir:

    #{
    # This is a comment.
    #}
  • Erlang:

    %{
    % This is a comment.
    %}
  • Perl

    #**
    # This is a comment.
    #*
    =pod
    This is a comment.
    =cut
  • Python

    """
    This is a comment.
    """
  • Ruby

    =begin
    This is a comment.
    =end

Plugins (extend apiDoc)

apiDoc will auto include installed plugins.

  • apidoc-plugin-schema Generates and inject apidoc elements from api schemas. npm install apidoc-plugin-schema

For details and an example on how to implement your own plugin, please view apidoc-plugin-test.

Support

Please create a new issue if you have a suggestion/question or if you found a problem/bug.

Contributing

apiDoc is a collaborative project. Pull requests are welcome. Please see the CONTRIBUTING file.

Build tools

Integration

Converter

apidocjs.com's People

Contributors

alkino avatar andywendt avatar brianhorakh avatar charleswhchan avatar danielpietzsch avatar donmahallem avatar ftoulemon avatar hwgn avatar justinnichols avatar lucasprag avatar megapixel99 avatar miguelvis avatar minelarka14 avatar nicolascarpi avatar olearycrew avatar rottmann avatar shinnn avatar techgaun avatar thealphadollar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apidocjs.com's Issues

Multiple Child Nodes

there is a way to send multiple child nodes in a json (multidimensional array) in the Request Example?
for example:
{
"person1": {"id": "1", "name1", "John", "name2": "steven", "lastname", "jhonson"},
"person2": {"id", "2", "name1", "Marly", "name2", "jay", "lastname", "jackson"}
}

Disable AutoSort

I want to disable autosorting of my documentation entries. Is that possible?

Spanish version

I can translate apidocjs.com and pull request a file like index_es.html
Are you agree?

@apiDeprecated

I'm newbie on apidocjs but I would like use it to generate the API documentation. I found all options necessary except one to mark one method like deprecated.

Thank you for your help. (Great project !)

'@apiName watch' breaks content generation


DOESN'T WORK
/**
 * @api {put} /user/watched/:user/:repo watch
 * @apiName watch
 * @apiGroup repos
 *
 * @apiParam {String} user
 * @apiParam {String} repo
 */

WORKS
/**
 * @api {put} /user/watched/:user/:repo watch
 * @apiName watch2
 * @apiGroup repos
 *
 * @apiParam {String} user
 * @apiParam {String} repo
 */

textarea in apidocjs

How to add a textarea instead of inputbox in the html file generated.
I need to add some json as a parameter.
I can replace the textbox with textarea in the "index.html",
but when apidoc regenerates, the changes are lost, how to add the textarea in place of input box permanently,
can I use some .css/js file for the same

text area

Generating Navagation Links Using Method Type and @apiName Instead of Description

When I generate my API documentation, the links to each individual API on the left hand side of the index page are currently being generated from the description of the API.

@api {post} /my/endpoint **this is the current link name**

I would like the link name to be a combination of the method type (in the above example post) and the @apiName. For this block comment:

@api {post} /my/endpoint description of API
@apiName Create Cake

I would like the link text for that API to be POST - Create Cake

Is there anyway to do this?

@apiPrivate doc is not correct

I think the apiPrivate doc is not correct. Here is the correction. I tried to make a pull-request but the repository does not allowed me to.

By default private APIs will be ignored. To include private APIs add --private attribute to command line.

Exemple to create a full doc with private and non-private APIs : apidoc -o private-doc --private

Exemple to create a "public" doc with only non-private APIs : apidoc -o public-doc

parser plugin 'apidefinepermission' not found in block: 1

Hey

According to the example_full, there should be a method to define permissions with @apiDefinePermission. Unfortunately all I get using that is following:

warn: parser plugin 'apidefinepermission' not found in block: 1
warn: parser plugin 'apidefinepermission' not found in block: 2
warn: parser plugin 'apidefinepermission' not found in block: 3

It will work though when using just @apiDefine. So what am I missing? Do I have to load extra plugins or what? My _apidoc.js is a complete copy of the example, so no tampering with the markup.

Lefthand navigation doesn't scroll

Looking at the web page on a small screen, it's a problem that the left hand navigation never scrolls if it taller than the screen. It's impossible to find the bottom of the list of API parameters in that case.

Noticed using Chrome and Explorer on a Surface tablet by @robludwig

apiBody is not in the index of the documentation

Hi all.

Regarding merged PR #34 it seems that the item @apiBody is missing in the list under apiDoc-Params:

apiDoc-Params
@api
@apiDefine
@apiDeprecated
...

The content of @apiBody is in place but the examples appear as @apiParam instead of @apiBody.

"Integrated is an API history" sentence

The second sentence on the website:

"Integrated is an API history, with that various API version levels can be compared. So it can be retraced what changed in the API since the last version."

...needs to be rephrased. It doesn't actually make sense

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.