Files
asterisk/doc/appdocsxml.dtd
George Joseph 24c077f1fb docs: Enable since/version handling for XML, CLI and ARI documentation
* Added the "since" element to the XML configObject and configOption elements
  in appdocsxml.dtd.

* Added the "Since" section to the following CLI output:
  ```
  config show help <module> <object>
  config show help <module> <object> <option>
  core show application <app>
  core show function <func>
  manager show command <command>
  manager show event <event>
  agi show commands topic <topic>
  ```

* Refactored the commands above to output their sections in the same order:
  Synopsis, Since, Description, Syntax, Arguments, SeeAlso

* Refactored the commands above so they all use the same pattern for writing
  the output to the CLI.

* Fixed several memory leaks caused by failure to free temporary output
  buffers.

* Added a "since" array to the mustache template for the top-level resources
  (Channel, Endpoint, etc.) and to the paths/methods underneath them. These
  will be added to the generated markdown if present.
  Example:
  ```
    "resourcePath": "/api-docs/channels.{format}",
    "requiresModules": [
        "res_stasis_answer",
        "res_stasis_playback",
        "res_stasis_recording",
        "res_stasis_snoop"
    ],
    "since": [
        "18.0.0",
        "21.0.0"
    ],
    "apis": [
        {
            "path": "/channels",
            "description": "Active channels",
            "operations": [
                {
                    "httpMethod": "GET",
                    "since": [
                        "18.6.0",
                        "21.8.0"
                    ],
                    "summary": "List all active channels in Asterisk.",
                    "nickname": "list",
                    "responseClass": "List[Channel]"
                },

  ```

NOTE:  No versioning information is actually added in this commit.
Those will be added separately and instructions for adding and maintaining
them will be published on the documentation site at a later date.

(cherry picked from commit 3e28ddce78)
2025-01-23 18:39:41 +00:00

174 lines
6.1 KiB
DTD

<!ELEMENT docs (module|application|function|agi|manager|managerEvent|info|configInfo)*>
<!ATTLIST docs xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude">
<!ELEMENT xi:include (xi:fallback?) >
<!ATTLIST xi:include
xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
href CDATA #IMPLIED
parse (xml|text) "xml"
xpointer CDATA #IMPLIED
encoding CDATA #IMPLIED
accept CDATA #IMPLIED
accept-language CDATA #IMPLIED >
<!ELEMENT module (depend*,use*,conflict*,defaultenabled?,support_level?,replacement?,deprecated_in?,removed_in?)>
<!ATTLIST module name CDATA #REQUIRED>
<!ATTLIST module language CDATA #REQUIRED>
<!ELEMENT support_level (#PCDATA)>
<!ELEMENT depend (#PCDATA)>
<!ATTLIST depend type CDATA #IMPLIED>
<!ELEMENT defaultenabled (#PCDATA)>
<!ELEMENT replacement (#PCDATA)>
<!ELEMENT use (#PCDATA)>
<!ATTLIST use type CDATA #IMPLIED>
<!ELEMENT conflict (#PCDATA)>
<!ELEMENT deprecated_in (#PCDATA)>
<!ELEMENT removed_in (#PCDATA)>
<!ELEMENT application (since?,synopsis?,syntax?,description?,see-also?)>
<!ATTLIST application name CDATA #REQUIRED>
<!ATTLIST application language CDATA #REQUIRED>
<!ATTLIST application module CDATA #IMPLIED>
<!ELEMENT function (since?,synopsis?,syntax?,description?,see-also?)>
<!ATTLIST function name CDATA #REQUIRED>
<!ATTLIST function language CDATA #REQUIRED>
<!ATTLIST function module CDATA #IMPLIED>
<!ELEMENT agi (since?,synopsis?,syntax?,description?,see-also?)>
<!ATTLIST agi name CDATA #REQUIRED>
<!ATTLIST agi language CDATA #REQUIRED>
<!ATTLIST agi module CDATA #IMPLIED>
<!ELEMENT manager (since?,synopsis?,syntax?,description?,see-also?,responses?)>
<!ATTLIST manager name CDATA #REQUIRED>
<!ATTLIST manager language CDATA #REQUIRED>
<!ATTLIST manager module CDATA #IMPLIED>
<!ELEMENT responses (list-elements?,(managerEvent|xi:include))>
<!ELEMENT list-elements (managerEvent+|xi:include+)>
<!ELEMENT managerEvent (managerEventInstance+)>
<!ATTLIST managerEvent name CDATA #REQUIRED>
<!ATTLIST managerEvent language CDATA #REQUIRED>
<!ATTLIST managerEvent module CDATA #IMPLIED>
<!ELEMENT managerEventInstance (since?,synopsis?,syntax?,description?,see-also?)*>
<!ATTLIST managerEventInstance class CDATA #REQUIRED>
<!ELEMENT configInfo (synopsis?,description?,configFile+)>
<!ATTLIST configInfo name CDATA #REQUIRED>
<!ATTLIST configInfo language CDATA #REQUIRED>
<!ELEMENT configFile (configObject|xi:include)+>
<!ATTLIST configFile name CDATA #REQUIRED>
<!ELEMENT configObject (since?|synopsis?|description?|syntax?|see-also?|(configOption|xi:include))*>
<!ATTLIST configObject name CDATA #REQUIRED>
<!ELEMENT configOption (since?,synopsis,description?,syntax?,see-also?)*>
<!ATTLIST configOption name CDATA #REQUIRED>
<!ATTLIST configOption regex (yes|no|true|false) "false">
<!ATTLIST configOption default CDATA #IMPLIED>
<!ATTLIST configOption type CDATA #IMPLIED>
<!ELEMENT matchInfo (category,field?)>
<!ELEMENT dataType (#PCDATA)>
<!ELEMENT category (#PCDATA)>
<!ATTLIST category match (yes|no|true|false) #REQUIRED>
<!ELEMENT field (#PCDATA)>
<!ATTLIST field name CDATA #REQUIRED>
<!ELEMENT info (para|example|note|warning|variablelist|enumlist|info|xi:include)*>
<!ATTLIST info name CDATA #REQUIRED>
<!ATTLIST info language CDATA #REQUIRED>
<!ATTLIST info tech CDATA #REQUIRED>
<!ELEMENT see-also (ref|xi:include)*>
<!ELEMENT ref (#PCDATA)>
<!ATTLIST ref type (application|function|astcli|link|manpage|filename|agi|manager|managerEvent|configOption) #REQUIRED>
<!ATTLIST ref module CDATA #IMPLIED>
<!ELEMENT since (version+)>
<!ELEMENT version (#PCDATA)>
<!ELEMENT synopsis (#PCDATA)>
<!ELEMENT syntax (parameter|dataType|category|matchInfo|xi:include|channel_snapshot|bridge_snapshot)*>
<!ATTLIST syntax argsep CDATA ",">
<!ELEMENT channel_snapshot (#PCDATA)>
<!ATTLIST channel_snapshot prefix CDATA "">
<!ELEMENT bridge_snapshot (#PCDATA)>
<!ATTLIST bridge_snapshot prefix CDATA "">
<!ELEMENT configOptionToEnum (configOption|xi:include)*>
<!ATTLIST configOptionToEnum prefix CDATA "">
<!ELEMENT description (para|note|warning|variablelist|enumlist|info|example|xi:include)*>
<!ELEMENT parameter (optionlist|enumlist|argument|para|note|warning|parameter|info|xi:include)*>
<!ATTLIST parameter name CDATA "">
<!ATTLIST parameter required (yes|no|true|false) "false">
<!ATTLIST parameter multiple (yes|no|true|false) "false">
<!ATTLIST parameter hasparams (yes|no|true|false|optional) "false">
<!ATTLIST parameter literal (yes|no|true|false) "false">
<!ATTLIST parameter default CDATA "">
<!ATTLIST parameter argsep CDATA ",">
<!ELEMENT optionlist (option+)>
<!ELEMENT option (argument|para|note|warning|variablelist|enumlist|info|xi:include)*>
<!ATTLIST option name CDATA #REQUIRED>
<!ATTLIST option argsep CDATA ",">
<!ATTLIST option implies CDATA "">
<!ATTLIST option hasparams CDATA "">
<!ELEMENT enumlist (configOptionToEnum|enum)+>
<!ELEMENT enum (para|note|warning|parameter|enumlist|info|xi:include)*>
<!ATTLIST enum name CDATA "">
<!ELEMENT argument (para|note|warning|variablelist|argument|info|xi:include)*>
<!ATTLIST argument name CDATA #REQUIRED>
<!ATTLIST argument multiple (yes|no|true|false) "false">
<!ATTLIST argument required (yes|no|true|false) "false">
<!ATTLIST argument hasparams (yes|no|true|false|optional) "false">
<!ATTLIST argument argsep CDATA ",">
<!ELEMENT para (#PCDATA|astcli|literal|emphasis|filename|directory|replaceable|variable|xi:include)*>
<!ELEMENT literal (#PCDATA)>
<!ELEMENT emphasis (#PCDATA)>
<!ELEMENT filename (#PCDATA)>
<!ELEMENT replaceable (#PCDATA)>
<!ELEMENT directory (#PCDATA)>
<!ELEMENT astcli (#PCDATA)>
<!ELEMENT example (#PCDATA|xi:include)*>
<!ATTLIST example title CDATA "">
<!ATTLIST example language CDATA "" >
<!ELEMENT note (para+|xi:include*)>
<!ELEMENT warning (para+|xi:include*)>
<!ELEMENT variablelist (variable+|xi:include*)>
<!ELEMENT variable (#PCDATA|value|para|info|xi:include)*>
<!ATTLIST variable name CDATA "">
<!ELEMENT value (#PCDATA)>
<!ATTLIST value name CDATA #REQUIRED>
<!ATTLIST value default CDATA "">