What is the convention around derivative information?

I am working on a service that provides information about a few related entities, somewhat like a database. Suppose that there's calls to retrieve information about a school:

service MySchool {
    rpc GetClassRoom (ClassRoomRequest) returns (ClassRoom);
    rpc GetStudent (StudentRequest) returns (Student);

Now, suppose that I want to find out a class room's information, I'd receive a proto that looks like so:

message ClassRoom {
    string id = 1;
    string address = 2;
    string teacher = 3;

Sometimes I also want to know all of the students of the classroom. I am struggling to think which is the better design pattern.

Option A) Add an extra rpc like so: rpc GetClassRoomStudents (ClassRoomRequest) returns (ClassRoomStudents), where ClassRoomStudents has a single field repeated Student students. This technique requires more than one call to get all the information that we want (and many if we wanted to know information for more than one classroom).

Option B) Add an extra repeated Student students field to the ClassRoom proto, and B') Fill it up only when necessary, or B") Fill it up whenever the server receives a GetClassRoom call. This may sometimes fetch extra information, or lead to ambiguity according to what fields are filled up.

I am not sure what's the best / most conventional way of dealing with this. How have some of you dealt with this?