Extend Property

This element allows you to override or switch to different attribute values with respect to the parent <property> attributes.

Possible locations


Note:
  • Except for the name attribute, extend-property can override all the attributes of the parent property.
  • In extend-property, you can add all the attributes and child elements of a property, but not the name attribute.
  • All the child elements and attributes are optional for extend-property.
  • You can override the type attribute, only with the subtypes of the parent property’s datatype. For example, you can override the number type with integer or double.

Elemental Behavior:

You can not extend an extend-property further with another extend-property.

Example

Consider that in the trips resource, you want to customize the behavior of a particular <property> (adventure_activities) in <response>, depending upon an <argument> called service.

copy

adventure_activities: Object datatype
automation service: adventure_activities key should be a 'collection' 
All other services: adventure_activities key should behave as a 'Boolean' 

Following is a sample of adventure_activities property behaving as a JSON array:

copy

{
    "adventure_activities": [
        "Hiking",
        "Rock Climbing",
        "Wildlife Safaris",
        "Surfing"
    ]
}

Now, write the extend-property as follows to configure this adventure_activities property as collections for automation service and Boolean for the rest.

copy

<response name="get_success" status="200">
    <content>
        <encode type="application/json" />
        <structure>
            <property name="adventure_activities" type="object">
                <extend-property type="collections" condition-for-response="'automation' :: REQUEST:$.params.service"> 
                    <structure>
                        <property type="string" />
                    </structure>
                </extend-property>
                <extend-property type="boolean" condition-for-response="REQUEST:$.params.service == null || REQUEST:$.params.service != automation" />
            </property>
        </structure>
    </content>
</response>

Refer to the conditions and data path to learn more on how to construct conditions for the condition-for-response attribute used in this sample.

Last Updated 2025-05-30 16:54:59 +0530 IST