whole_func_string: function Archive(config, properties) {
    var hasProp = {}.hasOwnProperty;
    var id = properties.id;
    var key;
  
    for (key in properties) {
      if (hasProp.call(properties, key)) {
        this[key] = properties[key];
      }
    }
  
    /**
    * Stops the recording of the archive.
    * <p>
    * Archives automatically stop recording after 120 minutes or when all clients have disconnected
    * from the session being archived.
    *
    * @param callback {Function} The function to call upon completing the operation. Two arguments
    * are passed to the function:
    *
    * <ul>
    *
    *   <li>
    *      <code>error</code> &mdash; An error object (if the call to the method fails).
    *   </li>
    *
    *   <li>
    *       <code>archive</code> &mdash; The Archive object.
    *   </li>
    *
    * </ul>
    *
    * @method #stop
    * @memberof Archive
    */
    this.stop = function (callback) {
      exports.stopArchive(config, id, callback);
    };
  
    /**
    * Deletes the OpenTok archive.
    * <p>
    * You can only delete an archive which has a status of "available" or "uploaded". Deleting an
    * archive removes its record from the list of archives. For an "available" archive, it also
    * removes the archive file, making it unavailable for download.
    *
    * @param callback {Function} The function to call upon completing the operation. On successfully
    * deleting the archive, the function is called with no arguments passed in. On failure, an error
    * object is passed into the function.
    *
    * @method #delete
    * @memberof Archive
    */
    this.delete = function (callback) {
      exports.deleteArchive(config, id, callback);
    };
  }
func_code_string: function Archive(config, properties) {
    var hasProp = {}.hasOwnProperty;
    var id = properties.id;
    var key;
  
    for (key in properties) {
      if (hasProp.call(properties, key)) {
        this[key] = properties[key];
      }
    }
  
    /**
    * Stops the recording of the archive.
    * <p>
    * Archives automatically stop recording after 120 minutes or when all clients have disconnected
    * from the session being archived.
    *
    * @param callback {Function} The function to call upon completing the operation. Two arguments
    * are passed to the function:
    *
    * <ul>
    *
    *   <li>
    *      <code>error</code> &mdash; An error object (if the call to the method fails).
    *   </li>
    *
    *   <li>
    *       <code>archive</code> &mdash; The Archive object.
    *   </li>
    *
    * </ul>
    *
    * @method #stop
    * @memberof Archive
    */
    this.stop = function (callback) {
      exports.stopArchive(config, id, callback);
    };
  
    /**
    * Deletes the OpenTok archive.
    * <p>
    * You can only delete an archive which has a status of "available" or "uploaded". Deleting an
    * archive removes its record from the list of archives. For an "available" archive, it also
    * removes the archive file, making it unavailable for download.
    *
    * @param callback {Function} The function to call upon completing the operation. On successfully
    * deleting the archive, the function is called with no arguments passed in. On failure, an error
    * object is passed into the function.
    *
    * @method #delete
    * @memberof Archive
    */
    this.delete = function (callback) {
      exports.deleteArchive(config, id, callback);
    };
  }
func_documentation_string: An object representing an OpenTok archive.
  <p>
  Do not call the <code>new()</code> constructor. To start recording an archive, call the
  {@link OpenTok#startArchive OpenTok.startArchive()} method.
  
  @property {Number} createdAt
  The time at which the archive was created, in milliseconds since the UNIX epoch.
  
  @property {String} duration
  The duration of the archive, in milliseconds.
  
  @property {Boolean} hasAudio
  Whether the archive has an audio track (<code>true</code>) or not (<code>false</code>).
  You can prevent audio from being recorded by setting <code>hasAudio</code> to <code>false</code>
  in the <code>options</code> parameter you pass into the
  {@link OpenTok#startArchive OpenTok.startArchive()} method.
  
  @property {Boolean} hasVideo
  Whether the archive has an video track (<code>true</code>) or not (<code>false</code>).
  You can prevent video from being recorded by setting <code>hasVideo</code> to <code>false</code>
  in the <code>options</code> parameter you pass into the
  {@link OpenTok#startArchive OpenTok.startArchive()} method.
  
  @property {String} id
  The archive ID.
  
  @property {String} name
  The name of the archive. If no name was provided when the archive was created, this is set
  to null.
  
  @property {String} outputMode
  The output mode to be generated for this archive, which can be one of the following:
  <ul>
  <li> "composed" -- All streams in the archive are recorded to a single (composed) file.
  <li> "individual" -- Each stream in the archive is recorded to its own individual file.
  </ul>
  
  See the {@link OpenTok#startArchive OpenTok.startArchive()} method.
  
  @property {String} partnerId
  The API key associated with the archive.
  
  @property {String} reason
  For archives with the status "stopped" or "failed", this string describes the reason
  the archive stopped (such as "maximum duration exceeded") or failed.
  
  @property {String} resolution The resolution of the archive (either "640x480" or "1280x720").
  This property is only set for composed archives.
  
  @property {String} sessionId
  The session ID of the OpenTok session associated with this archive.
  
  @property {Number} size
  The size of the MP4 file. For archives that have not been generated, this value is set to 0.
  
  @property {String} status
  The status of the archive, which can be one of the following:
  <ul>
  <li> "available" -- The archive is available for download from the OpenTok cloud.
  <li> "expired" -- The archive is no longer available for download from the OpenTok cloud.
  <li> "failed" -- The archive recording failed.
  <li> "paused" -- The archive is in progress and no clients are publishing streams to
  the session. When an archive is in progress and any client publishes a stream,
  the status is "started". When an archive is "paused", nothing is recorded. When
  a client starts publishing a stream, the recording starts (or resumes). If all clients
  disconnect from a session that is being archived, the status changes to "paused", and
  after 60 seconds the archive recording stops (and the status changes to "stopped").</li>
  <li> "started" -- The archive started and is in the process of being recorded.
  <li> "stopped" -- The archive stopped recording.
  <li> "uploaded" -- The archive is available for download from the the upload target
  Amazon S3 bucket or Windows Azure container you set up for your
  <a href="https://tokbox.com/account">OpenTok project</a>.
  </ul>
  
  @property {String} url
  The download URL of the available MP4 file. This is only set for an archive with the status set
  to "available"; for other archives, (including archives with the status "uploaded") this
  property is set to null. The download URL is obfuscated, and the file is only available from the
  URL for 10 minutes. To generate a new URL, call the
  {@link OpenTok#getArchive OpenTok.getArchive()} or
  {@link OpenTok#listArchives OpenTok.listArchives()} method.
  
  @see {@link OpenTok#deleteArchive OpenTok.deleteArchive()}
  @see {@link OpenTok#getArchive OpenTok.getArchive()}
  @see {@link OpenTok#startArchive OpenTok.startArchive()}
  @see {@link OpenTok#stopArchive OpenTok.stopArchive()}
  @see {@link OpenTok#listArchives OpenTok.listArchives()}
  
  @class Archive