<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Obtain last edit date from REST API using Python in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586523#M46042</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;As I mentioned in a previous post, using the &lt;A href="https://github.com/Esri/ArcREST" rel="nofollow noopener noreferrer" target="_blank"&gt;ArcREST&lt;/A&gt; package is the way to go.&amp;nbsp; I also found some code in this &lt;A href="http://blogs.esri.com/esri/arcgis/2014/10/07/using-python-to-push-updates-to-a-hosted-feature-service-from-an-external-source/" rel="nofollow noopener noreferrer" target="_blank"&gt;blog&lt;/A&gt; that explains using the REST API to update a feature layer.&amp;nbsp; With that, I came up with the following code.&amp;nbsp; There are three basic steps, get a token, use the token to get the JSON for the feature, and extract the portion of data you are interested in.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import urllib
import urllib2
import json
import sys
import time
import collections

# Credentials and feature service information
username = "&amp;lt;username&amp;gt;"
password = "&amp;lt;password&amp;gt;" 
# Feature server url, change to your server url
fsURL = "&lt;A href="http://services1.arcgis.com/&amp;lt;aaa123&amp;gt;/arcgis/rest/services/&amp;lt;feature&amp;gt;/FeatureServer/0" rel="nofollow noopener noreferrer" target="_blank"&gt;http://services1.arcgis.com/&amp;lt;aaa123&amp;gt;/arcgis/rest/services/&amp;lt;feature&amp;gt;/FeatureServer/0&lt;/A&gt;"

# 1: obtain a token
referer = "&lt;A href="http://www.arcgis.com/" rel="nofollow noopener noreferrer" target="_blank"&gt;http://www.arcgis.com/&lt;/A&gt;"
query_dict = { 'username': username, 'password': password, 'referer': referer }
query_string = urllib.urlencode(query_dict)
url = "&lt;A href="https://www.arcgis.com/sharing/rest/generateToken" rel="nofollow noopener noreferrer" target="_blank"&gt;https://www.arcgis.com/sharing/rest/generateToken&lt;/A&gt;"
token = json.loads(urllib.urlopen(url + "?f=json", query_string).read())

if "token" not in token:
&amp;nbsp;&amp;nbsp;&amp;nbsp; print(token['error'])
&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.exit(1)

# 2: request the json data for the feature
query_dict = { "f": "json", "token": token['token'] }
jsonResponse = urllib.urlopen(fsURL, urllib.urlencode(query_dict))

# lastEditDate is in the editingInfo section of the json response
# to access other sections, change "editingInfo" to the section name ("types" for example)
# using OrderedDict keeps the file ordered as sent by server, but is not necessary
jsonOutput = json.loads(jsonResponse.read(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; object_pairs_hook=collections.OrderedDict)[u'editingInfo']

#3: extract the data required
editTime = int(jsonOutput['lastEditDate'])/1000
print "Last Edited: " + time.strftime('%c', time.localtime(editTime))&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 12 Dec 2021 01:13:21 GMT</pubDate>
    <dc:creator>RandyBurton</dc:creator>
    <dc:date>2021-12-12T01:13:21Z</dc:date>
    <item>
      <title>Obtain last edit date from REST API using Python</title>
      <link>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586519#M46038</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In the JSON file for a feature there is a property called "lastEditDate."&amp;nbsp; Has anyone developed a python script to access this information they would be willing to share?&amp;nbsp; Thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Jun 2015 23:12:43 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586519#M46038</guid>
      <dc:creator>RandyBurton</dc:creator>
      <dc:date>2015-06-26T23:12:43Z</dc:date>
    </item>
    <item>
      <title>Re: Obtain last edit date from REST API using Python</title>
      <link>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586520#M46039</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Can you attach a sample json file, so I can have a look at it?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 28 Jun 2015 00:36:38 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586520#M46039</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2015-06-28T00:36:38Z</dc:date>
    </item>
    <item>
      <title>Re: Obtain last edit date from REST API using Python</title>
      <link>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586521#M46040</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Xander,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have included a sample json file below.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;While researching my question I came across the &lt;A href="https://github.com/Esri/ArcREST" rel="nofollow noopener noreferrer" target="_blank"&gt;ArcREST&lt;/A&gt; package on github. In it's samples folder I found a script (query_agol_layer.py) that connects to a Feature Layer's json data.&amp;nbsp; After some study of the python code, I was able to use the script to extract the lastEditDate information and convert it to a standard time format.&amp;nbsp; The code also accesses other sections of the json data - the types section is one that I'm also interested in.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here's the json file.&amp;nbsp; LastEditDate is on line 11.&amp;nbsp; To save space, I've deleted most of the drawingInfo section at line 44 and some other parts.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;{
&amp;nbsp; "currentVersion" : 10.3, 
&amp;nbsp; "id" : 0, 
&amp;nbsp; "name" : "&amp;lt;Name&amp;gt;", 
&amp;nbsp; "type" : "Feature Layer", 
&amp;nbsp; "displayField" : "&amp;lt;Display&amp;gt;", 
&amp;nbsp; "description" : "", 
&amp;nbsp; "copyrightText" : "", 
&amp;nbsp; "defaultVisibility" : true, 
&amp;nbsp; "editingInfo" : {
&amp;nbsp;&amp;nbsp;&amp;nbsp; "lastEditDate" : 1433103130499
&amp;nbsp; }, 
&amp;nbsp; "relationships" : [], 
&amp;nbsp; "isDataVersioned" : false, 
&amp;nbsp; "supportsCalculate" : true, 
&amp;nbsp; "supportsAttachmentsByUploadId" : true, 
&amp;nbsp; "supportsRollbackOnFailureParameter" : true, 
&amp;nbsp; "supportsStatistics" : true, 
&amp;nbsp; "supportsAdvancedQueries" : true, 
&amp;nbsp; "supportsValidateSql" : true, 
&amp;nbsp; "supportsCoordinatesQuantization" : true, 
&amp;nbsp; "advancedQueryCapabilities" : {
&amp;nbsp;&amp;nbsp;&amp;nbsp; "supportsPagination" : true, 
&amp;nbsp;&amp;nbsp;&amp;nbsp; "supportsQueryWithDistance" : true, 
&amp;nbsp;&amp;nbsp;&amp;nbsp; "supportsReturningQueryExtent" : true, 
&amp;nbsp;&amp;nbsp;&amp;nbsp; "supportsStatistics" : true, 
&amp;nbsp;&amp;nbsp;&amp;nbsp; "supportsOrderBy" : true, 
&amp;nbsp;&amp;nbsp;&amp;nbsp; "supportsDistinct" : true
&amp;nbsp; }, 
&amp;nbsp; "geometryType" : "esriGeometryPoint", 
&amp;nbsp; "minScale" : 0, 
&amp;nbsp; "maxScale" : 0, 
&amp;nbsp; "extent" : {
&amp;nbsp;&amp;nbsp;&amp;nbsp; "xmin" : -20037507.842788249, 
&amp;nbsp;&amp;nbsp;&amp;nbsp; "ymin" : -30240971.458386172, 
&amp;nbsp;&amp;nbsp;&amp;nbsp; "xmax" : 20037507.842788249, 
&amp;nbsp;&amp;nbsp;&amp;nbsp; "ymax" : 30240971.458386205, 
&amp;nbsp;&amp;nbsp;&amp;nbsp; "spatialReference" : {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "wkid" : 102100, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "latestWkid" : 3857
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }, 
&amp;nbsp; "drawingInfo":{
.......
&amp;nbsp; }, 
&amp;nbsp; "allowGeometryUpdates" : true, 
&amp;nbsp; "hasAttachments" : false, 
&amp;nbsp; "htmlPopupType" : "esriServerHTMLPopupTypeAsHTMLText", 
&amp;nbsp; "hasM" : false, 
&amp;nbsp; "hasZ" : false, 
&amp;nbsp; "objectIdField" : "OBJECTID", 
&amp;nbsp; "globalIdField" : "GlobalID", 
&amp;nbsp; "typeIdField" : "Color", 
&amp;nbsp; "fields" : [
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "name" : "OBJECTID", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "type" : "esriFieldTypeOID", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "alias" : "OBJECTID", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "sqlType" : "sqlTypeOther", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "nullable" : false, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "editable" : false, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "domain" : null, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "defaultValue" : null
&amp;nbsp;&amp;nbsp;&amp;nbsp; }, 
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "name" : "&amp;lt;FieldName&amp;gt;", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "type" : "esriFieldTypeInteger", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "alias" : "&amp;lt;FieldAlias&amp;gt;", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "sqlType" : "sqlTypeOther", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "nullable" : false, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "editable" : true, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "domain" : 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "type" : "codedValue", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "name" : "Colors", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "codedValues" : [
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "name" : "Red", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "code" : 1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "name" : "Yellow", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "code" : 2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "defaultValue" : null
&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&amp;nbsp; ], 
&amp;nbsp; "types" : [
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "id" : 1, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "name" : "Red", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "domains" : 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Color" : {"type" : "inherited"}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "templates" : [
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "name" : "Red", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "description" : "", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "drawingTool" : "esriFeatureEditToolPoint", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "prototype" : {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "attributes" : {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Color" : 1, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Note" : null
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]
&amp;nbsp;&amp;nbsp;&amp;nbsp; }, 
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "id" : 2, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "name" : "Yellow", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "domains" : 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Color" : {"type" : "inherited"}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "templates" : [
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "name" : "Yellow", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "description" : "", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "drawingTool" : "esriFeatureEditToolPoint", 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "prototype" : {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "attributes" : {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Color" : 2, 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Note" : null
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp; ], 
&amp;nbsp; "templates" : [], 
&amp;nbsp; "supportedQueryFormats" : "JSON", 
&amp;nbsp; "hasStaticData" : false, 
&amp;nbsp; "maxRecordCount" : 1000, 
&amp;nbsp; "capabilities" : "Create,Delete,Query,Update,Editing,Sync"
}&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 01:13:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586521#M46040</guid>
      <dc:creator>RandyBurton</dc:creator>
      <dc:date>2021-12-12T01:13:18Z</dc:date>
    </item>
    <item>
      <title>Re: Obtain last edit date from REST API using Python</title>
      <link>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586522#M46041</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Good to hear that you solved it, and thanks for posting back how you did it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kind regards, Xander&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 28 Jun 2015 04:37:02 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586522#M46041</guid>
      <dc:creator>XanderBakker</dc:creator>
      <dc:date>2015-06-28T04:37:02Z</dc:date>
    </item>
    <item>
      <title>Re: Obtain last edit date from REST API using Python</title>
      <link>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586523#M46042</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;As I mentioned in a previous post, using the &lt;A href="https://github.com/Esri/ArcREST" rel="nofollow noopener noreferrer" target="_blank"&gt;ArcREST&lt;/A&gt; package is the way to go.&amp;nbsp; I also found some code in this &lt;A href="http://blogs.esri.com/esri/arcgis/2014/10/07/using-python-to-push-updates-to-a-hosted-feature-service-from-an-external-source/" rel="nofollow noopener noreferrer" target="_blank"&gt;blog&lt;/A&gt; that explains using the REST API to update a feature layer.&amp;nbsp; With that, I came up with the following code.&amp;nbsp; There are three basic steps, get a token, use the token to get the JSON for the feature, and extract the portion of data you are interested in.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import urllib
import urllib2
import json
import sys
import time
import collections

# Credentials and feature service information
username = "&amp;lt;username&amp;gt;"
password = "&amp;lt;password&amp;gt;" 
# Feature server url, change to your server url
fsURL = "&lt;A href="http://services1.arcgis.com/&amp;lt;aaa123&amp;gt;/arcgis/rest/services/&amp;lt;feature&amp;gt;/FeatureServer/0" rel="nofollow noopener noreferrer" target="_blank"&gt;http://services1.arcgis.com/&amp;lt;aaa123&amp;gt;/arcgis/rest/services/&amp;lt;feature&amp;gt;/FeatureServer/0&lt;/A&gt;"

# 1: obtain a token
referer = "&lt;A href="http://www.arcgis.com/" rel="nofollow noopener noreferrer" target="_blank"&gt;http://www.arcgis.com/&lt;/A&gt;"
query_dict = { 'username': username, 'password': password, 'referer': referer }
query_string = urllib.urlencode(query_dict)
url = "&lt;A href="https://www.arcgis.com/sharing/rest/generateToken" rel="nofollow noopener noreferrer" target="_blank"&gt;https://www.arcgis.com/sharing/rest/generateToken&lt;/A&gt;"
token = json.loads(urllib.urlopen(url + "?f=json", query_string).read())

if "token" not in token:
&amp;nbsp;&amp;nbsp;&amp;nbsp; print(token['error'])
&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.exit(1)

# 2: request the json data for the feature
query_dict = { "f": "json", "token": token['token'] }
jsonResponse = urllib.urlopen(fsURL, urllib.urlencode(query_dict))

# lastEditDate is in the editingInfo section of the json response
# to access other sections, change "editingInfo" to the section name ("types" for example)
# using OrderedDict keeps the file ordered as sent by server, but is not necessary
jsonOutput = json.loads(jsonResponse.read(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; object_pairs_hook=collections.OrderedDict)[u'editingInfo']

#3: extract the data required
editTime = int(jsonOutput['lastEditDate'])/1000
print "Last Edited: " + time.strftime('%c', time.localtime(editTime))&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 01:13:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586523#M46042</guid>
      <dc:creator>RandyBurton</dc:creator>
      <dc:date>2021-12-12T01:13:21Z</dc:date>
    </item>
    <item>
      <title>Re: Obtain last edit date from REST API using Python</title>
      <link>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586524#M46043</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Randy, I am trying to use your code provided and run into the following errors from line 19 in your provided code:&lt;/P&gt;&lt;UL&gt;&lt;LI class=""&gt;&lt;SPAN&gt;token&amp;nbsp;=&amp;nbsp;json.loads(urllib.urlopen(url&amp;nbsp;+&amp;nbsp;&lt;SPAN class=""&gt;"?f=json"&lt;/SPAN&gt;,&amp;nbsp;query_string).read())&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI class=""&gt;&lt;SPAN&gt;The errors I receive are as follows and was hoping you could shed some light &lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;Runtime error &lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;Traceback (most recent call last):&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp; File "&amp;lt;string&amp;gt;", line 1, in &amp;lt;module&amp;gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp; File "C:\Python27\ArcGIS10.3\Lib\urllib.py", line 89, in urlopen&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return opener.open(url, data)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp; File "C:\Python27\ArcGIS10.3\Lib\urllib.py", line 210, in open&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return getattr(self, name)(url, data)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp; File "C:\Python27\ArcGIS10.3\Lib\urllib.py", line 437, in open_https&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.endheaders(data)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp; File "C:\Python27\ArcGIS10.3\Lib\httplib.py", line 991, in endheaders&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self._send_output(message_body)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp; File "C:\Python27\ArcGIS10.3\Lib\httplib.py", line 844, in _send_output&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.send(msg)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp; File "C:\Python27\ArcGIS10.3\Lib\httplib.py", line 806, in send&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.connect()&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp; File "C:\Python27\ArcGIS10.3\Lib\httplib.py", line 1198, in connect&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp; File "C:\Python27\ArcGIS10.3\Lib\ssl.py", line 392, in wrap_socket&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ciphers=ciphers)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp; File "C:\Python27\ArcGIS10.3\Lib\ssl.py", line 148, in __init__&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.do_handshake()&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp; File "C:\Python27\ArcGIS10.3\Lib\ssl.py", line 310, in do_handshake&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self._sslobj.do_handshake()&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;IOError: [Errno socket error] [Errno 1] _ssl.c:510: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am truly interested in utilizing your solution and appreciate whatever assistance you can provde. Thanks!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Jan 2017 20:45:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586524#M46043</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2017-01-12T20:45:39Z</dc:date>
    </item>
    <item>
      <title>Re: Obtain last edit date from REST API using Python</title>
      <link>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586525#M46044</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Since the error is happening at line 19, it suggests that there is a problem connecting to your server to obtain a token.&amp;nbsp; There are a couple of help pages &lt;A href="http://resources.arcgis.com/en/help/arcgis-rest-api/#/Generate_Token/02r3000000ts000000/" rel="nofollow noopener noreferrer" target="_blank"&gt;Generate Token&lt;/A&gt;&amp;nbsp;and &lt;A href="http://resources.arcgis.com/en/help/arcgis-rest-api/#/Generate_Token/02r3000000m5000000/" rel="nofollow noopener noreferrer" target="_blank"&gt;Generate Token (2)&lt;/A&gt;&amp;nbsp;that may be of assistance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My code shows a simple connection to ArcGIS Online.&amp;nbsp; You will need to change the fsURL in line 12 to point to your feature service.&amp;nbsp; If you are using your own ArcGIS server the token and referrer urls in lines 15 and 18 will need to be changed; possibly you will need to use the client parameter.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The following code snippet illustrates how you&amp;nbsp;could connect to your own server instead of a feature hosted on AGO.&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;tokenURL &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.esri.com/external-link.jspa?url=http%3A%2F%2F" target="_blank"&gt;http://&lt;/A&gt;&lt;SPAN&gt;'&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; server &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'/arcgis/admin/generateToken'&lt;/SPAN&gt;
params &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'username'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; username&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'password'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; password&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'client'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'requestip'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'f'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'pjson'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="string token"&gt;'expiration'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1440&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
req &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; urllib2&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Request&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;tokenURL&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; urllib&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;urlencode&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;params&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
response &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; urllib2&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;urlopen&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;req&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
data &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; json&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;load&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;response&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
token &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; data&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'token'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 01:13:23 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/obtain-last-edit-date-from-rest-api-using-python/m-p/586525#M46044</guid>
      <dc:creator>RandyBurton</dc:creator>
      <dc:date>2021-12-12T01:13:23Z</dc:date>
    </item>
  </channel>
</rss>

