# 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.

Default Action: deny
Paths:
  /c2/config:
    Default Action: deny
    Actions:
    - Authorization: CLASS_RASPI_3
      Query Parameters:
        class: raspi3
      Action: allow
    - Authorization: ROLE_SUPERUSER
      Action: allow

    # Default authorization lets anonymous pull any config.  Remove below to change that.
    - Authorization: ROLE_ANONYMOUS
      Action: allow

  /c2/config/contentTypes:
    Default Action: deny
    Actions:
    - Authorization: CLASS_RASPI_3
      Action: allow
    # Default authorization lets anonymous pull any config.  Remove below to change that.
    - Authorization: ROLE_ANONYMOUS
      Action: allow
