A Topic
is a label for grouping CourseWork
and CourseWorkMaterial
stream items within a course. A Topic
is typically used
to categorize these items by similarity, such as the week the items are assigned
or their subject. Users can visually organize and filter stream items in the Classworkview of the Classroom UI.
Each Topic
is identified by a unique ID assigned by the server. The Topic
resource also contains the following:
-
name: The display name shown in the Classroom UI -
updateTime: The time theTopicwas last updated -
courseId: The ID of the course that theTopicis associated with
Create a Topic
You can create a new Topic
in a course using the topics.create()
method,
as shown in the following sample:
Java
Python
topic
=
{
"name"
:
'Example Topic'
}
response
=
service
.
courses
()
.
topics
()
.
create
(
courseId
=
< course
ID
or
alias
> ,
body
=
topic
)
.
execute
()
print
(
'Topic created: '
,
response
[
'name'
])
The name
field is always required and must be a non-empty string. All other
fields are optional.
Retrieve Topic details
You can retrieve a specific Topic
by ID with the topics.get()
method, as
shown in the following sample:
Java
Python
response
=
service
.
courses
()
.
topics
()
.
get
(
courseId
=
< course
ID
or
alias
> ,
id
=
< topic
ID
> )
.
execute
()
print
(
'
{0}
(
{1}
)'
.
format
(
response
[
'name'
],
response
[
'topicId'
]))
Use the topics.list()
method to retrieve all Topic
s in a course, as shown
in the following sample:
Java
Python
topics
=
[]
page_token
=
None
while
True
:
response
=
service
.
courses
()
.
topics
()
.
list
(
pageToken
=
page_token
,
pageSize
=
30
,
courseId
=
< course
ID
or
alias
> )
.
execute
()
topics
.
extend
(
response
.
get
(
'topic'
,
[]))
page_token
=
response
.
get
(
'nextPageToken'
,
None
)
if
not
page_token
:
break
if
not
topics
:
print
(
'No topics found.'
)
else
:
print
(
'Topics:'
)
for
topic
in
topics
:
print
(
'
{0}
(
{1}
)'
.
format
(
topic
[
'name'
],
topic
[
'topicId'
]))
Update a Topic
You can update an existing Topic
name
with the topics.patch()
method, as
shown in the following sample:
Java
Python
topic
=
{
"name"
:
"New Topic Name"
}
response
=
service
.
courses
()
.
topics
()
.
patch
(
courseId
=
< course
ID
or
alias
> ,
id
=
< topic
ID
> ,
updateMask
=
"name"
,
body
=
topic
)
.
execute
()
print
(
'
{0}
(
{1}
)'
.
format
(
response
[
'name'
],
response
[
'topicId'
]))
The Topic
id
and updateTime
fields are server-generated and can't be
updated with the API.
Delete a Topic
You can delete an existing Topic
with the topics.delete()
method, as shown
in the following sample:

