Docs / Strand / connectors/gcp-firestore
Google Firestore
Direction: Read / Write | Type: gcp.firestore
Google Firestore connector for NoSQL document database operations: create, read, and query documents.
Required Permissions#
The service account must have the following IAM permissions (or predefined roles):
| Operation | Required Permissions | Predefined Role |
|---|---|---|
set |
datastore.entities.create, datastore.entities.update |
Cloud Datastore User |
get |
datastore.entities.get |
Cloud Datastore Viewer |
query |
datastore.entities.list, datastore.entities.get |
Cloud Datastore Viewer |
| All | All of the above | Cloud Datastore User |
Tip: The Cloud Datastore User role covers all read and write operations. Use Cloud Datastore Viewer for read-only workflows.
Operations#
| Operation | Direction | Description |
|---|---|---|
set |
Write | Create or overwrite a document |
get |
Read | Retrieve a document by ID |
query |
Read | Query documents in a collection |
Connector Configuration#
| Field | Required | Default | Description |
|---|---|---|---|
| Authentication Type | No | api_key |
Uses explicit credentials (the fields below). |
| Project ID | Yes | - | Google Cloud project ID |
| Credentials JSON | Conditional | - | Service account JSON credentials (encrypted). Required when Authentication Type is api_key |
| Database ID | No | (default) |
Firestore database ID |
Node Configuration#
| Field | Required | Description |
|---|---|---|
| Operation | Yes | set, get, or query |
| Collection | Yes | Firestore collection name |
| Document ID | Depends | Required for get, optional for set (auto-generated if omitted) |
| Limit | No | Query result limit (default: 10) |
Output#
set#
json
{
"success": true,
"status": "completed",
"data": {
"collection": "users",
"document_id": "abc123"
},
"service": "gcp.firestore",
"operation": "set"
}
get#
json
{
"success": true,
"status": "completed",
"data": {
"collection": "users",
"document_id": "abc123",
"document": {"name": "John", "email": "john@example.com"}
},
"service": "gcp.firestore",
"operation": "get"
}
Access the document:
jinja2
{{ payload.data.document.name }}
{{ payload.data.document.email }}
query#
json
{
"success": true,
"status": "completed",
"data": {
"collection": "users",
"results": [{"name": "John"}, {"name": "Jane"}],
"count": 2
},
"service": "gcp.firestore",
"operation": "query"
}
Example#
Connector Setup:
json
{
"project_id": "my-gcp-project",
"credentials_json": "{...service account JSON...}"
}
Node Configuration (write):
- Operation:
set - Collection:
events - Document ID:
{{ payload.event_id }}
Node Configuration (read):
- Operation:
get - Collection:
config - Document ID:
app-settings
Node Configuration (query):
- Operation:
query - Collection:
users - Limit:
25
Tendrl