Index: trunk/pstamp/src/pstamp.h
===================================================================
--- trunk/pstamp/src/pstamp.h	(revision 17456)
+++ trunk/pstamp/src/pstamp.h	(revision 17894)
@@ -34,8 +34,8 @@
 
 #define STAMP_REQUEST_EXTNAME "PS1_PS_REQUEST"
-#define STAMP_REQUEST_VERSION "1.0"
+#define STAMP_REQUEST_VERSION "1"
 
 #define STAMP_RESULTS_EXTNAME "PS1_PS_RESULTS"
-#define STAMP_RESULTS_VERSION "1.0"
+#define STAMP_RESULTS_VERSION "1"
 
 #endif
Index: trunk/pstamp/src/pstamprequest.c
===================================================================
--- trunk/pstamp/src/pstamprequest.c	(revision 17456)
+++ trunk/pstamp/src/pstamprequest.c	(revision 17894)
@@ -10,4 +10,5 @@
     psMetadata  *md;
     psString    fileName;
+    psString    requestName;
 } psrOptions;
 
@@ -109,32 +110,37 @@
     bool        gotCenter = false;
     bool        gotRange  = false;
-    bool        needROI   = true;
-    bool        makeStamps = true;
+    bool        needROI   = false;
+    bool        makeStamps= false;
 
     options->md = md;
 
-    psMetadataAdd (md, PS_LIST_TAIL, "VERSION", PS_DATA_STRING, "", STAMP_REQUEST_VERSION);
-
-    // These mode arguments should be consistent with pstampparse
-    if ((argnum = psArgumentGet(argc, argv, "-list"))) {
-        psMetadataAdd (md, PS_LIST_TAIL, "CMD_MODE", PS_DATA_STRING, "", "list_uri");
-        psArgumentRemove(argnum, &argc, argv);
-        // we don't need coordinates if we're listing unless mode is -bycoord. May be set true below.
-        needROI = false;    
-        makeStamps = false;
-    }
-
+    // Job type. This is normally "stamp" for postage stamp. 
+    // "get_image" requests that whole images to be retrieved (in PS case magic masked)
+    // "list_uri" results in a list of matching images
     if ((argnum = psArgumentGet(argc, argv, "-get_image"))) {
-        psMetadataAdd (md, PS_LIST_TAIL, "JOB_TYPE", PS_DATA_STRING, "", "get_image");
-        psArgumentRemove(argnum, &argc, argv);
-        // we don't need coordinates if we're listing unless mode is -bycoord. May be set true below.
-        needROI = false;    
-        makeStamps = false;
-    } else {
-        psMetadataAdd (md, PS_LIST_TAIL, "JOB_TYPE", PS_DATA_STRING, "", "stamp");
-    }
-
-
-    // get project from command line
+        psMetadataAdd (md, PS_LIST_TAIL, "REQ_TYPE", PS_DATA_STRING, "", "get_image");
+        psArgumentRemove(argnum, &argc, argv);
+    } else if ((argnum = psArgumentGet(argc, argv, "-list_uri"))) {
+        psMetadataAdd (md, PS_LIST_TAIL, "REQ_TYPE", PS_DATA_STRING, "", "get_image");
+        psArgumentRemove(argnum, &argc, argv);
+    } else {
+        psMetadataAdd (md, PS_LIST_TAIL, "REQ_TYPE", PS_DATA_STRING, "", "stamp");
+        needROI = true;
+        makeStamps = true;
+    }
+
+    if ((argnum = psArgumentGet(argc, argv, "-name"))) {
+        psArgumentRemove(argnum, &argc, argv);
+        if (argc < 2) {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, true, "no request name specified");
+            usage();
+        }
+        options->requestName = argv[argnum];
+        psArgumentRemove(argnum, &argc, argv);
+    } else {
+        psError(PS_ERR_BAD_PARAMETER_VALUE, true, "request name is required\n");
+        usage();
+    }
+
     if ((argnum = psArgumentGet(argc, argv, "-project"))) {
         psArgumentRemove(argnum, &argc, argv);
@@ -150,5 +156,5 @@
     }
 
-    // get user tag (base name for the postage stamp files
+    // user tag will be used as the base name for the postage stamp images
     if ((argnum = psArgumentGet(argc, argv, "-user_tag"))) {
         psArgumentRemove(argnum, &argc, argv);
@@ -159,10 +165,10 @@
         psMetadataAdd(md, PS_LIST_TAIL, "USER_TAG", PS_DATA_STRING, "", argv[argnum]);
         psArgumentRemove(argnum, &argc, argv);
-    } else if (makeStamps) {
-        psError(PS_ERR_BAD_PARAMETER_NULL, true, "no user_tag specified");
-        usage();
-    }
-
-    // find style & type
+    } else {
+        // default user tag to requestName
+        psMetadataAdd(md, PS_LIST_TAIL, "USER_TAG", PS_DATA_STRING, "", options->requestName);
+    }
+
+    // find style & image type
     if ((argnum = psArgumentGet(argc, argv, "-bycoord"))) {
         gotStyle = true;
@@ -212,9 +218,9 @@
     if (needROI) {
         if (roiParam.celestialCenter) {
-            psMetadataAdd (md, PS_LIST_TAIL, "RA", PS_DATA_STRING, "", roiParam.center[0]);
+            psMetadataAdd (md, PS_LIST_TAIL, "RA", PS_DATA_STRING, "",  roiParam.center[0]);
             psMetadataAdd (md, PS_LIST_TAIL, "DEC", PS_DATA_STRING, "", roiParam.center[1]);
         } else {
             if (needCoord) {
-                fprintf(stderr, "need to specify ROI in sky coordinates\n");
+                fprintf(stderr, "need to specify ROI in sky coordinates with -bycoord\n");
                 usage();
             }
@@ -258,15 +264,18 @@
         return false;
     }
+    psMetadata *header = psMetadataAlloc();
+
+    psMetadataAdd(header, PS_LIST_TAIL, "REQ_NAME", PS_DATA_STRING, "", options->requestName);
+    psMetadataAdd(header, PS_LIST_TAIL, "EXTVER",   PS_DATA_STRING, "", STAMP_REQUEST_VERSION);
 
     psArray    *table = psArrayAlloc(1);
-
     table->data[0] = options->md;
 
-    if (!psFitsWriteTable(fitsFile, NULL, table, STAMP_REQUEST_EXTNAME)) {
+    if (!psFitsWriteTable(fitsFile, header, table, STAMP_REQUEST_EXTNAME)) {
         psError(PS_ERR_IO, false, "failed to write fits table");
         return false;
     }
 
-    if (!  psFitsClose(fitsFile)) {
+    if (! psFitsClose(fitsFile)) {
         psError(PS_ERR_IO, false, "failed to close fits table");
         return false;
