sig
  module Blog :
    sig
      module Posts :
        sig
          type t = { selfLink : string; totalItems : int; }
          val selfLink : (GapiBloggerV2Model.Blog.Posts.t, string) GapiLens.t
          val totalItems : (GapiBloggerV2Model.Blog.Posts.t, int) GapiLens.t
          val empty : GapiBloggerV2Model.Blog.Posts.t
          val render :
            GapiBloggerV2Model.Blog.Posts.t -> GapiJson.json_data_model list
          val parse :
            GapiBloggerV2Model.Blog.Posts.t ->
            GapiJson.json_data_model -> GapiBloggerV2Model.Blog.Posts.t
        end
      module Pages :
        sig
          type t = { selfLink : string; totalItems : int; }
          val selfLink : (GapiBloggerV2Model.Blog.Pages.t, string) GapiLens.t
          val totalItems : (GapiBloggerV2Model.Blog.Pages.t, int) GapiLens.t
          val empty : GapiBloggerV2Model.Blog.Pages.t
          val render :
            GapiBloggerV2Model.Blog.Pages.t -> GapiJson.json_data_model list
          val parse :
            GapiBloggerV2Model.Blog.Pages.t ->
            GapiJson.json_data_model -> GapiBloggerV2Model.Blog.Pages.t
        end
      module Locale :
        sig
          type t = { country : string; language : string; variant : string; }
          val country : (GapiBloggerV2Model.Blog.Locale.t, string) GapiLens.t
          val language :
            (GapiBloggerV2Model.Blog.Locale.t, string) GapiLens.t
          val variant : (GapiBloggerV2Model.Blog.Locale.t, string) GapiLens.t
          val empty : GapiBloggerV2Model.Blog.Locale.t
          val render :
            GapiBloggerV2Model.Blog.Locale.t -> GapiJson.json_data_model list
          val parse :
            GapiBloggerV2Model.Blog.Locale.t ->
            GapiJson.json_data_model -> GapiBloggerV2Model.Blog.Locale.t
        end
      type t = {
        description : string;
        id : int64;
        kind : string;
        locale : GapiBloggerV2Model.Blog.Locale.t;
        name : string;
        pages : GapiBloggerV2Model.Blog.Pages.t;
        posts : GapiBloggerV2Model.Blog.Posts.t;
        published : GapiDate.t;
        selfLink : string;
        updated : GapiDate.t;
        url : string;
      }
      val description : (GapiBloggerV2Model.Blog.t, string) GapiLens.t
      val id : (GapiBloggerV2Model.Blog.t, int64) GapiLens.t
      val kind : (GapiBloggerV2Model.Blog.t, string) GapiLens.t
      val locale :
        (GapiBloggerV2Model.Blog.t, GapiBloggerV2Model.Blog.Locale.t)
        GapiLens.t
      val name : (GapiBloggerV2Model.Blog.t, string) GapiLens.t
      val pages :
        (GapiBloggerV2Model.Blog.t, GapiBloggerV2Model.Blog.Pages.t)
        GapiLens.t
      val posts :
        (GapiBloggerV2Model.Blog.t, GapiBloggerV2Model.Blog.Posts.t)
        GapiLens.t
      val published : (GapiBloggerV2Model.Blog.t, GapiDate.t) GapiLens.t
      val selfLink : (GapiBloggerV2Model.Blog.t, string) GapiLens.t
      val updated : (GapiBloggerV2Model.Blog.t, GapiDate.t) GapiLens.t
      val url : (GapiBloggerV2Model.Blog.t, string) GapiLens.t
      val empty : GapiBloggerV2Model.Blog.t
      val render : GapiBloggerV2Model.Blog.t -> GapiJson.json_data_model list
      val parse :
        GapiBloggerV2Model.Blog.t ->
        GapiJson.json_data_model -> GapiBloggerV2Model.Blog.t
      val to_data_model :
        GapiBloggerV2Model.Blog.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiBloggerV2Model.Blog.t
    end
  module BlogList :
    sig
      type t = { items : GapiBloggerV2Model.Blog.t list; kind : string; }
      val items :
        (GapiBloggerV2Model.BlogList.t, GapiBloggerV2Model.Blog.t list)
        GapiLens.t
      val kind : (GapiBloggerV2Model.BlogList.t, string) GapiLens.t
      val empty : GapiBloggerV2Model.BlogList.t
      val render :
        GapiBloggerV2Model.BlogList.t -> GapiJson.json_data_model list
      val parse :
        GapiBloggerV2Model.BlogList.t ->
        GapiJson.json_data_model -> GapiBloggerV2Model.BlogList.t
      val to_data_model :
        GapiBloggerV2Model.BlogList.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiBloggerV2Model.BlogList.t
    end
  module User :
    sig
      module Locale :
        sig
          type t = { country : string; language : string; variant : string; }
          val country : (GapiBloggerV2Model.User.Locale.t, string) GapiLens.t
          val language :
            (GapiBloggerV2Model.User.Locale.t, string) GapiLens.t
          val variant : (GapiBloggerV2Model.User.Locale.t, string) GapiLens.t
          val empty : GapiBloggerV2Model.User.Locale.t
          val render :
            GapiBloggerV2Model.User.Locale.t -> GapiJson.json_data_model list
          val parse :
            GapiBloggerV2Model.User.Locale.t ->
            GapiJson.json_data_model -> GapiBloggerV2Model.User.Locale.t
        end
      module Blogs :
        sig
          type t = { selfLink : string; }
          val selfLink : (GapiBloggerV2Model.User.Blogs.t, string) GapiLens.t
          val empty : GapiBloggerV2Model.User.Blogs.t
          val render :
            GapiBloggerV2Model.User.Blogs.t -> GapiJson.json_data_model list
          val parse :
            GapiBloggerV2Model.User.Blogs.t ->
            GapiJson.json_data_model -> GapiBloggerV2Model.User.Blogs.t
        end
      type t = {
        about : string;
        blogs : GapiBloggerV2Model.User.Blogs.t;
        created : GapiDate.t;
        displayName : string;
        id : string;
        kind : string;
        locale : GapiBloggerV2Model.User.Locale.t;
        selfLink : string;
        url : string;
      }
      val about : (GapiBloggerV2Model.User.t, string) GapiLens.t
      val blogs :
        (GapiBloggerV2Model.User.t, GapiBloggerV2Model.User.Blogs.t)
        GapiLens.t
      val created : (GapiBloggerV2Model.User.t, GapiDate.t) GapiLens.t
      val displayName : (GapiBloggerV2Model.User.t, string) GapiLens.t
      val id : (GapiBloggerV2Model.User.t, string) GapiLens.t
      val kind : (GapiBloggerV2Model.User.t, string) GapiLens.t
      val locale :
        (GapiBloggerV2Model.User.t, GapiBloggerV2Model.User.Locale.t)
        GapiLens.t
      val selfLink : (GapiBloggerV2Model.User.t, string) GapiLens.t
      val url : (GapiBloggerV2Model.User.t, string) GapiLens.t
      val empty : GapiBloggerV2Model.User.t
      val render : GapiBloggerV2Model.User.t -> GapiJson.json_data_model list
      val parse :
        GapiBloggerV2Model.User.t ->
        GapiJson.json_data_model -> GapiBloggerV2Model.User.t
      val to_data_model :
        GapiBloggerV2Model.User.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiBloggerV2Model.User.t
    end
  module Comment :
    sig
      module Post :
        sig
          type t = { id : int64; }
          val id : (GapiBloggerV2Model.Comment.Post.t, int64) GapiLens.t
          val empty : GapiBloggerV2Model.Comment.Post.t
          val render :
            GapiBloggerV2Model.Comment.Post.t ->
            GapiJson.json_data_model list
          val parse :
            GapiBloggerV2Model.Comment.Post.t ->
            GapiJson.json_data_model -> GapiBloggerV2Model.Comment.Post.t
        end
      module InReplyTo :
        sig
          type t = { id : int64; }
          val id : (GapiBloggerV2Model.Comment.InReplyTo.t, int64) GapiLens.t
          val empty : GapiBloggerV2Model.Comment.InReplyTo.t
          val render :
            GapiBloggerV2Model.Comment.InReplyTo.t ->
            GapiJson.json_data_model list
          val parse :
            GapiBloggerV2Model.Comment.InReplyTo.t ->
            GapiJson.json_data_model ->
            GapiBloggerV2Model.Comment.InReplyTo.t
        end
      module Blog :
        sig
          type t = { id : int64; }
          val id : (GapiBloggerV2Model.Comment.Blog.t, int64) GapiLens.t
          val empty : GapiBloggerV2Model.Comment.Blog.t
          val render :
            GapiBloggerV2Model.Comment.Blog.t ->
            GapiJson.json_data_model list
          val parse :
            GapiBloggerV2Model.Comment.Blog.t ->
            GapiJson.json_data_model -> GapiBloggerV2Model.Comment.Blog.t
        end
      module Author :
        sig
          module Image :
            sig
              type t = { url : string; }
              val url :
                (GapiBloggerV2Model.Comment.Author.Image.t, string)
                GapiLens.t
              val empty : GapiBloggerV2Model.Comment.Author.Image.t
              val render :
                GapiBloggerV2Model.Comment.Author.Image.t ->
                GapiJson.json_data_model list
              val parse :
                GapiBloggerV2Model.Comment.Author.Image.t ->
                GapiJson.json_data_model ->
                GapiBloggerV2Model.Comment.Author.Image.t
            end
          type t = {
            displayName : string;
            id : string;
            image : GapiBloggerV2Model.Comment.Author.Image.t;
            url : string;
          }
          val displayName :
            (GapiBloggerV2Model.Comment.Author.t, string) GapiLens.t
          val id : (GapiBloggerV2Model.Comment.Author.t, string) GapiLens.t
          val image :
            (GapiBloggerV2Model.Comment.Author.t,
             GapiBloggerV2Model.Comment.Author.Image.t)
            GapiLens.t
          val url : (GapiBloggerV2Model.Comment.Author.t, string) GapiLens.t
          val empty : GapiBloggerV2Model.Comment.Author.t
          val render :
            GapiBloggerV2Model.Comment.Author.t ->
            GapiJson.json_data_model list
          val parse :
            GapiBloggerV2Model.Comment.Author.t ->
            GapiJson.json_data_model -> GapiBloggerV2Model.Comment.Author.t
        end
      type t = {
        author : GapiBloggerV2Model.Comment.Author.t;
        blog : GapiBloggerV2Model.Comment.Blog.t;
        content : string;
        id : int64;
        inReplyTo : GapiBloggerV2Model.Comment.InReplyTo.t;
        kind : string;
        post : GapiBloggerV2Model.Comment.Post.t;
        published : GapiDate.t;
        selfLink : string;
        updated : GapiDate.t;
      }
      val author :
        (GapiBloggerV2Model.Comment.t, GapiBloggerV2Model.Comment.Author.t)
        GapiLens.t
      val blog :
        (GapiBloggerV2Model.Comment.t, GapiBloggerV2Model.Comment.Blog.t)
        GapiLens.t
      val content : (GapiBloggerV2Model.Comment.t, string) GapiLens.t
      val id : (GapiBloggerV2Model.Comment.t, int64) GapiLens.t
      val inReplyTo :
        (GapiBloggerV2Model.Comment.t,
         GapiBloggerV2Model.Comment.InReplyTo.t)
        GapiLens.t
      val kind : (GapiBloggerV2Model.Comment.t, string) GapiLens.t
      val post :
        (GapiBloggerV2Model.Comment.t, GapiBloggerV2Model.Comment.Post.t)
        GapiLens.t
      val published : (GapiBloggerV2Model.Comment.t, GapiDate.t) GapiLens.t
      val selfLink : (GapiBloggerV2Model.Comment.t, string) GapiLens.t
      val updated : (GapiBloggerV2Model.Comment.t, GapiDate.t) GapiLens.t
      val empty : GapiBloggerV2Model.Comment.t
      val render :
        GapiBloggerV2Model.Comment.t -> GapiJson.json_data_model list
      val parse :
        GapiBloggerV2Model.Comment.t ->
        GapiJson.json_data_model -> GapiBloggerV2Model.Comment.t
      val to_data_model :
        GapiBloggerV2Model.Comment.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiBloggerV2Model.Comment.t
    end
  module CommentList :
    sig
      type t = {
        items : GapiBloggerV2Model.Comment.t list;
        kind : string;
        nextPageToken : string;
        prevPageToken : string;
      }
      val items :
        (GapiBloggerV2Model.CommentList.t, GapiBloggerV2Model.Comment.t list)
        GapiLens.t
      val kind : (GapiBloggerV2Model.CommentList.t, string) GapiLens.t
      val nextPageToken :
        (GapiBloggerV2Model.CommentList.t, string) GapiLens.t
      val prevPageToken :
        (GapiBloggerV2Model.CommentList.t, string) GapiLens.t
      val empty : GapiBloggerV2Model.CommentList.t
      val render :
        GapiBloggerV2Model.CommentList.t -> GapiJson.json_data_model list
      val parse :
        GapiBloggerV2Model.CommentList.t ->
        GapiJson.json_data_model -> GapiBloggerV2Model.CommentList.t
      val to_data_model :
        GapiBloggerV2Model.CommentList.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiBloggerV2Model.CommentList.t
    end
  module Page :
    sig
      module Blog :
        sig
          type t = { id : int64; }
          val id : (GapiBloggerV2Model.Page.Blog.t, int64) GapiLens.t
          val empty : GapiBloggerV2Model.Page.Blog.t
          val render :
            GapiBloggerV2Model.Page.Blog.t -> GapiJson.json_data_model list
          val parse :
            GapiBloggerV2Model.Page.Blog.t ->
            GapiJson.json_data_model -> GapiBloggerV2Model.Page.Blog.t
        end
      module Author :
        sig
          module Image :
            sig
              type t = { url : string; }
              val url :
                (GapiBloggerV2Model.Page.Author.Image.t, string) GapiLens.t
              val empty : GapiBloggerV2Model.Page.Author.Image.t
              val render :
                GapiBloggerV2Model.Page.Author.Image.t ->
                GapiJson.json_data_model list
              val parse :
                GapiBloggerV2Model.Page.Author.Image.t ->
                GapiJson.json_data_model ->
                GapiBloggerV2Model.Page.Author.Image.t
            end
          type t = {
            displayName : string;
            id : string;
            image : GapiBloggerV2Model.Page.Author.Image.t;
            url : string;
          }
          val displayName :
            (GapiBloggerV2Model.Page.Author.t, string) GapiLens.t
          val id : (GapiBloggerV2Model.Page.Author.t, string) GapiLens.t
          val image :
            (GapiBloggerV2Model.Page.Author.t,
             GapiBloggerV2Model.Page.Author.Image.t)
            GapiLens.t
          val url : (GapiBloggerV2Model.Page.Author.t, string) GapiLens.t
          val empty : GapiBloggerV2Model.Page.Author.t
          val render :
            GapiBloggerV2Model.Page.Author.t -> GapiJson.json_data_model list
          val parse :
            GapiBloggerV2Model.Page.Author.t ->
            GapiJson.json_data_model -> GapiBloggerV2Model.Page.Author.t
        end
      type t = {
        author : GapiBloggerV2Model.Page.Author.t;
        blog : GapiBloggerV2Model.Page.Blog.t;
        content : string;
        id : int64;
        kind : string;
        published : GapiDate.t;
        selfLink : string;
        title : string;
        updated : GapiDate.t;
        url : string;
      }
      val author :
        (GapiBloggerV2Model.Page.t, GapiBloggerV2Model.Page.Author.t)
        GapiLens.t
      val blog :
        (GapiBloggerV2Model.Page.t, GapiBloggerV2Model.Page.Blog.t)
        GapiLens.t
      val content : (GapiBloggerV2Model.Page.t, string) GapiLens.t
      val id : (GapiBloggerV2Model.Page.t, int64) GapiLens.t
      val kind : (GapiBloggerV2Model.Page.t, string) GapiLens.t
      val published : (GapiBloggerV2Model.Page.t, GapiDate.t) GapiLens.t
      val selfLink : (GapiBloggerV2Model.Page.t, string) GapiLens.t
      val title : (GapiBloggerV2Model.Page.t, string) GapiLens.t
      val updated : (GapiBloggerV2Model.Page.t, GapiDate.t) GapiLens.t
      val url : (GapiBloggerV2Model.Page.t, string) GapiLens.t
      val empty : GapiBloggerV2Model.Page.t
      val render : GapiBloggerV2Model.Page.t -> GapiJson.json_data_model list
      val parse :
        GapiBloggerV2Model.Page.t ->
        GapiJson.json_data_model -> GapiBloggerV2Model.Page.t
      val to_data_model :
        GapiBloggerV2Model.Page.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiBloggerV2Model.Page.t
    end
  module Post :
    sig
      module Replies :
        sig
          type t = { selfLink : string; totalItems : int64; }
          val selfLink :
            (GapiBloggerV2Model.Post.Replies.t, string) GapiLens.t
          val totalItems :
            (GapiBloggerV2Model.Post.Replies.t, int64) GapiLens.t
          val empty : GapiBloggerV2Model.Post.Replies.t
          val render :
            GapiBloggerV2Model.Post.Replies.t ->
            GapiJson.json_data_model list
          val parse :
            GapiBloggerV2Model.Post.Replies.t ->
            GapiJson.json_data_model -> GapiBloggerV2Model.Post.Replies.t
        end
      module Blog :
        sig
          type t = { id : int64; }
          val id : (GapiBloggerV2Model.Post.Blog.t, int64) GapiLens.t
          val empty : GapiBloggerV2Model.Post.Blog.t
          val render :
            GapiBloggerV2Model.Post.Blog.t -> GapiJson.json_data_model list
          val parse :
            GapiBloggerV2Model.Post.Blog.t ->
            GapiJson.json_data_model -> GapiBloggerV2Model.Post.Blog.t
        end
      module Author :
        sig
          module Image :
            sig
              type t = { url : string; }
              val url :
                (GapiBloggerV2Model.Post.Author.Image.t, string) GapiLens.t
              val empty : GapiBloggerV2Model.Post.Author.Image.t
              val render :
                GapiBloggerV2Model.Post.Author.Image.t ->
                GapiJson.json_data_model list
              val parse :
                GapiBloggerV2Model.Post.Author.Image.t ->
                GapiJson.json_data_model ->
                GapiBloggerV2Model.Post.Author.Image.t
            end
          type t = {
            displayName : string;
            id : string;
            image : GapiBloggerV2Model.Post.Author.Image.t;
            url : string;
          }
          val displayName :
            (GapiBloggerV2Model.Post.Author.t, string) GapiLens.t
          val id : (GapiBloggerV2Model.Post.Author.t, string) GapiLens.t
          val image :
            (GapiBloggerV2Model.Post.Author.t,
             GapiBloggerV2Model.Post.Author.Image.t)
            GapiLens.t
          val url : (GapiBloggerV2Model.Post.Author.t, string) GapiLens.t
          val empty : GapiBloggerV2Model.Post.Author.t
          val render :
            GapiBloggerV2Model.Post.Author.t -> GapiJson.json_data_model list
          val parse :
            GapiBloggerV2Model.Post.Author.t ->
            GapiJson.json_data_model -> GapiBloggerV2Model.Post.Author.t
        end
      type t = {
        author : GapiBloggerV2Model.Post.Author.t;
        blog : GapiBloggerV2Model.Post.Blog.t;
        content : string;
        id : int64;
        kind : string;
        labels : string list;
        published : GapiDate.t;
        replies : GapiBloggerV2Model.Post.Replies.t;
        selfLink : string;
        title : string;
        updated : GapiDate.t;
        url : string;
      }
      val author :
        (GapiBloggerV2Model.Post.t, GapiBloggerV2Model.Post.Author.t)
        GapiLens.t
      val blog :
        (GapiBloggerV2Model.Post.t, GapiBloggerV2Model.Post.Blog.t)
        GapiLens.t
      val content : (GapiBloggerV2Model.Post.t, string) GapiLens.t
      val id : (GapiBloggerV2Model.Post.t, int64) GapiLens.t
      val kind : (GapiBloggerV2Model.Post.t, string) GapiLens.t
      val labels : (GapiBloggerV2Model.Post.t, string list) GapiLens.t
      val published : (GapiBloggerV2Model.Post.t, GapiDate.t) GapiLens.t
      val replies :
        (GapiBloggerV2Model.Post.t, GapiBloggerV2Model.Post.Replies.t)
        GapiLens.t
      val selfLink : (GapiBloggerV2Model.Post.t, string) GapiLens.t
      val title : (GapiBloggerV2Model.Post.t, string) GapiLens.t
      val updated : (GapiBloggerV2Model.Post.t, GapiDate.t) GapiLens.t
      val url : (GapiBloggerV2Model.Post.t, string) GapiLens.t
      val empty : GapiBloggerV2Model.Post.t
      val render : GapiBloggerV2Model.Post.t -> GapiJson.json_data_model list
      val parse :
        GapiBloggerV2Model.Post.t ->
        GapiJson.json_data_model -> GapiBloggerV2Model.Post.t
      val to_data_model :
        GapiBloggerV2Model.Post.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiBloggerV2Model.Post.t
    end
  module PostList :
    sig
      type t = {
        items : GapiBloggerV2Model.Post.t list;
        kind : string;
        nextPageToken : string;
        prevPageToken : string;
      }
      val items :
        (GapiBloggerV2Model.PostList.t, GapiBloggerV2Model.Post.t list)
        GapiLens.t
      val kind : (GapiBloggerV2Model.PostList.t, string) GapiLens.t
      val nextPageToken : (GapiBloggerV2Model.PostList.t, string) GapiLens.t
      val prevPageToken : (GapiBloggerV2Model.PostList.t, string) GapiLens.t
      val empty : GapiBloggerV2Model.PostList.t
      val render :
        GapiBloggerV2Model.PostList.t -> GapiJson.json_data_model list
      val parse :
        GapiBloggerV2Model.PostList.t ->
        GapiJson.json_data_model -> GapiBloggerV2Model.PostList.t
      val to_data_model :
        GapiBloggerV2Model.PostList.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiBloggerV2Model.PostList.t
    end
  module PageList :
    sig
      type t = { items : GapiBloggerV2Model.Page.t list; kind : string; }
      val items :
        (GapiBloggerV2Model.PageList.t, GapiBloggerV2Model.Page.t list)
        GapiLens.t
      val kind : (GapiBloggerV2Model.PageList.t, string) GapiLens.t
      val empty : GapiBloggerV2Model.PageList.t
      val render :
        GapiBloggerV2Model.PageList.t -> GapiJson.json_data_model list
      val parse :
        GapiBloggerV2Model.PageList.t ->
        GapiJson.json_data_model -> GapiBloggerV2Model.PageList.t
      val to_data_model :
        GapiBloggerV2Model.PageList.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiBloggerV2Model.PageList.t
    end
end