# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


catalog:
  - name: "Welcome"
    path: "/readme"
  - name: "Designs"
    catalog:
      - name: "Proposal"
        path: "/design/proposal"
  - name: "Setup"
    catalog:
      - name: "Java Agent Injector"
        path: "/java-agent-injector"
      - name: "Operator"
        path: "/operator"
      - name: "Adapter"
        path: "/custom-metrics-adapter"
  - name: "Examples"
    catalog:
      - name: "Inject Java Agent"
        path: "/examples/java-agent-injector-usage"
      - name: "Deploy OAP and UI"
        path: "/examples/default-backend"
      - name: "Deploy Storage"
        path: "/examples/storage"
      - name: "Fetch metrics"
        path: "/examples/istio-controlplane"
      - name: "Install Satellite"
        path: "/examples/satellite"
  - name: "Contributing Guides"
    catalog:
      - name: "Contribute"
        path: "https://skywalking.apache.org/docs/main/latest/en/guides/readme/"
      - name: "Become A Committer"
        path: "https://skywalking.apache.org/docs/main/latest/en/guides/asf/committer/"
      - name: "Release Guide"
        path: "/release"
  - name: "Changelog"
    path: "https://github.com/apache/skywalking-swck/tree/master/changes"
