diff --git a/docs/reference/gdata-sections.txt b/docs/reference/gdata-sections.txt
index 39b0d9c..d065bae 100644
--- a/docs/reference/gdata-sections.txt
+++ b/docs/reference/gdata-sections.txt
@@ -1296,6 +1296,7 @@ gdata_picasaweb_file_get_comment_count
 gdata_picasaweb_file_get_rotation
 gdata_picasaweb_file_set_rotation
 gdata_picasaweb_file_get_video_status
+gdata_picasaweb_file_get_visibility
 gdata_picasaweb_file_get_tags
 gdata_picasaweb_file_set_tags
 gdata_picasaweb_file_get_credit
diff --git a/gdata/gdata.symbols b/gdata/gdata.symbols
index 53100c9..eb3685f 100644
--- a/gdata/gdata.symbols
+++ b/gdata/gdata.symbols
@@ -576,6 +576,7 @@ gdata_picasaweb_file_get_comment_count
 gdata_picasaweb_file_get_rotation
 gdata_picasaweb_file_set_rotation
 gdata_picasaweb_file_get_video_status
+gdata_picasaweb_file_get_visibility
 gdata_picasaweb_file_get_tags
 gdata_picasaweb_file_set_tags
 gdata_picasaweb_file_get_credit
diff --git a/gdata/services/picasaweb/gdata-picasaweb-file.c b/gdata/services/picasaweb/gdata-picasaweb-file.c
index cc50998..21f6027 100644
--- a/gdata/services/picasaweb/gdata-picasaweb-file.c
+++ b/gdata/services/picasaweb/gdata-picasaweb-file.c
@@ -41,6 +41,7 @@
 #include "gdata-service.h"
 #include "gdata-parser.h"
 #include "gdata-types.h"
+#include "gdata-picasaweb-enums.h"
 #include "media/gdata-media-group.h"
 #include "exif/gdata-exif-tags.h"
 #include "georss/gdata-georss-where.h"
@@ -68,6 +69,7 @@ struct _GDataPicasaWebFilePrivate {
 	guint comment_count;
 	guint rotation;
 	gchar *video_status;
+	GDataPicasaWebVisibility visibility;
 
 	/* media:group */
 	GDataMediaGroup *media_group;
@@ -92,6 +94,7 @@ enum {
 	PROP_COMMENT_COUNT, /* TODO support comments */
 	PROP_ROTATION,
 	PROP_VIDEO_STATUS,
+	PROP_VISIBILITY,
 	PROP_CREDIT,
 	PROP_CAPTION,
 	PROP_TAGS,
@@ -209,6 +212,22 @@ gdata_picasaweb_file_class_init (GDataPicasaWebFileClass *klass)
 							      G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
 
 	/**
+	 * GDataPicasaWebFile:visibility:
+	 *
+	 * The visibility (or access rights) of the file.
+	 *
+	 * For more information, see the <ulink type="http" url="http://code.google.com/apis/picasaweb/reference.html#gphoto_access"> 
+	 * gphoto specification</ulink>.                                                                                              
+	 *
+	 * Since: 0.6.0
+	 **/
+	g_object_class_install_property (gobject_class, PROP_VISIBILITY,
+					 g_param_spec_enum ("visibility",
+							    "Visibility", "The visibility (or access rights) of the file.",
+							    GDATA_TYPE_PICASAWEB_VISIBILITY, GDATA_PICASAWEB_PUBLIC,
+							    G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); 
+
+	/**
 	 * GDataPicasaWebFile:position:
 	 *
 	 * The ordinal position of the file within the album. Lower values mean the file will be closer to the start of the album.
@@ -680,6 +699,9 @@ gdata_picasaweb_file_get_property (GObject *object, guint property_id, GValue *v
 		case PROP_VIDEO_STATUS:
 			g_value_set_string (value, priv->video_status);
 			break;
+		case PROP_VISIBILITY:
+			g_value_set_enum (value, priv->visibility);
+			break;
 		case PROP_CREDIT: {
 			GDataMediaCredit *credit = gdata_media_group_get_credit (priv->media_group);
 			g_value_set_string (value, gdata_media_credit_get_credit (credit));
@@ -906,6 +928,19 @@ parse_xml (GDataParsable *parsable, xmlDoc *doc, xmlNode *node, gpointer user_da
 			return gdata_parser_error_duplicate_element (node, error);
 		}
 		self->priv->video_status = (gchar*) video_status;
+	} else if (xmlStrcmp (node->name, (xmlChar*) "access") == 0) {
+		/* gphoto:access */
+		xmlChar *access = xmlNodeListGetString (doc, node->children, TRUE);
+		if (xmlStrcmp (access, (xmlChar*) "public") == 0) {
+			self->priv->visibility = GDATA_PICASAWEB_PUBLIC;
+		} else if (xmlStrcmp (access, (xmlChar*) "private") == 0) {
+			self->priv->visibility = GDATA_PICASAWEB_PRIVATE;
+		} else {
+			gdata_parser_error_unknown_content (node, (gchar*) access, error);
+			xmlFree (access);
+			return FALSE;
+		}
+		xmlFree (access);
 	} else if (xmlStrcmp (node->name, (xmlChar*) "rotation") == 0) {
 		/* gphoto:rotation */
 		xmlChar *rotation = xmlNodeListGetString (doc, node->children, TRUE);
@@ -1395,6 +1430,23 @@ gdata_picasaweb_file_get_video_status (GDataPicasaWebFile *self)
 }
 
 /**
+ * gdata_picasaweb_file_get_visibility:
+ * @self: a #GDataPicasaWebFile
+ *
+ * Gets the #GDataPicasaWebFile:visibility property.
+ *
+ * Return value: the file's visibility level
+ *
+ * Since: 0.6.0
+ **/
+GDataPicasaWebVisibility
+gdata_picasaweb_file_get_visibility (GDataPicasaWebFile *self)
+{
+	g_return_val_if_fail (GDATA_IS_PICASAWEB_FILE (self), GDATA_PICASAWEB_PUBLIC);
+	return self->priv->visibility;
+}
+
+/**
  * gdata_picasaweb_file_get_tags:
  * @self: a #GDataPicasaWebFile
  *
diff --git a/gdata/services/picasaweb/gdata-picasaweb-file.h b/gdata/services/picasaweb/gdata-picasaweb-file.h
index abfaacd..cb42de5 100644
--- a/gdata/services/picasaweb/gdata-picasaweb-file.h
+++ b/gdata/services/picasaweb/gdata-picasaweb-file.h
@@ -26,6 +26,7 @@
 
 #include <gdata/gdata-entry.h>
 #include <gdata/gdata-types.h>
+#include "gdata-picasaweb-album.h" /* TODO: this can't be optimal; where should GDataPicasaWebVisibility's enum go? */
 
 G_BEGIN_DECLS
 
@@ -71,7 +72,8 @@ const gchar *gdata_picasaweb_file_get_version (GDataPicasaWebFile *self);
 gdouble gdata_picasaweb_file_get_position (GDataPicasaWebFile *self);
 void gdata_picasaweb_file_set_position (GDataPicasaWebFile *self, gdouble position);
 const gchar *gdata_picasaweb_file_get_album_id (GDataPicasaWebFile *self);
-void gdata_picasaweb_file_set_album_id (GDataPicasaWebFile *self, const gchar *album_id); /* TODO should we have a more obvious _move() API too? nah */
+void gdata_picasaweb_file_set_album_id (GDataPicasaWebFile *self, const gchar *album_id); 
+GDataPicasaWebVisibility gdata_picasaweb_file_get_visibility (GDataPicasaWebFile *self); 
 guint gdata_picasaweb_file_get_width (GDataPicasaWebFile *self);
 guint gdata_picasaweb_file_get_height (GDataPicasaWebFile *self);
 gsize gdata_picasaweb_file_get_size (GDataPicasaWebFile *self);
diff --git a/gdata/tests/picasaweb.c b/gdata/tests/picasaweb.c
index 20311b4..21918d7 100644
--- a/gdata/tests/picasaweb.c
+++ b/gdata/tests/picasaweb.c
@@ -231,6 +231,7 @@ test_photo (GDataService *service)
 
 	g_assert_cmpstr (gdata_picasaweb_file_get_video_status (photo), ==, NULL);
 	/* todo: not a good test of video status; want to upload a video for it */
+	g_assert_cmpint (gdata_picasaweb_file_get_visibility (photo), ==, GDATA_PICASAWEB_PUBLIC);
 	g_assert_cmpuint (gdata_picasaweb_file_is_commenting_enabled (photo), ==, TRUE);
 	g_assert_cmpuint (gdata_picasaweb_file_get_comment_count (photo), ==, 1);
 	g_assert_cmpuint (gdata_picasaweb_file_get_rotation (photo), ==, 0);
