Stream purposes are undocumented
In general the control spec is pretty good about saying what event attributes indicate. One exception are stream purposes which are completely undocumented.
https://gitweb.torproject.org/torspec.git/blob/HEAD:/control-spec.txt#l1411
atagar@morrigan:~/Desktop/tor/torspec$ grep -R "UPLOAD_DESC" ./*
./control-spec.txt: Purpose = "DIR_FETCH" / "UPLOAD_DESC" / "DNS_REQUEST" /
atagar@morrigan:~/Desktop/tor/torspec$ grep -R "DNS_REQUEST" ./*
./control-spec.txt: Purpose = "DIR_FETCH" / "UPLOAD_DESC" / "DNS_REQUEST" /
... etc...
See the StreamStatus above for an example of a nice mapping between attributes and a description.