<div dir="ltr"><div class="gmail_default" style="color:rgb(102,0,0)">While looking at <a href="https://issues.asterisk.org/jira/browse/ASTERISK-23125">https://issues.asterisk.org/jira/browse/ASTERISK-23125</a> it is clear to me that we need standard rules for case on all ARI URI's.  To date, the convention has been mostly lower case, which is nominal for REST API's.  However, the common use of PJSIP in caps has resulted in some inconsistencies:</div>
<div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)"><a href="http://127.0.0.1:8088/ari/endpoints/PJSIP">127.0.0.1:8088/ari/endpoints/PJSIP</a> => list of PJSIP endpoints</div>
<div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)"><a href="http://127.0.0.1:8088/ari/endpoints/pjsip">127.0.0.1:8088/ari/endpoints/pjsip</a> => same list of PJSIP endpoints</div>
<div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div><div class="gmail_default" style="color:rgb(102,0,0)"><a href="http://127.0.0.1:8088/ari/endpoints/PJSIP/200">127.0.0.1:8088/ari/endpoints/PJSIP/200</a> => details of endpoint 200</div>
<div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)"><a href="http://127.0.0.1:8088/ari/endpoints/pjsip/200">127.0.0.1:8088/ari/endpoints/pjsip/200</a> => Endpoint not found</div>
<div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)">For the purpose of this discussion, let's break the URI into multiple portions, for example:</div><div class="gmail_default" style="color:rgb(102,0,0)">
<br></div><div class="gmail_default" style="color:rgb(102,0,0)">/ari            /endpoints        /PJSIP         /200</div><div class="gmail_default" style="color:rgb(102,0,0)">PREFIX      PATH              TECH       RESOURCE</div>
<div class="gmail_default" style="color:rgb(102,0,0)"><div class="gmail_default"><br></div><div class="gmail_default">And in another example:</div><div class="gmail_default"><br></div><div class="gmail_default">/ari            /channels      /channelid      /operation</div>
<div class="gmail_default">PREFIX      PATH              ID             OPERATION</div><div><br></div></div><div class="gmail_default" style="color:rgb(102,0,0)">There could be different capitalization rules applied to each portion.  For example, in PJSIP it is completely possible to have one endpoint "foobar" and another "FOOBAR" -- thus we can presume that any resource portion MUST be case sensitive.  Similarly, a channel ID must be case sensitive.</div>
<div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)">The TECH portion is currently exhibiting case insensitivity in one case (list of endpoints) and case sensitivity in another (endpoint details).</div>
<div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)">The PATH portion is currently case sensitive (Endpoints or ENDPOINTS results in error).</div><div class="gmail_default" style="color:rgb(102,0,0)">
<br></div><div class="gmail_default" style="color:rgb(102,0,0)">And finally the PREFIX is case insensitive (ArI and aRi both work).</div><div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)">
<br></div><div class="gmail_default" style="color:rgb(102,0,0)">This way leads madness, and I propose we put a stop to it now.</div><div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)">
<br></div><div class="gmail_default" style="color:rgb(102,0,0)">There are many possible variations on how to solve this, but I recommend the following, and invite other suggestions.  I believe that having different rules for different portions of the URI will lead to confusion.  Since there is already a requirement that identifiers and resources are case sensitive, I recommend standardizing on case sensitive for the entire URI.  Other than the TECH name which historically in Asterisk has been CAPS, all portions should be lower case where possible to meet current web API norms.  In detail:</div>
<div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)">PREFIX: case sensitive, always lower case</div><div class="gmail_default" style="color:rgb(102,0,0)"><br>
</div><div class="gmail_default" style="color:rgb(102,0,0)">PATH: case sensitive, always lower case</div><div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)">
TECH: case sensitive, case determined by actual technology name, convention is all UPPERCASE</div><div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)">RESOURCE: case sensitive, must match actual configured value.</div>
<div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)"><div class="gmail_default">ID: case sensitive, must match actual identifier</div><div><br></div></div><div class="gmail_default" style="color:rgb(102,0,0)">
OPERATION: case sensitive, always lower case</div><div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)">This recommendation is compatible with the vast majority of existing documentation, and will require very little code change to implement.</div>
<div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)">tl;dr: make TECH the only uppercase URI portion by convention, everything else is lower case except IDs and resource names, and EVERYTHING is case sensitive.</div>
<div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)"><br></div><div class="gmail_default" style="color:rgb(102,0,0)">What say you?</div><br></div>-- <br><div dir="ltr">
<img alt="Digium logo" src="https://my.digium.com/images/graphics/digium_RGB_signature.gif" width="288" height="50" style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><div>Scott Griepentrog<br>
Digium, Inc · Software Developer<br>445 Jan Davis Drive NW · Huntsville, AL 35806 · US<br>direct/fax: +1 256 428 6239 · mobile: +1 317 507 4029<br>Check us out at: <a href="http://digium.com" target="_blank">http://digium.com</a> · <a href="http://asterisk.org" target="_blank">http://asterisk.org</a><br>
</div></div>
</div>