func (v Photos) ReorderPhotos(params PhotosReorderPhotosParams) (bool, error) {
	r, err := v.API.Request("photos.reorderPhotos", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
ReorderPhotos Reorders the photo in the list of photos of the user album.
package vkapi
import (
	"encoding/json"
	"strconv"
	"github.com/stek29/vk"
)
type Photos struct {
	API vk.API
}
type PhotosCreateAlbumParams struct {
	Title string `url:"title"`
	GroupID int `url:"group_id,omitempty"`
	Description        string         `url:"description,omitempty"`
	PrivacyView        CSVStringSlice `url:"privacy_view,omitempty"`
	PrivacyComment     CSVStringSlice `url:"privacy_comment,omitempty"`
	UploadByAdminsOnly bool           `url:"upload_by_admins_only,omitempty"`
	CommentsDisabled   bool           `url:"comments_disabled,omitempty"`
}
type PhotosCreateAlbumResponse genTODOType  
func (v Photos) CreateAlbum(params PhotosCreateAlbumParams) (*PhotosCreateAlbumResponse, error) {
	r, err := v.API.Request("photos.createAlbum", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosCreateAlbumResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type PhotosEditAlbumParams struct {
	AlbumID int `url:"album_id"`
	Title string `url:"title,omitempty"`
	Description string `url:"description,omitempty"`
	OwnerID            int            `url:"owner_id,omitempty"`
	PrivacyView        CSVStringSlice `url:"privacy_view,omitempty"`
	PrivacyComment     CSVStringSlice `url:"privacy_comment,omitempty"`
	UploadByAdminsOnly bool           `url:"upload_by_admins_only,omitempty"`
	CommentsDisabled   bool           `url:"comments_disabled,omitempty"`
}
func (v Photos) EditAlbum(params PhotosEditAlbumParams) (bool, error) {
	r, err := v.API.Request("photos.editAlbum", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
type PhotosGetAlbumsParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	AlbumIDs CSVIntSlice `url:"album_ids,omitempty"`
	Offset int `url:"offset,omitempty"`
	Count int `url:"count,omitempty"`
	NeedSystem bool `url:"need_system,omitempty"`
	NeedCovers bool `url:"need_covers,omitempty"`
	PhotoSizes bool `url:"photo_sizes,omitempty"`
}
type PhotosGetAlbumsResponse struct {
	Count int `json:"count,omitempty"`
	Items []genTODOType  `json:"items,omitempty"`
}
func (v Photos) GetAlbums(params PhotosGetAlbumsParams) (*PhotosGetAlbumsResponse, error) {
	r, err := v.API.Request("photos.getAlbums", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetAlbumsResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type PhotosGetParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	AlbumID string `url:"album_id,omitempty"`
	PhotoIDs CSVStringSlice `url:"photo_ids,omitempty"`
	Rev bool `url:"rev,omitempty"`
	Extended bool `url:"extended,omitempty"`
	FeedType string `url:"feed_type,omitempty"`
	Feed int `url:"feed,omitempty"`
	PhotoSizes bool `url:"photo_sizes,omitempty"`
	Offset     int  `url:"offset,omitempty"`
	Count      int  `url:"count,omitempty"`
}
type PhotosGetResponse interface {
	isPhotosGet()
}
type PhotosGetResponseNormal struct {
	Count int        `json:"count,omitempty"`
	Items []vk.Photo `json:"items,omitempty"`
}
func (PhotosGetResponseNormal) isPhotosGet() {}
type PhotosGetResponseExtended struct {
	Count int        `json:"count,omitempty"`
	Items []vk.Photo `json:"items,omitempty"`
}
func (PhotosGetResponseExtended) isPhotosGet() {}
func (v Photos) Get(params PhotosGetParams) (PhotosGetResponse, error) {
	r, err := v.API.Request("photos.get", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetResponse
	if params.Extended {
		var tmp PhotosGetResponseExtended
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	} else {
		var tmp PhotosGetResponseNormal
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	}
	if err != nil {
		return nil, err
	}
	return resp, nil
}
type PhotosGetAlbumsCountParams struct {
	UserID int `url:"user_id,omitempty"`
	GroupID int `url:"group_id,omitempty"`
}
type PhotosGetAlbumsCountResponse int
func (v Photos) GetAlbumsCount(params PhotosGetAlbumsCountParams) (PhotosGetAlbumsCountResponse, error) {
	r, err := v.API.Request("photos.getAlbumsCount", params)
	if err != nil {
		return 0, err
	}
	var resp PhotosGetAlbumsCountResponse
	var cnv int
	cnv, err = strconv.Atoi(string(r))
	resp = PhotosGetAlbumsCountResponse(cnv)
	if err != nil {
		return 0, err
	}
	return resp, nil
}
type PhotosGetByIDParams struct {
	Photos CSVStringSlice `url:"photos"`
	Extended bool `url:"extended,omitempty"`
	PhotoSizes bool `url:"photo_sizes,omitempty"`
}
type PhotosGetByIDResponse interface {
	isPhotosGetByID()
}
type PhotosGetByIDResponseNormal []vk.Photo
func (PhotosGetByIDResponseNormal) isPhotosGetByID() {}
type PhotosGetByIDResponseExtended []vk.Photo
func (PhotosGetByIDResponseExtended) isPhotosGetByID() {}
func (v Photos) GetByID(params PhotosGetByIDParams) (PhotosGetByIDResponse, error) {
	r, err := v.API.Request("photos.getById", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetByIDResponse
	if params.Extended {
		var tmp PhotosGetByIDResponseExtended
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	} else {
		var tmp PhotosGetByIDResponseNormal
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	}
	if err != nil {
		return nil, err
	}
	return resp, nil
}
type PhotosGetUploadServerParams struct {
	GroupID int `url:"group_id,omitempty"`
	AlbumID int `url:"album_id,omitempty"`
}
type PhotosGetUploadServerResponse struct {
	UploadURL string `json:"upload_url,omitempty"`
	AlbumID int `json:"album_id,omitempty"`
	UserID int `json:"user_id,omitempty"`
}
func (v Photos) GetUploadServer(params PhotosGetUploadServerParams) (*PhotosGetUploadServerResponse, error) {
	r, err := v.API.Request("photos.getUploadServer", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetUploadServerResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type PhotosGetOwnerCoverPhotoUploadServerParams struct {
	GroupID int `url:"group_id"`
	CropX int `url:"crop_x,omitempty"`
	CropY int `url:"crop_y,omitempty"`
	CropX2 int `url:"crop_x2,omitempty"`
	CropY2 int `url:"crop_y2,omitempty"`
}
type PhotosGetOwnerCoverPhotoUploadServerResponse struct {
	UploadURL string `json:"upload_url,omitempty"`
}
func (v Photos) GetOwnerCoverPhotoUploadServer(params PhotosGetOwnerCoverPhotoUploadServerParams) (*PhotosGetOwnerCoverPhotoUploadServerResponse, error) {
	r, err := v.API.Request("photos.getOwnerCoverPhotoUploadServer", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetOwnerCoverPhotoUploadServerResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type PhotosGetOwnerPhotoUploadServerParams struct {
	OwnerID int `url:"owner_id,omitempty"`
}
type PhotosGetOwnerPhotoUploadServerResponse struct {
	UploadURL string `json:"upload_url,omitempty"`
}
func (v Photos) GetOwnerPhotoUploadServer(params PhotosGetOwnerPhotoUploadServerParams) (*PhotosGetOwnerPhotoUploadServerResponse, error) {
	r, err := v.API.Request("photos.getOwnerPhotoUploadServer", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetOwnerPhotoUploadServerResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type PhotosGetChatUploadServerParams struct {
	ChatID int `url:"chat_id"`
	CropX  int `url:"crop_x,omitempty"`
	CropY  int `url:"crop_y,omitempty"`
	CropWidth int `url:"crop_width,omitempty"`
}
type PhotosGetChatUploadServerResponse struct {
	UploadURL string `json:"upload_url,omitempty"`
	AlbumID int `json:"album_id,omitempty"`
	UserID int `json:"user_id,omitempty"`
}
func (v Photos) GetChatUploadServer(params PhotosGetChatUploadServerParams) (*PhotosGetChatUploadServerResponse, error) {
	r, err := v.API.Request("photos.getChatUploadServer", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetChatUploadServerResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type PhotosGetMarketUploadServerParams struct {
	GroupID int `url:"group_id"`
	MainPhoto bool `url:"main_photo,omitempty"`
	CropX int `url:"crop_x,omitempty"`
	CropY int `url:"crop_y,omitempty"`
	CropWidth int `url:"crop_width,omitempty"`
}
type PhotosGetMarketUploadServerResponse struct {
	UploadURL string `json:"upload_url,omitempty"`
}
func (v Photos) GetMarketUploadServer(params PhotosGetMarketUploadServerParams) (*PhotosGetMarketUploadServerResponse, error) {
	r, err := v.API.Request("photos.getMarketUploadServer", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetMarketUploadServerResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type PhotosGetMarketAlbumUploadServerParams struct {
	GroupID int `url:"group_id"`
}
type PhotosGetMarketAlbumUploadServerResponse struct {
	UploadURL string `json:"upload_url,omitempty"`
}
func (v Photos) GetMarketAlbumUploadServer(params PhotosGetMarketAlbumUploadServerParams) (*PhotosGetMarketAlbumUploadServerResponse, error) {
	r, err := v.API.Request("photos.getMarketAlbumUploadServer", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetMarketAlbumUploadServerResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type PhotosSaveMarketPhotoParams struct {
	GroupID int `url:"group_id,omitempty"`
	Photo string `url:"photo"`
	Server int `url:"server"`
	Hash string `url:"hash"`
	CropData string `url:"crop_data,omitempty"`
	CropHash string `url:"crop_hash,omitempty"`
}
type PhotosSaveMarketPhotoResponse []vk.Photo
func (v Photos) SaveMarketPhoto(params PhotosSaveMarketPhotoParams) (PhotosSaveMarketPhotoResponse, error) {
	r, err := v.API.Request("photos.saveMarketPhoto", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosSaveMarketPhotoResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return resp, nil
}
type PhotosSaveOwnerCoverPhotoParams struct {
	Hash string `url:"hash"`
	Photo string `url:"photo"`
}
type PhotosSaveOwnerCoverPhotoResponse []vk.BaseImage
func (v Photos) SaveOwnerCoverPhoto(params PhotosSaveOwnerCoverPhotoParams) (PhotosSaveOwnerCoverPhotoResponse, error) {
	r, err := v.API.Request("photos.saveOwnerCoverPhoto", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosSaveOwnerCoverPhotoResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return resp, nil
}
type PhotosSaveMarketAlbumPhotoParams struct {
	GroupID int `url:"group_id"`
	Photo string `url:"photo"`
	Server int `url:"server"`
	Hash string `url:"hash"`
}
type PhotosSaveMarketAlbumPhotoResponse []vk.Photo
func (v Photos) SaveMarketAlbumPhoto(params PhotosSaveMarketAlbumPhotoParams) (PhotosSaveMarketAlbumPhotoResponse, error) {
	r, err := v.API.Request("photos.saveMarketAlbumPhoto", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosSaveMarketAlbumPhotoResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return resp, nil
}
type PhotosSaveOwnerPhotoParams struct {
	Server string `url:"server,omitempty"`
	Hash string `url:"hash,omitempty"`
	Photo string `url:"photo,omitempty"`
}
type PhotosSaveOwnerPhotoResponse struct {
	PhotoHash string `json:"photo_hash,omitempty"`
	PhotoSrc string `json:"photo_src,omitempty"`
}
func (v Photos) SaveOwnerPhoto(params PhotosSaveOwnerPhotoParams) (*PhotosSaveOwnerPhotoResponse, error) {
	r, err := v.API.Request("photos.saveOwnerPhoto", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosSaveOwnerPhotoResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type PhotosSaveWallPhotoParams struct {
	UserID int `url:"user_id,omitempty"`
	GroupID int `url:"group_id,omitempty"`
	Photo  string `url:"photo"`
	Server int    `url:"server,omitempty"`
	Hash   string `url:"hash,omitempty"`
	Latitude float32 `url:"latitude,omitempty"`
	Longitude float32 `url:"longitude,omitempty"`
	Caption string `url:"caption,omitempty"`
}
type PhotosSaveWallPhotoResponse []vk.Photo
func (v Photos) SaveWallPhoto(params PhotosSaveWallPhotoParams) (PhotosSaveWallPhotoResponse, error) {
	r, err := v.API.Request("photos.saveWallPhoto", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosSaveWallPhotoResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return resp, nil
}
type PhotosGetWallUploadServerParams struct {
	GroupID int `url:"group_id,omitempty"`
}
type PhotosGetWallUploadServerResponse struct {
	UploadURL string `json:"upload_url,omitempty"`
	AlbumID int `json:"album_id,omitempty"`
	UserID int `json:"user_id,omitempty"`
}
func (v Photos) GetWallUploadServer(params PhotosGetWallUploadServerParams) (*PhotosGetWallUploadServerResponse, error) {
	r, err := v.API.Request("photos.getWallUploadServer", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetWallUploadServerResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type PhotosGetMessagesUploadServerParams struct {
	PeerID int `url:"peer_id,omitempty"`
}
type PhotosGetMessagesUploadServerResponse struct {
	UploadURL string `json:"upload_url,omitempty"`
	AlbumID int `json:"album_id,omitempty"`
	UserID int `json:"user_id,omitempty"`
}
func (v Photos) GetMessagesUploadServer(params PhotosGetMessagesUploadServerParams) (*PhotosGetMessagesUploadServerResponse, error) {
	r, err := v.API.Request("photos.getMessagesUploadServer", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetMessagesUploadServerResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type PhotosSaveMessagesPhotoParams struct {
	Photo  string `url:"photo"`
	Server int    `url:"server,omitempty"`
	Hash   string `url:"hash,omitempty"`
}
type PhotosSaveMessagesPhotoResponse []vk.Photo
func (v Photos) SaveMessagesPhoto(params PhotosSaveMessagesPhotoParams) (PhotosSaveMessagesPhotoResponse, error) {
	r, err := v.API.Request("photos.saveMessagesPhoto", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosSaveMessagesPhotoResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return resp, nil
}
type PhotosReportParams struct {
	OwnerID int `url:"owner_id"`
	PhotoID int `url:"photo_id"`
	Reason int `url:"reason,omitempty"`
}
func (v Photos) Report(params PhotosReportParams) (bool, error) {
	r, err := v.API.Request("photos.report", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
type PhotosReportCommentParams struct {
	OwnerID int `url:"owner_id"`
	CommentID int `url:"comment_id"`
	Reason int `url:"reason,omitempty"`
}
func (v Photos) ReportComment(params PhotosReportCommentParams) (bool, error) {
	r, err := v.API.Request("photos.reportComment", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
type PhotosSearchParams struct {
	Q string `url:"q,omitempty"`
	Lat float32 `url:"lat,omitempty"`
	Long      float32 `url:"long,omitempty"`
	StartTime int     `url:"start_time,omitempty"`
	EndTime   int     `url:"end_time,omitempty"`
	Sort int `url:"sort,omitempty"`
	Offset int `url:"offset,omitempty"`
	Count int `url:"count,omitempty"`
	Radius int `url:"radius,omitempty"`
}
type PhotosSearchResponse struct {
	Count int        `json:"count,omitempty"`
	Items []vk.Photo `json:"items,omitempty"`
}
func (v Photos) Search(params PhotosSearchParams) (*PhotosSearchResponse, error) {
	r, err := v.API.Request("photos.search", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosSearchResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type PhotosSaveParams struct {
	AlbumID int `url:"album_id,omitempty"`
	GroupID int `url:"group_id,omitempty"`
	Server int `url:"server,omitempty"`
	PhotosList string `url:"photos_list,omitempty"`
	Hash string `url:"hash,omitempty"`
	Latitude float32 `url:"latitude,omitempty"`
	Longitude float32 `url:"longitude,omitempty"`
	Caption string `url:"caption,omitempty"`
}
type PhotosSaveResponse []vk.Photo
func (v Photos) Save(params PhotosSaveParams) (PhotosSaveResponse, error) {
	r, err := v.API.Request("photos.save", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosSaveResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return resp, nil
}
type PhotosCopyParams struct {
	OwnerID int `url:"owner_id"`
	PhotoID int `url:"photo_id"`
	AccessKey string `url:"access_key,omitempty"`
}
type PhotosCopyResponse int
func (v Photos) Copy(params PhotosCopyParams) (PhotosCopyResponse, error) {
	r, err := v.API.Request("photos.copy", params)
	if err != nil {
		return 0, err
	}
	var resp PhotosCopyResponse
	var cnv int
	cnv, err = strconv.Atoi(string(r))
	resp = PhotosCopyResponse(cnv)
	if err != nil {
		return 0, err
	}
	return resp, nil
}
type PhotosEditParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	PhotoID int `url:"photo_id"`
	Caption      string  `url:"caption,omitempty"`
	Latitude     float32 `url:"latitude,omitempty"`
	Longitude    float32 `url:"longitude,omitempty"`
	PlaceStr     string  `url:"place_str,omitempty"`
	FoursquareID string  `url:"foursquare_id,omitempty"`
	DeletePlace  bool    `url:"delete_place,omitempty"`
}
func (v Photos) Edit(params PhotosEditParams) (bool, error) {
	r, err := v.API.Request("photos.edit", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
type PhotosMoveParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	TargetAlbumID int `url:"target_album_id"`
	PhotoID int `url:"photo_id"`
}
func (v Photos) Move(params PhotosMoveParams) (bool, error) {
	r, err := v.API.Request("photos.move", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
type PhotosMakeCoverParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	PhotoID int `url:"photo_id"`
	AlbumID int `url:"album_id,omitempty"`
}
func (v Photos) MakeCover(params PhotosMakeCoverParams) (bool, error) {
	r, err := v.API.Request("photos.makeCover", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
type PhotosReorderAlbumsParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	AlbumID int `url:"album_id"`
	Before int `url:"before,omitempty"`
	After int `url:"after,omitempty"`
}
func (v Photos) ReorderAlbums(params PhotosReorderAlbumsParams) (bool, error) {
	r, err := v.API.Request("photos.reorderAlbums", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
type PhotosReorderPhotosParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	PhotoID int `url:"photo_id"`
	Before int `url:"before,omitempty"`
	After int `url:"after,omitempty"`
}