  def GetOrgPolicy(self, resource: str, constraint: str) -> Dict[str, Any]:
    """Gets a particular Org Policy on a resource.

    Args:
      resource (str): a resource identifier in the format
        resource_type/resource_number e.g. projects/123456789012 where
        project_type is one of projects, folders or organizations.
      constraint (str): the name of the constraint to get.

    Returns:
      Dict[str, Any]: The Org Policy details.
        See https://cloud.google.com/resource-manager/reference/rest/v1/Policy

    Raises:
      TypeError: if an invalid resource type is provided.
    """
    resource_type = resource.split('/')[0]
    if resource_type not in self.RESOURCE_TYPES:
      raise TypeError('Invalid resource type "{0:s}", resource must be one of '
          '"projects", "folders" or "organizations" provided in the format '
          '"resource_type/resource_number".'.format(resource))

    if not constraint.startswith('constraints/'):
      constraint = 'constraints/' + constraint

    # Override API version, since this doesn't exist in v2 or v3
    self.RESOURCE_MANAGER_API_VERSION = 'v1'  # pylint: disable=invalid-name
    service = self.GrmApi()
    resource_client = getattr(service, resource_type)()
    response: Dict[str, Any] = resource_client.getOrgPolicy(
        resource=resource, body={'constraint': constraint}
    ).execute()
    return response
Gets a particular Org Policy on a resource.

Args:
resource (str): a resource identifier in the format
resource_type/resource_number e.g. projects/123456789012 where
project_type is one of projects, folders or organizations.
constraint (str): the name of the constraint to get.

Returns:
Dict[str, Any]: The Org Policy details.
See https://cloud.google.com/resource-manager/reference/rest/v1/Policy

Raises:
TypeError: if an invalid resource type is provided.
libcloudforensics/providers/gcp/internal/cloudresourcemanager.py