<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
The REST info page:<br>
<h5>4.3.3. MIME Types and File Extensions</h5>
<p>The following table lists the data types and their associated MIME
types and file extensions:</p>
<table class="confluenceTable">
  <tbody>
    <tr>
      <th class="confluenceTh">Data type</th>
      <th class="confluenceTh">Current Version MIME Type</th>
      <th class="confluenceTh">Version 1 MIME Type</th>
      <th class="confluenceTh">File Extension</th>
    </tr>
    <tr>
      <td class="confluenceTd">XML</td>
      <td class="confluenceTd">application/xml</td>
      <td class="confluenceTd">application/arin.whoisrws-v1+xml</td>
      <td class="confluenceTd">xml</td>
    </tr>
    <tr>
      <td class="confluenceTd">JSON</td>
      <td class="confluenceTd">application/json</td>
      <td class="confluenceTd">application/arin.whoisrws-v1+json</td>
      <td class="confluenceTd">json</td>
    </tr>
    <tr>
      <td class="confluenceTd">plain text</td>
      <td class="confluenceTd">text/plain</td>
      <td class="confluenceTd"> </td>
      <td class="confluenceTd">txt</td>
    </tr>
    <tr>
      <td class="confluenceTd">HTML</td>
      <td class="confluenceTd">text/html</td>
      <td class="confluenceTd"> </td>
      <td class="confluenceTd">html</td>
    </tr>
  </tbody>
</table>
<br>
Problems:<br>
<br>
<b>(1) formatting issue.<br>
</b><br>
<a class="moz-txt-link-freetext"
 href="http://whois.arin.net/rest/org/ATL-83/pocs.txt">http://whois.arin.net/rest/org/ATL-83/pocs.txt</a><br>
<br>
returns<br>
<br>
<pre><a class="moz-txt-link-freetext"
 href="http://whois.arin.net/rest/poc/NOC3056-ARINhttp://whois.arin.net/rest/poc/NOC3056-ARINhttp://whois.arin.net/rest/poc/JCL171-ARINhttp://whois.arin.net/rest/poc/NOC3056-ARIN">http://whois.arin.net/rest/poc/NOC3056-ARINhttp://whois.arin.net/rest/poc/NOC3056-ARINhttp://whois.arin.net/rest/poc/JCL171-ARINhttp://whois.arin.net/rest/poc/NOC3056-ARIN</a>

</pre>
As opposed to what one can "swipe" from the web page:<br>
<br>
<table>
  <tbody>
    <tr>
      <td>Abuse</td>
      <td>NOC3056-ARIN (<a
 href="http://whois.arin.net/rest/poc/NOC3056-ARIN.html">NOC3056-ARIN</a>)</td>
    </tr>
    <tr>
      <td>NOC</td>
      <td>NOC3056-ARIN (<a
 href="http://whois.arin.net/rest/poc/NOC3056-ARIN.html">NOC3056-ARIN</a>)</td>
    </tr>
    <tr>
      <td>Tech</td>
      <td>NOC3056-ARIN (<a
 href="http://whois.arin.net/rest/poc/NOC3056-ARIN.html">NOC3056-ARIN</a>)</td>
    </tr>
    <tr>
      <td>Admin</td>
      <td>JCL171-ARIN (<a
 href="http://whois.arin.net/rest/poc/JCL171-ARIN.html">JCL171-ARIN</a>)</td>
    </tr>
  </tbody>
</table>
<br>
So, the TXT output in this case has no line breaks and omits the
function descriptions. Other similar TXT output more closely resembles
what the web page shows.<br>
<br>
<b>(2) missing information.</b><br>
<br>
Via the web, the URL <a class="moz-txt-link-freetext"
 href="http://whois.arin.net/rest/ip/209.144.225.62/orgs">http://whois.arin.net/rest/ip/209.144.225.62/orgs</a>
returns:<br>
<br>
<table>
  <tbody>
    <tr>
      <td>NetRange</td>
      <td>209.144.225.0 - 209.144.225.255</td>
    </tr>
    <tr>
      <td>CIDR</td>
      <td>209.144.225.0/24<br>
      </td>
    </tr>
    <tr>
      <td>Name</td>
      <td>SAVV-S218155-6</td>
    </tr>
    <tr>
      <td>Handle</td>
      <td>NET-209-144-225-0-1</td>
    </tr>
    <tr>
      <td>Parent</td>
      <td>SAVVIS4 (<a
 href="http://whois.arin.net/rest/net/NET-209-144-0-0-1.html">NET-209-144-0-0-1</a>)
      </td>
    </tr>
    <tr>
      <td>Net Type</td>
      <td>Reallocated</td>
    </tr>
    <tr>
      <td>Origin AS</td>
      <td><br>
      </td>
    </tr>
    <tr>
      <td>Organization</td>
      <td>AppServe Technologies, LLC (<a
 href="http://whois.arin.net/rest/org/ATL-83.html">ATL-83</a>)<b> </b></td>
    </tr>
    <tr>
      <td>Registration Date</td>
      <td>2007-09-20</td>
    </tr>
    <tr>
      <td>Last Updated</td>
      <td>2007-09-20</td>
    </tr>
    <tr>
      <td>Comments</td>
      <td><br>
      </td>
    </tr>
    <tr>
      <td>RESTful Link</td>
      <td><a href="http://whois.arin.net/rest/net/NET-209-144-225-0-1">http://whois.arin.net/rest/net/NET-209-144-225-0-1</a></td>
    </tr>
    <tr>
      <td>See Also</td>
      <td><a
 href="http://whois.arin.net/rest/net/NET-209-144-225-0-1/pocs">Related
POC records.</a></td>
    </tr>
    <tr>
      <td>See Also</td>
      <td><a href="http://whois.arin.net/rest/org/ATL-83/pocs">Related
organization's POC records.</a></td>
    </tr>
    <tr>
      <td>See Also</td>
      <td><a
 href="http://whois.arin.net/rest/net/NET-209-144-225-0-1/rdns">Related
delegations.</a></td>
    </tr>
  </tbody>
</table>
<br>
However, from the Unix command line<br>
<br>
curl -H "Accept: text/plain"
<a class="moz-txt-link-freetext"
 href="http://whois.arin.net/rest/ip/209.144.225.62.txt">http://whois.arin.net/rest/ip/209.144.225.62.txt</a><br>
<br>
returns this data:<br>
<br>
<tt>#<br>
# ARIN WHOIS data and services are subject to the Terms of Use<br>
# available at: <a class="moz-txt-link-freetext"
 href="https://www.arin.net/whois_tou.html">https://www.arin.net/whois_tou.html</a><br>
#<br>
<br>
NetRange:       209.144.225.0 - 209.144.225.255<br>
CIDR:           209.144.225.0/24<br>
OriginAS:       <br>
NetName:        SAVV-S218155-6<br>
NetHandle:      NET-209-144-225-0-1<br>
Parent:         NET-209-144-0-0-1<br>
NetType:        Reallocated<br>
RegDate:        2007-09-20<br>
Updated:        2007-09-20<br>
Ref:            <a class="moz-txt-link-freetext"
 href="http://whois.arin.net/rest/net/NET-209-144-225-0-1">http://whois.arin.net/rest/net/NET-209-144-225-0-1</a></tt><br>
<tt><br>
#<br>
# ARIN WHOIS data and services are subject to the Terms of Use<br>
# available at: <a class="moz-txt-link-freetext"
 href="https://www.arin.net/whois_tou.html">https://www.arin.net/whois_tou.html</a><br>
#</tt><br>
<br>
Notice that there is <u>no Organization Name</u>. Ouch! for my
purposes.<br>
<br>
<b>(3A) Incorrect formats returned;<br>
(4A)Dead-end maze to get Organization Name due to apparent database
mapping inconsistencies:<br>
</b><br>
I am trying to write a program which, given an IP address, returns<br>
* the associated NetRange, e.g. "209.144.225.0 - 209.144.225.255"<br>
* the Abuse POC associated with that netrange.<br>
<br>
Not getting the Organization Name in the command line call is making
this a <b>maze</b> to accomplish, a dead-end as we'll see:<br>
<br>
If I do this:<br>
<br>
<tt># curl -H "Accept: text/plain"
<a class="moz-txt-link-freetext"
 href="http://whois.arin.net/rest/ip/209.144.225.62.txt">http://whois.arin.net/rest/ip/209.144.225.62.txt</a><br>
<br>
#<br>
# ARIN WHOIS data and services are subject to the Terms of Use<br>
# available at: <a class="moz-txt-link-freetext"
 href="https://www.arin.net/whois_tou.html">https://www.arin.net/whois_tou.html</a><br>
#<br>
<br>
NetRange:       209.144.225.0 - 209.144.225.255<br>
CIDR:           209.144.225.0/24<br>
OriginAS:       <br>
NetName:        SAVV-S218155-6<br>
NetHandle:      NET-209-144-225-0-1<br>
Parent:         NET-209-144-0-0-1<br>
NetType:        Reallocated<br>
RegDate:        2007-09-20<br>
Updated:        2007-09-20<br>
Ref:            <a class="moz-txt-link-freetext"
 href="http://whois.arin.net/rest/net/NET-209-144-225-0-1">http://whois.arin.net/rest/net/NET-209-144-225-0-1</a></tt><br>
<br>
And then this:<br>
<br>
# curl -H "Accept: text/plain"
<a class="moz-txt-link-freetext"
 href="http://whois.arin.net/rest/net/NET-209-144-225-0-1/pocs.txt">http://whois.arin.net/rest/net/NET-209-144-225-0-1/pocs.txt</a><br>
<br>
<tt><a class="moz-txt-link-freetext"
 href="http://whois.arin.net/rest/poc/JJ772-ARIN">http://whois.arin.net/rest/poc/JJ772-ARIN</a></tt><br>
<br>
And then this:<br>
<br>
curl <b>-H "Accept: text/plain"</b>
<a class="moz-txt-link-freetext"
 href="http://whois.arin.net/rest/poc/JJ772-ARIN/orgs">http://whois.arin.net/rest/poc/JJ772-ARIN/orgs</a><b>.txt</b><br>
<br>
<u>This</u> is the output I get:<br>
<br>
<tt><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
<a class="moz-txt-link-rfc2396E"
 href="http://www.w3.org/TR/html4/strict.dtd">"http://www.w3.org/TR/html4/strict.dtd"</a>><br>
<html xmlns:rdns=<a class="moz-txt-link-rfc2396E"
 href="http://www.arin.net/whoisrws/rdns/v1">"http://www.arin.net/whoisrws/rdns/v1"</a>
xmlns:pft=<a class="moz-txt-link-rfc2396E"
 href="http://www.arin.net/whoisrws/pft/v1">"http://www.arin.net/whoisrws/pft/v1"</a>
xmlns:whois=<a class="moz-txt-link-rfc2396E"
 href="http://www.arin.net/whoisrws/core/v1">"http://www.arin.net/whoisrws/core/v1"</a>><br>
<head><br>
<META http-equiv="Content-Type" content="text/html;
charset=UTF-8"><br>
<title>Whois-RWS</title><br>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8"><br>
<meta content="Virginia" name="geo.placename"><br>
<meta content="USA" name="geo.country"><br>
<meta name="viewport" content="width=990"><br>
<meta name="Keywords" content=""><br>
<meta name="Description" content=""><br>
<style type="text/css"><br>
<big><b>... VERY MUCH HTML SUPPRESSED ...</b></big><br>
<div id="content"><br>
<h2 class="noauth">Whois-RWS </h2><br>
<div id="maincontent"><br>
<p style="margin:0;padding:0;"><br>
<table><br>
<tr><br>
<big><b><th>No Related Resources</th></b></big><br>
</tr><br>
<tr><br>
<big><b><td>No related resources were found for the
handle provided.</td></b></big><br>
</tr><br>
</table><br>
</tt><tt><big><b>... MORE HTML SUPPRESSED ...</b></big></tt><tt><br>
</tt><br>
As you can see: <u>I ASKED FOR TEXT and got HTML</u>;<br>
<br>
and despite NET-209-144-225-0-1 belonging to "AppServe Technologies,
LLC (<a href="http://whois.arin.net/rest/org/ATL-83.html">ATL-83</a>)"<b>
</b>and having POC <b>JJ772-ARIN</b>,<br>
asking for the <u>organization</u> associated with JJ772-ARIN says
"AIN'T NO SUCH THING." --> ?????<br>
<br>
So trying to get the organization from the command line, I am screwed.<br>
<br>
So I wonder if other formats can help ...<br>
<br>
<b>(3B) Incorrect formats returned</b><br>
<br>
Asking for ip/#.#.#.#.txt did not return the ORGANIZATION NAME, as I
pointed out above.<br>
<br>
However, asking for ip/#.#.#.#.json <b>does.</b><br>
<br>
However!<br>
<br>
<b>All of these calls</b><br>
<br>
curl <a class="moz-txt-link-freetext"
 href="http://whois.arin.net/rest/poc/JJ772-ARIN/orgs.json">http://whois.arin.net/rest/poc/JJ772-ARIN/orgs.json</a>
> org.json<br>
<br>
and<br>
<br>
curl -H "Accept: application/json"
<a class="moz-txt-link-freetext"
 href="http://whois.arin.net/rest/poc/JJ772-ARIN/orgs.json">http://whois.arin.net/rest/poc/JJ772-ARIN/orgs.json</a>
> org.json<br>
<br>
and<br>
<br>
curl -H "Accept: application/xml"
<a class="moz-txt-link-freetext"
 href="http://whois.arin.net/rest/poc/JJ772-ARIN/orgs.xml">http://whois.arin.net/rest/poc/JJ772-ARIN/orgs.xml</a>
> org.xml<br>
<br>
<u><b>Return HTML.</b><br>
</u><br>
Remember that "no information" was returned for JJ772-ARIN; maybe that
has something to do with this bug.<br>
<br>
<b>(4B) A</b><b>pparent database mapping inconsistencies:<br>
<br>
</b>There is this oddness with the database, that although<br>
<br>
NET=X ----> ORG=Y<br>
<br>
and<br>
<br>
NET=X ----> POC=Z<br>
<br>
we get<br>
<br>
POC=Z ----> ORG="NO RESULT", which is inconsistent.<br>
<br>
You would think that the information would be transitive and reflexive;
that<br>
<br>
NET=X <----> ORG=Y is bidirectional,<br>
<br>
NET=X <----> POC=Z is bidirectional,<br>
<br>
and therefore<br>
<br>
POC=Z ----> NET=X ----> ORG=Y<br>
<br>
and not ORG = "NO RESULT", as demonstrated above.<br>
<br>
<b>(5) In summary</b><b>:<br>
</b><br>
It would appear you have not debugged your "format matrix" properly;<br>
1. Different requested formats selectively omit various information.<br>
2. Requests for specific formats are in various cases <u>ignored</u>.<br>
    May or may not depend on whether a query returned a result.<br>
<br>
and<br>
3. There may well be more going on underneath than meets my eye, but it
seems<br>
    the database mapping paths are not fully developed properly, since
if<br>
    A relates to B and A relates to C; then B relates to C; but you say
it does not!<br>
<br>
<b>(6) Suggested changes in offerings and documentation</b><b><br>
</b><br>
1. The documentation is a little misleading. It says<br>
<blockquote>
  <h4>4.4. ARIN's RESTful Resources</h4>
  <p>In the examples from the previous sections, the resources being
queried had the URL <tt><span class="nobr"><a class="moz-txt-link-freetext" href="http://whois.arin.net/rest/poc/KOSTE-ARIN">http://whois.arin.net/rest/poc/KOSTE-ARIN</a></span></tt>.
Conceptually, this can be broken into a base URL and the resource
identifier:</p>
  <ul>
    <li>base URL = <tt><span class="nobr"><a class="moz-txt-link-freetext" href="http://whois.arin.net/rest">http://whois.arin.net/rest</a></span></tt></li>
    <li>resource = <tt>/poc/KOSTE-ARIN</tt></li>
  </ul>
  <p>The base URL is just where ARIN is hosting the service. The real
interesting parts are the bits that identify the resources:</p>
  <ul>
    <li><tt>/poc</tt> - this indicates the resource is a Point of
Contact.</li>
    <li><tt>/KOSTE-ARIN</tt> - this is the unique identifier for the
Point of Contact, or the POC Handle.</li>
  </ul>
  <p><u>ARIN's data model has six types of addressable resources.</u>
These are reflected in Whois-RWS in the following way:</p>
  <ol>
    <li><tt>/poc</tt> - point of contact.</li>
    <li><tt>/org</tt> - organization</li>
    <li><tt>/net</tt> - a network</li>
    <li><tt>/asn</tt> - autonomous system number(s)</li>
    <li><tt>/customer</tt> - a customer of an organization</li>
    <li> <tt>/rdns</tt> - delegation</li>
  </ol>
</blockquote>
<small>(underlining mine to call attention to a claim, bolding below
mine to call attention to the rebuttal.)</small><br>
<br>
But this is not a complete list, because below you go on to say<br>
<blockquote>
  <h5>4.4.3. IP Addresses and Networks</h5>
  <p>In the ARIN data model, an IP "network" is a set of associated IP
address blocks and the information related to these IP address blocks
and the set as a whole. A network can be composed of one IP address
block or of multiple IP address blocks. Networks are also hierarchical,
meaning that a network can have a parent and can have children. An IP
address or range of IP addresses can therefore fall within the IP
address block of multiple networks.</p>
  <p>To get the networks that a particular IP address may fall within, <b>one
can use the <tt>/ip/XX.XX.XX.XX</tt> resource</b>, where XX.XX.XX.XX
signifies the IP address.<br>
  </p>
  <p>(and)<br>
  </p>
Networks may be looked up as well by supplying the full CIDR notation
of a range. To use the full CIDR notation, <b>the resource looks like <tt>/cidr/XX.XX.XX.XX/YY</tt></b>
where XX.XX.XX.XX is the IP address prefix and YY is the CIDR length.</blockquote>
So you actually have EIGHT resources, not SIX. And since you DO have
the "ip" and "cidr" resources, why not expand this list:<br>
<blockquote>
  <h5>4.4.1. Resources Related To Resources</h5>
  <p>In the ARIN Whois data model, resources have relationships to
other resources. Getting references to these resources can be
accomplished by addressing the resource in question and applying a
resource type qualifier.</p>
...<br>
  <p>Here is the list of relationships (where "XXXX" signifies a
handle):</p>
  <ul>
    <li><tt>/poc/XXXX</tt>
      <ul>
        <li><tt>/orgs</tt> ==> <tt>/poc/XXXX/orgs</tt> - lists the
organizations associated with a given POC.</li>
        <li><tt>/asns</tt> ==> <tt>/poc/XXXX/asns</tt> - lists the
ASNs associated with a given POC.</li>
        <li><tt>/nets</tt> ==> <tt>/poc/XXXX/nets</tt> - lists the
networks associated with a given POC.</li>
      </ul>
    </li>
    <li><tt>/org/XXXX</tt>
      <ul>
        <li><tt>/pocs</tt> ==> <tt>/org/XXXX/pocs</tt> - lists the
POCs associate with a given organization.</li>
        <li><tt>/asns</tt> ==> <tt>/org/XXXX/asns</tt> - lists the
ASNs associated with a given organization.</li>
        <li><tt>/nets</tt> ==> <tt>/org/XXXX/nets</tt> - lists the
networks associated with a given organization.</li>
      </ul>
    </li>
    <li><tt>/asn/XXXX</tt>
      <ul>
        <li><tt>/pocs</tt> ==> <tt>/asn/XXXX/pocs</tt> - lists the
POCs associated with a given ASN.</li>
      </ul>
    </li>
    <li><tt>/net/XXXX</tt>
      <ul>
        <li><tt>/pocs</tt> ==> <tt>/net/XXXX/pocs</tt> - lists the
POCs associated with a given network.</li>
        <li><tt>/parent</tt> ==> <tt>/net/XXXX/parent</tt> - lists
the parent network of a given network.</li>
        <li><tt>/children</tt> ==> <tt>/net/XXXX/children</tt> -
lists the child networks of a given network.</li>
        <li><tt>/rdns</tt> ==> <tt>/net/XXXX/rdns</tt> – lists the
delegations of a given network.</li>
      </ul>
    </li>
    <li><tt>/rdns/DELEGATION_NAME</tt>
      <ul>
        <li><tt>/nets</tt> ==> <tt>/rdns/DELEGATION_NAME/nets</tt>
- lists networks related to a give delegation.</li>
      </ul>
    </li>
  </ul>
</blockquote>
I had wished to be able to do<br>
<br>
/ip/XXXX/orgs<br>
<br>
<u>directly</u>. Seems obvious; why not?<br>
<br>
I suggest making that (and similar extensions) possible; and I suggest <u>including</u>
the "ip" and "cidr" as <u>named resources that can be used</u> along
with the other six - that is largely a documentation fix.<br>
<br>
Thanks for your time and attention.<br>
Eric Dynamic (ED244-ARIN @ org/UCTELE-2)<br>
<br>
</body>
</html>