Skip to content

Add create achievement GraphQL mutation

What does this MR do and why?

Checkout the issue/epic for some more background: #385381 (closed) / &9429

This merge request introduces the AchievementsCreate mutation, along with the AchievementType and exposes achievements against NamespaceType.

Screenshots or screen recordings

image

How to set up and validate locally

To create an achievement (you need to be a group maintainer+):

You will need to send a GraphQL request containing a file using something like Postman.

URL: http://gdk.test:3000/api/graphql
Method: POST
Headers: Be sure to add a PRIVATE-TOKEN with maintainer+ access
Body: form-data:
operations: {"query": "mutation achievementsCreate($file: Upload!) { achievementsCreate(input: { namespaceId: \"gid://gitlab/Namespace/31\" name: \"Leading organization\" revokeable: true avatar: $file }) { errors achievement { id avatarUrl } } }", "variables": {"file": null}}
map: {"0": ["variables.file"]}
0: select file from the dropdown then select the image file you want to use as the avatar/badge

image

You can query using GraphQL explorer, but won't be able to create new achievements as I don't believe there is a way to upload files at the moment.

Use http://gdk.test:3000/-/graphql-explorer

query{
  namespace(fullPath: "flightjs") {
    achievements {
      nodes {
        id
        name
        avatar
        description
        revokeable
      }
    }
  }
}

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Lee Tickett

Merge request reports