<div dir="ltr">Cool, I sent my email too soon!<div class="gmail_extra"><div><div><br></div>-Dolph</div>
<br><br><div class="gmail_quote">On Thu, Jun 6, 2013 at 3:16 PM, Bruno Semperlotti <span dir="ltr"><<a href="mailto:bruno.semperlotti@gmail.com" target="_blank">bruno.semperlotti@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Hi Brant,<div><br></div><div>Json schema has an attribute "<span style="font-family:verdana,charcoal,helvetica,arial,sans-serif">additionalProperties": true/false. If true (the default), all extra properties not declared in the corresponding schema level are ignored and thus considered as valid. </span></div>


<div><font color="#000000" face="verdana, charcoal, helvetica, arial, sans-serif">This allows to strictly validate expected data and gives enough flexibility to easily extends the API.</font></div><div><br></div>

<div><span style="font-family:arial,sans-serif;font-size:13px">{</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">    'type': 'object',</span><br style="font-family:arial,sans-serif;font-size:13px">


<span style="font-family:arial,sans-serif;font-size:13px">    'properties': {</span><div class="im"><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">        id': {'type': 'string'},</span><br style="font-family:arial,sans-serif;font-size:13px">


<span style="font-family:arial,sans-serif;font-size:13px">        'name': {'type': 'string'}</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">    },</span></div>
</div>

<div>    'required':['name'],</div><div>    'additionalProperties': true<br><span style="font-family:arial,sans-serif;font-size:13px">}</span><font color="#000000" face="verdana, charcoal, helvetica, arial, sans-serif"><br>


</font></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px">*** Valid if </span>'additionalProperties' is true, Invalid if 'additionalProperties' is false<span style="font-family:arial,sans-serif;font-size:13px">***</span></div>


<div><span style="font-family:arial,sans-serif;font-size:13px">{</span></div><div><span style="font-family:arial,sans-serif;font-size:13px">    'name': 'Smith',</span></div><div><span style="font-family:arial,sans-serif;font-size:13px">    'ext-region': 'US-East'</span></div>


<div><span style="font-family:arial,sans-serif;font-size:13px">}</span></div><div><br></div><div class="gmail_extra"><div>--<br>Bruno Semperlotti</div><div><div class="h5">
<br><br><div class="gmail_quote">On Thu, Jun 6, 2013 at 9:23 PM, Brant Knudson <span dir="ltr"><<a href="mailto:blk@acm.org" target="_blank">blk@acm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div dir="ltr"><div><div><br>Does OpenStack have a policy for handling of extra/unexpected arguments? Examples of extra arguments are unexpected query parameters on a GET request or extra fields provided in the JSON body of a POST.<br>



<br></div>Many web APIs ignore extra arguments to make it easier to add support for new features. For example, if 'GET /users' adds support for sorting with 'GET /users?sort=id' , new clients will still work with old servers, they just won't get the users back in sorted order.<br>



<br></div><div>If we strictly validate inputs that would make it more difficult to extend our APIs.<span><font color="#888888"><br></font></span></div><span><font color="#888888"><div><br></div>

- Brant<br><br></font></span></div><div class="gmail_extra"><br><br><div class="gmail_quote"><div>On Sun, Jun 2, 2013 at 4:11 AM, Bruno Semperlotti <span dir="ltr"><<a href="mailto:bruno.semperlotti@gmail.com" target="_blank">bruno.semperlotti@gmail.com</a>></span> wrote:<br>



</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr"><div>Hi,</div><div><br></div><div>As a first contribution, I recently worked on a small bug about bad error response when passing incorrect parameters in API requests (<span style="color:rgb(102,102,102);font-family:Ubuntu,'Bitstream Vera Sans','DejaVu Sans',Tahoma,sans-serif;font-size:12px;line-height:18px"><a href="https://bugs.launchpad.net/keystone/+bug/1110435" target="_blank">#1110435</a></span>).</div>





<div>There is also this other bug about bad application behavior when API requests data are incorrect or missing (<a href="https://bugs.launchpad.net/keystone/+bug/999084" target="_blank">#999084</a>)</div><div><br></div>



<div>

My point is that no systematic data validation seems to be made when receiving API requests, leading to potential unwanted behavior or instability.</div><div><br></div><div>I am working on a prototype to enable simple validation of all API requests data using json schemas and the python package <a href="https://pypi.python.org/pypi/jsonschema" target="_blank">jsonschema</a>.</div>





<div><br></div><div>As I am new in the openstack community and also because my work uses the json schema specification which is still a draft with a new package dependency, I was looking for some feedback about this idea before going on and filling a blueprint. </div>





<div><br></div><div>Regards,</div><br clear="all"><div>--<br>Bruno Semperlotti</div>
</div>
<br></div></div><div>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></div></blockquote></div><br></div>
<br>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div></div></div></div>
<br>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div></div>