aa487ff67c04e2961d0ff4b5ba1d4568fa1d6f17
hiram
  Fri Mar 15 15:51:40 2019 -0700
now using source tree version tag and alpha install rule to cgi-bin-api and cleaned up html errors refs #18869

diff --git src/hg/hubApi/getData.c src/hg/hubApi/getData.c
index 5084b5a..41d3fd0 100644
--- src/hg/hubApi/getData.c
+++ src/hg/hubApi/getData.c
@@ -203,31 +203,31 @@
     chromList = bbiChromList(bbi);
     jsonWriteNumber(jw, "chromCount", (long long)slCount(chromList));
     }
 
 unsigned uStart = 0;
 unsigned uEnd = chromSize;
 if ( ! (isEmpty(start) || isEmpty(end)) )
     {
     uStart = sqlUnsigned(start);
     uEnd = sqlUnsigned(end);
     jsonWriteNumber(jw, "start", uStart);
     jsonWriteNumber(jw, "end", uEnd);
     }
 
 jsonWriteString(jw, "bigDataUrl", bigDataUrl);
-jsonWriteString(jw, "type", thisTrack->type);
+jsonWriteString(jw, "trackType", thisTrack->type);
 
 if (startsWith("bigBed", thisTrack->type))
     {
     struct asObject *as = bigBedAsOrDefault(bbi);
     struct sqlFieldType *fi, *fiList = sqlFieldTypesFromAs(as);
     jsonWriteListStart(jw, "columnNames");
     unsigned maxItems = 0;	/* TBD will use this later for paging */
 //    int columnCount = slCount(fiList);
     for (fi = fiList; fi; fi = fi->next)
 	{
 	jsonWriteObjectStart(jw, NULL);
 	jsonWriteString(jw, fi->name, fi->type);
 	jsonWriteObjectEnd(jw);
 	}
     jsonWriteListEnd(jw);
@@ -277,30 +277,31 @@
 if (NULL == thisTrack)
     apiErrAbort("can not find track=%s name for endpoint '/getData/track", table);
 
 struct sqlConnection *conn = hAllocConn(db);
 if (! sqlTableExists(conn, table))
     apiErrAbort("can not find specified 'track=%s' for endpoint: /getData/track?db=%s&track=%s", table, db, table);
 
 struct jsonWrite *jw = apiStartOutput();
 jsonWriteString(jw, "db", db);
 jsonWriteString(jw, "track", table);
 char *dataTime = sqlTableUpdate(conn, table);
 time_t dataTimeStamp = sqlDateToUnixTime(dataTime);
 replaceChar(dataTime, ' ', 'T');	/*	ISO 8601	*/
 jsonWriteString(jw, "dataTime", dataTime);
 jsonWriteNumber(jw, "dataTimeStamp", (long long)dataTimeStamp);
+jsonWriteString(jw, "trackType", thisTrack->type);
 
 char query[4096];
 unsigned chromSize = 0;
 struct bbiFile *bbi = NULL;
 struct bbiChromInfo *chromList = NULL;
 
 if (startsWith("big", thisTrack->type))
     {
     char *bigDataUrl = trackDbSetting(thisTrack, "bigDataUrl");
     if (bigDataUrl)
 	bbi = bigFileOpen(thisTrack->type, bigDataUrl);
     else
 	{
 	char quickReturn[2048];
         sqlSafef(query, sizeof(query), "select fileName from %s", table);
@@ -313,30 +314,31 @@
     if (NULL == bbi)
 	apiErrAbort("failed to find bigDataUrl=%s for track=%s in database=%s for endpoint '/getdata/track'", table, db);
     if (isNotEmpty(chrom))
 	{
 	jsonWriteString(jw, "chrom", chrom);
 	chromSize = bbiChromSize(bbi, chrom);
 	if (0 == chromSize)
 	    apiErrAbort("can not find specified chrom=%s in bigWig file URL %s", chrom, bigDataUrl);
 	jsonWriteNumber(jw, "chromSize", (long long)chromSize);
 	}
 else
 	{
 	chromList = bbiChromList(bbi);
 	jsonWriteNumber(jw, "chromCount", (long long)slCount(chromList));
 	}
+     jsonWriteString(jw, "bigDataUrl", bigDataUrl);
     }
 
 unsigned uStart = 0;
 unsigned uEnd = chromSize;
 if ( ! (isEmpty(start) || isEmpty(end)) )
     {
     uStart = sqlUnsigned(start);
     uEnd = sqlUnsigned(end);
     jsonWriteNumber(jw, "start", uStart);
     jsonWriteNumber(jw, "end", uEnd);
     }
 
 if (startsWith("bigBed", thisTrack->type))
     {
     struct asObject *as = bigBedAsOrDefault(bbi);