Use URI parameters to serve different mocked responses

I have the following endpoint available to users:

http://blabla-test.apigee.net/mocker/sessions/{sessionId}:{action}

Where `sessionId` is an number and `action` corresponds to an event (start or stop in our case). A real example:

http://blabla-test.apigee.net/mocker/sessions/87189917820:start
http://blabla-test.apigee.net/mocker/sessions/87189917820:stop

It is possible for a user to extend or start and session based on the `action` sent. Different `actions` will provide different mocked responses, which we are serving through AssignMessage policies (JSON payloads).

I have tried the ExtractVariable policy to pull `sessionId` and `action` from the URIPath. However, I'm unsure how to use those variables in a condition flow, from what it looks like I can only use the variables in a JS callout.

0 1 121
1 REPLY 1

Flow variables can be used in a conditional flow like this:

https://docs.apigee.com/api-platform/reference/conditions-reference

And in policies which support variable inputs, such as AssignMessage: https://docs.apigee.com/api-platform/reference/policies/assign-message-policy#top_of_page

So you could, for example have a step like this:

<Step>
  <Condition>extracted.action = "start"</Condition>
  <Name>AM-Mock-Start</Name>
</Step>

With a policy like this:

<AssignMessage
    continueOnError="false"
    enabled="true]"
    name="AM-Mock-Start" >
  <AssignTo createNew="false" transport="http" type="response">response</AssignTo>
  <DisplayName>AM-Mock-Start</DisplayName>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>

  <Set>
    <Payload contentType="text/plain">
      Session ID {extracted.session} successfully started
    </Payload>
    <StatusCode>200</StatusCode>
  </Set>
</AssignMessage>

And this would use the session ID and action extracted from the request to set the response to the success message only when the extracted.action variable is set to "start".