groov View Public API icon

groov View Public API

Revised: 2019-11-21

COMMUNITYAPI KEY0 INSTALLS
API Docs
OpenAPI Specificationv3.0
{
  "swagger": "2.0",
  "schemes": [
    "https"
  ],
  "basePath": "/api",
  "info": {
    "contact": {
      "email": "developer@opto22.com",
      "name": "Opto 22",
      "url": "http://developer.opto22.com",
      "x-twitter": "opto22"
    },
    "description": "#### Revised: 2019-11-21\n\n### Overview\ngroov View Public API revision 1.\n",
    "title": "groov View Public API",
    "version": "R4.2a",
    "x-apisguru-categories": [
      "iot"
    ],
    "x-logo": {
      "url": "https://api.apis.guru/v2/cache/logo/https_twitter.com_opto22_profile_image.jpeg"
    },
    "x-origin": [
      {
        "format": "swagger",
        "url": "http://developer.opto22.com/static/generated/groov-rest-api/swagger.yaml",
        "version": "2.0"
      }
    ],
    "x-providerName": "opto22.com",
    "x-serviceName": "groov"
  },
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "securityDefinitions": {
    "api_key": {
      "in": "query",
      "name": "api_key",
      "type": "apiKey"
    }
  },
  "tags": [
    {
      "description": "Provides information about groov View itself.",
      "name": "info"
    },
    {
      "description": "Provides information about the user you are authenticated as.",
      "name": "whoami"
    },
    {
      "description": "Provides access to the Data Store devices and tags.",
      "name": "data-store"
    },
    {
      "description": "Access to groov View's event log.",
      "name": "logging"
    }
  ],
  "paths": {
    "/info": {
      "get": {
        "description": "Get information about groov View. No authorization required.",
        "operationId": "groovInfo",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/groovInfo"
            }
          }
        },
        "tags": [
          "info"
        ]
      }
    },
    "/v1/data-store/devices": {
      "get": {
        "description": "List devices available in the data store. Authorized for admins and editors.",
        "operationId": "listDevices",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "items": {
                "$ref": "#/definitions/dataStoreDevice"
              },
              "type": "array"
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "tags": [
          "data-store"
        ]
      }
    },
    "/v1/data-store/devices/{id}/tags": {
      "get": {
        "description": "List tags of the given device. Authorized for admins and editors.",
        "operationId": "listDeviceTags",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "items": {
                "$ref": "#/definitions/tagDefinition"
              },
              "type": "array"
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "tags": [
          "data-store"
        ]
      },
      "parameters": [
        {
          "description": "ID of the device to use.",
          "format": "int64",
          "in": "path",
          "name": "id",
          "required": true,
          "type": "number"
        }
      ]
    },
    "/v1/data-store/read": {
      "parameters": [
        {
          "description": "Tag references for the tags to read.",
          "in": "body",
          "name": "tags",
          "required": true,
          "schema": {
            "items": {
              "$ref": "#/definitions/tagReference"
            },
            "type": "array"
          }
        }
      ],
      "post": {
        "description": "Read selected tags from the data store. Authorized for admins and editors.",
        "operationId": "batchReadTags",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "items": {
                "$ref": "#/definitions/tagValue"
              },
              "type": "array"
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "tags": [
          "data-store"
        ]
      }
    },
    "/v1/data-store/read/{id}": {
      "get": {
        "description": "Read the current value of a single tag. Authorized for admins and editors.",
        "operationId": "readTag",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tagValue"
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "tags": [
          "data-store"
        ]
      },
      "parameters": [
        {
          "description": "ID of the tag to read.",
          "format": "int64",
          "in": "path",
          "name": "id",
          "required": true,
          "type": "number"
        },
        {
          "default": 0,
          "description": "Table index to start reading at.",
          "format": "int32",
          "in": "query",
          "name": "index",
          "required": false,
          "type": "number"
        },
        {
          "default": 1,
          "description": "Number of elements to read from a table.",
          "format": "int32",
          "in": "query",
          "name": "count",
          "required": false,
          "type": "number"
        }
      ]
    },
    "/v1/data-store/tags": {
      "get": {
        "description": "List all data store tags defined in the project. Authorized for admins and editors.",
        "operationId": "listAllTags",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "items": {
                "$ref": "#/definitions/tagDefinition"
              },
              "type": "array"
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "tags": [
          "data-store"
        ]
      }
    },
    "/v1/data-store/write/{id}": {
      "parameters": [
        {
          "description": "ID of the tag to write.",
          "format": "int64",
          "in": "path",
          "name": "id",
          "required": true,
          "type": "number"
        },
        {
          "description": "Value to write to the tag. Must be a string, number, or boolean.",
          "in": "query",
          "name": "value",
          "required": true,
          "type": "string"
        },
        {
          "default": 0,
          "description": "For array tags, the index to write the value to.",
          "format": "int32",
          "in": "query",
          "name": "index",
          "required": false,
          "type": "number"
        }
      ],
      "post": {
        "description": "Writes a new value to the given tag. Authorized for admins and editors.",
        "operationId": "writeTag",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/tagValue"
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "tags": [
          "data-store"
        ]
      }
    },
    "/v1/logging/groovLogs.json": {
      "get": {
        "description": "Downloads the complete groov View log in JSON format. Added in groov View R4.2a.",
        "operationId": "downloadLogJson",
        "parameters": [
          {
            "default": "INFO",
            "description": "How verbose the log should be.",
            "enum": [
              "TRACE",
              "DEBUG",
              "INFO",
              "WARN",
              "ERROR",
              "FATAL"
            ],
            "in": "query",
            "name": "minimum-log-level",
            "required": false,
            "type": "string"
          },
          {
            "default": 0,
            "description": "The earliest time to include in the log. Value is milliseconds since January 1, 1970 UTC.",
            "format": "int64",
            "in": "query",
            "name": "last-timestamp",
            "required": false,
            "type": "number"
          },
          {
            "description": "Optional string to search for in the log.",
            "in": "query",
            "name": "filter",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Downloaded log file.",
            "schema": {
              "format": "binary",
              "type": "string"
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "tags": [
          "logging"
        ]
      }
    },
    "/v1/logging/groovLogs.txt": {
      "get": {
        "description": "Downloads the complete groov View log. Added in groov View R4.2a.",
        "operationId": "downloadLogText",
        "parameters": [
          {
            "default": "INFO",
            "description": "How verbose the log should be.",
            "enum": [
              "TRACE",
              "DEBUG",
              "INFO",
              "WARN",
              "ERROR",
              "FATAL"
            ],
            "in": "query",
            "name": "minimum-log-level",
            "required": false,
            "type": "string"
          },
          {
            "default": 0,
            "description": "The earliest time to include in the log. Value is milliseconds since January 1, 1970 UTC.",
            "format": "int64",
            "in": "query",
            "name": "last-timestamp",
            "required": false,
            "type": "number"
          },
          {
            "description": "Optional string to search for in the log.",
            "in": "query",
            "name": "filter",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Downloaded log file.",
            "schema": {
              "format": "binary",
              "type": "string"
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "tags": [
          "logging"
        ]
      }
    },
    "/whoami": {
      "get": {
        "description": "Get information about the user you are authenticated as. Authorized for admins, editors, operators, and kiosk.",
        "operationId": "whoAmI",
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/User"
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "tags": [
          "whoami"
        ]
      }
    }
  },
  "definitions": {
    "User": {
      "properties": {
        "apiKey": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "groups": {
          "items": {
            "format": "int64",
            "type": "number"
          },
          "type": "array"
        },
        "id": {
          "format": "int64",
          "type": "number"
        },
        "needsPasswordChange": {
          "description": "True if your password is expired",
          "type": "boolean"
        },
        "role": {
          "type": "string"
        },
        "username": {
          "type": "string"
        }
      },
      "required": [
        "role",
        "apiKey",
        "groups",
        "id",
        "needsPasswordChange",
        "email",
        "username"
      ],
      "type": "object"
    },
    "booleanArrayValue": {
      "allOf": [
        {
          "$ref": "#/definitions/tagValue"
        },
        {
          "properties": {
            "value": {
              "items": {
                "type": "boolean"
              },
              "type": "array"
            }
          },
          "required": [
            "value"
          ],
          "type": "object"
        }
      ]
    },
    "booleanValue": {
      "allOf": [
        {
          "$ref": "#/definitions/tagValue"
        },
        {
          "properties": {
            "value": {
              "type": "boolean"
            }
          },
          "required": [
            "value"
          ],
          "type": "object"
        }
      ]
    },
    "dataStoreDevice": {
      "allOf": [
        {
          "$ref": "#/definitions/device"
        },
        {
          "properties": {
            "id": {
              "format": "int64",
              "type": "number"
            },
            "name": {
              "type": "string"
            }
          },
          "required": [
            "id",
            "name"
          ],
          "type": "object"
        }
      ],
      "description": "A Data Store device within a groov View project"
    },
    "device": {
      "description": "A generic device within a groov View project",
      "discriminator": "deviceType",
      "properties": {
        "deviceType": {
          "type": "string"
        }
      },
      "required": [
        "deviceType"
      ],
      "type": "object"
    },
    "errorValue": {
      "allOf": [
        {
          "$ref": "#/definitions/tagValue"
        },
        {
          "properties": {
            "errorCode": {
              "type": "string"
            },
            "errorMessage": {
              "type": "string"
            }
          },
          "required": [
            "errorCode",
            "errorMessage"
          ],
          "type": "object"
        }
      ]
    },
    "floatArrayValue": {
      "allOf": [
        {
          "$ref": "#/definitions/tagValue"
        },
        {
          "properties": {
            "value": {
              "items": {
                "format": "float",
                "type": "number"
              },
              "type": "array"
            }
          },
          "required": [
            "value"
          ],
          "type": "object"
        }
      ]
    },
    "floatValue": {
      "allOf": [
        {
          "$ref": "#/definitions/tagValue"
        },
        {
          "properties": {
            "value": {
              "format": "float",
              "type": "number"
            }
          },
          "required": [
            "value"
          ],
          "type": "object"
        }
      ]
    },
    "groovInfo": {
      "properties": {
        "currentApiVersion": {
          "description": "The current API version number",
          "format": "int32",
          "type": "number"
        },
        "groovAdminVersion": {
          "description": "The groov Admin version number if running on a groov hardware box",
          "type": "string"
        },
        "groovBoxDescription": {
          "description": "The groov box type (GROOV-AT1, GROOV-AR1, or GRV-EPIC-PR1)",
          "type": "string"
        },
        "groovNodeRedVersion": {
          "description": "The node red version number if running on a GROOV-AR1 which has node red installed",
          "type": "string"
        },
        "isGroovBox": {
          "description": "True if running on a groov hardware box",
          "type": "boolean"
        },
        "isGroovBoxSetup": {
          "description": "True if running on a groov hardware box which has been setup or true if running on groov Server for Windows",
          "type": "boolean"
        },
        "isLicenseValid": {
          "description": "True if a license is installed, valid, and not expired",
          "type": "boolean"
        },
        "licenseType": {
          "description": "The license type (NONE, MAINTENANCE_EXPIRED, or VALID)",
          "type": "string"
        },
        "minimumApiVersion": {
          "description": "The minimum supported API version number",
          "format": "int32",
          "type": "number"
        },
        "shouldShowTrialDialog": {
          "description": "True if the trial dialog pops up when logging into groov View",
          "type": "boolean"
        },
        "timezoneName": {
          "description": "The server's timezone",
          "type": "string"
        },
        "timezoneOffset": {
          "description": "The server's timezone offset from UTC in minutes",
          "format": "int32",
          "type": "number"
        },
        "trialPeriodExpiration": {
          "description": "Milliseconds until trial period is expired",
          "format": "int64",
          "type": "number"
        },
        "warVersion": {
          "description": "The version number of the war",
          "type": "string"
        }
      },
      "required": [
        "isGroovBox",
        "isGroovBoxSetup",
        "isCoreInUse",
        "isOpcUaInUse",
        "isLicenseValid",
        "licenseType",
        "trialPeriodExpiration",
        "shouldShowTrialDialog",
        "groovBoxDescription",
        "groovAdminVersion",
        "groovNodeRedVersion",
        "timezoneOffset",
        "timezoneName",
        "warVersion",
        "minimumApiVersion",
        "currentApiVersion"
      ],
      "type": "object"
    },
    "integerArrayValue": {
      "allOf": [
        {
          "$ref": "#/definitions/tagValue"
        },
        {
          "properties": {
            "value": {
              "items": {
                "format": "int64",
                "type": "number"
              },
              "type": "array"
            }
          },
          "required": [
            "value"
          ],
          "type": "object"
        }
      ]
    },
    "integerValue": {
      "allOf": [
        {
          "$ref": "#/definitions/tagValue"
        },
        {
          "properties": {
            "value": {
              "format": "int64",
              "type": "number"
            }
          },
          "required": [
            "value"
          ],
          "type": "object"
        }
      ]
    },
    "stringArrayValue": {
      "allOf": [
        {
          "$ref": "#/definitions/tagValue"
        },
        {
          "properties": {
            "value": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "required": [
            "value"
          ],
          "type": "object"
        }
      ]
    },
    "stringValue": {
      "allOf": [
        {
          "$ref": "#/definitions/tagValue"
        },
        {
          "properties": {
            "value": {
              "type": "string"
            }
          },
          "required": [
            "value"
          ],
          "type": "object"
        }
      ]
    },
    "tagDefinition": {
      "properties": {
        "dataType": {
          "enum": [
            "boolean",
            "integer",
            "float",
            "string",
            "booleanArray",
            "integerArray",
            "floatArray",
            "stringArray"
          ],
          "type": "string"
        },
        "deviceId": {
          "format": "int64",
          "type": "number"
        },
        "id": {
          "format": "int64",
          "type": "number"
        },
        "length": {
          "format": "int32",
          "type": "number"
        },
        "name": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "deviceId",
        "name",
        "dataType"
      ],
      "type": "object"
    },
    "tagReference": {
      "properties": {
        "count": {
          "description": "For array tags, the number of elements to read, starting at index.",
          "format": "int32",
          "type": "number"
        },
        "id": {
          "description": "Unique id for the tag.",
          "format": "int64",
          "type": "number"
        },
        "index": {
          "description": "For array tags, the index to start reading at.",
          "format": "int32",
          "type": "number"
        }
      },
      "required": [
        "id"
      ],
      "type": "object"
    },
    "tagValue": {
      "discriminator": "valueType",
      "properties": {
        "valueType": {
          "type": "string"
        }
      },
      "required": [
        "valueType"
      ],
      "type": "object"
    }
  }
}