Document class

In Cloud Firestore, the unit of storage is the document. A document is a lightweight record that contains fields, which map to values. Each document is identified by a name.

To get more information about Document, see:

> Warning: This resource creates a Firestore Document on a project that already has a Firestore database. If you haven't already created it, you may create a gcp.firestore.Database resource with type set to "FIRESTORE_NATIVE" and locationId set to your chosen location. If you wish to use App Engine, you may instead create a gcp.appengine.Application resource with databaseType set to "CLOUD_FIRESTORE". Your Firestore location will be the same as the App Engine location specified.

Example Usage

Firestore Document Basic

import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
import * as time from "@pulumiverse/time";

const project = new gcp.organizations.Project("project", {
    projectId: "project-id",
    name: "project-id",
    orgId: "123456789",
    deletionPolicy: "DELETE",
});
const wait60Seconds = new time.Sleep("wait_60_seconds", {createDuration: "60s"}, {
    dependsOn: [project],
});
const firestore = new gcp.projects.Service("firestore", {
    project: project.projectId,
    service: "firestore.googleapis.com",
}, {
    dependsOn: [wait60Seconds],
});
const database = new gcp.firestore.Database("database", {
    project: project.projectId,
    name: "(default)",
    locationId: "nam5",
    type: "FIRESTORE_NATIVE",
}, {
    dependsOn: [firestore],
});
const mydoc = new gcp.firestore.Document("mydoc", {
    project: project.projectId,
    database: database.name,
    collection: "somenewcollection",
    documentId: "my-doc-id",
    fields: "{\"something\":{\"mapValue\":{\"fields\":{\"akey\":{\"stringValue\":\"avalue\"}}}}}",
});
import pulumi
import pulumi_gcp as gcp
import pulumiverse_time as time

project = gcp.organizations.Project("project",
    project_id="project-id",
    name="project-id",
    org_id="123456789",
    deletion_policy="DELETE")
wait60_seconds = time.Sleep("wait_60_seconds", create_duration="60s",
opts = pulumi.ResourceOptions(depends_on=[project]))
firestore = gcp.projects.Service("firestore",
    project=project.project_id,
    service="firestore.googleapis.com",
    opts = pulumi.ResourceOptions(depends_on=[wait60_seconds]))
database = gcp.firestore.Database("database",
    project=project.project_id,
    name="(default)",
    location_id="nam5",
    type="FIRESTORE_NATIVE",
    opts = pulumi.ResourceOptions(depends_on=[firestore]))
mydoc = gcp.firestore.Document("mydoc",
    project=project.project_id,
    database=database.name,
    collection="somenewcollection",
    document_id="my-doc-id",
    fields="{\"something\":{\"mapValue\":{\"fields\":{\"akey\":{\"stringValue\":\"avalue\"}}}}}")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
using Time = Pulumiverse.Time;

return await Deployment.RunAsync(() =>
{
    var project = new Gcp.Organizations.Project("project", new()
    {
        ProjectId = "project-id",
        Name = "project-id",
        OrgId = "123456789",
        DeletionPolicy = "DELETE",
    });

    var wait60Seconds = new Time.Sleep("wait_60_seconds", new()
    {
        CreateDuration = "60s",
    }, new CustomResourceOptions
    {
        DependsOn =
        {
            project,
        },
    });

    var firestore = new Gcp.Projects.Service("firestore", new()
    {
        Project = project.ProjectId,
        ServiceName = "firestore.googleapis.com",
    }, new CustomResourceOptions
    {
        DependsOn =
        {
            wait60Seconds,
        },
    });

    var database = new Gcp.Firestore.Database("database", new()
    {
        Project = project.ProjectId,
        Name = "(default)",
        LocationId = "nam5",
        Type = "FIRESTORE_NATIVE",
    }, new CustomResourceOptions
    {
        DependsOn =
        {
            firestore,
        },
    });

    var mydoc = new Gcp.Firestore.Document("mydoc", new()
    {
        Project = project.ProjectId,
        Database = database.Name,
        Collection = "somenewcollection",
        DocumentId = "my-doc-id",
        Fields = "{\"something\":{\"mapValue\":{\"fields\":{\"akey\":{\"stringValue\":\"avalue\"}}}}}",
    });

});
package main

import (
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/firestore"
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/organizations"
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/projects"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
	"github.com/pulumiverse/pulumi-time/sdk/go/time"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		project, err := organizations.NewProject(ctx, "project", &organizations.ProjectArgs{
			ProjectId:      pulumi.String("project-id"),
			Name:           pulumi.String("project-id"),
			OrgId:          pulumi.String("123456789"),
			DeletionPolicy: pulumi.String("DELETE"),
		})
		if err != nil {
			return err
		}
		wait60Seconds, err := time.NewSleep(ctx, "wait_60_seconds", &time.SleepArgs{
			CreateDuration: pulumi.String("60s"),
		}, pulumi.DependsOn([]pulumi.Resource{
			project,
		}))
		if err != nil {
			return err
		}
		firestore2, err := projects.NewService(ctx, "firestore", &projects.ServiceArgs{
			Project: project.ProjectId,
			Service: pulumi.String("firestore.googleapis.com"),
		}, pulumi.DependsOn([]pulumi.Resource{
			wait60Seconds,
		}))
		if err != nil {
			return err
		}
		database, err := firestore.NewDatabase(ctx, "database", &firestore.DatabaseArgs{
			Project:    project.ProjectId,
			Name:       pulumi.String("(default)"),
			LocationId: pulumi.String("nam5"),
			Type:       pulumi.String("FIRESTORE_NATIVE"),
		}, pulumi.DependsOn([]pulumi.Resource{
			firestore2,
		}))
		if err != nil {
			return err
		}
		_, err = firestore.NewDocument(ctx, "mydoc", &firestore.DocumentArgs{
			Project:    project.ProjectId,
			Database:   database.Name,
			Collection: pulumi.String("somenewcollection"),
			DocumentId: pulumi.String("my-doc-id"),
			Fields:     pulumi.String("{\"something\":{\"mapValue\":{\"fields\":{\"akey\":{\"stringValue\":\"avalue\"}}}}}"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    gcp = {
      source = "pulumi/gcp"
    }
    time = {
      source = "pulumi/time"
    }
  }
}

resource "gcp_organizations_project" "project" {
  project_id      = "project-id"
  name            = "project-id"
  org_id          = "123456789"
  deletion_policy = "DELETE"
}
resource "time_sleep" "wait_60_seconds" {
  depends_on      = [gcp_organizations_project.project]
  create_duration = "60s"
}
resource "gcp_projects_service" "firestore" {
  depends_on = [time_sleep.wait_60_seconds]
  project    = gcp_organizations_project.project.project_id
  service    = "firestore.googleapis.com"
}
resource "gcp_firestore_database" "database" {
  depends_on  = [gcp_projects_service.firestore]
  project     = gcp_organizations_project.project.project_id
  name        = "(default)"
  location_id = "nam5"
  type        = "FIRESTORE_NATIVE"
}
resource "gcp_firestore_document" "mydoc" {
  project     = gcp_organizations_project.project.project_id
  database    = gcp_firestore_database.database.name
  collection  = "somenewcollection"
  document_id = "my-doc-id"
  fields      = "{\"something\":{\"mapValue\":{\"fields\":{\"akey\":{\"stringValue\":\"avalue\"}}}}}"
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.organizations.Project;
import com.pulumi.gcp.organizations.ProjectArgs;
import com.pulumiverse.time.Sleep;
import com.pulumiverse.time.SleepArgs;
import com.pulumi.gcp.projects.Service;
import com.pulumi.gcp.projects.ServiceArgs;
import com.pulumi.gcp.firestore.Database;
import com.pulumi.gcp.firestore.DatabaseArgs;
import com.pulumi.gcp.firestore.Document;
import com.pulumi.gcp.firestore.DocumentArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var project = new Project("project", ProjectArgs.builder()
            .projectId("project-id")
            .name("project-id")
            .orgId("123456789")
            .deletionPolicy("DELETE")
            .build());

        var wait60Seconds = new Sleep("wait60Seconds", SleepArgs.builder()
            .createDuration("60s")
            .build(), CustomResourceOptions.builder()
                .dependsOn(project)
                .build());

        var firestore = new Service("firestore", ServiceArgs.builder()
            .project(project.projectId())
            .service("firestore.googleapis.com")
            .build(), CustomResourceOptions.builder()
                .dependsOn(wait60Seconds)
                .build());

        var database = new Database("database", DatabaseArgs.builder()
            .project(project.projectId())
            .name("(default)")
            .locationId("nam5")
            .type("FIRESTORE_NATIVE")
            .build(), CustomResourceOptions.builder()
                .dependsOn(firestore)
                .build());

        var mydoc = new Document("mydoc", DocumentArgs.builder()
            .project(project.projectId())
            .database(database.name())
            .collection("somenewcollection")
            .documentId("my-doc-id")
            .fields("{\"something\":{\"mapValue\":{\"fields\":{\"akey\":{\"stringValue\":\"avalue\"}}}}}")
            .build());

    }
}
resources:
  project:
    type: gcp:organizations:Project
    properties:
      projectId: project-id
      name: project-id
      orgId: '123456789'
      deletionPolicy: DELETE
  wait60Seconds:
    type: time:Sleep
    name: wait_60_seconds
    properties:
      createDuration: 60s
    options:
      dependsOn:
        - ${project}
  firestore:
    type: gcp:projects:Service
    properties:
      project: ${project.projectId}
      service: firestore.googleapis.com
    options:
      dependsOn:
        - ${wait60Seconds}
  database:
    type: gcp:firestore:Database
    properties:
      project: ${project.projectId}
      name: (default)
      locationId: nam5
      type: FIRESTORE_NATIVE
    options:
      dependsOn:
        - ${firestore}
  mydoc:
    type: gcp:firestore:Document
    properties:
      project: ${project.projectId}
      database: ${database.name}
      collection: somenewcollection
      documentId: my-doc-id
      fields: '{"something":{"mapValue":{"fields":{"akey":{"stringValue":"avalue"}}}}}'

Firestore Document Nested Document

import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
import * as time from "@pulumiverse/time";

const project = new gcp.organizations.Project("project", {
    projectId: "project-id",
    name: "project-id",
    orgId: "123456789",
    deletionPolicy: "DELETE",
});
const wait60Seconds = new time.Sleep("wait_60_seconds", {createDuration: "60s"}, {
    dependsOn: [project],
});
const firestore = new gcp.projects.Service("firestore", {
    project: project.projectId,
    service: "firestore.googleapis.com",
}, {
    dependsOn: [wait60Seconds],
});
const database = new gcp.firestore.Database("database", {
    project: project.projectId,
    name: "(default)",
    locationId: "nam5",
    type: "FIRESTORE_NATIVE",
}, {
    dependsOn: [firestore],
});
const mydoc = new gcp.firestore.Document("mydoc", {
    project: project.projectId,
    database: database.name,
    collection: "somenewcollection",
    documentId: "my-doc-id",
    fields: "{\"something\":{\"mapValue\":{\"fields\":{\"akey\":{\"stringValue\":\"avalue\"}}}}}",
});
const subDocument = new gcp.firestore.Document("sub_document", {
    project: project.projectId,
    database: database.name,
    collection: pulumi.interpolate`${mydoc.path}/subdocs`,
    documentId: "bitcoinkey",
    fields: "{\"something\":{\"mapValue\":{\"fields\":{\"ayo\":{\"stringValue\":\"val2\"}}}}}",
});
const subSubDocument = new gcp.firestore.Document("sub_sub_document", {
    project: project.projectId,
    database: database.name,
    collection: pulumi.interpolate`${subDocument.path}/subsubdocs`,
    documentId: "asecret",
    fields: "{\"something\":{\"mapValue\":{\"fields\":{\"secret\":{\"stringValue\":\"hithere\"}}}}}",
});
import pulumi
import pulumi_gcp as gcp
import pulumiverse_time as time

project = gcp.organizations.Project("project",
    project_id="project-id",
    name="project-id",
    org_id="123456789",
    deletion_policy="DELETE")
wait60_seconds = time.Sleep("wait_60_seconds", create_duration="60s",
opts = pulumi.ResourceOptions(depends_on=[project]))
firestore = gcp.projects.Service("firestore",
    project=project.project_id,
    service="firestore.googleapis.com",
    opts = pulumi.ResourceOptions(depends_on=[wait60_seconds]))
database = gcp.firestore.Database("database",
    project=project.project_id,
    name="(default)",
    location_id="nam5",
    type="FIRESTORE_NATIVE",
    opts = pulumi.ResourceOptions(depends_on=[firestore]))
mydoc = gcp.firestore.Document("mydoc",
    project=project.project_id,
    database=database.name,
    collection="somenewcollection",
    document_id="my-doc-id",
    fields="{\"something\":{\"mapValue\":{\"fields\":{\"akey\":{\"stringValue\":\"avalue\"}}}}}")
sub_document = gcp.firestore.Document("sub_document",
    project=project.project_id,
    database=database.name,
    collection=mydoc.path.apply(lambda path: f"{path}/subdocs"),
    document_id="bitcoinkey",
    fields="{\"something\":{\"mapValue\":{\"fields\":{\"ayo\":{\"stringValue\":\"val2\"}}}}}")
sub_sub_document = gcp.firestore.Document("sub_sub_document",
    project=project.project_id,
    database=database.name,
    collection=sub_document.path.apply(lambda path: f"{path}/subsubdocs"),
    document_id="asecret",
    fields="{\"something\":{\"mapValue\":{\"fields\":{\"secret\":{\"stringValue\":\"hithere\"}}}}}")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
using Time = Pulumiverse.Time;

return await Deployment.RunAsync(() =>
{
    var project = new Gcp.Organizations.Project("project", new()
    {
        ProjectId = "project-id",
        Name = "project-id",
        OrgId = "123456789",
        DeletionPolicy = "DELETE",
    });

    var wait60Seconds = new Time.Sleep("wait_60_seconds", new()
    {
        CreateDuration = "60s",
    }, new CustomResourceOptions
    {
        DependsOn =
        {
            project,
        },
    });

    var firestore = new Gcp.Projects.Service("firestore", new()
    {
        Project = project.ProjectId,
        ServiceName = "firestore.googleapis.com",
    }, new CustomResourceOptions
    {
        DependsOn =
        {
            wait60Seconds,
        },
    });

    var database = new Gcp.Firestore.Database("database", new()
    {
        Project = project.ProjectId,
        Name = "(default)",
        LocationId = "nam5",
        Type = "FIRESTORE_NATIVE",
    }, new CustomResourceOptions
    {
        DependsOn =
        {
            firestore,
        },
    });

    var mydoc = new Gcp.Firestore.Document("mydoc", new()
    {
        Project = project.ProjectId,
        Database = database.Name,
        Collection = "somenewcollection",
        DocumentId = "my-doc-id",
        Fields = "{\"something\":{\"mapValue\":{\"fields\":{\"akey\":{\"stringValue\":\"avalue\"}}}}}",
    });

    var subDocument = new Gcp.Firestore.Document("sub_document", new()
    {
        Project = project.ProjectId,
        Database = database.Name,
        Collection = mydoc.Path.Apply(path => $"{path}/subdocs"),
        DocumentId = "bitcoinkey",
        Fields = "{\"something\":{\"mapValue\":{\"fields\":{\"ayo\":{\"stringValue\":\"val2\"}}}}}",
    });

    var subSubDocument = new Gcp.Firestore.Document("sub_sub_document", new()
    {
        Project = project.ProjectId,
        Database = database.Name,
        Collection = subDocument.Path.Apply(path => $"{path}/subsubdocs"),
        DocumentId = "asecret",
        Fields = "{\"something\":{\"mapValue\":{\"fields\":{\"secret\":{\"stringValue\":\"hithere\"}}}}}",
    });

});
package main

import (
	"fmt"

	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/firestore"
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/organizations"
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/projects"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
	"github.com/pulumiverse/pulumi-time/sdk/go/time"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		project, err := organizations.NewProject(ctx, "project", &organizations.ProjectArgs{
			ProjectId:      pulumi.String("project-id"),
			Name:           pulumi.String("project-id"),
			OrgId:          pulumi.String("123456789"),
			DeletionPolicy: pulumi.String("DELETE"),
		})
		if err != nil {
			return err
		}
		wait60Seconds, err := time.NewSleep(ctx, "wait_60_seconds", &time.SleepArgs{
			CreateDuration: pulumi.String("60s"),
		}, pulumi.DependsOn([]pulumi.Resource{
			project,
		}))
		if err != nil {
			return err
		}
		firestore2, err := projects.NewService(ctx, "firestore", &projects.ServiceArgs{
			Project: project.ProjectId,
			Service: pulumi.String("firestore.googleapis.com"),
		}, pulumi.DependsOn([]pulumi.Resource{
			wait60Seconds,
		}))
		if err != nil {
			return err
		}
		database, err := firestore.NewDatabase(ctx, "database", &firestore.DatabaseArgs{
			Project:    project.ProjectId,
			Name:       pulumi.String("(default)"),
			LocationId: pulumi.String("nam5"),
			Type:       pulumi.String("FIRESTORE_NATIVE"),
		}, pulumi.DependsOn([]pulumi.Resource{
			firestore2,
		}))
		if err != nil {
			return err
		}
		mydoc, err := firestore.NewDocument(ctx, "mydoc", &firestore.DocumentArgs{
			Project:    project.ProjectId,
			Database:   database.Name,
			Collection: pulumi.String("somenewcollection"),
			DocumentId: pulumi.String("my-doc-id"),
			Fields:     pulumi.String("{\"something\":{\"mapValue\":{\"fields\":{\"akey\":{\"stringValue\":\"avalue\"}}}}}"),
		})
		if err != nil {
			return err
		}
		subDocument, err := firestore.NewDocument(ctx, "sub_document", &firestore.DocumentArgs{
			Project:  project.ProjectId,
			Database: database.Name,
			Collection: mydoc.Path.ApplyT(func(path string) (string, error) {
				return fmt.Sprintf("%v/subdocs", path), nil
			}).(pulumi.StringOutput),
			DocumentId: pulumi.String("bitcoinkey"),
			Fields:     pulumi.String("{\"something\":{\"mapValue\":{\"fields\":{\"ayo\":{\"stringValue\":\"val2\"}}}}}"),
		})
		if err != nil {
			return err
		}
		_, err = firestore.NewDocument(ctx, "sub_sub_document", &firestore.DocumentArgs{
			Project:  project.ProjectId,
			Database: database.Name,
			Collection: subDocument.Path.ApplyT(func(path string) (string, error) {
				return fmt.Sprintf("%v/subsubdocs", path), nil
			}).(pulumi.StringOutput),
			DocumentId: pulumi.String("asecret"),
			Fields:     pulumi.String("{\"something\":{\"mapValue\":{\"fields\":{\"secret\":{\"stringValue\":\"hithere\"}}}}}"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    gcp = {
      source = "pulumi/gcp"
    }
    time = {
      source = "pulumi/time"
    }
  }
}

resource "gcp_organizations_project" "project" {
  project_id      = "project-id"
  name            = "project-id"
  org_id          = "123456789"
  deletion_policy = "DELETE"
}
resource "time_sleep" "wait_60_seconds" {
  depends_on      = [gcp_organizations_project.project]
  create_duration = "60s"
}
resource "gcp_projects_service" "firestore" {
  depends_on = [time_sleep.wait_60_seconds]
  project    = gcp_organizations_project.project.project_id
  service    = "firestore.googleapis.com"
}
resource "gcp_firestore_database" "database" {
  depends_on  = [gcp_projects_service.firestore]
  project     = gcp_organizations_project.project.project_id
  name        = "(default)"
  location_id = "nam5"
  type        = "FIRESTORE_NATIVE"
}
resource "gcp_firestore_document" "mydoc" {
  project     = gcp_organizations_project.project.project_id
  database    = gcp_firestore_database.database.name
  collection  = "somenewcollection"
  document_id = "my-doc-id"
  fields      = "{\"something\":{\"mapValue\":{\"fields\":{\"akey\":{\"stringValue\":\"avalue\"}}}}}"
}
resource "gcp_firestore_document" "sub_document" {
  project     = gcp_organizations_project.project.project_id
  database    = gcp_firestore_database.database.name
  collection  ="${gcp_firestore_document.mydoc.path}/subdocs"
  document_id = "bitcoinkey"
  fields      = "{\"something\":{\"mapValue\":{\"fields\":{\"ayo\":{\"stringValue\":\"val2\"}}}}}"
}
resource "gcp_firestore_document" "sub_sub_document" {
  project     = gcp_organizations_project.project.project_id
  database    = gcp_firestore_database.database.name
  collection  ="${gcp_firestore_document.sub_document.path}/subsubdocs"
  document_id = "asecret"
  fields      = "{\"something\":{\"mapValue\":{\"fields\":{\"secret\":{\"stringValue\":\"hithere\"}}}}}"
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.organizations.Project;
import com.pulumi.gcp.organizations.ProjectArgs;
import com.pulumiverse.time.Sleep;
import com.pulumiverse.time.SleepArgs;
import com.pulumi.gcp.projects.Service;
import com.pulumi.gcp.projects.ServiceArgs;
import com.pulumi.gcp.firestore.Database;
import com.pulumi.gcp.firestore.DatabaseArgs;
import com.pulumi.gcp.firestore.Document;
import com.pulumi.gcp.firestore.DocumentArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var project = new Project("project", ProjectArgs.builder()
            .projectId("project-id")
            .name("project-id")
            .orgId("123456789")
            .deletionPolicy("DELETE")
            .build());

        var wait60Seconds = new Sleep("wait60Seconds", SleepArgs.builder()
            .createDuration("60s")
            .build(), CustomResourceOptions.builder()
                .dependsOn(project)
                .build());

        var firestore = new Service("firestore", ServiceArgs.builder()
            .project(project.projectId())
            .service("firestore.googleapis.com")
            .build(), CustomResourceOptions.builder()
                .dependsOn(wait60Seconds)
                .build());

        var database = new Database("database", DatabaseArgs.builder()
            .project(project.projectId())
            .name("(default)")
            .locationId("nam5")
            .type("FIRESTORE_NATIVE")
            .build(), CustomResourceOptions.builder()
                .dependsOn(firestore)
                .build());

        var mydoc = new Document("mydoc", DocumentArgs.builder()
            .project(project.projectId())
            .database(database.name())
            .collection("somenewcollection")
            .documentId("my-doc-id")
            .fields("{\"something\":{\"mapValue\":{\"fields\":{\"akey\":{\"stringValue\":\"avalue\"}}}}}")
            .build());

        var subDocument = new Document("subDocument", DocumentArgs.builder()
            .project(project.projectId())
            .database(database.name())
            .collection(mydoc.path().applyValue(_path -> String.format("%s/subdocs", _path)))
            .documentId("bitcoinkey")
            .fields("{\"something\":{\"mapValue\":{\"fields\":{\"ayo\":{\"stringValue\":\"val2\"}}}}}")
            .build());

        var subSubDocument = new Document("subSubDocument", DocumentArgs.builder()
            .project(project.projectId())
            .database(database.name())
            .collection(subDocument.path().applyValue(_path -> String.format("%s/subsubdocs", _path)))
            .documentId("asecret")
            .fields("{\"something\":{\"mapValue\":{\"fields\":{\"secret\":{\"stringValue\":\"hithere\"}}}}}")
            .build());

    }
}
resources:
  project:
    type: gcp:organizations:Project
    properties:
      projectId: project-id
      name: project-id
      orgId: '123456789'
      deletionPolicy: DELETE
  wait60Seconds:
    type: time:Sleep
    name: wait_60_seconds
    properties:
      createDuration: 60s
    options:
      dependsOn:
        - ${project}
  firestore:
    type: gcp:projects:Service
    properties:
      project: ${project.projectId}
      service: firestore.googleapis.com
    options:
      dependsOn:
        - ${wait60Seconds}
  database:
    type: gcp:firestore:Database
    properties:
      project: ${project.projectId}
      name: (default)
      locationId: nam5
      type: FIRESTORE_NATIVE
    options:
      dependsOn:
        - ${firestore}
  mydoc:
    type: gcp:firestore:Document
    properties:
      project: ${project.projectId}
      database: ${database.name}
      collection: somenewcollection
      documentId: my-doc-id
      fields: '{"something":{"mapValue":{"fields":{"akey":{"stringValue":"avalue"}}}}}'
  subDocument:
    type: gcp:firestore:Document
    name: sub_document
    properties:
      project: ${project.projectId}
      database: ${database.name}
      collection: ${mydoc.path}/subdocs
      documentId: bitcoinkey
      fields: '{"something":{"mapValue":{"fields":{"ayo":{"stringValue":"val2"}}}}}'
  subSubDocument:
    type: gcp:firestore:Document
    name: sub_sub_document
    properties:
      project: ${project.projectId}
      database: ${database.name}
      collection: ${subDocument.path}/subsubdocs
      documentId: asecret
      fields: '{"something":{"mapValue":{"fields":{"secret":{"stringValue":"hithere"}}}}}'

Import

Document can be imported using any of these accepted formats:

  • {{name}}

When using the pulumi import command, Document can be imported using one of the formats above. For example:

$ pulumi import gcp:firestore/document:Document default {{name}}

Constructors

Document(String name, {DocumentArgs? args, CustomResourceOptions? options})
Creates a new Document. name The Pulumi resource name. args Arguments used to configure this Document. The set of arguments for Document. options Resource options controlling this resource's behavior.
Document.reference(String urn)
Creates a typed reference to an existing Document resource.

Properties

childResources → Set<Resource>
finalinherited
collection ↔ Output<String>
The collection ID, relative to database. For example: chatrooms or chatrooms/my-document/private-messages.
latefinal
completionSources ↔ Map<String, IOutputCompletionSource>
latefinalinherited
createTime ↔ Output<String>
Creation timestamp in RFC3339 format.
latefinal
database ↔ Output<String?>
The Firestore database id. Defaults to "(default)".
latefinal
deletionPolicy ↔ Output<String>
Whether Terraform will be prevented from destroying the resource. Defaults to DELETE. When a 'terraform destroy' or 'pulumi up' would delete the resource, the command will fail if this field is set to "PREVENT" in Terraform state. When set to "ABANDON", the command will remove the resource from Terraform management without updating or deleting the resource in the API. When set to "DELETE", deleting the resource is allowed.
latefinal
documentId ↔ Output<String>
The client-assigned document ID to use for this document during creation.
latefinal
fields ↔ Output<String>
The document's fields formated as a json string.
latefinal
hashCode → int
The hash code for this object.
no setterinherited
id ↔ Output<String>
getter/setter pairinherited
isCustom → bool
Returns whether this resource is provider-managed.
no setterinherited
isProtected → bool
Returns whether this resource is protected from deletion.
no setterinherited
isRemote → bool
Whether this resource is registered as remote.
no setterinherited
isResourceReference → bool
Whether this instance represents a resource value returned over RPC.
finalinherited
name ↔ Output<String>
A server defined name for this document. Format: projects/{{project_id}}/databases/{{database_id}}/documents/{{path}}/{{document_id}}
latefinal
path ↔ Output<String>
A relative path to the collection this document exists within
latefinal
project ↔ Output<String>
The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
latefinal
resourceTransforms → List<ResourceTransform>
Inherited/explicit async transforms.
no setterinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
transformations → List<ResourceTransformation>
Inherited/explicit legacy transformations.
no setterinherited
updateTime ↔ Output<String>
Last update timestamp in RFC3339 format.
latefinal
urn ↔ Output<String>
latefinalinherited

Methods

failId(Object error) → void
Completes this resource ID with an error when registration fails.
inherited
failOutputs(Object error) → void
Completes all output properties with error.
inherited
failUrn(Object error) → void
Completes this resource URN with an error when registration fails.
inherited
getProvider(String moduleMember) → ProviderResource?
Returns provider for moduleMember's package, if configured.
inherited
getResourceName() → String
Returns this resource's logical name.
inherited
getResourceType() → String
Returns this resource's Pulumi type token.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
registerOutput<T>(String propertyName, {Object? decoder(Object?)?, bool isSecret = false}) → Output<T>
Registers a dynamic output property for this resource.
inherited
resolveId(String? value, {required bool isKnown}) → void
Resolves the provider-assigned ID for this resource.
inherited
resolveOutputs(Struct outputs) → void
Resolves all output properties from a monitor response payload.
inherited
resolveUrn(String value) → void
Resolves this resource's URN once assigned by the engine.
inherited
serializeProperties(Map<String, dynamic> properties) → Future<Struct>
Serializes resource properties for RPC transmission.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Static Methods

get(String name, Input<String> id, {DocumentState? state, CustomResourceOptions? options}) → Document
Gets an existing Document resource's state with the given name and id.