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 |
api_key for explicit credentials, role to use Application Default Credentials (ADC) |
| 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 |
Role-Based Authentication
When using role authentication, the connector uses Application Default Credentials (ADC) from the host environment. No explicit service account JSON is needed.
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) |
| Filters | No | Query filters (for query operation) |
| 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": "[email protected]"}
},
"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...}"
}
Connector Setup (role-based):
json
{
"auth_type": "role",
"project_id": "my-gcp-project"
}
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