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


<service role="JKG" name="jkg" version="1.1.2">

    <routes>
        <route path="/jkg">
        </route>
        <route path="/jkg/api/kernelspecs">
            <rewrite apply="JKG/jkg/inbound/api/kernelspecs" to="request.url"/>
        </route>
        <route path="/jkg/api/kernelspecs/**">
            <rewrite apply="JKG/jkg/inbound/api/kernelspecs/query" to="request.url"/>
        </route>
        <route path="/jkg/api/kernels">
            <policies>
                <policy role="webappsec"/>
                <policy role="authentication"/>
                <policy role="rewrite"/>
                <policy role="authorization"/>
            </policies>
            <rewrite apply="JKG/jkg/inbound/api/kernelsurl" to="request.url"/>
            <rewrite apply="JKG/jkg/outbound/api/kernels" to="response.body"/>
            <rewrite apply="JKG/jkg/inbound/api/kernels" to="request.body"/>
        </route>
        <route path="/jkg/api/kernels/*">
            <policies>
                <policy role="webappsec"/>
                <policy role="authentication"/>
                <policy role="rewrite"/>
                <policy role="authorization"/>
            </policies>
            <rewrite apply="JKG/jkg/inbound/api/kernel/query" to="request.url"/>
        </route>
    </routes>
</service>
