While any developer can make requests to the Google Classroom API, some
Google Classroom features are only available to certain users. Each feature
can have different requirements, such as having a certain Google Workspace for Education license type.
For a detailed breakdown of features at each Google Workspace for Education license level, see the
[editions comparison page](https://edu.google.com/intl/ALL_us/workspace-for-education/editions/compare-editions/).

> [!IMPORTANT]
> **Key Term:** An **eligible** user has the **capability** to use a certain Classroom feature if they meet the feature requirements.

> [!IMPORTANT]
> **Key Point:** Capability is determined separately for each user and can change over time. Capability eligibility for some features of the Classroom API might differ from the corresponding features in the Google Classroom app. For example, certain [license requirements](https://developers.google.com/workspace/classroom/rubrics/limitations#license-requirements) apply when creating, modifying, or deleting rubrics with the API.

## Features with eligibility requirements

<br />

The following Classroom API features are only available to eligible
users:

- Creating and modifying [Classroom add-on](https://developers.google.com/workspace/classroom/add-ons) attachments.
- Modifying [grading period settings](https://developers.google.com/workspace/classroom/grading-periods/manage-grading-periods#licensing_requirements).
- Creating, modifying, and deleting [rubrics](https://developers.google.com/workspace/classroom/rubrics/limitations#license-requirements).

## Determine user capabilities

Requests to Classroom API are made on behalf of individual users.
Therefore, you should check whether a user has the appropriate capabilities
before issuing API requests with eligibility requirements.

> [!IMPORTANT]
> **Key Point:** Consider checking user capabilities proactively so you can tailor your product's appearance or behavior to match the Classroom features that they can access.

To determine whether a user has a particular capability, make an API request to
the [`checkUserCapability`](https://developers.google.com/workspace/classroom/reference/rest/v1/userProfiles/checkUserCapability) method. Include the appropriate [`Capability`](https://developers.google.com/workspace/classroom/reference/rest/v1/userProfiles/checkUserCapability#capability) type
for the Classroom feature you intend to use. Specify the
appropriate `Capability` for each feature:

| To see if the user... | `Capability` |
|---|---|
| Can [create](https://developers.google.com/workspace/classroom/reference/rest/v1/courses.courseWork.addOnAttachments/create) or [modify](https://developers.google.com/workspace/classroom/reference/rest/v1/courses.courseWork.addOnAttachments/patch) a Classroom add-on attachment associated with the Google Cloud project of the [OAuth client ID](https://support.google.com/cloud/answer/6158849) used to make the request | `CREATE_ADD_ON_ATTACHMENT` |
| Can [modify](https://developers.google.com/workspace/classroom/reference/rest/v1/courses/updateGradingPeriodSettings) grading period settings | `UPDATE_GRADING_PERIOD_SETTINGS` |
| Can [create](https://developers.google.com/workspace/classroom/reference/rest/v1/courses.courseWork.rubrics/create), [modify](https://developers.google.com/workspace/classroom/reference/rest/v1/courses.courseWork.rubrics/patch), or [delete](https://developers.google.com/workspace/classroom/reference/rest/v1/courses.courseWork.rubrics/delete) a rubric | `CREATE_RUBRIC` |

Next, check the `allowed` field in the response. If `allowed` is `true`, then
the user has access to the chosen `Capability`. You can then make API requests
related the `Capability` on behalf of the user.

> [!IMPORTANT]
> **Important:** Even when a user is eligible, it's still possible for API requests that depend on the eligibility to fail. Eligibility implies that a user can make use of a Classroom feature, not that a specific request will succeed.