When I try to get the possible children for a nodeType like topic using nodeType.contentMatch.edge it will only returned the required title node and ignore the rest.
Is there a way around this or a way to get all possible content from the schema aside from contentMatch?
A content match represents a position in the node’s content expression. nodeType.contentMatch will give you the position at the start which, in your case, indeed only allows title. You can move forward past the title by following that edge, to get a match position that allows shortdesc, prolog, or body.