Skip to main content
Both PUT and PATCH update an existing document by ID. You only need to send the fields you want to change — unmentioned fields are left unchanged.

PUT /api/data/:collectionName/:id

Typically used for full logical updates. Send only the fields you intend to change; fields you omit are left unchanged.

PATCH /api/data/:collectionName/:id

Explicitly signals a partial update. Semantically equivalent to PUT in urBackend — both merge changes into the existing document without replacing unmentioned fields.
Nested field updates using dot notation are supported. For example, sending "meta.views": 105 updates only the views key inside the meta object without affecting any other keys in meta.

Required Header

x-api-key: sk_live_… by default. pk_live_… is accepted only when the collection has RLS enabled and the request includes Authorization: Bearer <accessToken>.

Path Parameters

collectionName
string
required
The name of the collection containing the document.
id
string
required
The MongoDB ObjectId string of the document to update.

Request Body

A JSON object containing the fields to update and their new values.
The owner field (e.g., userId) is immutable. If you include it in the request body with a different value, the request is rejected with 403 Owner field immutable. Remove it from the update body entirely.

RLS Behavior

When using pk_live with RLS enabled, urBackend fetches the existing document and compares its owner field against the authenticated user’s ID. If they don’t match, the request is rejected with 403.

Response Fields

success
boolean
true when the update succeeded.
data
object
The updated document with all current field values.
message
string
Human-readable status message.

Code Examples

const postId = '64fd1234abcd5678ef901234';

const res = await fetch(
  `https://api.ub.bitbros.in/api/data/posts/${postId}`,
  {
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': 'sk_live_YOUR_SECRET_KEY'
    },
    body: JSON.stringify({
      title: 'Updated title',
      'meta.views': 105   // Dot notation updates nested fields safely
    })
  }
);

const { success, data } = await res.json();

Success Response

{
  "success": true,
  "data": {
    "_id": "64fd1234abcd5678ef901234",
    "title": "Updated title",
    "body": "Content goes here...",
    "meta": {
      "views": 105,
      "likes": 12
    },
    "userId": "64fd0000abcd5678ef900001"
  },
  "message": "Document updated successfully"
}

Errors

StatusCause
400 Bad RequestSchema validation failed
401 UnauthorizedMissing/invalid API key, or missing Bearer token on an RLS-enabled collection
403 Forbiddenpk_live without RLS, owner field mismatch, or attempt to change the owner field
404 Not FoundNo document with that ID exists