<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ProxyEndpoint name="default">
    <Description/>
    <DefaultFaultRule name="DefaultFaultRule">
        <Step>
            <Condition>(flow.error.code == null)</Condition>
            <Name>AM-set-proxy-default-error-vars</Name>
        </Step>
        <Step>
            <Name>AM-set-standard-error-response</Name>
        </Step>
        <AlwaysEnforce>true</AlwaysEnforce>
    </DefaultFaultRule>
    <FaultRules>
        <FaultRule name="ProxyFaultRules">
            <!-- Quiet apigeelint -->
            <Condition>(fault.name != null)</Condition>
            <Step>
                <Name>JS-proxy-fault-rules</Name>
            </Step>
        </FaultRule>
    </FaultRules>
    <PreFlow name="PreFlow">
        <Request>
            <Step>
                <Condition>(request.verb != "OPTIONS")</Condition>
                <Name>VA-header</Name>
            </Step>
            <Step>
                <Condition>(request.verb != "OPTIONS")</Condition>
                <Name>AM-remove-x-apikey</Name>
            </Step>
            <Step>
                <Condition>(request.verb != "OPTIONS")</Condition>
                <Name>KV-config-values</Name>
            </Step>
            <Step>
                <Name>AM-config-properties</Name>
            </Step>
        </Request>
        <Response/>
    </PreFlow>
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
    <Flows>
        <Flow name="ping">
            <Description>proxy health check</Description>
            <Request/>
            <Response>
                <Step>
                    <Name>JS-set-time-data</Name>
                </Step>
                <Step>
                    <Name>AM-create-ping-response</Name>
                </Step>
            </Response>
            <Condition>(proxy.pathsuffix MatchesPath "/ping") and (request.verb = "GET")</Condition>
        </Flow>
        <Flow name="status">
            <Description>back end health check</Description>
            <Request/>
            <Response>
                <Step>
                    <Name>JS-set-time-data</Name>
                </Step>
                <Step>
                    <Name>AM-create-status-response</Name>
                </Step>
            </Response>
            <Condition>(proxy.pathsuffix MatchesPath "/status") and (request.verb = "GET")</Condition>
        </Flow>
        <Flow name="cors">
            <Description>ignore OPTIONS request</Description>
            <Request/>
            <Response/>
            <Condition>(request.verb = "OPTIONS") and (proxy.pathsuffix MatchesPath "/**")</Condition>
        </Flow>
        <Flow name="catch all">
            <Description>Catch any unmatched calls and raise fault</Description>
            <Request>
                <Step>
                    <Name>RF-path-suffix-not-found</Name>
                </Step>
            </Request>
            <Response/>
            <Condition>(proxy.pathsuffix MatchesPath "**")</Condition>
        </Flow>
    </Flows>
    <HTTPProxyConnection>
        <BasePath>/pingstatus/v1</BasePath>
    </HTTPProxyConnection>
    <RouteRule name="cors">
        <Condition>(request.verb == "OPTIONS")</Condition>
    </RouteRule>
    <RouteRule name="ping">
        <Condition>(proxy.pathsuffix MatchesPath "/ping")</Condition>
    </RouteRule>
    <RouteRule name="default">
        <TargetEndpoint>default</TargetEndpoint>
    </RouteRule>
</ProxyEndpoint>