---
title: "Update a contributor"
method: PATCH
path: "/nodes/{node_id}/contributors/{user_id}/"
tags: ["Nodes"]
---

# Update a contributor

`PATCH /nodes/{node_id}/contributors/{user_id}/`

Updates a contributor by setting the values of the attributes specified in the request body. Any unspecified attributes will be left unchanged.

Contributors can be updated with either a **PUT** or **PATCH** request. Since this endpoint has no mandatory attributes, PUT and PATCH are functionally the same.
#### Permissions
Only project administrators can update the contributors on a node.
#### Returns
Returns a JSON object with a `data` key containing the new representation of the updated contributor, if the request is successful.

If the request is unsuccessful, an `errors` key containing information about the failure will be returned. Refer to the [list of error codes](#tag/Errors-and-Error-Codes) to understand why this request may have failed.

If the given user is not already in the contributor list, a 404 Not Found error will be returned. A node must always have at least one admin, and any attempt to downgrade the permissions of a sole admin will result in a 400 Bad Request error.

## Path parameters

- `node_id` string, required
- `user_id` string, required

## Request body

- object
  - `id` string — The identifier of the contributor entity. Contributor identifiers have the form {node_id}-{user_id}.
  - `type` string, required — The type identifier of the contributor entity (`contributors`).
  - `attributes` object — The properties of the contributor entity.
    - `bibliographic` boolean — Whether or not the contributor will be included in citations for the node. The default value is true.
    - `index` integer — The position of this contributor in the list of project contributors and in project citations.
    - `permission` 'read' | 'write' | 'admin' — The permission level of the contributor. The default value is 'write'.
    - `unregistered_contributor` string — The assigned name of the contributor if the contributor has not yet claimed their account.
  - `relationships` object, required — URLs to other entities or entity collections that have a relationship to the contributor entity.
    - `node` string, required — A relationship to the node that was created for the preprint, or from which the preprint was created.
    - `user` string, required — A relationship to the file that is designated as the preprint's primary file, or the manuscript of the preprint.
  - `links` object — URLs to alternative representations of the contributor entity.
    - `self` string, URL — A link to the the canonical API endpoint for the contributor.

## Response `200`

OK

---

[API](https://skmtc.net/osf/apis/osf-apiv2-documentation.md) · [All operations](https://skmtc.net/osf/apis/osf-apiv2-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/osf/osf-apiv2-documentation/versions/ca701048eb0d/schema)
