## definition of `menuitem`===========
# title: string
# url: string
# output: [ enum{web, pdf} ] (expressed as comma separated string in YAML)
# children?: [ menuitem ]

## top level property=================
# entries: [ menuitem ]

title: LoopBack 4
url: index.html
children:

- title: 'Overview'
  url: index.html
  output: 'web, pdf'

- title: 'Getting started'
  url: Getting-started.html
  output: 'web, pdf'

- title: 'Inside a LoopBack Application'
  url: Inside-LoopBack-Application.html
  output: 'web, pdf'

- title: 'Key concepts'
  url: Concepts.html
  output: 'web, pdf'
  children:

  - title: 'Application'
    url: Application.html
    output: 'web, pdf'

  - title: 'Server'
    url: Server.html
    output: 'web, pdf'

  - title: 'Controllers'
    url: Controllers.html
    output: 'web, pdf'

  - title: 'Models'
    url: Model.html
    output: 'web, pdf'

  - title: 'Relations'
    url: Relations.html
    output: 'web, pdf'
    children:

    - title: 'HasMany Relation'
      url: HasMany-relation.html
      output: 'web, pdf'

    - title: 'BelongsTo Relation'
      url: BelongsTo-relation.html
      output: 'web, pdf'

    - title: 'HasOne Relation'
      url: HasOne-relation.html
      output: 'web, pdf'

  - title: 'DataSources'
    url: DataSources.html
    output: 'web, pdf'

  - title: 'Repositories'
    url: Repositories.html
    output: 'web, pdf'
    children:

    - title: 'Database Transactions'
      url: Using-database-transactions.html
      output: 'web, pdf'

  - title: 'Services'
    url: Services.html
    output: 'web, pdf'

  - title: 'Interceptors'
    url: Interceptors.html
    output: 'web, pdf'

  - title: 'Life cycle events and observers'
    url: Life-cycle.html
    output: 'web, pdf'

  - title: 'Routes'
    url: Routes.html
    output: 'web, pdf'

  - title: 'Sequence'
    url: Sequence.html
    output: 'web, pdf'
    children:

    - title: 'Routing requests'
      url: Routing-requests.html
      output: 'web, pdf'

    - title: 'Parsing requests'
      url: Parsing-requests.html
      output: 'web, pdf'

  - title: 'Decorators'
    url: Decorators.html
    output: 'web, pdf'
    children:

    - title: 'OpenAPI Decorators'
      url: Decorators_openapi.html
      output: 'web, pdf'

    - title: 'Dependency Injection Decorator'
      url: Decorators_inject.html
      output: 'web, pdf'

    - title: 'Authentication Decorator'
      url: Decorators_authenticate.html
      output: 'web, pdf'

    - title: 'Service Decorators'
      url: Decorators_service.html
      output: 'web, pdf'

    - title: 'Repository Decorators'
      url: Decorators_repository.html
      output: 'web, pdf'

  - title: 'Mixins'
    url: Mixin.html
    output: 'web, pdf'

  - title: 'Error handling'
    url: Error-handling.html
    output: 'web, pdf'

- title: 'Usage Scenarios'
  url: Usage-scenarios.html
  output: 'web, pdf'
  children:

  - title: 'Create Other Forms of APIs'
    url: Create-other-forms-of-apis.html
    output: 'web, pdf'
    children:
      - title: 'Exposing GraphQL APIs'
        url: exposing-graphql-apis.html
        output: 'web, pdf'

  - title: 'Access Databases'
    url: Access-databases.html
    output: 'web, pdf'
    children:
      
    - title: 'Working with data'
      url: Working-with-data.html
      output: 'web, pdf'
      children:

      - title: 'Querying data'
        url: Querying-data.html
        output: 'web, pdf'
        children:

        - title: 'Fields filter'
          url: Fields-filter.html
          output: 'web, pdf'

        - title: 'Include filter'
          url: Include-filter.html
          output: 'web, pdf'

        - title: 'Limit filter'
          url: Limit-filter.html
          output: 'web, pdf'

        - title: 'Order filter'
          url: Order-filter.html
          output: 'web, pdf'

        - title: 'Skip filter'
          url: Skip-filter.html
          output: 'web, pdf'

        - title: 'Where filter'
          url: Where-filter.html
          output: 'web, pdf'

    - title: 'Database Migrations'
      url: Database-migrations.html
      output: 'web, pdf'

  - title: 'Call Other Services'
    url: Calling-other-APIs-and-web-services.html
    output: 'web, pdf'

  - title: 'Integrate with Infrastructures'
    url: Integrate-with-infrastructures.html
    output: 'web, pdf'
    children:

    - title: 'Authentication'
      url: Loopback-component-authentication.html
      output: 'web, pdf'

    - title: 'Authorization'
      url: Loopback-component-authorization.html
      output: 'web, pdf'

  - title: 'Deployment'
    url: Deployment.html
    output: 'web, pdf'
    children:
      - title: 'Deploying to IBM Cloud'
        url: Deploying-to-IBM-Cloud.html
        output: 'web, pdf'

      - title: 'Deploying to Kubernetes on IBM Cloud'
        url: deploying_to_ibm_cloud_kubernetes.html
        output: 'web, pdf'

      - title: 'Deploying with pm2 and nginx'
        url: deploying-with-pm2-and-nginx.html
        output: 'web, pdf'

      - title: 'Developing and Deploying LoopBack Applications with Appsody'
        url: Appsody-LoopBack.html
        output: 'web, pdf'

  - title: 'Serving Static Files'
    url: Serving-static-files.html
    output: 'web, pdf'

  - title: 'Uploading and Downloading Files'
    url: File-upload-download.html
    output: 'web, pdf'

  - title: 'Validation'
    url: Validation.html
    output: 'web, pdf'
    children:
      - title: 'Validation in REST Layer'
        url: Validation-REST-layer.html
        output: 'web, pdf'

      - title: 'Validation in the Controller, Repository and Service Layer'
        url: Validation-controller-repo-service-layer.html
        output: 'web, pdf'

      - title: 'Validation in ORM Layer'
        url: Validation-ORM-layer.html
        output: 'web, pdf'

- title: 'Behind the Scene'
  url: Behind-the-scene.html
  output: 'web, pdf'
  children:

    - title: 'Context'
      url: Context.html
      output: 'web, pdf'

    - title: 'Binding'
      url: Binding.html
      output: 'web, pdf'

    - title: 'Dependency Injection'
      url: Dependency-injection.html
      output: 'web, pdf'
      children:

        - title: 'Reserved binding keys'
          url: Reserved-binding-keys.html
          output: 'web, pdf'

    - title: 'Components'
      url: Components.html
      output: 'web, pdf'

    - title: 'Request/response cycle'
      url: Request-response-cycle.html
      output: 'web, pdf'

- title: 'Booting an Application'
  url: Booting-an-Application.html
  output: 'web, pdf'

- title: 'Using Components'
  url: Using-components.html
  output: 'web, pdf'
  children:

  - title: 'Self-hosted REST API Explorer'
    url: Self-hosted-rest-api-explorer.html
    output: 'web, pdf'

  - title: 'Creating CRUD REST APIs from a model'
    url: Creating-crud-rest-apis.html
    output: 'web, pdf'

  - title: 'Authentication'
    url: Loopback-component-authentication.html
    output: 'web, pdf'
    children:

    - title: 'Passport Adapter for Authentication'
      url: Authentication-passport.html
      output: 'web, pdf'

  - title: 'Authorization'
    url: Loopback-component-authorization.html
    output: 'web, pdf'

  - title: 'Boot and Mount a LoopBack 3 Application'
    url: Boot-and-Mount-a-LoopBack-3-application.html
    output: 'web, pdf'

  - title: 'Running cron jobs'
    url: Running-cron-jobs.html
    output: 'web, pdf'

  - title: 'Health check'
    url: Health.html
    output: 'web, pdf'

  - title: 'Metrics for Prometheus'
    url: Metrics.html
    output: 'web, pdf'

- title: 'Extending LoopBack 4'
  url: Extending-LoopBack-4.html
  output: 'web, pdf'
  children:

  - title: 'Creating components'
    url: Creating-components.html
    output: 'web, pdf'

  - title: 'Creating decorators'
    url: Creating-decorators.html
    output: 'web, pdf'

  - title: 'Creating servers'
    url: Creating-servers.html
    output: 'web, pdf'

  - title: 'Extension point and extensions'
    url: Extension-point-and-extensions.html
    output: 'web, pdf'

  - title: 'Extending request body parsing'
    url: Extending-request-body-parsing.html
    output: 'web, pdf'

  - title: 'Extension life cycle'
    url: Extension-life-cycle.html
    output: 'web, pdf'

  - title: 'Extending OpenAPI specification'
    url: Extending-OpenAPI-specification.html
    output: 'web, pdf'

  - title: 'Extending Model API builder'
    url: Extending-Model-API-builder.html
    output: 'web, pdf'

  - title: 'Testing your extension'
    url: Testing-your-extension.html
    output: 'web, pdf'

- title: 'Crafting LoopBack 4'
  url: Crafting-LoopBack-4.html
  output: 'web, pdf'

- title: 'Tutorials'
  url: Tutorials.html
  output: 'web, pdf'
  children:

  - title: 'Todo Tutorial'
    url: todo-tutorial.html
    output: 'web, pdf'
    children:

    - title: 'Create your app scaffolding'
      url: todo-tutorial-scaffolding.html
      output: 'web, pdf'

    - title: 'Add the Todo model'
      url: todo-tutorial-model.html
      output: 'web, pdf'

    - title: 'Add a Datasource'
      url: todo-tutorial-datasource.html
      output: 'web, pdf'

    - title: 'Add a Repository'
      url: todo-tutorial-repository.html
      output: 'web, pdf'

    - title: 'Add a Controller'
      url: todo-tutorial-controller.html
      output: 'web, pdf'

    - title: 'Putting it all together'
      url: todo-tutorial-putting-it-together.html
      output: 'web, pdf'

    - title: 'Bonus: Integrate with a geo-coding service'
      url: todo-tutorial-geocoding-service.html
      output: 'web, pdf'

  - title: 'TodoList Tutorial'
    url: todo-list-tutorial.html
    output: 'web, pdf'
    children:

    - title: 'Add TodoList Model'
      url: todo-list-tutorial-model.html
      output: 'web, pdf'

    - title: 'Add TodoList Repository'
      url: todo-list-tutorial-repository.html
      output: 'web, pdf'

    - title: 'Add Model Relations'
      url: todo-list-tutorial-relations.html
      output: 'web, pdf'
      children:

      - title: 'Add a HasOne Relation'
        url: todo-list-tutorial-has-one-relation.html
        output: 'web, pdf'

    - title: 'Add TodoList Controller'
      url: todo-list-tutorial-controller.html
      output: 'web, pdf'

    - title: 'Running on relational databases'
      url: todo-list-tutorial-sqldb.html
      output: 'web, pdf'

  - title: 'SOAP Web Service Tutorial'
    url: soap-calculator-tutorial.html
    output: 'web, pdf'
    children:

    - title: 'SOAP Web Service Overview'
      url: soap-calculator-tutorial-web-service-overview.html
      output: 'web, pdf'

    - title: 'App scaffolding'
      url: soap-calculator-tutorial-scaffolding.html
      output: 'web, pdf'

    - title: 'Add a Datasource'
      url: soap-calculator-tutorial-add-datasource.html
      output: 'web, pdf'

    - title: 'Add a Service'
      url: soap-calculator-tutorial-add-service.html
      output: 'web, pdf'

    - title: 'Add a Controller'
      url: soap-calculator-tutorial-add-controller.html
      output: 'web, pdf'

    - title: 'Run and Test it'
      url: soap-calculator-tutorial-run-and-test.html
      output: 'web, pdf'

  - title: 'Creating an Express Application with LoopBack REST API'
    url: express-with-lb4-rest-tutorial.html
    output: 'web, pdf'

  - title: 'How to secure your LoopBack 4 application with JWT authentication'
    url: Authentication-Tutorial.html
    output: 'web, pdf'

  - title: 'Build large scale Node.js projects with LoopBack 4'
    url: core-tutorial.html
    output: 'web, pdf'
    children:

      - title: 'Introduction of the application scenario'
        url: core-tutorial-part1.html
        output: 'web, pdf'

      - title: 'Architectural challenges'
        url: core-tutorial-part2.html
        output: 'web, pdf'

      - title: 'Context in action'
        url: core-tutorial-part3.html
        output: 'web, pdf'

      - title: 'Dependency injection'
        url: core-tutorial-part4.html
        output: 'web, pdf'

      - title: 'Extension point and extensions'
        url: core-tutorial-part5.html
        output: 'web, pdf'

      - title: 'Interception'
        url: core-tutorial-part6.html
        output: 'web, pdf'

      - title: 'Observation of life cycle events'
        url: core-tutorial-part7.html
        output: 'web, pdf'

      - title: 'Configuration'
        url: core-tutorial-part8.html
        output: 'web, pdf'

      - title: 'Discover and load artifacts by convention'
        url: core-tutorial-part9.html
        output: 'web, pdf'

      - title: 'Advanced Recipes'
        url: core-tutorial-part10.html
        output: 'web, pdf'

      - title: 'Summary'
        url: core-tutorial-part11.html
        output: 'web, pdf'

- title: 'Examples'
  url: Examples.html
  output: 'web, pdf'

- title: 'CLI References'
  url: Command-line-interface.html
  output: 'web, pdf'
  children:

  - title: 'Application generator'
    url: Application-generator.html
    output: 'web, pdf'

  - title: 'Controller generator'
    url: Controller-generator.html
    output: 'web, pdf'

  - title: 'DataSource generator'
    url: DataSource-generator.html
    output: 'web, pdf'

  - title: 'Import models from LoopBack 3'
    url: Importing-LB3-models.html
    output: 'web, pdf'

  - title: 'Model generator'
    url: Model-generator.html
    output: 'web, pdf'

  - title: 'Model discovery'
    url: Discovering-models.html
    output: 'web, pdf'

  - title: 'Relation generator'
    url: Relation-generator.html
    output: 'web, pdf'

  - title: 'Repository generator'
    url: Repository-generator.html
    output: 'web, pdf'

  - title: 'REST CRUD model endpoints generator'
    url: Rest-Crud-generator.html
    output: 'web, pdf'

  - title: 'Service generator'
    url: Service-generator.html
    output: 'web, pdf'

  - title: 'OpenAPI generator'
    url: OpenAPI-generator.html
    output: 'web, pdf'

  - title: 'Life cycle observer generator'
    url: Life-cycle-observer-generator.html
    output: 'web, pdf'

  - title: 'Interceptor generator'
    url: Interceptor-generator.html
    output: 'web, pdf'

  - title: 'Extension generator'
    url: Extension-generator.html
    output: 'web, pdf'

  - title: 'Download examples'
    url: Download-examples.html
    output: 'web, pdf'

  - title: 'Update project dependencies'
    url: Update-generator.html
    output: 'web, pdf'

  - title: 'Generate copyright/license headers'
    url: Copyright-generator.html
    output: 'web, pdf'

- title: 'Connectors reference'
  url: Connectors-reference.html
  output: 'web'
  children:

  - title: 'Memory connector'
    url: Memory-connector.html
    output: 'web, pdf'

  - title: 'Database connectors'
    url: Database-connectors.html
    output: 'web'
    children:

    - title: 'Cassandra connector'
      url: Cassandra-connector.html
      output: 'web, pdf'

    - title: 'Cloudant connector'
      url: Cloudant-connector.html
      output: 'web, pdf'

    - title: 'DashDB connector'
      url: DashDB.html
      output: 'web, pdf'

    - title: 'IBM Db2 (for Linux, Unix, Windows) connector'
      url: DB2-connector.html
      output: 'web, pdf'

    - title: 'IBM Db2 for i connector'
      url: DB2-for-i-connector.html
      output: 'web, pdf'

    - title: 'IBM Db2 for z/OS connector'
      url: DB2-for-z-OS-connector.html
      output: 'web, pdf'

    - title: Informix connector
      url: Informix.html
      output: 'web, pdf'

    - title: 'MongoDB connector'
      url: MongoDB-connector.html
      output: 'web, pdf'
      children:

      - title: 'MongoDB Connector Tutorial'
        url: Connecting-to-MongoDB.html
        output: 'web, pdf'

      - title: 'Using MongoLab'
        url: Using-MongoLab.html
        output: 'web, pdf'

    - title: 'MySQL connector'
      url: MySQL-connector.html
      output: 'web, pdf'
      children:

      - title: 'MySQL Connector Tutorial'
        url: Connecting-to-MySQL.html
        output: 'web, pdf'

    - title: 'Oracle connector'
      url: Oracle-connector.html
      output: 'web, pdf'
      children:

      - title: 'Installing the Oracle connector'
        url: Installing-the-Oracle-connector.html
        output: 'web, pdf'

      - title: 'Oracle connector tutorial'
        url: Connecting-to-Oracle.html
        output: 'web, pdf'

    - title: 'PostgreSQL connector'
      url: PostgreSQL-connector.html
      output: 'web, pdf'
      children:

      - title: 'PostgreSQL connector tutorial'
        url: Connecting-to-PostgreSQL.html
        output: 'web, pdf'

    - title: 'Redis connector'
      url: Redis-connector.html
      output: 'web, pdf'

    - title: 'Redis key-value connector'
      url: kv-redis-connector.html
      output: 'web, pdf'
      children:

      - title: 'KV connector example'
        url: Example-kv-connector.html
        output: 'web, pdf'

    - title: 'SQL Server connector'
      url: SQL-Server-connector.html
      output: 'web, pdf'
      children:

      - title: 'SQL Server connector tutorial'
        url: Connecting-to-Microsoft-SQL-Server.html
        output: 'web, pdf'

    - title: 'SQLite3 connector'
      url: SQLite3.html
      output: 'web, pdf'

    - title: 'z/OS Connect Enterprise Edition connector'
      url: zOSconnectEE.html
      output: 'web, pdf'

  - title: 'Other connectors'
    url: Other-connectors.html
    output: 'web'
    children:

    - title: 'Email connector'
      url: Email-connector.html
      output: 'web, pdf'

    - title: 'JSON RPC connector'
      url: JSON-RPC-connector.html
      output: 'web, pdf'

    - title: 'MQ Light connector'
      url: MQLight-connector.html
      output: 'web, pdf'

    - title: 'Push connector'
      url: Push-connector.html
      output: 'web, pdf'

    - title: 'REST connector'
      url: REST-connector.html
      output: 'web, pdf'
      children:

      - title: 'REST connector example'
        url: REST-connector-example.html
        output: 'web, pdf'

    - title: 'SOAP connector'
      url: SOAP-connector.html
      output: 'web, pdf'
      children:

      - title: 'Strong-soap'
        url: Strong-soap.html
        output: 'web, pdf'

      - title: 'SOAP connector example'
        url: SOAP-Connector-example.html
        output: 'web, pdf'

      - title: 'Connecting to SOAP web services'
        url: Connecting-to-SOAP.html
        output: 'web, pdf'

    - title: 'Storage connector'
      url: Storage-connector.html
      output: 'web, pdf'

    - title: 'Swagger connector'
      url: Swagger-connector.html
      output: 'web, pdf'

    - title: 'OpenAPI connector'
      url: OpenAPI-connector.html
      output: 'web, pdf'

  - title: 'Community connectors'
    url: Community-connectors.html
    output: 'web, pdf'

- title: 'API docs'
  url: apidocs.index.html
  output: 'web, pdf'

- title: 'Migration guide'
  url: 'migration-overview.html'
  output: 'web, pdf'
  children:

  - title: 'Understanding the differences'
    url: Understanding-the-differences.html
    output: 'web, pdf'

  - title: 'Request/response cycle'
    url: LB3-vs-LB4-request-response-cycle.html
    output: 'web, pdf'

  - title: 'Mounting a LoopBack 3 application'
    url: migration-mounting-lb3app.html
    output: 'web, pdf'

  - title: 'Express middleware'
    url: migration-express-middleware.html
    output: 'web, pdf'

  - title: 'Datasources'
    url: migration-datasources.html
    output: 'web, pdf'

  - title: 'Migrating models'
    url: migration-models-overview.html
    output: 'web, pdf'
    children:

    - title: 'Model definitions and built-in APIs'
      url: migration-models-core.html
      output: 'web, pdf'

    - title: 'Relations'
      url: migration-models-relations.html
      output: 'web, pdf'

    - title: 'Custom methods'
      url: migration-models-methods.html
      output: 'web, pdf'

    - title: 'Remoting hooks'
      url: migration-models-remoting-hooks.html
      output: 'web, pdf'

    - title: 'CRUD operation hooks'
      url: migration-models-operation-hooks.html
      output: 'web, pdf'

    - title: 'Mixins'
      url: migration-models-mixins.html
      output: 'web, pdf'

  - title: 'Boot scripts'
    url: migration-boot-scripts.html
    output: 'web, pdf'

  - title: 'Authentication & authorization'
    url: migration-auth-overview.html
    output: 'web, pdf'
    children:

    - title: 'Access control example'
      url: migration-auth-access-control-example.html
      output: 'web, pdf'

    - title: 'Built-in models and authentication'
      url: migration-authentication.html
      output: 'web, pdf'

    - title: 'Passport'
      url: migration-auth-passport.html
      output: 'web, pdf'

    - title: 'OAuth2 Provider'
      url: migration-auth-oauth2.html
      output: 'web, pdf'

  - title: 'CLI'
    url: migration-cli.html
    output: 'web, pdf'

  - title: 'Components and extensions'
    url: migration-extensions.html
    output: 'web, pdf'

  - title: 'Clients (API consumers)'
    url: migration-clients.html
    output: 'web, pdf'

  - title: 'Features not planned'
    url: migration-not-planned.html
    output: 'web, pdf'

- title: 'Best practices'
  url: Best-practices.html
  output: 'web, pdf'
  children:

  - title: 'Defining the API using code-first approach'
    url: Defining-the-API-using-code-first-approach.html
    output: 'web, pdf'

  - title: 'Defining your testing strategy'
    url: Defining-your-testing-strategy.html
    output: 'web, pdf'

  - title: 'Testing your application'
    url: Testing-your-application.html
    output: 'web, pdf'

- title: 'Contribute to LoopBack 4'
  url: code-contrib-lb4.html
  output: 'web, pdf'
  children:

    - title: 'Submitting a pull request to LoopBack 4'
      url: submitting_a_pr.html
      output: 'web, pdf'

- title: 'Change logs'
  url: changelog.index.html
  output: 'web, pdf'

- title: 'Reference'
  url: Reference.html
  output: 'web, pdf'
  children:

  - title: 'Considerations for GDPR readiness'
    url: Deploy-for-GDPR-readiness.html
    output: 'web, pdf'

- title: 'FAQ'
  url: FAQ.html
  output: 'web, pdf'
