{"id":45665,"date":"2018-01-16T16:24:23","date_gmt":"2018-01-16T21:24:23","guid":{"rendered":"http:\/\/www.eagleeyenetworks.com\/?p=45665"},"modified":"2023-08-30T19:35:42","modified_gmt":"2023-08-31T00:35:42","slug":"annotation-api","status":"publish","type":"post","link":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/","title":{"rendered":"Annotation API"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Overview<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"font-weight: 400;\">In this project, we provide a referential Python script demonstrating the use of the Eagle Eye Networks (EEN) API to add GPS annotation data to a camera device\u2019s timeline. &nbsp;&nbsp;The script onlines the common steps to properly creating and updating new annotation objects. &nbsp;Our goal is to prepare developers with the know-how to create and interact with any custom annotation data they may need for their particular application.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Before You Begin<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"font-weight: 400;\">You will need to collect a few items before we begin.<\/span><\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><span style=\"font-weight: 400;\">EEN user account <\/span><i><span style=\"font-weight: 400;\">without<\/span><\/i><span style=\"font-weight: 400;\"> two-factor authentication enabled since the demo code doesn\u2019t support this feature. \u00a0<\/span><\/li><li><span style=\"font-weight: 400;\">ESN information for the camera to which you\u2019d like to add annotations. <\/span><\/li><li><span style=\"font-weight: 400;\">EEN developer account and API key. \u00a0See <a href=\"https:\/\/developer.eagleeyenetworks.com\/docs\/getting-started\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/developer.eagleeyenetworks.com\/docs\/getting-started<\/a> for details.<\/span><\/li><li>Install Docker. See link <a href=\"https:\/\/docs.docker.com\/engine\/installation\/\">https:\/\/docs.docker.com\/engine\/installation\/<\/a> for details.<\/li><li><span style=\"font-weight: 400;\">Install Git. \u00a0See <\/span><a href=\"https:\/\/git-scm.com\/book\/en\/v2\/Getting-Started-Installing-Git\"><span style=\"font-weight: 400;\">https:\/\/git-scm.com\/book\/en\/v2\/Getting-Started-Installing-Git<\/span><\/a><span style=\"font-weight: 400;\"> for details.<\/span><\/li><li><span style=\"font-weight: 400;\">Optionally, if you plan to add your own annotation types, you will need to provide a unique namespace identifier to the API. \u00a0Please email support to request a unique namespace for your data. Demo uses namespace 300 for GPS data.<\/span><\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Running the Demo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"font-weight: 400;\">To make installing and running the demo easier, we created a Docker image containing all of the code and dependencies needed to make it work.&nbsp; In this section, we walk you through the steps to download the code, build a Docker image, run a Docker container and execute the demo script.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Download the code from Github<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Open a shell and run the following command to download the code to your local machine:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span style=\"font-weight: 400;\">Build the Docker Image<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span style=\"font-weight: 400;\">Navigate into the <\/span><i><span style=\"font-weight: 400;\">annotation-api-demo<\/span><\/i><span style=\"font-weight: 400;\"> folder.&nbsp;<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Run \u201cdocker build\u201d to create the image.&nbsp; We recommend tagging the image to make it easier to reference later.&nbsp; You can do this with the -t option.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Docker image is now ready for use in a container.&nbsp; You can verify this by running the \u201cdocker images\u201d command.&nbsp; You should see <em>gps-demo-image<\/em> listed in the results.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Create and Run the Container<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use the \u201cdocker run\u201d command to create a Docker container from the image.&nbsp; Verify that the container is running properly with the \u201cdocker ps\u201d command.&nbsp; If all is well, you will see the \u201cgps-demo\u201d container listed in the output.&nbsp;&nbsp; We use the &#8211;name option to give the container an easy name to remember.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Run the Python Demo Script<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use \u201cdocker exec\u201d to open a bash shell in the container then verify the contents of the current folder (\/code) by running the \u201cls\u201d command.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You should see four files listed.<\/p>\n\n\n\n<div class=\"table-1\">\n<table width=\"100%\">\n<tbody>\n<tr>\n<td width=\"132\"><strong>Filename<\/strong><\/td>\n<td width=\"492\"><strong>Description<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"132\">eenclient.py<\/td>\n<td width=\"492\">Simple Python API client.&nbsp; Supports authentication, authorization and annotation endpoints.<\/td>\n<\/tr>\n<tr>\n<td width=\"132\">gpsparse.py<\/td>\n<td width=\"492\">Python module with helper functions for parsing data from the GPS.txt file located in this project.<\/td>\n<\/tr>\n<tr>\n<td width=\"132\">gps.py<\/td>\n<td width=\"492\">The main demo script showing how to add and update annotations using the EEN API.<\/td>\n<\/tr>\n<tr>\n<td width=\"132\">gps.txt<\/td>\n<td width=\"492\">Text file containing GPS waypoints.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The primary script is named \u201cgps.py\u201d.&nbsp; It contains the high level logic to create and update GPS annotation data using the EEN API.&nbsp; You can run this script with the \u201c-h\u201d option to get a detailed description of the input arguments it accepts.&nbsp; All positional arguments are required including your developer API key, username, password and camera ESN.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Try running the script using values from your account following the example below.&nbsp; (Note: The start time is taken from the GPS.txt file if you don\u2019t include one with the &#8211;start option.&nbsp; The call will fail if start time falls outside of retention for the ESN.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When using the \u201cheartbeat\u201d approach to updating an annotation, the first GPS coordinate is stored in the \u201cstart\u201d attribute.&nbsp; The remaining coordinates are added to the \u201c_hb\u201d attribute representing changes to the annotation over time.&nbsp; You can clearly see this behavior in the logs above.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now that you have seen how to run the demo, let\u2019s walk through the code itself.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Source Code Walkthrough<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We start off by authenticating and authorizing the user then fetching the device details to ensure everything is setup properly.&nbsp; To interface with the EEN API, we use an instance of the EENClient class which provides methods to wrap all the logic required to build a proper API request.&nbsp; The source code for this class is in the <em>eenclient.py<\/em> file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Next, we initialize some variables and create an instance of TimeStepTacker to help us compute time intervals between GPS coordinate readings in the GPS.txt file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To track timestamps for the annotation, we use the current_datetime_object object.&nbsp; If you pass a starting timestamp on the command line then we set current_datetime_object to that value and the annotation will start at that time.&nbsp; Otherwise, the starting timestamp will default to the timestamp for the first reading in the GPS.txt file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The core of the script loops through the coordinates in the GPS.txt file.&nbsp; For each new coordinate, we calculate the time elapsed since the previous reading, update the current_datetime_object and convert the date object into a string format consumable by the API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We then read the next three lines in the file to parse out the GPS longitude, latitude, and velocity readings saving the results in the data dictionary.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now we are ready to send coordinates to the API.&nbsp; We use the uuid variable to track the unique identifier of the annotation we are creating.&nbsp; The first time through the loop, this value will be None, so we create the annotation using the client.createAnnotation method.&nbsp;&nbsp; On subsequent passes through the loop, we use the client.updateAnnotation method to update the annotation with the new coordinate values.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For the purposes of this demonstration, we set an arbitrary limit of five coordinates to the annotation.&nbsp; After adding the fifth, we close the annotation using the client.updateAnnotation method with the update type set to \u2018end\u2019.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lastly, we verify the annotation by reading it back with the client.getAnnotations method and printing the results to the console.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Our goal with this demonstration was to give you a real-world example of using the EEN API to add custom annotation data.&nbsp; We hope the sample code gives you the information you need to add custom annotations to your particular application.&nbsp;&nbsp; In summary, the main steps are to setup an API key, authenticate and authorize with your account credentials, obtain a namespace identifier for your data and make the create and update calls using the annotation API endpoints.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For additional information on the API, please checkout our documentation here:<br><a href=\"https:\/\/developer.eagleeyenetworks.com\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/developer.eagleeyenetworks.com<\/a>.\u00a0 You\u2019ll find a detailed section on Annotations as well as many other aspects of the Eagle Eye platform.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview In this project, we provide a referential Python script demonstrating the use of the Eagle Eye Networks (EEN) API to add GPS annotation data to a camera device\u2019s timeline. &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.een.com\/nl\/blog\/annotation-api\/\"> <span class=\"screen-reader-text\">Annotation API<\/span> Lees verder &raquo;<\/a><\/p>\n","protected":false},"author":3155,"featured_media":45650,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"46193,7056,95973,62918,8127,101211","_relevanssi_noindex_reason":"","footnotes":""},"categories":[232],"tags":[1279,1275,1273,1272],"class_list":["post-45665","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology","tag-apis","tag-cloud-computing","tag-cloud-video-surveillance","tag-video-management-software"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO Pro 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"In this project, we provide a referential Python script demonstrating the use of the Eagle Eye Networks (EEN) API to add GPS annotation data to a camera device\u2019s\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Eagle Eye Networks\"\/>\n\t<meta name=\"google-site-verification\" content=\"GFRrG9lKvt77Mytlz6R_D049rc3MCVspAFVmEF1S66o\" \/>\n\t<meta name=\"msvalidate.01\" content=\"F69283E552492E6919DF982B73AD22E6\" \/>\n\t<meta name=\"keywords\" content=\"apis,cloud computing,cloud video surveillance,video management software,technology\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.een.com\/nl\/blog\/annotation-api\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO Pro (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Eagle Eye Networks\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Annotation API\" \/>\n\t\t<meta property=\"og:description\" content=\"In this project, we provide a referential Python script demonstrating the use of the Eagle Eye Networks (EEN) API to add GPS annotation data to a camera device\u2019s\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.een.com\/nl\/blog\/annotation-api\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.een.com\/wp-content\/uploads\/2017\/08\/Eagle-Eye-Devices-4.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.een.com\/wp-content\/uploads\/2017\/08\/Eagle-Eye-Devices-4.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1926\" \/>\n\t\t<meta property=\"og:image:height\" content=\"880\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2018-01-16T21:24:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2023-08-31T00:35:42+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/eagleeyecloudvideo\/\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@EagleEyeCloud\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Annotation API\" \/>\n\t\t<meta name=\"twitter:description\" content=\"In this project, we provide a referential Python script demonstrating the use of the Eagle Eye Networks (EEN) API to add GPS annotation data to a camera device\u2019s\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@EagleEyeCloud\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.een.com\/wp-content\/uploads\/2017\/08\/Eagle-Eye-Devices-4.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/annotation-api\\\/#aioseo-article-64fe12319f122\",\"name\":\"Annotation API\",\"headline\":\"Annotation API\",\"description\":\"Overview In this project, we provide a referential Python script demonstrating the use of the Eagle Eye Networks (EEN) API to add GPS annotation data to a camera device\\u2019s timeline. &nbsp;&nbsp;The script onlines the common steps to properly creating and updating new annotation objects. &nbsp;Our goal is to prepare developers with the know-how to create\",\"author\":{\"@type\":\"Person\",\"name\":\"Eagle Eye Networks\",\"url\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/author\\\/eagle-eye-networks\\\/\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.een.com\\\/wp-content\\\/uploads\\\/2017\\\/08\\\/Annotations-API-Demo-FI.jpg\",\"width\":500,\"height\":334,\"caption\":\"Annotations API Demo-FI\"},\"datePublished\":\"2018-01-16T16:24:23-06:00\",\"dateModified\":\"2023-08-30T19:35:42-05:00\",\"inLanguage\":\"nl-NL\",\"articleSection\":\"Technology, APIs, Cloud Computing, Cloud Video Surveillance, Video Management Software, Optional\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/annotation-api\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.een.com\\\/nl\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/annotation-api\\\/#listItem\",\"name\":\"Annotation API\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/annotation-api\\\/#listItem\",\"position\":3,\"name\":\"Annotation API\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/#organization\",\"name\":\"Eagle Eye Networks\",\"description\":\"Smart Video Surveillance\",\"url\":\"https:\\\/\\\/www.een.com\\\/nl\\\/\",\"telephone\":\"+15124730500\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.een.com\\\/wp-content\\\/uploads\\\/2020\\\/07\\\/EENLogo.png\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/annotation-api\\\/#organizationLogo\",\"width\":225,\"height\":75},\"image\":{\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/annotation-api\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/twitter.com\\\/EagleEyeCloud\",\"https:\\\/\\\/www.instagram.com\\\/eagleeyenetworks\\\/\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/eagleeyenetworks\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/eagleeyenetworks\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/author\\\/eagle-eye-networks\\\/#author\",\"url\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/author\\\/eagle-eye-networks\\\/\",\"name\":\"Eagle Eye Networks\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/annotation-api\\\/#webpage\",\"url\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/annotation-api\\\/\",\"name\":\"Annotation API\",\"description\":\"In this project, we provide a referential Python script demonstrating the use of the Eagle Eye Networks (EEN) API to add GPS annotation data to a camera device\\u2019s\",\"inLanguage\":\"nl-NL\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/annotation-api\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/author\\\/eagle-eye-networks\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/author\\\/eagle-eye-networks\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.een.com\\\/wp-content\\\/uploads\\\/2017\\\/08\\\/Annotations-API-Demo-FI.jpg\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/annotation-api\\\/#mainImage\",\"width\":500,\"height\":334,\"caption\":\"Annotations API Demo-FI\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/blog\\\/annotation-api\\\/#mainImage\"},\"datePublished\":\"2018-01-16T16:24:23-06:00\",\"dateModified\":\"2023-08-30T19:35:42-05:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/#website\",\"url\":\"https:\\\/\\\/www.een.com\\\/nl\\\/\",\"name\":\"Eagle Eye Networks\",\"description\":\"Smart Video Surveillance\",\"inLanguage\":\"nl-NL\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.een.com\\\/nl\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO Pro -->\r\n\t\t<title>Annotation API<\/title>\n\n","aioseo_head_json":{"title":"Annotation API","description":"In this project, we provide a referential Python script demonstrating the use of the Eagle Eye Networks (EEN) API to add GPS annotation data to a camera device\u2019s","canonical_url":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"apis,cloud computing,cloud video surveillance,video management software,technology","webmasterTools":{"google-site-verification":"GFRrG9lKvt77Mytlz6R_D049rc3MCVspAFVmEF1S66o","msvalidate.01":"F69283E552492E6919DF982B73AD22E6","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/#aioseo-article-64fe12319f122","name":"Annotation API","headline":"Annotation API","description":"Overview In this project, we provide a referential Python script demonstrating the use of the Eagle Eye Networks (EEN) API to add GPS annotation data to a camera device\u2019s timeline. &nbsp;&nbsp;The script onlines the common steps to properly creating and updating new annotation objects. &nbsp;Our goal is to prepare developers with the know-how to create","author":{"@type":"Person","name":"Eagle Eye Networks","url":"https:\/\/www.een.com\/nl\/blog\/author\/eagle-eye-networks\/"},"publisher":{"@id":"https:\/\/www.een.com\/nl\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.een.com\/wp-content\/uploads\/2017\/08\/Annotations-API-Demo-FI.jpg","width":500,"height":334,"caption":"Annotations API Demo-FI"},"datePublished":"2018-01-16T16:24:23-06:00","dateModified":"2023-08-30T19:35:42-05:00","inLanguage":"nl-NL","articleSection":"Technology, APIs, Cloud Computing, Cloud Video Surveillance, Video Management Software, Optional"},{"@type":"BreadcrumbList","@id":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.een.com\/nl\/#listItem","position":1,"name":"Home","item":"https:\/\/www.een.com\/nl\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.een.com\/nl\/blog\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/www.een.com\/nl\/blog\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/www.een.com\/nl\/blog\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/#listItem","name":"Annotation API"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.een.com\/nl\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/#listItem","position":3,"name":"Annotation API","previousItem":{"@type":"ListItem","@id":"https:\/\/www.een.com\/nl\/blog\/category\/technology\/#listItem","name":"Technology"}}]},{"@type":"Organization","@id":"https:\/\/www.een.com\/nl\/#organization","name":"Eagle Eye Networks","description":"Smart Video Surveillance","url":"https:\/\/www.een.com\/nl\/","telephone":"+15124730500","logo":{"@type":"ImageObject","url":"https:\/\/www.een.com\/wp-content\/uploads\/2020\/07\/EENLogo.png","@id":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/#organizationLogo","width":225,"height":75},"image":{"@id":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/#organizationLogo"},"sameAs":["https:\/\/twitter.com\/EagleEyeCloud","https:\/\/www.instagram.com\/eagleeyenetworks\/","https:\/\/www.youtube.com\/user\/eagleeyenetworks","https:\/\/www.linkedin.com\/company\/eagleeyenetworks\/"]},{"@type":"Person","@id":"https:\/\/www.een.com\/nl\/blog\/author\/eagle-eye-networks\/#author","url":"https:\/\/www.een.com\/nl\/blog\/author\/eagle-eye-networks\/","name":"Eagle Eye Networks"},{"@type":"WebPage","@id":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/#webpage","url":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/","name":"Annotation API","description":"In this project, we provide a referential Python script demonstrating the use of the Eagle Eye Networks (EEN) API to add GPS annotation data to a camera device\u2019s","inLanguage":"nl-NL","isPartOf":{"@id":"https:\/\/www.een.com\/nl\/#website"},"breadcrumb":{"@id":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/#breadcrumblist"},"author":{"@id":"https:\/\/www.een.com\/nl\/blog\/author\/eagle-eye-networks\/#author"},"creator":{"@id":"https:\/\/www.een.com\/nl\/blog\/author\/eagle-eye-networks\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.een.com\/wp-content\/uploads\/2017\/08\/Annotations-API-Demo-FI.jpg","@id":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/#mainImage","width":500,"height":334,"caption":"Annotations API Demo-FI"},"primaryImageOfPage":{"@id":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/#mainImage"},"datePublished":"2018-01-16T16:24:23-06:00","dateModified":"2023-08-30T19:35:42-05:00"},{"@type":"WebSite","@id":"https:\/\/www.een.com\/nl\/#website","url":"https:\/\/www.een.com\/nl\/","name":"Eagle Eye Networks","description":"Smart Video Surveillance","inLanguage":"nl-NL","publisher":{"@id":"https:\/\/www.een.com\/nl\/#organization"}}]},"og:locale":"nl_NL","og:site_name":"Eagle Eye Networks","og:type":"article","og:title":"Annotation API","og:description":"In this project, we provide a referential Python script demonstrating the use of the Eagle Eye Networks (EEN) API to add GPS annotation data to a camera device\u2019s","og:url":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/","og:image":"https:\/\/www.een.com\/wp-content\/uploads\/2017\/08\/Eagle-Eye-Devices-4.png","og:image:secure_url":"https:\/\/www.een.com\/wp-content\/uploads\/2017\/08\/Eagle-Eye-Devices-4.png","og:image:width":1926,"og:image:height":880,"article:published_time":"2018-01-16T21:24:23+00:00","article:modified_time":"2023-08-31T00:35:42+00:00","article:publisher":"https:\/\/www.facebook.com\/eagleeyecloudvideo\/","twitter:card":"summary","twitter:site":"@EagleEyeCloud","twitter:title":"Annotation API","twitter:description":"In this project, we provide a referential Python script demonstrating the use of the Eagle Eye Networks (EEN) API to add GPS annotation data to a camera device\u2019s","twitter:creator":"@EagleEyeCloud","twitter:image":"https:\/\/www.een.com\/wp-content\/uploads\/2017\/08\/Eagle-Eye-Devices-4.png"},"aioseo_meta_data":{"post_id":"45665","title":null,"description":"In this project, we provide a referential Python script demonstrating the use of the Eagle Eye Networks (EEN) API to add GPS annotation data to a camera device\u2019s","keywords":[],"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"article","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"summary","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":{"id":"#aioseo-article-64fe12319f122","slug":"article","graphName":"Article","label":"Article","properties":{"type":"BlogPosting","name":"#post_title","headline":"#post_title","description":"#post_excerpt","image":"","keywords":"","author":{"name":"#author_name","url":"#author_url"},"dates":{"include":true,"datePublished":"","dateModified":""}}},"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":"{\"article\":{\"articleType\":\"BlogPosting\"},\"course\":{\"name\":\"\",\"description\":\"\",\"provider\":\"\"},\"faq\":{\"pages\":[]},\"product\":{\"reviews\":[]},\"recipe\":{\"ingredients\":[],\"instructions\":[],\"keywords\":[]},\"software\":{\"reviews\":[],\"operatingSystems\":[]},\"webPage\":{\"webPageType\":\"WebPage\"}}","pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"limit_modified_date":false,"open_ai":null,"ai":null,"created":"2020-12-21 19:04:07","updated":"2023-09-10 19:00:01"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/www.een.com\/nl\/\" title=\"Home\">Home<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/www.een.com\/nl\/blog\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\tAnnotation API\n<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.een.com\/nl\/"},{"label":"Technology","link":"https:\/\/www.een.com\/nl\/blog\/category\/technology\/"},{"label":"Annotation API","link":"https:\/\/www.een.com\/nl\/blog\/annotation-api\/"}],"_links":{"self":[{"href":"https:\/\/www.een.com\/nl\/wp-json\/wp\/v2\/posts\/45665","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.een.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.een.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.een.com\/nl\/wp-json\/wp\/v2\/users\/3155"}],"replies":[{"embeddable":true,"href":"https:\/\/www.een.com\/nl\/wp-json\/wp\/v2\/comments?post=45665"}],"version-history":[{"count":0,"href":"https:\/\/www.een.com\/nl\/wp-json\/wp\/v2\/posts\/45665\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.een.com\/nl\/wp-json\/wp\/v2\/media\/45650"}],"wp:attachment":[{"href":"https:\/\/www.een.com\/nl\/wp-json\/wp\/v2\/media?parent=45665"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.een.com\/nl\/wp-json\/wp\/v2\/categories?post=45665"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.een.com\/nl\/wp-json\/wp\/v2\/tags?post=45665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}