Rigs API

VPN based endpoints for managing rigs and rig actions

Rig endpoints will fail when not accessed via zerotier vpn

PUT /api/v1/rigs/:id

Rigs must be on the Geocam zerotier vpn to avoid other forms of authentication. In practice this means the host must either be vpn.manager.geocam.xyz or an ip address starting with 10.144. The client IP address must also start with 10.144.

Parameters

Name Description
rig_serial serial number of the riq
gpsd_latitude latitude of rig
gpsd_longitude longitude of the rig
local_ip local ip address of the rig
software_version current software version for the rig
git_branch which software branch

Request

Headers

Host: manager.geocam.xyz
Content-Type: application/x-www-form-urlencoded
Cookie: 

Route

PUT /api/v1/rigs/9999

Body

rig_serial=9999&gpsd_latitude=-45.87416&gpsd_longitude=170.50361&local_ip=127.0.0.1&software_version=0.0.1&git_branch=master

Response

Headers

Content-Type: text/html; charset=UTF-8
Content-Length: 5392
Vary: Origin

Status

403 Forbidden

Body

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Action Controller: Exception caught</title>
  <style>
    body {
      background-color: #FAFAFA;
      color: #333;
      color-scheme: light dark;
      supported-color-schemes: light dark;
      margin: 0px;
    }

    body, p, ol, ul, td {
      font-family: helvetica, verdana, arial, sans-serif;
      font-size:   13px;
      line-height: 18px;
    }

    pre {
      font-size: 11px;
      white-space: pre-wrap;
    }

    pre.box {
      border: 1px solid #EEE;
      padding: 10px;
      margin: 0px;
      width: 958px;
    }

    header {
      color: #F0F0F0;
      background: #C00;
      padding: 0.5em 1.5em;
    }

    h1 {
      overflow-wrap: break-word;
      margin: 0.2em 0;
      line-height: 1.1em;
      font-size: 2em;
    }

    h2 {
      color: #C00;
      line-height: 25px;
    }

    code.traces {
      font-size: 11px;
    }

    .response-heading, .request-heading {
      margin-top: 30px;
    }

    .exception-message {
      padding: 8px 0;
    }

    .exception-message .message {
      margin-bottom: 8px;
      line-height: 25px;
      font-size: 1.5em;
      font-weight: bold;
      color: #C00;
    }

    .details {
      border: 1px solid #D0D0D0;
      border-radius: 4px;
      margin: 1em 0px;
      display: block;
      max-width: 978px;
    }

    .summary {
      padding: 8px 15px;
      border-bottom: 1px solid #D0D0D0;
      display: block;
    }

    a.summary {
      color: #F0F0F0;
      text-decoration: none;
      background: #C52F24;
      border-bottom: none;
    }

    .details pre {
      margin: 5px;
      border: none;
    }

    #container {
      box-sizing: border-box;
      width: 100%;
      padding: 0 1.5em;
    }

    .source * {
      margin: 0px;
      padding: 0px;
    }

    .source {
      border: 1px solid #D9D9D9;
      background: #ECECEC;
      max-width: 978px;
    }

    .source pre {
      padding: 10px 0px;
      border: none;
    }

    .source .data {
      font-size: 80%;
      overflow: auto;
      background-color: #FFF;
    }

    .info {
      padding: 0.5em;
    }

    .source .data .line_numbers {
      background-color: #ECECEC;
      color: #555;
      padding: 1em .5em;
      border-right: 1px solid #DDD;
      text-align: right;
    }

    .line {
      padding-left: 10px;
      white-space: pre;
    }

    .line:hover {
      background-color: #F6F6F6;
    }

    .line.active {
      background-color: #FCC;
    }

    .button_to {
      display: inline-block;
      margin-top: 0.75em;
      margin-bottom: 0.75em;
    }

    .hidden {
      display: none;
    }

    .correction {
      list-style-type: none;
    }

    input[type="submit"] {
      color: white;
      background-color: #C00;
      border: none;
      border-radius: 12px;
      box-shadow: 0 3px #F99;
      font-size: 13px;
      font-weight: bold;
      margin: 0;
      padding: 10px 18px;
      cursor: pointer;
      -webkit-appearance: none;
    }
    input[type="submit"]:focus,
    input[type="submit"]:hover {
      opacity: 0.8;
    }
    input[type="submit"]:active {
      box-shadow: 0 2px #F99;
      transform: translateY(1px)
    }

    a { color: #980905; }
    a:visited { color: #666; }
    a.trace-frames {
      color: #666;
      overflow-wrap: break-word;
    }
    a:hover, a.trace-frames.selected { color: #C00; }
    a.summary:hover { color: #FFF; }

    @media (prefers-color-scheme: dark) {
      body {
        background-color: #222;
        color: #ECECEC;
      }

      .details, .summary {
        border-color: #666;
      }

      .source {
        border-color: #555;
        background-color: #333;
      }

      .source .data {
        background: #444;
      }

      .source .data .line_numbers {
        background: #333;
        border-color: #222;
      }

      .line:hover {
        background: #666;
      }

      .line.active {
        background-color: #900;
      }

      input[type="submit"] {
        box-shadow: 0 3px #800;
      }
      input[type="submit"]:active {
        box-shadow: 0 2px #800;
      }

      a { color: #C00; }
      a.trace-frames { color: #999; }
      a:hover, a.trace-frames.selected { color: #E9382B; }
    }

    
  </style>

  <script>
    var toggle = function(id) {
      document.getElementById(id).classList.toggle('hidden');
      return false;
    }
    var show = function(id) {
      document.getElementById(id).style.display = 'block';
    }
    var hide = function(id) {
      document.getElementById(id).style.display = 'none';
    }
    var toggleSessionDump = function() {
      return toggle('session_dump');
    }
    var toggleEnvDump = function() {
      return toggle('env_dump');
    }
  </script>
</head>
<body>

  <header>
  <h1>Blocked host: manager.geocam.xyz</h1>
</header>
<main role="main" id="container">
  <h2>To allow requests to manager.geocam.xyz make sure it is a valid hostname (containing only numbers, letters, dashes and dots), then add the following to your environment configuration:</h2>
  <pre>config.hosts &lt;&lt; "manager.geocam.xyz"</pre>
  <p>For more details view: <a href="https://guides.rubyonrails.org/configuring.html#actiondispatch-hostauthorization">the Host Authorization guide</a></p>
</main>


</body>
</html>