Kantumrobot
Kantumrobot

Reputation: 137

BatchWrite REST API JSON Structure for FireStore

I know how to compose JSON when you want to create a single document on FireStore.

# Query String
"updateMask.fieldPaths": [
"`price`",
"`status`"
]
# Body
"fields": {
"price": {
"stringValue": "165.00"
},
"status": {
"stringValue": "active"
}
}

But when it comes to BatchWrite I cannot understand what the doc implies https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.documents/batchWrite

Currently I'm doing this with Python library I deployed on cloud computing resource(pipedream) but I want to do this within Make.com and its "Make API Call" module so I need to know the curl style or REST JSON syntax.

I'm assuming fields go to "writes" but not sure what goes to "labels" object. Exactly what's the write structure for this call?

Upvotes: 3

Views: 125

Answers (1)

Kantumrobot
Kantumrobot

Reputation: 137

{
  "writes": [
    {
      "update": {
        "name": "projects/project_id/databases/(default)/documents/service_order/352003090342435.5f357270173e8c70878.-9486573",
        "fields": {
          "managed_by": {
            "booleanValue": "false"
          },
          "location2": {
            "booleanValue": "false"
          },
          "made_by": {
            "stringValue": "352003090342435.5eda4f3c17284c58460.90921842"
          },
          "phone2": {
            "stringValue": "0665439307"
          },
          "state": {
            "stringValue": "confirm"
          },
          "write_date": {
            "stringValue": "1597664391000"
          },
          "made_by_name": {
            "stringValue": "FaridBenabdallah"
          },
          "description": {
            "stringValue": "e1"
          },
          "accepted_offer": {
            "booleanValue": "false"
          },
          "id": {
            "stringValue": "352003090342435.5f357270173e8c70878.-9486573"
          },
          "location1": {
            "stringValue": "352003090342435.5f3572a0173e8c7c336.-8281409"
          },
          "date_order": {
            "booleanValue": "false"
          },
          "order_type": {
            "stringValue": "Minuiserie"
          },
          "phone1": {
            "stringValue": "0657331995"
          }
        }
      },
      "updateMask": {
        "fieldPaths": [
          "managed_by",
          "location2",
          "made_by",
          "phone2",
          "state",
          "write_date",
          "made_by_name",
          "description",
          "accepted_offer",
          "id",
          "location1",
          "date_order",
          "order_type",
          "phone1"
        ]
      }
    }
  ]
}

This another stackoverflow article helped me

If there is null you need to change the intended value type to nullValue.

Upvotes: 3

Related Questions