text: # coding=utf-8
  # *** WARNING: this file was generated by the Pulumi SDK Generator. ***
  # *** Do not edit by hand unless you're certain you know what you are doing! ***
  
  import warnings
  import pulumi
  import pulumi.runtime
  from typing import Any, Mapping, Optional, Sequence, Union, overload
  from ... import _utilities
  
  __all__ = [
      'GetSnapshotResult',
      'AwaitableGetSnapshotResult',
      'get_snapshot',
      'get_snapshot_output',
  ]
  
  @pulumi.output_type
  class GetSnapshotResult:
      def __init__(__self__, create_time=None, description=None, filesystem_used_bytes=None, labels=None, name=None, state=None):
          if create_time and not isinstance(create_time, str):
              raise TypeError("Expected argument 'create_time' to be a str")
          pulumi.set(__self__, "create_time", create_time)
          if description and not isinstance(description, str):
              raise TypeError("Expected argument 'description' to be a str")
          pulumi.set(__self__, "description", description)
          if filesystem_used_bytes and not isinstance(filesystem_used_bytes, str):
              raise TypeError("Expected argument 'filesystem_used_bytes' to be a str")
          pulumi.set(__self__, "filesystem_used_bytes", filesystem_used_bytes)
          if labels and not isinstance(labels, dict):
              raise TypeError("Expected argument 'labels' to be a dict")
          pulumi.set(__self__, "labels", labels)
          if name and not isinstance(name, str):
              raise TypeError("Expected argument 'name' to be a str")
          pulumi.set(__self__, "name", name)
          if state and not isinstance(state, str):
              raise TypeError("Expected argument 'state' to be a str")
          pulumi.set(__self__, "state", state)
  
      @property
      @pulumi.getter(name="createTime")
      def create_time(self) -> str:
          """
          The time when the snapshot was created.
          """
          return pulumi.get(self, "create_time")
  
      @property
      @pulumi.getter
      def description(self) -> str:
          """
          A description of the snapshot with 2048 characters or less. Requests with longer descriptions will be rejected.
          """
          return pulumi.get(self, "description")
  
      @property
      @pulumi.getter(name="filesystemUsedBytes")
      def filesystem_used_bytes(self) -> str:
          """
          The amount of bytes needed to allocate a full copy of the snapshot content
          """
          return pulumi.get(self, "filesystem_used_bytes")
  
      @property
      @pulumi.getter
      def labels(self) -> Mapping[str, str]:
          """
          Resource labels to represent user provided metadata.
          """
          return pulumi.get(self, "labels")
  
      @property
      @pulumi.getter
      def name(self) -> str:
          """
          The resource name of the snapshot, in the format `projects/{project_id}/locations/{location_id}/instances/{instance_id}/snapshots/{snapshot_id}`.
          """
          return pulumi.get(self, "name")
  
      @property
      @pulumi.getter
      def state(self) -> str:
          """
          The snapshot state.
          """
          return pulumi.get(self, "state")
  
  
  class AwaitableGetSnapshotResult(GetSnapshotResult):
      # pylint: disable=using-constant-test
      def __await__(self):
          if False:
              yield self
          return GetSnapshotResult(
              create_time=self.create_time,
              description=self.description,
              filesystem_used_bytes=self.filesystem_used_bytes,
              labels=self.labels,
              name=self.name,
              state=self.state)
  
  
  def get_snapshot(instance_id: Optional[str] = None,
                   location: Optional[str] = None,
                   project: Optional[str] = None,
                   snapshot_id: Optional[str] = None,
                   opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetSnapshotResult:
      """
      Gets the details of a specific snapshot.
      """
      __args__ = dict()
      __args__['instanceId'] = instance_id
      __args__['location'] = location
      __args__['project'] = project
      __args__['snapshotId'] = snapshot_id
      if opts is None:
          opts = pulumi.InvokeOptions()
      if opts.version is None:
          opts.version = _utilities.get_version()
      __ret__ = pulumi.runtime.invoke('google-native:file/v1beta1:getSnapshot', __args__, opts=opts, typ=GetSnapshotResult).value
  
      return AwaitableGetSnapshotResult(
          create_time=__ret__.create_time,
          description=__ret__.description,
          filesystem_used_bytes=__ret__.filesystem_used_bytes,
          labels=__ret__.labels,
          name=__ret__.name,
          state=__ret__.state)
  
  
  @_utilities.lift_output_func(get_snapshot)
  def get_snapshot_output(instance_id: Optional[pulumi.Input[str]] = None,
                          location: Optional[pulumi.Input[str]] = None,
                          project: Optional[pulumi.Input[Optional[str]]] = None,
                          snapshot_id: Optional[pulumi.Input[str]] = None,
                          opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSnapshotResult]:
      """
      Gets the details of a specific snapshot.
      """
      ...
  