anchor.diff:  :page-permalink: apim/3.x/apim_publisherguide_expression_language.html
   :page-folder: apim/user-guide/publisher
   :page-layout: apim3x
  +:page-liquid:
   
   == Overview
   
  
positive.code: == API
  === Properties
  
  As an API publisher, you can define properties for your API. These properties are
  automatically _injected_ into the expression language context to be used later.
  
  ==== Example
  
  * Get the value of the property `my-property` defined in API properties:
  `{#properties['my-property']}`
  
  === Dictionaries
  
  Dictionaries work in a similar way to properties, but you need to specify the dictionary name as well as the property name.
  
  ==== Example
  
  
negative.code: is based on an API property named `my-property`:
  
  `{#request.headers[#properties['my-property']]}`
  
  == Conditions
  
  Expression language can also be used to set condition of execution [see conditional policies & flows conditions] and it is possible use logical operator as `&&` or `||` :
  
  `{#request.headers['my-header'] != null && #request.headers['my-header'][0].equals("my-value")}`
  
  == Template evaluation error
  
  In case of error using Expression Language, an exception will be raised :
  
  `The template evaluation returns an error. Expression:
  {#context.error}`
  