<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="domainsrdap_v1.html">Domains RDAP API</a> . <a href="domainsrdap_v1.entity.html">entity</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(entityId, x__xgafv=None)</a></code></p>
<p class="firstline">The RDAP API recognizes this command from the RDAP specification but does not support it. The response is a formatted 501 error.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(entityId, x__xgafv=None)</code>
  <pre>The RDAP API recognizes this command from the RDAP specification but does not support it. The response is a formatted 501 error.

Args:
  entityId: string, A parameter (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response to a general RDAP query.
  &quot;description&quot;: [ # Error description.
    &quot;A String&quot;,
  ],
  &quot;errorCode&quot;: 42, # Error HTTP code. Example: &quot;501&quot;.
  &quot;jsonResponse&quot;: { # Message that represents an arbitrary HTTP body. It should only be used for payload formats that can&#x27;t be represented as JSON, such as raw binary or an HTML page. This message can be used both in streaming and non-streaming API methods in the request as well as the response. It can be used as a top-level request field, which is convenient if one wants to extract parameters from either the URL or HTTP template into the request fields and also want access to the raw HTTP body. Example: message GetResourceRequest { // A unique request id. string request_id = 1; // The raw HTTP body is bound to this field. google.api.HttpBody http_body = 2; } service ResourceService { rpc GetResource(GetResourceRequest) returns (google.api.HttpBody); rpc UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty); } Example with streaming methods: service CaldavService { rpc GetCalendar(stream google.api.HttpBody) returns (stream google.api.HttpBody); rpc UpdateCalendar(stream google.api.HttpBody) returns (stream google.api.HttpBody); } Use of this type only changes how the request and response bodies are handled, all other features will continue to work unchanged. # HTTP response with content type set to &quot;application/json+rdap&quot;.
    &quot;contentType&quot;: &quot;A String&quot;, # The HTTP Content-Type header value specifying the content type of the body.
    &quot;data&quot;: &quot;A String&quot;, # The HTTP request/response body as raw binary.
    &quot;extensions&quot;: [ # Application specific response metadata. Must be set in the first response for streaming APIs.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
  },
  &quot;lang&quot;: &quot;A String&quot;, # Error language code. Error response info fields are defined in [section 6 of RFC 7483](https://tools.ietf.org/html/rfc7483#section-6).
  &quot;notices&quot;: [ # Notices applying to this response.
    { # Notices object defined in [section 4.3 of RFC 7483](https://tools.ietf.org/html/rfc7483#section-4.3).
      &quot;description&quot;: [ # Description of the notice.
        &quot;A String&quot;,
      ],
      &quot;links&quot;: [ # Link to a document containing more information.
        { # Links object defined in [section 4.2 of RFC 7483](https://tools.ietf.org/html/rfc7483#section-4.2).
          &quot;href&quot;: &quot;A String&quot;, # Target URL of a link. Example: &quot;http://example.com/previous&quot;.
          &quot;hreflang&quot;: &quot;A String&quot;, # Language code of a link. Example: &quot;en&quot;.
          &quot;media&quot;: &quot;A String&quot;, # Media type of the link destination. Example: &quot;screen&quot;.
          &quot;rel&quot;: &quot;A String&quot;, # Relation type of a link. Example: &quot;previous&quot;.
          &quot;title&quot;: &quot;A String&quot;, # Title of this link. Example: &quot;title&quot;.
          &quot;type&quot;: &quot;A String&quot;, # Content type of the link. Example: &quot;application/json&quot;.
          &quot;value&quot;: &quot;A String&quot;, # URL giving context for the link. Example: &quot;http://example.com/current&quot;.
        },
      ],
      &quot;title&quot;: &quot;A String&quot;, # Title of a notice. Example: &quot;Terms of Service&quot;.
      &quot;type&quot;: &quot;A String&quot;, # Type values defined in [section 10.2.1 of RFC 7483](https://tools.ietf.org/html/rfc7483#section-10.2.1) specific to a whole response: &quot;result set truncated due to authorization&quot;, &quot;result set truncated due to excessive load&quot;, &quot;result set truncated due to unexplainable reasons&quot;.
    },
  ],
  &quot;rdapConformance&quot;: [ # RDAP conformance level.
    &quot;A String&quot;,
  ],
  &quot;title&quot;: &quot;A String&quot;, # Error title.
}</pre>
</div>

</body></html>