DAAP - Content Codes Request
            This request serves to return the list of content codes in use
                by the server. This allows the server to be updated to contain
                new fields and older clients can still connect without trouble.
                In fact, this also allowed us to decode the entirety of the protocol
                very easily. 
            Back to URI List. 
            Sample Request
            GET /content-codes HTTP/1.1
Host: daap.example.com
Client-DAAP-Version: 1.0
User-Agent: iTunes/4.0 (Macintosh; N; PPC)
Accept-Language: en-us, en;q=0.93, [many more]
Accept-Encoding: gzip 
            Sample Response
            HTTP/1.1 200 OK
Date: Thu, 01 May 2003 18:00:29 GMT
DAAP-Server: iTunes/4.0 (Mac OS X)
Content-Type: application/x-dmap-tagged
Content-Length: 1208
Content-Encoding: gzip 
            Content Codes
            The dmap.contentcodesresponse ('mccr')
                is the root container for the content codes response. It contains
                a dmap.status ('mstt') field and several dmap.dictionary ('mdcl')
                chunks that actually contain the information we're after. 
            Each of the dmap.dictionary chunks contains the following chunks: 
            
                
                    | name | 
                    type | 
                    description | 
                 
                
                    | dmap.contentcodesnumber | 
                    mcnm | 
                    Four-letter chunk type* | 
                 
                
                    | dmap.contentcodesname | 
                    mcna | 
                    Name of the type, such as "dmap.status" | 
                 
                
                    | dmap.contentcodestype | 
                    mcty | 
                    Type of data contained within (see below) | 
                 
             
            *the content types actually dictate that we show the dmap.contentcodesnumber as
                a number, but I have delibrately shown it as a string to make
                it easier to read. 
            dmap.contentcodesresponse = {
  dmap.status = 200
  dmap.dictionary = {
    dmap.contentcodesnumber = "miid"
    dmap.contentcodesname = "dmap.itemid"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "minm"
    dmap.contentcodesname = "dmap.itemname"
    dmap.contentcodestype = 9
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mikd"
    dmap.contentcodesname = "dmap.itemkind"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mper"
    dmap.contentcodesname = "dmap.persistentid"
    dmap.contentcodestype = 7
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mcon"
    dmap.contentcodesname = "dmap.container"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mcti"
    dmap.contentcodesname = "dmap.containeritemid"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mpco"
    dmap.contentcodesname = "dmap.parentcontainerid"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mstt"
    dmap.contentcodesname = "dmap.status"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "msts"
    dmap.contentcodesname = "dmap.statusstring"
    dmap.contentcodestype = 9
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mimc"
    dmap.contentcodesname = "dmap.itemcount"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mctc"
    dmap.contentcodesname = "dmap.containercount"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mrco"
    dmap.contentcodesname = "dmap.returnedcount"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mtco"
    dmap.contentcodesname = "dmap.specifiedtotalcount"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mlcl"
    dmap.contentcodesname = "dmap.listing"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mlit"
    dmap.contentcodesname = "dmap.listingitem"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mbcl"
    dmap.contentcodesname = "dmap.bag"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mdcl"
    dmap.contentcodesname = "dmap.dictionary"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "msrv"
    dmap.contentcodesname = "dmap.serverinforesponse"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "msau"
    dmap.contentcodesname = "dmap.authenticationmethod"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mslr"
    dmap.contentcodesname = "dmap.loginrequired"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mpro"
    dmap.contentcodesname = "dmap.protocolversion"
    dmap.contentcodestype = 11
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "msal"
    dmap.contentcodesname = "dmap.supportsautologout"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "msup"
    dmap.contentcodesname = "dmap.supportsupdate"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mspi"
    dmap.contentcodesname = "dmap.supportspersistentids"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "msex"
    dmap.contentcodesname = "dmap.supportsextensions"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "msbr"
    dmap.contentcodesname = "dmap.supportsbrowse"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "msqy"
    dmap.contentcodesname = "dmap.supportsquery"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "msix"
    dmap.contentcodesname = "dmap.supportsindex"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "msrs"
    dmap.contentcodesname = "dmap.supportsresolve"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mstm"
    dmap.contentcodesname = "dmap.timeoutinterval"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "msdc"
    dmap.contentcodesname = "dmap.databasescount"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mlog"
    dmap.contentcodesname = "dmap.loginresponse"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mlid"
    dmap.contentcodesname = "dmap.sessionid"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mupd"
    dmap.contentcodesname = "dmap.updateresponse"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "musr"
    dmap.contentcodesname = "dmap.serverrevision"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "muty"
    dmap.contentcodesname = "dmap.updatetype"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mudl"
    dmap.contentcodesname = "dmap.deletedidlisting"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mccr"
    dmap.contentcodesname = "dmap.contentcodesresponse"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mcnm"
    dmap.contentcodesname = "dmap.contentcodesnumber"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mcna"
    dmap.contentcodesname = "dmap.contentcodesname"
    dmap.contentcodestype = 9
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "mcty"
    dmap.contentcodesname = "dmap.contentcodestype"
    dmap.contentcodestype = 3
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "apro"
    dmap.contentcodesname = "daap.protocolversion"
    dmap.contentcodestype = 11
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "avdb"
    dmap.contentcodesname = "daap.serverdatabases"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "abro"
    dmap.contentcodesname = "daap.databasebrowse"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "abal"
    dmap.contentcodesname = "daap.browsealbumlisting"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "abar"
    dmap.contentcodesname = "daap.browseartistlisting"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "abcp"
    dmap.contentcodesname = "daap.browsecomposerlisting"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "abgn"
    dmap.contentcodesname = "daap.browsegenrelisting"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "adbs"
    dmap.contentcodesname = "daap.databasesongs"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asal"
    dmap.contentcodesname = "daap.songalbum"
    dmap.contentcodestype = 9
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asar"
    dmap.contentcodesname = "daap.songartist"
    dmap.contentcodestype = 9
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asbt"
    dmap.contentcodesname = "daap.songbeatsperminute"
    dmap.contentcodestype = 3
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asbr"
    dmap.contentcodesname = "daap.songbitrate"
    dmap.contentcodestype = 3
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "ascm"
    dmap.contentcodesname = "daap.songcomment"
    dmap.contentcodestype = 9
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asco"
    dmap.contentcodesname = "daap.songcompilation"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "ascp"
    dmap.contentcodesname = "daap.songcomposer"
    dmap.contentcodestype = 9
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asda"
    dmap.contentcodesname = "daap.songdateadded"
    dmap.contentcodestype = 10
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asdm"
    dmap.contentcodesname = "daap.songdatemodified"
    dmap.contentcodestype = 10
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asdc"
    dmap.contentcodesname = "daap.songdisccount"
    dmap.contentcodestype = 3
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asdn"
    dmap.contentcodesname = "daap.songdiscnumber"
    dmap.contentcodestype = 3
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asdb"
    dmap.contentcodesname = "daap.songdisabled"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "aseq"
    dmap.contentcodesname = "daap.songeqpreset"
    dmap.contentcodestype = 9
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asfm"
    dmap.contentcodesname = "daap.songformat"
    dmap.contentcodestype = 9
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asgn"
    dmap.contentcodesname = "daap.songgenre"
    dmap.contentcodestype = 9
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asdt"
    dmap.contentcodesname = "daap.songdescription"
    dmap.contentcodestype = 9
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asrv"
    dmap.contentcodesname = "daap.songrelativevolume"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "assr"
    dmap.contentcodesname = "daap.songsamplerate"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "assz"
    dmap.contentcodesname = "daap.songsize"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asst"
    dmap.contentcodesname = "daap.songstarttime"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "assp"
    dmap.contentcodesname = "daap.songstoptime"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "astm"
    dmap.contentcodesname = "daap.songtime"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "astc"
    dmap.contentcodesname = "daap.songtrackcount"
    dmap.contentcodestype = 3
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "astn"
    dmap.contentcodesname = "daap.songtracknumber"
    dmap.contentcodestype = 3
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asur"
    dmap.contentcodesname = "daap.songuserrating"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asyr"
    dmap.contentcodesname = "daap.songyear"
    dmap.contentcodestype = 3
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asdk"
    dmap.contentcodesname = "daap.songdatakind"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "asul"
    dmap.contentcodesname = "daap.songdataurl"
    dmap.contentcodestype = 9
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "aply"
    dmap.contentcodesname = "daap.databaseplaylists"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "abpl"
    dmap.contentcodesname = "daap.baseplaylist"
    dmap.contentcodestype = 1
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "apso"
    dmap.contentcodesname = "daap.playlistsongs"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "arsv"
    dmap.contentcodesname = "daap.resolve"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "arif"
    dmap.contentcodesname = "daap.resolveinfo"
    dmap.contentcodestype = 12
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "aeNV"
    dmap.contentcodesname = "com.apple.itunes.norm-volume"
    dmap.contentcodestype = 5
  }
  dmap.dictionary = {
    dmap.contentcodesnumber = "aeSP"
    dmap.contentcodesname = "com.apple.itunes.smart-playlist"
    dmap.contentcodestype = 1
  }
}
            Content Types
            The following table describes the type numbers as provided in
                the above: 
            
                
                    | type | 
                    name | 
                    description | 
                 
                
                    | 1 | 
                    char | 
                    1-byte value, can be used as a boolean
                        (true if the value is present, false if not) | 
                 
                
                    | 3 | 
                    short | 
                    2-byte integer | 
                 
                
                    | 5 | 
                    long | 
                    4-byte integer | 
                 
                
                    | 7 | 
                    long long | 
                    8-byte integer, tends to be represented
                        in hex rather than numerical form | 
                 
                
                    | 9 | 
                    string | 
                    string of characters (UTF-8) | 
                 
                
                    | 10 | 
                    date | 
                    4-byte integer with seconds since
                        1970 (standard UNIX time format) | 
                 
                
                    | 11 | 
                    version | 
                    2-bytes major version, next byte minor
                        version, last byte patchlevel | 
                 
                
                    | 12 | 
                    container | 
                    contains a series of other chunks, one after the other | 
                 
             
             |