{"_id":"@akaterra.co/apidog","_rev":"2-5edc0f7e1afc0763978ca1bd86cac551","name":"@akaterra.co/apidog","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.4":{"name":"@akaterra.co/apidog","version":"0.0.4","description":"apiDog is a API documentation generator alternative to the apiDoc","main":"start.js","bin":{"apidog":"apidog"},"dependencies":{"argparse":"1.0.10","fast-sort":"1.5.6","handlebars":"4.3.0","htmldiff-js":"1.0.5","lodash.get":"4.4.2","markdown":"^0.5.0","socket.io":"2.3.0","uglify-es":"3.3.9"},"devDependencies":{"amqplib":"0.5.2","amqplib-rpc":"3.1.0","express":"4.16.4","jasmine":"3.3.0","nats":"1.3.0","redis":"2.8.0","supertest":"3.3.0","ws":"7.1.0"},"scripts":{"test":"NODE_ENV=test node $NODE_DEBUG_OPTION ./node_modules/.bin/jasmine JASMINE_CONFIG_PATH=jasmine.json","test-inspect":"NODE_ENV=test node $NODE_DEBUG_OPTION --nolazy --inspect-brk=9229 ./node_modules/.bin/jasmine JASMINE_CONFIG_PATH=jasmine.json"},"author":{"name":"akaterra"},"license":"MIT","keywords":["api","apidoc","doc","documentation","rest","restful","nats","natsrpc","rabbitmq","rabbitmqrpc"],"gitHead":"1032f041bcfdeffae6e1d9086bd97fb294736e96","_id":"@akaterra.co/apidog@0.0.4","_nodeVersion":"14.0.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-mw2Hhl9y4TNzlUuVcXsnNWD3BTEerVJCWTtSphNDz3sr6WQfwjw2AyqEwJVOroSLPC6I+oubHlxCnk9JfXrFEA==","shasum":"a23245b625e5296de18990ffa2aca7acadc5fef7","tarball":"https://registry.npmjs.org/@akaterra.co/apidog/-/apidog-0.0.4.tgz","fileCount":187,"unpackedSize":508146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqyCaCRA9TVsSAnZWagAABwMP/RRLE8q6PUvaxuO5y1QT\nJwkuIH2jbp5YcU0xmJqNLW6lzS5DjPhhKQD5wRNjLIkNTUHA+JCArCMAZMim\n+nj9lPxiPSQaanlmE0/rhy+yV72PxBUdt4eGlmp0PdDZ9s3B9yfdEyehKJF2\nvOBNpYPxmq7W1zxDQq/QqVm3C48AuoF81XJwC1wgd44N9h76A56BItPAm4sx\nKXSSwKPdXCr9WOdlRN5XPWjk9Oy2l/hFBSp6gxG7c/aAd/RNN6el5VUviTKM\nngBW9JYljZSiHAMdz14vZ6DHzjWXBZMhvra9ULC/JSAmpjPJc4NPuMun9QWV\nxauuQJwypMLlM0a339OeTtMLqBG23x5OEaiJiUIQHGpGhxz6gn1qwLdAG7UG\ni7cKR84MK1Den0R7ZfyjBAYTku3TFafXr3FGx8pmwV6Bhl1muWEPuqocR0zM\nlnLsLCaYyhY0ue6eJi0ekJeJ+BEJYsi1wJ9pf0KpvtniOzStg+ZO8pZmlLSK\nBYifwl0/gdeO4DzZ9ntOYIvdjO1ncRFcs8KOiauOZVPlxM2f74ag9qgOvaxN\nmuASGd1+t/2rAhrmhl0wgj/GSCUS2rYApVA5aq88ZtenL1i34m0KA7pKQgx+\nucbyMr0ZJwKAKanU/ZCO9G2KVyLvC+4HEMVPv9/R8hI+2GopWOn0qXa87lxa\n9zfI\r\n=kLU0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICEhVrgMcdcAfSF9NnHrrohSDPS/vhlnO2InbIruCCX2AiB6MuT+slMwfkzDVawqtIY8pry3r4J+aQj7oa5dvLIVYg=="}]},"maintainers":[{"name":"arretaka","email":"akaterra.co@gmail.com"}],"_npmUser":{"name":"arretaka","email":"akaterra.co@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/apidog_0.0.4_1588273305512_0.5730539115285636"},"_hasShrinkwrap":false},"0.0.5":{"name":"@akaterra.co/apidog","version":"0.0.5","description":"apiDog is a API documentation generator alternative to the apiDoc","main":"start.js","bin":{"apidog":"apidog"},"dependencies":{"argparse":"1.0.10","fast-sort":"1.5.6","handlebars":"4.3.0","htmldiff-js":"1.0.5","lodash.get":"4.4.2","markdown":"^0.5.0","socket.io":"2.3.0","uglify-es":"3.3.9"},"devDependencies":{"amqplib":"0.5.2","amqplib-rpc":"3.1.0","express":"4.16.4","jasmine":"3.3.0","nats":"1.3.0","redis":"2.8.0","supertest":"3.3.0","ws":"7.1.0"},"scripts":{"test":"NODE_ENV=test node $NODE_DEBUG_OPTION ./node_modules/.bin/jasmine JASMINE_CONFIG_PATH=jasmine.json","test-inspect":"NODE_ENV=test node $NODE_DEBUG_OPTION --nolazy --inspect-brk=9229 ./node_modules/.bin/jasmine JASMINE_CONFIG_PATH=jasmine.json"},"author":{"name":"akaterra"},"license":"MIT","keywords":["api","apidoc","doc","documentation","rest","restful","nats","natsrpc","rabbitmq","rabbitmqrpc"],"gitHead":"ad4bbce9f11ca95e8887f6aa766456034e1aa0cf","_id":"@akaterra.co/apidog@0.0.5","_nodeVersion":"14.0.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Bd8w3o/VBo/XJW4PwL1ih2IS0+JZ2B6OlqcRctdRaKxaH+jcxOZXzjw86Et1PItxTIh+xu0rpzJhEHqpZmBrGA==","shasum":"d9d02d164928de1db30de3b63ac88dea992a1598","tarball":"https://registry.npmjs.org/@akaterra.co/apidog/-/apidog-0.0.5.tgz","fileCount":187,"unpackedSize":508159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqyFgCRA9TVsSAnZWagAAq7kQAIgX+XRNLS1znQjFxhqw\niM3P7zoPAa21qO1UtY3J09GAsQeaJJf8kL0e+GPaQL/r8KMz7UhU336C6ykq\n+1NpJJboi1Yz2rtDMff3yddvuooVQKpLDiLi7oGblqMHJqVWyXK2tMBCLC05\nHzAoobfgGDXMFyqYwb2T6nLjOa5YDOf31/f9lj/w+wF96htr+MnaHNZk5brg\nJ4HtXyhoNNHjwt5Rr16QEnPq7eC8BaZR08nY43e+LJ0O8ZRh+Y1zWWCHfG55\nExcWnqZ12Sh7NULscDCMaxXGuvKl0Q3b9l6uPhXEHwHRwSku/9tiVB6SjUyI\n+H4o+tvr5pgTgLsIMNYTkx4jxnE3RF4OWoLk0n9AYysfwk+NiNXngQJzlcp9\nlCfon7tzX/Th9iliwiMpDXxuRAnhDBXAQ+Srprr0CcGNC2tHL/76mVAMY9tw\ndKssZGNpfvZR8LWCuaz4gPrs1WdcQyHXKLfUUzdn055rojzJcHqXYGX4sEtN\nd0PkVf4Zt7k3DdMAXhtuC/TjbM3L41ERygjG4ccsEhQYqeRw73WaP2TNvvDD\nMp/MqDsWZaBDT+txWj1zEIKju44d814ywPQgOVcyqzILxPC4uw4WBh8q96so\na7S29Pj8zVNygX4AvGHjKcsDCjsU5jqWPaMRmfJnA/jAxDW4qOQ3y9w4Nwu8\nIzGh\r\n=T5LO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICn3BT02ONULmwqAb+MQ1TDeVGLTI4G3rnrWzhuzem/BAiBCUCgigrp3SrdN+XwvfpyRA1yKfqeM4m5wqStjDMYR6w=="}]},"maintainers":[{"name":"arretaka","email":"akaterra.co@gmail.com"}],"_npmUser":{"name":"arretaka","email":"akaterra.co@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/apidog_0.0.5_1588273503736_0.5135759133801541"},"_hasShrinkwrap":false}},"time":{"created":"2020-04-30T19:01:45.260Z","0.0.4":"2020-04-30T19:01:45.721Z","modified":"2022-04-04T12:28:45.891Z","0.0.5":"2020-04-30T19:05:04.148Z"},"maintainers":[{"name":"arretaka","email":"akaterra.co@gmail.com"}],"description":"apiDog is a API documentation generator alternative to the apiDoc","keywords":["api","apidoc","doc","documentation","rest","restful","nats","natsrpc","rabbitmq","rabbitmqrpc"],"author":{"name":"akaterra"},"license":"MIT","readme":"<p align=\"center\">\n  <img src=\"./apidog.png\" alt=\"ApiDog\">\n</p>\n\napiDog\n======\n\n[![Build Status](https://travis-ci.org/akaterra/apidog.svg?branch=master)](https://travis-ci.org/akaterra/apidog)\n\napiDog is a API documentation generator alternative to the [apiDoc](http://apidocjs.com/).\n\nFeatures:\n\n* Templates for:\n  * Minimalistic HTML file with dynamic assets loading\n  * Single pre-compiled HTML file with no external dependencies\n  * apidoc.apidoc text file\n  * Markdown file\n  * Swagger specification file (v2.0, v3.0)\n* Server proxy\n* Send sample request plugin for html template:\n    * Transports support:\n        * HTTP/HTTPS (via Server proxy only HTTP)\n        * Nats PUB/SUB (via Server proxy)\n        * Nats RPC (remote procedure call, via Server proxy)\n        * RabbitMQ PUS/SUB (via Server proxy)\n        * RabbitMQ RPC (remote procedure call, via Server proxy)\n        * Redis PUB/SUB (via Server proxy)\n        * Socket.IO\n        * WebSocket/WebSocket Secure (W3C) (via Server proxy only WebSocket)\n    * Content types support:\n        * Form\n        * JSON\n        * XML\n    * Nested typed params\n    * Type variants\n    * Presets (saved requests)\n    * Variables\n\nTable of contents\n-----------------\n\n* Installation\n* CLI\n* Additional annotations\n  * [@apiChapter](#apichapter)\n  * [@apiContentType](#apicontenttype)\n  * [@apiErrorPrefix](#apierrorprefix)\n  * [@apiErrorValue](#apierrorvalue)\n  * [@apiFamily](#apifamily)\n  * [@apiHeaderValue](#apiheadervalue)\n  * [@apiNote](#apinote)\n  * [@apiParamPrefix](#apiparamprefix)\n  * [@apiParamValue](#apiparamvalue)\n  * [@apiSchema](#apischema)\n  * [@apiSampleRequestOption](#apisamplerequestoption)\n  * [@apiSampleRequestVariable](#apisamplerequestvariable)\n  * [@apiSubgroup](#apisubgroup)\n  * [@apiSuccessPrefix](#apisuccessprefix)\n  * [@apiSuccessValue](#apisuccessvalue)\n  * [@apiTag](#apitag)\n* Built-in templates\n  * [@apidoc](#apidoc)\n  * [@html (default)](#html-default)\n  * [@html.standalone](#htmlstandalone)\n  * [@md](#md)\n  * [@swagger.2.0](#swagger20)\n  * [@swagger.3.0](#swagger30)\n* @html template \"Send sample request\" plug-in\n  * [Type variants](#type-variants)\n\n### Installation\n\n```sh\nnpm i @akaterra.co/apidog -g\n```\n\n### CLI\n\n```sh\napidog -h\n```\n\nParameters:\n\n* **--description \"description\"** - Custom description that will be used as a description of the generated documentation\n\n  Default is \\[ package.json in input directory \\].description or null by default.\n\n* **-i, --input \"input directory\"** - Input source(-s) to be scanned for doc blocks\n\n  Can be multiple. Default is current directory.\n\n* **--jsonschema \"source\"** - JSON Schema source(-s) to be loaded for resolving the external references\n\n  Can be multiple.\n\n  ```sh\n  apidog -i '@apiSchema {jsonschema=./schemas/my-schema.json#definitions.create} @apiParam' -o my-api/ --parser inline --jsonschema ./schemas/schema1.json --jsonschema ./schemas/schema2.json\n  ```\n\n* **--ordered** - Process titles as ordered titles\n\n  Order index must be in format of \"1.2.3.\" and must start the title.\n  Titles will be sorted numerically by order index, then the order index will be removed.\n\n* **-o, --output \"output directory\"** - Output directory where \"apidoc.html\" and additional files will be written\n\n  Same as **input directory** by default.\n\n* **--parser \"dir\" | \"inline\" | \"swagger\"** -- Parser to be used to parse the doc blocks sources\n\n  Default is \"dir\".\n\n  \"dir\" is used to scan the source files in the provided input directory for the doc blocks.\n\n  ```sh\n  apidog --parser dir\n  ```\n\n  \"inline\" is used to scan the input as lines of the doc block.\n\n  ```sh\n  apidog --parser inline -i \"@api {get} /version\"\n  ```\n\n  \"swagger\" is used to parse the provided Swagger specification sources.\n\n  ```sh\n  apidog --parser swagger -i ./api-v1.swagger.json -i ./api-v2.swagger.json\n  ```\n\n* **-p, --private \\[\"tag\"\\]** -- Tags to filter doc blocks having all the private tags or entirely marked as private\n\n  Can be multiple. By default takes all the doc blocks.\n\n* **-s, --sampleRequestUrl, --sampleUrl** - Base URL that will be used as a prefix for all relative api paths (of HTTP/HTTPS and WebSocket types) in sample requests\n\n  Default is \\[ config.json in input directory \\].sampleUrl\n\n* **--sampleRequestProxy\\[:http | :nats | :rabbitmq | :redisPub | :redisSub | :ws\\]** - URL of apiDog proxy to be used to pass requests through it. \"http\", \"nats\", \"rabbitmq\", \"redisPub\", \"redisSub\" or \"websocket\" specifier provides a proxy for the specified transport\n\n* **-t, --template** - Alias of the built-in template or the directory where the custom template be load from\n\n  Default is \"@html\".\n\n  Build-in templates:\n    * @apidoc\n    * @html\n    * @html.standalone\n    * @md\n    * @swagger.2.0\n    * @swagger.3.0\n\n* **--title** - Custom title that will be used as a title of the generated documentation\n\n  Default is \\[ package.json in input directory \\].name, \\[ config.json in input directory \\].title or \"Untitled\" by default\n\n* **--withSrp, --withSampleRequestProxy \\[\"update\"\\]** - Create (not rewrites existing) also \"apidog_proxy.js\", \"apidog_proxy.config.js\" and \"package.json\" in the output directory\n\n  If the above files already exist, they will not be rewritten. To rewrite files use ```--withSampleRequestProxy=update```.\n\n### Additional annotations\n\n##### @apiChapter\n\nFormat:\n```\n@apiChapter name\n```\n\nDefines chapter.\nCan be used to split doc blocks between multiple namespaces.\n\nIf **@apiDefine** declares definition with the same name also includes its title and description.\n\n##### @apiContentType\n\nFormat:\n```\n@apiContentType contentType\n```\n\nDefines content type.\nCan be defined multiply.\n\nContent type will be used as a filter of the **@apiExample** content having corresponding {type}.\nAlso the data of the sample request will be formatted according to it.\nCurrently supported data format of the sample request are FORM, JSON and XML.\n\n##### @apiErrorValue\n\nFormat:\n```\n@apiErrorValue [{type}] value [description]\n```\n\nDescribes custom error value.\n\n##### @apiHeaderValue\n\nFormat:\n```\n@apiHeaderValue [{type}] value [description]\n```\n\nDescribes custom header value.\n\n##### @apiFamily\n\nFormat:\n```\n@apiFamily uniqueIdentifier\n```\n\nDefines unique identifier of the doc block within its chapter, group and subgroup.\n\nIt can be used to distinguish between several doc blocks with the same descriptors to show them separately or combine the different doc blocks under versioning.\n\nExample:\n```\n/**\n * @api {post} /test\n * @apiVersion v1\n * @apiFamily a\n */\n\n/**\n * @api {post} /test\n * @apiVersion v1\n * @apiFamily b\n */\n```\n\nThe second one does not override the first and is shown separately.\n\nExample:\n```\n/**\n * @api {post} /v1/test\n * @apiVersion v1\n * @apiFamily a\n */\n\n/**\n * @api {post} /v2/test\n * @apiVersion v2\n * @apiFamily a\n */\n```\n\nThe second one is combined with the first and is shown under version.\n\n##### @apiNote\n\nFormat:\n```\n@apiNote title\n```\n\nAdds note section that describes some additional information.\n\nCan be used with **@apiDescription**.\n\n##### @apiParamPrefix\n\nFormat:\n```\n@apiParamPrefix prefix\n```\n\nPrefixes all following **@apiParam**s with prefix.\n\nAllows to reuse lists of **apiParams** between different doc blocks.\n\nExample:\n```\n/**\n * @apiDefine sharedParams\n * @apiParam a\n * @apiParam b\n * @apiParam c\n */\n\n/**\n * @api {post} test1\n * @apiDescription Parameters are prefixed by \"body\" - body.a, body.b, body.c\n * @apiParamPrefix body.\n * @apiUse sharedParams\n */\n\n/**\n * @api {post} test2\n * @apiDescription Parameters are prefixed by \"payload\" - payload.a, payload.b, payload.c\n * @apiParamPrefix payload.\n * @apiUse sharedParams\n */\n```\n\nAnother subsequent declaration adds a prefix to the previous one.\n\"..\" returns to the previous prefix, empty value resets the prefix.\n\nExample:\n```\n/**\n * @api {post} test\n * @apiParamPrefix body.\n * @apiParam {String} a As \"body.a\"\n * @apiParamPrefix b.\n * @apiParam {String} c As \"body.a.b.c\"\n * @apiParamPrefix ..\n * @apiParam {String} d As \"body.d\"\n * @apiParamPrefix\n * @apiParam {String} e As \"e\"\n */\n```\n\n##### @apiParamValue\n\nFormat:\n```\n@apiParamValue [{type}] value [description]\n```\n\nDescribes custom parameter value.\n\n##### @apiSchema\n\nFormat:\n```\n@apiSchema [(group)] {jsonschema=pathToFile[#internal.path]} @apiParam\n```\n\n```\n@apiSchema [(group)] {swagger=pathToFile#internal.path.to.api} operationNickname\n```\n\n```\n@apiSchema [(group)] {swagger=pathToFile#internal.path.to.model} @apiParam\n```\n\nUses external schema to fill doc block.\n\n\"jsonschema\" also allows to use **$ref** definitions within schema.\n\"swagger\" generates doc block by api operation or **@apiParam** list by model.\n\n##### @apiSampleRequestOption\n\nFormat:\n```\n@apiSampleRequestOption key [val=true]\n```\n\nDefines custom options for the internal usage of the \"Send sample request\" plug-in.\n\n**xmlRoot** - defines root namespace for params have to be send as XML.\nIf data structure is a plain object and have to be sent in XML format it should be wrapped into root namespace.\n\n##### @apiSampleRequestVariable\n\nFormat:\n```\n@apiSampleRequestVariable [(namespace)] [{responsePath}] field[=defaultValue]\n```\n\nDefines variable of the \"Send sample request\" plug-in that can be used globally via placeholders in the **@apiHeader** or **@apiParam** values.\n\n* **namespace** - name of the global bucket in which the variable value is stored\n* **responsePath** - path inside the response data to the variable value, this value will be assigned to the variable automatically after the response\n* **field** - variable name\n\nExample:\n```\n/**\n * @api {post} /login\n * @apiSampleRequestVariable {data.accessToken} accessToken\n */\n\n/**\n * @api {get} /goods\n * @apiHeader {String} Authorization=\"Bearer @accessToken\"\n */\n```\n\nExample with global bucket:\n```\n/**\n * @api {post} /login\n * @apiSampleRequestVariable (accessBucket) {data.accessToken} accessToken\n */\n\n/**\n * @api {get} /goods\n * @apiHeader {String} Authorization=\"Bearer @accessBucket:accessToken\"\n */\n```\n\n##### @apiSubgroup\n\nFormat:\n```\n@apiSubgroup name\n```\n\nDefines to which subgroup the doc block belongs.\nThe subgroup will be shown as a sub navigation section of the menu.\n\n##### @apiSuccessPrefix\n\nFormat:\n```\n@apiSuccessPrefix prefix\n```\n\nPrefixes all following **@apiSuccess**s with prefix.\n\nAllows to reuse lists of **apiSuccess** between different doc blocks.\n\nExample:\n```\n/**\n * @apiDefine sharedParams\n * @apiSuccess a\n * @apiSuccess b\n * @apiSuccess c\n */\n\n/**\n * @api {post} test1\n * @apiDescription Parameters are prefixed by \"body\" - body.a, body.b, body.c\n * @apiSuccessPrefix body.\n * @apiUse sharedParams\n */\n\n/**\n * @api {post} test2\n * @apiDescription Parameters are prefixed by \"payload\" - payload.a, payload.b, payload.c\n * @apiSuccessPrefix payload.\n * @apiUse sharedParams\n */\n```\n\nAnother subsequent declaration adds a prefix to the previous one.\n\"..\" returns to the previous prefix, empty value resets the prefix.\n\nExample:\n```\n/**\n * @api {post} test\n * @apiSuccessPrefix body.\n * @apiSuccess {String} a As \"body.a\"\n * @apiSuccessPrefix b.\n * @apiSuccess {String} c As \"body.a.b.c\"\n * @apiSuccessPrefix ..\n * @apiSuccess {String} d As \"body.d\"\n * @apiSuccessPrefix\n * @apiSuccess {String} e As \"e\"\n */\n```\n\n##### @apiSuccessValue\n\nFormat:\n```\n@apiSuccessValue [{type}] value [description]\n```\n\nDescribes custom success value.\n\n##### @apiTag\n\nFormat:\n```\n@apiTag tag1,tag2,tag3\n```\n\nDefines tags. Can be multiple.\n\n### Built-in templates\n\n##### @apidoc\n\n```sh\napidog -t @apidoc\n```\n\nCompiles to apiDoc annotations text file where the doc blocks separated by two \"\\n\".\n\n##### @html (default)\n\n```sh\napidog -t @html\n```\n\nComplies to:\n\n* apidoc.html - main index file\n* apidoc.data.min.js - API data\n* apidoc.i18n.min.js - I18N translations\n* apidoc.min.js - bootstrap\n* apidoc.template.min.js - handlebars template\n* favicon.png\n* handlebars.min.js - Handlebars bundle\n* socket.io.js - Socket.IO bundle\n\nSupports nav jumping to a chapter, group, subgroup and block version.\nSupports locale selection (en, he, ru) via \"locale=...\" query string param.\nSupports version selection via \"version=...\" query string param.\n\n##### @html.standalone\n\n```sh\napidog -t @html.standalone\n```\n\nCompiles to standalone html file without external dependencies.\n\nSupports nav jumping to a chapter, group, subgroup and block version.\nSupports locale selection (en, he, ru) via \"locale=...\" query string param.\nSupports version selection via \"version=...\" query string param.\n\n##### @md\n\n```sh\napidog -t @md\n```\n\nCompiles to markdown file.\n\n##### @swagger.2.0\n\n```sh\napidog -t @swagger.2.0\n```\n\nCompiles to Swagger v2.0 specification JSON file.\n\n##### @swagger.3.0\n\n```sh\napidog -t @swagger.3.0\n```\n\nCompiles to Swagger v3.0 specification JSON file.\n\n### Server proxy\n\nThe proxy can be created by providing **--withSampleRequestProxy** CLI flag:\n\n```sh\napidog --withSampleRequestProxy\n```\n\nAfter which the following files will be copied to the output directory:\n\n* **apidog_proxy.js** - start script file\n* **apidog_proxy.config.js** - configuration file\n* **package.json**\n\nConfiguration file is a js script that by default exports the object with next parameters:\n\n* **allowPresets** - enables presets support for the built-in HTML template particularly\n* **presetsDir** - directory where the presets are located\n* **publicDir** - directory from which the HTML template files will be served\n* **http** - HTTP/HTTPS configuration section:\n  * **allow** - allowes proxing HTTP/HTTPS requests, also allows running of HTTP/HTTPS proxy\n  * **allowHeaders** - list of allowed headers\n  * **proxyPort** - the port that the HTTP/HTTPS proxy is listening on\n\n* **nats** - Nats configuration section:\n  * **allow** - allowes proxing Nats requests, depends on **http** section\n  * **[connection alias]** - connection URI or settings to be used if its alias is passed\n\n    Example:\n\n    ```js\n    module.exports = {\n      nats: {\n        connectionA: \"nats://username:password@ip:4222\",\n      },\n    }\n    ```\n\n    URI passed to the proxy:\n\n    ```\n    nats://connectionA/queue\n    ```\n\n* **rabbitmq** - RabbitMQ configuration section:\n  * **allow** - allowes proxing RabbitMQ requests, depends on **http** section\n  * **allowHeaders** - list of allowed headers\n  * **drivers** - the drivers to be used for custom operations:\n    * **rpc** - RPC (Remote Procedure Call) driver, \"amqplibRpc\" is only supported\n  * **[connection alias]** - connection URI or settings to be used if its alias is passed\n\n    Example:\n\n    ```js\n    module.exports = {\n      rabbitmq: {\n        connectionA: \"amqp://username:password@ip:5672/virtualHost\",\n      },\n    }\n    ```\n\n    URI passed to the proxy:\n\n    ```\n    amqp://connectionA/queue\n    ```\n\n* **redis** - Redis configuration section:\n  * **allow** - allowes proxing Radis requests\n  * **[connection alias]** - connection URI or settings to be used if its alias is passed\n\n    Example:\n\n    ```js\n    module.exports = {\n      redis: {\n        connectionA: \"redis://ip:6379\",\n      },\n    }\n    ```\n\n    URI passed to the proxy:\n\n    ```\n    redis://connectionA/queue\n    ```\n\n* **websocket** - WebSocket configuration section:\n  * **allow** - allowes proxing WebSocket requests, also allows running of WebSocket proxy\n  * **proxyPort** - the port that the WebSocket proxy is listening on\n  * **[connection alias]** - connection URI or settings to be used if its alias is passed\n\n    Example:\n\n    ```js\n    module.exports = {\n      websocket: {\n        connectionA: \"ws://ip:9999\",\n      },\n    }\n    ```\n\n    URI passed to the proxy:\n\n    ```\n    ws://connectionA/queue\n    ```\n\n### @html template \"Send sample request\" plug-in\n\n\"Send sample request\" plug-in allows to do sample requests with arbitrary or structured data via various transports.\n\n##### Type variants\n\n\"Send sample request\" plug-in allows to define multiple type variants for the specified field.\nThis can be useful when some part of the request data structure should be various.\n\nExample:\n```\n@apiParam {Type1} field\n@apiParam {Number} field.a\n@apiParam {Type2} field\n@apiParam {String} field.b\n```\n\nNow the \"field\" will have two options of type to select:\n  * First with the subfield \"a\" with type \"Number\"\n  * Second with the subfield \"b\" with type \"String\"\n\n##### Nats, RabbitMQ, and Redis\nTo send sample requests through the transports such as Nats, RabbitMQ, and Redis use the Server proxy.\n\n**@api** annotation format for Nats PUB:\n\n```\n/**\n * @api {natsPub} endpoint\n */\n```\n\n**@api** annotation format for Nats RPC:\n\n```\n/**\n * @api {natsRpc} endpoint\n */\n```\n\n**@api** annotation format for Nats SUB:\n\n```\n/**\n * @api {natsSub} endpoint\n */\n```\n\n**@api** annotation format for RabbitMQ PUB:\n\n```\n/**\n * @api {rabbitmqPub[:exchange]} endpoint\n */\n```\n\n**@api** annotation format for RabbitMQ RPC:\n\n```\n/**\n * @api {rabbitmqRpc[:exchange]} endpoint\n */\n```\n\n**@api** annotation format for RabbitMQ SUB:\n\n```\n/**\n * @api {rabbitmqSub[:exchange]} endpoint\n */\n```\n\n**@api** annotation format for Redis PUB:\n\n```\n/**\n * @api {redisPub} endpoint\n */\n```\n\n**@api** annotation format for Redis SUB:\n\n```\n/**\n * @api {redisSub} endpoint\n */\n```\n\n**@api** annotation format for Socket.IO:\n\n```\n/**\n * @api {sockeio} endpoint\n */\n```\n\n**@api** annotation format for WebSocket:\n\n```\n/**\n * @api {webSocket} endpoint\n */\n```\n\n##### WebSocket and HTTP/HTTPS\n\nThe WebSocket and HTTP/HTTPS requests also can be sent via Server proxy optionally.\n","readmeFilename":"readme.md"}