Check out Multidoc viewer
Did you say Laravel?
Just manual-functional testing for now  provided in folder demo_files by running index.php and check the output
- Define mandatory and optional parameters by adding demo files
- Validate route params
- If FILE and JSON or named POST variables present throw error (only 1 of them)
- Parameter type validation (from list:uri,post, get)
- GET cannot have JSON and FILE
- Route validation: I. If parameter present in route check if it exists in list II. If parameter present check if uri
 
- Parses *.yamlfiles and generates a flat document containing the application's documentation
- 
No filename convention required 
- 
You can organize however you want 
- 
A sugestion would be to have multiple files: - _project.yaml- Project description
- _categories.yaml- Menu items and sub-items
- user_route.yaml- Route example
- another_route.yaml- Route example
 
- 
Project - File name _my_awesome_project.yaml
 
- File name 
project:
  name: My Awesome project
  version: 1
  description: Some awesome description
  environments:
    default: https://wwww.myproductionurl.com
    preprod: https://www.mypreproductionurl.com
- Categories
- File name _my_awesome_categories.yaml
 
- File name 
categories:
  cat1:
    name: Cat 1
    categories:
      cat2:
        name: Cat 2
  cat3:
      name: Cat 3
  cat4:
      name: Cat 4
- Route example
- File name user_route.yaml
 
- File name 
route:
  name: Some route 1
  description: Some desc 1
  tags: [tag1, tag2, tag3, tag4, tag5]
  category: cat1
  request:
      url: '{{environment}}/[:typeEntity][/:page]/comments'
      method: GET
      params:
        - name: typeEntity
          type: uri
          data_type: string
          description: Some desc
          optional: false
          example: posts
        - name: page
          type: uri
          data_type: int
          description: Some desc
          optional: true
          example: 1
- Multiple routes example
- File name some_routes.yaml
 
- File name 
route_list:
  - name: Some route 2
    description: Some desc 2
    tags: [tag1, tag2, tag3, tag4, tag 5]
    category: cat1
    request:
        url: '{{environment}}/[:typeEntity][/:page]/comments'
        method: GET
        params:
          - name: typeEntity
            type: uri
            data_type: string
            description: Some desc
            optional: false
            example: posts
          - name: page
            type: uri
            data_type: int
            description: Some desc
            optional: true
            example: 1
  - name: Some route 3
    description: Some desc 3
    request:
        url: '{{environment}}/users/2/comments'
        method: GET
    tags: [tag3, tag4]
    category: cat2
  - name: Some route 4
    description: Some desc 4
    tags: [tag3, tag4]
    category: cat2
    request:
        url: '{{environment}}/[:typeEntity][/:page]/comments'
        method: GET
    params:
      - name: typeEntity
        type: uri
        data_type: string
        description: Some desc
        optional: false
        example: posts
        possible_values: [posts,test]