debian-mirror-gitlab/doc/user/profile/achievements.md
2023-06-20 00:43:36 +05:30

235 lines
6.4 KiB
Markdown

---
stage: Data Stores
group: Tenant Scale
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
---
# Achievements (Experiment) **(FREE)**
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/113156) in GitLab 15.10 [with a flag](../../administration/feature_flags.md) named `achievements`. Disabled by default.
FLAG:
On self-managed GitLab, by default this feature is not available. To make it available,
ask an administrator to [enable the feature flag](../../administration/feature_flags.md) named `achievements`.
The feature is not ready for production use.
Achievements are a way to reward users for their activity on GitLab.
As a namespace maintainer or owner, you can create custom achievements for specific contributions, which you can award to or revoke from users based on your criteria.
As a user, you can collect achievements to highlight your contributions to different projects or groups on your profile.
An achievement consists of a name, a description, and an avatar.
![Achievements on user profile page](img/user_profile_achievements_v15_11.png)
This feature is an Experiment.
For more information about planned work, see [epic 9429](https://gitlab.com/groups/gitlab-org/-/epics/9429).
Tell us about your use cases by leaving comments in the epic.
## Types of achievement
Programmatically, there is only one way to create, award, revoke, or delete achievements.
Practically, you can differentiate between achievements that are awarded:
- Once and irrevocable. For example, a "First contribution merged" achievement.
- Once and revocable. For example, a "Core team member" achievement.
- Multiple times. For example, a "Contributor of the month" achievement.
## View a user's achievements
You can view a user's achievements on their profile page.
Prerequisites:
- The user profile must be public.
- You must be a member of the namespace awarding the achievement, or the namespace must be public.
To view a user's achievements:
1. Go to the user's profile page.
1. Below the user's avatar, see their achievements.
1. To view details about an achievement, hover over it.
It displays the following information:
- Name of the achievement
- Description of the achievement
- Date when the achievement was awarded to the user
- Namespace that awarded the achievement
To retrieve a list of a user's achievements, query the [`user` GraphQL type](../../api/graphql/reference/index.md#user).
```graphql
query {
user(username: "<username>") {
userAchievements {
nodes {
achievement {
name
description
avatarUrl
namespace {
fullPath
name
}
}
}
}
}
}
```
## Create an achievement
You can create custom achievements to award for specific contributions.
Prerequisites:
- You must have the Maintainer or Owner role for the namespace.
To create an achievement, call the [`achievementsCreate` GraphQL mutation](../../api/graphql/reference/index.md#mutationachievementscreate).
```graphql
mutation achievementsCreate($file: Upload!) {
achievementsCreate(
input: {
namespaceId: "gid://gitlab/Namespace/<namespace id>",
name: "<name>",
description: "<description>",
avatar: $file}
) {
errors
achievement {
id
name
description
avatarUrl
}
}
}
```
## Update an achievement
You can change the name, description, and avatar of an achievement at any time.
Prerequisites:
- You must have the Maintainer or Owner role for the namespace.
To update an achievement, call the [`achievementsUpdate` GraphQL mutation](../../api/graphql/reference/index.md#mutationachievementsupdate).
```graphql
mutation achievementsUpdate($file: Upload!) {
achievementsUpdate(
input: {
achievementId: "gid://gitlab/Achievements::Achievement/<achievement id>",
name: "<new name>",
description: "<new description>",
avatar: $file}
) {
errors
achievement {
id
name
description
avatarUrl
}
}
}
```
## Award an achievement
You can award an achievement to a user to recognize their contributions.
The user receives an email notification when they are awarded an achievement.
Prerequisites:
- You must have the Maintainer or Owner role for the namespace.
To award an achievement to a user, call the [`achievementsAward` GraphQL mutation](../../api/graphql/reference/index.md#mutationachievementsaward).
```graphql
mutation {
achievementsAward(input: {
achievementId: "gid://gitlab/Achievements::Achievement/<achievement id>",
userId: "gid://gitlab/User/<user id>" }) {
userAchievement {
id
achievement {
id
name
}
user {
id
username
}
}
errors
}
}
```
## Revoke an achievement
You can revoke a user's achievement if you consider the user no longer meets the awarding criteria.
Prerequisites:
- You must have the Maintainer or Owner role for the namespace.
To revoke an achievement, call the [`achievementsRevoke` GraphQL mutation](../../api/graphql/reference/index.md#mutationachievementsrevoke).
```graphql
mutation {
achievementsRevoke(input: {
userAchievementId: "gid://gitlab/Achievements::UserAchievement/<user achievement id>" }) {
userAchievement {
id
achievement {
id
name
}
user {
id
username
}
revokedAt
}
errors
}
}
```
## Delete an achievement
If you consider you no longer need an achievement, you can delete it.
This will delete all related awarded and revoked instances of the achievement.
Prerequisites:
- You must have the Maintainer or Owner role for the namespace.
To delete an achievement, call the [`achievementsDelete` GraphQL mutation](../../api/graphql/reference/index.md#mutationachievementsdelete).
```graphql
mutation {
achievementsDelete(input: {
achievementId: "gid://gitlab/Achievements::Achievement/<achievement id>" }) {
achievement {
id
name
}
errors
}
}
```
## Hide achievements
If you don't want to display achievements on your profile, you can opt out. To do this:
1. On the top bar, in the upper-right corner, select your avatar.
1. Select **Edit profile**.
1. In the **Main settings** section, clear the **Display achievements on your profile** checkbox.
1. Select **Update profile settings**.