def add(url, description, options = EMPTY_HASH)
      parameters = Specification.new(
        url: Types::URL,
        description: Types::Text,
        extended: Types::Text,
        tags: Types::Tags,
        dt: Types::Time,
        replace: Types::Boolean,
        shared: Types::Boolean,
        toread: Types::Boolean
      ).parameters({ url: url, description: description }.merge(options))
      @client.action('/posts/add', parameters)
      self
    end
def add(url, description, options = EMPTY_HASH)
      parameters = Specification.new(
        url: Types::URL,
        description: Types::Text,
        extended: Types::Text,
        tags: Types::Tags,
        dt: Types::Time,
        replace: Types::Boolean,
        shared: Types::Boolean,
        toread: Types::Boolean
      ).parameters({ url: url, description: description }.merge(options))
      @client.action('/posts/add', parameters)
      self
    end
Add a bookmark

 @example
   posts.add(url, description, tags: ['one', 'two', 'three'])

 @param [String] url
   the URL of the bookmark
 @param [String] description
   title of the bookmark
 @param [Hash] options
   options for the bookmark addition
 @option options [String] :extended
   a description of the bookmark
 @option options [Array[String]] :tags
   a list of up to 100 tags
 @option options [Time] :dt
   the creation time for this bookmark
 @option options [Boolean] :replace
   if true, replace any existing bookmark with the same URL
 @option options [Boolean] :shared
   if true, make the bookmark public
 @option options [Boolean] :toread
   if true, mark the bookmark unread

 @return [self]

 @api public

 @see https://pinboard.in/api/#posts_add